Skip to main content

File Blocking Profile Configuration Object

Manages file blocking profiles for controlling file transfers in Palo Alto Networks Strata Cloud Manager.

Class Overview

The FileBlockingProfile class inherits from BaseObject and provides CRUD operations for file blocking profiles that define policies for controlling file transfers based on application, direction, and file type.

Methods

MethodDescriptionParametersReturn Type
create()Creates a new profiledata: Dict[str, Any]FileBlockingProfileResponseModel
get()Retrieves a profile by IDobject_id: strFileBlockingProfileResponseModel
update()Updates an existing profileprofile: FileBlockingProfileUpdateModelFileBlockingProfileResponseModel
delete()Deletes a profileobject_id: strNone
list()Lists profiles with filteringfolder: str, **filtersList[FileBlockingProfileResponseModel]
fetch()Gets profile by name/containername: str, folder: strFileBlockingProfileResponseModel

Model Attributes

AttributeTypeRequiredDefaultDescription
namestrYesNoneProfile name
idUUIDYes*NoneUnique identifier (*response/update only)
descriptionstrNoNoneProfile description
rulesList[FileBlockingRule]NoNoneList of file blocking rules
folderstrNo**NoneFolder location. Max 64 chars
snippetstrNo**NoneSnippet location. Max 64 chars
devicestrNo**NoneDevice location. Max 64 chars

* Only required for update and response models ** Exactly one container (folder, snippet, or device) must be provided for create operations

Exceptions

ExceptionHTTP CodeDescription
InvalidObjectError400Invalid profile data or format
MissingQueryParameterError400Missing required parameters
NameNotUniqueError409Profile name already exists
ObjectNotPresentError404Profile not found
ReferenceNotZeroError409Profile still referenced
AuthenticationError401Authentication failed
ServerError500Internal server error

Basic Configuration

from scm.client import Scm

client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id"
)

profiles = client.file_blocking_profile

Methods

List File Blocking Profiles

filtered_profiles = client.file_blocking_profile.list(
folder='Texas',
rules=['block-dangerous']
)

for profile in filtered_profiles:
print(f"Name: {profile.name}")
if profile.rules:
for rule in profile.rules:
print(f" - {rule.name}: {rule.action} ({rule.direction})")

Filtering responses:

exact_profiles = client.file_blocking_profile.list(
folder='Texas',
exact_match=True
)

combined_filters = client.file_blocking_profile.list(
folder='Texas',
exact_match=True,
exclude_folders=['All'],
exclude_snippets=['default'],
exclude_devices=['DeviceA']
)

Controlling pagination with max_limit:

client.file_blocking_profile.max_limit = 4000

all_profiles = client.file_blocking_profile.list(folder='Texas')

Fetch a File Blocking Profile

profile = client.file_blocking_profile.fetch(name="basic-file-blocking", folder="Texas")
print(f"Found profile: {profile.name}")

Create a File Blocking Profile

# Basic profile with an alert rule
basic_profile = {
"name": "basic-file-blocking",
"description": "Basic file blocking profile",
"folder": "Texas",
"rules": [
{
"name": "alert-executables",
"action": "alert",
"application": ["any"],
"direction": "both",
"file_type": ["exe", "dll"]
}
]
}
basic_profile_obj = client.file_blocking_profile.create(basic_profile)

# Profile with blocking rule
block_profile = {
"name": "strict-file-blocking",
"description": "Strict file blocking profile",
"folder": "Texas",
"rules": [
{
"name": "block-dangerous",
"action": "block",
"application": ["web-browsing", "ftp"],
"direction": "download",
"file_type": ["exe", "bat", "cmd", "msi"]
},
{
"name": "alert-documents",
"action": "alert",
"application": ["any"],
"direction": "upload",
"file_type": ["doc", "pdf", "xls"]
}
]
}
strict_profile_obj = client.file_blocking_profile.create(block_profile)

Update a File Blocking Profile

existing_profile = client.file_blocking_profile.fetch(name="basic-file-blocking", folder="Texas")

existing_profile.description = "Updated file blocking profile"
existing_profile.rules.append({
"name": "block-scripts",
"action": "block",
"application": ["any"],
"direction": "both",
"file_type": ["js", "vbs", "ps1"]
})

updated_profile = client.file_blocking_profile.update(existing_profile)

Delete a File Blocking Profile

client.file_blocking_profile.delete("123e4567-e89b-12d3-a456-426655440000")

Get a File Blocking Profile by ID

profile_by_id = client.file_blocking_profile.get(profile.id)
print(f"Retrieved profile: {profile_by_id.name}")
print(f"Number of rules: {len(profile_by_id.rules)}")

Use Cases

Committing Changes

result = client.commit(
folders=["Texas"],
description="Updated file blocking profiles",
sync=True,
timeout=300
)
print(f"Commit job ID: {result.job_id}")

Monitoring Jobs

job_status = client.get_job_status(result.job_id)
print(f"Job status: {job_status.data[0].status_str}")

recent_jobs = client.list_jobs(limit=10)
for job in recent_jobs.data:
print(f"Job {job.id}: {job.type_str} - {job.status_str}")

Error Handling

from scm.exceptions import (
InvalidObjectError,
MissingQueryParameterError,
NameNotUniqueError,
ObjectNotPresentError,
ReferenceNotZeroError
)

try:
profile_config = {
"name": "test-file-blocking",
"description": "Test file blocking profile",
"folder": "Texas",
"rules": [
{
"name": "block-exe",
"action": "block",
"application": ["any"],
"direction": "both",
"file_type": ["exe"]
}
]
}
new_profile = client.file_blocking_profile.create(profile_config)
result = client.commit(
folders=["Texas"],
description="Added file blocking profile",
sync=True
)
status = client.get_job_status(result.job_id)

except InvalidObjectError as e:
print(f"Invalid profile data: {e.message}")
except NameNotUniqueError as e:
print(f"Profile name already exists: {e.message}")
except ObjectNotPresentError as e:
print(f"Profile not found: {e.message}")
except ReferenceNotZeroError as e:
print(f"Profile still in use: {e.message}")
except MissingQueryParameterError as e:
print(f"Missing parameter: {e.message}")