Files
riposte-marketplace/integrations/panos/manifest.yaml
T
Guillaume BOURGEOIS 26cd02d77a feat(panos): new PAN-OS / Panorama firewall-containment integration
PAN-OS XML API, 10 commands: register/unregister IP tag (Dynamic Address
Group fast-block, no commit), address create/delete, custom URL category
create/edit, EDL list/refresh, commit. API-key auth, targets a vsys, stdlib-only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 23:13:35 +02:00

126 lines
5.0 KiB
YAML

id: panos
name: PAN-OS / Panorama
version: 1.0.0
description: "Palo Alto Networks PAN-OS / Panorama (XML API) — firewall containment: register/unregister IP tags for Dynamic Address Groups (fast block, no commit), create/delete address objects, create/edit custom URL categories, list and refresh External Dynamic Lists, and commit. API-key authentication; stdlib-only, no extra Python dependencies. Targets a firewall vsys."
changelog: "1.0.0 — Initial release: register/unregister IP tag, address create/delete, custom URL category create/edit, EDL list/refresh, commit."
category: network
# Per-instance configuration. The API key is sent as the 'key' query parameter.
# vsys is the firewall virtual system (default vsys1).
config_schema:
properties:
server:
type: string
description: "PAN-OS / Panorama URL (e.g. https://192.168.0.1)"
api_key:
type: string
description: "PAN-OS API key"
x-soar-sensitive: true
port:
type: number
description: "HTTPS port (default 443)"
default: 443
vsys:
type: string
description: "Virtual system (default vsys1)"
default: "vsys1"
insecure:
type: boolean
description: "Trust any TLS certificate (not secure)"
default: false
required:
- server
- api_key
commands:
- id: register_ip_tag
name: panos-register-ip-tag
description: "Register (tag) an IP address so a Dynamic Address Group matching the tag blocks it immediately — no commit required."
inputs_schema:
properties:
ip: { type: string, description: "IP address to tag" }
tags: { type: string, description: "Comma-separated tags to attach" }
timeout: { type: number, description: "Tag timeout in seconds (0 or empty = no timeout)" }
required: [ip, tags]
outputs_schema: { properties: {} }
- id: unregister_ip_tag
name: panos-unregister-ip-tag
description: "Remove tags from an IP address (releases it from tag-based Dynamic Address Groups)."
inputs_schema:
properties:
ip: { type: string, description: "IP address to untag" }
tags: { type: string, description: "Comma-separated tags to remove" }
required: [ip, tags]
outputs_schema: { properties: {} }
- id: create_address
name: panos-create-address
description: "Create an address object (ip-netmask, ip-range, or fqdn)."
inputs_schema:
properties:
name: { type: string, description: "Address object name" }
value: { type: string, description: "Address value (e.g. 10.0.0.5/32, 10.0.0.1-10.0.0.9, or bad.example.com)" }
type: { type: string, description: "Address type: ip-netmask (default), ip-range, or fqdn" }
description: { type: string, description: "Optional description" }
required: [name, value]
outputs_schema: { properties: {} }
- id: delete_address
name: panos-delete-address
description: "Delete an address object by name."
inputs_schema:
properties:
name: { type: string, description: "Address object name" }
required: [name]
outputs_schema: { properties: {} }
- id: create_custom_url_category
name: panos-create-custom-url-category
description: "Create a custom URL category populated with the given URLs (used by a URL-filtering deny rule)."
inputs_schema:
properties:
name: { type: string, description: "Custom URL category name" }
urls: { type: string, description: "Comma-separated URLs/domains to include" }
description: { type: string, description: "Optional description" }
required: [name, urls]
outputs_schema: { properties: {} }
- id: edit_custom_url_category
name: panos-edit-custom-url-category
description: "Replace the URL list of an existing custom URL category."
inputs_schema:
properties:
name: { type: string, description: "Custom URL category name" }
urls: { type: string, description: "Comma-separated URLs/domains that become the category's full list" }
required: [name, urls]
outputs_schema: { properties: {} }
- id: list_edl
name: panos-list-edl
description: "List External Dynamic Lists configured on the device."
risk: read
inputs_schema:
properties: {}
required: []
outputs_schema: { properties: {} }
- id: refresh_edl
name: panos-refresh-edl
description: "Force an immediate refresh of an External Dynamic List."
inputs_schema:
properties:
name: { type: string, description: "External Dynamic List name" }
required: [name]
outputs_schema: { properties: {} }
- id: commit
name: panos-commit
description: "Commit the candidate configuration."
inputs_schema:
properties:
description: { type: string, description: "Optional commit description" }
required: []
outputs_schema: { properties: {} }
- id: test_connection
name: panos-test-connection
description: "Verify connectivity and the API key (used by the Test button)."
risk: read
inputs_schema:
properties: {}
required: []
outputs_schema: { properties: {} }