Backstage Entity API

The Entity API from Backstage — 9 operation(s) for entity.

Operations 12

POST /refresh Refresh entity #
GET /entities Get entities #
GET /entities/by-uid/{uid} Get entity by uid #
DELETE /entities/by-uid/{uid} Delete entity by uid #
GET /entities/by-name/{kind}/{namespace}/{name} Get entity by name #
GET /entities/by-name/{kind}/{namespace}/{name}/ancestry Get entity ancestry by name #
POST /entities/by-refs Get entities by refs #
GET /entities/by-query Get entities by query #
POST /entities/by-query Query entities by predicate #
GET /entity-facets Get entity facets #
POST /entity-facets Query entity facets by predicate #
POST /validate-entity Validate entity #

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/backstage-entity-api"
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-entity-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: catalog Entity API
  version: '1'
  description: The API surface consists of a few distinct groups of functionality.
  license:
    name: Apache-2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  contact: {}
servers:
- url: /
tags:
- name: Entity
paths:
  /refresh:
    post:
      operationId: RefreshEntity
      tags:
      - Entity
      description: Refresh the entity related to entityRef.
      responses:
        '200':
          description: Refreshed
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                authorizationToken:
                  type: string
                entityRef:
                  type: string
                  description: The reference to a single entity that should be refreshed
              required:
              - entityRef
              description: Options for requesting a refresh of entities in the catalog.
              additionalProperties: false
      summary: Refresh entity
      x-summary-source: derived
  /entities:
    get:
      operationId: GetEntities
      tags:
      - Entity
      description: Get all entities matching a given filter.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entity'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/after'
      - name: order
        in: query
        allowReserved: true
        required: false
        schema:
          type: array
          items:
            type: string
      summary: Get entities
      x-summary-source: derived
  /entities/by-uid/{uid}:
    get:
      operationId: GetEntityByUid
      tags:
      - Entity
      description: Get a single entity by the UID.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/uid'
      summary: Get entity by uid
      x-summary-source: derived
    delete:
      operationId: DeleteEntityByUid
      tags:
      - Entity
      description: Delete a single entity by UID.
      responses:
        '204':
          description: Deleted successfully.
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/uid'
      summary: Delete entity by uid
      x-summary-source: derived
  /entities/by-name/{kind}/{namespace}/{name}:
    get:
      operationId: GetEntityByName
      tags:
      - Entity
      description: Get an entity by an entity ref.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/kind'
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      summary: Get entity by name
      x-summary-source: derived
  /entities/by-name/{kind}/{namespace}/{name}/ancestry:
    get:
      operationId: GetEntityAncestryByName
      tags:
      - Entity
      description: Get an entity's ancestry by entity ref.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityAncestryResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/kind'
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      summary: Get entity ancestry by name
      x-summary-source: derived
  /entities/by-refs:
    post:
      operationId: GetEntitiesByRefs
      tags:
      - Entity
      description: Get a batch set of entities given an array of entityRefs.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntitiesBatchResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              required:
              - entityRefs
              properties:
                entityRefs:
                  type: array
                  items:
                    type: string
                fields:
                  type: array
                  items:
                    type: string
                query:
                  $ref: '#/components/schemas/JsonObject'
            examples:
              Fetch Backstage entities:
                value:
                  entityRefs:
                  - component:default/backstage
                  - api:default/backstage
              Fetch annotations for backstage entity:
                value:
                  entityRefs:
                  - component:default/backstage
                  fields:
                  - metadata.annotations
      parameters:
      - $ref: '#/components/parameters/filter'
      summary: Get entities by refs
      x-summary-source: derived
  /entities/by-query:
    get:
      operationId: GetEntitiesByQuery
      tags:
      - Entity
      description: Search for entities by a given query.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntitiesQueryResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/orderField'
      - $ref: '#/components/parameters/cursor'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/totalItems'
      - name: fullTextFilterTerm
        in: query
        description: Text search term.
        required: false
        allowReserved: true
        schema:
          type: string
      - name: fullTextFilterFields
        in: query
        description: A comma separated list of fields to sort returned results by.
        required: false
        allowReserved: true
        schema:
          type: array
          items:
            type: string
        explode: false
        style: form
      summary: Get entities by query
      x-summary-source: derived
    post:
      operationId: QueryEntitiesByPredicate
      tags:
      - Entity
      description: Query entities using predicate-based filters.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntitiesQueryResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                cursor:
                  type: string
                limit:
                  type: number
                offset:
                  type: number
                orderBy:
                  type: array
                  items:
                    type: object
                    required:
                    - field
                    - order
                    properties:
                      field:
                        type: string
                      order:
                        type: string
                        enum:
                        - asc
                        - desc
                fullTextFilter:
                  type: object
                  properties:
                    term:
                      type: string
                    fields:
                      type: array
                      items:
                        type: string
                fields:
                  type: array
                  items:
                    type: string
                totalItems:
                  type: string
                  enum:
                  - include
                  - exclude
                  description: 'Controls whether the response''s `totalItems` field is

                    computed. Pass `exclude` to skip the count when the caller

                    doesn''t need it. Defaults to `include`.

                    '
                query:
                  $ref: '#/components/schemas/JsonObject'
      summary: Query entities by predicate
      x-summary-source: derived
  /entity-facets:
    get:
      operationId: GetEntityFacets
      tags:
      - Entity
      description: Get all entity facets that match the given filters.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityFacetsResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      parameters:
      - in: query
        name: facet
        required: true
        allowReserved: true
        schema:
          type: array
          items:
            type: string
        examples:
          Entities by kind:
            value:
            - kind
          Entities by spec type:
            value:
            - spec.type
      - $ref: '#/components/parameters/filter'
      summary: Get entity facets
      x-summary-source: derived
    post:
      operationId: QueryEntityFacetsByPredicate
      tags:
      - Entity
      description: Get entity facets using predicate-based filters.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityFacetsResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - {}
      - JWT: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - facets
              properties:
                facets:
                  type: array
                  items:
                    type: string
                query:
                  $ref: '#/components/schemas/JsonObject'
      summary: Query entity facets by predicate
      x-summary-source: derived
  /validate-entity:
    post:
      operationId: ValidateEntity
      tags:
      - Entity
      description: Validate that a passed in entity has no errors in schema.
      responses:
        '200':
          description: Ok
        '400':
          description: Validation errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        message:
                          type: string
                      required:
                      - name
                      - message
                      additionalProperties: {}
                required:
                - errors
      security:
      - {}
      - JWT: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                location:
                  type: string
                entity:
                  type: object
                  additionalProperties: {}
              required:
              - location
              - entity
      summary: Validate entity
      x-summary-source: derived
