Pan Os Panorama Api
Pan Os Panorama Api
Pan Os Panorama Api
Guide
Version 9.1
docs.paloaltonetworks.com
Contact Information
Corporate Headquarters:
Palo Alto Networks
3000 Tannery Way
Santa Clara, CA 95054
www.paloaltonetworks.com/company/contact-support
Copyright
Palo Alto Networks, Inc.
www.paloaltonetworks.com
© 2019-2023 Palo Alto Networks, Inc. Palo Alto Networks is a registered trademark of Palo
Alto Networks. A list of our trademarks can be found at www.paloaltonetworks.com/company/
trademarks.html. All other marks mentioned herein may be trademarks of their respective companies.
Last Revised
January 23, 2023
PAN-OS® and Panorama™API Usage Guide Version 9.1 2 ©2024 Palo Alto Networks, Inc.
Table of Contents
About the PAN-OS API.................................................................................... 5
PAN-OS XML API Components...............................................................................................6
Structure of a PAN-OS XML API Request............................................................................ 7
API Authentication and Security.................................................................................. 7
XML and XPath.................................................................................................................8
XPath Node Selection..................................................................................................... 9
PAN-OS® and Panorama™API Usage Guide Version 9.1 3 ©2024 Palo Alto Networks, Inc.
Table of Contents
Clone Configuration...................................................................................................... 68
Move Configuration...................................................................................................... 69
Override Configuration................................................................................................ 69
Multi-Move or Multi-Clone Configuration.............................................................. 70
View Configuration Node Values for XPath........................................................... 70
Commit Configuration (API)....................................................................................................72
Commit............................................................................................................................. 72
Commit-All.......................................................................................................................74
Run Operational Mode Commands (API)............................................................................ 76
Get Reports (API)...................................................................................................................... 81
Dynamic Reports............................................................................................................81
Predefined Reports........................................................................................................83
Custom Reports..............................................................................................................84
Export Files (API).......................................................................................................................86
Export Packet Captures............................................................................................... 86
Export Certificates and Keys...................................................................................... 88
Export Technical Support Data.................................................................................. 89
Import Files (API).......................................................................................................................92
Importing Basics.............................................................................................................92
Import Files......................................................................................................................93
Retrieve Logs (API)....................................................................................................................94
API Log Retrieval Parameters.....................................................................................94
Example: Use the API to Retrieve Traffic Logs...................................................... 95
Apply User-ID Mapping and Populate Dynamic Groups (API)....................................... 97
Get Version Info (API)........................................................................................................... 103
PAN-OS® and Panorama™API Usage Guide Version 9.1 4 ©2024 Palo Alto Networks, Inc.
About the PAN-OS API
The PAN-OS® and Panorama™ API allows you to manage firewalls and Panorama through a third-
party service, application, or script. The firewalls and Panorama support two types of API—XML
API and REST API.
The XML API uses a tree of XML nodes to map firewall or Panorama functionality. To make an
API request, you must specify the XPath (XML Path Language) to the XML node that corresponds
to a specific setting or action. XPath allows you to navigate through the hierarchical XML tree
structure for firewalls and Panorama. To get started, see:
• PAN-OS XML API Components
• Structure of a PAN-OS XML API Request
You can use the REST API to Create, Update, Read, Delete (CRUD) Objects and Policies on the
firewalls; you can access the REST API directly on the firewall or use Panorama to perform these
operation on policies and objects from a central location and push them to the managed firewalls.
To get started, see Access the PAN-OS REST API.
Because PAN-OS API functionality mirrors that of both the web interface and the CLI, you should
familiarize yourself with both. Reading relevant portions of the PAN-OS Administrator’s Guide will
help you get a better understanding of firewall functionalities that you can access using the API.
You should also be knowledgeable about web service APIs, HTTP, XML, and XPath.
5
About the PAN-OS API
Feature Description
Full access to PAN-OS The PAN-OS XML API allows you to access almost all of the
functionality functionality normally provided through the firewall web
interface and CLI.
Secure authentication and Use your administrative username and password to generate
access using API key and admin an API key to authenticate API calls. Granular roles allow you
roles to grant API access to specific functionality including reports,
logs, and operational mode commands.
Options to view XML syntax To explore all various functions of the API, you can use the
through API browser, CLI and API browser through the firewall web interface. You can
web interface debug mode also enable debug mode through the CLI to see the API
equivalent of CLI commands.
• Design your application to queue events and perform batch API updates instead of sending
single event or mapping updates.
• Limit the number of concurrent API calls to five. The suggested limit ensures that there is no
performance impact to the firewall web interface as the management plane web server handles
requests from both the API and the web interface. Limits may vary depending on the type of
request. The limit may be higher depending on the length of time required for certain requests.
To learn about the PAN-OS REST API, see PAN-OS REST API.
To learn about changes to the latest version of CLI commands that affect corresponding PAN-OS
XML API requests, see the PAN-OS CLI Quick Start.
PAN-OS® and Panorama™API Usage Guide Version 9.1 6 ©2024 Palo Alto Networks, Inc.
About the PAN-OS API
• API key (key=): The API key allows you to authenticate yourself to the API when making
requests. Learn about API Authentication and Security and how to Get Your API Key.
• Request type (type=): Because the XML API allows you to perform a wide array of requests,
you must first specify the type of request you want, ranging from configuration to operation,
importing to exporting, and from reports to user ID. Learn more about Request Types.
• Action (action=): When the request type is config (configuration) or op (operational mode
command), you must also specify an associated action, such as edit, delete, or move. Learn
more about Configuration Actions.
• XML and XPath elements (xpath= or cmd=): When using configuration or operational mode
commands on the firewall, you include only the XML or the XPath that specifies the XML node.
Learn more about XML and XPath and XPath Node Selection.
To make requests to the PAN-OS XML API, you can use the GET and POST methods.
Use a GET request when the query size is less than 2K and you want to pass strings in the
Request URL. When using the GET method, append the query string to the request URL as a URL-
encoded parameter string:
GET /api/?type=keygen&user=<username>&password=<password>
Use a POST request when you are sending large amounts of form data (the request size
is between 2K to 5MB; limit the request size to 5MB) or when you are passing non-ASCII
characters. Some API requests, such as importing files, require POST. When using the POST
method, pass the parameters in the request body. In this example, the request body includes the
login credentials:
Content-Type: application/x-www-form-urlencoded
password=<password>&user=<username>&type=keygen
If you want to learn about the PAN-OS REST API structure, see PAN-OS REST API Request and
Response Structure.
PAN-OS® and Panorama™API Usage Guide Version 9.1 7 ©2024 Palo Alto Networks, Inc.
About the PAN-OS API
To authenticate your API request to the firewall or Panorama, provide the API key in any of the
following ways:
• Use the custom HTTP header, X-PAN-KEY: <key> to include the API key in the HTTP
header.
• For the XML API, include the API key as a query parameter in the HTTP request URL.
• Use Basic Authentication to pass the admin credentials as username:password with Base64
encoding in an Authorization header field.
As a best practice:
• Set an API key lifetime to enforce key rotation; you can also revoke all API keys to protect
from accidental exposure.
• Use a POST request for any call that may contain sensitive information.
You cannot use basic authentication when you Get Your API Key.
https://<firewall>/api/?type=config&action=show&key=<APIkey>&xpath=/
config/devices/entry/vsys/entry/rulebase/security
Ensure you replace variables such as <hostname> and <APIkey> with the IP address or hostname
of your firewall or Panorama and API key, respectively.
When making configuration requests (type=config), you can use XPath, a syntax for selecting
nodes from within an XML document. Use the XPath to isolate and modify portions of your
configuration. The XML configuration within PAN-OS uses four different types of nodes as shown
here:
<users>
<entry name="admin">
<permissions>
<role-based>
<superuser>yes</superuser>
</role-based>
</permissions>
</entry>
<entry name="guest">
<permissions>
<role-based>
<custom>
<profile>NewUser</profile>
</custom>
</role-based>
</permissions>
PAN-OS® and Panorama™API Usage Guide Version 9.1 8 ©2024 Palo Alto Networks, Inc.
About the PAN-OS API
</entry>
</users>
• Root nodes are top-level nodes with no parent. Requesting the root node returns all child
elements.
• Element nodes represent containers of information. Element nodes can contain other
element nodes or simply act as a container of information. Example: <permissions></
permissions>
• Attribute nodes are nodes that contain name/value pairs. Example: <entry
name="admin"></entry>
• Text nodes contain plain text. Example: <superuser>yes</superuser>
Explore the API with the API browser, CLI, or debug console to learn how to construct XML
requests.
/config/mgt-config/users
The above path specifies the following XML node that includes all users:
<users>
<entry name="admin">
<permissions>
<role-based>
<superuser>yes</superuser>
</role-based>
</permissions>
</entry>
<entry name="guest">
<permissions>
<role-based>
<custom>
<profile>NewUser</profile>
</custom>
</role-based>
</permissions>
</entry>
</users>
PAN-OS® and Panorama™API Usage Guide Version 9.1 9 ©2024 Palo Alto Networks, Inc.
About the PAN-OS API
/entry[@name='TEST_IKE_PAN']/protocol/ikev1/
dpd&element=<enable>yes</enable></dpd></
ikev1><version>ikev2-preferred</version></protocol>&/
ikev2&element=<ike-crypto-profile>default</ike-crypto-
profile></ikev2>&/peer-address&element=<ip>1.2.3.4</ip>
To successfully update each node, target each node individually, for example:
entry[@name='TEST_IKE_PAN']/peer-
address&element=<ip>1.2.3.4</ip>
Another method for selecting the XPath for an XML node is to select the specific node, such as
the superuser or NewUser node within the node shown above. Use XPath syntax similar to the
following to drill-down and select a specific node:
/config/mgt-config/users/
entry/permissions/role-based/
superuser[text()='yes']
/config/mgt-config/users/entry/
permissions/role-based/custom/
profile[text()='NewUser']
PAN-OS® and Panorama™API Usage Guide Version 9.1 10 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML
API
To use the PAN-OS XML API, first use your admin credentials to get an API key through the
keygen command type. You can then use the API key to test a simple call.
• Enable API Access
• Get Your API Key
• Authenticate Your API Requests
• Make Your First API Call
• Explore the API
• PAN-OS XML API Error Codes
This guide exercises API requests using cURL commands. However, you can use other API tools
such as Postman and RESTClient to make API requests. By default, PAN-OS uses a self-signed
certificate, so you will need to use -k parameter with cURL requests. Alternatively, you must
replace the self-signed certificate with one from a known certificate authority. If you have an
internal certificate authority, generate your own certificate and install it on the firewall.
11
Get Started with the PAN-OS XML API
As a best practice, set up a separate admin account for XML API access.
PAN-OS® and Panorama™API Usage Guide Version 9.1 12 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
If you have an existing key and generate another key for the same user, all existing
sessions will end for the user and previous API sessions will be deleted. If the cookie for the
request doesn’t exist but you make subsequent requests, configuration logs will show the
user as unknown.
STEP 1 | To generate an API key, make a POST request to the firewall’s hostname or IP addresses
using the administrative credentials and type=keygen:
A successful API call returns status="success" along with the API key within the key
element:
<response status="success">
<result>
<key>gJlQWE56987nBxIqyfa62sZeRtYuIo2BgzEA9UOnlZBhU==</key>
</result>
</response>
If you use Panorama to manage your firewalls, Panorama and all of the firewalls that it
manages must have the same master key.
PAN-OS® and Panorama™API Usage Guide Version 9.1 13 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
All the query strings in requests must be a URL-Encoded parameter string. If you use a space in
the URL-Encoded request, you must include either a plus sign or %20 to replace the space.
If you have trouble replicating any of the API requests in our documentation as a first step, Use
the API Browser to build your requests.
STEP 1 | Make a cURL call to get system information, which returns the IP address, hostname, and
model of your firewall. Be sure to include the API key:
When you make your API calls, as an alternative to providing the URL
encoded API key in the request URL, you can use the custom X-PAN-
KEY: <key> parameter to add the key as a name value pair in the
HTTP header. For example, curl -H -X POST "X-PAN-KEY:
LU234T02234565s2Z1FtZWFyWXJOSTdk1234565234565==" -k
'https://firewall_IP/api/?
type=op&cmd=<show><system><info></info></system></show>'
STEP 2 | Confirm that the response to the above request looks similar to this:
<response status="success">
<result>
<system>
<hostname>PA-3050-A</hostname>
<ip-address>10.2.3.4</ip-address>
<public-ip-address>unknown</public-ip-address>
<netmask>255.255.252.0</netmask>
<default-gateway>10.2.3.1</default-gateway>
PAN-OS® and Panorama™API Usage Guide Version 9.1 14 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
<is-dhcp>no</is-dhcp>
<ipv6-address>unknown</ipv6-address>
<ipv6-link-local-address>c123::21b:ffff:feff:c1234/64</ipv6-
link-local-address>
<ipv6-default-gateway/>
<mac-address>00:00:00:ff:c7:00</mac-address>
<time>Tue Jan 8 16:22:56 2019</time>
<uptime>0 days, 18:28:38</uptime>
<devicename>PA-3050-A</devicename>
<family>3000</family>
<model>PA-3050</model>
<serial>001701000529</serial>
<cloud-mode>non-cloud</cloud-mode>
<sw-version>9.0.0-b36</sw-version>
<global-protect-client-package-version>0.0.0</global-protect-
client-package-version>
<app-version>8111-5239</app-version>
<app-release-date>2019/01/07 15:51:30 PST</app-release-date>
<av-version>3328-3783</av-version>
<av-release-date>2019/01/07 11:22:02 PST</av-release-date>
<threat-version>8111-5239</threat-version>
<threat-release-date>2019/01/07 15:51:30 PST</threat-release-
date>
<wf-private-version>0</wf-private-version>
<wf-private-release-date>unknown</wf-private-release-date>
<url-db>paloaltonetworks</url-db>
<wildfire-version>0</wildfire-version>
<wildfire-release-date/>
<url-filtering-version>20190109.20005</url-filtering-version>
<global-protect-datafile-version>unknown</global-protect-
datafile-version>
<global-protect-datafile-release-date>unknown</global-
protect-datafile-release-date>
<global-protect-clientless-vpn-version>0</global-protect-
clientless-vpn-version>
<global-protect-clientless-vpn-release-date/>
<logdb-version>9.0.10</logdb-version>
<platform-family>3000</platform-family>
<vpn-disable-mode>off</vpn-disable-mode>
<multi-vsys>on</multi-vsys>
<operational-mode>normal</operational-mode>
</system>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 15 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
STEP 2 | When making a request to the firewall, include the base64 converted token in the header
preceded by Authorization: Basic
Example:
STEP 3 | Include the header in each of the subsequent requests to the firewall.
PAN-OS® and Panorama™API Usage Guide Version 9.1 16 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
2. Drill down further until you select a request that you want to test.
PAN-OS® and Panorama™API Usage Guide Version 9.1 17 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
Along with the URL, the API browser also provides the XPath as necessary, as shown
here for a description of a predefined application:
PAN-OS® and Panorama™API Usage Guide Version 9.1 18 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
STEP 5 | When you're finished using the API browser, log out.
To learn about changes to the latest version of CLI commands that affect corresponding
PAN-OS XML API requests, see the PAN-OS CLI Quick Start.
Use the CLI to enable debug mode and then run the CLI command to receive the corresponding
XML and XPath in the response.
STEP 1 | Access the CLI.
Use an SSH client or terminal to access your firewall or Panorama CLI.
debug cli on
PAN-OS® and Panorama™API Usage Guide Version 9.1 19 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
https://<firewall>/api/?type=op&cmd=<test><url>http://
paloaltonetworks.com</url></test>&key=<apikey>
Depending on the CLI command, the XML tag values for cmd will vary. For example,
here is a CLI command for showing firewall information: run show system info
The corresponding API call for the CLI command:
https://<firewall>/api/?type=op&cmd=<show><system><info></
info></system></show>&key=<apikey>
http://<firewall>/debug
PAN-OS® and Panorama™API Usage Guide Version 9.1 20 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
STEP 3 | Perform the action you want to replicate through the API.
In the web browser, navigate to the menu and item or action that you want to perform.
To aid in finding the relevant XML, select Clear in the debug console just before you select the
final menu or action.
PAN-OS® and Panorama™API Usage Guide Version 9.1 21 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
https://<firewall>/api/?type=op&cmd=<show><system><info></info></
system></show>&key=<apikey>
PAN-OS® and Panorama™API Usage Guide Version 9.1 22 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
2-5 Internal errors Check with technical support when seeing these errors.
7 Object not present Object specified by the xpath is not present. For
example, entry[@name='value'] where no object with
name 'value' is present.
8 Object not unique For commands that operate on a single object, the
specified object is not unique.
10 Reference count not zero Object cannot be deleted as there are other objects
that refer to it. For example, address object still in use
in policy.
11 Internal error Check with technical support when seeing these errors.
13 Object not found Object presented in the request could not be found.
14 Operation not possible Operation is allowed but not possible in this case.
For example, moving a rule up one position when it is
already at the top.
PAN-OS® and Panorama™API Usage Guide Version 9.1 23 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS XML API
16 Unauthorized The API role does not have access rights to run this
query.
21 Internal error Check with technical support when seeing these errors.
22 Session timed out The session for this query timed out.
PAN-OS® and Panorama™API Usage Guide Version 9.1 24 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
The following use cases highlight the use of the PAN-OS XML API, either to reduce repetitive
steps or to automate tasks normally you perform through the web interface or CLI.
Because the PAN-OS XML API uses a tree of XML nodes, in your API request you must specify
the correct type and action along with the XPath Node Selection. See Explore the API to learn
how to construct XML requests to be successful in using the API to meet your automation needs.
• Upgrade a Firewall to the Latest PAN-OS Version (API)
• Show and Manage GlobalProtect Users (API)
• Query a Firewall from Panorama (API)
• Upgrade PAN-OS on Multiple HA Firewalls through Panorama (API)
• Automatically Check for and Install Content Updates (API)
• Enforce Policy using External Dynamic Lists and AutoFocus Artifacts (API)
• Configure SAML 2.0 Authentication (API)
25
PAN-OS XML API Use Cases
If successful, the response contains a jobid that you can use to check on the status of your
request.
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 26 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
If successful, the response contains a jobid that you can use to check on the status of your
request.
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 27 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<response
status="success">
<result>
<sw-updates last-updated-at="2015/10/20 14:16:30">
<msg />
<versions>
<version>7.1.0</version>
<filename>PanOS_3000-7.1.0-c65</filename>
<size>720</size>
<size-kb>737504</size-kb>
<released-on>2015/10/20 13:23:11</released-on>
...
2. Use the jobid in the response to ensure that the system update download completes
successfully:
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 28 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 29 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
The response contains a list of users along with related information including IP addresses,
logins, and client information:
<response status="success">
<result>
<entry>
<domain/>
<islocal>yes</islocal>
<username>dward</username>
<computer>Dan’s iPhone</computer>
<client>Apple iOS 8.1.2</client>
<vpn-type>Device Level VPN</vpn-type>
<virtual-ip>192.168.2.1</virtual-ip>
<public-ip>166.173.63.240</public-ip>
<tunnel-type>SSL</tunnel-type>
<login-time>Jan.22 01:50:36</login-time>
<login-time-utc>1421916636</login-time-utc>
<lifetime>2592000</lifetime>
</entry>
</result>
</response>
The <login-time-utc> field is the login date/time in UNIX time format (number of seconds
elapsed since 00:00:00 1 Jan 1970). To find the list of users, filter the output for this field and
compare the <login-time-utc> value to current date and time (or another date and time).
PAN-OS® and Panorama™API Usage Guide Version 9.1 30 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<computer>Dan’s%20iPhone</computer></client-logout></global-
protect-gateway>
</request>'
A successful response shows that the user has been successfully disconnected:
<response status="success">
<result>
<response status="success">
<gateway>Home-N</gateway>
<domain>(null)</domain>
<user>dward</user>
<computer>Dan’s iPhone</computer>
</response>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 31 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
Because the PAN-OS XML API uses a tree of XML nodes, in your API request you must
specify the correct type and action along with the XPath Node Selection. See Explore
the API to learn how to construct XML requests.
<response
status="success">
<result>
<devices>
name="007200002517">
<serial>007200002342</serial>
<connected>yes</connected>
<unsupported-version>no</unsupported-version>
<deactivated>no</deactivated>
<hostname>PM-6-1-VM</hostname>
<ip-address>10.3.4.137</ip-address>
<mac-addr />
<uptime>81 days, 20:39:41</uptime>
<family>vm</family>
<model>PA-VM</model>
<sw-version>6.1.3</sw-version>
<app-version>555-3129</app-version>
<av-version>2254-2693</av-version>
<wildfire-version>91873-101074</wildfire-version>
<threat-version>555-3129</threat-version>
<url-db>paloaltonetworks</url-db>
<url-filtering-version>2016.02.02.416</url-filtering-
version>
PAN-OS® and Panorama™API Usage Guide Version 9.1 32 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<logdb-version>6.1.3</logdb-version>
<vpnclient-package-version />
<global-protect-client-package-version>0.0.0</global-
protect-client-package-version>
<vpn-disable-mode>no</vpn-disable-mode>
<operational-mode>normal</operational-mode>
<multi-vsys>no</multi-vsys>
<vsys>
name="vsys1">
<display-name>vsys1</display-name>
<shared-policy-status />
<shared-policy-md5sum>4a0913667df83ff1098492e2e2ec1756</
shared-policy-md5sum>
</entry>
</vsys>
</entry>
<!--truncated -->
</devices>
</result>
</response>
To directly target a firewall through Panorama, append the firewall serial number to the
request:
<response status="success">
<result>
<system>
<hostname>firewall</hostname>
<ip-address>10.41.0.8</ip-address>
<netmask>255.255.224.0</netmask>
PAN-OS® and Panorama™API Usage Guide Version 9.1 33 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<default-gateway>10.41.0.1</default-gateway>
<is-dhcp>no</is-dhcp>
<ipv6-address>unknown</ipv6-address>
<ipv6-link-local-address>fe80::21c:17cf:feff:c04a/64</ipv6-
link-local-address>
<ipv6-default-gateway/>
<mac-address>00:1b:17:fc:c0:4a</mac-address>
<time>Tue Oct 27 13:39:09 2015</time>
<uptime>12 days, 0:05:26</uptime>
<devicename>pm-firewall</devicename>
<family>3000</family>
<model>PA-3020</model>
<serial>001802000104</serial>
<sw-version>7.1.0-c54</sw-version>
<global-protect-client-package-version>2.0.0</global-protect-
client-package-version>
<app-version>537-2965</app-version>
<app-release-date>2015/10/26 18:10:48</app-release-date>
<av-version>2149-2586</av-version>
<av-release-date>2015/10/26 15:31:55</av-release-date>
<threat-version>537-2965</threat-version>
<threat-release-date>2015/10/26 18:10:48</threat-release-
date>
<wf-private-version>0</wf-private-version>
<wf-private-release-date>unknown</wf-private-release-date>
<url-db>paloaltonetworks</url-db>
<wildfire-version>80683-89773</wildfire-version>
<wildfire-release-date>unknown</wildfire-release-date>
<url-filtering-version>2015.10.27.226</url-filtering-version>
<global-protect-datafile-version>1445974904</global-protect-
datafile-version>
<global-protect-datafile-release-date>2015/10/27 19:41:44</
global-protect-datafile-release-date>
<logdb-version>7.0.9</logdb-version>
<platform-family>3000</platform-family>
<vpn-disable-mode>off</vpn-disable-mode>
<multi-vsys>on</multi-vsys>
<operational-mode>normal</operational-mode>
</system>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 34 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
This is a high-level overview of the steps you must take in this procedure. You script or
application must incorporate error-checking and logic to implement this sequence of
steps.
Because the PAN-OS XML API uses a tree of XML nodes, in your API request you must
specify the correct type and action along with the XPath Node Selection. See Explore
the API to learn how to construct XML requests.
STEP 1 | Check for the latest PAN-OS software update through Panorama
Check for the latest available PAN-OS software updates. Include the firewall serial number in
your request:
The response contains an array of results sorted to show the latest version first:
<response status="success">
<result>
<msg />
<versions>
>
<version>7.1</version>
<filename>PanOS_vm-7.1</filename>
<size>540</size>
<size-kb>553964</size-kb>
<released-on>2016/02/02 10:57:20</released-on>
<release-notes><![CDATA[https://10.44.2.19/
updates/ReleaseNotes.aspx?type=sw&versionNumber=7.1.0-
c158&product=panos&platform=vm]]></release-notes>
PAN-OS® and Panorama™API Usage Guide Version 9.1 35 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<downloaded>no</downloaded>
<current>no</current>
<latest>yes</latest>
</entry>
</versions>
</sw-updates>
</result>
</response>
curl -X GET
'https://<firewall>/api/?
type=op&cmd=<request><system><software><download><version>7.1.0
-c65</version></download></software></system></request>'
2. Use the jobid in the response to ensure that the system update download completes
successfully:
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 36 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<response status="success">…
<response status="success">
: <result>
: <devices>
: name="007200002517">
: <serial>007200002342</serial>
: <connected>yes</connected>
: <unsupported-version>no</unsupported-version>
: <deactivated>no</deactivated>
: <hostname>PM-6-1-VM</hostname>
: <ip-address>10.3.4.137</ip-address>
: <mac-addr />
<family>vm</family>
<model>PA-VM</model>
<sw-version>6.1.3</sw-version>
<app-version>555-3129</app-version>
<av-version>2254-2693</av-version>
<wildfire-version>91873-101074</wildfire-version>
PAN-OS® and Panorama™API Usage Guide Version 9.1 37 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<threat-version>555-3129</threat-version>
<url-db>paloaltonetworks</url-db>
<url-filtering-version>2016.02.02.416</url-filtering-
version>
<logdb-version>6.1.3</logdb-version>
<vpnclient-package-version />
<global-protect-client-package-version>0.0.0</global-
protect-client-package-version>
<vpn-disable-mode>no</vpn-disable-mode>
<operational-mode>normal</operational-mode>
<multi-vsys>no</multi-vsys>
<vsys>
name="vsys1">
<display-name>vsys1</display-name>
<shared-policy-status />
<shared-policy-
md5sum>4a0913667df83ff1098492e2e2ec1756</shared-policy-md5sum>
</entry>
</vsys>
</entry>
<!--truncated -->
</devices>
</result>
</response>
The response contains a <serial> XML element that contains each firewall serial number.
PAN-OS® and Panorama™API Usage Guide Version 9.1 38 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
The response contains an array of results sorted to show the latest version first:
<response status="success">
<result>
<msg />
<versions>
<version>7.1</version>
<filename>PanOS_vm-7.1</filename>
<size>540</size>
<size-kb>553964</size-kb>
<released-on>2016/02/02 10:57:20</released-on>
<release-notes><![CDATA[https://10.44.2.19/updates/
ReleaseNotes.aspx?type=sw&versionNumber=7.1.0-
c158&product=panos&platform=vm]]></release-notes>
<downloaded>no</downloaded>
<current>no</current>
<latest>yes</latest>
</entry>
</versions>
</sw-updates>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 39 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
The response contains a job status of FIN when the download is complete:
<response status="success">
<result>
<job>
<tenq>2016/02/03 08:32:00</tenq>
<id>3448</id>
<user/>
<type>Downld</type>
<status>FIN</status>
<stoppable>no</stoppable>
<result>OK</result>
<tfin>08:32:10</tfin>
<progress>08:32:10</progress>
<details>
<line>Successfully downloaded</line>
<line>Preloading into software manager</line>
<line>Successfully loaded into software manager</line>
</details>
<warnings/>
</job>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 40 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<response status="success">
<result>Successfully changed HA state to suspended</result>
</response>
<response status="success">…
PAN-OS® and Panorama™API Usage Guide Version 9.1 41 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<response status="success">
<result>Successfully changed HA state to functional</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 42 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
Download, upgrade, and installation requests are asynchronous. The API responds with a
job ID while it processes your request. In your subsequent request, you use this job ID to
check on the result of your original request:
STEP 1 | Check for installed content on your firewall. Run the following request to view current
system information:
STEP 2 | Confirm that the API response to the request in the previous step includes the currently
installed updates on your firewall:
<response status="success">
<result>
<system>
<hostname>pm-firewall</hostname>
<ip-address>10.47.0.8</ip-address>
<netmask>255.255.254.0</netmask>
<default-gateway>10.47.0.1</default-gateway>
<is-dhcp>no</is-dhcp>
<ipv6-address>unknown</ipv6-address>
<ipv6-link-local-address>fe80::21b:17ff:feff:c04a/64</ipv6-
link-local-address>
<ipv6-default-gateway/>
<mac-address>00:1b:17:ff:c0:4a</mac-address>
<time>Mon Jul 11 17:51:37 2016</time>
<uptime>11 days, 7:38:34</uptime>
<devicename>pm-firewall</devicename>
<family>3000</family>
<model>PA-3020</model>
<serial>001801000104</serial>
<sw-version>7.1.3</sw-version>
<global-protect-client-package-version>2.0.0</global-protect-
client-package-version>
<app-version>598-3427</app-version>
<app-release-date>2016/07/09 22:30:55</app-release-date>
<av-version>2416-2855</av-version>
<av-release-date>2016/07/10 11:27:57</av-release-date>
<threat-version>598-3427</threat-version>
PAN-OS® and Panorama™API Usage Guide Version 9.1 43 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<threat-release-date>2016/07/09 22:30:55</threat-release-
date>
<wf-private-version>0</wf-private-version>
<wf-private-release-date>unknown</wf-private-release-date>
<url-db>paloaltonetworks</url-db>
<wildfire-version>80426-81466</wildfire-version>
<wildfire-release-date>2016/07/11 17:45:11</wildfire-release-
date>
<url-filtering-version>2016.07.11.248</url-filtering-version>
<global-protect-datafile-version>1468280405</global-protect-
datafile-version>
<global-protect-datafile-release-date>2016/07/11 23:40:05</
global-protect-datafile-release-date>
<logdb-version>7.0.9</logdb-version>
<platform-family>3000</platform-family>
<vpn-disable-mode>off</vpn-disable-mode>
<multi-vsys>on</multi-vsys>
<operational-mode>normal</operational-mode>
</system>
</result>
</response>
STEP 3 | Note the currently installed versions for the following updates, so that you can compare the
values after you check for the latest updates:
• global-protect-client-package-version: GlobaProtect
• app-version: Application and threat signatures.
• av-version: Antivirus signatures
• wildfire-version: WildFire malware and antivirus signatures
PAN-OS® and Panorama™API Usage Guide Version 9.1 44 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
STEP 4 | Check for new, available updates with the following requests and store the version field in
the response, which is the version field for GlobalProtect, and the app-version field for
all others:
• GlobalProtect:
• WildFire:
• Antivirus:
Example response:
<response status="success">
<result>
<sw-updates last-updated-at="2016/05/19 14:34:34">
<msg/>
<versions>
<entry>
<version>4.0.0-c16</version>
<filename>PanGP-4.0.0-c16</filename>
<size>44</size>
<size-kb>45321</size-kb>
<released-on>2016/07/08 15:41:18</released-on>
<release-notes>
<![CDATA[
https://firewall/updates/ReleaseNotes.aspx?
type=sw&versionNumber=4.0.0-c16&product=gpclient&platform=any
]]>
</release-notes>
<downloaded>no</downloaded>
<current>no</current>
<latest>no</latest>
<uploaded>no</uploaded>
</entry>
PAN-OS® and Panorama™API Usage Guide Version 9.1 45 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
<!--TRUNCATED-->
Take note of the released-on XML field to verify that updates have been released for at
least a week.
STEP 5 | In your script or code, compare the version values for currently installed updates to new,
available updates. It is recommended that you only install updates that have been available
for at least a week.
• WildFire:
• Antivirus:
The response contains a job ID that you can use to check on the status of the request.
Example:
Learn more about Asynchronous and Synchronous Requests to the PAN-OS XML API.
PAN-OS® and Panorama™API Usage Guide Version 9.1 46 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
• WildFire:
• Antivirus:
The response contains a job ID that you can use to check on the status of the request.
PAN-OS® and Panorama™API Usage Guide Version 9.1 47 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
STEP 1 | Build an AutoFocus export list. For example, if you want to block potential attacks from the
Sofacy group, search for Sofacy as the Tag, and then add the appropriate artifacts shown
within the File Analysis tab, such as DNS Activity, HTTP Requests, and Connection Activity.
The response contains a list of IP addresses, domains, or URLs, depending on the artifacts you
save:
{
"bucket_info": {
"daily_points": 100000,
"minute_points": 200
},
"export_list": [
"176.31.112.10",
"31.220.43.99",
"40.76.58.209",
"62.113.232.196",
"95.215.47.207"
]
}
PAN-OS® and Panorama™API Usage Guide Version 9.1 48 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
STEP 2 | Host the export list as a text file on an external web server. To ensure that you have the
latest list of artifacts, frequently refresh the hosted list.
STEP 3 | Add the URL for the export list to an external dynamic list. In this example the external
dynamic list uses IP addresses:
STEP 4 | Add the external dynamic list as match criteria in a security policy rule. In this example, the
rule denies access to IP addresses on the external dynamic list for all users on your network:
You must commit only once when you add the reference to the EDL in a policy rule. Any
changes to the external dynamic list do not require a commit.
PAN-OS® and Panorama™API Usage Guide Version 9.1 49 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
If you perform this step, you can skip Step 2, Create a SAML Identity Provider (IdP) server
profile.
PAN-OS® and Panorama™API Usage Guide Version 9.1 50 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
PAN-OS® and Panorama™API Usage Guide Version 9.1 51 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
STEP 3 | Create a SAML authentication profile using the PAN-OS XML API
Include SAML authentication profile parameters in your GET request:
• key: API key
• authentication-profile: authentication profile name
• enable-single-logout: specify whether you want to enable SAML single logout. The default
value is no.
• request-signing-certificate: request signing certificate name
• server-profile: SAML Identity Provider (IdP) server profile name
• certificate-profile: certificate profile name
• attribute-name-username: SAML username attribute
• attribute-name-usergroup: SAML user group attribute
• attribute-name-access-domain: SAML admin domain attribute
• attribute-name-admin-role: SAML admin role attribute
STEP 4 | Add users and user groups that are allowed to authenticate with this authentication profile
Include profile name and member list in your request:
• key: API key
• authentication-profile: authentication profile name
• member: users or user groups. To include specific users or group, include them in brackets:
[member1,member 3]. To include all users, include all.
PAN-OS® and Panorama™API Usage Guide Version 9.1 52 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
STEP 5 | Assign the authentication profile to firewall services that require authentication
For example, to assign the authentication profile to a superuser administrator account for web
access, include these parameters in your GET request:
• key: API key
• name: admin username
• authentication-profile: name of the SAML authentication profile
PAN-OS® and Panorama™API Usage Guide Version 9.1 53 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Use Cases
PAN-OS® and Panorama™API Usage Guide Version 9.1 54 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
The following topics provide common request examples that you can use to better understand the
PAN-OS XML API.
• PAN-OS XML API Request Types and Actions
• Asynchronous and Synchronous Requests to the PAN-OS XML API
• Configuration (API)
• Commit Configuration (API)
• Run Operational Mode Commands (API)
• Get Reports (API)
• Export Files (API)
• Import Files (API)
• Retrieve Logs (API)
• Apply User-ID Mapping and Populate Dynamic Groups (API)
• Get Version Info (API)
55
PAN-OS XML API Request Types
Request Types
You can currently use the following request types:
Syntax Description
Configuration Actions
In addition to the request type that you specify, use available actions to modify or read
configurations using type=config:
• Actions for Modifying a Configuration
• Actions for Reading a Configuration
PAN-OS® and Panorama™API Usage Guide Version 9.1 56 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
PAN-OS® and Panorama™API Usage Guide Version 9.1 57 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
• Show actions can use relative XPath, while get actions require absolute XPath.
PAN-OS® and Panorama™API Usage Guide Version 9.1 58 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
• Retrieve logs:
• Commit:
PAN-OS® and Panorama™API Usage Guide Version 9.1 59 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
• Operational commands:
PAN-OS® and Panorama™API Usage Guide Version 9.1 60 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Configuration (API)
The requests examples in these topics illustrate how you can use the PAN-OS XML API to
configure your firewall.
• Get Active Configuration
• Get Candidate Configuration
• Set Configuration
• Edit Configuration
• Delete Configuration
• Rename Configuration
• Clone Configuration
• Move Configuration
• Override Configuration
• Multi-Move or Multi-Clone Configuration
• View Configuration Node Values for XPath
STEP 2 | Confirm that the XML response for the query looks similar to the following (truncated):
<response status="success">
<result>
<security>
<rules><entry name="IT DNS Services"><profile-
setting><group><member>best-practice</member></
group></profile-setting><to><member>untrust</member></
to><from><member>trust</member></from><source><member>any</
PAN-OS® and Panorama™API Usage Guide Version 9.1 61 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
member></source><destination><member>Data Center</
member></destination><source-user><member>any</
member></source-user><category><member>any</
member></category><application><member>dns</member></
application><service><member>application-default</
member></service><hip-profiles><member>any</member></hip-
profiles><action>allow</action><tag><member>Best Practice</
member></tag><log-start>no</log-start><log-setting>default</log-
setting></entry>
...
</rules>
</security>
</result>
</response>
STEP 2 | Confirm that the XML response for the query looks like the following (truncated):
<response status="success">
<result>
<max>3000</max>
<total>16</total>
<timeout>1800</timeout>
<dp>dp0</dp>
<entries>
<entry>
<status>c</status>
<ip>10.47.0.1</ip>
<mac>00:1b:17:00:2f:13</mac>
<ttl>1743</ttl>
<interface>ethernet1/1</interface>
<port>ethernet1/1</port>
</entry>
<entry>
<status>c</status>
<ip>10.47.0.10</ip>
<mac>00:50:56:93:68:6f</mac>
<ttl>386</ttl>
<interface>ethernet1/1</interface>
<port>ethernet1/1</port>
</entry>
PAN-OS® and Panorama™API Usage Guide Version 9.1 62 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Firewall candidate
configuration curl -X POST 'https://firewall/
api?type=config&action=get&xpath=/
config/devices/entry/vsys/
entry[@name='vsys1']&key=<api_key>"
Firewall candidate
configuration through https://<panorama>/api/?
Panorama type=config&action=get&
xpath=/config/devices/entry/vsys/
entry[@name='vsys1']
&target=<serial>&key=<panorama_api_key>
Firewall candidate
configuration through curl -X POST 'https://panorama/
Panorama without api?type=config&action=get&xpath=/
specifying a firewall config/devices/entry/*[name()!
='vsys']|/config/devices/entry/vsys/
entry[@name='vsys1']&key=<panorama_api_key>"
PAN-OS® and Panorama™API Usage Guide Version 9.1 63 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Set Configuration
Use action=set to add or create a new object at a specified location in the PAN-OS
configuration. Use the xpath parameter to specify the location of the object in the configuration.
For example, if you are adding a new rule to the security rulebase, the xpath-value would be:
/config/devices/entry[@name='localhost.localdomain']/vsys/
entry[@name='vsys1']/rulebase/security
PAN-OS® and Panorama™API Usage Guide Version 9.1 64 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Use the element parameter to specify a value for the object you are adding or creating using
XML.
/config/devices/entry/vsys/entry/
rulebase/security/rules/entry[@name='rule1']
<source><member>src</member></
source><destination><member>dst</member></
destination><service><member>service</
member></
service><application><member>application</
member></application><action>action</
action><source-user><member>src-user</
member></source-user><option><disable-
server-response-inspection>yes-or-no</
disable-server-response-inspection></
option><negate-source>yes-or-no</negate-
source><negate-destination>yes-or-
no</negate-destination><disabled>yes-
or-no</disabled><log-start>yes-or-
no</log-start><log-end>yes-or-no</
log-end><description>description</
description><from><member>src-zone</member></
from><to><member>dst-zone</member></to>
Add an additional member Include the 'list' node in the xpath using the
to an address group or list member[text()='name'] syntax and include the members in
the element parameter. For example, to add an additional static
address object named abc to an address group named test,
use:
PAN-OS® and Panorama™API Usage Guide Version 9.1 65 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Create a new IP address on Specify the interface and IP address in the request:
a specific interface
Edit Configuration
Use action=edit to replace an existing object hierarchy at a specified location in the
configuration with a new value. Use the xpath parameter to specify the location of the object,
including the node to be replaced. Use the element parameter to specify a new value for the
object using its XML object hierarchy (as seen in the output of action=show).
STEP 1 | Replace the application(s) currently used in a rule rule1 with a new application:
where
xpath=/config/devices/entry/vsys/entry/
rulebase/security/rules/entry[@name='rule1']/
application&element=<application><member>app-name</member></
application>
PAN-OS® and Panorama™API Usage Guide Version 9.1 66 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
STEP 2 | Use the response from the config show API request to create the XML body for the element.
STEP 3 | Optionally replace all members in a node with a new set of members using the entry tag in
both the xpath and element parameters. For example, to replace all the address objects in
the address group named test with two new static members named abc and xyz, use:
Delete Configuration
Use action=delete to delete an object at a specified location in the configuration. Use the
xpath parameter to specify the location of the object to be deleted.
Delete a single member object in a group, use the object name in the xpath as
member[text()='name']. For example, to delete a static address object named abc in an
address group named test, use the following xpath:
Rename Configuration
Use action=rename to rename an object at a specified location in the configuration. Use the
xpath parameter to specify the location of the object to be renamed. Use the newname parameter
to provide a new name for the object.
PAN-OS® and Panorama™API Usage Guide Version 9.1 67 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
STEP 1 | Use the following API query to rename an address object called old_address to
new_address:
STEP 2 | Confirm that the XML response for the request looks like the following:
Clone Configuration
Use action=clone to clone an existing configuration object. Use the xpath parameter to
specify the location of the object to be cloned. Use the from parameter to specify the source
object, and the newname parameter to provide a name for the cloned object.
STEP 1 | Use the following API query to clone a security policy called rule1 to rule2:
STEP 2 | Confirm that the XML response for the request looks like the following:
1,2014/03/19 19:07:45,0009C100708,CONFIG,0,0,2014/03/19
19:07:45,10.66.18.1,,clone,admin,Web,Succeeded, config
devices entry vsys
vsys1 rulebase security rules,384,0x8000000000000000
PAN-OS® and Panorama™API Usage Guide Version 9.1 68 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Move Configuration
Use action=move to move the location of an existing configuration object. Use the xpath
parameter to specify the location of the object to be moved, the where parameter to specify type
of move, and dst parameter to specify the destination path.
• where=after&dst=xpath
• where=before&dst=xpath
• where=top
• where=bottom
STEP 1 | Use the following API query to move a security policy called rule1 to come after rule2:
STEP 2 | Confirm that the XML response for the request looks like the following:
Override Configuration
Use action=override to override a setting that was pushed to a firewall from a template. Use
the xpath parameter to specify the location of the object to override.
STEP 1 | Override the SNMP Trap profile configuration settings that were pushed to the firewall using
a template:
STEP 2 | Confirm that the XML response for the request looks like the following:
PAN-OS® and Panorama™API Usage Guide Version 9.1 69 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
</response>
Move addresses addr1, addr2, to device group norcal from device group socal:
Clone addresses addr1, addr2, to device group norcal from device group socal:
PAN-OS® and Panorama™API Usage Guide Version 9.1 70 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
STEP 2 | Confirm that the XML response for the request looks like the following:
PAN-OS® and Panorama™API Usage Guide Version 9.1 71 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
You can validate or revert a candidate configuration before committing it using Run
Operational Mode Commands (API).
• Commit
• Commit-All
Commit
Replace the body element in the cmd parameter with the XML element for the corresponding
commit operation.
Use the API Browser to find different options available for use with force and partial
commits.
• Force Commit—
• Partial commit while excluding shared objects and device and network configuration—
PAN-OS® and Panorama™API Usage Guide Version 9.1 72 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
STEP 2 | Confirm that the XML response indicates that there were no changes to commit or that the
changes are queued for commit:
• No pending changes to commit:
• Pending changes:
STEP 3 | Query the status of the job using the job ID:
STEP 4 | Confirm that the XML response details state the Configuration was committed successfully:
<response status="success">
<result>
<job>
<tenq>2021/07/21 14:33:55</tenq>
<tdeq>14:33:55</tdeq>
<id>4</id>
PAN-OS® and Panorama™API Usage Guide Version 9.1 73 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
<user>admin</user>
<type>Commit</type>
<status>ACT</status>
<queued>NO</queued>
<stoppable>yes</stoppable>
<result>PEND</result>
<tfin/>
<description/>
<positionInQ>0</positionInQ>
<progress>55</progress>
<warnings>
<line>Aggregate-ethernet interface ae1 has no member
interfaces.</line>
</warnings>
<details/>
</job>
</result>
</response>
Commit-All
To centrally manage firewalls from Panorama, use the commit-all API request type to push and
validate shared policy to the firewalls using device groups and configuration to Log Collectors and
firewalls using templates or template stacks.
Pre-commit policy
validation. curl -X POST 'https://panorama/
api?type=commit&action=all&cmd=<commit-
all><shared-policy><validate-only></validate-
only></shared-policy></commit-all>"
PAN-OS® and Panorama™API Usage Guide Version 9.1 74 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Use the API Browser to find other options available for granular commit operations on Panorama.
In the cmd parameter, you must replace the XML element for the corresponding commit-all
operation.
PAN-OS® and Panorama™API Usage Guide Version 9.1 75 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Use the API Browser to explore operational mode commands and a complete listing of all the
options available for the xml-body and their corresponding operation.
PAN-OS® and Panorama™API Usage Guide Version 9.1 76 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
PAN-OS® and Panorama™API Usage Guide Version 9.1 77 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
• WildFire Cluster:
• WildFire Cluster:
PAN-OS® and Panorama™API Usage Guide Version 9.1 78 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
• WildFire Cluster:
• WildFire Cluster:
• WildFire Cluster:
PAN-OS® and Panorama™API Usage Guide Version 9.1 79 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
PAN-OS® and Panorama™API Usage Guide Version 9.1 80 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
When you request a report, the API responds asynchronously with a job ID, which you can
use to retrieve the reports. Learn more about Asynchronous and Synchronous Requests
to the PAN-OS XML API.
• Dynamic Reports
• Predefined Reports
• Custom Reports
Dynamic Reports
You can use the API to view a number of dynamic reports, such as top-applications-
summary, top-blocked-url-summary, and top-spyware-threats-summary. For
dynamic reports, provide either a specific period using the period or a time frame using
starttime and endtime options (use a + instead of a space between the date and timestamp).
Use topn to determine the number of rows.
Last 60 seconds.
https://<firewall>/api/?
type=report&reporttype=dynamic&
reportname=top-app-
summary&period=last-60-seconds&topn=5
PAN-OS® and Panorama™API Usage Guide Version 9.1 81 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Last 15 minutes.
https://<firewall>/api/?
type=report&reporttype=dynamic
&reportname=top-app-
summary&period=last-15-minutes&topn=5
Last hour.
https://<firewall>/api/?
type=report&reporttype=dynamic&
reportname=top-app-
summary&period=last-hour&topn=5
Last 12 hours.
https://<firewall>/api/?
type=report&reporttype=dynamic&
reportname=top-app-
summary&period=last-12-hrs&topn=5
Last 7 days
https://<firewall>/api/?
type=report&reporttype=dynamic&
reportname=top-app-
summary&period=last-7-days&topn=5
PAN-OS® and Panorama™API Usage Guide Version 9.1 82 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Last 30 days
https://<firewall>/api/?
type=report&reporttype=dynamic&
reportname=top-app-
summary&period=last-30-days&topn=5
Predefined Reports
Predefined reports always return data for the last 24-hour period. You can also get this list by
following the link for predefined reports, such as top-applications, top-attackers, and
bandwidth-trend on the API browser.
Top applications.
curl -X POST 'https://firewall/api?
type=report&async=yes&reporttype=predefined&reportname=to
application-categories"
Top attackers.
curl -X POST 'https://firewall/api?
type=report&async=yes&reporttype=predefined&reportname=to
attackers"
PAN-OS® and Panorama™API Usage Guide Version 9.1 83 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Top victims.
curl -X POST 'https://firewall/api?
type=report&async=yes&reporttype=predefined&reportname=to
victims"
Custom Reports
For custom reports, the selection criteria, such as time frame, group-by, and sort-by are part
of the report definition. The API returns any shared custom reports. Note that quotes are not
required around the report name and any spaces in the report name must be URL encoded to
%20.
For custom reports created in a specific VSYS, you can retrieve them directly by specifying the
vsys parameters.
STEP 1 | Retrieve the report definition from the configuration:
https://<firewall>/api/?
type=report&reporttype=dynamic&reportname=custom-dynamic-
report&cmd=<type><appstat><aggregate-by><member>category-of-
name</member><member>technology-of-name</member></aggregate-
by></appstat></type><period>last-24-hrs</period><topn>10</
topn><topm>10</topm><query>(name+neq+'')AND(vsys+eq+'vsys1')</
query>
The response includes the job ID you can use to view the results:
<response
status="success">
<result>
<msg>
<line>Report job enqueued with jobid 6</line>
</msg>
<job>6</job>
PAN-OS® and Panorama™API Usage Guide Version 9.1 84 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
</result>
</response>
https://<firewall>/api/?type=report&action=get&job-id=jobid
PAN-OS® and Panorama™API Usage Guide Version 9.1 85 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
When using the API query from a web browser, you can specify to=filename as an optional
parameter if you would like to provide a different name when saving the file locally.
• Export Packet Captures
• Export Certificates and Keys
• Export Technical Support Data
PAN-OS® and Panorama™API Usage Guide Version 9.1 86 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
The file will be retrieved and saved locally using the name
yyyymmdd-filename.
PAN-OS® and Panorama™API Usage Guide Version 9.1 87 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
https://<firewall>/api/?
key=apikey&type=export&category=<certificate>
&certificate-name=<certificate_name>
&passphrase=<passphrase>
&format=<pkcs12><pem><pkcs10>
&include-key=<yes><no>&vsys=<vsys>
<omit this parameter to import it into a shared location>
PAN-OS® and Panorama™API Usage Guide Version 9.1 88 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiIMA0GCSqGSIb3Df
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVx
aWRnaXRzIFB0eSBMdGQwHhcNMTExMjMxMDg1OTQ0WhcNMT
<!-- TRUNCATED -->
-----END CERTIFICATE-----
https://<firewall>/api/?key=apikey&type=export&category=tech-
support&action=status&job-id=299
PAN-OS® and Panorama™API Usage Guide Version 9.1 89 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Content-Type: application/octet-stream
Content-Length: 19658186
Content-Transfer-Encoding: binary
https://<firewall>/api/?key=apikey&type=export&category=tech-
support
https://<firewall>/api/?key=apikey&type=export&category=tech-
support&action=status&job-id=id
<response status="success">
<result>
<job>
<tenq>2012/06/14 10:11:09</tenq>
<id>2</id>
<user/>
<type>Exec</type>
<status>FIN</status>
<stoppable>no</stoppable>
<result>0K</result>
<tfin>10:12:39</tfin>
<progress>10:12:39</progress>
<details/>
<warnings/>
<resultfile>//tmp/techsupport.tgz</resultfile>
PAN-OS® and Panorama™API Usage Guide Version 9.1 90 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
</job>
</result>
</response>
https://<firewall>/api/?key=apikey&type=export&category=tech-
support&action=get&job-id=id
When using cURL, you can specify the output file name as an option to cURL ( -o). After a
successful retrieval of the job data, the job is automatically deleted by the system.
https://<firewall>/api/?key=apikey&type=export&category=tech-
support&action=finish&job-id=id
<response status"success">
<msg>Job 2 removed.</msg>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 91 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Importing Basics
Use cURL to import files to the firewall.
Import files to a firewall via Panorama. First import the file to Panorama, then run a request
batch upload-install op command:
PAN-OS® and Panorama™API Usage Guide Version 9.1 92 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Import Files
Use the API Browser to see a full list of import categories.
Import a certificate or key by specifying the type of the certificate or key file using the
category parameter:
• category=certificate
• category=keypair
• category=high-availability-key
Import a GlobalProtect response pages using an additional parameter for the security profile in
which the page should be imported:
profile=profilename
PAN-OS® and Panorama™API Usage Guide Version 9.1 93 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Parameter Description
query (Optional) Specify the match criteria for the logs. This is similar to
the query provided in the web interface under the Monitor tab when
viewing the logs. The query must be URL encoded.
PAN-OS® and Panorama™API Usage Guide Version 9.1 94 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Parameter Description
skip (Optional) Specify the number of logs to skip when doing a log
retrieval. The default is 0. This is useful when retrieving logs in batches
where you can skip the previously retrieved logs.
dir (Optional) Specify whether logs are shown oldest first (forward) or
newest first (backward). Default is backward.
action (Optional) Log data sizes can be large so the API uses an asynchronous
job scheduling approach to retrieve log data. The initial query returns
a Job ID (job-id) that you can then use for future queries with the
action parameter:
• action=get—Check status of an active job or retrieve the log
data when the status is FIN (finished). This is slightly different than
the asynchronous approach to retrieve tech support data where a
separate status action is available.
• action=finish—Stop an active job.
• Not specified—When not specified, such as during an initial query,
the system creates a new job to retrieve log data.
A web-browser will automatically URL encode the parameters, but when using cURL,
the query parameter must be URL encoded.
Response:
PAN-OS® and Panorama™API Usage Guide Version 9.1 95 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
</msg>
<job>18</job>
</result>
</response>
STEP 2 | Retrieve traffic log data using the following request using the job ID as the value returned in
the previous response:
STEP 3 | Confirm that the XML response looks similar to the following:
<response status="success"">
<result>
<job>...</job>
<log>
<logs count="20" progress="100n>
<entry logid="5753304543500710425"> <domain>1</
domain> <receive_time>2012/06/13 15:43:17</receive_time>
<serial>001606000117</serial> <segno>6784588</segno>
<actionflags>0x0</actionflags> <type>TRAFFIC</
type> <subtype>start</subtype> <config_ver>1</config_ver>
<time_generated>2012/06/13 15:43:17</time_generated>
<src>172.16.1.2</src> <dst>10.0.0.246</dst>
<natsrc>10.16.0.96</natsrc> <natdst>10.0.0.246</natdst>
<rule>default allow</rule>
When the job status is FIN (finished), the response automatically includes all the logs in the
XML data response. The <log> node in XML is not present when the job status is still pending.
After successful log data retrieval, the system automatically deletes the job.
STEP 4 | ( Optional) Delete and active log retrieval job.To delete an active log retrieval job, run the
following query:
PAN-OS® and Panorama™API Usage Guide Version 9.1 96 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
or
With your User-ID API requests, you can use the following optional parameters:
• vsys=vsys_id—Specify the vsys where you want to apply User-ID mapping.
• target=serialnumber—Specify the firewall by serial number when redirecting through
Panorama.
• Use a GET request if the URL query size is less than 2K and a POST request if the
request size is between 2K to 5MB. Limit the query size to 5MB.
• • When multiple login or logout events are generated at the same time, make sure to
follow these guidelines to ensure optimal firewall performance:
• Design your application to queue events and perform batch API updates instead
of sending single event or mapping updates.
• Limit the number of concurrent API calls to five. The suggested limit ensures that
there is no performance impact to the firewall web interface as the management
plane web server handles requests from both the API and the web interface.
Limits may vary depending on the type of request. The limit may be higher
depending on requests.
• (Panorama managed firewalls only) You cannot view the IP addresses of a DAG
registered using XML API on the Panorama web interface. You must log in to the
Panorama CLI to view the registered IP addresses of a DAG populated using XML
API on Panorama and use the following command:
Use the information in the following table to apply User-ID mapping information to a firewall:
PAN-OS® and Panorama™API Usage Guide Version 9.1 97 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
User-ID mapping for a Use this input file format when providing a User-ID mapping for
login, logout, or groups. a login event, logout event, or for groups:
<uid-message>
<version>1.0</version>
<type>update</type>
<payload>
<login>
<entry name="domain\uid1"
ip="10.1.1.1" timeout="20">
</entry>
</login>
<groups>
<entry name="group1">
<members>
<entry name="user1"/
>
<entry name="user2"/
>
</members>
</entry>
<entry name="group2">
<members>
<entry name="user3"/
>
</members>
</entry>
</groups>
</payload>
</uid-message>
Multi-User System Entry Use the following input file format to set up a terminal server
entry on the firewall and to specify the port range and block
size of ports that will be assigned per user. If you are using the
default port range (1025 to 65534) and block size (200) you do
not need to send a multiusersystem setup message; the
firewall will automatically create the terminal server object when
it receives the first login message.
<uid-message>
<payload>
<multiusersystem>
<entry ip="10.1.1.2"
startport="xxxxx" endport="xxxxx"
blocksize="xxx">
</multiusersystem>
PAN-OS® and Panorama™API Usage Guide Version 9.1 98 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
User-ID XML multiuser When the terminal servers sends a login event payload to the
system login event firewall, it can contain multiple login events. The firewall uses the
information in the information in the login message to populate
its user mapping table. For example, if the firewall received a
packet with a source address and port of 10.1.1.23:20101, it
would map the request to user jparker for policy enforcement.
<uid-message>
<payload>
<login>
<entry name="acme\jparker"
ip="10.1.1.23" blockstart="20100">
</login>
</payload>
<type>update</type>
<version>1.0</version>
</uid-message>
User-ID XML multiuser Upon receipt of a logout event message with a blockstart
system logout parameter, the firewall removes the corresponding IP address-
port-user mapping. If the logout message contains a username
and IP address, but no blockstart parameter, the firewall
removes all mappings for the user. If the logout message
contains an IP address only, the firewall removes the multi-user
system and all associated mappings.
<uid-message>
<payload>
<logout>
<entry user="domain\uid2"
ip="10.1.1.2" blockstart="xxxxx">
</logout>
</payload>
<type>update</type>
<version>1.0</version>
</uid-message>
Dynamic address group IP Use the following input file format to dynamically register and
address registration unregister IP addresses.
You can configure a timeout as part of the member element
to automatically unregister IP address-to-tag mapping after a
specified amount of time. By default, no timeout is specified
meaning the mapping will not timeout and must be manually
PAN-OS® and Panorama™API Usage Guide Version 9.1 99 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
<uid-message>
<version>1.0</version>
<type>update</type>
<payload>
<register>
<entry ip="10.1.1.1">
<tag>
<member timeout="3600">CBB09C3D-3416-4734-
BE90-0395B7598DE3</member>
</tag>
</entry>
</register>
<unregister>
<entry ip="10.1.1.3"/>
<tag>
<member>CBB09C3D-3416-4734-
BE90-0395B7598DE5</member>
</tag>
</entry>
</unregister>
</payload>
</uid-message>
Register tags for a user to Use the following input file format to dynamically register tags to
add that user to a dynamic a user and include that user in a dynamic user group.
user group
To register a tag for a user, that user must have an
existing user mapping or group mapping.
<uid-message>
<version>1.0</version>
<type>update</type>
<payload>
<register-user>
<entry user="paloaltonetworks\john">
<tag>
<member>finished_ethics_training</
member>
<member>mac_user</member>
</tag>
PAN-OS® and Panorama™API Usage Guide Version 9.1 100 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
Unregister specific tags Use the following input file format to unregister a specific
for a user to remove that dynamic tag from a user and remove the user from the dynamic
user from the dynamic user user group associated with that tag.
group
<uid-message>
<version>1.0</version>
<type>update</type>
<payload>
<unregister-user>
<entry user="paloaltonetworks\john">
<tag>
<member>mac_user</member>
</tag>
</entry>
</unregister-user>
</payload>
</uid-message>
Unregister all tags for a Use the following input file format to unregister all tags for a
user specific user.
<uid-message>
<version>1.0</version>
<type>update</type>
<payload>
<unregister-user>
<entry user="paloaltonetworks\john">
</entry>
</unregister-user>
</payload>
</uid-message>
Clear all tags for all users Use the following input file format to unregister all tags from all
users.
<uid-message>
<version>1.0</version>
<type>update</type>
PAN-OS® and Panorama™API Usage Guide Version 9.1 101 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
PAN-OS® and Panorama™API Usage Guide Version 9.1 102 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
STEP 2 | Confirm that the XML response contains the software version, model, serial number, and
whether multi-vsys mode is on:
<response status="success">
<result>
<sw-version>7.1.0</sw-version>
<multi-vsys>off</multi-vsys>
<model>pa-vm</model>
<serial>007000001222</serial>
</result>
</response>
PAN-OS® and Panorama™API Usage Guide Version 9.1 103 ©2024 Palo Alto Networks, Inc.
PAN-OS XML API Request Types
PAN-OS® and Panorama™API Usage Guide Version 9.1 104 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS
REST API
To use the PAN-OS® and Panorama™ REST API, first use your administrative credentials to get
an API key. You can then use the API key to make API requests.
• PAN-OS REST API
• Access the PAN-OS REST API
• Resource Methods and Query Parameters (REST API)
• PAN-OS REST API Request and Response Structure
• PAN-OS REST API Error Codes
• Work With Objects (REST API)
• Create a Security Policy Rule (REST API)
• Work with Policy Rules on Panorama (REST API)
• Create a Tag (REST API)
• Configure a Security Zone (REST API)
• Configure a Virtual SD-WAN Interface (REST API)
• Create an SD-WAN Policy Pre Rule (REST API)
The PAN-OS REST API covers a subset of the firewall and Panorama functions, and you’ll need to
use the XML API to complete the configuration and commit your changes.
The API requests in this guide use cURL commands. However, you can make API requests with
other tools such as Postman or a RESTClient. By default, PAN-OS uses a self-signed certificate, so
you will need to use the -k parameter with cURL requests. Alternatively, you can replace the self-
signed certificate with one from a trusted certificate authority. If you have an internal certificate
authority, generate your own certificate and install it on the firewall.
105
Get Started with the PAN-OS REST API
PAN-OS® and Panorama™API Usage Guide Version 9.1 106 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
The following table lists the PAN-OS 9.1 REST API resource URIs that are available on
the firewall. The resource URIs on Panorama are analogous except that resources support
both pre rule and post rule policies. The PAN-OS 9.1 REST API resources offer abilities
like managing policies on the firewall or configuring SD-WAN interfaces and policies on
Panorama. To complete the configuration, you’ll need to use the XML API on the firewall
and Panorama.
Resource URI
OBJECTS /restapi/v9.1/Objects/Addresses
/restapi/v9.1/Objects/AddressGroups
/restapi/v9.1/Objects/Regions
/restapi/v9.1/Objects/Applications
/restapi/v9.1/Objects/ApplicationGroups
/restapi/v9.1/Objects/ApplicationFilters
/restapi/v9.1/Objects/Services
/restapi/v9.1/Objects/ServiceGroups
/restapi/v9.1/Objects/Tags
/restapi/v9.1/Objects/
GlobalProtectHIPObjects
PAN-OS® and Panorama™API Usage Guide Version 9.1 107 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Resource URI
/restapi/v9.1/Objects/
GlobalProtectHIPProfiles
/restapi/v9.1/Objects/ExternalDynamicLists
/restapi/v9.1/Objects/CustomDataPatterns
/restapi/v9.1/Objects/
CustomSpywareSignatures
/restapi/v9.1/Objects/
CustomVulnerabilitySignatures
/restapi/v9.1/Objects/CustomURLCategories
/restapi/v9.1/Objects/
AntivirusSecurityProfiles
/restapi/v9.1/Objects/
AntiSpywareSecurityProfiles
/restapi/v9.1/Objects/
VulnerabilityProtectionSecurityProfiles
/restapi/v9.1/Objects/
URLFilteringSecurityProfiles
/restapi/v9.1/Objects/
FileBlockingSecurityProfiles
/restapi/v9.1/Objects/
WildFireAnalysisSecurityProfiles
/restapi/v9.1/Objects/
DataFilteringSecurityProfiles
/restapi/v9.1/Objects/
DoSProtectionSecurityProfiles
/restapi/v9.1/Objects/SecurityProfileGroups
/restapi/v9.1/Objects/LogForwardingProfiles
/restapi/v9.1/Objects/
AuthenticationEnforcements
/restapi/v9.1/Objects/DecryptionProfiles
PAN-OS® and Panorama™API Usage Guide Version 9.1 108 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Resource URI
/restapi/v9.1/Objects/
DecryptionForwardingProfiles
/restapi/v9.1/Objects/Schedules
/restapi/v9.1/Objects/
SDWANPathQualityProfiles
/restapi/v9.1/Objects/
SDWANTrafficDistributionProfiles
POLICIES /restapi/v9.1/Policies/SecurityRules
/restapi/v9.1/Policies/NATRules
/restapi/v9.1/Policies/QoSRules
/restapi/v9.1/Policies/
PolicyBasedForwardingRules
/restapi/v9.1/Policies/DecryptionRules
/restapi/v9.1/Policies/TunnelInspectionRules
/restapi/v9.1/Policies/
ApplicationOverrideRules
/restapi/v9.1/Policies/AuthenticationRules
/restapi/v9.1/Policies/DoSRules
/restapi/v9.1/Policies/SDWANRules
NETWORK /restapi/v9.1/Network/SDWANInterfaces
/restapi/v9.1/Network/
SDWANInterfaceProfiles
/restapi/v9.1/Network/EthernetInterfaces
/restapi/v9.1/Network/TunnelIntefaces
/restapi/v9.1/Network/Zones
/restapi/v9.1/Network/VirtualRouters
/restapi/v9.1/Network/QoSInterfaces
PAN-OS® and Panorama™API Usage Guide Version 9.1 109 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Resource URI
DEVICE /restapi/v9.1/Device/VirtualSystems
PAN-OS® and Panorama™API Usage Guide Version 9.1 110 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
predefined
shared shared shared shared shared
for for for for
, ,
Objects Objects Objects Objects
shared vsys
for only only only only
valid
Objects , , , , values on
Panorama:
only vsys vsys vsys vsys
shared
, valid valid valid valid
values on values on values on values on or
vsys Panorama: Panorama: Panorama: Panorama:
device-
, or shared shared shared shared group
panorama-
or or or or
pushed
device- device- device- device-
group group group group
PAN-OS® and Panorama™API Usage Guide Version 9.1 111 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
or
panorama-
pushed
newname — — — — required —
where — — — — — required,
valid
values:
top
bottom
before
after
PAN-OS® and Panorama™API Usage Guide Version 9.1 112 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
dst — — — — — required,
when
where
is
before
or
after
The following table shows examples of request formats with query parameters.
PAN-OS® and Panorama™API Usage Guide Version 9.1 113 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
In PAN-OS 9.1, after you configure the firewalls and Panorama using the REST API, you
must use the XML API or the other management interfaces to commit your changes to the
running configuration.
Request Format
The API request format is constructed as shown in the example below:
• Base path and the resource URI for the endpoint. See Access the PAN-OS REST API for details.
• Query parameters. Every request includes query parameters that are passed to the API
endpoint using query strings. The query parameters are appended to the URL with a ? that
indicates the start of the query string. The query parameters appear after the ?, the parameter
are concatenated with other parameters using the ampersand & symbol.
PAN-OS® and Panorama™API Usage Guide Version 9.1 114 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
• Request body. When you create a resource with a POST request or edit a resource with a
PUT request, you include a JSON or XML formatted request body in which you specify the
properties for the resource you want to create or modify on the endpoint.
When you make an API request to the firewall or Panorama, the API key is required to
authenticate the user who is making the request. You can enter the key with the custom
HTTP header X-PAN-KEY: <key>. Learn about API Authentication and Security and
how to Get Your API Key.
{
"@code": "19",
"@status": "success",
"result": {
"@count": "3",
"@total-count": "3",
"entry": [
{
"@location": "vsys",
"@name": "fqdn1",
"@vsys": "vsys1",
"fqdn": "www.test.com"
},
{
"@location": "vsys",
"@name": "Peer1",
"@vsys": "vsys1",
"ip-netmask": "172.0.0.1/24"
},
{
"@location": "vsys",
"@name": "Peer2renamed",
PAN-OS® and Panorama™API Usage Guide Version 9.1 115 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
"@oldname": "Peer2",
"@vsys": "vsys1",
"ip-netmask": "200.0.0.1/24"
}
]
}
}
{
"code": 3,
"details": [
{
"@type": "CauseInfo",
"causes": [
{
"code": 7,
"description": "Missing Query Parameter: name",
"module": "panui_restapi"
}
]
}
],
"message": "Missing Query Parameter: name"
}
Field Description
code Feature-specific error code. The codes are listed in PAN-OS REST
API Error Codes
PAN-OS® and Panorama™API Usage Guide Version 9.1 116 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Field Description
The details under CauseInfo are for readability
and debugging purposes. The value can change
between software releases. To avoid your scripts
breaking between releases, don’t parse the values in
details.causes.
PAN-OS® and Panorama™API Usage Guide Version 9.1 117 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Error Description
Code
6 Conflict. The entity that the caller attempted to create already exists.
7 Forbidden. The caller does not have permission to execute the specified operation.
16 Unauthorized. The request does not have valid authentication credentials to perform
the operation.
9 Failed precondition. The operation was rejected because the system is not in a state
required for the execution of the operation.
11 Out of range. The operation was attempted past a valid range. And example is
reaching an end-of-file.
13 Internal server error. An unexpected and potentially serious internal error occurred.
PAN-OS® and Panorama™API Usage Guide Version 9.1 118 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST \
'https://10.1.1.4/restapi/v9.1/Objects/Addresses?
location=shared&name=web-servers-production' \
-H 'X-PAN-KEY: LUFRPT0=' \
-d '{
"entry": [
{
"@location": "shared",
"@name": "web-servers-production",
"description": "what is this for?",
"fqdn": "docs.paloaltonetworks.com",
"tag": {
"member": [
"blue"
]
}
}
]
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 119 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
called red to the address object. If the tag does not already exist, you must first create the tag
before you can reference it in the address object.
curl -X PUT \
'https://10.1.1.4/restapi/v9.1/Objects/Addresses?
location=shared&name=web-servers-production' \
-H 'X-PAN-KEY: LUFRPT0=' \
-d '{
"entry": [
{
"@location": "shared",
"@name": "web-servers-production",
"description": "publish servers",
"fqdn": "docs.paloaltonetworks.com",
"tag": {
"member": [
"blue",
"red"
]
}
}
]
}'
The response is
{
"@code": "20",
"@status": "success",
"msg": "command succeeded"
}
curl -X POST \
'https://10.5.196.4/restapi/v9.1/Objects/Addresses:rename?
location=shared&name=web-servers-production&newname=web-server-
publish' \
-H 'X-PAN-KEY: LUFRPT0='
PAN-OS® and Panorama™API Usage Guide Version 9.1 120 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X DELETE \
'https://10.1.1.4/restapi/v9.1/Objects/Addresses?
location=shared&name=web-server-production' \
-H 'X-PAN-KEY: LUFRPT0='
curl -X GET \
'https://10.1.1.4/restapi/v9.1/Objects/Addresses?
location=vsys&vsys=vsys1' \
-H 'X-PAN-KEY: LUFRPT0='
And the response includes the list of address objects that are configured on vsys1 on the firewall.
{
"@code": "19",
"@status": "success",
"result": {
"@count": "3",
"@total-count": "3",
"entry": [
{
"@location": "vsys",
"@name": "fqdn1",
"@vsys": "vsys1",
"fqdn": "www.test.com"
},
{
"@location": "vsys",
"@name": "Peer1",
"@vsys": "vsys1",
"ip-netmask": "172.0.0.1/24"
},
{
"@location": "vsys",
"@name": "Peer2renamed",
"@oldname": "Peer2",
"@vsys": "vsys1",
"ip-netmask": "200.0.0.1/24"
}
]
PAN-OS® and Panorama™API Usage Guide Version 9.1 121 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
}
}
PAN-OS® and Panorama™API Usage Guide Version 9.1 122 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST \
'https://10.1.1.4/restapi/v9.1/Objects/Applications?
location=shared&name=email-collaboration-apps' \
-H 'X-PAN-KEY: LUFRPT=' \
-d '{
"entry": [
{
"@location": "shared",
"@name": "email-collaboration-apps",
"able-to-transfer-file": "yes",
"category": "collaboration",
"description": "apps we allow for collaboration",
"risk": "2",
"subcategory": "email",
"technology": "browser-based"
}
]
}'
You can now use this application object in a Security policy rule.
PAN-OS® and Panorama™API Usage Guide Version 9.1 123 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
Access the PAN-OS REST API. The query parameters include the name of the rule, location and
vsys name location=vsys&vsys=<vsys_name>&name=<rule_name>. And in the request
body specify the same name, location, vsys name, and includes additional properties for the
Security policy rule including the application object you created earlier.
curl -X POST \
'https://10.1.1.4/restapi/v9.1/Policies/SecurityRules?
location=vsys&vsys=vsys1&name=rule-example1' \
-H 'X-PAN-KEY: LUFRPT=' \
-d '{
"entry": [
{
"@location": "vsys",
"@name": "rule-example1",
"@vsys": "vsys1",
"action": "allow",
"application": {
"member": [
"email-collaboration-apps"
]
},
"category": {
"member": [
"any"
]
},
"destination": {
"member": [
"any"
]
},
"from": {
"member": [
"zone-edge1"
]
},
"hip-profiles": {
"member": [
"any"
]
},
"service": {
"member": [
"application-default"
]
},
"source": {
"member": [
"any"
]
},
"source-user": {
"member": [
"any"
]
PAN-OS® and Panorama™API Usage Guide Version 9.1 124 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
},
"to": {
"member": [
"any"
]
}
}
]
}'
Instead of using an application object, you can list applications by name as long as the
applications are included in the application content version installed on the firewall.
"application": {
"member": [
"gmail",
"linkedin",
"sendgrid",
"front"
]
}
curl -X PUT \
'https://10.1.1.4/restapi/v9.1/Policies/SecurityRules?
location=vsys&name=rule-example1&vsys=vsys1' \
-H 'X-PAN-KEY: LUFRPT=' \
-d '{
"entry": [
{
"@location": "vsys",
"@name": "rule-example1",
"@vsys": "vsys1",
"action": "allow",
"application": {
"member": [
"email-collaboration-apps"
]
},
"category": {
"member": [
"any"
]
},
"destination": {
"member": [
"any"
]
},
"from": {
PAN-OS® and Panorama™API Usage Guide Version 9.1 125 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
"member": [
"zone-edge1"
]
},
"hip-profiles": {
"member": [
"any"
]
},
"service": {
"member": [
"application-default"
]
},
"source": {
"member": [
"web-servers-production"
]
},
"source-user": {
"member": [
"any"
]
},
"to": {
"member": [
"any"
]
}
}
]
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 126 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST \
'http://10.5.1.70/restapi/v9.1/Objects/LogForwardingProfiles?
name=log-forwarding-LS&location=device-group&device-
group=devicegroup-7' \
-H 'X-PAN-KEY: LUFRPT1=' \
-d ' {
"entry": {
"@name": "log-forwarding-LS",
"match-list": {
"entry": [
{
"@name": "only_traffic_logs",
"filter": "All Logs",
"log-type": "traffic",
"send-to-panorama": "yes"
},
{
"@name": "only_threat_logs",
"filter": "All Logs",
"log-type": "threat",
PAN-OS® and Panorama™API Usage Guide Version 9.1 127 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
"send-to-panorama": "yes"
}
]
}
}
}'
You can now use this log forwarding object in a Security policy rule.
Use a GET request to fetch the configuration of the Security policy pre rule you want to
modify and copy the response. You can then use this as a starting point for the request
body in your PUT request and modify as needed to edit the rule.
curl -X PUT \
'http://10.1.1.7/restapi/v9.1/Policies/SecurityPreRules?
LOCATION=device-group&device-group=devicegroup-7&name=allow-dns' \
-H 'X-PAN-KEY: LUFRPT=' \
-d '{
"entry": [
{
"@device-group": "devicegroup-7",
"@location": "device-group",
"@name": "allow-dns",
"action": "allow",
"application": {
"member": [
"dns"
]
},
"category": {
"member": [
"any"
]
},
"destination": {
"member": [
"any"
]
},
PAN-OS® and Panorama™API Usage Guide Version 9.1 128 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
"from": {
"member": [
"any"
]
},
"hip-profiles": {
"member": [
"any"
]
},
"log-setting": "log-forwarding-LS",
"log-start": "yes",
"service": {
"member": [
"application-default"
]
},
"source": {
"member": [
"any"
]
},
"source-user": {
"member": [
"any"
]
},
"target": {
"negate": "no"
},
"to": {
"member": [
"any"
]
}
}
]
}
The response body indicates the success or failure of the request. If you reference a Security
policy Pre Rule that does not exist because the name of the rule is invalid or the location is
incorrect, the response displays as
{
"code": 5,
"details": [
{
"@type": "CauseInfo",
"causes": [
{
"code": 7,
"description": "Object Not Present: No object to
edit.",
"module": "panui_mgmt"
PAN-OS® and Panorama™API Usage Guide Version 9.1 129 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
}
]
}
],
"message": "Object Not Present"
}
For help with the error codes, see PAN-OS REST API Error Codes.
PAN-OS® and Panorama™API Usage Guide Version 9.1 130 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST
'https://<Panorama>/restapi/v9.1/objects/tags?location=device-
group&device-group=SD-WAN_Branch&name=Low-Cost-Paths'
-H 'X-PAN-KEY: <your key>
-d '{"entry": {"@name": "Low-Cost-Paths”,
“comments”: “Groups two low cost broadband links and a backup
link”
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 131 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST
'https://<Panorama>/restapi/v9.1/network/zones?
location=template&template=SDWAN-Branch-Network&name=Untrust'
-H 'X-PAN-KEY: <api key>'
-d '{
"entry": {
"@name": "Untrust",
"enable-user-identification": "no",
"network": {
"layer3": {
"member": [
"ethernet1/1",
"ethernet1/2",
"sdwan.1"
]
}
}
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 132 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST
'https://<Panorama>/restapi/v9.1/network/
sdwanInterfaceprofiles?location=template&template=SDWAN-Branch-
Network&name=BroadBand-low-cost'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "BroadBand-low-cost",
"comment": "Low cost",
"failback-hold-time": 20,
"link-tag": "Broadband-ISP",
"link-type": "Cablemodem",
"maximum-download": 100,
"maximum-upload": 50,
"path-monitoring": "Aggressive",
"probe-frequency": 5,
"probe-idle-time": 60,
"vpn-data-tunnel-support": "yes"
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 133 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
interface profile, (b) import the Ethernet interface into a virtual system, and (c) update the
Ethernet interface to specify the SD-WAN interface profile.
1. Configure a Layer 3 Ethernet interface.
The following is an example of an API request to configure a Layer 3 Ethernet interface
that uses DHCP for IP address assignment.
curl -X POST
'https://<Panorama>/restapi/v9.1/network/
ethernetinterfaces?location=template&template=SDWAN-Branch-
Network&name=ethernet1/4'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "ethernet1/4",
"layer3": {
"dhcp-client": {
"create-default-route": "yes",
"default-route-metric": 10,
"enable": "yes",
"send-hostname": {
"enable": "no",
"hostname": "system-hostname"
}
},
"sdwan-link-settings": {
"enable": "no"
}
}
}
}'
curl -X POST
'https://<Panorama>/restapi/v9.1/device/
virtualsystems?location=template&template=SDWAN-Branch-
Network&name=vsys1'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": [
{
"@location": "template",
"@name": "vsys1",
"@template": "Branch_template",
PAN-OS® and Panorama™API Usage Guide Version 9.1 134 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
"import": {
"network": {
"interface": {
"member": [
"ethernet1/4"
]
}
}
}
}
]
}'
curl -X PUT
'https://<Panorama>/restapi/v9.1/network/
ethernetinterfaces?location=template&template=SDWAN-Branch-
Network&name=ethernet1/4'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "ethernet1/4",
"layer3": {
"dhcp-client": {
"create-default-route": "yes",
"default-route-metric": 10,
"enable": "yes",
"send-hostname": {
"enable": "no",
"hostname": "system-hostname"
}
},
"sdwan-link-settings": {
"enable": "yes",
"sdwan-interface-profile": "BroadBand-test"
}
}
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 135 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST
'https://<Panorama>/restapi/v9.1/network/
sdwanInterfaces?location=template&template=SDWAN-Branch-
Network&name=sdwan'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "sdwan"
}
}'
curl -X POST
'https://<Panorama>/restapi/v9.1/network/
sdwanInterfaces?location=template&template=SDWAN-Branch-
Network&name=sdwan.1'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "sdwan.1",
"interface": {
"member": [
"ethernet1/3",
"ethernet1/4"
]
}
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 136 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
curl -X POST
'https://<Panorama>/restapi/v9.1/objects/
sdwanpathqualityprofiles?location=device-group&device-group=SD-
WAN_Branch&name=general-business2'
-H 'X-PAN-KEY: <api key>
-d '{
"entry": {
"@name": "general-business2",
"metric": {
"jitter": {
"sensitivity": "medium",
"threshold": 20
},
"latency": {
"sensitivity": "medium",
"threshold": 300
},
"pkt-loss": {
"sensitivity": "medium",
"threshold": 5
}
}
}
}'
PAN-OS® and Panorama™API Usage Guide Version 9.1 137 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
and Weighted Session Distribution. The profile also includes one or more link tags, which the
distribution method uses to narrow its selection of a new path.
The POST request below creates a traffic distribution profile that uses top-down priority and
includes two link tags: Broadband-ISP and LTE-ISP. See Create a Tag (REST API) for an
example of a REST API request to create a link tag.
curl -X POST
'https://<Panorama>/restapi/v9.1/objects/
sdwantrafficdistributionprofiles?location=device-group&device-
group=SD-WAN_Branch&name=BroadBand2'
-H 'X-PAN-KEY: <api key>
-d '{"entry": {"@name": "BroadBand2","traffic-distribution":
"Top Down Priority","link-tags": {"entry": [
{"@name": "Broadband-ISP"
},
{"@name": "LTE-ISP",
}
]
}
}
}'
curl -X POST
'https://<Panorama>/restapi/v9.1/policies/
sdwanprerules?location=device-group&device-group=SD-
WAN_Branch&name=HQ_Service_Test'
-H 'X-PAN-KEY: <api key>'
-d '{"entry": {"@name": "HQ_Service_Test","from": {"member":
["Trust-PA220”
]
},"to": {"member": ["Untrust-PA220"
]
},"source": {"member": ["any”
]
PAN-OS® and Panorama™API Usage Guide Version 9.1 138 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
PAN-OS® and Panorama™API Usage Guide Version 9.1 139 ©2024 Palo Alto Networks, Inc.
Get Started with the PAN-OS REST API
PAN-OS® and Panorama™API Usage Guide Version 9.1 140 ©2024 Palo Alto Networks, Inc.