Backstage Events System

The Backstage Events system provides a publish-subscribe mechanism for broadcasting and consuming events within a Backstage instance. It enables plugins to emit events when significant actions occur (such as catalog entity changes, scaffolder task completions, or permission policy updates) and allows other plugins or external systems to subscribe to those events via HTTP webhooks or the internal event bus.

Operations 3

POST /bus/v1/events #
PUT /bus/v1/subscriptions/{subscriptionId} #
GET /bus/v1/subscriptions/{subscriptionId}/events #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/events-system"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

backstage-events-backend-openapi.yaml Raw ↑
openapi: 3.1.0
info:
  title: events
  version: '1'
  description: The Backstage backend plugin that powers the events system.
  license:
    name: Apache-2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  contact: {}
servers:
  - url: /
components:
  examples: {}
  headers: {}
  parameters:
    subscriptionId:
      name: subscriptionId
      in: path
      required: true
      schema:
        type: string
  requestBodies: {}
  responses:
    ErrorResponse:
      description: An error response from the backend.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Event:
      type: object
      required:
        - topic
        - payload
      properties:
        topic:
          type: string
          description: The topic that the event is published on
        payload:
          description: The event payload

    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            name:
              type: string
            message:
              type: string
          required:
            - name
            - message
        request:
          type: object
          properties:
            method:
              type: string
            url:
              type: string
          required:
            - method
            - url
        response:
          type: object
          properties:
            statusCode:
              type: number
          required:
            - statusCode
      required:
        - error
        - request
        - response
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
paths:
  /bus/v1/events:
    post:
      operationId: PostEvent
      description: Publish a new event
      responses:
        '201':
          description: The event was published successfully
        '204':
          description: The event did not need to be published as all subscribers have already been notified
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
        - {}
        - JWT: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - event
              properties:
                event:
                  $ref: '#/components/schemas/Event'
                notifiedSubscribers:
                  type: array
                  description: The IDs of subscriptions that have already received this event
                  items:
                    type: string
            examples:
              Publishing a simple Event:
                value:
                  event:
                    topic: test-topic
                    payload:
                      myData: foo

  /bus/v1/subscriptions/{subscriptionId}:
    put:
      operationId: PutSubscription
      description: Ensures that the subscription exists with the provided configuration
      responses:
        '201':
          description: The subscription exists or was created successfully
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
        - {}
        - JWT: []
      parameters:
        - $ref: '#/components/parameters/subscriptionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - topics
              properties:
                topics:
                  type: array
                  description: The topics to subscribe to
                  items:
                    type: string
            examples:
              Subscribing to a single topic:
                value:
                  topics:
                    - test-topic

  /bus/v1/subscriptions/{subscriptionId}/events:
    get:
      operationId: GetSubscriptionEvents
      description: Get new events for the provided subscription
      responses:
        '200':
          description: New events
          content:
            application/json:
              schema:
                type: object
                required:
                  - events
                properties:
                  events:
                    type: array
                    items:
                      $ref: '#/components/schemas/Event'
        '202':
          description: No new events are available. Response will block until the client should try again.
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
        - {}
        - JWT: []
      parameters:
        - $ref: '#/components/parameters/subscriptionId'