Palo Alto Networks Sites API
Onboarding Sites information
Onboarding Sites information
openapi: 3.2.0
info:
title: Palo Alto Networks Sites API
version: 2.0.0
contact:
email: support@paloaltonetworks.com
name: Palo Alto Networks Technical Support
url: https://support.paloaltonetworks.com
license:
name: MIT
url: https://opensource.org/license/mit
termsOfService: https://www.paloaltonetworks.com/content/dam/pan/en_US/assets/pdf/legal/palo-alto-networks-end-user-license-agreement-eula.pdf
description: 'Operations tagged Sites across 2 of this provider''s published API definitions: palo-alto-scm-config-cloudngfw-setup-device-onboarding-device-onboarding-updated-openapi.yaml, palo-alto-scm-config-sase-deployment-deployment-services-june-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.strata.paloaltonetworks.com/config/setup/device-onboarding/v1
description: Current
- url: https://api.strata.paloaltonetworks.com/config/deployment/v1
description: Current
- url: https://api.sase.paloaltonetworks.com/sse/config/v1
description: Legacy
security:
- scmToken: []
tags:
- name: Sites
description: Onboarding Sites information
paths:
/sites:
post:
tags:
- Sites
summary: Create sites
description: 'Creates one or more sites with All-or-Nothing semantics. All sites must pass validation,
or none will be created. Validates uniqueness, required fields, and property constraints.
'
operationId: createSites
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/create_sites_request'
responses:
'201':
description: Sites created successfully
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
enum:
- success
description: Response status indicator
data:
type: array
items:
type: object
properties:
id:
type: string
description: Site ID
name:
type: string
description: Site name
message:
type: string
description: Human-readable message
request_id:
type: string
format: uuid
description: Unique request identifier for troubleshooting
'400':
$ref: '#/components/responses/BadRequest'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalServerError'
get:
tags:
- Sites
summary: List sites
description: 'Retrieves all sites for the tenant with optional filtering by status, site group, and site names.
Includes claims and resolution history for each site.
**Filter Priority**: If multiple filters are provided, the priority is:
1. `name` - Filter by specific site names (highest priority)
2. `site-group` - Filter by site group name
3. `status` - Filter by claim status (applied after other filters)
'
operationId: listSites
parameters:
- name: name
in: query
description: 'Filter sites by name. Multiple values supported (e.g., `?name=A&name=B`).
Returns only sites matching the specified names.
'
schema:
type: array
items:
type: string
style: form
explode: true
- name: status
in: query
description: Filter sites by claim status
schema:
type: string
enum:
- all
- claimed
- unclaimed
default: all
- name: site-group
in: query
description: Filter sites by site group name
schema:
type: string
responses:
'200':
description: Sites retrieved successfully
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
enum:
- success
description: Response status indicator
data:
type: array
items:
$ref: '#/components/schemas/site_with_claims'
description: Array of sites with their claims and resolution history
message:
type: string
description: Human-readable message
request_id:
type: string
format: uuid
description: Unique request identifier for troubleshooting
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://api.strata.paloaltonetworks.com/config/setup/device-onboarding/v1
description: Current
/sites/{id}:
get:
tags:
- Sites
summary: Get a site
description: Retrieves a single site by UUID with its claims and resolution history
operationId: getSiteByID
parameters:
- $ref: '#/components/parameters/site_id'
responses:
'200':
description: Site retrieved successfully
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
enum:
- success
description: Response status indicator
data:
$ref: '#/components/schemas/site_with_claims'
description: Site with claims and resolution history
message:
type: string
description: Human-readable message
request_id:
type: string
format: uuid
description: Unique request identifier for troubleshooting
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
put:
tags:
- Sites
summary: Update a site
description: 'Updates a site''s name, site group, or property values. Site must be unclaimed
to be updated.
'
operationId: updateSiteByID
parameters:
- $ref: '#/components/parameters/site_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/update_site_request'
responses:
'200':
description: Site updated successfully
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
enum:
- success
description: Response status indicator
data:
$ref: '#/components/schemas/site'
description: Updated site
message:
type: string
description: Human-readable message
request_id:
type: string
format: uuid
description: Unique request identifier for troubleshooting
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Sites
summary: Delete a site
description: 'Deletes a site by ID. Site must be unclaimed unless force=true is specified.
'
operationId: deleteSiteByID
parameters:
- $ref: '#/components/parameters/site_id'
- name: force
in: query
description: Force delete even if site is claimed
schema:
type: boolean
default: false
responses:
'200':
description: Site deleted successfully - returns deleted resource
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
enum:
- success
description: Response status indicator
data:
$ref: '#/components/schemas/site'
description: Deleted site
message:
type: string
description: Human-readable message
request_id:
type: string
format: uuid
description: Unique request identifier for troubleshooting
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://api.strata.paloaltonetworks.com/config/setup/device-onboarding/v1
description: Current
components:
schemas:
resolved_variable:
type: object
required:
- name
- type
- value
properties:
name:
type: string
description: Variable name
type:
type: string
description: Variable type
value:
description: Resolved value (type varies)
resource_validation_error:
type: object
required:
- type
- resource_id
- resource_name
- message
properties:
type:
type: string
enum:
- site
- rule
- name_conflict
description: Type of validation error
resource_id:
type: string
description: ID of the affected resource
resource_name:
type: string
description: Name of the affected resource
message:
type: string
description: Detailed error message
resource_validation_result:
type: object
properties:
id:
type: string
format: uuid
description: Resource UUID
name:
type: string
description: Resource name
validation_errors:
type: array
items:
$ref: '#/components/schemas/resource_validation_error'
site_with_claims:
type: object
properties:
site:
$ref: '#/components/schemas/site'
claims:
type: array
items:
$ref: '#/components/schemas/claim_with_resolved_history'
site:
type: object
required:
- id
- tenant_id
- name
- site_group
properties:
id:
type: string
format: uuid
description: Site UUID
tenant_id:
type: string
description: Tenant identifier
name:
type: string
description: Site name (unique within tenant)
maxLength: 255
site_group:
type: string
description: Site group name
address:
type: string
description: 'Physical address of the site. When a site is created with an address,
the system automatically fetches latitude/longitude coordinates in the
background using Google Maps Geocoding API.
'
example: 123 Market St, San Francisco, CA 94103
latitude:
type:
- number
- 'null'
format: double
description: 'Latitude coordinate. Automatically populated when site has an address.
Used for proximity filtering and distance calculations.
'
minimum: -90
maximum: 90
example: 37.7749
longitude:
type:
- number
- 'null'
format: double
description: 'Longitude coordinate. Automatically populated when site has an address.
Used for proximity filtering and distance calculations.
'
minimum: -180
maximum: 180
example: -122.4194
property_values:
type: object
additionalProperties: true
description: Key-value pairs of property names to values
created_at:
type: string
format: date-time
last_updated:
type: string
format: date-time
resolution_rule:
type: object
required:
- expression
properties:
expression:
type: string
description: Expression to resolve the variable (can reference properties with ${property_name})
update_site_request:
type: object
properties:
name:
type: string
maxLength: 255
site_group:
type: string
property_values:
type: object
additionalProperties: true
resolved_onboarding_rule:
type: object
properties:
id:
type: string
format: uuid
tenant_id:
type: string
name:
type: string
description:
type: string
enabled:
type: boolean
rule_type:
type: string
site_group:
type: string
match_criteria:
type: object
additionalProperties: true
actions:
type: object
additionalProperties: true
variables:
type: array
items:
$ref: '#/components/schemas/variable'
description: Original variables with resolution expression
resolved_variables:
type: array
items:
$ref: '#/components/schemas/resolved_variable'
description: Variables resolved to their actual values
resolution_errors:
type: array
items:
type: string
description: Errors encountered during variable resolution
generated_at:
type: string
claim:
type: object
required:
- id
- tenant_id
- site_id
- serial_number
- device_role
properties:
id:
type: string
format: uuid
tenant_id:
type: string
site_id:
type: string
format: uuid
serial_number:
type: string
description: Device serial number
device_role:
type: string
enum:
- standalone
- primary
- secondary
description: Device role in HA configuration
onboarding_rule_id:
type: string
format: uuid
claimed_by:
type: string
description: User or service that claimed the device
claimed_at:
type: string
format: date-time
create_sites_request:
type: object
required:
- sites
properties:
sites:
type: array
minItems: 1
items:
type: object
required:
- name
- site_group
properties:
name:
type: string
maxLength: 255
site_group:
type: string
address:
type: string
description: Physical address of the site
property_values:
type: object
additionalProperties: true
claim_with_resolved_history:
type: object
properties:
claim:
$ref: '#/components/schemas/claim'
resolution_rule:
$ref: '#/components/schemas/resolved_onboarding_rule'
variable:
type: object
required:
- name
- resolution_rule
properties:
name:
type: string
description: Variable name
resolution_rule:
$ref: '#/components/schemas/resolution_rule'
sites:
type: object
required:
- name
properties:
id:
type: string
description: The UUID of the site
readOnly: true
example: 123e4567-e89b-12d3-a456-426655440000
name:
type: string
description: The name of the site
maxLength: 63
example: Bengaluru
type:
type: string
description: The site type
enum:
- prisma-sdwan
- third-party-branch
- third-party-discovered
members:
type: array
items:
type: object
required:
- name
- mode
properties:
name:
type: string
description: The member name
example: Connection A
remote_network:
type: string
description: The remote network name
example: Connection A
mode:
type: string
description: The mode of the remote network
enum:
- active
- backup
id:
type: string
readOnly: true
description: UUID of the remote network
example: e51fa715-3da5-4f98-bb78-eb56757e7719
country:
type: string
example: India
description: The country in which the site exists
city:
type: string
example: Bengaluru
description: The city in which the site exists
state:
type: string
example: Karnataka
description: The state in which the site exists
address_line_1:
type: string
description: The address in which the site exists
example: 2nd Floor, Quay Building, Bagmane Tech Park
address_line_2:
type: string
description: The address in which the site exists (continued)
example: C V Raman Nagar
latitude:
type: string
example: '12.978150'
description: The latitude coordinate for the site
longitude:
type: string
example: '77.665340'
description: The longitude coordinate for the site
zip_code:
type: string
example: '560093'
description: The postal code in which the site exists
qos:
type: object
properties:
profile:
type: string
description: The name of the site QoS profile
example: VoIP
cir:
type: number
example: 10
description: The CIR in Mbps. This is distributed equally for all tunnels in the site.
backup_cir:
type: number
example: 10
description: The backup CIR in Mbps. This is distributed equally for all tunnels in the site.
license_type:
type: string
description: The license type of the site
maxLength: 63
enum:
- FWAAS-SITE-25Mbps
- FWAAS-SITE-50Mbps
- FWAAS-SITE-250Mbps
- FWAAS-SITE-1000Mbps
- FWAAS-SITE-2500Mbps
generic_error:
type: object
properties:
_errors:
$ref: '#/components/schemas/error_detail_cause_infos'
_request_id:
type: string
x-examples: {}
error_detail_cause_info:
type: object
title: Cause Info
properties:
code:
type: string
message:
type: string
details:
oneOf:
- type: string
- type: object
help:
type: string
error_detail_cause_infos:
type: array
items:
$ref: '#/components/schemas/error_detail_cause_info'
x-examples: {}
responses:
NotFound:
description: Not Found
content:
application/json:
schema:
type: object
required:
- status
- error
properties:
status:
type: string
enum:
- error
error:
type: string
description: Error message
InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
type: object
required:
- status
- error
properties:
status:
type: string
enum:
- error
error:
type: string
description: Error message
BadRequest:
description: Bad Request
content:
application/json:
schema:
type: object
required:
- status
- error
properties:
status:
type: string
enum:
- error
data:
type: array
items:
$ref: '#/components/schemas/resource_validation_result'
error:
type: string
description: Error message
Conflict:
description: Conflict
content:
application/json:
schema:
type: object
required:
- status
- error
properties:
status:
type: string
enum:
- error
data:
type: array
items:
$ref: '#/components/schemas/resource_validation_result'
error:
type: string
description: Error message
http_ok:
description: OK
not_found:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
object_not_present:
$ref: '#/components/examples/json_404_panui_mgmt_object_not_present'
default_errors:
description: General Errors
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
version_not_supported:
$ref: '#/components/examples/json_501_panui_restapi_version_not_supported'
method_not_allowed:
$ref: '#/components/examples/json_501_panui_restapi_method_not_supported'
action_not_supported:
$ref: '#/components/examples/json_405_panui_restapi_action_not_supported'
bad_xpath:
$ref: '#/components/examples/json_400_panui_mgmt_bad_xpath'
invalid_command:
$ref: '#/components/examples/json_400_panui_mgmt_invalid_command'
malformed_command:
$ref: '#/components/examples/json_400_panui_mgmt_malformed_command'
session_timeout:
$ref: '#/components/examples/json_504_panui_mgmt_session_timeout'
bad_request_errors_basic_with_body:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
input_format_mismatch:
$ref: '#/components/examples/json_400_panui_restapi_input_format_mismatch'
output_format_mismatch:
$ref: '#/components/examples/json_400_panui_restapi_output_format_mismatch'
missing_query_parameter:
$ref: '#/components/examples/json_400_panui_restapi_missing_query_parameter'
invalid_query_parameter:
$ref: '#/components/examples/json_400_panui_restapi_invalid_query_parameter'
missing_body:
$ref: '#/components/examples/json_400_panui_restapi_missing_body'
invalid_object:
$ref: '#/components/examples/json_400_panui_mgmt_invalid_object'
bad_request_errors_basic:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
input_format_mismatch:
$ref: '#/components/examples/json_400_panui_restapi_input_format_mismatch'
output_format_mismatch:
$ref: '#/components/examples/json_400_panui_restapi_output_format_mismatch'
missing_query_parameter:
$ref: '#/components/examples/json_400_panui_restapi_missing_query_parameter'
invalid_query_parameter:
$ref: '#/components/examples/json_400_panui_restapi_invalid_query_parameter'
auth_errors:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
auth_not_authenticated:
$ref: '#/components/examples/json_401_panui_auth_not_authenticated'
invalid_credential:
$ref: '#/components/examples/json_401_panui_auth_invalid_credential'
key_too_long:
$ref: '#/components/examples/json_401_panui_auth_key_too_long'
key_expired:
$ref: '#/components/examples/json_401_panui_auth_key_expired'
need_password_change:
$ref: '#/components/examples/json_401_panui_auth_need_password_change'
conflict_errors:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
object_not_unique:
$ref: '#/components/examples/json_409_panui_mgmt_object_not_unique'
name_not_unique:
$ref: '#/components/examples/json_409_panui_mgmt_name_not_unique'
reference_not_zero:
$ref: '#/components/examples/json_409_panui_mgmt_reference_not_zero'
access_errors:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/generic_error'
examples:
auth_unauthorized:
$ref: '#/components/examples/json_403_panui_auth_unauthorized'
parameters:
site_id:
name: id
in: path
required: true
description: Site UUID
schema:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
uuid:
name: id
in: path
description: The UUID of the configuration resource
required: true
schema:
type: string
folder-remotenetworks:
name: folder
in: query
description: 'The folder in which the resource is defined
'
required: true
schema:
enum:
- Remote Networks
default: Remote Networks
name:
name: name
in: query
description: The name of the configuration resource
required: false
schema:
type: string
limit:
name: limit
in: query
description: The maximum number of results per page
required: false
schema:
type: integer
default: 200
offset:
name: offset
in: query
description: The offset into the list of results returned
required: false
schema:
type: integer
default: 0
examples:
json_401_panui_auth_key_expired:
summary: Key Expired
value:
_errors:
- code: E016
message: Key Expired
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_501_panui_restapi_method_not_supported:
summary: Method Not Supported
value:
_errors:
- code: E012
message: Method Not Supported
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_restapi_input_format_mismatch:
summary: Input Format Mismatch
value:
_errors:
- code: E003
message: 'Input Format Mismatch: input-format=json'
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_501_panui_restapi_version_not_supported:
summary: Version Not Supported
value:
_errors:
- code: E012
message: Version Not Supported
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_409_panui_mgmt_object_not_unique:
summary: Object Not Unique
value:
_errors:
- code: E016
message: Object Not Unique
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_409_panui_mgmt_name_not_unique:
summary: Name Not Unique
value:
_errors:
- code: E006
message: Name Not Unique
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_404_panui_mgmt_object_not_present:
summary: Object Not Present
value:
_errors:
- code: E005
message: Object Not Present
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_restapi_missing_body:
summary: Missing Body
value:
_errors:
- code: E003
message: Missing Body
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_409_panui_mgmt_reference_not_zero:
summary: Reference Not Zero
value:
_errors:
- code: E009
message: Reference Not Zero
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_mgmt_invalid_command:
summary: Invalid Command
value:
_errors:
- code: E003
message: Invalid Command
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_restapi_output_format_mismatch:
summary: Output Format Mismatch
value:
_errors:
- code: E003
message: 'Output Format Mismatch: output-format=json Accept=xml'
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_401_panui_auth_not_authenticated:
summary: Not Authenticated
value:
_errors:
- code: E016
message: Not Authenticated
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_401_panui_auth_invalid_credential:
summary: Invalid Credential
value:
_errors:
- code: E016
message: Invalid Credential
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_403_panui_auth_unauthorized:
summary: Unauthorized
value:
_errors:
- code: E007
message: Unauthorized
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_restapi_missing_query_parameter:
summary: Missing Query Parameter
value:
_errors:
- code: E003
message: 'Missing Query Parameter: name'
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_405_panui_restapi_action_not_supported:
summary: Action Not Supported
value:
_errors:
- code: E012
message: 'Action Not Supported: move'
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_400_panui_restapi_invalid_query_parameter:
summary: Invalid Query Parameter
value:
_errors:
- code: E003
message: 'Invalid Query Parameter: location=invalid'
details: {}
_request_id: 123e4567-e89b-12d3-a456-426655440000
json_401_panui_auth_key_too_long:
summary: Key Too Long
value:
_errors:
- code: E016
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/palo-alto-networks/refs/heads/main/openapi/palo-alto-networks-sites-api-openapi.yml