arazzo: 1.0.1 info: title: ZenML Bootstrap Project Pipeline summary: Identify the caller, resolve a project workspace, register a pipeline, and confirm it. description: >- Bootstraps a pipeline into a project workspace in a single pass. ZenML models the workspace concept as a project, so this workflow resolves a project to act as the workspace, reads the current user for ownership context, creates the pipeline under the project, and reads the pipeline back 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: bootstrap-project-pipeline summary: Resolve a project workspace and register a pipeline under it, confirming both. description: >- Reads the current user, lists projects to resolve a workspace, creates a pipeline under that project, and reads the pipeline back by id. inputs: type: object required: - accessToken - projectName - pipelineName properties: accessToken: type: string description: ZenML JWT access token obtained from the login endpoint. projectName: type: string description: The name of the project workspace to host the pipeline. pipelineName: type: string description: The name to give the new pipeline. description: type: string description: Optional description of the pipeline. steps: - stepId: whoami description: >- Read the current authenticated user for ownership context. operationId: getCurrentUser parameters: - name: Authorization in: header value: Bearer $inputs.accessToken successCriteria: - condition: $statusCode == 200 outputs: userId: $response.body#/id - stepId: resolveWorkspace description: >- List projects to resolve the named project workspace that will host the pipeline. operationId: listProjects 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: projectId: $response.body#/items/0/id - stepId: createPipeline description: >- Create the pipeline under the resolved project workspace. operationId: createPipeline parameters: - name: Authorization in: header value: Bearer $inputs.accessToken requestBody: contentType: application/json payload: name: $inputs.pipelineName description: $inputs.description project_id: $steps.resolveWorkspace.outputs.projectId successCriteria: - condition: $statusCode == 201 outputs: pipelineId: $response.body#/id - stepId: confirmPipeline description: >- Read the new pipeline back by id to confirm it persisted under the project. operationId: getPipeline parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: pipeline_id in: path value: $steps.createPipeline.outputs.pipelineId successCriteria: - condition: $statusCode == 200 outputs: pipelineId: $response.body#/id projectId: $response.body#/project_id outputs: userId: $steps.whoami.outputs.userId projectId: $steps.resolveWorkspace.outputs.projectId pipelineId: $steps.confirmPipeline.outputs.pipelineId