<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Panorama REST API python script examples in Automation/API Discussions</title>
    <link>https://live.paloaltonetworks.com/t5/automation-api-discussions/panorama-rest-api-python-script-examples/m-p/549222#M3401</link>
    <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have been using Panorama's REST API interface lately and I would like to share with you some of the useful python scripts that I have been using in an operational enviroment:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Requirements:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1. Install Python software (Windows, Linux or MAC)&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. Install the following Python modules:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip install requests&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Allows to execute CURL commands&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip install urllib3&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Used to bypass the SSL certificate warning in-case Panorama uses a self-signed certificate&lt;/EM&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip instal pprint&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Formats the script's output to a good looking JSON format with proper indexation and spacing&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;3. Use your favorite source code editor such as Notepad++ or Visual Studio code in order to edit python code (make sure scripts are saved as&amp;nbsp;&lt;STRONG&gt;.py&lt;/STRONG&gt; files)&lt;/P&gt;&lt;P&gt;4. Generate a Panorama API KEY. To do that just simply open your favorite browser and enter the following URL:&lt;/P&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;https://&lt;FONT color="#FF0000"&gt;{PANORAMA_IP_ADDRESS}&lt;/FONT&gt;/api/?type=keygen&amp;amp;&lt;FONT color="#FF0000"&gt;{api_username}&lt;/FONT&gt;&amp;amp;password=&lt;FONT color="#FF0000"&gt;{api_user_password}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;this will generate the Key which you just need simply copy and save it somewhere with you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Scripts:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script # 1 - GET call - List all Zones from one or multiple target templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1", "template2", "template3"]

headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

for x in target_templates:
    url = "https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1"

    response = requests.request("GET", url, headers=headers, verify=False)

    response_dict = json.loads(response.text)

    print(x)
    pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;U&gt;Script # 2 - GET call - List any specific Zone from one or multiple target templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1", "template2", "template3"]

headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

for x in target_templates:
    url = "https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={target_ZONE}"

    response = requests.request("GET", url, headers=headers, verify=False)

    response_dict = json.loads(response.text)

    print(x)
    pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #3 - POST call - Create 1 Zones on one or multiple target Templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1","template2","template3"]

