arazzo: 1.0.1 info: title: ZenML Register Stack summary: Discover available stack components, assemble them into a new stack, and confirm the stack was created. description: >- Assembles a ZenML stack from existing stack components. The workflow lists the registered stack components so their ids can be referenced, creates a new stack that maps component types to those component ids, and then reads the stack back by id to confirm it persisted. Every step spells out its request inline, including the bearer Authorization header, so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: zenmlApi url: ../openapi/zenml-openapi.yml type: openapi workflows: - workflowId: register-stack summary: Build a new stack from existing components and verify it persisted. description: >- Lists stack components to discover available infrastructure, creates a stack that wires the supplied component-type-to-ids map, and reads the stack back by id. inputs: type: object required: - accessToken - stackName - components properties: accessToken: type: string description: ZenML JWT access token obtained from the login endpoint. stackName: type: string description: The name to give the new stack. description: type: string description: Optional description of the stack. components: type: object description: >- Map of component type (e.g. orchestrator, artifact_store) to an array of component uuids that make up the stack. steps: - stepId: listComponents description: >- List the registered stack components so their ids can be referenced when assembling the stack. operationId: listStackComponents parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: page in: query value: 1 - name: size in: query value: 100 successCriteria: - condition: $statusCode == 200 outputs: firstComponentId: $response.body#/items/0/id - stepId: createStack description: >- Create the stack with the supplied name and component map. operationId: createStack parameters: - name: Authorization in: header value: Bearer $inputs.accessToken requestBody: contentType: application/json payload: name: $inputs.stackName description: $inputs.description components: $inputs.components successCriteria: - condition: $statusCode == 201 outputs: stackId: $response.body#/id - stepId: confirmStack description: >- Read the newly created stack back by id to confirm it was persisted. operationId: getStack parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: stack_id in: path value: $steps.createStack.outputs.stackId successCriteria: - condition: $statusCode == 200 outputs: stackId: $response.body#/id stackName: $response.body#/name components: $response.body#/components outputs: stackId: $steps.confirmStack.outputs.stackId stackName: $steps.confirmStack.outputs.stackName components: $steps.confirmStack.outputs.components