An application programming interface (API) estate that grows faster than it is governed becomes hard to find, inconsistent to use and risky to change. Most estates were never designed as a whole: each project shipped the interfaces it needed and moved on, and the organization later discovers duplicated capabilities, endpoints that nobody owns and changes that break consumers nobody knew existed. The usual response, a central review board, usually fails, because a gate that arrives late and can only say no is routed around.
This paper sets out how to govern APIs as products across their whole life. It defines product thinking for APIs and a shared vocabulary, then describes a federated model in which a small center of enablement sets a few standards, domains own their APIs, and policy is enforced as code in the pipeline and at the gateway. It follows an API through seven lifecycle stages from design to retirement, and closes with the style guide, baselines, platform, metrics, a maturity model and a plan for the first 90 days.
Written for API product owners, platform and integration architects, API guild leads, and the engineering, security and domain leaders who keep a growing API estate consistent and safe to change.
Executive summary
API governance is the set of decisions, standards and controls that keep interfaces findable, consistent and safe to change as their number grows. Done badly, it is a review board that slows delivery and is bypassed. Done well, it is largely invisible: standards ship as linting rules, templates and gateway policies, the compliant path is also the easiest one, and human review is reserved for what a machine cannot judge.
This paper argues for federated governance with a center of enablement. A small central team, supported by a guild drawn from every domain, publishes a short list of standards and the tooling that enforces them, while the domain that owns each API designs, runs, evolves and eventually retires it.
- An API is a product when someone can name its consumers, state its value, manage it through a deliberate lifecycle and review measures of its success.
- Layer (system, composite or experience) and exposure (private, partner or public) are independent attributes, both recorded in the catalog; together they drive review depth, security baseline and service tier.
- Decision rights are written down: who sets each policy, who approves exceptions and who applies it daily. Ownership has no exception path.
- Seven lifecycle stages (design, build, publish, consume, evolve, deprecate and retire) each close with evidence rather than a meeting.
- Additive change is the default; breaking changes open a new major version, announced through changelogs, portal notices, the Deprecation and Sunset headers and direct contact with registered consumers.
Later sections cover the style guide, baselines and platform that enforce the standards, the metrics and maturity model that show progress, and a 90-day plan sized to produce evidence rather than a program plan.
An estate that grows faster than it is governed
Most API estates were not designed; they accumulated. Each project shipped the interfaces it needed, documented them to the standard of the moment and moved on. The result is familiar to anyone who has tried to integrate with such an estate: duplicated APIs for the same capability, endpoints nobody can find without asking around, a different error format and paging scheme on every service, and changes that break consumers because no one knew who was calling.
API estates grow by accretion: teams ship interfaces that few can find, fewer can rely on, and that change without warning.
Sprawl
Duplicated and undocumented APIs with no named owner, discovered only when they fail or when someone tries to switch them off.
Inconsistency
Every API spells errors, paging and identifiers differently, so each integration starts from zero and client code cannot be reused.
Governance as a gate
A review board that arrives late, can only approve or refuse and has no tooling is bypassed, and the standards it guards decay.
The remedy has four parts, and the rest of this paper develops each one: treat APIs as products with accountable owners; federate governance, so that a small center enables rather than gates; make the standards executable; and run every API through an explicit lifecycle, with the evidence for each stage recorded in a catalog.
APIs as products
Product thinking is the stance that makes the rest of governance possible: an accountable owner for every API, a vocabulary for describing it, and roles that divide the work of building, enabling and consuming it.
Product thinking applied to an API
An API is a product when someone can name its consumers and what they need, state why those consumers would choose it over a direct database connection, a nightly file or building their own, manage it through a deliberate lifecycle and review measures of its success. The four elements below are the test.
Consumer segments
Name who the API serves, whether internal teams, partners or the public, and what each needs. Different segments justify different exposure, support and service levels.
Value proposition
State the job the API does and why a consumer would choose it over the alternatives. If that cannot be said, the API is an implementation detail, not a product.
Managed lifecycle
A product is designed, launched, evolved and retired on purpose. Every API carries a version, a status, a roadmap and a view on its own deprecation from the day it is published.
Success measures
Adoption, reuse, time to first successful call, reliability against service-level objectives (SLOs) and consumer satisfaction, reviewed by the owner as a product team reviews a product.
Consumer segments matter because they drive exposure, support and service-level decisions: an internal system API with three known callers is governed differently from a partner API with contractual obligations. The lifecycle element is the one most often missed; an API published without a version, a status and a view on its eventual deprecation has already created a future migration problem. Product thinking does not mean a marketing plan for every internal endpoint. It means that each API has a person accountable for its consumers and its evolution, who decides its scope, versions and retirement against evidence.
A shared vocabulary: layers and exposure types
Many governance disputes turn out to be about what kind of API is under discussion. Two independent attributes settle most of them: the layer in which an API sits, and the exposure type that determines who may call it.
Experience APIs
Shaped for one channel or consumer, and expected to change often
- Mobile app
- Partner portal
- Web front end
Composite or process APIs
Compose several system APIs into one business capability, such as placing an order
System APIs
Expose a system of record or a domain's data behind a stable, owned contract
The three-layer vocabulary was popularized by MuleSoft as API-led connectivity and is used widely in vendor-neutral form. Layer drives ownership and change frequency: experience APIs change often, while system APIs must stay stable. It is a vocabulary, not an instruction to build three layers for every capability; an unnecessary composite adds latency and blurs ownership. Exposure type describes who may call the API, and it drives the security baseline, the terms of use and the abuse protection required.
| Exposure | Who may call | What it requires |
|---|---|---|
| Private | Internal consumers only | Still cataloged, owned and versioned; enterprise identity and the standard baseline |
| Partner | Named external organizations under contract | Partner credentials, quotas, agreed service levels and contractual terms |
| Public | Any registered developer | The strongest abuse protection, published terms of use, rate limits and a support channel |
The catalog records both attributes for every API, so that review depth, service tiers and policies follow rules rather than negotiation. A public system API and a private experience API are different governance problems, and the vocabulary lets teams say so in two words.
Roles in an API product organization
Governance works when each role knows what it is accountable for and when each accountability is visible in something that can be inspected. Role names vary between organizations; what matters is that each accountability has exactly one named holder.
| Role | Accountable for | Typical artifacts and forums |
|---|---|---|
| API product owner | The API as a product: consumers, roadmap, versions and retirement | Backlog, changelog, catalog entry, consumer reviews |
| Platform team | Gateway, portal, catalog and linting offered as self-service | Platform roadmap, golden paths, policy packs, runbooks |
| API guild (community of practice) | Style guide, design standards, review practice and shared learning | Guild meetings, style-guide repository, design reviews |
| Consumers | Integrating within the terms, reporting issues and migrating on time | Portal registrations, support requests, feedback |
| Domain lead | Funding API products, naming owners and resolving priorities | Domain roadmap, ownership register, funding decisions |
| Risk and security partners | Security baseline, classification rules and exception approval | Threat models, classification policy, exception register |
Two choices in the table matter most. The API product owner sits inside the owning domain, usually as a product manager or technical lead, so that product accountability stays with the people who understand the consumers. And the platform team offers its tooling as a self-service platform, in the sense used by Matthew Skelton and Manuel Pais in Team Topologies, so that following the standard is the path of least resistance. Consumers have obligations too, above all migrating before sunset dates.
The governance model
The governance model decides who sets standards, who applies them and how conformance is checked. Its central choice, between a center that approves designs and one that enables teams, largely determines whether governance is adopted or avoided.
From gatekeeper to center of enablement
Gatekeeping center of excellence
- Approves every design in a central board, usually late in delivery
- Standards live in documents; people check conformance, inconsistently
- Exceptions are negotiated case by case and never expire
- Teams route around the queue with shadow APIs and direct database access
- Measures its own throughput, not the health of the estate
Federated model with a center of enablement
- Sets a small set of central standards; domains design, own and evolve their APIs
- Encodes standards in linting rules, templates and gateway policy that teams run themselves
- Reviews only what rules cannot judge: new products, breaking changes, sensitive data
- Grants exceptions with an owner and an expiry date, and publishes them
- Measures conformance, adoption and time to first call across the estate
A gatekeeping center of excellence fails in a characteristic way. It arrives late in delivery, when changing a design is expensive; it can only say yes or no; and because it can only slow things down, teams route around it and its standards decay with its authority. It also tends to measure what it controls, such as reviews completed, rather than whether the estate is becoming easier to use.
A center of enablement keeps the expertise but changes its product: instead of approvals, it ships standards as tooling that teams run themselves, and it reviews only what rules cannot judge. Domains design, own and evolve their APIs within those standards, which is what federated means here. In the vocabulary of Team Topologies, the center combines an enabling team, which facilitates and teaches, with a platform team, which offers tooling as a service, while stream-aligned domain teams own the outcome.
The policy set and decision rights
A decision-rights table ends the argument about who may decide what. The allocation below is illustrative; the pattern it encodes is central standards, domain ownership and exceptions that expire.
| Policy area | Who sets it | Who approves exceptions | Who applies it daily |
|---|---|---|---|
| Design standards and style guide | API guild; ratified by the architecture board | Guild lead, time-boxed | API product owners |
| Naming and versioning | API guild | Architecture board | API product owners |
| Security baseline | Security function with the platform team | Security lead, with a compensating control | Platform team at the gateway |
| Documentation standard | API guild | Guild lead, time-boxed | API product owners |
| Service tiers and SLOs | Platform team with operations | Domain lead, for a stated period | API product owners; on-call teams |
| Data classification in payloads | Data governance function | Data protection or risk partner | API product owners |
| Ownership of an API | Domain lead names the owner | None: every API has an owner | API product owner |
| Retirement of an API | API product owner, under the published policy | Architecture board, if consumers object | API product owner with the platform team |
Every exception is approved by a named role, with an end date or a compensating control. Two rows deserve emphasis. Ownership has no exception path, because an API without an owner is the root of most other failures, and the domain lead must name one before anything is published. Retirement is decided by the API product owner under the published policy, with escalation to the architecture board only when consumers object. Everyone else applies the policies daily, which is why the last column is mostly API product owners.
Governance as code
Governance as code means that standards are enforced by the tooling that builds and runs the APIs, so that conformance becomes a property of the pipeline rather than the outcome of a meeting. Five checkpoints carry most of the load.
Lint, then review by exception
Rules check every commit; people review only new products, breaking changes and sensitive data
Test the contract
Contract tests prove the code matches the published contract before release
Check the catalog
Publishing fails unless the catalog entry is complete, owner included
Enforce at the gateway
Gateway policy checks tokens and applies rate limits, quotas and required headers
Expire exceptions
Every waiver has an owner, a reason and an end date in a public register
The contract is linted on every commit against a shared ruleset that encodes the style guide. Open source OpenAPI linters such as Spectral, Redocly CLI and vacuum support custom rulesets of this kind, and diff tools such as oasdiff compare a proposed contract with the published one to flag breaking changes before they merge. Contract tests confirm that the implementation honors the published specification, and publishing fails unless the catalog entry is complete, which is what keeps the catalog trustworthy.
At run time, the gateway applies authentication, rate limits, quotas and required headers as policy, so teams cannot forget them. Exceptions still exist, but each has an owner, a reason and an expiry date in a public register reviewed monthly. An exception renewed repeatedly is a signal that the standard, not the team, should change.
The lifecycle, from design to retirement
Every API should share the same shape of life, so that owners, consumers and the platform know what is expected at each point and what evidence lets an API move on.
Seven stages and the evidence at each gate
| Stage | What happens | Gate or evidence to move on |
|---|---|---|
| Design | Consumer needs captured; contract written first in OpenAPI | Linted contract; design review where rules require it |
| Build | Implemented against the contract; a mock available to consumers | Contract tests and security baseline checks pass |
| Publish | Catalog entry created; exposed through gateway and portal | Entry complete; policies attached; documentation live |
| Consume | Consumers onboard with credentials, quotas, terms and a support channel | Each consumer registered and identifiable in traffic |
| Evolve | Additive changes shipped; breaking changes open a new version | Changelog updated; compatibility checked in the pipeline |
| Deprecate | Successor available; notices, headers and migration support | Usage falling; every active consumer contacted |
| Retire | Traffic blocked at the gateway; code and credentials removed | Catalog status retired; specification archived; no traffic |
Two stages deserve explanation. Consume is a stage in its own right, because an API whose callers cannot be identified cannot later be changed safely; onboarding with credentials, quotas and terms is what makes every caller visible in traffic. Evolve is the long middle of an API's life, where additive changes ship and breaking changes open a new version. The stages overlap in practice, but the evidence does not blur: each gate is a fact the owner can show, not a meeting the owner must attend.
The catalog as system of record
The catalog is the system of record for governance. The developer portal is the consumer-facing view of the same data and is never maintained separately, because two inventories inevitably drift apart.
API catalog
The governance record; the portal is its consumer view
Owner and team
A person or team that still exists
Version and status
Current, deprecated or retired, with the support window
Service tier and SLOs
Availability and latency objectives
Data classification
Field classes that set payload obligations
Exposure type
Private, partner or public
Registered consumers
Credentials, quotas and terms per consumer
Specification and docs
The OpenAPI contract, examples and guides
Changelog and notices
Releases, deprecations and sunset dates
Completeness is checked at publish and re-checked on a schedule, with stale entries flagged to their owners, because a catalog that decays is quickly ignored. Consumer onboarding runs through the portal, where credentials, quotas and terms are recorded per consumer; that record is what later makes targeted deprecation notices possible. The Open Worldwide Application Security Project (OWASP) API Security Top 10 lists improper inventory management as a risk in its own right, because outdated versions and forgotten hosts tend to go unpatched and unmonitored. Discoverability is therefore a security control as well as a convenience. When the catalog and the gateway disagree, the gateway is the truth, since it reflects what is actually exposed, and the catalog is corrected.
Versioning policy and change communication
Versioning policy
- Additive change by default; consumers tolerate unknown fields
- Breaking changes open a new major version
- Major version in the path or a header, one convention estate-wide
- A stated support window, such as the current and previous major versions
- Compatibility checked in the pipeline against the published contract
Change communication
- A consumer-facing changelog for every API
- Release notes for additive change; a migration guide for every major version
- Deprecation notice in the portal, the changelog and the response
- Deprecation and Sunset header fields on responses
- Direct contact with consumers still calling the old version
Additive change is the default: new optional fields and operations need no new version, provided consumers behave as tolerant readers that ignore fields they do not recognize. Breaking changes, such as removing a field, changing its meaning or tightening validation, open a new major version under one estate-wide convention. Stating the support window in advance makes retirement expected rather than negotiated.
Communication is the other half. Beyond changelogs, migration guides, portal notices and direct contact, two standard HTTP response header fields put the notice into the responses themselves, where client libraries, gateways and monitoring can detect it.
- Deprecation (RFC 9745, a Standards Track specification) signals that a resource is deprecated, or will be deprecated at a stated time. Its value is a structured-field date, written as an at sign followed by a Unix timestamp, and the same RFC defines a
deprecationlink relation that points to documentation of the change. - Sunset (RFC 8594, an Informational RFC) carries the HTTP date after which the resource is expected to become unresponsive. RFC 9745 requires that the Sunset time be no earlier than the deprecation time.
HTTP/1.1 200 OK
Deprecation: @<Unix time at which the version is deprecated>
Sunset: <HTTP date after which the version stops responding>
Link: <https://developer.example.com/orders/v1/migration>; rel="deprecation"; type="text/html"
The two fields answer different questions. Deprecation says that a version is no longer the one to build on; Sunset says when it will stop working. RFC 8594 itself notes that Sunset fits the second stage, once a decommissioning time is known, rather than an API that is merely no longer preferred.
Retirement playbook
Retirement is the stage most organizations skip, which is why version sprawl accumulates. The timeline below is illustrative: regulated or partner-facing APIs may need longer notice, and internal APIs with few consumers can move faster.
- Month 0
Decide and measure
Usage per consumer and version; successor published; sunset date set by policy
- Months 1 to 9
Notify and migrate
Notices, changelog and headers; migration support; monthly follow-up
- Months 10 to 12
Cut over
Scheduled brownouts; escalation through domain leads; traffic blocked at sunset
- After sunset
Remove
Code, infrastructure and credentials removed; entry retired; lessons recorded
Retirement starts from evidence: usage per consumer and version, a successor already published, and a sunset date recorded in the catalog. Notification runs through every channel at once, with monthly follow-up for consumers still calling. Cut-over uses scheduled brownouts, short planned periods during which the old version returns errors, to surface consumers that never registered; the rest are escalated through their domain leads before the gateway blocks traffic on the sunset date. Removal deletes code, infrastructure and credentials, and recording what delayed migration makes the next retirement faster.
Standards, platform and tooling
Standards make APIs predictable, and the platform makes the standards the default. Both should be short enough to remember and specific enough for a machine to check.
Style guide essentials
A style guide is useful in proportion to how much of it a machine can check. Each rule below is encoded as a linting check wherever a machine can judge it; the rest is covered in design review.
| Topic | Rule | Why it matters |
|---|---|---|
| Naming | One convention for case and plurals, applied by the linter | Predictable paths; less time reading documentation |
| Errors | RFC 9457 Problem Details: type, title, status, detail, instance | One error shape for every client to handle |
| Pagination | One scheme estate-wide; cursor-based for large or changing collections | Stable iteration with no duplicate or skipped items |
| Idempotency | Method semantics per RFC 9110; an idempotency key for unsafe operations | Safe retries without duplicate side effects |
| Dates and times | RFC 3339 timestamps with an explicit offset; calendar dates as full-date | No time-zone ambiguity across systems |
| Money | Amount as a decimal string plus an ISO 4217 currency code | No floating-point rounding; currency always explicit |
| Correlation identifiers | Propagate W3C Trace Context; return a request identifier in responses | Requests traceable across services and by support |
| Documentation | OpenAPI 3.x as the source of truth, with examples for every operation | Portal, mocks and tests generated from one specification |
Most of these rules point to an existing standard rather than inventing one. RFC 9457, which obsoletes the earlier RFC 7807, defines the error object served as application/problem+json, so an error catalog can map each problem type to documentation. Cursor pagination matters because offset paging over a moving collection skips or repeats items. RFC 9110, HTTP Semantics, makes GET, PUT and DELETE idempotent and POST and PATCH not, so unsafe operations that clients must be able to retry, such as creating a payment, accept an idempotency key; the Idempotency-Key request header is described in an IETF Internet-Draft and is already common in payment APIs. Correlation uses the World Wide Web Consortium (W3C) Trace Context headers, traceparent and tracestate, plus a request identifier that support staff can search for.
Security, documentation and service-tier baselines
Three baselines sit alongside the style guide, and every API inherits them.
Security baseline
- OAuth 2.0 or OpenID Connect for every consumer identity
- TLS on every hop; secrets rotated
- Authorization per object and per property, not per endpoint only
- Schema validation of input; rate limits and quotas per consumer
- OWASP API Security Top 10 as the threat checklist
Documentation standard
- OpenAPI 3.x specification in version control as the source of truth
- A getting-started guide that reaches a first successful call quickly
- Examples for every operation and error
- An error catalog mapped to Problem Details types
- Changelog, support channel and owner visible on the portal page
Service tiers and SLOs
- Three tiers, such as critical, standard and best effort
- Availability and latency SLOs and support hours per tier
- Error budgets govern the pace of change
- Tier set by the owner from consumer impact, recorded in the catalog
- Breaches reviewed with consumers
The security baseline requires OAuth 2.0 (RFC 6749) or OpenID Connect for consumer identity and Transport Layer Security (TLS) on every hop. Its most important line is authorization per object and per property rather than per endpoint: broken object level authorization and broken object property level authorization rank first and third in the OWASP API Security Top 10, which serves as the threat checklist for design review.
The documentation standard adds what a specification cannot provide, above all a getting-started guide whose quality shows up in time to first successful call. Service tiers give every API stated availability and latency objectives, and error budgets, as described in Google's Site Reliability Engineering (SRE) books, link tier to pace of change: an API that has spent its budget slows its releases until reliability is restored.
Payload obligations by exposure and sensitivity
Payloads carry data, and data carries obligations that follow the API wherever it is called. The matrix below uses two attributes the catalog already records: exposure type and the sensitivity of the data in the payload.
Sensitivity of data in the payload
Sensitive, internal
Classify fields in the contract, minimize, scope access by purpose, log access, govern log and cache retention
Sensitive, external
Strictest controls: legal basis or consent, partner terms, field-level authorization, encryption, impact assessment
Low sensitivity, internal
Baseline controls; invest in discoverability, consistency and reuse
Low sensitivity, external
Abuse protection, rate limits, caching and terms of use; watch for aggregation
Exposure: private to partner to public
Two legal hooks apply directly. Where processing is likely to result in a high risk to individuals, Article 35 of the General Data Protection Regulation (GDPR) requires a data protection impact assessment, and Article 25, data protection by design and by default, applies to the contract itself: a field that is not needed should not be in the response. At the other end of the matrix, low-sensitivity internal APIs, usually the majority, need only the baseline, while low-sensitivity public APIs need a watch on aggregation, because individually harmless fields can combine into a sensitive profile. The classification scheme itself belongs to enterprise data governance; the API program should adopt it rather than invent its own, and record each field's class in the contract.
The API platform stack
The platform turns standards into defaults. Each layer of the stack enforces part of the policy set, and the policy definitions for all of them live in version control.
Developer portal and catalog
Discovery, documentation, onboarding, consumer registration and the governance record
API gateway and management
Authentication, rate limits, quotas, thin transformation, analytics and metering
Design and build tooling
- Linting
- Mocking
- Contract tests
- Templates
Observability
Metrics, logs and traces per API and consumer, behind SLOs and usage analytics
Identity and policy services
Identity provider, token issuance and the policy store the gateway evaluates
Gateway topology and build versus buy
Topology and sourcing are decisions to make deliberately rather than inherit from the first team that needed a gateway.
| Topology | What it gives | What it costs |
|---|---|---|
| Central gateway | One policy point and one view of traffic | A bottleneck team and a single failure domain |
| Per-domain gateways | Autonomy and isolation for each domain | Policy drift and more instances to patch and monitor |
| Hybrid | A central edge for partner and public traffic, with domain gateways inside | Two layers to run; one shared policy pack to maintain |
Whatever the topology, policy definitions live in version control and are tested like code, which is what keeps per-domain gateways from drifting apart. A service mesh handles service-to-service traffic inside the boundary; it complements API management for consumers rather than replacing it, because it provides neither onboarding, nor per-consumer quotas, nor a portal.
Measuring and maturing
Governance earns its keep only if the estate becomes easier to find, use and change, and the evidence for that should be measured, not asserted.
Metrics that show whether governance is working
| Metric | What it shows | Watch-out |
|---|---|---|
| Adoption and reuse | Consumers per API; APIs used by more than one consuming team | Counting calls rewards chatty clients, not value |
| Time to first successful call | How quickly a new consumer gets a working request through | Measure from portal sign-up, not from credential issue |
| Conformance score | Share of linting rules passed per API and per domain | Rules must be stable or trends are meaningless |
| Owned and documented | Share of APIs with a named owner and current documentation | The owner must be a person or team that still exists |
| Deprecated-version share | Traffic still on deprecated versions, by consumer | An average can hide one critical consumer that cannot move |
| Change failure rate | Share of API releases causing incidents or rollbacks | Attribute failures to the change, not to the on-call team |
| Consumer satisfaction | Survey or interview score from integrating teams | Ask consumers, not owners; read small samples qualitatively |
Time to first successful call deserves special attention, because it measures the whole path from portal sign-up to a working request and is therefore the most honest test of documentation quality. Change failure rate is one of the four software delivery measures popularized by Accelerate, by Nicole Forsgren, Jez Humble and Gene Kim. The DevOps Research and Assessment (DORA) program that maintains these measures now calls it change fail rate: the share of deployments that need immediate intervention, such as a rollback or hotfix. Applied to API releases, it shows whether pipeline checks catch breaking changes before consumers do. Every metric is reported per domain, because enterprise averages hide where help is needed.
A five-stage maturity model
A maturity model gives domains a shared way to describe where they are and what comes next. It should be assessed per domain, not for the enterprise as a whole.
- Stage 1
Ad hoc
APIs appear as project byproducts; no catalog, owners or shared standards
- Stage 2
Documented
Inventory and named owners; a written style guide checked by people, late and unevenly
- Stage 3
Standardized
Standards linted and enforced at the gateway; complete catalog; portal onboarding
- Stage 4
Measured
Conformance, adoption, time to first call and deprecated traffic reported and acted on
- Stage 5
Product-led
Domains fund and manage APIs as products; the platform runs as a service
Many organizations stall at the documented stage, where a style guide exists but conformance still depends on people reading designs. Moving one stage typically takes quarters, and skipping the documented stage rarely works, because tooling cannot enforce standards nobody has agreed.
Pitfalls that erode governance
The pitfalls recur because each is the easy path at the moment it is taken.
Funding the model
Funding shapes all of this. The platform and the enablement team should be funded centrally, as a shared service with a roadmap and service levels, because a platform funded project by project fragments into incompatible tools. Each API product should be funded by the domain that owns it, so that decisions about scope, versions and retirement sit with the people who pay for them: a domain that funds an API has a reason to retire versions nobody uses, and a central budget that absorbs every version has none.
Where to start: the first 90 days
The first 90 days should be sized to produce evidence rather than a program plan. Each month ends with something that can be shown: an owned inventory, a live catalog, a retired version.
- Days 1 to 30: own the estate. Inventory the estate, name an owner for every API, and charter the guild with members from every domain.
- Days 1 to 30: lint from day one. Adopt a starter style guide and lint every new contract in the pipeline immediately, rather than waiting for a complete standard.
- Days 31 to 60: make the catalog real. Launch the catalog with completeness checks, and publish the versioning and deprecation policy, including the support window and the use of the Deprecation and Sunset headers.
- Days 31 to 60: set the floor at the gateway. Attach the security baseline at the gateway and open the exception register, so that existing deviations receive owners and end dates.
- Days 61 to 90: prove it. Baseline the metrics per domain, retire one unused version end to end to prove the playbook, and review the results and funding with domain leads.
None of these steps requires a finished operating model; together they establish ownership, an executable standard, a trustworthy catalog and a working retirement path. The principle that ties them together is simple: standards that ship as tooling get adopted; standards that arrive as a gate get bypassed.
Glossary
- API product
- An API managed for named consumers, with an accountable owner, a value proposition, a lifecycle and measures of success.
- Center of enablement
- A small central team that sets a few standards and provides the tooling that enforces them, instead of approving every design.
- Governance as code
- Enforcing standards through linting, contract tests, catalog checks and gateway policy rather than through manual review.
- Exposure type
- Who may call an API: private (internal only), partner (named external organizations) or public (any registered developer).
- API catalog
- The system of record for every API's owner, version, status, tier, classification, exposure, consumers, specification and changelog; the developer portal is its consumer view.
- Breaking change
- A change that can make an existing consumer fail, such as removing a field, changing its meaning or tightening validation.
- Tolerant reader
- A consumer that ignores fields it does not recognize, which allows producers to add fields without a new version.
- Deprecation header
- An HTTP response header field, defined in RFC 9745, that signals a resource is or will be deprecated.
- Sunset header
- An HTTP response header field, defined in RFC 8594, that states when a resource is expected to become unresponsive.
- Brownout
- A short, scheduled period in which a deprecated version returns errors, to surface consumers that have not migrated.
- Error budget
- The amount of unreliability an SLO allows over its window; when it is spent, the pace of change slows.
- Time to first successful call
- The elapsed time from a new consumer's portal sign-up to a working request, a measure of onboarding and documentation quality.
References and further reading
- Matthew Skelton and Manuel Pais, Team Topologies: Organizing Business and Technology Teams for Fast Flow.
- IETF, RFC 9745, The Deprecation HTTP Response Header Field.
- IETF, RFC 8594, The Sunset HTTP Header Field.
- IETF, RFC 9457, Problem Details for HTTP APIs.
- IETF, RFC 9110, HTTP Semantics.
- IETF, RFC 3339, Date and Time on the Internet: Timestamps.
- IETF HTTPAPI Working Group, The Idempotency-Key HTTP Header Field, Internet-Draft (work in progress).
- IETF, RFC 6749, The OAuth 2.0 Authorization Framework; OpenID Foundation, OpenID Connect Core.
- ISO 4217, Codes for the representation of currencies.
- W3C, Trace Context (W3C Recommendation).
- OpenAPI Initiative, OpenAPI Specification, version 3.x.
- OWASP, OWASP API Security Top 10.
- Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy (eds.), Site Reliability Engineering: How Google Runs Production Systems; Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara and Stephen Thorne (eds.), The Site Reliability Workbook.
- Nicole Forsgren, Jez Humble and Gene Kim, Accelerate: The Science of Lean Software and DevOps; DevOps Research and Assessment (DORA), guidance on software delivery performance metrics.
- General Data Protection Regulation (GDPR), in particular Article 25 on data protection by design and by default and Article 35 on data protection impact assessments.
This paper offers general guidance and is not legal, regulatory or professional advice. Summaries of laws, regulations and standards are for orientation only; confirm the obligations that apply to your organization with qualified advisors. Product and vendor names are used for illustration and imply no endorsement.
© ByteCI, LLC. All rights reserved.