for x in target_templates:

    payload1 = json.dumps({
      "entry": {
        "@name": "{name_of_the_new_zone}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    url = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={name_of_the_new_zone}")
    headers = {
      'Content-Type': 'application/json',
      'X-PAN-KEY': '{PANORAMA_API_KEY}'
    }

    response1 = requests.request("POST", url, headers=headers, data=payload1, verify=False)

    print(x,"\n",response1.text,"\n")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #4 - POST call - Create multiple Zones on one or multiple target Templates&lt;/U&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1","template2","template3"]

for x in target_templates:

    payload1 = json.dumps({
      "entry": {
        "@name": "{new_zone1}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    payload2 = json.dumps({
      "entry": {
        "@name": "{new_zone2}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    payload3 = json.dumps({
      "entry": {
        "@name": "{new_zone3}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })


    url1 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone1}")
    url2 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone2}")
    url3 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone3}")
	
    headers = {
      'Content-Type': 'application/json',
      'X-PAN-KEY': '{PANORAMA_API_KEY}'
    }

    response1 = requests.request("POST", url1, headers=headers, data=payload1, verify=False)
    response2 = requests.request("POST", url2, headers=headers, data=payload2, verify=False)
    response3 = requests.request("POST", url3, headers=headers, data=payload3, verify=False)

    print(x,"\n",response1.text,"\n", response2.text,"\n", response3.text,"\n")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please note that the &lt;STRONG&gt;&lt;U&gt;s&lt;STRONG&gt;c&lt;/STRONG&gt;ripts #1,#2 and #3&lt;/U&gt;&lt;/STRONG&gt; can also be modified in to manipulate other &lt;STRONG&gt;Template&lt;/STRONG&gt; configurations such as Ethernet Interfaces, Aggregate Interfaces, VLANs, etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #4 - GET call - List all "Shared" Objects from a Target Device Group&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_device_group = "{target_device_group_name}"
headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

url = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Objects/Addresses?location=shared&amp;amp;device-group="+target_device_group)

response = requests.request("GET", url, headers=headers, verify=False)

response_dict = json.loads(response.text)
print(target_device_group)
pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope it helps as much as it did for me! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 13 Jul 2023 11:59:52 GMT</pubDate>
    <dc:creator>cyberangel261</dc:creator>
    <dc:date>2023-07-13T11:59:52Z</dc:date>
    <item>
      <title>Panorama REST API python script examples</title>
      <link>https://live.paloaltonetworks.com/t5/automation-api-discussions/panorama-rest-api-python-script-examples/m-p/549222#M3401</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have been using Panorama's REST API interface lately and I would like to share with you some of the useful python scripts that I have been using in an operational enviroment:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Requirements:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1. Install Python software (Windows, Linux or MAC)&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. Install the following Python modules:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip install requests&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Allows to execute CURL commands&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip install urllib3&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Used to bypass the SSL certificate warning in-case Panorama uses a self-signed certificate&lt;/EM&gt;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;&lt;STRONG&gt;pip instal pprint&amp;nbsp;&lt;/STRONG&gt;-&amp;gt; Formats the script's output to a good looking JSON format with proper indexation and spacing&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;3. Use your favorite source code editor such as Notepad++ or Visual Studio code in order to edit python code (make sure scripts are saved as&amp;nbsp;&lt;STRONG&gt;.py&lt;/STRONG&gt; files)&lt;/P&gt;&lt;P&gt;4. Generate a Panorama API KEY. To do that just simply open your favorite browser and enter the following URL:&lt;/P&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;https://&lt;FONT color="#FF0000"&gt;{PANORAMA_IP_ADDRESS}&lt;/FONT&gt;/api/?type=keygen&amp;amp;&lt;FONT color="#FF0000"&gt;{api_username}&lt;/FONT&gt;&amp;amp;password=&lt;FONT color="#FF0000"&gt;{api_user_password}&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;this will generate the Key which you just need simply copy and save it somewhere with you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Scripts:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script # 1 - GET call - List all Zones from one or multiple target templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1", "template2", "template3"]

headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

for x in target_templates:
    url = "https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1"

    response = requests.request("GET", url, headers=headers, verify=False)

    response_dict = json.loads(response.text)

    print(x)
    pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;U&gt;Script # 2 - GET call - List any specific Zone from one or multiple target templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1", "template2", "template3"]

headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

for x in target_templates:
    url = "https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={target_ZONE}"

    response = requests.request("GET", url, headers=headers, verify=False)

    response_dict = json.loads(response.text)

    print(x)
    pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #3 - POST call - Create 1 Zones on one or multiple target Templates&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1","template2","template3"]

for x in target_templates:

    payload1 = json.dumps({
      "entry": {
        "@name": "{name_of_the_new_zone}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    url = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={name_of_the_new_zone}")
    headers = {
      'Content-Type': 'application/json',
      'X-PAN-KEY': '{PANORAMA_API_KEY}'
    }

    response1 = requests.request("POST", url, headers=headers, data=payload1, verify=False)

    print(x,"\n",response1.text,"\n")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #4 - POST call - Create multiple Zones on one or multiple target Templates&lt;/U&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_templates = ["template1","template2","template3"]

for x in target_templates:

    payload1 = json.dumps({
      "entry": {
        "@name": "{new_zone1}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    payload2 = json.dumps({
      "entry": {
        "@name": "{new_zone2}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })

    payload3 = json.dumps({
      "entry": {
        "@name": "{new_zone3}",
        "@location": "template",
        "@template": x,
        "@vsys": "vsys1",
        "network": {
          "layer3": {},
          "log-setting": "default"
        }
      }
    })


    url1 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone1}")
    url2 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone2}")
    url3 = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Network/Zones?location=template&amp;amp;template="+x+"&amp;amp;vsys=vsys1&amp;amp;name={new_zone3}")
	
    headers = {
      'Content-Type': 'application/json',
      'X-PAN-KEY': '{PANORAMA_API_KEY}'
    }

    response1 = requests.request("POST", url1, headers=headers, data=payload1, verify=False)
    response2 = requests.request("POST", url2, headers=headers, data=payload2, verify=False)
    response3 = requests.request("POST", url3, headers=headers, data=payload3, verify=False)

    print(x,"\n",response1.text,"\n", response2.text,"\n", response3.text,"\n")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please note that the &lt;STRONG&gt;&lt;U&gt;s&lt;STRONG&gt;c&lt;/STRONG&gt;ripts #1,#2 and #3&lt;/U&gt;&lt;/STRONG&gt; can also be modified in to manipulate other &lt;STRONG&gt;Template&lt;/STRONG&gt; configurations such as Ethernet Interfaces, Aggregate Interfaces, VLANs, etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Script #4 - GET call - List all "Shared" Objects from a Target Device Group&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import requests
import urllib3
import pprint
import json

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

target_device_group = "{target_device_group_name}"
headers = {
  'Content-Type': 'application/json',
  'X-PAN-KEY': '{PANORAMA_API_KEY}'
}

url = ("https://{PANORAMA_IP_ADDRESS}/restapi/v{PANORAMA_OS_VERSION}/Objects/Addresses?location=shared&amp;amp;device-group="+target_device_group)

response = requests.request("GET", url, headers=headers, verify=False)

response_dict = json.loads(response.text)
print(target_device_group)
pprint.pp(response_dict)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope it helps as much as it did for me! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jul 2023 11:59:52 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/automation-api-discussions/panorama-rest-api-python-script-examples/m-p/549222#M3401</guid>
      <dc:creator>cyberangel261</dc:creator>
      <dc:date>2023-07-13T11:59:52Z</dc:date>
    </item>
  </channel>
</rss>

