Roadie Catalog API

Read Backstage software catalog entities in your Roadie tenant.

OpenAPI Specification

roadie-io-catalog-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Roadie Catalog API
  description: Roadie is a managed (SaaS) Backstage - a hosted internal developer portal and software catalog. This document models Roadie's public REST API surface exposed under https://api.roadie.so/api. It covers the software catalog (reading Backstage entities and pushing Roadie-managed entities and entity sets), the Scaffolder (Backstage software templates / self-service golden paths), Tech Insights (facts, checks, and scorecards), and TechDocs (technical documentation) surfaces. All requests are authenticated with a Bearer token (User Token or Service Token) created in the Roadie Administration UI. The Roadie public API is available on Cloud Hosted Roadie. Catalog read endpoints follow the upstream Backstage Software Catalog API shape; the roadie-entities and entity-set endpoints are Roadie's own ingestion API. Request/response schemas here are modeled from Roadie and Backstage documentation and should be reconciled against the interactive reference at https://roadie.io/docs/api/overview/ before relying on exact field names. TechDocs endpoints follow the Backstage TechDocs API and are modeled; confirm availability on your Roadie tenant.
  version: '1.0'
  contact:
    name: Roadie (Larder Software Limited)
    url: https://roadie.io
  x-modeled: Base URLs and auth are confirmed from Roadie documentation. Individual request/response schemas are modeled from Roadie + Backstage docs and are not a Roadie-published OpenAPI file.
servers:
- url: https://api.roadie.so/api
  description: Roadie Cloud Hosted API
security:
- bearerAuth: []
tags:
- name: Catalog
  description: Read Backstage software catalog entities in your Roadie tenant.
paths:
  /catalog/entities:
    get:
      operationId: listCatalogEntities
      tags:
      - Catalog
      summary: List catalog entities
      description: Lists software catalog entities (Components, APIs, Systems, Resources, Groups, Users, Templates, and more) in your Roadie tenant. Supports Backstage-style filter, fields, offset, and limit query parameters.
      parameters:
      - name: filter
        in: query
        required: false
        description: Backstage entity filter, e.g. kind=component,spec.type=service.
        schema:
          type: string
      - name: fields
        in: query
        required: false
        description: Comma-separated list of entity fields to return.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A list of catalog entities.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entity'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /catalog/entities/by-query:
    get:
      operationId: queryCatalogEntities
      tags:
      - Catalog
      summary: Query catalog entities
      description: Paginated, filterable query over catalog entities returning items plus a cursor for the next page. Mirrors the Backstage entities/by-query endpoint.
      parameters:
      - name: filter
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
      - name: cursor
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A page of catalog entities.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Entity'
                  pageInfo:
                    type: object
                    properties:
                      nextCursor:
                        type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
  /catalog/entities/by-name/{kind}/{namespace}/{name}:
    get:
      operationId: getCatalogEntityByName
      tags:
      - Catalog
      summary: Get a catalog entity by name
      description: Retrieves a single catalog entity by its kind, namespace, and name.
      parameters:
      - $ref: '#/components/parameters/Kind'
      - $ref: '#/components/parameters/Namespace'
      - $ref: '#/components/parameters/Name'
      responses:
        '200':
          description: The requested catalog entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /catalog/entity-facets:
    get:
      operationId: getEntityFacets
      tags:
      - Catalog
      summary: Get entity facets
      description: Returns counts of entities grouped by one or more facets (for example spec.type or metadata.tags), useful for building catalog filters.
      parameters:
      - name: facet
        in: query
        required: true
        description: Facet path to aggregate on, e.g. kind or spec.type.
        schema:
          type: string
      - name: filter
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Facet counts.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    Kind:
      name: kind
      in: path
      required: true
      description: Entity kind, e.g. component, api, system, group, user, template.
      schema:
        type: string
    Namespace:
      name: namespace
      in: path
      required: true
      description: Entity namespace, typically default.
      schema:
        type: string
    Name:
      name: name
      in: path
      required: true
      description: Entity name.
      schema:
        type: string
  schemas:
    Entity:
      type: object
      description: A Backstage-format catalog entity.
      properties:
        apiVersion:
          type: string
          example: backstage.io/v1alpha1
        kind:
          type: string
          example: Component
        metadata:
          type: object
          properties:
            name:
              type: string
            namespace:
              type: string
            title:
              type: string
            description:
              type: string
            tags:
              type: array
              items:
                type: string
            annotations:
              type: object
              additionalProperties:
                type: string
          additionalProperties: true
        spec:
          type: object
          additionalProperties: true
        relations:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            name:
              type: string
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid Bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Roadie API token (User Token or Service Token) created under Administration in the Roadie app. Passed as `Authorization: Bearer YOUR_ROADIE_API_TOKEN`.'