# List Pipeline Template Catalogue

`GET /v1/pipelines/catalog`

The platform's public templates and the workspace's own, with their
inputs and outputs, and ``pinnable`` for those a template may pin.

- Base URL: `https://junction-api.qualiastudios.dev`
- Authentication: an API key in the `X-API-Key` header, or `Authorization: Bearer …`

## Responses

- `200` Successful Response: `application/json` `array of CatalogTemplate`
- `401` Invalid or missing API key: `application/json` `ErrorResponse`
- `403` Missing capability on the workspace: `application/json` `ErrorResponse`

## Schemas

```yaml
CatalogTemplate:
  properties:
    pipeline_template_id:
      type: string
      format: uuid
    name:
      type: string
    version:
      type: integer
      description: The latest version; pin any up to it
    description:
      type:
        - string
        - "null"
    owner:
      type: string
      enum:
        - system
        - workspace
    pinnable:
      type: boolean
      description: "False for one that pins others itself: nesting is one level"
    inputs:
      items:
        $ref: "#/components/schemas/LaunchField"
      type: array
      description: What a node pinning it may expose or fix
    outputs:
      items:
        $ref: "#/components/schemas/TemplateOutput"
      type: array
  type: object
  required:
    - pipeline_template_id
    - name
    - version
    - owner
    - pinnable
  title: CatalogTemplate
  description: A template the workspace sees, and whether its templates may pin it.
LaunchField:
  properties:
    name:
      type: string
    type_name:
      type: string
    schema:
      additionalProperties: true
      type: object
    required:
      type: boolean
    default:
      nullable: true
    resolve:
      nullable: true
      additionalProperties: true
      type: object
    ui:
      additionalProperties: true
      type: object
  type: object
  required:
    - name
    - type_name
    - required
  title: LaunchField
  description: |-
    One launch-form field of a template: an exposed port with its JSON
    schema, derived required-ness, and display metadata.
TemplateOutput:
  properties:
    name:
      type: string
    from:
      additionalProperties:
        type: string
      type: object
      description: "{node, port}"
  type: object
  required:
    - name
    - from
  title: TemplateOutput
  description: A port a run of the template answers with, read from one node.
ErrorResponse:
  properties:
    detail:
      type: string
      description: Error message describing what went wrong
  type: object
  required:
    - detail
  title: ErrorResponse
  description: Standard error response.
```
