Skip to content

API-Driven Service Catalogs: CNPA practice questions

A service catalog answers two questions for an engineering organization: what software and capabilities exist, and who owns them. An API-driven catalog stores that information as machine-readable data that tools can query and update, instead of a spreadsheet or wiki page that goes stale.

By Ibrahim Yesilay · Published · Updated

Independent community practice, not affiliated with or endorsed by CNCF or The Linux Foundation.

What API-Driven Service Catalogs covers in CNPA

A service catalog answers two questions for an engineering organization: what software and capabilities exist, and who owns them. An API-driven catalog stores that information as machine-readable data that tools can query and update, instead of a spreadsheet or wiki page that goes stale. In platform engineering the term covers two related things: a catalog of the software the organization runs, and a catalog of the capabilities the platform offers, each backed by an API.

Backstage's Software Catalog is the usual reference for the first. It is a centralized system that keeps track of ownership and metadata for services, websites, libraries, data pipelines, ML models and more. Its source of truth is metadata YAML files stored with the code in source control, which Backstage harvests and visualizes; the descriptor format documentation recommends naming them catalog-info.yaml, and they usually sit in the repository root. Components can be registered manually, created through Backstage templates, or imported by integrating an external source. The catalog's system model has three core entities: components are individual pieces of software, APIs are the boundaries between components, and resources are the physical or virtual infrastructure a component needs to operate, such as databases, topics, buckets or CDNs. Components declare the APIs they provide and consume, and API entities can carry definitions in formats such as OpenAPI, AsyncAPI, GraphQL or gRPC, so consumers can find and read them. User and Group entities record people and teams, which is how ownership is expressed.

For the second meaning, the platform's own APIs act as the catalog of capabilities. In a Kubernetes-based platform each capability can be a custom resource type, so the set of resource types the platform exposes is effectively its menu. The Platforms White Paper describes its portal capability as publishing documentation, service catalogs and project templates, and the maturity model's integrated level includes a scenario in which a user selects Provision a Database from a catalog in a portal, and automation creates the database and sends back a URL and a location for the credentials. The catalog entry is the front; the API behind it does the provisioning.

Why it matters: ownership data turns incident routing, audits and migrations into lookups, which the Backstage documentation describes as no more orphan software hiding in the dark corners of the ecosystem. Machine-readable descriptors also let tooling report which services lack an owner, documentation or an API definition.

Misconceptions are that a catalog must be filled in by hand in a central tool (descriptors kept next to the code stay current through normal reviews), that the catalog is the platform (it is one interface onto it), and that a catalog only covers microservices.

At associate level, expect questions about what a catalog records, where its data should live, how components, APIs and resources relate, and how a catalog entry connects to self-service provisioning.

Key points

  • A catalog records what exists and who owns it, as machine-readable data.
  • Backstage reads catalog-info.yaml descriptors stored with the code.
  • The system model: components, the APIs between them, and the resources they need.
  • A capability catalog entry should be backed by an API that actually provisions it.

Three sample questions

8 CNPA questions on API-Driven Service Catalogs, 8 with explanations. How practice works

Question 1

In Backstage, where does the information about a component in the Software Catalog come from, and who keeps it current?
  1. A.Entries typed into the Backstage UI, which cannot be changed through Git afterwards
  2. B.A central spreadsheet that the platform team maintains and reviews every quarter
  3. C.Automatic discovery of running Pods in the clusters, with no metadata files involved
  4. D.Metadata YAML files in source control, kept current by the owning team through Git

Correct answer: D

The Backstage Software Catalog is built around metadata YAML files stored together with the code, which are the source of truth for its components; teams owning the components maintain this metadata using their normal Git workflow, and Backstage shows the update shortly after merge. Why the other options are wrong. "Entries typed into the Backstage UI, which cannot be ...": The catalog is designed around Git-managed metadata files that owners update. "A central spreadsheet that the platform team maintains and reviews every quarter": The source of truth is metadata files in source control, not a separate spreadsheet. "Automatic discovery of running Pods in the clusters, with ...": Components are registered from YAML files or created through templates, not inferred only from Pods.

Sources: CNCF CNPA curriculum (CNPA_Curriculum.pdf), Backstage Software Catalog

Question 2

A platform offers an API that creates and maintains databases and returns everything a user needs to use one: a connection string, the location of the secret data and a dashboard with observability data. Which Interfaces level of the CNCF Platform Engineering Maturity Model gives this example?
  1. A.Level 1, Provisional: custom processes
  2. B.Level 4, Optimizing: integrated services
  3. C.Level 2, Operationalized: standard tooling
  4. D.Level 3, Scalable: self-service solutions

Correct answer: D

The maturity model's Interfaces aspect gives this as its Level 3 (Scalable, self-service solutions) scenario: an API abstracts the creation and maintenance of databases and provides the information required to use the capability, such as a connection string, the secret location and an observability dashboard. Why the other options are wrong. "Level 1, Provisional: custom processes": Level 1 relies on varying manual processes and person-to-person knowledge. "Level 4, Optimizing: integrated services": Level 4 integrates capabilities transparently and provisions some automatically, such as injected observability agents. "Level 2, Operationalized: standard tooling": Level 2 provides standard templates and documents that often still need maintainer support; its example is a curated library of Terraform modules and CRDs.

Sources: CNCF CNPA curriculum (CNPA_Curriculum.pdf), CNCF Platform Engineering Maturity Model

Question 3

In the Backstage system model, a team wants one catalog entity that groups the payments backend service, its database and its batch job, and that exposes the public payments API to other teams. Which entity kind should they use?
  1. A.Domain
  2. B.System
  3. C.Location
  4. D.Group

Correct answer: B

The Backstage system model defines a System as a collection of resources and components that exposes one or several public APIs. Grouping the payments service, its database and its job behind the public API is exactly that. Why the other options are wrong. "Domain": A domain relates entities and systems to a part of the business; it groups systems rather than being the unit that exposes the API. "Location": A location is a marker that references other places to look for catalog data; it does not model software. "Group": A group describes an organizational entity such as a team or business unit, not a set of software parts.

Sources: CNCF CNPA curriculum (CNPA_Curriculum.pdf), Backstage: System Model

Practice this topic

Focus mode keeps every question on API-Driven Service Catalogs until you leave it. 10 free guest answers, then a free account; no credit card.

Or open CNPA practice across all topics.

Sources

The explanation above was checked against these official documents.