Roadie Entity Push API

Create, delete, and idempotently manage Roadie-owned catalog entities and entity sets.

OpenAPI Specification

roadie-io-entity-push-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Roadie Catalog Entity Push 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: Entity Push
  description: Create, delete, and idempotently manage Roadie-owned catalog entities and entity sets.
paths:
  /catalog/roadie-entities/entities:
    post:
      operationId: createRoadieEntity
      tags:
      - Entity Push
      summary: Create a Roadie-managed catalog entity
      description: Pushes a single Backstage-format entity into the catalog as a Roadie-owned entity (no Location/YAML file required). Returns the newly created entity id used for later retrieval or deletion.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Entity'
      responses:
        '200':
          description: The entity was created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  entityId:
                    type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '400':
          $ref: '#/components/responses/ValidationError'
  /catalog/roadie-entities/entities/{entityId}:
    get:
      operationId: getRoadieEntity
      tags:
      - Entity Push
      summary: Get a Roadie-managed entity
      description: Retrieves a Roadie-owned entity previously created via the entity push API.
      parameters:
      - $ref: '#/components/parameters/EntityId'
      responses:
        '200':
          description: The requested entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteRoadieEntity
      tags:
      - Entity Push
      summary: Delete a Roadie-managed entity
      description: Removes a Roadie-owned entity from the catalog by its id.
      parameters:
      - $ref: '#/components/parameters/EntityId'
      responses:
        '200':
          description: The entity was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /catalog/roadie-entities/sets/{setName}:
    put:
      operationId: upsertEntitySet
      tags:
      - Entity Push
      summary: Create or replace an entity set
      description: Idempotently creates or replaces the complete set of entities under the named set. Running the same request on a schedule keeps the catalog in sync; sending an empty items array clears the set. Ideal for ingesting software catalog entities from an external system of record.
      parameters:
      - $ref: '#/components/parameters/SetName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                items:
                  type: array
                  items:
                    $ref: '#/components/schemas/Entity'
      responses:
        '200':
          description: The entity set was created or replaced.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '400':
          $ref: '#/components/responses/ValidationError'
    delete:
      operationId: deleteEntitySet
      tags:
      - Entity Push
      summary: Delete an entity set
      description: Deletes the named entity set and all entities it manages.
      parameters:
      - $ref: '#/components/parameters/SetName'
      responses:
        '200':
          description: The entity set was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  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
  parameters:
    EntityId:
      name: entityId
      in: path
      required: true
      description: Identifier of a Roadie-managed entity returned when it was created.
      schema:
        type: string
    SetName:
      name: setName
      in: path
      required: true
      description: Name of the entity set to manage idempotently.
      schema:
        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'
    ValidationError:
      description: The request payload failed validation.
      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`.'