diff --git a/Arista/CloudVision/OpenAPIs/arista_cloudvision_api-latest.json b/Arista/CloudVision/OpenAPIs/arista_cloudvision_api-latest.json new file mode 100644 index 0000000..e0162ba --- /dev/null +++ b/Arista/CloudVision/OpenAPIs/arista_cloudvision_api-latest.json @@ -0,0 +1,3205 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "latest", + "x-vendor-api-version": "CloudVision Resource APIs (workspace.v1, studio.v1, changecontrol.v1, inventory.v1, tag.v2, softwaremanagement.v1)", + "title": "Arista CloudVision", + "description": "Arista CloudVision-as-a-Service (CVaaS) Resource APIs covering the modern Workspace/Studio provisioning flow (create a workspace, push configuration into a Studio, build and validate, submit to create a Change Control, then approve and execute it), device onboarding and decommissioning, tags and tag assignments, and software image/extension management.\n\nAuthentication: bearer service-account token. Send Authorization: Bearer on every request.\n\nSource: https://github.com/aristanetworks/cloudvision-apis", + "x-itential-curated": "Covers Workspace config/status/build, Studio input configuration, Change Control config/status/approval, device onboarding/decommissioning/inventory, tags and tag assignments, and software image/extension management -- 40 operations across 6 of CloudVision's resource packages. Excludes the \"list all\" (GetAll) and \"get several\" (GetSome) operations on every resource, since those are long-lived streaming (chunked NDJSON) responses rather than a single JSON object and don't fit a request/response workflow task, plus every other CloudVision resource package (alerting, dashboards, licensing, identity providers, etc.) outside this scope." + }, + "servers": [ + { + "url": "https://CVAAS-TENANT-HOST", + "description": "Per-tenant CVaaS host, e.g. www.cv-prod-us-central1-b.arista.io -- replace with your tenant's host." + } + ], + "security": [ + { + "bearerAuth": [] + } + ], + "paths": { + "/api/resources/changecontrol/v1/ApproveConfig": { + "post": { + "operationId": "changeControl_SetApproval", + "summary": "Approve (or unapprove) a Change Control. Requires version to be set to the Change Control's current change.time (from changeControl_Get) when approving.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApproveConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApproveConfig" + } + } + } + } + } + }, + "/api/resources/changecontrol/v1/ChangeControl": { + "get": { + "operationId": "changeControl_Get", + "summary": "Get a Change Control's full status -- approval, execution status, devices, and change/stage detail", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeControlResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.id", + "in": "query", + "required": true, + "description": "ID of the Change Control.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/changecontrol/v1/ChangeControlConfig": { + "post": { + "operationId": "changeControl_Set", + "summary": "Create/update a Change Control, or flag it to start/stop/schedule execution", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeControlConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeControlConfig" + } + } + } + } + }, + "get": { + "operationId": "changeControl_GetConfig", + "summary": "Get a Change Control's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeControlConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.id", + "in": "query", + "required": true, + "description": "ID of the Change Control.", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "changeControl_Delete", + "summary": "Delete a Change Control", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeControlConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.id", + "in": "query", + "required": true, + "description": "ID of the Change Control.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/Device": { + "get": { + "operationId": "inventory_GetDevice", + "summary": "Get an inventoried device's identity and streaming status", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.deviceId", + "in": "query", + "required": true, + "description": "ID of the device.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/DeviceDecommissioning": { + "get": { + "operationId": "inventory_GetDecommissioningStatus", + "summary": "Get the status of a decommissioning request", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceDecommissioningResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the decommissioning request.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/DeviceDecommissioningConfig": { + "post": { + "operationId": "inventory_DecommissionDevice", + "summary": "Submit a request to decommission (stop streaming and remove from inventory) a device", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceDecommissioningConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceDecommissioningConfig" + } + } + } + } + }, + "get": { + "operationId": "inventory_GetDecommissioningConfig", + "summary": "Get a decommissioning request's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceDecommissioningConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the decommissioning request.", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "inventory_DeleteDecommissioningRequest", + "summary": "Delete a decommissioning request", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceDecommissioningConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the decommissioning request.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/DeviceOnboarding": { + "get": { + "operationId": "inventory_GetOnboardingStatus", + "summary": "Get the status of an onboarding request", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOnboardingResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the onboarding request.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/DeviceOnboardingConfig": { + "post": { + "operationId": "inventory_OnboardDevice", + "summary": "Submit a request to onboard (start streaming and add to inventory) a device", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOnboardingConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOnboardingConfig" + } + } + } + } + }, + "get": { + "operationId": "inventory_GetOnboardingConfig", + "summary": "Get an onboarding request's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOnboardingConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the onboarding request.", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "inventory_DeleteOnboardingRequest", + "summary": "Delete an onboarding request", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOnboardingConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.requestId", + "in": "query", + "required": true, + "description": "UUID of the onboarding request.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/inventory/v1/ProvisionedDevice": { + "get": { + "operationId": "inventory_GetProvisionedDevice", + "summary": "Get an onboarded device's provisioning status", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProvisionedDeviceResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.deviceId", + "in": "query", + "required": true, + "description": "ID of the device.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/softwaremanagement/v1/Assignments": { + "get": { + "operationId": "software_GetAssignments", + "summary": "Get the devices, ZTP upgrade rules, and studio tag queries that reference a software image", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignmentsResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.name", + "in": "query", + "required": true, + "description": "Repository key name.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/softwaremanagement/v1/Releases": { + "get": { + "operationId": "software_GetReleases", + "summary": "List software releases available for download from Arista's Software Download site", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleasesResponse" + } + } + } + } + } + } + }, + "/api/resources/softwaremanagement/v1/Repository": { + "get": { + "operationId": "software_GetRepository", + "summary": "Get a software image/extension's upload/validation status and metadata", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepositoryResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.name", + "in": "query", + "required": true, + "description": "Repository key name.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/softwaremanagement/v1/RepositoryConfig": { + "post": { + "operationId": "software_AddImage", + "summary": "Add or update a software image/extension in CloudVision, downloading it from Arista's Software Download site (or a prior upload) by URI", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepositoryConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepositoryConfig" + } + } + } + } + }, + "get": { + "operationId": "software_GetRepositoryConfig", + "summary": "Get a software image/extension's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepositoryConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.name", + "in": "query", + "required": true, + "description": "Repository key name (must include file suffix, e.g. \"EOS-4.30.0.swi\").", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "software_DeleteImage", + "summary": "Remove a software image/extension from CloudVision", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RepositoryConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.name", + "in": "query", + "required": true, + "description": "Repository key name.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/studio/v1/Inputs": { + "get": { + "operationId": "studio_GetResolvedInputs", + "summary": "Get the resolved input value at a path in a studio", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputsResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.studioId", + "in": "query", + "required": true, + "description": "ID of the studio.", + "schema": { + "type": "string" + } + }, + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "ID of the workspace the studio inputs live in.", + "schema": { + "type": "string" + } + }, + { + "name": "key.path.values", + "in": "query", + "required": false, + "description": "Path segments to the input field.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ] + } + }, + "/api/resources/studio/v1/InputsConfig": { + "post": { + "operationId": "studio_SetInputs", + "summary": "Set a studio's input value at a path, e.g. push configuration into the Static Configlet Studio", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputsConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputsConfig" + } + } + } + } + }, + "get": { + "operationId": "studio_GetInputsConfig", + "summary": "Get the configured input value at a path in a studio", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputsConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.studioId", + "in": "query", + "required": true, + "description": "ID of the studio.", + "schema": { + "type": "string" + } + }, + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "ID of the workspace the studio inputs live in.", + "schema": { + "type": "string" + } + }, + { + "name": "key.path.values", + "in": "query", + "required": false, + "description": "Path segments to the input field.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ] + }, + "delete": { + "operationId": "studio_DeleteInputs", + "summary": "Remove a studio's input value at a path", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputsConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.studioId", + "in": "query", + "required": true, + "description": "ID of the studio.", + "schema": { + "type": "string" + } + }, + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "ID of the workspace the studio inputs live in.", + "schema": { + "type": "string" + } + }, + { + "name": "key.path.values", + "in": "query", + "required": false, + "description": "Path segments to the input field.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ] + } + }, + "/api/resources/tag/v2/Element": { + "get": { + "operationId": "tag_GetElement", + "summary": "Get a tagged or untaggable network element's identity", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ElementResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.type", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.subType", + "in": "query", + "required": true, + "description": "Element sub-type.", + "schema": { + "type": "string" + } + }, + { + "name": "key.primaryId", + "in": "query", + "required": true, + "description": "Primary ID (meaning depends on type/sub-type -- see schema description).", + "schema": { + "type": "string" + } + }, + { + "name": "key.secondaryId", + "in": "query", + "required": true, + "description": "Secondary ID (meaning depends on type/sub-type -- see schema description).", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/tag/v2/Tag": { + "get": { + "operationId": "tag_GetTag", + "summary": "Get a tag's merge-preview or merged state", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged tags).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/tag/v2/TagAssignment": { + "get": { + "operationId": "tag_GetAssignment", + "summary": "Get a tag assignment's merge-preview or merged state", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagAssignmentResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged assignments).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.deviceId", + "in": "query", + "required": false, + "description": "Device ID (for device/interface element types).", + "schema": { + "type": "string" + } + }, + { + "name": "key.interfaceId", + "in": "query", + "required": false, + "description": "Interface ID (for interface element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + }, + { + "name": "key.primaryEntityId", + "in": "query", + "required": false, + "description": "Primary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.secondaryEntityId", + "in": "query", + "required": false, + "description": "Secondary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/tag/v2/TagAssignmentConfig": { + "post": { + "operationId": "tag_SetAssignment", + "summary": "Assign (or unassign) a tag to a network element (within a workspace, pending merge)", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagAssignmentConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagAssignmentConfig" + } + } + } + } + }, + "get": { + "operationId": "tag_GetAssignmentConfig", + "summary": "Get a tag assignment's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagAssignmentConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged assignments).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.deviceId", + "in": "query", + "required": false, + "description": "Device ID (for device/interface element types).", + "schema": { + "type": "string" + } + }, + { + "name": "key.interfaceId", + "in": "query", + "required": false, + "description": "Interface ID (for interface element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + }, + { + "name": "key.primaryEntityId", + "in": "query", + "required": false, + "description": "Primary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.secondaryEntityId", + "in": "query", + "required": false, + "description": "Secondary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "tag_DeleteAssignment", + "summary": "Delete a tag assignment", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagAssignmentConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged assignments).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.deviceId", + "in": "query", + "required": false, + "description": "Device ID (for device/interface element types).", + "schema": { + "type": "string" + } + }, + { + "name": "key.interfaceId", + "in": "query", + "required": false, + "description": "Interface ID (for interface element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + }, + { + "name": "key.primaryEntityId", + "in": "query", + "required": false, + "description": "Primary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + }, + { + "name": "key.secondaryEntityId", + "in": "query", + "required": false, + "description": "Secondary entity ID (for virtual element type).", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/tag/v2/TagConfig": { + "post": { + "operationId": "tag_SetTag", + "summary": "Create or remove a tag (within a workspace, pending merge)", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagConfig" + } + } + } + } + }, + "get": { + "operationId": "tag_GetTagConfig", + "summary": "Get a tag's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged tags).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "tag_DeleteTag", + "summary": "Delete a tag", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Workspace ID (\"\" for merged tags).", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementType", + "in": "query", + "required": true, + "description": "ELEMENT_TYPE_DEVICE, ELEMENT_TYPE_INTERFACE, or ELEMENT_TYPE_VIRTUAL.", + "schema": { + "type": "string" + } + }, + { + "name": "key.label", + "in": "query", + "required": true, + "description": "Tag label.", + "schema": { + "type": "string" + } + }, + { + "name": "key.value", + "in": "query", + "required": true, + "description": "Tag value.", + "schema": { + "type": "string" + } + }, + { + "name": "key.elementSubType", + "in": "query", + "required": true, + "description": "Tag element sub-type.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/workspace/v1/Workspace": { + "get": { + "operationId": "workspace_GetStatus", + "summary": "Get a workspace's status -- state, build/submit request responses, and any Change Control IDs created on submit", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Unique ID of the workspace.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/workspace/v1/WorkspaceBuild": { + "get": { + "operationId": "workspace_GetBuild", + "summary": "Get the overall status of a workspace build", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceBuildResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "ID of the workspace.", + "schema": { + "type": "string" + } + }, + { + "name": "key.buildId", + "in": "query", + "required": true, + "description": "ID of the build (Workspace.lastBuildId).", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/workspace/v1/WorkspaceBuildDetails": { + "get": { + "operationId": "workspace_GetBuildDetails", + "summary": "Get per-device, per-stage build/validation detail for a workspace build", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceBuildDetailsResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "ID of the workspace.", + "schema": { + "type": "string" + } + }, + { + "name": "key.buildId", + "in": "query", + "required": true, + "description": "ID of the build (Workspace.lastBuildId).", + "schema": { + "type": "string" + } + }, + { + "name": "key.deviceId", + "in": "query", + "required": true, + "description": "ID of the device.", + "schema": { + "type": "string" + } + } + ] + } + }, + "/api/resources/workspace/v1/WorkspaceConfig": { + "post": { + "operationId": "workspace_Set", + "summary": "Create/update a workspace, or kick off an async request (build, submit, etc.) on it via the request field", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceConfigResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceConfig" + } + } + } + } + }, + "get": { + "operationId": "workspace_Get", + "summary": "Get a workspace's configuration", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceConfigResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Unique ID of the workspace.", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "operationId": "workspace_Delete", + "summary": "Delete a workspace", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkspaceConfigDeleteResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "key.workspaceId", + "in": "query", + "required": true, + "description": "Unique ID of the workspace.", + "schema": { + "type": "string" + } + } + ] + } + } + }, + "components": { + "schemas": { + "StringList": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "WorkspaceKey": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Unique ID of the workspace." + } + }, + "required": [ + "workspaceId" + ] + }, + "WorkspaceRequest": { + "type": "string", + "enum": [ + "REQUEST_UNSPECIFIED", + "REQUEST_START_BUILD", + "REQUEST_CANCEL_BUILD", + "REQUEST_SUBMIT", + "REQUEST_ABANDON", + "REQUEST_ROLLBACK", + "REQUEST_SUBMIT_FORCE", + "REQUEST_REBASE" + ], + "description": "Asynchronous operation to kick off on the workspace. REQUEST_START_BUILD compiles and validates the workspace's changes (this single call covers build and validate). REQUEST_SUBMIT submits the workspace to the mainline, creating Change Controls as needed." + }, + "WorkspaceRequestParams": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "Unique ID of this request, used to look up its Response in Workspace.responses." + } + } + }, + "WorkspaceConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/WorkspaceKey" + }, + "displayName": { + "type": "string", + "description": "User-defined name of the workspace." + }, + "description": { + "type": "string", + "description": "Brief description of the workspace." + }, + "request": { + "$ref": "#/components/schemas/WorkspaceRequest", + "description": "Set to kick off an asynchronous operation (build, submit, etc.) on the workspace." + }, + "requestParams": { + "$ref": "#/components/schemas/WorkspaceRequestParams" + }, + "excludeNetworkProvisioning": { + "type": "boolean", + "description": "Used only during Network-Provisioning-to-Studios migration; leave unset otherwise." + } + }, + "required": [ + "key" + ] + }, + "WorkspaceConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/WorkspaceConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "WorkspaceConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/WorkspaceKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "WorkspaceState": { + "type": "string", + "enum": [ + "WORKSPACE_STATE_UNSPECIFIED", + "WORKSPACE_STATE_PENDING", + "WORKSPACE_STATE_SUBMITTED", + "WORKSPACE_STATE_ABANDONED", + "WORKSPACE_STATE_CONFLICTS", + "WORKSPACE_STATE_ROLLED_BACK" + ] + }, + "ResponseStatus": { + "type": "string", + "enum": [ + "RESPONSE_STATUS_UNSPECIFIED", + "RESPONSE_STATUS_SUCCESS", + "RESPONSE_STATUS_FAIL" + ] + }, + "ResponseCode": { + "type": "string", + "enum": [ + "RESPONSE_CODE_UNSPECIFIED", + "RESPONSE_CODE_INACTIVE_DEVICES_EXIST", + "RESPONSE_CODE_DECOMMISSION_DEVICES_INCOMPLETE", + "RESPONSE_CODE_SYNCHRONIZATION_REQUIRED" + ] + }, + "WorkspaceOpResponse": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/ResponseStatus" + }, + "message": { + "type": "string" + }, + "code": { + "$ref": "#/components/schemas/ResponseCode" + } + } + }, + "WorkspaceResponses": { + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/WorkspaceOpResponse" + }, + "description": "Map from request ID (see WorkspaceRequestParams.requestId) to its Response." + } + } + }, + "Workspace": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/WorkspaceKey" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time" + }, + "lastModifiedBy": { + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/WorkspaceState" + }, + "lastBuildId": { + "type": "string", + "description": "ID of the last build for this workspace -- use with workspace_GetBuild / workspace_GetBuildDetails." + }, + "responses": { + "$ref": "#/components/schemas/WorkspaceResponses", + "description": "Responses for every request executed so far on this workspace; check the entry keyed by your requestId to see if a build/submit succeeded." + }, + "ccIds": { + "$ref": "#/components/schemas/StringList", + "description": "Change Control IDs created as a result of submitting this workspace." + }, + "needsBuild": { + "type": "boolean" + }, + "lastRebasedAt": { + "type": "string", + "format": "date-time" + }, + "needsRebase": { + "type": "boolean" + }, + "displayName": { + "type": "string" + }, + "description": { + "type": "string" + }, + "excludeNetworkProvisioning": { + "type": "boolean" + }, + "decommissionRequestIds": { + "type": "object", + "description": "Map of device ID to decommission request UUID, for devices staged for decommission in this workspace." + } + } + }, + "WorkspaceResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Workspace" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "WorkspaceBuildKey": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string" + }, + "buildId": { + "type": "string" + } + }, + "required": [ + "workspaceId", + "buildId" + ] + }, + "BuildState": { + "type": "string", + "enum": [ + "BUILD_STATE_UNSPECIFIED", + "BUILD_STATE_IN_PROGRESS", + "BUILD_STATE_CANCELED", + "BUILD_STATE_SUCCESS", + "BUILD_STATE_FAIL", + "BUILD_STATE_SKIPPED" + ] + }, + "WorkspaceBuild": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/WorkspaceBuildKey" + }, + "state": { + "$ref": "#/components/schemas/BuildState", + "description": "Overall build execution status -- BUILD_STATE_SUCCESS means the workspace built and validated cleanly." + }, + "error": { + "type": "string", + "description": "Set if the build failed early, before per-device results were computed." + }, + "builtBy": { + "type": "string" + }, + "authzResult": { + "type": "object", + "description": "Authorization check result; vendor-defined nested structure preserved as-is." + }, + "studioBuildDetails": { + "type": "object", + "description": "Per-studio build results not specific to a device; vendor-defined nested structure preserved as-is." + }, + "hierarchyBuildStatus": { + "type": "object", + "description": "Hierarchy build results; vendor-defined nested structure preserved as-is." + } + } + }, + "WorkspaceBuildResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/WorkspaceBuild" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "WorkspaceBuildDetailsKey": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string" + }, + "buildId": { + "type": "string" + }, + "deviceId": { + "type": "string" + } + }, + "required": [ + "workspaceId", + "buildId", + "deviceId" + ] + }, + "BuildStage": { + "type": "string", + "enum": [ + "BUILD_STAGE_UNSPECIFIED", + "BUILD_STAGE_INPUT_VALIDATION", + "BUILD_STAGE_CONFIGLET_BUILD", + "BUILD_STAGE_CONFIG_VALIDATION", + "BUILD_STAGE_IMAGE_VALIDATION" + ] + }, + "WorkspaceBuildDetails": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/WorkspaceBuildDetailsKey" + }, + "state": { + "$ref": "#/components/schemas/BuildState" + }, + "stage": { + "$ref": "#/components/schemas/BuildStage" + }, + "inputValidationResults": { + "type": "object", + "description": "Results of the input validation stage; vendor-defined nested structure preserved as-is." + }, + "configletBuildResults": { + "type": "object", + "description": "Results of the configlet build stage; vendor-defined nested structure preserved as-is." + }, + "configValidationResult": { + "type": "object", + "description": "Result of the config validation stage; vendor-defined nested structure preserved as-is." + }, + "imageValidationResult": { + "type": "object", + "description": "Result of the image validation stage; vendor-defined nested structure preserved as-is." + }, + "configValidationSkipCause": { + "type": "string" + }, + "imageValidationSkipCause": { + "type": "string" + }, + "buildStageState": { + "type": "object", + "description": "State for each build stage; vendor-defined nested structure preserved as-is." + }, + "authzStatus": { + "type": "string" + }, + "configSyncResult": { + "type": "object", + "description": "Result of the config sync; vendor-defined nested structure preserved as-is." + }, + "configSyncSkipCause": { + "type": "string" + } + } + }, + "WorkspaceBuildDetailsResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/WorkspaceBuildDetails" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "InputsKey": { + "type": "object", + "properties": { + "studioId": { + "type": "string", + "description": "ID of the studio, e.g. \"studio-static-configlet\" for the Static Configlet Studio." + }, + "workspaceId": { + "type": "string" + }, + "path": { + "$ref": "#/components/schemas/StringList", + "description": "Path to the input field being set, e.g. [] for the studio's entire root input." + } + }, + "required": [ + "studioId", + "workspaceId", + "path" + ] + }, + "InputsConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/InputsKey" + }, + "remove": { + "type": "boolean", + "description": "Set true to remove the inputs at this path instead of adding/setting them." + }, + "inputs": { + "type": "string", + "description": "Value of the input field at this path, encoded as a JSON string." + } + }, + "required": [ + "key" + ] + }, + "InputsConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/InputsConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "InputsConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/InputsKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "Inputs": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/InputsKey" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time" + }, + "lastModifiedBy": { + "type": "string" + }, + "inputs": { + "type": "string", + "description": "Resolved value of the input field at this path, as a JSON string." + } + } + }, + "InputsResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Inputs" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ChangeControlKey": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Change Control." + } + }, + "required": [ + "id" + ] + }, + "FlagConfig": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + } + } + }, + "Flag": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "user": { + "type": "string" + } + } + }, + "TimestampFlagConfig": { + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "date-time", + "description": "Set to a timestamp to schedule, or omit/null to unschedule." + }, + "notes": { + "type": "string" + } + } + }, + "TimestampFlag": { + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "date-time" + }, + "notes": { + "type": "string" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "user": { + "type": "string" + } + } + }, + "ChangeConfig": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "rootStageId": { + "type": "string", + "description": "ID of the root stage, i.e. the stage that executes first." + }, + "stages": { + "type": "object", + "description": "Map of stage ID to stage configuration; vendor-defined nested structure preserved as-is." + }, + "notes": { + "type": "string" + } + } + }, + "Change": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "rootStageId": { + "type": "string" + }, + "stages": { + "type": "object", + "description": "Map of stage ID to stage configuration and status; vendor-defined nested structure preserved as-is." + }, + "notes": { + "type": "string" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "user": { + "type": "string" + } + } + }, + "ChangeControlStatus": { + "type": "string", + "enum": [ + "CHANGE_CONTROL_STATUS_UNSPECIFIED", + "CHANGE_CONTROL_STATUS_RUNNING", + "CHANGE_CONTROL_STATUS_COMPLETED", + "CHANGE_CONTROL_STATUS_SCHEDULED", + "CHANGE_CONTROL_STATUS_NOT_STARTED" + ] + }, + "ChangeControlConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/ChangeControlKey" + }, + "change": { + "$ref": "#/components/schemas/ChangeConfig" + }, + "start": { + "$ref": "#/components/schemas/FlagConfig", + "description": "Set start.value=true to execute the Change Control, false to stop it." + }, + "schedule": { + "$ref": "#/components/schemas/TimestampFlagConfig", + "description": "Set schedule.value to a timestamp to schedule execution." + } + }, + "required": [ + "key" + ] + }, + "ChangeControlConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/ChangeControlConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ChangeControlConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/ChangeControlKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ChangeControl": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/ChangeControlKey" + }, + "change": { + "$ref": "#/components/schemas/Change" + }, + "approve": { + "$ref": "#/components/schemas/Flag", + "description": "Whether the Change Control has been approved." + }, + "start": { + "$ref": "#/components/schemas/Flag", + "description": "Whether the Change Control has been flagged to start/stop execution." + }, + "status": { + "$ref": "#/components/schemas/ChangeControlStatus" + }, + "error": { + "type": "string", + "description": "Error from execution, if any. No error implies success once status is COMPLETED." + }, + "schedule": { + "$ref": "#/components/schemas/TimestampFlag" + }, + "deviceIds": { + "$ref": "#/components/schemas/StringList", + "description": "Device IDs this Change Control operates on." + }, + "deviceIdToStageIds": { + "type": "object", + "description": "Map of device ID to the stages that apply to it; vendor-defined nested structure preserved as-is." + }, + "creation": { + "type": "object", + "description": "Who/when created this Change Control; vendor-defined nested structure preserved as-is." + } + } + }, + "ChangeControlResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/ChangeControl" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ApproveConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/ChangeControlKey" + }, + "approve": { + "$ref": "#/components/schemas/FlagConfig", + "description": "Set approve.value=true to approve, false to unapprove." + }, + "version": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the Change Control being approved (from changeControl_Get's change.time), required when approve.value=true -- guards against approving a stale/updated Change Control." + }, + "overrideReason": { + "type": "object", + "description": "User-provided reason to override Change Control validation, if applicable." + } + }, + "required": [ + "key" + ] + }, + "ApproveConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/ApproveConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "UUIDKey": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A UUID you generate to identify this onboarding/decommissioning request." + } + }, + "required": [ + "requestId" + ] + }, + "DeviceConfiguration": { + "type": "object", + "properties": { + "options": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Device-specific options for a third-party device, e.g. {\"address\": \"...\", \"community\": \"...\"} for SNMP." + } + } + }, + "DeviceOnboardingConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "hostnameOrIp": { + "type": "string", + "description": "Hostname or IP at which the device can be reached." + }, + "deviceType": { + "type": "string", + "description": "\"eos\" for EOS devices; for third-party devices: \"openconfig\", \"snmp\", \"cvp\", \"mwm\", or \"vCenter\"." + }, + "deviceConfig": { + "$ref": "#/components/schemas/DeviceConfiguration", + "description": "Configuration for a third-party device." + }, + "profileName": { + "type": "string", + "description": "Name of the TerminAttr profile with custom TerminAttr configuration to apply while onboarding." + } + }, + "required": [ + "key", + "hostnameOrIp", + "deviceType" + ] + }, + "DeviceOnboardingConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/DeviceOnboardingConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "DeviceOnboardingConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "OnboardingStatus": { + "type": "string", + "enum": [ + "ONBOARDING_STATUS_UNSPECIFIED", + "ONBOARDING_STATUS_IN_PROGRESS", + "ONBOARDING_STATUS_FAILURE", + "ONBOARDING_STATUS_SUCCESS" + ] + }, + "DeviceOnboarding": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "deviceId": { + "type": "string", + "description": "Unique device ID discovered via onboarding." + }, + "status": { + "$ref": "#/components/schemas/OnboardingStatus" + }, + "error": { + "type": "string", + "description": "Set if status is ONBOARDING_STATUS_FAILURE." + }, + "statusMessage": { + "type": "string", + "description": "Unstructured, display-only progress message." + }, + "profileName": { + "type": "string" + } + } + }, + "DeviceOnboardingResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/DeviceOnboarding" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "DeviceDecommissioningConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "deviceId": { + "type": "string", + "description": "Unique device ID that was discovered via onboarding." + }, + "force": { + "type": "boolean", + "description": "Ignore pending/in-progress blocking tasks and decommission anyway." + }, + "userName": { + "type": "string", + "description": "Name of the user who decommissioned the device." + } + }, + "required": [ + "key", + "deviceId" + ] + }, + "DeviceDecommissioningConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/DeviceDecommissioningConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "DeviceDecommissioningConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "DecommissioningStatus": { + "type": "string", + "enum": [ + "DECOMMISSIONING_STATUS_UNSPECIFIED", + "DECOMMISSIONING_STATUS_IN_PROGRESS", + "DECOMMISSIONING_STATUS_FAILURE", + "DECOMMISSIONING_STATUS_SUCCESS" + ] + }, + "DeviceDecommissioning": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/UUIDKey" + }, + "status": { + "$ref": "#/components/schemas/DecommissioningStatus" + }, + "error": { + "type": "string", + "description": "Set if status is DECOMMISSIONING_STATUS_FAILURE." + }, + "statusMessage": { + "type": "string", + "description": "Unstructured, display-only progress message." + } + } + }, + "DeviceDecommissioningResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/DeviceDecommissioning" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "DeviceKey": { + "type": "object", + "properties": { + "deviceId": { + "type": "string", + "description": "Unique identifier of the device." + } + }, + "required": [ + "deviceId" + ] + }, + "StreamingStatus": { + "type": "string", + "enum": [ + "STREAMING_STATUS_UNSPECIFIED", + "STREAMING_STATUS_INACTIVE", + "STREAMING_STATUS_ACTIVE" + ] + }, + "ExtendedAttributes": { + "type": "object", + "properties": { + "featureEnabled": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "description": "Map of feature name to enabled status; a missing feature is assumed off." + } + } + }, + "Device": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/DeviceKey" + }, + "softwareVersion": { + "type": "string" + }, + "modelName": { + "type": "string" + }, + "hardwareRevision": { + "type": "string" + }, + "fqdn": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "domainName": { + "type": "string" + }, + "systemMacAddress": { + "type": "string" + }, + "bootTime": { + "type": "string", + "format": "date-time" + }, + "streamingStatus": { + "$ref": "#/components/schemas/StreamingStatus" + }, + "extendedAttributes": { + "$ref": "#/components/schemas/ExtendedAttributes" + } + } + }, + "DeviceResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Device" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ProvisioningStatus": { + "type": "string", + "enum": [ + "PROVISIONING_STATUS_UNSPECIFIED", + "PROVISIONING_STATUS_IN_PROGRESS", + "PROVISIONING_STATUS_FAILURE", + "PROVISIONING_STATUS_SUCCESS" + ] + }, + "ProvisionedDevice": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/DeviceKey" + }, + "status": { + "$ref": "#/components/schemas/ProvisioningStatus" + }, + "error": { + "type": "string", + "description": "Set if status is PROVISIONING_STATUS_FAILURE." + }, + "ztpMode": { + "type": "boolean" + }, + "ipAddress": { + "type": "string", + "description": "Current (post-provisioning) IP address of the device." + }, + "provisioningGroupName": { + "type": "string", + "description": "Name of the group/container the device belongs to; \"undefined_container\" if provisioned but ungrouped." + }, + "ipv6Address": { + "type": "string" + } + } + }, + "ProvisionedDeviceResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/ProvisionedDevice" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ElementType": { + "type": "string", + "enum": [ + "ELEMENT_TYPE_UNSPECIFIED", + "ELEMENT_TYPE_DEVICE", + "ELEMENT_TYPE_INTERFACE", + "ELEMENT_TYPE_VIRTUAL" + ] + }, + "ElementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM", + "ELEMENT_SUB_TYPE_APPLICATION", + "ELEMENT_SUB_TYPE_CONNECTIVITY_MONITOR_PROBE" + ] + }, + "CreatorType": { + "type": "string", + "enum": [ + "CREATOR_TYPE_UNSPECIFIED", + "CREATOR_TYPE_SYSTEM", + "CREATOR_TYPE_USER", + "CREATOR_TYPE_EXTERNAL" + ] + }, + "TagKey": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged (published) tags reside." + }, + "elementType": { + "$ref": "#/components/schemas/ElementType" + }, + "label": { + "type": "string", + "description": "Tag label." + }, + "value": { + "type": "string", + "description": "Tag value." + }, + "elementSubType": { + "$ref": "#/components/schemas/ElementSubType" + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "TagConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagKey" + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this tag when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + }, + "TagConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/TagConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "TagConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "Tag": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagKey" + }, + "creatorType": { + "$ref": "#/components/schemas/CreatorType" + }, + "assigned": { + "type": "boolean", + "description": "Whether the tag is currently assigned to any element." + } + } + }, + "TagResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Tag" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "TagAssignmentKey": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged assignments reside." + }, + "elementType": { + "$ref": "#/components/schemas/ElementType" + }, + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "deviceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_DEVICE and ELEMENT_TYPE_INTERFACE." + }, + "interfaceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_INTERFACE." + }, + "elementSubType": { + "$ref": "#/components/schemas/ElementSubType" + }, + "primaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. application ID)." + }, + "secondaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. service ID)." + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "TagAssignmentConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagAssignmentKey" + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this assignment when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + }, + "TagAssignmentConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/TagAssignmentConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "TagAssignmentConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagAssignmentKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "TagAssignment": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/TagAssignmentKey" + }, + "tagCreatorType": { + "$ref": "#/components/schemas/CreatorType" + } + } + }, + "TagAssignmentResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/TagAssignment" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ElementKey": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/ElementType" + }, + "subType": { + "$ref": "#/components/schemas/ElementSubType" + }, + "primaryId": { + "type": "string", + "description": "Device ID (serial number or UUID depending on sub-type); see the vendor docs for the full mapping by type/sub-type." + }, + "secondaryId": { + "type": "string", + "description": "Interface/service ID where applicable; empty for device-level elements." + } + }, + "required": [ + "type", + "subType", + "primaryId", + "secondaryId" + ] + }, + "Element": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/ElementKey" + } + } + }, + "ElementResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Element" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "RepositoryKey": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unique identifier for the image/extension, including its file suffix (.swi, .swix, .rpm; Streaming Agent files must contain \"TerminAttr\")." + } + }, + "required": [ + "name" + ] + }, + "RepositoryConfig": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/RepositoryKey" + }, + "uri": { + "type": "string", + "description": "Arista Software Download site identifier, or the CloudVision file server identifier if uploaded via the Software Upload REST API." + }, + "rebootRequired": { + "type": "boolean", + "description": ".swi images always require a reboot." + } + }, + "required": [ + "key", + "uri" + ] + }, + "RepositoryConfigResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/RepositoryConfig" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "RepositoryConfigDeleteResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/RepositoryKey" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "SoftwareType": { + "type": "string", + "enum": [ + "SOFTWARE_TYPE_UNSPECIFIED", + "SOFTWARE_TYPE_SWI", + "SOFTWARE_TYPE_TERMINATTR", + "SOFTWARE_TYPE_SWIX", + "SOFTWARE_TYPE_RPM" + ] + }, + "DigestType": { + "type": "string", + "enum": [ + "DIGEST_TYPE_UNSPECIFIED", + "DIGEST_TYPE_SHA512" + ] + }, + "Progress": { + "type": "string", + "enum": [ + "PROGRESS_UNSPECIFIED", + "PROGRESS_INITIAL", + "PROGRESS_QUEUED", + "PROGRESS_LOADING", + "PROGRESS_VALIDATING", + "PROGRESS_SAVING", + "PROGRESS_SUCCESS", + "PROGRESS_ERROR" + ] + }, + "RecommendedAction": { + "type": "string", + "enum": [ + "RECOMMENDED_ACTION_UNSPECIFIED", + "RECOMMENDED_ACTION_CONTACT_TAC", + "RECOMMENDED_ACTION_ADD_TOKEN", + "RECOMMENDED_ACTION_UPDATE_TOKEN", + "RECOMMENDED_ACTION_ACCEPT_EULA", + "RECOMMENDED_ACTION_RETRY" + ] + }, + "SoftwareMetadata": { + "type": "object", + "properties": { + "digestType": { + "$ref": "#/components/schemas/DigestType" + }, + "digest": { + "type": "string" + }, + "size": { + "type": "string", + "description": "Size in bytes." + }, + "rebootRequired": { + "type": "boolean" + }, + "softwareType": { + "$ref": "#/components/schemas/SoftwareType" + } + } + }, + "SoftwareStatus": { + "type": "object", + "properties": { + "progress": { + "$ref": "#/components/schemas/Progress" + }, + "message": { + "type": "string" + }, + "recommendedAction": { + "$ref": "#/components/schemas/RecommendedAction" + } + } + }, + "Repository": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/RepositoryKey" + }, + "uploadedBy": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "lastModifiedBy": { + "type": "string" + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time" + }, + "softwareStatus": { + "$ref": "#/components/schemas/SoftwareStatus" + }, + "softwareMetadata": { + "$ref": "#/components/schemas/SoftwareMetadata" + } + } + }, + "RepositoryResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Repository" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "Assignments": { + "type": "object", + "properties": { + "key": { + "$ref": "#/components/schemas/RepositoryKey" + }, + "devices": { + "$ref": "#/components/schemas/StringList", + "description": "Devices whose designed image references this software image." + }, + "ztpUpgradeRules": { + "type": "object", + "description": "ZTP upgrade rules referencing this software image; vendor-defined nested structure preserved as-is." + }, + "studioTagQueries": { + "type": "object", + "description": "Studio tag queries referencing this software image; vendor-defined nested structure preserved as-is." + } + } + }, + "AssignmentsResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Assignments" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "ReleasesStatus": { + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": [ + "LEVEL_UNSPECIFIED", + "LEVEL_INFO", + "LEVEL_WARNING", + "LEVEL_ERROR" + ] + }, + "message": { + "type": "string", + "description": "Status of the latest interaction with Arista's Software Download site." + }, + "recommendedAction": { + "$ref": "#/components/schemas/RecommendedAction" + } + } + }, + "Releases": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/ReleasesStatus" + }, + "uris": { + "$ref": "#/components/schemas/StringList", + "description": "URI paths of software releases available from Arista's Software Download site, usable as RepositoryConfig.uri." + } + } + }, + "ReleasesResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/components/schemas/Releases" + }, + "time": { + "type": "string", + "format": "date-time" + } + } + } + }, + "securitySchemes": { + "bearerAuth": { + "type": "apiKey", + "in": "header", + "name": "Authorization", + "description": "Service-account bearer token. Value format: \"Bearer \". Generate a service account and token in CVaaS under Settings > Service Accounts." + } + } + } +} \ No newline at end of file diff --git a/Arista/CloudVision/README.md b/Arista/CloudVision/README.md new file mode 100644 index 0000000..e3efd46 --- /dev/null +++ b/Arista/CloudVision/README.md @@ -0,0 +1,99 @@ +Arista CloudVision-as-a-Service (CVaaS) is Arista's cloud-hosted network management platform, providing fleet-wide visibility and configuration management for Arista devices through a state-based, resource-oriented API. + +This project provides an OpenAPI spec for automating against CVaaS's Resource APIs via an Integration Model, plus a Studio Project of ready-to-import workflows built on that model. + +## Table of Contents + +- [Contents](#contents) +- [Requirements](#requirements) +- [Integration Configuration](#integration-configuration) +- [OpenAPIs](#openapis) +- [Studio Projects](#studio-projects) + - [Arista CloudVision Project](#arista-cloudvision-project) + - [Folder Structure](#folder-structure) + - [Dependencies](#dependencies) + +## Contents + +| Asset | Description | +|---|---| +| [OpenAPIs/](./OpenAPIs/) | Arista CloudVision Resource API OpenAPI spec | +| [Studio Projects/](./Studio%20Projects/) | Itential Platform project containing all 40 workflows in 6 folders | + +## Requirements + +| Requirement | Version | +|---|---| +| Itential Platform | 6.x | +| `Arista CloudVision:latest` Integration Model | Required to build automation against the OpenAPI spec, and to run the Studio Project below | +| A CVaaS service account | Required to obtain a bearer token | + +## Integration Configuration + +Import `arista_cloudvision_api-latest.json` as an Integration Model in **Admin > Integrations**, then create an integration pointing at your CVaaS tenant's host. + +Authentication is a service-account bearer token: generate one in CVaaS under Settings > Service Accounts, and send it as `Authorization: Bearer ` on every request. + +The instance's `authentication`/`server` properties should look like this once configured: + +```json +{ + "authentication": { + "bearerAuth": { + "Authorization": "Bearer " + } + }, + "server": { + "protocol": "https", + "host": "", + "base_path": "" + } +} +``` + +## OpenAPIs + +| Spec | Version | Operations | Description | +|---|---|---|---| +| [`arista_cloudvision_api-latest.json`](./OpenAPIs/arista_cloudvision_api-latest.json) | latest | 40 | Workspace/Studio/Change Control provisioning, device onboarding/decommissioning, tags, and software management — see breakdown below | + +CloudVision's Resource APIs are gRPC-native; this spec describes Arista's own generated REST/JSON gateway over those same services (introduced in CVP 2021.1.0, still actively maintained), converted from the vendor's published Swagger 2.0 documents to OpenAPI 3.0. + +Resources included, by category: + +- **Workspace**: Create/update (including issuing build, submit, cancel, abandon, or rollback requests), get, delete, get status, get build status, get per-device build detail +- **Studio**: Set/get/delete a studio's input configuration at a path (e.g. push configuration into the Static Configlet Studio), get the resolved input value +- **Change Control**: Create/update (including flagging start/stop/schedule), get configuration, delete, get full status, approve +- **Inventory**: Onboard a device, get/delete an onboarding request, get onboarding status, decommission a device, get/delete a decommissioning request, get decommissioning status, get an inventoried device, get a provisioned device +- **Tags**: Set/get/delete a tag, get a tag's merge-preview or merged state, set/get/delete a tag assignment, get an assignment's merge-preview or merged state, get a tagged element +- **Software Management**: Add/get/delete a software image or extension, get an image's upload/validation status, get an image's device/rule assignments, list releases available from Arista's Software Download site + +A typical Workspace/Studio/Change Control flow: create a workspace, push configuration into a Studio, request a build (a single call that internally validates, compiles, and checks the change), submit the workspace (which creates a Change Control), then approve and start that Change Control. + +Deliberately excludes: every other Studio resource (AssignedTags, AutofillAction, SecretInput, Studio/StudioConfig, StudioSummary) and Change Control's ChangeControlSummary, since they aren't part of the provisioning flow; the "list all" and "get several" operations on every resource, since those are long-lived streaming (chunked NDJSON) responses rather than a single JSON object and don't fit a request/response workflow task; and the rest of CloudVision's resource packages (alerting, dashboards, licensing, identity providers, audit logs, connectivity monitoring, and more) entirely, since they're outside this scope. Several nested vendor structures (build diagnostics, change control stages, ZTP upgrade rules) are preserved as opaque objects rather than fully typed, since they're deep, vendor-internal detail not needed to drive automation against these resources. + +A handful of resource names are prefixed with `Arista` (e.g. `Arista Get Tag`) to avoid colliding with identically-named workflows already published for other products — workflow names are unique across the whole Itential Platform instance, not scoped per-project. + +## Studio Projects + +### Arista CloudVision Project + +Backed by the **`Arista CloudVision:latest`** Integration Model (see [`arista_cloudvision_api-latest.json`](./OpenAPIs/arista_cloudvision_api-latest.json) above). The project contains **40 workflows** organized into **6 folders**. + +#### Folder Structure + +| Folder | Workflows | Scope | +|---|---|---| +| Inventory | 10 | Device onboarding, decommissioning, and status | +| Tags | 9 | Tags and tag assignments | +| Software Management | 6 | Software image/extension management | +| Workspace | 6 | Workspace lifecycle, build/submit requests, build status | +| Change Control | 5 | Change Control lifecycle, status, approval | +| Studio | 4 | Studio input configuration | + +#### Dependencies + +| Dependency | Notes | +|---|---| +| `Arista CloudVision:latest` Integration Model | Import from [`arista_cloudvision_api-latest.json`](./OpenAPIs/arista_cloudvision_api-latest.json) before importing the project | +| `Arista CloudVision` integration instance | Create in **Admin > Integrations** with the connection properties above. Workflows are wired to an integration instance named `Arista CloudVision` — update the `adapter_id` value in each workflow task if yours is named differently | diff --git a/Arista/CloudVision/Studio Projects/Arista CloudVision.project.json b/Arista/CloudVision/Studio Projects/Arista CloudVision.project.json new file mode 100644 index 0000000..67c44c7 --- /dev/null +++ b/Arista/CloudVision/Studio Projects/Arista CloudVision.project.json @@ -0,0 +1,6333 @@ +{ + "_id": "6a83d4855f16a73261948aad", + "name": "Arista CloudVision", + "description": "Workspace, Studio, Change Control, Inventory, Tags, and Software Management workflows backed by the Arista CloudVision Integration Model.", + "components": [ + { + "iid": 0, + "reference": "a21f91b3-11f1-44cf-ac62-88057b5c3b4d", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Create or Update Workspace", + "description": "Create or Update Workspace", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_Set", + "canvasName": "workspace_Set", + "summary": "workspace_Set", + "description": "workspace_Set", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Unique ID of the workspace." + } + }, + "required": [ + "workspaceId" + ] + }, + "displayName": { + "type": "string", + "description": "User-defined name of the workspace." + }, + "description": { + "type": "string", + "description": "Brief description of the workspace." + }, + "request": { + "description": "Set to kick off an asynchronous operation (build, submit, etc.) on the workspace.", + "type": "string", + "enum": [ + "REQUEST_UNSPECIFIED", + "REQUEST_START_BUILD", + "REQUEST_CANCEL_BUILD", + "REQUEST_SUBMIT", + "REQUEST_ABANDON", + "REQUEST_ROLLBACK", + "REQUEST_SUBMIT_FORCE", + "REQUEST_REBASE" + ] + }, + "requestParams": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "Unique ID of this request, used to look up its Response in Workspace.responses." + } + } + }, + "excludeNetworkProvisioning": { + "type": "boolean", + "description": "Used only during Network-Provisioning-to-Studios migration; leave unset otherwise." + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Unique ID of the workspace." + } + }, + "required": [ + "workspaceId" + ] + }, + "displayName": { + "type": "string", + "description": "User-defined name of the workspace." + }, + "description": { + "type": "string", + "description": "Brief description of the workspace." + }, + "request": { + "description": "Set to kick off an asynchronous operation (build, submit, etc.) on the workspace.", + "type": "string", + "enum": [ + "REQUEST_UNSPECIFIED", + "REQUEST_START_BUILD", + "REQUEST_CANCEL_BUILD", + "REQUEST_SUBMIT", + "REQUEST_ABANDON", + "REQUEST_ROLLBACK", + "REQUEST_SUBMIT_FORCE", + "REQUEST_REBASE" + ] + }, + "requestParams": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "Unique ID of this request, used to look up its Response in Workspace.responses." + } + } + }, + "excludeNetworkProvisioning": { + "type": "boolean", + "description": "Used only during Network-Provisioning-to-Studios migration; leave unset otherwise." + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "ce564466-906e-4703-8254-20d0d22e716f", + "created": "2026-08-17T21:45:16.075Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 1, + "reference": "8e100d93-174b-4aae-8dd1-eefa680a2d73", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Get Workspace Configuration", + "description": "Get Workspace Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_Get", + "canvasName": "workspace_Get", + "summary": "workspace_Get", + "description": "workspace_Get", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId" + }, + "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": { + "key.workspaceId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "a0624158-c8eb-44de-bed9-3c34b5d9a15b", + "created": "2026-08-17T21:45:16.128Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 2, + "reference": "e2a92923-5efb-4981-b8c3-0e43ba4f79c3", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Delete Workspace", + "description": "Delete Workspace", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_Delete", + "canvasName": "workspace_Delete", + "summary": "workspace_Delete", + "description": "workspace_Delete", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId" + }, + "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": { + "key.workspaceId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "fedfb53a-db9e-4a09-96f5-bdd8727f14dd", + "created": "2026-08-17T21:45:16.169Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 3, + "reference": "ef270385-18be-4977-8589-c3078b4b1056", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Get Workspace Status", + "description": "Get Workspace Status", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_GetStatus", + "canvasName": "workspace_GetStatus", + "summary": "workspace_GetStatus", + "description": "workspace_GetStatus", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId" + }, + "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": { + "key.workspaceId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "c9a62d0a-ce11-4b18-9758-e361c0d6f22a", + "created": "2026-08-17T21:45:16.208Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 4, + "reference": "ad1f629b-1f9c-4552-ab62-4850d126b531", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Get Workspace Build", + "description": "Get Workspace Build", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_GetBuild", + "canvasName": "workspace_GetBuild", + "summary": "workspace_GetBuild", + "description": "workspace_GetBuild", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.buildId": "$var.job.key.buildId" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.buildId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.buildId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.buildId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "eaae888c-f491-4ed3-9b95-08549c164a03", + "created": "2026-08-17T21:45:16.248Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 5, + "reference": "4778cace-4471-4019-8a31-e8daf5b7ee0d", + "type": "workflow", + "folder": "/Workspace", + "document": { + "name": "Get Workspace Build Details", + "description": "Get Workspace Build Details", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "workspace_GetBuildDetails", + "canvasName": "workspace_GetBuildDetails", + "summary": "workspace_GetBuildDetails", + "description": "workspace_GetBuildDetails", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.buildId": "$var.job.key.buildId", + "key.deviceId": "$var.job.key.deviceId" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.buildId": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.buildId", + "key.deviceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.buildId": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "b5bf7682-c32c-4591-8770-7d9c5aa993b1", + "created": "2026-08-17T21:45:16.290Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 6, + "reference": "e82627cc-bd1e-41c6-a569-44788b815e67", + "type": "workflow", + "folder": "/Studio", + "document": { + "name": "Set Studio Inputs", + "description": "Set Studio Inputs", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "studio_SetInputs", + "canvasName": "studio_SetInputs", + "summary": "studio_SetInputs", + "description": "studio_SetInputs", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "studioId": { + "type": "string", + "description": "ID of the studio, e.g. \"studio-static-configlet\" for the Static Configlet Studio." + }, + "workspaceId": { + "type": "string" + }, + "path": { + "description": "Path to the input field being set, e.g. [] for the studio's entire root input.", + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "required": [ + "studioId", + "workspaceId", + "path" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove the inputs at this path instead of adding/setting them." + }, + "inputs": { + "type": "string", + "description": "Value of the input field at this path, encoded as a JSON string." + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "studioId": { + "type": "string", + "description": "ID of the studio, e.g. \"studio-static-configlet\" for the Static Configlet Studio." + }, + "workspaceId": { + "type": "string" + }, + "path": { + "description": "Path to the input field being set, e.g. [] for the studio's entire root input.", + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "required": [ + "studioId", + "workspaceId", + "path" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove the inputs at this path instead of adding/setting them." + }, + "inputs": { + "type": "string", + "description": "Value of the input field at this path, encoded as a JSON string." + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "e7c026f6-3b0a-43ba-9555-ac94110f5530", + "created": "2026-08-17T21:45:16.329Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 7, + "reference": "09e6de7d-6708-42d6-ac2e-b666e0e49f1b", + "type": "workflow", + "folder": "/Studio", + "document": { + "name": "Get Studio Inputs Configuration", + "description": "Get Studio Inputs Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "studio_GetInputsConfig", + "canvasName": "studio_GetInputsConfig", + "summary": "studio_GetInputsConfig", + "description": "studio_GetInputsConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.studioId": "$var.job.key.studioId", + "key.workspaceId": "$var.job.key.workspaceId", + "key.path.values": "$var.job.key.path.values" + }, + "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": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "key.studioId", + "key.workspaceId", + "key.path.values" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "e916146c-6a74-4d38-9b79-6953a52852f0", + "created": "2026-08-17T21:45:16.366Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 8, + "reference": "4fe8eddc-edb6-47f3-90ff-19364a477607", + "type": "workflow", + "folder": "/Studio", + "document": { + "name": "Delete Studio Inputs", + "description": "Delete Studio Inputs", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "studio_DeleteInputs", + "canvasName": "studio_DeleteInputs", + "summary": "studio_DeleteInputs", + "description": "studio_DeleteInputs", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.studioId": "$var.job.key.studioId", + "key.workspaceId": "$var.job.key.workspaceId", + "key.path.values": "$var.job.key.path.values" + }, + "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": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "key.studioId", + "key.workspaceId", + "key.path.values" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "efae3922-25d6-4d50-abc8-4cbba2e74acc", + "created": "2026-08-17T21:45:16.406Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 9, + "reference": "6c4418a4-ce96-4bb1-9cf1-a2ce5432675f", + "type": "workflow", + "folder": "/Studio", + "document": { + "name": "Get Resolved Studio Inputs", + "description": "Get Resolved Studio Inputs", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "studio_GetResolvedInputs", + "canvasName": "studio_GetResolvedInputs", + "summary": "studio_GetResolvedInputs", + "description": "studio_GetResolvedInputs", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.studioId": "$var.job.key.studioId", + "key.workspaceId": "$var.job.key.workspaceId", + "key.path.values": "$var.job.key.path.values" + }, + "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": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "key.studioId", + "key.workspaceId", + "key.path.values" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.studioId": { + "type": "string" + }, + "key.workspaceId": { + "type": "string" + }, + "key.path.values": { + "type": "array", + "items": { + "type": "string" + } + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "5a1219fd-263d-4d6c-a3c7-f84f1acf47f1", + "created": "2026-08-17T21:45:16.453Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 10, + "reference": "0751fba4-677a-40c5-a500-e8fea9a1540d", + "type": "workflow", + "folder": "/Change Control", + "document": { + "name": "Create or Update Change Control", + "description": "Create or Update Change Control", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "changeControl_Set", + "canvasName": "changeControl_Set", + "summary": "changeControl_Set", + "description": "changeControl_Set", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Change Control." + } + }, + "required": [ + "id" + ] + }, + "change": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "rootStageId": { + "type": "string", + "description": "ID of the root stage, i.e. the stage that executes first." + }, + "stages": { + "type": "object", + "description": "Map of stage ID to stage configuration; vendor-defined nested structure preserved as-is." + }, + "notes": { + "type": "string" + } + } + }, + "start": { + "description": "Set start.value=true to execute the Change Control, false to stop it.", + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + } + } + }, + "schedule": { + "description": "Set schedule.value to a timestamp to schedule execution.", + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "date-time", + "description": "Set to a timestamp to schedule, or omit/null to unschedule." + }, + "notes": { + "type": "string" + } + } + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Change Control." + } + }, + "required": [ + "id" + ] + }, + "change": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "rootStageId": { + "type": "string", + "description": "ID of the root stage, i.e. the stage that executes first." + }, + "stages": { + "type": "object", + "description": "Map of stage ID to stage configuration; vendor-defined nested structure preserved as-is." + }, + "notes": { + "type": "string" + } + } + }, + "start": { + "description": "Set start.value=true to execute the Change Control, false to stop it.", + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + } + } + }, + "schedule": { + "description": "Set schedule.value to a timestamp to schedule execution.", + "type": "object", + "properties": { + "value": { + "type": "string", + "format": "date-time", + "description": "Set to a timestamp to schedule, or omit/null to unschedule." + }, + "notes": { + "type": "string" + } + } + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "a97f3311-11bb-4538-82b4-bbb288b07d2a", + "created": "2026-08-17T21:45:16.498Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 11, + "reference": "46d883de-4ab7-4ebc-a7d3-c6854e964302", + "type": "workflow", + "folder": "/Change Control", + "document": { + "name": "Get Change Control Configuration", + "description": "Get Change Control Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "changeControl_GetConfig", + "canvasName": "changeControl_GetConfig", + "summary": "changeControl_GetConfig", + "description": "changeControl_GetConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.id": "$var.job.key.id" + }, + "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": { + "key.id": { + "type": "string" + } + }, + "required": [ + "key.id" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.id": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "c96e5fc5-c3a5-421e-aad9-b6071567fa67", + "created": "2026-08-17T21:45:16.538Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 12, + "reference": "8ae9ca23-043e-4069-b8cd-f9028656e9f5", + "type": "workflow", + "folder": "/Change Control", + "document": { + "name": "Delete Change Control", + "description": "Delete Change Control", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "changeControl_Delete", + "canvasName": "changeControl_Delete", + "summary": "changeControl_Delete", + "description": "changeControl_Delete", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.id": "$var.job.key.id" + }, + "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": { + "key.id": { + "type": "string" + } + }, + "required": [ + "key.id" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.id": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "d321a937-a1a8-4757-be84-ff4fd07d0dbc", + "created": "2026-08-17T21:45:16.577Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 13, + "reference": "9b22c135-7fd2-486d-b0bf-ea3900ed4578", + "type": "workflow", + "folder": "/Change Control", + "document": { + "name": "Get Change Control Status", + "description": "Get Change Control Status", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "changeControl_Get", + "canvasName": "changeControl_Get", + "summary": "changeControl_Get", + "description": "changeControl_Get", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.id": "$var.job.key.id" + }, + "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": { + "key.id": { + "type": "string" + } + }, + "required": [ + "key.id" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.id": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "137a59aa-afb9-41d3-b114-30858e28c7a5", + "created": "2026-08-17T21:45:16.628Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 14, + "reference": "ef4043bc-6063-45ae-84c4-7219e4abc6a0", + "type": "workflow", + "folder": "/Change Control", + "document": { + "name": "Approve Change Control", + "description": "Approve Change Control", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "changeControl_SetApproval", + "canvasName": "changeControl_SetApproval", + "summary": "changeControl_SetApproval", + "description": "changeControl_SetApproval", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Change Control." + } + }, + "required": [ + "id" + ] + }, + "approve": { + "description": "Set approve.value=true to approve, false to unapprove.", + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + } + } + }, + "version": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the Change Control being approved (from changeControl_Get's change.time), required when approve.value=true -- guards against approving a stale/updated Change Control." + }, + "overrideReason": { + "type": "object", + "description": "User-provided reason to override Change Control validation, if applicable." + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the Change Control." + } + }, + "required": [ + "id" + ] + }, + "approve": { + "description": "Set approve.value=true to approve, false to unapprove.", + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "notes": { + "type": "string" + } + } + }, + "version": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the Change Control being approved (from changeControl_Get's change.time), required when approve.value=true -- guards against approving a stale/updated Change Control." + }, + "overrideReason": { + "type": "object", + "description": "User-provided reason to override Change Control validation, if applicable." + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "1dc7ff6f-fa5a-4d36-8a0d-31b715ebd041", + "created": "2026-08-17T21:45:16.666Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 15, + "reference": "e7d10e43-bf98-4793-931e-b00f93e59a54", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Onboard Device", + "description": "Onboard Device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_OnboardDevice", + "canvasName": "inventory_OnboardDevice", + "summary": "inventory_OnboardDevice", + "description": "inventory_OnboardDevice", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A UUID you generate to identify this onboarding/decommissioning request." + } + }, + "required": [ + "requestId" + ] + }, + "hostnameOrIp": { + "type": "string", + "description": "Hostname or IP at which the device can be reached." + }, + "deviceType": { + "type": "string", + "description": "\"eos\" for EOS devices; for third-party devices: \"openconfig\", \"snmp\", \"cvp\", \"mwm\", or \"vCenter\"." + }, + "deviceConfig": { + "description": "Configuration for a third-party device.", + "type": "object", + "properties": { + "options": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Device-specific options for a third-party device, e.g. {\"address\": \"...\", \"community\": \"...\"} for SNMP." + } + } + }, + "profileName": { + "type": "string", + "description": "Name of the TerminAttr profile with custom TerminAttr configuration to apply while onboarding." + } + }, + "required": [ + "key", + "hostnameOrIp", + "deviceType" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A UUID you generate to identify this onboarding/decommissioning request." + } + }, + "required": [ + "requestId" + ] + }, + "hostnameOrIp": { + "type": "string", + "description": "Hostname or IP at which the device can be reached." + }, + "deviceType": { + "type": "string", + "description": "\"eos\" for EOS devices; for third-party devices: \"openconfig\", \"snmp\", \"cvp\", \"mwm\", or \"vCenter\"." + }, + "deviceConfig": { + "description": "Configuration for a third-party device.", + "type": "object", + "properties": { + "options": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Device-specific options for a third-party device, e.g. {\"address\": \"...\", \"community\": \"...\"} for SNMP." + } + } + }, + "profileName": { + "type": "string", + "description": "Name of the TerminAttr profile with custom TerminAttr configuration to apply while onboarding." + } + }, + "required": [ + "key", + "hostnameOrIp", + "deviceType" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "3b77cb61-bc2e-4369-968e-52fbc043523b", + "created": "2026-08-18T03:37:07.227Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 16, + "reference": "2de9147b-b727-435e-9306-62fbf212c45e", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Onboarding Request Configuration", + "description": "Get Onboarding Request Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetOnboardingConfig", + "canvasName": "inventory_GetOnboardingConfig", + "summary": "inventory_GetOnboardingConfig", + "description": "inventory_GetOnboardingConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "1c3a8797-aa01-4724-aeaa-e8659710137e", + "created": "2026-08-18T03:37:07.290Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 17, + "reference": "45ce9c5e-cb4f-4659-af3e-711a5d65c06d", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Delete Onboarding Request", + "description": "Delete Onboarding Request", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_DeleteOnboardingRequest", + "canvasName": "inventory_DeleteOnboardingRequest", + "summary": "inventory_DeleteOnboardingRequest", + "description": "inventory_DeleteOnboardingRequest", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "be20c607-e7d7-4cf0-bb63-e9324e5426bf", + "created": "2026-08-18T03:37:07.351Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 18, + "reference": "01820ab0-a236-42bd-ab73-3d7bac4ade83", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Onboarding Status", + "description": "Get Onboarding Status", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetOnboardingStatus", + "canvasName": "inventory_GetOnboardingStatus", + "summary": "inventory_GetOnboardingStatus", + "description": "inventory_GetOnboardingStatus", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "656f0944-d4aa-4949-86c5-18f137a8cf22", + "created": "2026-08-18T03:37:07.391Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 19, + "reference": "5e541a08-eb3e-4cd3-b8f7-5d44f473de90", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Decommission Device", + "description": "Decommission Device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_DecommissionDevice", + "canvasName": "inventory_DecommissionDevice", + "summary": "inventory_DecommissionDevice", + "description": "inventory_DecommissionDevice", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A UUID you generate to identify this onboarding/decommissioning request." + } + }, + "required": [ + "requestId" + ] + }, + "deviceId": { + "type": "string", + "description": "Unique device ID that was discovered via onboarding." + }, + "force": { + "type": "boolean", + "description": "Ignore pending/in-progress blocking tasks and decommission anyway." + }, + "userName": { + "type": "string", + "description": "Name of the user who decommissioned the device." + } + }, + "required": [ + "key", + "deviceId" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "requestId": { + "type": "string", + "description": "A UUID you generate to identify this onboarding/decommissioning request." + } + }, + "required": [ + "requestId" + ] + }, + "deviceId": { + "type": "string", + "description": "Unique device ID that was discovered via onboarding." + }, + "force": { + "type": "boolean", + "description": "Ignore pending/in-progress blocking tasks and decommission anyway." + }, + "userName": { + "type": "string", + "description": "Name of the user who decommissioned the device." + } + }, + "required": [ + "key", + "deviceId" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "5abe7c0c-cca2-4e8d-bb3c-0c093370142b", + "created": "2026-08-18T03:37:07.427Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 20, + "reference": "422519a2-99da-4a77-940e-765c0aafe1f1", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Decommissioning Request Configuration", + "description": "Get Decommissioning Request Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetDecommissioningConfig", + "canvasName": "inventory_GetDecommissioningConfig", + "summary": "inventory_GetDecommissioningConfig", + "description": "inventory_GetDecommissioningConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "bfd609f3-3f2a-4efe-9c76-953557dc9f04", + "created": "2026-08-18T03:37:07.465Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 21, + "reference": "5846a3b7-b2da-4119-96be-4be29ade2fdd", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Delete Decommissioning Request", + "description": "Delete Decommissioning Request", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_DeleteDecommissioningRequest", + "canvasName": "inventory_DeleteDecommissioningRequest", + "summary": "inventory_DeleteDecommissioningRequest", + "description": "inventory_DeleteDecommissioningRequest", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "81f91d1d-4dd9-4e71-8d40-d991730a581f", + "created": "2026-08-18T03:37:07.505Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 22, + "reference": "9d3ca1ec-cb7e-4c37-a869-b7df4979f81c", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Decommissioning Status", + "description": "Get Decommissioning Status", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetDecommissioningStatus", + "canvasName": "inventory_GetDecommissioningStatus", + "summary": "inventory_GetDecommissioningStatus", + "description": "inventory_GetDecommissioningStatus", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.requestId": "$var.job.key.requestId" + }, + "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": { + "key.requestId": { + "type": "string" + } + }, + "required": [ + "key.requestId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.requestId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "48853f19-b964-40b3-b489-2c8c179690fa", + "created": "2026-08-18T03:37:07.553Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 23, + "reference": "94e72d4b-0d51-4494-82a4-269c844a1693", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Inventoried Device", + "description": "Get Inventoried Device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetDevice", + "canvasName": "inventory_GetDevice", + "summary": "inventory_GetDevice", + "description": "inventory_GetDevice", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.deviceId": "$var.job.key.deviceId" + }, + "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": { + "key.deviceId": { + "type": "string" + } + }, + "required": [ + "key.deviceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.deviceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "5886b0cd-dc1a-4742-aa93-71bfd87b5bf2", + "created": "2026-08-18T03:37:07.587Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 24, + "reference": "a87fb6f5-ce42-4f25-a34c-0c89806828c3", + "type": "workflow", + "folder": "/Inventory", + "document": { + "name": "Get Provisioned Device", + "description": "Get Provisioned Device", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "inventory_GetProvisionedDevice", + "canvasName": "inventory_GetProvisionedDevice", + "summary": "inventory_GetProvisionedDevice", + "description": "inventory_GetProvisionedDevice", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.deviceId": "$var.job.key.deviceId" + }, + "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": { + "key.deviceId": { + "type": "string" + } + }, + "required": [ + "key.deviceId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.deviceId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "036f4703-91a9-4c05-a2a7-46ae6218622a", + "created": "2026-08-18T03:37:07.621Z", + "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": "6837314a-6b93-4ae4-9b59-ba31f930ce0d", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Set Tag", + "description": "Set Tag", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_SetTag", + "canvasName": "tag_SetTag", + "summary": "tag_SetTag", + "description": "tag_SetTag", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged (published) tags reside." + }, + "elementType": { + "type": "string", + "enum": [ + "ELEMENT_TYPE_UNSPECIFIED", + "ELEMENT_TYPE_DEVICE", + "ELEMENT_TYPE_INTERFACE", + "ELEMENT_TYPE_VIRTUAL" + ] + }, + "label": { + "type": "string", + "description": "Tag label." + }, + "value": { + "type": "string", + "description": "Tag value." + }, + "elementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM", + "ELEMENT_SUB_TYPE_APPLICATION", + "ELEMENT_SUB_TYPE_CONNECTIVITY_MONITOR_PROBE" + ] + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this tag when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged (published) tags reside." + }, + "elementType": { + "type": "string", + "enum": [ + "ELEMENT_TYPE_UNSPECIFIED", + "ELEMENT_TYPE_DEVICE", + "ELEMENT_TYPE_INTERFACE", + "ELEMENT_TYPE_VIRTUAL" + ] + }, + "label": { + "type": "string", + "description": "Tag label." + }, + "value": { + "type": "string", + "description": "Tag value." + }, + "elementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM", + "ELEMENT_SUB_TYPE_APPLICATION", + "ELEMENT_SUB_TYPE_CONNECTIVITY_MONITOR_PROBE" + ] + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this tag when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "15c2f9f1-0741-4214-9c22-af4dd68784b8", + "created": "2026-08-18T03:37:07.658Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 26, + "reference": "56a35d7b-4e4a-45e2-8954-0eee9a5cfc5b", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Get Tag Configuration", + "description": "Get Tag Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_GetTagConfig", + "canvasName": "tag_GetTagConfig", + "summary": "tag_GetTagConfig", + "description": "tag_GetTagConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "d68828da-2e44-4b04-98f5-9f2e48078ed3", + "created": "2026-08-18T03:37:07.692Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 27, + "reference": "ce316e3d-6cdf-4efa-b35a-e0da60ac3e37", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Arista Delete Tag", + "description": "Arista Delete Tag", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_DeleteTag", + "canvasName": "tag_DeleteTag", + "summary": "tag_DeleteTag", + "description": "tag_DeleteTag", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "6846a138-f0e2-4b3e-87c8-03bc4721114d", + "created": "2026-08-18T03:37:07.734Z", + "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": "fdf37957-04f5-43ee-b33d-7fe65b9932aa", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Arista Get Tag", + "description": "Arista Get Tag", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_GetTag", + "canvasName": "tag_GetTag", + "summary": "tag_GetTag", + "description": "tag_GetTag", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "cf750cc5-24bd-4800-b3ac-9361f859320c", + "created": "2026-08-18T03:37:07.779Z", + "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": "6c9e2eff-c74d-498d-a50b-30457c6ec309", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Set Tag Assignment", + "description": "Set Tag Assignment", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_SetAssignment", + "canvasName": "tag_SetAssignment", + "summary": "tag_SetAssignment", + "description": "tag_SetAssignment", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged assignments reside." + }, + "elementType": { + "type": "string", + "enum": [ + "ELEMENT_TYPE_UNSPECIFIED", + "ELEMENT_TYPE_DEVICE", + "ELEMENT_TYPE_INTERFACE", + "ELEMENT_TYPE_VIRTUAL" + ] + }, + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "deviceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_DEVICE and ELEMENT_TYPE_INTERFACE." + }, + "interfaceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_INTERFACE." + }, + "elementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM", + "ELEMENT_SUB_TYPE_APPLICATION", + "ELEMENT_SUB_TYPE_CONNECTIVITY_MONITOR_PROBE" + ] + }, + "primaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. application ID)." + }, + "secondaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. service ID)." + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this assignment when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "workspaceId": { + "type": "string", + "description": "Workspace ID; the special ID \"\" identifies where merged assignments reside." + }, + "elementType": { + "type": "string", + "enum": [ + "ELEMENT_TYPE_UNSPECIFIED", + "ELEMENT_TYPE_DEVICE", + "ELEMENT_TYPE_INTERFACE", + "ELEMENT_TYPE_VIRTUAL" + ] + }, + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "deviceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_DEVICE and ELEMENT_TYPE_INTERFACE." + }, + "interfaceId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_INTERFACE." + }, + "elementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM", + "ELEMENT_SUB_TYPE_APPLICATION", + "ELEMENT_SUB_TYPE_CONNECTIVITY_MONITOR_PROBE" + ] + }, + "primaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. application ID)." + }, + "secondaryEntityId": { + "type": "string", + "description": "Set for ELEMENT_TYPE_VIRTUAL (e.g. service ID)." + } + }, + "required": [ + "workspaceId", + "elementType", + "label", + "value", + "elementSubType" + ] + }, + "remove": { + "type": "boolean", + "description": "Set true to remove this assignment when the encompassing workspace merges." + } + }, + "required": [ + "key" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "1f8cf375-922c-4d8f-a86c-eb883ff03381", + "created": "2026-08-18T03:37:07.809Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 30, + "reference": "6c75b59f-68aa-420b-acc9-4ec3e391ea51", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Get Tag Assignment Configuration", + "description": "Get Tag Assignment Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_GetAssignmentConfig", + "canvasName": "tag_GetAssignmentConfig", + "summary": "tag_GetAssignmentConfig", + "description": "tag_GetAssignmentConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType", + "key.deviceId": "$var.job.key.deviceId", + "key.interfaceId": "$var.job.key.interfaceId", + "key.primaryEntityId": "$var.job.key.primaryEntityId", + "key.secondaryEntityId": "$var.job.key.secondaryEntityId" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType", + "key.deviceId", + "key.interfaceId", + "key.primaryEntityId", + "key.secondaryEntityId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "523ffc94-9f39-48f6-8ea8-3b509e3d33bc", + "created": "2026-08-18T03:37:07.841Z", + "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": "37d462b9-c460-43b5-8936-e1c232f8ec74", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Delete Tag Assignment", + "description": "Delete Tag Assignment", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_DeleteAssignment", + "canvasName": "tag_DeleteAssignment", + "summary": "tag_DeleteAssignment", + "description": "tag_DeleteAssignment", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType", + "key.deviceId": "$var.job.key.deviceId", + "key.interfaceId": "$var.job.key.interfaceId", + "key.primaryEntityId": "$var.job.key.primaryEntityId", + "key.secondaryEntityId": "$var.job.key.secondaryEntityId" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType", + "key.deviceId", + "key.interfaceId", + "key.primaryEntityId", + "key.secondaryEntityId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "969d7582-0ba2-4660-8b2c-7c096a8ca061", + "created": "2026-08-18T03:37:07.875Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 32, + "reference": "1a23dd5a-0407-4e3e-aae8-c85639230a4b", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Get Tag Assignment", + "description": "Get Tag Assignment", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_GetAssignment", + "canvasName": "tag_GetAssignment", + "summary": "tag_GetAssignment", + "description": "tag_GetAssignment", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.workspaceId": "$var.job.key.workspaceId", + "key.elementType": "$var.job.key.elementType", + "key.label": "$var.job.key.label", + "key.value": "$var.job.key.value", + "key.elementSubType": "$var.job.key.elementSubType", + "key.deviceId": "$var.job.key.deviceId", + "key.interfaceId": "$var.job.key.interfaceId", + "key.primaryEntityId": "$var.job.key.primaryEntityId", + "key.secondaryEntityId": "$var.job.key.secondaryEntityId" + }, + "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": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + } + }, + "required": [ + "key.workspaceId", + "key.elementType", + "key.label", + "key.value", + "key.elementSubType", + "key.deviceId", + "key.interfaceId", + "key.primaryEntityId", + "key.secondaryEntityId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.workspaceId": { + "type": "string" + }, + "key.elementType": { + "type": "string" + }, + "key.label": { + "type": "string" + }, + "key.value": { + "type": "string" + }, + "key.elementSubType": { + "type": "string" + }, + "key.deviceId": { + "type": "string" + }, + "key.interfaceId": { + "type": "string" + }, + "key.primaryEntityId": { + "type": "string" + }, + "key.secondaryEntityId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "53d96c02-8f11-462a-b21e-2b94337c7d5b", + "created": "2026-08-18T03:37:07.907Z", + "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": "6a414f17-b29c-4ee2-920e-37174c82a4c0", + "type": "workflow", + "folder": "/Tags", + "document": { + "name": "Get Tagged Element", + "description": "Get Tagged Element", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "tag_GetElement", + "canvasName": "tag_GetElement", + "summary": "tag_GetElement", + "description": "tag_GetElement", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.type": "$var.job.key.type", + "key.subType": "$var.job.key.subType", + "key.primaryId": "$var.job.key.primaryId", + "key.secondaryId": "$var.job.key.secondaryId" + }, + "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": { + "key.type": { + "type": "string" + }, + "key.subType": { + "type": "string" + }, + "key.primaryId": { + "type": "string" + }, + "key.secondaryId": { + "type": "string" + } + }, + "required": [ + "key.type", + "key.subType", + "key.primaryId", + "key.secondaryId" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.type": { + "type": "string" + }, + "key.subType": { + "type": "string" + }, + "key.primaryId": { + "type": "string" + }, + "key.secondaryId": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "b9cf6d39-2cc8-4a85-90fc-6267978af8c7", + "created": "2026-08-18T03:37:07.935Z", + "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": "c7e71f69-b031-41c1-890c-dd6e649a6b42", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "Add Software Image", + "description": "Add Software Image", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_AddImage", + "canvasName": "software_AddImage", + "summary": "software_AddImage", + "description": "software_AddImage", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "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": { + "key": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unique identifier for the image/extension, including its file suffix (.swi, .swix, .rpm; Streaming Agent files must contain \"TerminAttr\")." + } + }, + "required": [ + "name" + ] + }, + "uri": { + "type": "string", + "description": "Arista Software Download site identifier, or the CloudVision file server identifier if uploaded via the Software Upload REST API." + }, + "rebootRequired": { + "type": "boolean", + "description": ".swi images always require a reboot." + } + }, + "required": [ + "key", + "uri" + ] + } + }, + "required": [ + "spec" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "spec": { + "type": "object", + "properties": { + "key": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unique identifier for the image/extension, including its file suffix (.swi, .swix, .rpm; Streaming Agent files must contain \"TerminAttr\")." + } + }, + "required": [ + "name" + ] + }, + "uri": { + "type": "string", + "description": "Arista Software Download site identifier, or the CloudVision file server identifier if uploaded via the Software Upload REST API." + }, + "rebootRequired": { + "type": "boolean", + "description": ".swi images always require a reboot." + } + }, + "required": [ + "key", + "uri" + ] + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "2edfb516-71f5-4eaf-9b01-6ef1731a628a", + "created": "2026-08-18T03:37:07.968Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 35, + "reference": "7e812eac-45d1-45e8-bbe7-0e7a5ff265ec", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "Get Software Image Configuration", + "description": "Get Software Image Configuration", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_GetRepositoryConfig", + "canvasName": "software_GetRepositoryConfig", + "summary": "software_GetRepositoryConfig", + "description": "software_GetRepositoryConfig", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.name": "$var.job.key.name" + }, + "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": { + "key.name": { + "type": "string" + } + }, + "required": [ + "key.name" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.name": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "c8702c27-a33f-48e9-855f-9dc09b4cee48", + "created": "2026-08-18T03:37:08.008Z", + "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": "6de99649-0e66-4bf2-b4b5-cd1be4ee4dd9", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "Delete Software Image", + "description": "Delete Software Image", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_DeleteImage", + "canvasName": "software_DeleteImage", + "summary": "software_DeleteImage", + "description": "software_DeleteImage", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.name": "$var.job.key.name" + }, + "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": { + "key.name": { + "type": "string" + } + }, + "required": [ + "key.name" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.name": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "2c92a74f-eb88-4550-9eee-85a677908166", + "created": "2026-08-18T03:37:08.036Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + }, + { + "iid": 37, + "reference": "e1f866fe-b7bd-44da-8c8e-ee24e396e886", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "Get Software Image Status", + "description": "Get Software Image Status", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_GetRepository", + "canvasName": "software_GetRepository", + "summary": "software_GetRepository", + "description": "software_GetRepository", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.name": "$var.job.key.name" + }, + "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": { + "key.name": { + "type": "string" + } + }, + "required": [ + "key.name" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.name": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "17e7a839-bad0-478d-9128-95426bc8a3f9", + "created": "2026-08-18T03:37:08.063Z", + "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": "e82620d2-9522-4be3-ae5e-962a54f38283", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "Get Software Image Assignments", + "description": "Get Software Image Assignments", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_GetAssignments", + "canvasName": "software_GetAssignments", + "summary": "software_GetAssignments", + "description": "software_GetAssignments", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision", + "key.name": "$var.job.key.name" + }, + "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": { + "key.name": { + "type": "string" + } + }, + "required": [ + "key.name" + ] + }, + "outputSchema": { + "type": "object", + "properties": { + "key.name": { + "type": "string" + }, + "_id": { + "type": "string", + "pattern": "^[0-9a-f]{24}$" + }, + "initiator": { + "type": "string" + } + } + }, + "last_updated": "2026-08-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "7d8fc7b3-54c7-49de-8fee-8f3119109109", + "created": "2026-08-18T03:37:08.096Z", + "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": "c6af75bd-39ea-43c8-81a6-414d43645931", + "type": "workflow", + "folder": "/Software Management", + "document": { + "name": "List Available Software Releases", + "description": "List Available Software Releases", + "type": "automation", + "font_size": 12, + "tasks": { + "workflow_start": { + "name": "workflow_start", + "groups": [], + "nodeLocation": { + "x": 264, + "y": 0 + } + }, + "a1a1": { + "name": "software_GetReleases", + "canvasName": "software_GetReleases", + "summary": "software_GetReleases", + "description": "software_GetReleases", + "location": "Adapter", + "locationType": "Arista CloudVision:latest", + "app": "Arista CloudVision:latest", + "type": "automatic", + "displayName": "Arista CloudVision", + "variables": { + "incoming": { + "adapter_id": "Arista CloudVision" + }, + "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-18T03:41:58.903Z", + "last_updated_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "lastUpdatedVersion": "4.69.69", + "uuid": "4984ed9a-f85f-463d-981d-75be70735295", + "created": "2026-08-18T03:37:08.126Z", + "created_by": { + "provenance": "LDAP", + "username": "admin@itential", + "firstname": "admin@itential", + "inactive": false + }, + "createdVersion": "5.55.5", + "scenarios": [], + "canvasVersion": 3, + "tags": [], + "groups": [], + "migrationVersion": 8 + } + } + ], + "folders": [ + { + "nodeType": "folder", + "name": "Workspace", + "children": [ + { + "iid": 0, + "nodeType": "component" + }, + { + "iid": 1, + "nodeType": "component" + }, + { + "iid": 2, + "nodeType": "component" + }, + { + "iid": 3, + "nodeType": "component" + }, + { + "iid": 4, + "nodeType": "component" + }, + { + "iid": 5, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Studio", + "children": [ + { + "iid": 6, + "nodeType": "component" + }, + { + "iid": 7, + "nodeType": "component" + }, + { + "iid": 8, + "nodeType": "component" + }, + { + "iid": 9, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Change Control", + "children": [ + { + "iid": 10, + "nodeType": "component" + }, + { + "iid": 11, + "nodeType": "component" + }, + { + "iid": 12, + "nodeType": "component" + }, + { + "iid": 13, + "nodeType": "component" + }, + { + "iid": 14, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Inventory", + "children": [ + { + "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" + }, + { + "iid": 22, + "nodeType": "component" + }, + { + "iid": 23, + "nodeType": "component" + }, + { + "iid": 24, + "nodeType": "component" + } + ] + }, + { + "nodeType": "folder", + "name": "Tags", + "children": [ + { + "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" + } + ] + }, + { + "nodeType": "folder", + "name": "Software Management", + "children": [ + { + "iid": 34, + "nodeType": "component" + }, + { + "iid": 35, + "nodeType": "component" + }, + { + "iid": 36, + "nodeType": "component" + }, + { + "iid": 37, + "nodeType": "component" + }, + { + "iid": 38, + "nodeType": "component" + }, + { + "iid": 39, + "nodeType": "component" + } + ] + } + ], + "createdBy": { + "_id": "699f3e2b85569c9f5d8e1f38", + "provenance": "LDAP", + "username": "admin@itential" + }, + "lastUpdatedBy": { + "_id": "699f3e2b85569c9f5d8e1f38", + "provenance": "LDAP", + "username": "admin@itential" + }, + "created": "2026-08-18T03:41:58.118Z", + "lastUpdated": "2026-08-18T03:41:58.118Z", + "iid": 48, + "thumbnail": "data:image/png;base64,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", + "backgroundColor": "#FFFFFF", + "referencedComponentHashes": [] +} \ No newline at end of file