Backstage Catalog: CBA practice questions
The Software Catalog is the part of Backstage that keeps track of ownership and metadata for all the software in an organization.
By Ibrahim Yesilay · Published · Updated
Independent community practice, not affiliated with or endorsed by CNCF or The Linux Foundation.
What Backstage Catalog covers in CBA
The Software Catalog is the part of Backstage that keeps track of ownership and metadata for all the software in an organization. Its source of truth is metadata YAML stored in source control next to the code, conventionally a catalog-info.yaml file at the repository root, and when a change to that file is merged the catalog shows the new metadata after a short while.
Every entity has the same envelope: apiVersion, kind, metadata and spec. Backstage's own kinds use an apiVersion starting with backstage.io/, such as backstage.io/v1alpha1. metadata.name is required, must be 1 to 63 characters of letters, digits and the separators dash, underscore and dot, and is unique per kind within a namespace, compared without regard to case. The namespace defaults to default. Labels classify entities and the backstage.io/ prefix is reserved; annotations hold non-identifying string values, usually links to other systems; tags are short lowercase strings. The relations and status fields are produced by the catalog and are not written in descriptor files.
The kinds are Component, API, Resource, System, Domain, Group, User, Location and Template, and each has its own required spec fields. A Component needs type, lifecycle and owner, and can name a system, providesApis, consumesApis and dependsOn. An API needs type, lifecycle, owner and a definition, whose format follows the type, for example OpenAPI, AsyncAPI, GraphQL or gRPC. System and Domain need an owner, a Resource needs owner and type, a Group needs type and children (which may be empty), a User needs memberOf (which may be empty), and a Location lists target or targets to read. Spec fields such as owner and system become relations like ownedBy and partOf, and those relations are what consumers should read.
Common annotations connect an entity to tools. github.com/project-slug names the repository as owner/repository, backstage.io/techdocs-ref says where TechDocs source lives, and backstage.io/source-location points at the code when the descriptor is not stored there. The catalog itself adds backstage.io/managed-by-location and backstage.io/managed-by-origin-location, and sets backstage.io/orphan, which should never be added by hand.
Entities arrive in three ways: a user registers the full URL of a YAML file through the /create page, Software Templates register what they create automatically, or the app configuration lists static entries under catalog.locations. By default catalog.rules allows only the Component, API and Location kinds, so a Group in a newly registered file is rejected until the rules, globally or for that location, allow it. Setting the key replaces the default list.
Behind the scenes, entity providers ingest raw data with only a basic shape check, processors validate it and emit relations and errors, and a stitcher assembles the final entity. Processing never deletes anything. An entity that its parent location stops emitting becomes an orphan and is removed by default, unless orphanStrategy: keep is set. Processing errors appear on the entity in the UI.
Key points
- Component requires type, lifecycle and owner; API additionally requires a definition.
- Without custom catalog.rules, only Component, API and Location kinds are accepted.
- Entity names are 1 to 63 characters and unique per kind and namespace, case-insensitively.
- Orphaned entities are deleted by default; orphanStrategy: keep retains them.
Three sample questions
24 CBA questions on Backstage Catalog, 24 with explanations. How practice works
Question 1
- A.Managing infrastructure deployments
- B.Storing documentation
- C.Providing a centralized inventory of software and resources
- D.Monitoring system health
Correct answer: C
Question 2
- A.
spec.owner - B.
metadata.description - C.
metadata.name - D.
spec.type
Correct answer: C
metadata.name field is required in all Backstage catalog entity definitions as it provides the unique identifier for the entity.Question 3
- A.JSON
- B.XML
- C.YAML
- D.TOML
Correct answer: C
Practice this topic
Focus mode keeps every question on Backstage Catalog until you leave it. 10 free guest answers, then a free account; no credit card.
Or open CBA practice across all topics.
Sources
The explanation above was checked against these official documents.
- Backstage docs: Software Catalog overview (checked 2026-10-23)
- Backstage docs: Descriptor Format of Catalog Entities (checked 2026-10-23)
- Backstage docs: Well-known Annotations (checked 2026-10-23)
- Backstage docs: Catalog Configuration (checked 2026-10-23)
- Backstage docs: The Life of an Entity (checked 2026-10-23)
Frequently asked questions
Why did a Group or User defined in a registered file not appear in the catalog?
The default catalog.rules allow only Component, API and Location. Other kinds must be allowed explicitly, either in the global catalog.rules list or in a rules list on the specific location.