From bc335e4756baca1608202e266611979ee7ade7e3 Mon Sep 17 00:00:00 2001 From: Michael Elrom Date: Thu, 13 Aug 2026 01:23:10 -0400 Subject: [PATCH 1/2] feat(ip-fabric): add tables/snapshots/path-lookup/jobs Integration Model IP Fabric doesn't publish a standalone OpenAPI file, so this is built from IP Fabric's official Postman collection (v7.8) and API reference docs, cross-validated against the legacy adapter's full operation set to catch renamed/removed endpoints (deviceDiff -> tables/management/ changes/devices). Groups the 200+ near-identical "tables" endpoints into 32 category- and-depth operations using individual path parameters per segment, since Itential Platform's OpenAPI adapter URL-encodes slashes inside a single path parameter and would otherwise send the wrong URL for multi-segment tables. Adds 48 new workflows (Tables, Snapshots, Path Lookup, Jobs) to the existing Studio Project, alongside the untouched legacy adapter-based folders. --- IP Fabric/OpenAPIs/ip_fabric_api-latest.json | 4545 +++++++ IP Fabric/README.md | 119 +- .../Studio Projects/IP Fabric.project.json | 10425 +++++++++++++++- 3 files changed, 15025 insertions(+), 64 deletions(-) create mode 100644 IP Fabric/OpenAPIs/ip_fabric_api-latest.json diff --git a/IP Fabric/OpenAPIs/ip_fabric_api-latest.json b/IP Fabric/OpenAPIs/ip_fabric_api-latest.json new file mode 100644 index 0000000..959db45 --- /dev/null +++ b/IP Fabric/OpenAPIs/ip_fabric_api-latest.json @@ -0,0 +1,4545 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "latest", + "x-vendor-api-version": "v7.8", + "title": "IP Fabric API", + "description": "IP Fabric API provides programmatic access to network discovery, inventory, and assurance data collected by the IP Fabric platform: technology tables (routing, addressing, interfaces, security, multicast, MPLS, wireless, and more), snapshot lifecycle management, and path simulation (path lookup).\n\nAuthentication: static API token in the X-API-Token header. Generate one at Settings -> API Tokens on your IP Fabric instance.\n\nIP Fabric does not publish a standalone downloadable OpenAPI file; each instance self-generates one from its own backend (via RapiDoc at /api/rapidoc). This spec was built from IP Fabric's official public Postman collection (gitlab.com/ip-fabric/integrations/postman, version v7.8) and official API reference docs (docs.ipfabric.io), cross-validated against the legacy IP Fabric Adapter's operation set to confirm coverage and catch renamed/removed endpoints (e.g. the legacy adapter's deviceDiff now maps to /tables/management/changes/devices).\n\nSource: https://gitlab.com/ip-fabric/integrations/postman, https://docs.ipfabric.io/latest/", + "x-itential-curated": "IP Fabric's REST API has 200+ near-identical \"tables\" endpoints (one per data category, all sharing the same columns/filters/pagination/sort request shape) plus snapshot lifecycle, path simulation, and job management. Rather than modeling all 200+ tables 1:1, this spec groups them into 32 category-and-depth operations: one per top-level path segment (aci, addressing, fhrp, interfaces, inventory, management, mpls, multicast, neighbors, networks, platforms, qos, routing, security, spanning-tree, vlan, vrf, vxlan, wireless), with a separate operation per path depth within a category where needed (most tables are 1-3 segments deep beyond the category). Each operation takes the table's remaining path segments as individual path parameters (not one embedded-slash parameter, which Itential Platform's OpenAPI adapter URL-encodes and breaks) -- covering the full tables surface through a manageable, discoverable set of operations. Adds the 12-operation snapshot lifecycle, the consolidated path-lookup (graphs) endpoint, and 3 job-control operations. Excludes appliance administration (os/*, auth/*, settings/*, users/*) as out of scope for network automation, matching this repo's convention of excluding platform-admin surfaces." + }, + "servers": [ + { + "url": "https://HOSTNAME/api/v7.8" + } + ], + "security": [ + { + "apiToken": [] + } + ], + "paths": { + "/graphs": { + "post": { + "operationId": "pathLookup", + "summary": "Simulate a unicast or multicast path lookup", + "description": "Consolidated endpoint for all graph requests. For path simulation, set parameters.type to \"pathLookup\" and parameters.pathLookupType to \"unicast\" or \"multicast\", along with startingPoint/destinationPoint and related fields. See docs.ipfabric.io/latest/IP_Fabric_API/Path_Lookup/ for the full parameter reference.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "type": "string" + }, + "parameters": { + "type": "object", + "description": "Path lookup parameters. See docs.ipfabric.io/latest/IP_Fabric_API/Path_Lookup/ for the full schema.", + "properties": { + "type": { + "type": "string", + "enum": [ + "pathLookup" + ] + }, + "pathLookupType": { + "type": "string", + "enum": [ + "unicast", + "multicast" + ] + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp", + "icmp" + ] + }, + "startingPoint": { + "type": "string" + }, + "destinationPoint": { + "type": "string" + }, + "groupBy": { + "type": "string", + "enum": [ + "siteName", + "routingDomain", + "stpDomain" + ] + }, + "networkMode": { + "type": "boolean" + }, + "securedPath": { + "type": "boolean" + }, + "ttl": { + "type": "integer" + }, + "l4Options": { + "type": "object", + "properties": { + "srcPorts": { + "type": "string" + }, + "dstPorts": { + "type": "string" + }, + "flags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ack", + "fin", + "psh", + "rst", + "syn", + "urg" + ] + } + } + } + } + }, + "required": [ + "type", + "pathLookupType", + "startingPoint", + "destinationPoint" + ] + } + }, + "required": [ + "parameters" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Graph data (nodes/edges) for the simulated path" + } + } + } + }, + "/jobs/{jobId}/cancel": { + "post": { + "operationId": "cancelJob", + "summary": "Cancel Job", + "parameters": [ + { + "name": "jobId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Cancel Job" + } + } + } + }, + "/jobs/{jobId}/download": { + "get": { + "operationId": "downloadJob", + "summary": "Download Job Result", + "parameters": [ + { + "name": "jobId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Download Job Result" + } + } + } + }, + "/jobs/{jobId}/stop": { + "post": { + "operationId": "stopJob", + "summary": "Stop Job", + "parameters": [ + { + "name": "jobId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Stop Job" + } + } + } + }, + "/snapshots": { + "get": { + "operationId": "listSnapshots", + "summary": "List Snapshots", + "parameters": [], + "responses": { + "200": { + "description": "List Snapshots" + } + } + }, + "post": { + "operationId": "createSnapshot", + "summary": "Create Snapshot", + "parameters": [], + "responses": { + "200": { + "description": "Create Snapshot" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "discoveryTaskId": { + "type": "string" + } + } + } + } + } + } + } + }, + "/snapshots/{snapshotId}": { + "patch": { + "operationId": "renameSnapshot", + "summary": "Rename Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Rename Snapshot" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "note": { + "type": "string" + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSnapshot", + "summary": "Delete Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Delete Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/clone": { + "post": { + "operationId": "cloneSnapshot", + "summary": "Clone Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Clone Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/download": { + "get": { + "operationId": "downloadSnapshot", + "summary": "Download Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Download Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/load": { + "post": { + "operationId": "loadSnapshot", + "summary": "Load Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Load Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/lock": { + "post": { + "operationId": "lockSnapshot", + "summary": "Lock Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Lock Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/settings": { + "get": { + "operationId": "getSnapshotSettings", + "summary": "Get Snapshot Settings", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Get Snapshot Settings" + } + } + }, + "patch": { + "operationId": "updateSnapshotSettings", + "summary": "Update Snapshot Settings", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Update Snapshot Settings" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + } + }, + "/snapshots/{snapshotId}/unload": { + "post": { + "operationId": "unloadSnapshot", + "summary": "Unload Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Unload Snapshot" + } + } + } + }, + "/snapshots/{snapshotId}/unlock": { + "post": { + "operationId": "unlockSnapshot", + "summary": "Unlock Snapshot", + "parameters": [ + { + "name": "snapshotId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Unlock Snapshot" + } + } + } + }, + "/tables/aci/{seg1}": { + "post": { + "operationId": "queryACITable", + "summary": "Query a ACI table", + "description": "Query a ACI table under /tables/aci/ with a 1-segment path. Known tables at this depth include: endpoints, vlan, vrf. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/aci/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "ACI table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/addressing/{seg1}": { + "post": { + "operationId": "queryAddressingTable", + "summary": "Query a Addressing table (1-segment path)", + "description": "Query a Addressing table under /tables/addressing/ with a 1-segment path. Known tables at this depth include: arp, duplicate-ip, hosts, mac, managed-devs. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/addressing/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Addressing table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/addressing/{seg1}/{seg2}": { + "post": { + "operationId": "queryAddressingTable2", + "summary": "Query a Addressing table (2-segment path)", + "description": "Query a Addressing table under /tables/addressing/ with a 2-segment path. Known tables at this depth include: nat/pools, nat/rules. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/addressing/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/addressing/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Addressing table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/fhrp/{seg1}": { + "post": { + "operationId": "queryFHRPTable", + "summary": "Query a FHRP table", + "description": "Query a FHRP table under /tables/fhrp/ with a 1-segment path. Known tables at this depth include: balancing, glbp-forwarders, group-members, group-state, stproot-alignment. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/fhrp/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "FHRP table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/interfaces/{seg1}": { + "post": { + "operationId": "queryInterfacesTable", + "summary": "Query a Interfaces table (1-segment path)", + "description": "Query a Interfaces table under /tables/interfaces/ with a 1-segment path. Known tables at this depth include: duplex, load, mtu, switchports. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/interfaces/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Interfaces table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/interfaces/{seg1}/{seg2}": { + "post": { + "operationId": "queryInterfacesTable2", + "summary": "Query a Interfaces table (2-segment path)", + "description": "Query a Interfaces table under /tables/interfaces/ with a 2-segment path. Known tables at this depth include: drops/bidirectional, drops/bidirectional-device, drops/inbound, drops/inbound-device, drops/outbound, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/interfaces/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/interfaces/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Interfaces table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/interfaces/{seg1}/{seg2}/{seg3}": { + "post": { + "operationId": "queryInterfacesTable3", + "summary": "Query a Interfaces table (3-segment path)", + "description": "Query a Interfaces table under /tables/interfaces/ with a 3-segment path. Known tables at this depth include: connectivity-matrix/unmanaged-neighbors/detail, connectivity-matrix/unmanaged-neighbors/summary, port-channel/balance/inbound, port-channel/balance/outbound. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/interfaces/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/interfaces/." + }, + { + "name": "seg3", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 3 of the table path after /tables/interfaces/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Interfaces table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/inventory/{seg1}": { + "post": { + "operationId": "queryInventoryTable", + "summary": "Query a Inventory table (1-segment path)", + "description": "Query a Inventory table under /tables/inventory/ with a 1-segment path. Known tables at this depth include: devices, fans, interfaces, modules, phones, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/inventory/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Inventory table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/inventory/{seg1}/{seg2}": { + "post": { + "operationId": "queryInventoryTable2", + "summary": "Query a Inventory table (2-segment path)", + "description": "Query a Inventory table under /tables/inventory/ with a 2-segment path. Known tables at this depth include: summary/families, summary/models, summary/platforms, summary/vendors. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/inventory/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/inventory/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Inventory table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/management/{seg1}": { + "post": { + "operationId": "queryManagementTable", + "summary": "Query a Management table (1-segment path)", + "description": "Query a Management table under /tables/management/ with a 1-segment path. Known tables at this depth include: changes, discovery-runs, osver-consistency, port-mirroring. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/management/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Management table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/management/{seg1}/{seg2}": { + "post": { + "operationId": "queryManagementTable2", + "summary": "Query a Management table (2-segment path)", + "description": "Query a Management table under /tables/management/ with a 2-segment path. Known tables at this depth include: changes/devices, configuration/saved, flow/overview, logging/local, logging/remote, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/management/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/management/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Management table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/management/{seg1}/{seg2}/{seg3}": { + "post": { + "operationId": "queryManagementTable3", + "summary": "Query a Management table (3-segment path)", + "description": "Query a Management table under /tables/management/ with a 3-segment path. Known tables at this depth include: flow/netflow/collectors, flow/netflow/devices, flow/netflow/interfaces, flow/sflow/collectors, flow/sflow/devices, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/management/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/management/." + }, + { + "name": "seg3", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 3 of the table path after /tables/management/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Management table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/mpls/{seg1}": { + "post": { + "operationId": "queryMPLSTable", + "summary": "Query a MPLS table (1-segment path)", + "description": "Query a MPLS table under /tables/mpls/ with a 1-segment path. Known tables at this depth include: forwarding. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/mpls/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "MPLS table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/mpls/{seg1}/{seg2}": { + "post": { + "operationId": "queryMPLSTable2", + "summary": "Query a MPLS table (2-segment path)", + "description": "Query a MPLS table under /tables/mpls/ with a 2-segment path. Known tables at this depth include: l2-vpn/curcit-cross-connect, l2-vpn/point-to-multipoint, l2-vpn/point-to-point-vpws, l2-vpn/pseudowires, l3-vpn/pe-routers, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/mpls/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/mpls/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "MPLS table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/multicast/{seg1}": { + "post": { + "operationId": "queryMulticastTable", + "summary": "Query a Multicast table (1-segment path)", + "description": "Query a Multicast table under /tables/multicast/ with a 1-segment path. Known tables at this depth include: mac. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/multicast/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Multicast table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/multicast/{seg1}/{seg2}": { + "post": { + "operationId": "queryMulticastTable2", + "summary": "Query a Multicast table (2-segment path)", + "description": "Query a Multicast table under /tables/multicast/ with a 2-segment path. Known tables at this depth include: igmp/groups, igmp/interfaces, pim/interfaces, pim/neighbors, routes/counters, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/multicast/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/multicast/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Multicast table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/multicast/{seg1}/{seg2}/{seg3}": { + "post": { + "operationId": "queryMulticastTable3", + "summary": "Query a Multicast table (3-segment path)", + "description": "Query a Multicast table under /tables/multicast/ with a 3-segment path. Known tables at this depth include: igmp/snooping/global, igmp/snooping/groups, igmp/snooping/vlans, pim/rp/bsr, pim/rp/mappings, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/multicast/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/multicast/." + }, + { + "name": "seg3", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 3 of the table path after /tables/multicast/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Multicast table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/neighbors/{seg1}": { + "post": { + "operationId": "queryNeighborsTable", + "summary": "Query a Neighbors table", + "description": "Query a Neighbors table under /tables/neighbors/ with a 1-segment path. Known tables at this depth include: all, unidirectional, unmanaged. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/neighbors/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Neighbors table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/networks/{seg1}": { + "post": { + "operationId": "queryNetworksTable", + "summary": "Query a Networks table (1-segment path)", + "description": "Query a Networks table under /tables/networks/ with a 1-segment path. Known tables at this depth include: domain, path-lookup-checks, route-stability, routes. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/networks/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Networks table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/networks/{seg1}/{seg2}/{seg3}": { + "post": { + "operationId": "queryNetworksTable3", + "summary": "Query a Networks table (3-segment path)", + "description": "Query a Networks table under /tables/networks/ with a 3-segment path. Known tables at this depth include: summary/protocols/bgp, summary/protocols/isis, summary/protocols/ospf, summary/protocols/ospfv3. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/networks/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/networks/." + }, + { + "name": "seg3", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 3 of the table path after /tables/networks/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Networks table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/platforms/{seg1}": { + "post": { + "operationId": "queryPlatformsTable", + "summary": "Query a Platforms table (1-segment path)", + "description": "Query a Platforms table under /tables/platforms/ with a 1-segment path. Known tables at this depth include: stack. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/platforms/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Platforms table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/platforms/{seg1}/{seg2}": { + "post": { + "operationId": "queryPlatformsTable2", + "summary": "Query a Platforms table (2-segment path)", + "description": "Query a Platforms table under /tables/platforms/ with a 2-segment path. Known tables at this depth include: cluster/srx, fex/interfaces, fex/modules, poe/devices, poe/interfaces, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/platforms/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/platforms/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Platforms table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/qos/{seg1}": { + "post": { + "operationId": "queryQoSTable", + "summary": "Query a QoS table", + "description": "Query a QoS table under /tables/qos/ with a 1-segment path. Known tables at this depth include: marking, policing, policy-maps, priority-queuing, queuing, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/qos/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "QoS table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/routing/{seg1}/{seg2}/{seg3}": { + "post": { + "operationId": "queryRoutingTable3", + "summary": "Query a Routing table", + "description": "Query a Routing table under /tables/routing/ with a 3-segment path. Known tables at this depth include: protocols/bgp/address-families, protocols/bgp/neighbors, protocols/eigrp/interfaces, protocols/eigrp/neighbors, protocols/is-is/interfaces, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/routing/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/routing/." + }, + { + "name": "seg3", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 3 of the table path after /tables/routing/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Routing table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/security/{seg1}": { + "post": { + "operationId": "querySecurityTable", + "summary": "Query a Security table (1-segment path)", + "description": "Query a Security table under /tables/security/ with a 1-segment path. Known tables at this depth include: dmvpn, enabled-telnet. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/security/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Security table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/security/{seg1}/{seg2}": { + "post": { + "operationId": "querySecurityTable2", + "summary": "Query a Security table (2-segment path)", + "description": "Query a Security table under /tables/security/ with a 2-segment path. Known tables at this depth include: aaa/accounting, aaa/authentication, aaa/authorization, aaa/lines, aaa/servers, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/security/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/security/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Security table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/spanning-tree/{seg1}": { + "post": { + "operationId": "querySpanningTreeTable", + "summary": "Query a Spanning Tree table (1-segment path)", + "description": "Query a Spanning Tree table under /tables/spanning-tree/ with a 1-segment path. Known tables at this depth include: bridges, guards, instances, neighbors, ports, and others. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/spanning-tree/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Spanning Tree table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/spanning-tree/{seg1}/{seg2}": { + "post": { + "operationId": "querySpanningTreeTable2", + "summary": "Query a Spanning Tree table (2-segment path)", + "description": "Query a Spanning Tree table under /tables/spanning-tree/ with a 2-segment path. Known tables at this depth include: inconsistencies/multiple-stp, inconsistencies/neighbor-ports-vlan-mismatch, inconsistencies/ports-multiple-neighbors, inconsistencies/stp-cdp-ports-mismatch. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/spanning-tree/." + }, + { + "name": "seg2", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 2 of the table path after /tables/spanning-tree/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Spanning Tree table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/vlan/{seg1}": { + "post": { + "operationId": "queryVLANTable", + "summary": "Query a VLAN table", + "description": "Query a VLAN table under /tables/vlan/ with a 1-segment path. Known tables at this depth include: device, device-summary, l3-gateways, network-summary, site-summary. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/vlan/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "VLAN table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/vrf/{seg1}": { + "post": { + "operationId": "queryVRFTable", + "summary": "Query a VRF table", + "description": "Query a VRF table under /tables/vrf/ with a 1-segment path. Known tables at this depth include: detail, interfaces, summary. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/vrf/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "VRF table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/vxlan/{seg1}": { + "post": { + "operationId": "queryVXLANTable", + "summary": "Query a VXLAN table", + "description": "Query a VXLAN table under /tables/vxlan/ with a 1-segment path. Known tables at this depth include: interfaces, peers, vni, vtep. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/vxlan/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "VXLAN table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + }, + "/tables/wireless/{seg1}": { + "post": { + "operationId": "queryWirelessTable", + "summary": "Query a Wireless table", + "description": "Query a Wireless table under /tables/wireless/ with a 1-segment path. Known tables at this depth include: access-points, clients, controllers, radio, ssid-summary. See docs.ipfabric.io for the full table reference and valid columns per table.", + "parameters": [ + { + "name": "seg1", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Segment 1 of the table path after /tables/wireless/." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Wireless table data", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_meta": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "size": { + "type": "integer" + }, + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + }, + "snapshot": { + "type": "string" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "apiToken": { + "type": "apiKey", + "name": "X-API-Token", + "in": "header" + } + } + } +} \ No newline at end of file diff --git a/IP Fabric/README.md b/IP Fabric/README.md index 02cf382..c326f37 100644 --- a/IP Fabric/README.md +++ b/IP Fabric/README.md @@ -1,12 +1,115 @@ -# IP Fabric Assets -Assets for the Itential Platform. +IP Fabric is a network assurance platform for automated network discovery, inventory, and verification. + +This project provides an OpenAPI spec for automating against IP Fabric's REST API via an Integration Model, plus workflows built on that model. It also retains a set of pre-existing workflows built on the legacy IP Fabric adapter (snapshot creation, snapshot inventory comparison, network route comparison, service path analysis). + +## Table of Contents + +- [Contents](#contents) +- [Requirements](#requirements) +- [Integration Configuration](#integration-configuration) +- [OpenAPIs](#openapis) + - [`ip_fabric_api-latest.json`](#ip_fabric_api-latestjson) +- [Studio Projects](#studio-projects) + - [IP Fabric Project](#ip-fabric-project) + - [Folder Structure](#folder-structure) + - [Dependencies](#dependencies) + +## Contents + +| Asset | Description | +|---|---| +| [OpenAPIs/](./OpenAPIs/) | IP Fabric API OpenAPI spec, built from IP Fabric's official Postman collection and API reference docs | +| [Studio Projects/](./Studio%20Projects/) | Itential Platform project containing 48 new Integration Model workflows plus the pre-existing legacy adapter workflows | + +## Requirements + +| Requirement | Version | +|---|---| +| Itential Platform | 6.x | +| `IP Fabric API:latest` Integration Model | Required to run the Tables/Snapshots/Path Lookup/Jobs folders | +| [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric) | Required to run the Create Network Snapshot/Compare Snapshot Inventory/Analyze Service Path folders (legacy, unmigrated) | + +> **Note:** This project does not require Itential Gateway for the Integration Model-backed folders. All API calls are made directly from Itential Platform to IP Fabric's REST API. + +## Integration Configuration + +Import `ip_fabric_api-latest.json` as an Integration Model in **Admin > Integrations**, then create an integration pointing at your IP Fabric instance. + +Authentication is a static API token in a header: + +``` +X-API-Token: +``` + +Generate a token at Settings → API Tokens on your IP Fabric instance. + +The instance's `authentication`/`server` properties should look like this once configured: + +```json +{ + "authentication": { + "apiToken": { "value": "" } + }, + "server": { + "protocol": "https", + "host": ".ipfabric.io", + "base_path": "/api/v7.8" + } +} +``` + +> **Note:** IP Fabric doesn't publish a standalone downloadable OpenAPI file — each instance self-generates one from its own backend (reachable at `/api/rapidoc` on a live instance). The `servers` entry in the spec is a static placeholder (`https://HOSTNAME/api/v7.8`) since Itential Platform Integration Models require a static server URL; the actual host is configured per-instance as shown above. + +## OpenAPIs + +| Spec | Version | Operations | Description | +|---|---|---|---| +| [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) | latest (curated) | 48 | Built from IP Fabric's official Postman collection and API docs — see breakdown below | + +### `ip_fabric_api-latest.json` + +**Important context on sourcing:** IP Fabric does not publish a standalone official OpenAPI/Swagger file anywhere. Each live instance self-generates a complete `openapi.json` from its own backend, viewable via RapiDoc at `/api/rapidoc` — but that requires access to a real instance. The next-best official artifact is IP Fabric's own [public Postman collection](https://gitlab.com/ip-fabric/integrations/postman) (vendor-maintained, versioned per platform release; this spec was built from the `v7.8` collection), cross-referenced against [IP Fabric's official API reference docs](https://docs.ipfabric.io/latest/IP_Fabric_API/) for endpoints the collection didn't fully document (notably path lookup's request schema). + +This spec was also cross-validated against the legacy [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric)'s full operation set (268 operations, recovered from its auto-generated OpenAPI export) to confirm coverage and catch renamed/removed endpoints. Of note: the legacy adapter's `deviceDiff` task now maps to `POST /tables/management/changes/devices` — the old `/deviceDiff` endpoint no longer exists in the current API. + +**On the "tables" API surface:** IP Fabric's REST API has 200+ near-identical "tables" endpoints — one per data category (routing, addressing, interfaces, security, multicast, MPLS, wireless, and more), all sharing the exact same request shape (`columns`/`filters`/`attributeFilters`/`pagination`/`sort`/`snapshot`). Rather than modeling all 200+ 1:1, this spec groups them into 32 category-and-depth operations — one per top-level category (matching IP Fabric's own path taxonomy: `aci`, `addressing`, `fhrp`, `interfaces`, `inventory`, `management`, `mpls`, `multicast`, `neighbors`, `networks`, `platforms`, `qos`, `routing`, `security`, `spanning-tree`, `vlan`, `vrf`, `vxlan`, `wireless`), with a separate operation per path depth within a category where the category has tables at more than one depth (most tables are 1-3 path segments deep beyond the category name). Each operation takes the table's remaining path segments as **individual path parameters** (`seg1`, `seg2`, `seg3`) rather than one embedded-slash parameter — Itential Platform's OpenAPI adapter URL-encodes slashes within a single path parameter value, which would silently send the wrong URL to IP Fabric for any multi-segment table. + +Adds the 12-operation snapshot lifecycle, the consolidated path-lookup (`graphs`) endpoint, and 3 job-control operations. Excludes appliance administration (`os/*`, `auth/*`, `settings/*`, `users/*`) as out of scope for network automation. + +Operations included, by category: + +- **Tables**: Query any table under `ACI`, `Addressing`, `FHRP`, `Interfaces`, `Inventory`, `Management`, `MPLS`, `Multicast`, `Neighbors`, `Networks`, `Platforms`, `QoS`, `Routing`, `Security`, `Spanning Tree`, `VLAN`, `VRF`, `VXLAN`, or `Wireless` — 32 operations across those 19 categories +- **Snapshots**: List, create, rename, delete, clone, download, load, lock, unload, unlock, get/update settings +- **Path Lookup**: Simulate a unicast or multicast path between two points +- **Jobs**: Cancel, download result, stop + +## Studio Projects -## Projects ### IP Fabric Project -- Create Network Snapshot -- Compare Snapshot Inventory -- Compare Network Routes from Snapshots -- Analyze Service Path + +Backed by the **`IP Fabric API:latest`** Integration Model (see [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) above) for the new folders, plus the pre-existing legacy adapter folders. + +#### Folder Structure + +| Folder | Workflows | Scope | Backing | +|---|---|---|---| +| Tables | 32 | Query any table across 19 categories (see above) | `IP Fabric API:latest` Integration Model | +| Snapshots | 12 | Snapshot lifecycle management | `IP Fabric API:latest` Integration Model | +| Path Lookup | 1 | Unicast/multicast path simulation | `IP Fabric API:latest` Integration Model | +| Jobs | 3 | Async job control | `IP Fabric API:latest` Integration Model | +| Create Network Snapshot | 1 | Create a snapshot (legacy) | IP Fabric Adapter | +| Compare Snapshot Inventory | 2 | Diff device inventory between two snapshots (legacy) | IP Fabric Adapter | +| Analyze Service Path | 2 | Path lookup between two endpoints (legacy) | IP Fabric Adapter | +| (root) | 2 | Create Network Snapshot, Compare Network Routes From Snapshots (legacy) | IP Fabric Adapter | + +The `Cancel IP Fabric Job` workflow is prefixed to avoid colliding with an identically-named workflow already published for another product — workflow names are unique across the whole Itential Platform instance, not scoped per-project. #### Dependencies -- [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric) + +| Dependency | Notes | +|---|---| +| `IP Fabric API:latest` Integration Model | Import from [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) before importing the project. Backs the Tables, Snapshots, Path Lookup, and Jobs folders. | +| `IP Fabric` integration instance | Create in **Admin > Integrations** with the connection properties above. Workflows are wired to an integration instance named `IP Fabric` — update the `adapter_id` value in each workflow task if yours is named differently | +| [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric) | Required for the legacy folders (unmigrated) | + +**Testing status:** all 48 new workflows were created and schema-validated against a running Itential Platform instance. The multi-segment path-parameter approach was verified against a live HTTP echo endpoint to confirm segments are sent unencoded. No IP Fabric test instance was available for this pass, so none have been executed against a real account. diff --git a/IP Fabric/Studio Projects/IP Fabric.project.json b/IP Fabric/Studio Projects/IP Fabric.project.json index 167efb0..abc13c2 100644 --- a/IP Fabric/Studio Projects/IP Fabric.project.json +++ b/IP Fabric/Studio Projects/IP Fabric.project.json @@ -1,7 +1,7 @@ { "_id": "66cf772321161b4df271748f", "name": "IP Fabric", - "description": "IP Fabric asset includes create network snapshot, compare snapshot inventory, compare network routes from snapshots, and analyze service path.", + "description": "IP Fabric asset includes create network snapshot, compare snapshot inventory, compare network routes from snapshots, and analyze service path.. Also includes Tables, Snapshots, Path Lookup, and Jobs workflows backed by the IP Fabric API Integration Model (v7.8).", "components": [ { "iid": 0, @@ -200,16 +200,32 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] } }, - "required": ["adapterId"] + "required": [ + "adapterId" + ] }, "outputSchema": { "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "_id": { "type": "string", @@ -438,7 +454,9 @@ "variables": { "incoming": { "body": { - "columns": ["id"], + "columns": [ + "id" + ], "filters": {}, "snapshot": "$last" }, @@ -468,7 +486,9 @@ "variables": { "incoming": { "body": { - "columns": ["id"], + "columns": [ + "id" + ], "filters": {}, "snapshot": "$prev" }, @@ -583,16 +603,32 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] } }, - "required": ["adapterId"] + "required": [ + "adapterId" + ] }, "outputSchema": { "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "_id": { "type": "string", @@ -623,7 +659,9 @@ "type": "null" } ], - "examples": ["value"] + "examples": [ + "value" + ] }, "devicesAdded": { "title": "return_data", @@ -647,7 +685,9 @@ "type": "null" } ], - "examples": ["value"] + "examples": [ + "value" + ] } } }, @@ -809,16 +849,44 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "snapshotName": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "snapshotNote": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "credentials": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] } }, "required": [ @@ -832,16 +900,44 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "snapshotName": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "snapshotNote": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "credentials": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "_id": { "type": "string", @@ -851,7 +947,14 @@ "type": "string" }, "snapshotDetails": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] } } }, @@ -1459,7 +1562,14 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "source": { "type": "string" @@ -1490,7 +1600,14 @@ "type": "object", "properties": { "adapterId": { - "type": ["array", "boolean", "null", "number", "object", "string"] + "type": [ + "array", + "boolean", + "null", + "number", + "object", + "string" + ] }, "source": { "type": "string" @@ -1592,7 +1709,13 @@ "library": "String", "method": "templateLiteral", "template": "{\n \"parameters\": {\n \"destinationPoint\": \"${destinationPoint}\",\n \"groupBy\": \"siteName\",\n \"networkMode\": false,\n \"pathLookupType\": \"unicast\",\n \"securedPath\": false,\n \"startingPoint\": \"${startingPoint}\",\n \"type\": \"pathLookup\",\n \"firstHopAlgorithm\": {\n \"type\": \"automatic\"\n },\n \"protocol\": \"${protocol}\",\n \"srcRegions\": \".*\",\n \"dstRegions\": \".*\",\n \"enableRegions\": false,\n \"ttl\": 128,\n \"fragmentOffset\": 0,\n \"otherOptions\": {\n \"applications\": \".*\",\n \"tracked\": false\n },\n \"l4Options\": {\n \"dstPorts\": \"${dstPorts}\",\n \"srcPorts\": \"${srcPorts}\",\n \"flags\": []\n }\n },\n \"snapshot\": \"$last\"\n}", - "args": [null, null, null, null, null], + "args": [ + null, + null, + null, + null, + null + ], "view": { "row": 2, "col": 1 @@ -1603,7 +1726,10 @@ "type": "method", "library": "JSON", "method": "parse", - "args": [null, null], + "args": [ + null, + null + ], "view": { "row": 2, "col": 2 @@ -1749,19 +1875,25 @@ { "$id": "snapshotidlast", "type": "string", - "examples": ["snap1"] + "examples": [ + "snap1" + ] }, { "$id": "snapshotidprev", "type": "string", - "examples": ["snap2"] + "examples": [ + "snap2" + ] } ], "outgoing": [ { "$id": "snapshotidlast", "type": "string", - "examples": ["snap1"] + "examples": [ + "snap1" + ] }, { "$id": "payload", @@ -1777,7 +1909,10 @@ "library": "String", "method": "templateLiteral", "template": "{\n \"columns\": [\n \"hostname\",\n \"loginIp\",\n \"version\",\n \"uptime\",\n \"status\"\n ],\n \"bindVariables\": {\n \"after\": \"${lastSnap}\",\n \"before\": \"${prevSnap}\"\n },\n \"filters\": {}\n}", - "args": [null, null], + "args": [ + null, + null + ], "view": { "row": 2, "col": 2 @@ -1816,7 +1951,10 @@ "type": "method", "library": "JSON", "method": "parse", - "args": [null, null], + "args": [ + null, + null + ], "view": { "row": 2, "col": 3 @@ -1886,44 +2024,10219 @@ "version": "4.3.6-2023.2.5", "tags": [] } - } - ], - "folders": [ - { - "iid": 2, - "nodeType": "component" }, { - "nodeType": "folder", - "name": "Compare Snapshot Inventory", - "children": [ - { - "iid": 1, - "nodeType": "component" + "iid": 6, + "reference": "b53d3de8-ae17-4e16-9eee-dcefcea3be19", + "type": "workflow", + "folder": "/Path Lookup", + "document": { + "name": "Simulate a unicast or multicast path lookup", + "description": "Simulate a unicast or multicast path lookup", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "pathLookup", + "canvasName": "pathLookup", + "summary": "pathLookup", + "description": "pathLookup", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } }, - { - "iid": 5, - "nodeType": "component" - } - ] + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "snapshot": { + "type": "string" + }, + "parameters": { + "type": "object", + "description": "Path lookup parameters. See docs.ipfabric.io/latest/IP_Fabric_API/Path_Lookup/ for the full schema.", + "properties": { + "type": { + "type": "string", + "enum": [ + "pathLookup" + ] + }, + "pathLookupType": { + "type": "string", + "enum": [ + "unicast", + "multicast" + ] + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp", + "icmp" + ] + }, + "startingPoint": { + "type": "string" + }, + "destinationPoint": { + "type": "string" + }, + "groupBy": { + "type": "string", + "enum": [ + "siteName", + "routingDomain", + "stpDomain" + ] + }, + "networkMode": { + "type": "boolean" + }, + "securedPath": { + "type": "boolean" + }, + "ttl": { + "type": "integer" + }, + "l4Options": { + "type": "object", + "properties": { + "srcPorts": { + "type": "string" + }, + "dstPorts": { + "type": "string" + }, + "flags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ack", + "fin", + "psh", + "rst", + "syn", + "urg" + ] + } + } + } + } + }, + "required": [ + "type", + "pathLookupType", + "startingPoint", + "destinationPoint" + ] + } + }, + "required": [ + "parameters" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "snapshot": { + "type": "string" + }, + "parameters": { + "type": "object", + "description": "Path lookup parameters. See docs.ipfabric.io/latest/IP_Fabric_API/Path_Lookup/ for the full schema.", + "properties": { + "type": { + "type": "string", + "enum": [ + "pathLookup" + ] + }, + "pathLookupType": { + "type": "string", + "enum": [ + "unicast", + "multicast" + ] + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp", + "icmp" + ] + }, + "startingPoint": { + "type": "string" + }, + "destinationPoint": { + "type": "string" + }, + "groupBy": { + "type": "string", + "enum": [ + "siteName", + "routingDomain", + "stpDomain" + ] + }, + "networkMode": { + "type": "boolean" + }, + "securedPath": { + "type": "boolean" + }, + "ttl": { + "type": "integer" + }, + "l4Options": { + "type": "object", + "properties": { + "srcPorts": { + "type": "string" + }, + "dstPorts": { + "type": "string" + }, + "flags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ack", + "fin", + "psh", + "rst", + "syn", + "urg" + ] + } + } + } + } + }, + "required": [ + "type", + "pathLookupType", + "startingPoint", + "destinationPoint" + ] + } + }, + "required": [ + "parameters" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "92adb4e2-35ce-4ffe-ae20-1d935934dd8a", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } }, { - "iid": 0, - "nodeType": "component" + "iid": 7, + "reference": "92d7915b-a338-4167-894b-cd63a27cc684", + "type": "workflow", + "folder": "/Jobs", + "document": { + "name": "Cancel IP Fabric Job", + "description": "Cancel IP Fabric Job", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "cancelJob", + "canvasName": "cancelJob", + "summary": "cancelJob", + "description": "cancelJob", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "jobId": "$var.job.jobId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + }, + "required": [ + "jobId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "fdfe91f8-93be-4aad-948e-3322f118ecc8", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } }, { - "nodeType": "folder", - "name": "Analyze Service Path", - "children": [ - { - "iid": 3, - "nodeType": "component" + "iid": 8, + "reference": "91880384-984a-4ae5-8799-a89cec2b60d0", + "type": "workflow", + "folder": "/Jobs", + "document": { + "name": "Download Job Result", + "description": "Download Job Result", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "downloadJob", + "canvasName": "downloadJob", + "summary": "downloadJob", + "description": "downloadJob", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "jobId": "$var.job.jobId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } }, - { + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + }, + "required": [ + "jobId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "86605eb7-451e-43a4-bb52-34905557b0fa", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 9, + "reference": "1241652d-90d3-46fc-9f62-b618cfa67e6b", + "type": "workflow", + "folder": "/Jobs", + "document": { + "name": "Stop Job", + "description": "Stop Job", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "stopJob", + "canvasName": "stopJob", + "summary": "stopJob", + "description": "stopJob", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "jobId": "$var.job.jobId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + } + }, + "required": [ + "jobId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "520f48bb-4d49-452f-8041-297e55f59229", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 10, + "reference": "05bfd601-8864-489f-8499-ed9dd709f273", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "List Snapshots", + "description": "List Snapshots", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "listSnapshots", + "canvasName": "listSnapshots", + "summary": "listSnapshots", + "description": "listSnapshots", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": {} + }, + "outputSchema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "bf66a16b-c59d-4111-a41b-ed9181bc158e", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 11, + "reference": "4bd665f6-902f-4e68-a4d1-4866fa8b4542", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Create Snapshot", + "description": "Create Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "createSnapshot", + "canvasName": "createSnapshot", + "summary": "createSnapshot", + "description": "createSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "discoveryTaskId": { + "type": "string" + } + } + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "discoveryTaskId": { + "type": "string" + } + } + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "e943c82b-b7c9-4374-805e-f76e349ca408", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 12, + "reference": "8d695195-343f-41c3-baa3-df64e61dc3f7", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Rename Snapshot", + "description": "Rename Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "renameSnapshot", + "canvasName": "renameSnapshot", + "summary": "renameSnapshot", + "description": "renameSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "note": { + "type": "string" + } + } + } + }, + "required": [ + "snapshotId", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "note": { + "type": "string" + } + } + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "958d1523-3310-4c1c-bd3a-f162426ba50d", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 13, + "reference": "5222453a-4943-4794-83ed-ec201e31350d", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Delete Snapshot", + "description": "Delete Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "deleteSnapshot", + "canvasName": "deleteSnapshot", + "summary": "deleteSnapshot", + "description": "deleteSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "4cd4b35f-19e0-4f65-936d-88eca363e2e7", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 14, + "reference": "4943f048-f5f5-492c-a7d4-0357479d31e3", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Clone Snapshot", + "description": "Clone Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "cloneSnapshot", + "canvasName": "cloneSnapshot", + "summary": "cloneSnapshot", + "description": "cloneSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "b8e98ca3-df0f-4f83-b31c-9fb716ce4b14", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 15, + "reference": "f2e6af32-e715-4573-942d-67d49785a28d", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Download Snapshot", + "description": "Download Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "downloadSnapshot", + "canvasName": "downloadSnapshot", + "summary": "downloadSnapshot", + "description": "downloadSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "44b34ca8-51f6-4b45-8adb-5a31a852d0e4", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 16, + "reference": "03cb84d9-2e60-4813-a482-0ac819b70683", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Load Snapshot", + "description": "Load Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "loadSnapshot", + "canvasName": "loadSnapshot", + "summary": "loadSnapshot", + "description": "loadSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "c59b240b-e06a-4b5b-875b-9c1f78604137", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 17, + "reference": "f1b310ec-5d58-4ef1-b4ad-f2c5caaabdc8", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Lock Snapshot", + "description": "Lock Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "lockSnapshot", + "canvasName": "lockSnapshot", + "summary": "lockSnapshot", + "description": "lockSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "e0f3c0c8-f82a-4099-a5ae-9bcb4a3ff31c", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 18, + "reference": "86f8adf0-fadc-4b24-acc5-f0e5949abffa", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Get Snapshot Settings", + "description": "Get Snapshot Settings", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "getSnapshotSettings", + "canvasName": "getSnapshotSettings", + "summary": "getSnapshotSettings", + "description": "getSnapshotSettings", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "c1de4ced-fc45-4313-b3db-326cc2477410", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 19, + "reference": "097458fa-ae86-4c08-8d2a-e8e9f58a0eff", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Update Snapshot Settings", + "description": "Update Snapshot Settings", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "updateSnapshotSettings", + "canvasName": "updateSnapshotSettings", + "summary": "updateSnapshotSettings", + "description": "updateSnapshotSettings", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "spec": { + "type": "object" + } + }, + "required": [ + "snapshotId", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "spec": { + "type": "object" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "3d93ad60-9d8c-4f75-b3db-a314936191bd", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 20, + "reference": "f8652874-b801-4ad6-9ec3-9a71c4f7602e", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Unload Snapshot", + "description": "Unload Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "unloadSnapshot", + "canvasName": "unloadSnapshot", + "summary": "unloadSnapshot", + "description": "unloadSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "95b6ab1b-6dc3-4d1f-8b4b-da3bf194d151", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 21, + "reference": "7bf0cfee-ae8c-441d-9d0b-867f21c2ae4a", + "type": "workflow", + "folder": "/Snapshots", + "document": { + "name": "Unlock Snapshot", + "description": "Unlock Snapshot", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "unlockSnapshot", + "canvasName": "unlockSnapshot", + "summary": "unlockSnapshot", + "description": "unlockSnapshot", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "snapshotId": "$var.job.snapshotId" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + } + }, + "required": [ + "snapshotId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "snapshotId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "c601bf5a-64ac-4c0e-ab9d-3d32e1e9af23", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 22, + "reference": "c9340483-82ec-4dc6-bb0d-a9db9f9f9ee1", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query ACI Table", + "description": "Query ACI Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryACITable", + "canvasName": "queryACITable", + "summary": "queryACITable", + "description": "queryACITable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "fbbc23cf-ee66-407b-8dae-113a31b19170", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 23, + "reference": "e6fd7729-2369-4099-b2c5-e8d2516ffa37", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Addressing Table", + "description": "Query Addressing Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryAddressingTable", + "canvasName": "queryAddressingTable", + "summary": "queryAddressingTable", + "description": "queryAddressingTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "56578766-ab6c-4485-a71c-bcd2f0a3e136", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 24, + "reference": "bbe78840-8625-4894-807d-e72f75524150", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Addressing Table (2-Segment)", + "description": "Query Addressing Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryAddressingTable2", + "canvasName": "queryAddressingTable2", + "summary": "queryAddressingTable2", + "description": "queryAddressingTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "61a4a0a3-c801-4d31-80aa-34b0f7e6e76e", + "created": "2026-08-13T05:19:32.794Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 25, + "reference": "39e476c9-33e3-4412-af4e-014d70d8cefd", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query FHRP Table", + "description": "Query FHRP Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryFHRPTable", + "canvasName": "queryFHRPTable", + "summary": "queryFHRPTable", + "description": "queryFHRPTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "479f1e83-6da2-4370-8cb2-9148e8f2124f", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 26, + "reference": "be5e59e1-f107-4936-b921-111fa968c75c", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Interfaces Table", + "description": "Query Interfaces Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryInterfacesTable", + "canvasName": "queryInterfacesTable", + "summary": "queryInterfacesTable", + "description": "queryInterfacesTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "67d4bf62-244a-4298-98a1-fe6a89c6d74c", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 27, + "reference": "94f09eee-4e20-4671-895e-b2c69f91b350", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Interfaces Table (2-Segment)", + "description": "Query Interfaces Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryInterfacesTable2", + "canvasName": "queryInterfacesTable2", + "summary": "queryInterfacesTable2", + "description": "queryInterfacesTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "eb5f49b2-4db8-49ca-a59d-794d61cb0a5f", + "created": "2026-08-13T05:19:32.879Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 28, + "reference": "e075b362-8c0c-45eb-94e2-f5a67acc0f20", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Interfaces Table (3-Segment)", + "description": "Query Interfaces Table (3-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryInterfacesTable3", + "canvasName": "queryInterfacesTable3", + "summary": "queryInterfacesTable3", + "description": "queryInterfacesTable3", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "seg3": "$var.job.seg3", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "seg3", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "17e77e19-cd5b-43a0-87b0-bc35989bd587", + "created": "2026-08-13T05:19:32.910Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 29, + "reference": "98390146-34ae-43f4-80e1-3189dde4a013", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Inventory Table", + "description": "Query Inventory Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryInventoryTable", + "canvasName": "queryInventoryTable", + "summary": "queryInventoryTable", + "description": "queryInventoryTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "df8b14ad-7a4b-4be5-bf3c-ae9e37b15438", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 30, + "reference": "be36a694-1a9d-429d-997a-a0a41e926ab0", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Inventory Table (2-Segment)", + "description": "Query Inventory Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryInventoryTable2", + "canvasName": "queryInventoryTable2", + "summary": "queryInventoryTable2", + "description": "queryInventoryTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "076a3d7a-f30e-4bb7-9375-c83b37259991", + "created": "2026-08-13T05:19:32.965Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 31, + "reference": "836b8539-a2a2-4539-ab53-60ac959593b1", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Management Table", + "description": "Query Management Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryManagementTable", + "canvasName": "queryManagementTable", + "summary": "queryManagementTable", + "description": "queryManagementTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "08145407-017b-4f2b-8388-69ec48c8f62a", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 32, + "reference": "e6009a51-b4be-4cd4-bc90-b8df4581edd8", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Management Table (2-Segment)", + "description": "Query Management Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryManagementTable2", + "canvasName": "queryManagementTable2", + "summary": "queryManagementTable2", + "description": "queryManagementTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "b6eea877-da15-42d3-ae28-442ded695985", + "created": "2026-08-13T05:19:33.021Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 33, + "reference": "97097b08-1b27-4034-b757-b6b23afebd9e", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Management Table (3-Segment)", + "description": "Query Management Table (3-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryManagementTable3", + "canvasName": "queryManagementTable3", + "summary": "queryManagementTable3", + "description": "queryManagementTable3", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "seg3": "$var.job.seg3", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "seg3", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "13d65633-2604-4967-a68a-c71777664651", + "created": "2026-08-13T05:19:33.052Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 34, + "reference": "b3906030-3866-4fc8-93f0-e500a6f10d9d", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query MPLS Table", + "description": "Query MPLS Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryMPLSTable", + "canvasName": "queryMPLSTable", + "summary": "queryMPLSTable", + "description": "queryMPLSTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "570df1af-cf4c-40ff-a911-501bdb1849c8", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 35, + "reference": "89387ae8-a2e7-4106-bd12-d5b19241cb5d", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query MPLS Table (2-Segment)", + "description": "Query MPLS Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryMPLSTable2", + "canvasName": "queryMPLSTable2", + "summary": "queryMPLSTable2", + "description": "queryMPLSTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "28104993-829d-40d6-b5ed-98697f7c325e", + "created": "2026-08-13T05:19:33.118Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 36, + "reference": "109c0294-974e-4dec-b171-490c76f2a31a", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Multicast Table", + "description": "Query Multicast Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryMulticastTable", + "canvasName": "queryMulticastTable", + "summary": "queryMulticastTable", + "description": "queryMulticastTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "20b613bc-ba58-4f0e-afcc-3aa719b02cc3", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 37, + "reference": "505f4154-9821-443b-b9a6-e5e6852eb20e", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Multicast Table (2-Segment)", + "description": "Query Multicast Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryMulticastTable2", + "canvasName": "queryMulticastTable2", + "summary": "queryMulticastTable2", + "description": "queryMulticastTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "07f7c9d1-7101-47a0-9ded-066f11ebd8df", + "created": "2026-08-13T05:19:33.209Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 38, + "reference": "15c0bbce-9695-4ebb-8850-be2de414bbe9", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Multicast Table (3-Segment)", + "description": "Query Multicast Table (3-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryMulticastTable3", + "canvasName": "queryMulticastTable3", + "summary": "queryMulticastTable3", + "description": "queryMulticastTable3", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "seg3": "$var.job.seg3", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "seg3", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "ad29ecb8-c15a-4443-8fa2-82be2c0990c6", + "created": "2026-08-13T05:19:33.237Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 39, + "reference": "efac1150-2b58-47f6-a59b-cd401a1580fe", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Neighbors Table", + "description": "Query Neighbors Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryNeighborsTable", + "canvasName": "queryNeighborsTable", + "summary": "queryNeighborsTable", + "description": "queryNeighborsTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "2dc8eb2f-6212-40e9-87ea-59889abf0679", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 40, + "reference": "d79dae9f-99fb-458a-a443-9709549a7c44", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Networks Table", + "description": "Query Networks Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryNetworksTable", + "canvasName": "queryNetworksTable", + "summary": "queryNetworksTable", + "description": "queryNetworksTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "fd0cbbdf-bffe-4b34-a4b1-d8a4297a90d6", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 41, + "reference": "bc06358a-dc5e-4c99-bc84-081ade3e1747", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Networks Table (3-Segment)", + "description": "Query Networks Table (3-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryNetworksTable3", + "canvasName": "queryNetworksTable3", + "summary": "queryNetworksTable3", + "description": "queryNetworksTable3", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "seg3": "$var.job.seg3", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "seg3", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "49c41e0a-214d-44be-b1ef-63b56d4f7810", + "created": "2026-08-13T05:19:33.323Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 42, + "reference": "6879f712-db24-4e03-900f-dbf635fc14e9", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Platforms Table", + "description": "Query Platforms Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryPlatformsTable", + "canvasName": "queryPlatformsTable", + "summary": "queryPlatformsTable", + "description": "queryPlatformsTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "7c0b7889-5827-4e47-8162-3d3f570c02cc", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 43, + "reference": "e37192ee-d050-4b23-92f8-0e4e344710ac", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Platforms Table (2-Segment)", + "description": "Query Platforms Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryPlatformsTable2", + "canvasName": "queryPlatformsTable2", + "summary": "queryPlatformsTable2", + "description": "queryPlatformsTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "88a7e846-89d7-4c1d-9fea-11c169fae3ba", + "created": "2026-08-13T05:19:33.377Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 44, + "reference": "514a1a19-9165-4113-9eb8-6f99433a9f15", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query QoS Table", + "description": "Query QoS Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryQoSTable", + "canvasName": "queryQoSTable", + "summary": "queryQoSTable", + "description": "queryQoSTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "0ef76f27-c672-49b4-8663-dbe6c07ef1ed", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 45, + "reference": "8a85dd2e-f24d-4f46-9f73-b772899b005c", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Routing Table (3-Segment)", + "description": "Query Routing Table (3-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryRoutingTable3", + "canvasName": "queryRoutingTable3", + "summary": "queryRoutingTable3", + "description": "queryRoutingTable3", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "seg3": "$var.job.seg3", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "seg3", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "seg3": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "d46ec283-9162-403c-92a2-9ff6712c40ac", + "created": "2026-08-13T05:19:33.430Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 46, + "reference": "bf219a31-c325-4b09-8286-c752d10dfe77", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Security Table", + "description": "Query Security Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "querySecurityTable", + "canvasName": "querySecurityTable", + "summary": "querySecurityTable", + "description": "querySecurityTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "81667ba6-991f-4ad5-9b3c-02fdee791a08", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 47, + "reference": "ed6aecc5-dfe4-4736-bd12-5400c92f780d", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Security Table (2-Segment)", + "description": "Query Security Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "querySecurityTable2", + "canvasName": "querySecurityTable2", + "summary": "querySecurityTable2", + "description": "querySecurityTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "a666d94f-2644-4281-9f72-9752912dc274", + "created": "2026-08-13T05:19:33.483Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 48, + "reference": "13cd575b-a753-4fc9-bab3-d0bd0dc618a1", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Spanning Tree Table", + "description": "Query Spanning Tree Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "querySpanningTreeTable", + "canvasName": "querySpanningTreeTable", + "summary": "querySpanningTreeTable", + "description": "querySpanningTreeTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "b6c7d9a2-d0f5-4350-89c2-003b1e7e4d9d", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 49, + "reference": "5ea3a013-3d5d-4430-9d7d-e95cfa6127e9", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Spanning Tree Table (2-Segment)", + "description": "Query Spanning Tree Table (2-Segment)", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "querySpanningTreeTable2", + "canvasName": "querySpanningTreeTable2", + "summary": "querySpanningTreeTable2", + "description": "querySpanningTreeTable2", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "seg2": "$var.job.seg2", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "seg2", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "seg2": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "1d08ce8f-dd2d-4600-8ac0-54abe1008a36", + "created": "2026-08-13T05:19:33.537Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 50, + "reference": "9de5a861-6a84-4784-844f-25b35d3476df", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query VLAN Table", + "description": "Query VLAN Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryVLANTable", + "canvasName": "queryVLANTable", + "summary": "queryVLANTable", + "description": "queryVLANTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "8e07c8ae-9480-43e1-9aed-83c551766950", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 51, + "reference": "5b6d3a57-ad89-4234-8597-1a5d8d9a12b6", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query VRF Table", + "description": "Query VRF Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryVRFTable", + "canvasName": "queryVRFTable", + "summary": "queryVRFTable", + "description": "queryVRFTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "1ed40842-e588-4d63-97d1-0882fbfe1fff", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 52, + "reference": "d13aadec-a571-4eea-acfa-0d1f36b39651", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query VXLAN Table", + "description": "Query VXLAN Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryVXLANTable", + "canvasName": "queryVXLANTable", + "summary": "queryVXLANTable", + "description": "queryVXLANTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "684af1c4-5c7e-4a4f-a45f-90a881b88ab2", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 53, + "reference": "9fa48339-077d-46ee-9584-e282bcaba96f", + "type": "workflow", + "folder": "/Tables", + "document": { + "name": "Query Wireless Table", + "description": "Query Wireless Table", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "queryWirelessTable", + "canvasName": "queryWirelessTable", + "summary": "queryWirelessTable", + "description": "queryWirelessTable", + "location": "Adapter", + "locationType": "IP Fabric API:latest", + "app": "IP Fabric API:latest", + "type": "automatic", + "displayName": "IP Fabric", + "variables": { + "incoming": { + "adapter_id": "IP Fabric", + "seg1": "$var.job.seg1", + "bodyContentType": "application/json", + "requestBodyPayload": "$var.job.spec" + }, + "outgoing": { + "response": null + }, + "error": "", + "decorators": [] + }, + "groups": [], + "actor": "Pronghorn", + "scheduled": false, + "nodeLocation": { + "x": 264, + "y": 150 + } + }, + "workflow_end": { + "name": "workflow_end", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 300 + } + } + }, + "transitions": { + "workflow_start": { + "a1a1": { + "type": "standard", + "state": "success" + } + }, + "a1a1": { + "workflow_end": { + "type": "standard", + "state": "success" + } + }, + "workflow_end": {} + }, + "inputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + } + }, + "required": [ + "seg1", + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "seg1": { + "type": "string" + }, + "spec": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Column names to return. Valid values vary per table; see the IP Fabric API reference for the specific table." + }, + "filters": { + "type": "object", + "description": "Column filter expressions, e.g. {\"hostname\": [\"eq\", \"value\"]}." + }, + "attributeFilters": { + "type": "object", + "description": "Attribute-based filters, e.g. {\"siteName\": [\"SiteName\"]}." + }, + "pagination": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "limit": { + "type": "integer" + } + } + }, + "sort": { + "type": "object", + "properties": { + "column": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "snapshot": { + "type": "string", + "description": "Snapshot ID, or \"$last\"/\"$prev\"/\"$lastLocked\"." + }, + "reports": { + "type": "string", + "description": "GUI report path this table corresponds to, for reference (optional)." + } + }, + "required": [ + "columns" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-13T05:20:07.172Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "created": "1970-01-01T00:00:00.000Z", + "createdVersion": "5.55.5", + "scenarios": [], + "uuid": "ab7bf651-144c-4f0d-9a6f-a39a00d1efa5", + "canvasVersion": 3, + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + } + ], + "folders": [ + { + "iid": 2, + "nodeType": "component" + }, + { + "nodeType": "folder", + "name": "Compare Snapshot Inventory", + "children": [ + { + "iid": 1, + "nodeType": "component" + }, + { + "iid": 5, + "nodeType": "component" + } + ] + }, + { + "iid": 0, + "nodeType": "component" + }, + { + "nodeType": "folder", + "name": "Analyze Service Path", + "children": [ + { + "iid": 3, + "nodeType": "component" + }, + { "iid": 4, "nodeType": "component" } ] + }, + { + "nodeType": "folder", + "name": "Path Lookup", + "children": [ + { + "iid": 6, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Jobs", + "children": [ + { + "iid": 7, + "nodeType": "component" + }, + { + "iid": 8, + "nodeType": "component" + }, + { + "iid": 9, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Snapshots", + "children": [ + { + "iid": 10, + "nodeType": "component" + }, + { + "iid": 11, + "nodeType": "component" + }, + { + "iid": 12, + "nodeType": "component" + }, + { + "iid": 13, + "nodeType": "component" + }, + { + "iid": 14, + "nodeType": "component" + }, + { + "iid": 15, + "nodeType": "component" + }, + { + "iid": 16, + "nodeType": "component" + }, + { + "iid": 17, + "nodeType": "component" + }, + { + "iid": 18, + "nodeType": "component" + }, + { + "iid": 19, + "nodeType": "component" + }, + { + "iid": 20, + "nodeType": "component" + }, + { + "iid": 21, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Tables", + "children": [ + { + "iid": 22, + "nodeType": "component" + }, + { + "iid": 23, + "nodeType": "component" + }, + { + "iid": 24, + "nodeType": "component" + }, + { + "iid": 25, + "nodeType": "component" + }, + { + "iid": 26, + "nodeType": "component" + }, + { + "iid": 27, + "nodeType": "component" + }, + { + "iid": 28, + "nodeType": "component" + }, + { + "iid": 29, + "nodeType": "component" + }, + { + "iid": 30, + "nodeType": "component" + }, + { + "iid": 31, + "nodeType": "component" + }, + { + "iid": 32, + "nodeType": "component" + }, + { + "iid": 33, + "nodeType": "component" + }, + { + "iid": 34, + "nodeType": "component" + }, + { + "iid": 35, + "nodeType": "component" + }, + { + "iid": 36, + "nodeType": "component" + }, + { + "iid": 37, + "nodeType": "component" + }, + { + "iid": 38, + "nodeType": "component" + }, + { + "iid": 39, + "nodeType": "component" + }, + { + "iid": 40, + "nodeType": "component" + }, + { + "iid": 41, + "nodeType": "component" + }, + { + "iid": 42, + "nodeType": "component" + }, + { + "iid": 43, + "nodeType": "component" + }, + { + "iid": 44, + "nodeType": "component" + }, + { + "iid": 45, + "nodeType": "component" + }, + { + "iid": 46, + "nodeType": "component" + }, + { + "iid": 47, + "nodeType": "component" + }, + { + "iid": 48, + "nodeType": "component" + }, + { + "iid": 49, + "nodeType": "component" + }, + { + "iid": 50, + "nodeType": "component" + }, + { + "iid": 51, + "nodeType": "component" + }, + { + "iid": 52, + "nodeType": "component" + }, + { + "iid": 53, + "nodeType": "component" + } + ] } ], "created": "2024-08-28T19:14:43.916Z", @@ -1941,4 +12254,4 @@ "iid": 65, "thumbnail": "data:image/png;base64,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", "backgroundColor": "#FFFFFF" -} +} \ No newline at end of file From 5b4e6d7f2af31b3022a08cdcf85341d8d979fa31 Mon Sep 17 00:00:00 2001 From: Michael Elrom Date: Thu, 13 Aug 2026 10:48:00 -0400 Subject: [PATCH 2/2] feat(ip-fabric): drop legacy adapter workflows, fully migrate to Integration Model Removes the 6 workflows/root components still on the legacy IP Fabric Adapter (Create Network Snapshot, Compare Snapshot Inventory, Compare Network Routes From Snapshots, Analyze Service Path, and their payload helper tasks) along with all adapter references in the README and spec, so the project is fully Integration Model-based. --- IP Fabric/OpenAPIs/ip_fabric_api-latest.json | 2 +- IP Fabric/README.md | 40 +- .../Studio Projects/IP Fabric.project.json | 2060 +---------------- 3 files changed, 15 insertions(+), 2087 deletions(-) diff --git a/IP Fabric/OpenAPIs/ip_fabric_api-latest.json b/IP Fabric/OpenAPIs/ip_fabric_api-latest.json index 959db45..7907d5c 100644 --- a/IP Fabric/OpenAPIs/ip_fabric_api-latest.json +++ b/IP Fabric/OpenAPIs/ip_fabric_api-latest.json @@ -4,7 +4,7 @@ "version": "latest", "x-vendor-api-version": "v7.8", "title": "IP Fabric API", - "description": "IP Fabric API provides programmatic access to network discovery, inventory, and assurance data collected by the IP Fabric platform: technology tables (routing, addressing, interfaces, security, multicast, MPLS, wireless, and more), snapshot lifecycle management, and path simulation (path lookup).\n\nAuthentication: static API token in the X-API-Token header. Generate one at Settings -> API Tokens on your IP Fabric instance.\n\nIP Fabric does not publish a standalone downloadable OpenAPI file; each instance self-generates one from its own backend (via RapiDoc at /api/rapidoc). This spec was built from IP Fabric's official public Postman collection (gitlab.com/ip-fabric/integrations/postman, version v7.8) and official API reference docs (docs.ipfabric.io), cross-validated against the legacy IP Fabric Adapter's operation set to confirm coverage and catch renamed/removed endpoints (e.g. the legacy adapter's deviceDiff now maps to /tables/management/changes/devices).\n\nSource: https://gitlab.com/ip-fabric/integrations/postman, https://docs.ipfabric.io/latest/", + "description": "IP Fabric API provides programmatic access to network discovery, inventory, and assurance data collected by the IP Fabric platform: technology tables (routing, addressing, interfaces, security, multicast, MPLS, wireless, and more), snapshot lifecycle management, and path simulation (path lookup).\n\nAuthentication: static API token in the X-API-Token header. Generate one at Settings -> API Tokens on your IP Fabric instance.\n\nIP Fabric does not publish a standalone downloadable OpenAPI file; each instance self-generates one from its own backend (via RapiDoc at /api/rapidoc). This spec was built from IP Fabric's official public Postman collection (gitlab.com/ip-fabric/integrations/postman, version v7.8) and official API reference docs (docs.ipfabric.io).\n\nSource: https://gitlab.com/ip-fabric/integrations/postman, https://docs.ipfabric.io/latest/", "x-itential-curated": "IP Fabric's REST API has 200+ near-identical \"tables\" endpoints (one per data category, all sharing the same columns/filters/pagination/sort request shape) plus snapshot lifecycle, path simulation, and job management. Rather than modeling all 200+ tables 1:1, this spec groups them into 32 category-and-depth operations: one per top-level path segment (aci, addressing, fhrp, interfaces, inventory, management, mpls, multicast, neighbors, networks, platforms, qos, routing, security, spanning-tree, vlan, vrf, vxlan, wireless), with a separate operation per path depth within a category where needed (most tables are 1-3 segments deep beyond the category). Each operation takes the table's remaining path segments as individual path parameters (not one embedded-slash parameter, which Itential Platform's OpenAPI adapter URL-encodes and breaks) -- covering the full tables surface through a manageable, discoverable set of operations. Adds the 12-operation snapshot lifecycle, the consolidated path-lookup (graphs) endpoint, and 3 job-control operations. Excludes appliance administration (os/*, auth/*, settings/*, users/*) as out of scope for network automation, matching this repo's convention of excluding platform-admin surfaces." }, "servers": [ diff --git a/IP Fabric/README.md b/IP Fabric/README.md index c326f37..d83783f 100644 --- a/IP Fabric/README.md +++ b/IP Fabric/README.md @@ -1,6 +1,6 @@ IP Fabric is a network assurance platform for automated network discovery, inventory, and verification. -This project provides an OpenAPI spec for automating against IP Fabric's REST API via an Integration Model, plus workflows built on that model. It also retains a set of pre-existing workflows built on the legacy IP Fabric adapter (snapshot creation, snapshot inventory comparison, network route comparison, service path analysis). +This project provides an OpenAPI spec for automating against IP Fabric's REST API via an Integration Model, plus a Studio Project of workflows built on that model. ## Table of Contents @@ -19,17 +19,16 @@ This project provides an OpenAPI spec for automating against IP Fabric's REST AP | Asset | Description | |---|---| | [OpenAPIs/](./OpenAPIs/) | IP Fabric API OpenAPI spec, built from IP Fabric's official Postman collection and API reference docs | -| [Studio Projects/](./Studio%20Projects/) | Itential Platform project containing 48 new Integration Model workflows plus the pre-existing legacy adapter workflows | +| [Studio Projects/](./Studio%20Projects/) | Itential Platform project containing all 48 workflows in 4 folders | ## Requirements | Requirement | Version | |---|---| | Itential Platform | 6.x | -| `IP Fabric API:latest` Integration Model | Required to run the Tables/Snapshots/Path Lookup/Jobs folders | -| [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric) | Required to run the Create Network Snapshot/Compare Snapshot Inventory/Analyze Service Path folders (legacy, unmigrated) | +| `IP Fabric API:latest` Integration Model | Required to build automation against the OpenAPI spec, and to run the Studio Project below | -> **Note:** This project does not require Itential Gateway for the Integration Model-backed folders. All API calls are made directly from Itential Platform to IP Fabric's REST API. +> **Note:** This project does not require Itential Gateway. All API calls are made directly from Itential Platform to IP Fabric's REST API. ## Integration Configuration @@ -68,14 +67,6 @@ The instance's `authentication`/`server` properties should look like this once c ### `ip_fabric_api-latest.json` -**Important context on sourcing:** IP Fabric does not publish a standalone official OpenAPI/Swagger file anywhere. Each live instance self-generates a complete `openapi.json` from its own backend, viewable via RapiDoc at `/api/rapidoc` — but that requires access to a real instance. The next-best official artifact is IP Fabric's own [public Postman collection](https://gitlab.com/ip-fabric/integrations/postman) (vendor-maintained, versioned per platform release; this spec was built from the `v7.8` collection), cross-referenced against [IP Fabric's official API reference docs](https://docs.ipfabric.io/latest/IP_Fabric_API/) for endpoints the collection didn't fully document (notably path lookup's request schema). - -This spec was also cross-validated against the legacy [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric)'s full operation set (268 operations, recovered from its auto-generated OpenAPI export) to confirm coverage and catch renamed/removed endpoints. Of note: the legacy adapter's `deviceDiff` task now maps to `POST /tables/management/changes/devices` — the old `/deviceDiff` endpoint no longer exists in the current API. - -**On the "tables" API surface:** IP Fabric's REST API has 200+ near-identical "tables" endpoints — one per data category (routing, addressing, interfaces, security, multicast, MPLS, wireless, and more), all sharing the exact same request shape (`columns`/`filters`/`attributeFilters`/`pagination`/`sort`/`snapshot`). Rather than modeling all 200+ 1:1, this spec groups them into 32 category-and-depth operations — one per top-level category (matching IP Fabric's own path taxonomy: `aci`, `addressing`, `fhrp`, `interfaces`, `inventory`, `management`, `mpls`, `multicast`, `neighbors`, `networks`, `platforms`, `qos`, `routing`, `security`, `spanning-tree`, `vlan`, `vrf`, `vxlan`, `wireless`), with a separate operation per path depth within a category where the category has tables at more than one depth (most tables are 1-3 path segments deep beyond the category name). Each operation takes the table's remaining path segments as **individual path parameters** (`seg1`, `seg2`, `seg3`) rather than one embedded-slash parameter — Itential Platform's OpenAPI adapter URL-encodes slashes within a single path parameter value, which would silently send the wrong URL to IP Fabric for any multi-segment table. - -Adds the 12-operation snapshot lifecycle, the consolidated path-lookup (`graphs`) endpoint, and 3 job-control operations. Excludes appliance administration (`os/*`, `auth/*`, `settings/*`, `users/*`) as out of scope for network automation. - Operations included, by category: - **Tables**: Query any table under `ACI`, `Addressing`, `FHRP`, `Interfaces`, `Inventory`, `Management`, `MPLS`, `Multicast`, `Neighbors`, `Networks`, `Platforms`, `QoS`, `Routing`, `Security`, `Spanning Tree`, `VLAN`, `VRF`, `VXLAN`, or `Wireless` — 32 operations across those 19 categories @@ -87,20 +78,16 @@ Operations included, by category: ### IP Fabric Project -Backed by the **`IP Fabric API:latest`** Integration Model (see [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) above) for the new folders, plus the pre-existing legacy adapter folders. +Backed by the **`IP Fabric API:latest`** Integration Model (see [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) above). The project contains **48 workflows** organized into **4 folders**. #### Folder Structure -| Folder | Workflows | Scope | Backing | -|---|---|---|---| -| Tables | 32 | Query any table across 19 categories (see above) | `IP Fabric API:latest` Integration Model | -| Snapshots | 12 | Snapshot lifecycle management | `IP Fabric API:latest` Integration Model | -| Path Lookup | 1 | Unicast/multicast path simulation | `IP Fabric API:latest` Integration Model | -| Jobs | 3 | Async job control | `IP Fabric API:latest` Integration Model | -| Create Network Snapshot | 1 | Create a snapshot (legacy) | IP Fabric Adapter | -| Compare Snapshot Inventory | 2 | Diff device inventory between two snapshots (legacy) | IP Fabric Adapter | -| Analyze Service Path | 2 | Path lookup between two endpoints (legacy) | IP Fabric Adapter | -| (root) | 2 | Create Network Snapshot, Compare Network Routes From Snapshots (legacy) | IP Fabric Adapter | +| Folder | Workflows | Scope | +|---|---|---| +| Tables | 32 | Query any table across 19 categories (see above) | +| Snapshots | 12 | Snapshot lifecycle management | +| Path Lookup | 1 | Unicast/multicast path simulation | +| Jobs | 3 | Async job control | The `Cancel IP Fabric Job` workflow is prefixed to avoid colliding with an identically-named workflow already published for another product — workflow names are unique across the whole Itential Platform instance, not scoped per-project. @@ -108,8 +95,7 @@ The `Cancel IP Fabric Job` workflow is prefixed to avoid colliding with an ident | Dependency | Notes | |---|---| -| `IP Fabric API:latest` Integration Model | Import from [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) before importing the project. Backs the Tables, Snapshots, Path Lookup, and Jobs folders. | +| `IP Fabric API:latest` Integration Model | Import from [`ip_fabric_api-latest.json`](./OpenAPIs/ip_fabric_api-latest.json) before importing the project | | `IP Fabric` integration instance | Create in **Admin > Integrations** with the connection properties above. Workflows are wired to an integration instance named `IP Fabric` — update the `adapter_id` value in each workflow task if yours is named differently | -| [IP Fabric Adapter](https://gitlab.com/itentialopensource/adapters/adapter-ipfabric) | Required for the legacy folders (unmigrated) | -**Testing status:** all 48 new workflows were created and schema-validated against a running Itential Platform instance. The multi-segment path-parameter approach was verified against a live HTTP echo endpoint to confirm segments are sent unencoded. No IP Fabric test instance was available for this pass, so none have been executed against a real account. +**Testing status:** all 48 workflows were created and schema-validated against a running Itential Platform instance. The multi-segment path-parameter approach was verified against a live HTTP echo endpoint to confirm segments are sent unencoded. No IP Fabric test instance was available for this pass, so none have been executed against a real account. diff --git a/IP Fabric/Studio Projects/IP Fabric.project.json b/IP Fabric/Studio Projects/IP Fabric.project.json index abc13c2..c71a56b 100644 --- a/IP Fabric/Studio Projects/IP Fabric.project.json +++ b/IP Fabric/Studio Projects/IP Fabric.project.json @@ -1,2030 +1,8 @@ { "_id": "66cf772321161b4df271748f", "name": "IP Fabric", - "description": "IP Fabric asset includes create network snapshot, compare snapshot inventory, compare network routes from snapshots, and analyze service path.. Also includes Tables, Snapshots, Path Lookup, and Jobs workflows backed by the IP Fabric API Integration Model (v7.8).", + "description": "IP Fabric project has query workflows for technology/inventory/management tables, snapshot lifecycle management, path lookup, and job control, backed by the IP Fabric API Integration Model.", "components": [ - { - "iid": 0, - "reference": "0d27c745-c307-465d-8f4b-2101af9776a0", - "type": "workflow", - "folder": "/", - "document": { - "name": "Compare Network Routes From Snapshots", - "tasks": { - "workflow_start": { - "name": "workflow_start", - "groups": [], - "nodeLocation": { - "x": 240, - "y": 564 - } - }, - "workflow_end": { - "name": "workflow_end", - "groups": [], - "nodeLocation": { - "x": 240, - "y": 912 - } - }, - "a937": { - "name": "postTablesNetworksRoutes", - "canvasName": "postTablesNetworksRoutes", - "summary": "Get Network Routes From Last Snapshot", - "description": "Get network routes from the last snapshot", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IpFabric", - "variables": { - "incoming": { - "body": { - "columns": [ - "id", - "sn", - "hostname", - "siteName", - "network", - "prefix", - "protocol", - "vrf", - "nhCount", - "nhLowestAge", - "nhLowestMetric", - "nexthop" - ], - "filters": {}, - "pagination": { - "limit": 33, - "start": 0 - }, - "snapshot": "$last", - "sort": { - "order": "desc", - "column": "network" - } - }, - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 240, - "y": 660 - } - }, - "d4ce": { - "name": "ViewDiff", - "canvasName": "ViewDiff", - "summary": "Compare Network Routes", - "description": "Compare network routes", - "location": "Application", - "app": "WorkFlowEngine", - "displayName": "WorkFlowEngine", - "type": "manual", - "variables": { - "incoming": { - "header": "Difference in Network Routes", - "message": "", - "label1": "Network Routes from LAST", - "value1": "$var.a937.result", - "label2": "Network Routes from Previous to LAST", - "value2": "$var.4c89.result", - "btn_success": "Success", - "btn_failure": "" - }, - "outgoing": {}, - "task": true, - "error": "" - }, - "view": "/workflow_engine/task/ViewDiff", - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 240, - "y": 828 - } - }, - "4c89": { - "name": "postTablesNetworksRoutes", - "canvasName": "postTablesNetworksRoutes", - "summary": "Get Network Routes From Previous To Last Snapshot", - "description": "Get network routes from previous to last snapshot", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IpFabric", - "variables": { - "incoming": { - "body": { - "columns": [ - "id", - "sn", - "hostname", - "siteName", - "network", - "prefix", - "protocol", - "vrf", - "nhCount", - "nhLowestAge", - "nhLowestMetric", - "nexthop" - ], - "filters": {}, - "pagination": { - "limit": 33, - "start": 0 - }, - "snapshot": "$prev", - "sort": { - "order": "desc", - "column": "network" - } - }, - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 240, - "y": 744 - } - } - }, - "transitions": { - "workflow_start": { - "a937": { - "type": "standard", - "state": "success" - } - }, - "workflow_end": {}, - "a937": { - "4c89": { - "type": "standard", - "state": "success" - } - }, - "d4ce": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "4c89": { - "d4ce": { - "type": "standard", - "state": "success" - } - }, - "30c5": {} - }, - "inputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - } - }, - "required": [ - "adapterId" - ] - }, - "outputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "_id": { - "type": "string", - "pattern": "^[0-9a-f]{24}$" - }, - "initiator": { - "type": "string" - } - } - }, - "createdVersion": "5.29.14-2020.2.47.0", - "font_size": 12, - "lastUpdatedVersion": "5.55.2-2023.2.13", - "last_updated": "2025-01-23T21:10:30.375Z", - "preAutomationTime": 0, - "sla": 0, - "type": "automation", - "last_updated_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "created": "1970-01-01T00:00:00.000Z", - "canvasVersion": 3, - "created_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "tags": [], - "groups": [], - "migrationVersion": 3 - } - }, - { - "iid": 1, - "reference": "3e2dbc92-6a6f-4f6f-a8ae-b177fd922560", - "type": "workflow", - "folder": "/Compare Snapshot Inventory", - "document": { - "name": "Compare Snapshot Inventory", - "tasks": { - "workflow_start": { - "name": "workflow_start", - "groups": [], - "nodeLocation": { - "x": 168, - "y": 552 - } - }, - "workflow_end": { - "name": "workflow_end", - "groups": [], - "nodeLocation": { - "x": 180, - "y": 1032 - } - }, - "ec60": { - "name": "query", - "canvasName": "query", - "summary": "Query Removed Devices", - "description": "Query removed devices", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "pass_on_null": false, - "query": "response.data[*status=removed]", - "obj": "$var.a630.result" - }, - "outgoing": { - "return_data": "$var.job.devicesRemoved" - }, - "error": "", - "decorators": [] - }, - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 24, - "y": 960 - } - }, - "79a9": { - "name": "query", - "canvasName": "query", - "summary": "Query Newly Added Devices", - "description": "Query newly added devices", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "pass_on_null": false, - "query": "response.data[*status=added]", - "obj": "$var.a630.result" - }, - "outgoing": { - "return_data": "$var.job.devicesAdded" - }, - "error": "", - "decorators": [] - }, - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 336, - "y": 960 - } - }, - "5df2": { - "name": "query", - "canvasName": "query", - "summary": "Query Second Last Snapshot ID", - "description": "Query second last snapshot ID", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "pass_on_null": false, - "query": "response._meta.snapshot", - "obj": "$var.a541.result" - }, - "outgoing": { - "return_data": null - }, - "error": "" - }, - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 24, - "y": 720 - } - }, - "4cfa": { - "name": "query", - "canvasName": "query", - "summary": "Query Last Snapshot ID", - "description": "Query last snapshot ID", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "pass_on_null": false, - "query": "response._meta.snapshot", - "obj": "$var.3f89.result" - }, - "outgoing": { - "return_data": null - }, - "error": "" - }, - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 324, - "y": 720 - } - }, - "83af": { - "name": "transformation", - "canvasName": "transformation", - "summary": "Create Inventory Diff Payload", - "description": "Create inventory diff payload", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "tr_id": "60d1f5de24b88d0119edef27", - "variableMap": { - "snapshotidlast": "$var.4cfa.return_data", - "snapshotidprev": "$var.5df2.return_data" - }, - "options": { - "extractOutput": false, - "validateIncoming": true, - "revertToDefaultValue": true - } - }, - "outgoing": { - "payload": null, - "snapshotidlast": null - }, - "decorators": [] - }, - "groups": [], - "task_name": "CreateInvDiffPayload", - "retrySettings": null, - "nodeLocation": { - "x": 180, - "y": 804 - } - }, - "3f89": { - "name": "postTablesInventorySites", - "canvasName": "postTablesInventorySites", - "summary": "Identify Last Inventory Snapshot", - "description": "This task requests the more recent inventory snapshot from IP Fabric", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IPFabric", - "variables": { - "incoming": { - "body": { - "columns": [ - "id" - ], - "filters": {}, - "snapshot": "$last" - }, - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": "" - } - }, - "actor": "Pronghorn", - "groups": [], - "nodeLocation": { - "x": 324, - "y": 636 - } - }, - "a541": { - "name": "postTablesInventorySites", - "canvasName": "postTablesInventorySites", - "summary": "Identify Previous Inventory Snapshot", - "description": "This task requests the second more recent inventory snapshot from IP Fabric", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IPFabric", - "variables": { - "incoming": { - "body": { - "columns": [ - "id" - ], - "filters": {}, - "snapshot": "$prev" - }, - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": "" - } - }, - "actor": "Pronghorn", - "groups": [], - "nodeLocation": { - "x": 24, - "y": 636 - } - }, - "a630": { - "name": "deviceDiff", - "canvasName": "deviceDiff", - "summary": "Get Inventory Difference", - "description": "Difference in devices after changes have been made", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IPFabric", - "variables": { - "incoming": { - "body": "$var.83af.payload", - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": "" - } - }, - "actor": "Pronghorn", - "groups": [], - "nodeLocation": { - "x": 180, - "y": 888 - } - } - }, - "transitions": { - "workflow_start": { - "3f89": { - "state": "success", - "type": "standard" - }, - "a541": { - "state": "success", - "type": "standard" - } - }, - "workflow_end": {}, - "ec60": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "79a9": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "5df2": { - "83af": { - "type": "standard", - "state": "success" - } - }, - "4cfa": { - "83af": { - "type": "standard", - "state": "success" - } - }, - "83af": { - "a630": { - "state": "success", - "type": "standard" - } - }, - "3f89": { - "4cfa": { - "state": "success", - "type": "standard" - } - }, - "a541": { - "5df2": { - "state": "success", - "type": "standard" - } - }, - "a630": { - "79a9": { - "state": "success", - "type": "standard" - }, - "ec60": { - "state": "success", - "type": "standard" - } - }, - "d0f2": {}, - "f64f": {} - }, - "inputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - } - }, - "required": [ - "adapterId" - ] - }, - "outputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "_id": { - "type": "string", - "pattern": "^[0-9a-f]{24}$" - }, - "initiator": { - "type": "string" - }, - "devicesRemoved": { - "title": "return_data", - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "object" - }, - { - "type": "array" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "examples": [ - "value" - ] - }, - "devicesAdded": { - "title": "return_data", - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "object" - }, - { - "type": "array" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "examples": [ - "value" - ] - } - } - }, - "type": "automation", - "font_size": 12, - "last_updated": "2025-01-23T21:10:30.376Z", - "lastUpdatedVersion": "5.55.2-2023.2.13", - "createdVersion": "5.29.14-2020.2.47", - "preAutomationTime": 0, - "sla": 0, - "last_updated_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "created": "1970-01-01T00:00:00.000Z", - "canvasVersion": 3, - "created_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "tags": [], - "groups": [], - "migrationVersion": 3 - } - }, - { - "iid": 2, - "reference": "6305c5d8-2282-4029-b4e2-3890701a4b37", - "type": "workflow", - "folder": "/", - "document": { - "name": "Create Network Snapshot", - "tasks": { - "workflow_start": { - "name": "workflow_start", - "groups": [], - "nodeLocation": { - "x": 36, - "y": 744 - } - }, - "workflow_end": { - "name": "workflow_end", - "groups": [], - "nodeLocation": { - "x": 36, - "y": 996 - } - }, - "f89": { - "name": "createSnapshot", - "canvasName": "createSnapshot", - "summary": "Create New Snapshot", - "description": "Create new snapshot with global or new settings", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IpFabric", - "variables": { - "incoming": { - "body": "$var.bcb1.merged_object", - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": "$var.job.snapshotDetails" - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 36, - "y": 912 - } - }, - "bcb1": { - "name": "merge", - "canvasName": "merge", - "summary": "Merge Inputs", - "description": "Merge inputs to create snapshot payload", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "data_to_merge": [ - { - "key": "snapshotName", - "value": { - "task": "job", - "variable": "snapshotName" - } - }, - { - "key": "snapshotNote", - "value": { - "task": "job", - "variable": "snapshotNote" - } - }, - { - "key": "credentials", - "value": { - "task": "job", - "variable": "credentials" - } - } - ] - }, - "outgoing": { - "merged_object": "" - } - }, - "actor": "Pronghorn", - "groups": [], - "nodeLocation": { - "x": 36, - "y": 828 - } - } - }, - "transitions": { - "workflow_start": { - "bcb1": { - "state": "success", - "type": "standard" - } - }, - "workflow_end": {}, - "f89": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "bcb1": { - "f89": { - "state": "success", - "type": "standard" - } - }, - "d0f2": {}, - "f64f": {} - }, - "inputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "snapshotName": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "snapshotNote": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "credentials": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - } - }, - "required": [ - "adapterId", - "snapshotName", - "snapshotNote", - "credentials" - ] - }, - "outputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "snapshotName": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "snapshotNote": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "credentials": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "_id": { - "type": "string", - "pattern": "^[0-9a-f]{24}$" - }, - "initiator": { - "type": "string" - }, - "snapshotDetails": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - } - } - }, - "type": "automation", - "font_size": 12, - "last_updated": "2025-01-23T21:10:30.377Z", - "lastUpdatedVersion": "5.55.2-2023.2.13", - "createdVersion": "5.29.14-2020.2.47.0", - "preAutomationTime": 0, - "sla": 0, - "last_updated_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "created": "1970-01-01T00:00:00.000Z", - "canvasVersion": 3, - "created_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "tags": [], - "groups": [], - "migrationVersion": 3 - } - }, - { - "iid": 3, - "reference": "b439ae5a-8b38-4f0e-9448-4afda1989e61", - "type": "workflow", - "folder": "/Analyze Service Path", - "document": { - "name": "Analyze Service Path", - "tasks": { - "workflow_start": { - "name": "workflow_start", - "groups": [], - "nodeLocation": { - "x": 1140, - "y": 192 - } - }, - "workflow_end": { - "name": "workflow_end", - "groups": [], - "nodeLocation": { - "x": 1140, - "y": 864 - } - }, - "a1": { - "name": "pathLookup", - "canvasName": "pathLookup", - "summary": "End To End Application Path Lookup", - "description": "End to end application path lookup", - "location": "Adapter", - "locationType": "IpFabric", - "app": "IpFabric", - "type": "automatic", - "displayName": "IpFabric", - "variables": { - "incoming": { - "body": "$var.326b.pathLookUpPayload", - "adapter_id": "$var.job.adapterId" - }, - "outgoing": { - "result": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 1140, - "y": 384 - } - }, - "eb4a": { - "name": "evaluation", - "canvasName": "evaluation", - "summary": "Evaluate Topic ACL", - "description": "Topic ACL", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "all_true_flag": false, - "evaluation_groups": [ - { - "all_true_flag": false, - "evaluations": [ - { - "query": "ACL.30", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - } - ] - } - ] - }, - "outgoing": { - "return_value": null - } - }, - "groups": [], - "nodeLocation": { - "x": 1452, - "y": 492 - } - }, - "71af": { - "name": "evaluation", - "canvasName": "evaluation", - "summary": "Evaluate Topic Forwarding", - "description": "Topic Forwarding", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "all_true_flag": true, - "evaluation_groups": [ - { - "all_true_flag": true, - "evaluations": [ - { - "query": "FORWARDING.0", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - }, - { - "query": "FORWARDING.10", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - }, - { - "query": "FORWARDING.20", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - }, - { - "query": "FORWARDING.30", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - } - ] - } - ] - }, - "outgoing": { - "return_value": null - } - }, - "groups": [], - "nodeLocation": { - "x": 1140, - "y": 564 - } - }, - "509d": { - "name": "evaluation", - "canvasName": "evaluation", - "summary": "Evaluate Topic ZONEFW", - "description": "ZONEFW", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "all_true_flag": true, - "evaluation_groups": [ - { - "all_true_flag": true, - "evaluations": [ - { - "query": "ZONEFW.30", - "operand_1": { - "variable": "return_data", - "task": "11ce" - }, - "operator": "==", - "operand_2": { - "variable": 0, - "task": "static" - } - } - ] - } - ] - }, - "outgoing": { - "return_value": null - } - }, - "groups": [], - "nodeLocation": { - "x": 1452, - "y": 408 - } - }, - "11ce": { - "name": "query", - "canvasName": "query", - "summary": "Query Topics", - "description": "Query topics", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "pass_on_null": false, - "query": "response.pathlookup.eventsSummary.topics", - "obj": "$var.a1.result" - }, - "outgoing": { - "return_data": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "scheduled": false, - "nodeLocation": { - "x": 1140, - "y": 468 - } - }, - "282e": { - "name": "evaluation", - "canvasName": "evaluation", - "summary": "Verify Operations Topics Are All True", - "description": "Verify operations topics are all true", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "all_true_flag": true, - "evaluation_groups": [ - { - "all_true_flag": true, - "evaluations": [ - { - "query": "", - "operand_1": { - "variable": "return_value", - "task": "509d" - }, - "operator": "==", - "operand_2": { - "variable": true, - "task": "static" - } - }, - { - "query": "", - "operand_1": { - "variable": "return_value", - "task": "71af" - }, - "operator": "==", - "operand_2": { - "variable": true, - "task": "static" - } - }, - { - "query": "", - "operand_1": { - "variable": "return_value", - "task": "eb4a" - }, - "operator": "==", - "operand_2": { - "variable": true, - "task": "static" - } - } - ] - } - ] - }, - "outgoing": { - "return_value": null - } - }, - "groups": [], - "nodeLocation": { - "x": 1140, - "y": 660 - } - }, - "326b": { - "name": "transformation", - "canvasName": "transformation", - "summary": "Create Path Lookup Payload", - "description": "Create path lookup payload", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "operation", - "displayName": "WorkFlowEngine", - "variables": { - "incoming": { - "tr_id": "6399ffec2c79bd019461556d", - "variableMap": { - "source": "$var.job.source", - "destination": "$var.job.destination", - "sourcePort": "$var.job.sourcePort", - "destinationPort": "$var.job.destinationPort", - "protocol": "$var.job.protocol" - }, - "options": { - "extractOutput": true, - "validateIncoming": true, - "revertToDefaultValue": true - } - }, - "outgoing": { - "pathLookUpPayload": null - }, - "decorators": [] - }, - "groups": [], - "task_name": "PreBuiltPathLookUp", - "retrySettings": null, - "nodeLocation": { - "x": 1140, - "y": 300 - } - }, - "31f9": { - "name": "stub", - "canvasName": "stub", - "summary": "ZonesFW Issue", - "description": "Create a stub for ZonesFW issue", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "automatic", - "displayName": "Tools", - "variables": { - "incoming": { - "type": "success", - "delay": "", - "response": "ZonesFW - The traffic will not flow as per the request." - }, - "outgoing": { - "response": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 1740, - "y": 408 - } - }, - "cab0": { - "name": "stub", - "canvasName": "stub", - "summary": "Forwarding Issue", - "description": "Create a stub for Forwarding issue", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "automatic", - "displayName": "Tools", - "variables": { - "incoming": { - "type": "success", - "delay": "", - "response": "Forwarding - The traffic will not flow as per the request." - }, - "outgoing": { - "response": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 1452, - "y": 564 - } - }, - "a755": { - "name": "stub", - "canvasName": "stub", - "summary": "Perfect", - "description": "Create a stub for perfect traffic flow", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "automatic", - "displayName": "Tools", - "variables": { - "incoming": { - "type": "success", - "delay": "", - "response": "Perfect - The traffic is flowing as per the request" - }, - "outgoing": { - "response": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 1140, - "y": 756 - } - }, - "ea77": { - "name": "stub", - "canvasName": "stub", - "summary": "ACL - Issue", - "description": "Create a stub for ACL issue", - "location": "Application", - "locationType": null, - "app": "WorkFlowEngine", - "type": "automatic", - "displayName": "Tools", - "variables": { - "incoming": { - "type": "success", - "delay": "", - "response": "ACL - The traffic will not flow as per the request." - }, - "outgoing": { - "response": null - }, - "error": "", - "decorators": [] - }, - "groups": [], - "actor": "Pronghorn", - "scheduled": false, - "nodeLocation": { - "x": 1740, - "y": 492 - } - } - }, - "transitions": { - "4116": {}, - "workflow_start": { - "326b": { - "type": "standard", - "state": "success" - } - }, - "workflow_end": {}, - "a1": { - "11ce": { - "type": "standard", - "state": "success" - } - }, - "eb4a": { - "282e": { - "type": "standard", - "state": "success" - }, - "ea77": { - "type": "standard", - "state": "failure" - } - }, - "71af": { - "282e": { - "type": "standard", - "state": "success" - }, - "cab0": { - "type": "standard", - "state": "failure" - } - }, - "509d": { - "282e": { - "type": "standard", - "state": "success" - }, - "31f9": { - "type": "standard", - "state": "failure" - } - }, - "11ce": { - "eb4a": { - "type": "standard", - "state": "success" - }, - "71af": { - "type": "standard", - "state": "success" - }, - "509d": { - "type": "standard", - "state": "success" - } - }, - "282e": { - "a755": { - "type": "standard", - "state": "success" - } - }, - "326b": { - "a1": { - "type": "standard", - "state": "success" - } - }, - "31f9": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "cab0": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "a755": { - "workflow_end": { - "type": "standard", - "state": "success" - } - }, - "ea77": { - "workflow_end": { - "type": "standard", - "state": "success" - } - } - }, - "inputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "source": { - "type": "string" - }, - "destination": { - "type": "string" - }, - "sourcePort": { - "type": "string" - }, - "destinationPort": { - "type": "string" - }, - "protocol": { - "type": "string" - } - }, - "required": [ - "adapterId", - "source", - "destination", - "sourcePort", - "destinationPort", - "protocol" - ] - }, - "outputSchema": { - "type": "object", - "properties": { - "adapterId": { - "type": [ - "array", - "boolean", - "null", - "number", - "object", - "string" - ] - }, - "source": { - "type": "string" - }, - "destination": { - "type": "string" - }, - "sourcePort": { - "type": "string" - }, - "destinationPort": { - "type": "string" - }, - "protocol": { - "type": "string" - }, - "_id": { - "type": "string", - "pattern": "^[0-9a-f]{24}$" - }, - "initiator": { - "type": "string" - } - } - }, - "type": "automation", - "font_size": 12, - "last_updated": "2025-01-23T21:10:30.376Z", - "lastUpdatedVersion": "5.55.2-2023.2.13", - "createdVersion": "5.40.5-2021.1.109.0", - "preAutomationTime": 0, - "sla": 0, - "last_updated_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "created": "1970-01-01T00:00:00.000Z", - "canvasVersion": 3, - "created_by": { - "provenance": "Okta", - "username": "admin@itential", - "firstname": "admin@itential", - "inactive": false, - "sso": true, - "nameID": "admin@itential" - }, - "tags": [], - "groups": [], - "migrationVersion": 3 - } - }, - { - "iid": 4, - "reference": "6792acedb320bf2f072b34fe", - "type": "transformation", - "folder": "/Analyze Service Path", - "document": { - "_id": "6792acedb320bf2f072b34fe", - "name": "Create Path Lookup Payload (1)", - "description": "", - "incoming": [ - { - "$id": "source", - "type": "string" - }, - { - "$id": "destination", - "type": "string" - }, - { - "$id": "sourcePort", - "type": "string" - }, - { - "$id": "destinationPort", - "type": "string" - }, - { - "$id": "protocol", - "type": "string" - } - ], - "outgoing": [ - { - "$id": "pathLookUpPayload", - "type": "object", - "properties": {}, - "required": [] - } - ], - "steps": [ - { - "id": 6, - "type": "template", - "library": "String", - "method": "templateLiteral", - "template": "{\n \"parameters\": {\n \"destinationPoint\": \"${destinationPoint}\",\n \"groupBy\": \"siteName\",\n \"networkMode\": false,\n \"pathLookupType\": \"unicast\",\n \"securedPath\": false,\n \"startingPoint\": \"${startingPoint}\",\n \"type\": \"pathLookup\",\n \"firstHopAlgorithm\": {\n \"type\": \"automatic\"\n },\n \"protocol\": \"${protocol}\",\n \"srcRegions\": \".*\",\n \"dstRegions\": \".*\",\n \"enableRegions\": false,\n \"ttl\": 128,\n \"fragmentOffset\": 0,\n \"otherOptions\": {\n \"applications\": \".*\",\n \"tracked\": false\n },\n \"l4Options\": {\n \"dstPorts\": \"${dstPorts}\",\n \"srcPorts\": \"${srcPorts}\",\n \"flags\": []\n }\n },\n \"snapshot\": \"$last\"\n}", - "args": [ - null, - null, - null, - null, - null - ], - "view": { - "row": 2, - "col": 1 - } - }, - { - "id": 8, - "type": "method", - "library": "JSON", - "method": "parse", - "args": [ - null, - null - ], - "view": { - "row": 2, - "col": 2 - } - }, - { - "id": 10, - "type": "assign", - "from": { - "location": "method", - "name": 8, - "ptr": "/return" - }, - "to": { - "location": "outgoing", - "name": "pathLookUpPayload", - "ptr": "" - } - }, - { - "id": 16, - "type": "assign", - "from": { - "location": "incoming", - "name": "source", - "ptr": "" - }, - "to": { - "location": "template", - "name": 6, - "ptr": "/args/1/value" - }, - "context": "#" - }, - { - "id": 18, - "type": "assign", - "from": { - "location": "incoming", - "name": "sourcePort", - "ptr": "" - }, - "to": { - "location": "template", - "name": 6, - "ptr": "/args/4/value" - }, - "context": "#" - }, - { - "id": 19, - "type": "assign", - "from": { - "location": "incoming", - "name": "destinationPort", - "ptr": "" - }, - "to": { - "location": "template", - "name": 6, - "ptr": "/args/3/value" - }, - "context": "#" - }, - { - "id": 20, - "type": "assign", - "from": { - "location": "incoming", - "name": "protocol", - "ptr": "" - }, - "to": { - "location": "template", - "name": 6, - "ptr": "/args/2/value" - }, - "context": "#" - }, - { - "id": 21, - "type": "assign", - "from": { - "location": "incoming", - "name": "destination", - "ptr": "" - }, - "to": { - "location": "template", - "name": 6, - "ptr": "/args/0/value" - }, - "context": "#" - }, - { - "id": 22, - "type": "assign", - "from": { - "location": "template", - "name": 6, - "ptr": "/return" - }, - "to": { - "location": "method", - "name": 8, - "ptr": "/args/0/value" - }, - "context": "#" - } - ], - "functions": [], - "comments": [], - "view": { - "col": 2, - "row": 5 - }, - "created": "2025-01-23T20:56:13.703Z", - "createdBy": { - "_id": "67531c63592f8c45f4eabe88", - "provenance": "Okta", - "username": "admin@itential" - }, - "lastUpdated": "2025-01-23T21:10:30.381Z", - "lastUpdatedBy": { - "_id": "67531c63592f8c45f4eabe88", - "provenance": "Okta", - "username": "admin@itential" - }, - "version": "4.3.6-2023.2.5", - "tags": [] - } - }, - { - "iid": 5, - "reference": "60d1f5de24b88d0119edef27", - "type": "transformation", - "folder": "/Compare Snapshot Inventory", - "document": { - "_id": "60d1f5de24b88d0119edef27", - "name": "Create Inventory Diff Payload", - "description": "", - "incoming": [ - { - "$id": "snapshotidlast", - "type": "string", - "examples": [ - "snap1" - ] - }, - { - "$id": "snapshotidprev", - "type": "string", - "examples": [ - "snap2" - ] - } - ], - "outgoing": [ - { - "$id": "snapshotidlast", - "type": "string", - "examples": [ - "snap1" - ] - }, - { - "$id": "payload", - "type": "object", - "properties": {}, - "required": [] - } - ], - "steps": [ - { - "id": 1, - "type": "template", - "library": "String", - "method": "templateLiteral", - "template": "{\n \"columns\": [\n \"hostname\",\n \"loginIp\",\n \"version\",\n \"uptime\",\n \"status\"\n ],\n \"bindVariables\": {\n \"after\": \"${lastSnap}\",\n \"before\": \"${prevSnap}\"\n },\n \"filters\": {}\n}", - "args": [ - null, - null - ], - "view": { - "row": 2, - "col": 2 - } - }, - { - "id": 2, - "type": "assign", - "from": { - "location": "incoming", - "name": "snapshotidlast", - "ptr": "" - }, - "to": { - "location": "template", - "name": 1, - "ptr": "/args/0/value" - } - }, - { - "id": 3, - "type": "assign", - "from": { - "location": "incoming", - "name": "snapshotidprev", - "ptr": "" - }, - "to": { - "location": "template", - "name": 1, - "ptr": "/args/1/value" - } - }, - { - "id": 4, - "type": "method", - "library": "JSON", - "method": "parse", - "args": [ - null, - null - ], - "view": { - "row": 2, - "col": 3 - } - }, - { - "id": 5, - "type": "assign", - "from": { - "location": "template", - "name": 1, - "ptr": "/return" - }, - "to": { - "location": "method", - "name": 4, - "ptr": "/args/0/value" - } - }, - { - "id": 6, - "type": "assign", - "from": { - "location": "method", - "name": 4, - "ptr": "/return" - }, - "to": { - "location": "outgoing", - "name": "payload", - "ptr": "" - } - }, - { - "id": 7, - "type": "assign", - "from": { - "location": "incoming", - "name": "snapshotidlast", - "ptr": "" - }, - "to": { - "location": "outgoing", - "name": "snapshotidlast", - "ptr": "" - } - } - ], - "functions": [], - "comments": [], - "view": { - "col": 3, - "row": 5 - }, - "created": "2025-01-23T20:56:13.704Z", - "createdBy": { - "_id": "67531c63592f8c45f4eabe88", - "provenance": "Okta", - "username": "admin@itential" - }, - "lastUpdated": "2025-01-23T21:10:30.377Z", - "lastUpdatedBy": { - "_id": "67531c63592f8c45f4eabe88", - "provenance": "Okta", - "username": "admin@itential" - }, - "version": "4.3.6-2023.2.5", - "tags": [] - } - }, { "iid": 6, "reference": "b53d3de8-ae17-4e16-9eee-dcefcea3be19", @@ -11986,42 +9964,6 @@ } ], "folders": [ - { - "iid": 2, - "nodeType": "component" - }, - { - "nodeType": "folder", - "name": "Compare Snapshot Inventory", - "children": [ - { - "iid": 1, - "nodeType": "component" - }, - { - "iid": 5, - "nodeType": "component" - } - ] - }, - { - "iid": 0, - "nodeType": "component" - }, - { - "nodeType": "folder", - "name": "Analyze Service Path", - "children": [ - { - "iid": 3, - "nodeType": "component" - }, - { - "iid": 4, - "nodeType": "component" - } - ] - }, { "nodeType": "folder", "name": "Path Lookup",