components:
  parameters:
    uid:
      name: uid
      in: path
      required: true
      schema:
        type: string
    totalItems:
      name: totalItems
      in: query
      description: 'Controls whether the response''s `totalItems` field is computed. Computing

        the total may be expensive for large catalogs; pass `exclude` if the

        caller does not need it (e.g. cursor-paginated UIs that only display the

        count cosmetically). Defaults to `include`. New values may be added in

        the future, such as an approximate mode.

        '
      required: false
      allowReserved: true
      schema:
        type: string
        enum:
        - include
        - exclude
    namespace:
      name: namespace
      in: path
      required: true
      schema:
        type: string
    cursor:
      name: cursor
      in: query
      description: "You may pass the `cursor` query parameters to perform cursor based pagination\nthrough the set of entities. The value of `cursor` will be returned in the response, under the `pageInfo` property:\n\n```json\n  \"pageInfo\": {\n    \"nextCursor\": \"a-cursor\",\n    \"prevCursor\": \"another-cursor\"\n  }\n```\n\nIf `nextCursor` exists, it can be used to retrieve the next batch of entities. Following the same approach,\nif `prevCursor` exists, it can be used to retrieve the previous batch of entities.\n\n- [`filter`](#filtering), for selecting only a subset of all entities\n- [`fields`](#field-selection), for selecting only parts of the full data\n  structure of each entity\n- `limit` for limiting the number of entities returned (20 is the default)\n- [`orderField`](#ordering), for deciding the order of the entities\n- `fullTextFilter`\n  **NOTE**: [`filter`, `orderField`, `fullTextFilter`] and `cursor` are mutually exclusive. This means that,\n  it isn't possible to change any of [`filter`, `orderField`, `fullTextFilter`] when passing `cursor` as query parameters,\n  as changing any of these properties will affect pagination. If any of `filter`, `orderField`, `fullTextFilter` is specified together with `cursor`, only the latter is taken into consideration.\n"
      required: false
      allowReserved: true
      schema:
        type: string
        minLength: 1
    limit:
      name: limit
      in: query
      description: Number of records to return in the response.
      required: false
      allowReserved: true
      schema:
        type: integer
        minimum: 0
    offset:
      name: offset
      in: query
      description: Number of records to skip in the query page.
      required: false
      allowReserved: true
      schema:
        type: integer
        minimum: 0
    kind:
      name: kind
      in: path
      required: true
      schema:
        type: string
    orderField:
      name: orderField
      in: query
      description: 'By default the entities are returned ordered by their internal uid. You can

        customize the `orderField` query parameters to affect that ordering.


        For example, to return entities by their name:


        `/entities/by-query?orderField=metadata.name,asc`


        Each parameter can be followed by `asc` for ascending lexicographical order or

        `desc` for descending (reverse) lexicographical order.

        '
      required: false
      allowReserved: true
      schema:
        type: array
        items:
          type: string
          description: A two-item tuple of [field, order].
      explode: true
      style: form
      examples:
        Order ascending by name:
          value:
          - metadata.name,asc
        Order descending by owner:
          value:
          - spec.owner,desc
    filter:
      name: filter
      in: query
      description: "You can pass in one or more filter sets that get matched against each entity.\nEach filter set is a number of conditions that all have to match for the\ncondition to be true (conditions effectively have an AND between them). At least\none filter set has to be true for the entity to be part of the result set\n(filter sets effectively have an OR between them).\n\nExample:\n\n```text\n/entities/by-query?filter=kind=user,metadata.namespace=default&filter=kind=group,spec.type\n\n  Return entities that match\n\n    Filter set 1:\n      Condition 1: kind = user\n                  AND\n      Condition 2: metadata.namespace = default\n\n    OR\n\n    Filter set 2:\n      Condition 1: kind = group\n                  AND\n      Condition 2: spec.type exists\n```\n\nEach condition is either on the form `<key>`, or on the form `<key>=<value>`.\nThe first form asserts on the existence of a certain key (with any value), and\nthe second asserts that the key exists and has a certain value. All checks are\nalways case _insensitive_.\n\nIn all cases, the key is a simplified JSON path in a given piece of entity data.\nEach part of the path is a key of an object, and the traversal also descends\nthrough arrays. There are two special forms:\n\n- Array items that are simple value types (such as strings) match on a key-value\n  pair where the key is the item as a string, and the value is the string `true`\n- Relations can be matched on a `relations.<type>=<targetRef>` form\n\nLet's look at a simplified example to illustrate the concept:\n\n```json\n{\n  \"a\": {\n    \"b\": [\"c\", { \"d\": 1 }],\n    \"e\": 7\n  }\n}\n```\n\nThis would match any one of the following conditions:\n\n- `a`\n- `a.b`\n- `a.b.c`\n- `a.b.c=true`\n- `a.b.d`\n- `a.b.d=1`\n- `a.e`\n- `a.e=7`\n\nSome more real world usable examples:\n\n- Return all orphaned entities:\n\n  `/entities/by-query?filter=metadata.annotations.backstage.io/orphan=true`\n\n- Return all users and groups:\n\n  `/entities/by-query?filter=kind=user&filter=kind=group`\n\n- Return all service components:\n\n  `/entities/by-query?filter=kind=component,spec.type=service`\n\n- Return all entities with the `java` tag:\n\n  `/entities/by-query?filter=metadata.tags.java`\n\n- Return all users who are members of the `ops` group (note that the full\n  [reference](references.md) of the group is used):\n\n  `/entities/by-query?filter=kind=user,relations.memberof=group:default/ops`\n"
      required: false
      allowReserved: true
      schema:
        type: array
        items:
          type: string
      examples:
        Get groups:
          value:
          - kind=group
        Get orphaned components:
          value:
          - kind=component,metadata.annotations.backstage.io/orphan=true
    name:
      name: name
      in: path
      required: true
      schema:
        type: string
    after:
      name: after
      in: query
      description: Pointer to the previous page of results.
      required: false
      allowReserved: true
      schema:
        type: string
        minLength: 1
    fields:
      name: fields
      in: query
      description: "By default the full entities are returned, but you can pass in a `fields` query\nparameter which selects what parts of the entity data to retain. This makes the\nresponse smaller and faster to transfer, and may allow the catalog to perform\nmore efficient queries.\n\nThe query parameter value is a comma separated list of simplified JSON paths\nlike above. Each path corresponds to the key of either a value, or of a subtree\nroot that you want to keep in the output. The rest is pruned away. For example,\nspecifying `?fields=metadata.name,metadata.annotations,spec` retains only the\n`name` and `annotations` fields of the `metadata` of each entity (it'll be an\nobject with at most two keys), keeps the entire `spec` unchanged, and cuts out\nall other roots such as `relations`.\n\nSome more real world usable examples:\n\n- Return only enough data to form the full ref of each entity:\n\n  `/entities/by-query?fields=kind,metadata.namespace,metadata.name`\n"
      required: false
      allowReserved: true
      explode: false
      schema:
        type: array
        items:
          type: string
      examples:
        Get name and the entire relations collection:
          value:
          - metadata.name
          - relations
        Get kind, name and namespace:
          value:
          - kind
          - metadata.name
          - metadata.namespace
  schemas:
    EntityFacetsResponse:
      type: object
      properties:
        facets:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/EntityFacet'
      required:
      - facets
      additionalProperties: false
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            name:
              type: string
            message:
              type: string
            stack:
              type: string
            code:
              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
      - response
      additionalProperties: {}
    Entity:
      type: object
      properties:
        relations:
          type: array
          items:
            $ref: '#/components/schemas/EntityRelation'
          description: The relations that this entity has with other entities.
        spec:
          $ref: '#/components/schemas/JsonObject'
        metadata:
          $ref: '#/components/schemas/EntityMeta'
        kind:
          type: string
          description: The high level entity type being described.
        apiVersion:
          type: string
          description: 'The version of specification format for this particular entity that

            this is written against.'
      required:
      - metadata
      - kind
      - apiVersion
      description: The parts of the format that's common to all versions/kinds of entity.
    JsonObject:
      type: object
      properties: {}
      description: A type representing all allowed JSON object values.
      additionalProperties: {}
    EntitiesBatchResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/NullableEntity'
          description: 'The list of entities, in the same order as the refs in the request. Entries

            that are null signify that no entity existed with that ref.'
      required:
      - items
      additionalProperties: false
    EntityAncestryResponse:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              parentEntityRefs:
                items:
                  type: string
                type: array
              entity:
                $ref: '#/components/schemas/Entity'
            required:
            - parentEntityRefs
            - entity
        rootEntityRef:
          type: string
      required:
      - items
      - rootEntityRef
      additionalProperties: false
    EntityLink:
      type: object
      properties:
        type:
          type: string
          description: An optional value to categorize links into specific groups
        icon:
          type: string
          description: An optional semantic key that represents a visual icon.
        title:
          type: string
          description: An optional descriptive title for the link.
        url:
          type: string
          description: The url to the external site, document, etc.
      required:
      - url
      description: A link to external information that is related to the entity.
      additionalProperties: false
    EntitiesQueryResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Entity'
          description: The list of entities paginated by a specific filter.
        totalItems:
          type: number
        pageInfo:
          type: object
          properties:
            nextCursor:
              type: string
              description: The cursor for the next batch of entities.
            prevCursor:
              type: string
              description: The cursor for the previous batch of entities.
      required:
      - items
      - totalItems
      - pageInfo
      additionalProperties: false
    MapStringString:
      type: object
      properties: {}
      additionalProperties:
        type: string
      description: Construct a type with a set of properties K of type T
    EntityRelation:
      type: object
      properties:
        targetRef:
          type: string
          description: The entity ref of the target of this relation.
        type:
          type: string
          description: The type of the relation.
      required:
      - targetRef
      - type
      description: A relation of a specific type to another entity in the catalog.
      additionalProperties: false
    NullableEntity:
      anyOf:
      - type: object
        properties:
          relations:
            type: array
            items:
              $ref: '#/components/schemas/EntityRelation'
            description: The relations that this entity has with other entities.
          spec:
            $ref: '#/components/schemas/JsonObject'
          metadata:
            $ref: '#/components/schemas/EntityMeta'
          kind:
            type: string
            description: The high level entity type being described.
          apiVersion:
            type: string
            description: 'The version of specification format for this particular entity that

              this is written against.'
        required:
        - metadata
        - kind
        - apiVersion
        description: The parts of the format that's common to all versions/kinds of entity.
      - type: 'null'
    EntityMeta:
      type: object
      properties:
        links:
          type: array
          items:
            $ref: '#/components/schemas/EntityLink'
          description: A list of external hyperlinks related to the entity.
        tags:
          type: array
          items:
            type: string
          description: 'A list of single-valued strings, to for example classify catalog entities in

            various ways.'
        annotations:
          $ref: '#/components/schemas/MapStringString'
        labels:
          $ref: '#/components/schemas/MapStringString'
        description:
          type: string
          description: 'A short (typically relatively few words, on one line) description of the

            entity.'
        title:
          type: string
          description: 'A display name of the entity, to be presented in user interfaces instead

            of the `name` property above, when available.

            This field is sometimes useful when the `name` is cumbersome or ends up

            being perceived as overly technical. The title generally does not have

            as stringent format requirements on it, so it may contain special

            characters and be more explanatory. Do keep it very short though, and

            avoid situations where a title can be confused with the name of another

            entity, or where two entities share a title.

            Note that this is only for display purposes, and may be ignored by some

            parts of the code. Entity references still always make use of the `name`

            property, not the title.'
        namespace:
          type: string
          description: The namespace that the entity belongs to.
        name:
          type: string
          description: 'The name of the entity.

            Must be unique within the catalog at any given point in time, for any

            given namespace + kind pair. This value is part of the technical

            identifier of the entity, and as such it will appear in URLs, database

            tables, entity references, and similar. It is subject to restrictions

            regarding what characters are allowed.

            If you want to use a different, more human readable string with fewer

            restrictions on it in user interfaces, see the `title` field below.'
        etag:
          type: string
          description: 'An opaque string that changes for each update operation to any part of

            the entity, including metadata.

            This field can not be set by the user at creation time, and the server

            will reject an attempt to do so. The field will be populated in read

            operations. The field can (optionally) be specified when performing

            update or delete operations, and the server will then reject the

            operation if it does not match the current stored value.'
        uid:
          type: string
          description: 'A globally unique ID for the entity.

            This field can not be set by the user at creation time, and the server

            will reject an attempt to do so. The field will be populated in read

            operations. The field can (optionally) be specified when performing

            update or delete operations, but the server is free to reject requests

            that do so in such a way that it breaks semantics.'
      required:
      - name
      description: Metadata fields common to all versions/kinds of entity.
      additionalProperties: {}
    EntityFacet:
      type: object
      properties:
        value:
          type: string
        count:
          type: number
      required:
      - value
      - count
      additionalProperties: false
  responses:
    ErrorResponse:
      description: An error response from the backend.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT