openapi: 3.0.3 info: title: ZenML OSS REST Artifacts Pipelines API version: '1' description: REST API for the ZenML server, exposing operations to manage pipelines, stacks, components, artifacts, models, deployments, runs, schedules, secrets, users, projects, and triggers in a self-hosted ZenML deployment. The API is consumed by the ZenML Python SDK and CLI and can also be called directly for automation and CI/CD integration. contact: name: ZenML url: https://docs.zenml.io/ license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://your-zenml-server.example.com/api/v1 description: ZenML server REST API (self-hosted) security: - bearerAuth: [] tags: - name: Pipelines description: ML pipeline definitions paths: /pipelines: get: tags: - Pipelines summary: List Pipelines operationId: listPipelines parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' - in: query name: name schema: type: string - in: query name: project_id schema: type: string format: uuid responses: '200': description: Page of pipelines content: application/json: schema: $ref: '#/components/schemas/PipelinePage' post: tags: - Pipelines summary: Create Pipeline operationId: createPipeline requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PipelineRequest' responses: '201': description: Pipeline created content: application/json: schema: $ref: '#/components/schemas/Pipeline' /pipelines/{pipeline_id}: parameters: - $ref: '#/components/parameters/PipelineId' get: tags: - Pipelines summary: Get Pipeline operationId: getPipeline responses: '200': description: Pipeline detail content: application/json: schema: $ref: '#/components/schemas/Pipeline' '404': description: Pipeline not found delete: tags: - Pipelines summary: Delete Pipeline operationId: deletePipeline responses: '204': description: Pipeline deleted components: parameters: PipelineId: in: path name: pipeline_id required: true schema: type: string format: uuid Page: in: query name: page schema: type: integer minimum: 1 default: 1 Size: in: query name: size schema: type: integer minimum: 1 maximum: 1000 default: 20 schemas: PipelinePage: allOf: - $ref: '#/components/schemas/Page' - type: object properties: items: type: array items: $ref: '#/components/schemas/Pipeline' Page: type: object properties: index: type: integer max_size: type: integer total_pages: type: integer total: type: integer PipelineRequest: type: object required: - name properties: name: type: string description: type: string version: type: string project_id: type: string format: uuid spec: type: object additionalProperties: true Pipeline: type: object properties: id: type: string format: uuid name: type: string description: type: string version: type: string spec: type: object additionalProperties: true project_id: type: string format: uuid user_id: type: string format: uuid created: type: string format: date-time updated: type: string format: date-time securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT