Calyptia pipeline API

The pipeline API from Calyptia — 5 operation(s) for pipeline.

OpenAPI Specification

calyptia-pipeline-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  title: Calyptia Cloud agent pipeline API
  version: '1.0'
  description: HTTP API service of Calyptia Cloud
  contact:
    name: Calyptia
    email: hello@calyptia.com
    url: https://cloud.calyptia.com
  termsOfService: https://calyptia.com/terms/
servers:
- url: https://cloud-api.calyptia.com
  description: prod
- url: https://cloud-api-dev.calyptia.com
  description: dev
- url: https://cloud-api-staging.calyptia.com
  description: staging
- url: http://localhost:{port}
  description: local
  variables:
    port:
      default: '5000'
tags:
- name: pipeline
paths:
  /v1/aggregators/{aggregatorID}/pipelines:
    parameters:
    - schema:
        type: string
        format: uuid
      name: aggregatorID
      in: path
      required: true
    post:
      tags:
      - pipeline
      summary: Create pipeline
      operationId: createPipeline
      description: 'Create pipeline within a core instance.

        The pipeline name must be unique within the core instance.

        The resource profile must exist already. If you don''t provide one, it will default to "best-effort-low-resource".

        Use them to easily deploy configured agents to the core instance.'
      security:
      - user: []
      - project: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePipeline'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedPipeline'
    get:
      deprecated: true
      tags:
      - pipeline
      summary: Pipelines (deprecated)
      operationId: pipelines
      description: Pipelines from a core instance (deprecated).
      security:
      - user: []
      - project: []
      parameters:
      - schema:
          type: integer
          minimum: 0
        in: query
        name: last
        description: Last pipelines.
      - schema:
          type: string
        in: query
        name: before
        description: Pipelines before the given cursor.
      - schema:
          type: string
        in: query
        name: name
        description: Name matching pipelines.
      - schema:
          type: string
          example: tagone AND tagtwo
        in: query
        name: tags_query
        description: Tag query.
      - schema:
          type: string
          enum:
          - classic
          - json
          - yaml
        in: query
        name: config_format
        description: Desired output config format.
      - schema:
          type: string
          enum:
          - ports
          - files
          - secrets
        in: query
        name: include
        description: Include all ports, secrets and files objects in the pipeline.
      - name: exclude_internal
        schema:
          type: boolean
        in: query
        description: Exclude internal pipelines (health-check).
      responses:
        '200':
          description: OK
          headers:
            Link:
              schema:
                type: string
                example: </v1/aggregators/foo/pipelines?before=bar>; rel="next"
              description: RFC5988 with `rel="next"`.
          links:
            NextPipelinesPage:
              operationId: pipelines
              parameters:
                before: $response.header.Link#rel=next
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pipeline'
    delete:
      tags:
      - pipeline
      summary: Delete Pipelines
      operationId: deletePipelines
      description: Delete pipelines from a core instance.
      security:
      - user: []
      - project: []
      parameters:
      - schema:
          type: array
          items:
            type: string
            format: uuid
        in: query
        name: pipeline_id
        description: List of pipeline IDs to delete.
      responses:
        '204':
          description: Deleted
  /v1/core_instances/{coreInstanceID}/pipelines:
    parameters:
    - name: coreInstanceID
      schema:
        type: string
        format: uuid
      in: path
      description: Parent core instance ID.
      required: true
    get:
      operationId: pipelinesV2
      tags:
      - pipeline
      summary: Pipelines
      description: Pipelines from a core instance with backward pagination.
      security:
      - user: []
      - project: []
      parameters:
      - name: last
        schema:
          type: integer
          minimum: 0
        in: query
        description: Limit to the last pipelines.
      - name: before
        schema:
          type: string
        in: query
        description: Paginate pipelines before the given cursor.
      - name: kind
        schema:
          $ref: '#/components/schemas/PipelineKind'
        in: query
        description: Filter pipelines by kind.
      - name: name
        schema:
          type: string
        in: query
        description: Filter pipelines by name.
      - name: tags_query
        schema:
          type: string
          example: tagone AND tagtwo
        in: query
        description: Filter pipelines by giving a tags query.
      - name: config_format
        schema:
          type: string
          enum:
          - classic
          - json
          - yaml
        in: query
        description: Desired output config format.
      - name: include
        schema:
          type: array
          items:
            type: string
            enum:
            - ports
            - files
            - secrets
        in: query
        description: Whether to include ports, secrets and files objects in the pipeline.
      - name: exclude_internal
        schema:
          type: boolean
        in: query
        description: Exclude internal pipelines (health-check).
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pipelines'
  /v1/projects/{projectID}/aggregator_pipelines:
    parameters:
    - schema:
        type: string
        format: uuid
      name: projectID
      in: path
      required: true
    get:
      deprecated: true
      tags:
      - pipeline
      summary: Project pipelines (deprecated)
      operationId: projectPipelines
      description: Pipelines from a project (deprecated).
      security:
      - user: []
      - project: []
      parameters:
      - schema:
          type: integer
          minimum: 0
        in: query
        name: last
        description: Last pipelines.
      - schema:
          type: string
        in: query
        name: name
        description: Name matching pipelines.
      - schema:
          type: string
          example: tagone AND tagtwo
        in: query
        name: tags_query
        description: Tag query.
      - schema:
          type: string
          enum:
          - classic
          - json
          - yaml
        in: query
        name: config_format
        description: Desired output config format.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pipeline'
  /v1/projects/{projectID}/pipelines:
    parameters:
    - name: projectID
      schema:
        type: string
        format: uuid
      in: path
      description: Parent project ID.
      required: true
    get:
      operationId: projectPipelinesV2
      tags:
      - pipeline
      summary: Project pipelines
      description: Pipelines from a project with backward pagination.
      security:
      - user: []
      - project: []
      parameters:
      - name: last
        schema:
          type: integer
          minimum: 0
        in: query
        description: Limit to the last pipelines.
      - name: before
        schema:
          type: string
        in: query
        description: Paginate pipelines before the given cursor.
      - name: kind
        schema:
          $ref: '#/components/schemas/PipelineKind'
        in: query
        description: Filter pipelines by kind.
      - name: name
        schema:
          type: string
        in: query
        description: Filter pipelines by name.
      - name: tags_query
        schema:
          type: string
          example: tagone AND tagtwo
        in: query
        description: Filter pipelines by giving a tags query.
      - name: config_format
        schema:
          type: string
          enum:
          - classic
          - json
          - yaml
        in: query
        description: Desired output config format.
      - name: include
        schema:
          type: array
          items:
            type: string
            enum:
            - ports
            - files
            - secrets
        in: query
        description: Whether to include ports, secrets and files objects in the pipeline.
      - name: exclude_internal
        schema:
          type: boolean
        in: query
        description: Exclude internal pipelines (health-check).
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pipelines'
  /v1/aggregator_pipelines/{pipelineID}:
    parameters:
    - schema:
        type: string
        format: uuid
      name: pipelineID
      in: path
      required: true
    get:
      tags:
      - pipeline
      summary: Pipeline
      operationId: pipeline
      description: Pipeline by ID.
      security:
      - user: []
      - project: []
      parameters:
      - schema:
          type: string
          enum:
          - classic
          - json
          - yaml
        in: query
        name: config_format
        description: Desired output config format.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pipeline'
    patch:
      tags:
      - pipeline
      summary: Update pipeline
      operationId: updatePipeline
      description: Update pipeline by its ID.
      security:
      - user: []
      - project: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePipeline'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatedPipeline'
    delete:
      tags:
      - pipeline
      summary: Delete pipeline
      operationId: deletePipeline
      description: Delete pipeline by its ID.
      security:
      - user: []
      - project: []
      responses:
        '204':
          description: No Content
components:
  schemas:
    ConfigSectionKind:
      type: string
      enum:
      - input
      - filter
      - output
      - service
    TolerationEffect:
      type: string
      enum:
      - NoSchedule
      - PreferNoSchedule
      - NoExecute
    URIScheme:
      type: string
      enum:
      - HTTP
      - HTTPS
    DeploymentStrategy:
      type: string
      description: 'The deployment strategy to use when creating or updating changes to this pipeline.

        '
      default: rollingupdate
      enum:
      - recreate
      - rollingupdate
      - hotReload
    UnsatisfiableConstraintAction:
      type: string
      enum:
      - DoNotSchedule
      - ScheduleAnyway
    PipelineFile:
      type: object
      description: Pipeline file model.
      properties:
        id:
          type: string
          format: uuid
        processingRuleID:
          type: string
          format: uuid
          nullable: true
          default: null
        name:
          type: string
          example: myfile
        contents:
          type: string
          format: byte
        encrypted:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - processingRuleID
      - name
      - contents
      - encrypted
      - createdAt
      - updatedAt
    PipelinePortKind:
      type: string
      description: The kind/type of the service associated to this port.
      default: LoadBalancer
      enum:
      - LoadBalancer
      - ClusterIP
      - NodePort
    PVCRetentionPolicy:
      type: object
      description: Defines what happens to PVCs when StatefulSets are scaled or deleted (K8s 1.23+)
      properties:
        whenScaled:
          type: string
          description: Determines what happens to PVCs when a StatefulSet is scaled down
          enum:
          - Retain
          - Delete
          default: Retain
        whenDeleted:
          type: string
          description: Determines what happens to PVCs when a StatefulSet is deleted
          enum:
          - Retain
          - Delete
          default: Retain
    UpdatePipelineFile:
      description: Update pipeline file request body.
      type: object
      properties:
        name:
          type: string
          example: newfile
          nullable: true
          default: null
        contents:
          type: string
          format: byte
          nullable: true
          default: null
        encrypted:
          type: boolean
          nullable: true
          default: null
    PipelinePort:
      type: object
      description: Pipeline port model.
      properties:
        id:
          type: string
          format: uuid
        protocol:
          type: string
          example: tcp
        kind:
          $ref: '#/components/schemas/PipelinePortKind'
        frontendPort:
          type: integer
          format: int32
          minimum: 0
          description: 'FrontendPort is equivalent to Docker''s host port and Kubernetes'' service port.

            It should be unique within the pipeline.'
        backendPort:
          type: integer
          format: int32
          minimum: 0
          description: BackendPort is equivalent to Docker's container port and Kubernetes' target port (pod).
        endpoint:
          type: string
        pluginID:
          type: string
          nullable: true
          default: null
          example: forward.0
        pluginName:
          type: string
          nullable: true
          default: null
          example: forward
        pluginAlias:
          type: string
          nullable: true
          default: null
          example: myforwardinput
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - protocol
      - kind
      - frontendPort
      - backendPort
      - endpoint
      - pluginID
      - pluginName
      - pluginAlias
      - createdAt
      - updatedAt
    PipelineStatus:
      type: object
      description: Pipeline status history entry.
      properties:
        id:
          type: string
          format: uuid
        config:
          $ref: '#/components/schemas/AgentConfig'
        status:
          type: string
          enum:
          - NEW
          - FAILED
          - STARTING
          - STARTED
          - SCALING
          - CHECKS_OK
          - CHECKS_FAILED
        events:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/PipelineEvent'
        createdAt:
          type: string
          format: date-time
      required:
      - id
      - config
      - status
      - createdAt
    LifecycleHandler:
      type: object
      properties:
        exec:
          $ref: '#/components/schemas/ExecAction'
          nullable: true
        httpGet:
          $ref: '#/components/schemas/HTTPGetAction'
          nullable: true
        tcpSocket:
          $ref: '#/components/schemas/TCPSocketAction'
          nullable: true
        sleep:
          $ref: '#/components/schemas/SleepAction'
          nullable: true
    TCPSocketAction:
      type: object
      properties:
        port:
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
        host:
          type: string
          nullable: true
      required:
      - port
    PipelineCheck:
      type: object
      description: Pipeline check model.
      properties:
        id:
          type: string
          format: uuid
        protocol:
          $ref: '#/components/schemas/PipelinePortProtocol'
        status:
          $ref: '#/components/schemas/CheckStatus'
        retries:
          type: number
          default: 3
          description: number of retries for the check before marking it as failed
        port:
          type: number
          minimum: 0
          maximum: 65535
          description: valid 0-65535 port number
        host:
          type: string
          description: DNS label format as of defined on RFC1123 or an IPv4 address.
          example: localhost
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - protocol
      - status
      - retries
      - port
      - host
      - createdAt
      - updatedAt
    PipelineConfig:
      type: object
      description: Pipeline configuration history entry.
      properties:
        id:
          type: string
          format: uuid
        rawConfig:
          type: string
        configFormat:
          type: string
          enum:
          - classic
          - json
          - yaml
        createdAt:
          type: string
          format: date-time
      required:
      - id
      - rawConfig
      - configFormat
      - createdAt
    UpdatePipelineSecret:
      description: Update pipeline secret request body.
      type: object
      properties:
        key:
          type: string
          example: newsecret
          nullable: true
          default: null
        value:
          type: string
          format: byte
          nullable: true
          default: null
    UpdatedPipeline:
      type: object
      description: Updated pipeline response body.
      properties:
        addedPorts:
          type: array
          items:
            $ref: '#/components/schemas/PipelinePort'
        removedPorts:
          type: array
          items:
            $ref: '#/components/schemas/PipelinePort'
        addedChecks:
          type: array
          items:
            $ref: '#/components/schemas/PipelineCheck'
        removedChecks:
          type: array
          items:
            $ref: '#/components/schemas/PipelineCheck'
    AgentConfig:
      type: object
      description: Agent configuration history entry.
      properties:
        id:
          type: string
          format: uuid
        rawConfig:
          type: string
        createdAt:
          type: string
          format: date-time
      required:
      - id
      - rawConfig
      - createdAt
    NodeSelectorOperator:
      type: string
      enum:
      - In
      - NotIn
      - Exists
      - DoesNotExist
      - Gt
      - Lt
    ScalePolicy:
      type: string
      enum:
      - Unknown
      - Pods
      - Percent
      default: Unknown
    PipelinePortProtocol:
      type: string
      description: Valid protocol types defined for a pipelines.
      enum:
      - tcp
      - udp
    ConfigFormat:
      type: string
      enum:
      - classic
      - yaml
      - json
      default: classic
      example: yaml
    CheckStatus:
      type: string
      description: The status of a check.
      default: new
      enum:
      - new
      - failed
      - running
      - ok
    Toleration:
      type: object
      properties:
        key:
          type: string
        operator:
          $ref: '#/components/schemas/TolerationOperator'
        value:
          type: string
        effect:
          $ref: '#/components/schemas/TolerationEffect'
        tolerationSeconds:
          type: integer
          format: int64
          nullable: true
      required:
      - key
      - operator
      - effect
    Lifecycle:
      type: object
      properties:
        preStop:
          $ref: '#/components/schemas/LifecycleHandler'
          nullable: true
        postStart:
          $ref: '#/components/schemas/LifecycleHandler'
          nullable: true
    CreatePipelineSecret:
      description: Create pipeline secret request body.
      type: object
      properties:
        key:
          type: string
          example: newsecret
        value:
          type: string
          format: byte
      required:
      - key
      - value
    ConfigSection:
      type: object
      properties:
        id:
          type: string
          format: uuid
        projectID:
          type: string
          format: uuid
        processingRuleID:
          type: string
          format: uuid
          nullable: true
          default: null
        kind:
          $ref: '#/components/schemas/ConfigSectionKind'
        properties:
          $ref: '#/components/schemas/Pairs'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - projectID
      - processingRuleID
      - kind
      - properties
      - createdAt
      - updatedAt
    HTTPHeader:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
      required:
      - name
      - value
    PipelineKind:
      type: string
      default: deployment
      enum:
      - deployment
      - daemonSet
      - statefulSet
    ResourceProfile:
      type: object
      description: Resource profile model.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: my-resource-profile
        storageMaxChunksUp:
          type: integer
          format: int32
        storageSyncFull:
          type: boolean
        storageBacklogMemLimit:
          type: string
          example: 1Mi
        storageVolumeSize:
          type: string
          example: 2Mi
        storageMaxChunksPause:
          type: boolean
        cpuBufferWorkers:
          type: integer
          format: int32
        cpuLimit:
          type: string
          example: 3Mi
        cpuRequest:
          type: string
          example: 4Mi
        memoryLimit:
          type: string
          example: 5Mi
        memoryRequest:
          type: string
          example: 6Mi
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - name
      - storageMaxChunksUp
      - storageSyncFull
      - storageBacklogMemLimit
      - storageVolumeSize
      - storageMaxChunksPause
      - cpuBufferWorkers
      - cpuLimit
      - cpuRequest
      - memoryLimit
      - memoryRequest
      - createdAt
      - updatedAt
    Pipelines:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Pipeline'
        endCursor:
          type: string
          nullable: true
        count:
          type: number
          format: int32
      required:
      - items
      - endCursor
      - count
    Pipeline:
      type: object
      description: Pipeline model.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: DNS label format as of defined on RFC1123
          example: my-pipeline
        kind:
          $ref: '#/components/schemas/PipelineKind'
        config:
          $ref: '#/components/schemas/PipelineConfig'
        configSections:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSection'
        status:
          $ref: '#/components/schemas/PipelineStatus'
        resourceProfile:
          $ref: '#/components/schemas/ResourceProfile'
        deploymentStrategy:
          $ref: '#/components/schemas/DeploymentStrategy'
        tracingEnabled:
          type: boolean
          default: false
        waitForChecksBeforeDeploying:
          type: boolean
          default: false
        image:
          type: string
          example: ghcr.io/calyptia/core/calyptia-fluent-bit:23.1.2
          nullable: true
          default: null
        replicasCount:
          type: integer
          minimum: 0
        replicasCountPrev:
          type: integer
          description: the previous replica set counter
          minimum: 0
        checksTotal:
          type: integer
          minimum: 0
          description: total number of checks associated with the pipeline.
        checksOK:
          type: integer
          minimum: 0
          description: total number of checks with ok status.
        checksRunning:
          type: integer
          minimum: 0
          description: total number of checks with running status.
        tags:
          type: array
          nullable: true
          default: null
          uniqueItems: true
          items:
            type: string
        metadata:
          type: object
          nullable: true
          default: null
          additionalProperties: true
        secrets:
          type: array
          nullable: true
          default: null
          items:
            $ref: '#/components/schemas/PipelineSecret'
        files:
          type: array
          nullable: true
          default: null
          items:
            $ref: '#/components/schemas/PipelineFile'
        ports:
          type: array
          nullable: true
          default: null
          items:
            $ref: '#/components/schemas/PipelinePort'
        minReplicas:
          type: integer
          description: minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.
        maxReplicas:
          type: integer
          description: maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.
        scaleUpType:
          $ref: '#/components/schemas/ScalePolicy'
        scaleUpValue:
          type: integer
          description: value contains the amount of change which is permitted by the policy.
        scaleUpPeriodSeconds:
          type: integer
          description: ScaleUpPeriodSeconds specifies the window of time for which the policy should hold true.
        scaleDownType:
          $ref: '#/components/schemas/ScalePolicy'
        scaleDownValue:
          type: integer
          description: value contains the amount of change which is permitted by the policy.
        scaleDownPeriodSeconds:
          type: integer
          description: ScaleUpPeriodSeconds specifies the window of time for which the policy should hold true.
        utilizationCPUAverage:
          type: integer
          description: UtilizationCPUAverage defines the target value for average CPU utilization
        utilizationMemoryAverage:
          type: integer
          description: UtilizationMemoryAverage defines the target value for average CPU utilization
        storageClass:
          type: string
          description: Represents the storageClass for PVC templates
          nullable: true
          default: null
        pvcRetentionPolicy:
          $ref: '#/components/schemas/PVCRetentionPolicy'
          nullable: true
        portKind:
          $ref: '#/components/schemas/PipelinePortKind'
        labels:
          type: object
          nullable: true
          default: null
          additionalProperties: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        error:
          type: string
          nullable: true
          default: null
          description: Contains any error that occurred when rendering the pipeline with config sections
      required:
      - id
      - name
      - kind
      - config
      - configSections
      - image
      - status
      - resourceProfile
      - deploymentStrategy
      - tracingEnabled
      - waitForChecksBeforeDeploying
      - replicasCount
      - replicasCountPrev
      - tags
      - metadata
      - checksTotal
      - checksOK
      - checksRunning
      - portKind
      - labels
      - createdAt
      - updatedAt
      - minReplicas
      - maxReplicas
      - scaleUpType
      - scaleUpValue
      - scaleUpPeriodSeconds
      - scaleDownType
      - scaleDownValue
      - scaleDownPeriodSeconds
      - utilizationCPUAverage
      - utilizationMemoryAverage
    PipelineEvent:
      type: object
      description: Pipeline Status event.
      properties:
        source:
          type: string
          enum:
          - k8s:deployment
          - k8s:pod
        reason:
          type: string
        message:
          type: string
        loggedAt:
          type: string
          format: date-time
      required:
      - source
      - reason
      - loggedAt
    Affinity:
      type: object
      properties:
        key:
          type: string
        operator:
          $ref: '#/components/schemas/NodeSelectorOperator'
        values:
          type: array
          nullable: true
          items:
            type: string
      required:
      - key
      - operator
      - values
    SleepAction:
      type: object
      properties:
        seconds:
          type: integer
          format: int64
          minimum: 0
      required:
      - seconds
    PipelineSecret:
      type: object
      description: Pipeline secret model.
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
          example: mysecret
        value:
          type: string
          format: byte
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - key
      - value
      - createdAt
      - updatedAt
    HTTPGetAction:
      type: object
      properties:
        path:
          type: string
        port:
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
        host:
          type: string
          nullable: true
        scheme:
          $ref: '#/components/schemas/URIScheme'
        httpHeaders:
          type: array
          items:
            $ref: '#/components/schemas/HTTPHeader'
          nullable: true
      required:
      - port
    CreatedPipeline:
      type: object
      description: Created pipeline response body.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: my-pipeline
        kind:
          $ref: '#/components/schemas/PipelineKind'
        config:
          $ref: '#/components/schemas/PipelineConfig'
        status:
          $ref: '#/components/schemas/PipelineStatus'
        secrets:
          type: array
          items:
            $ref: '#/components/schemas/PipelineSecret'
        files:
          type: array
          items:
            $ref: '#/components/schemas/PipelineFile'
        resourceProfile:
          $ref: '#/components/schemas/ResourceProfile'
        checks:
          type: array
          items:
            $ref: '#/components/schemas/PipelineCheck'
        createdAt:
          type: string
          format: date-time
    TopologySpreadConstraint:
      type: object
      properties:
        maxSkew:
          type: integer
          format: int32
        topologyKey:
          type: string
        whenUnsatisfiable:
          $ref: '#/components/schemas/UnsatisfiableConstraintAction'
        labelSelector:
          type: object
          nullable: true
          additionalProperties:
            type: string
        minDomains:
          type: integer
          format: int32
          nullable: true
      required:
      - maxSkew
      - topologyKey
      - whenUnsatisfiable
      - labelSelector
      - minDomains
    CreatePipeline:
      description: Create pipeline request body.
      type: object
      properties:
        name:
          type: string
          description: DNS label format as of defined on RFC1123
          example: new-pipeline
        kin

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/calyptia/refs/heads/main/openapi/calyptia-pipeline-api-openapi.yml