Catalog API
Version 1.0 OpenAPI 3.1.0
Read and describe EvoHub Catalog from scripts and CI: declare services with their owner, tier and links, read what agents and cloud accounts found running, decide the match queue, read drift, the service map and each service's SLA report, manage tiers, environments and cloud accounts, and export the inventory for an audit.
Authentication. Every endpoint takes an EvoHub API key, sent as
Authorization: Bearer evohub_… or as X-API-Key: evohub_…. Each
operation names the scopes the key needs in its description and in
x-evohub-permission; where two are listed, the key needs both. A
missing or invalid key gets 401; a valid key without the scope gets
403, never 401. A key is held to its scopes even when it was created
by an administrator. See the API overview,
API keys and scopes and Errors.
Responses. A successful answer carries its result in data. A list
that pages also carries pagination: next_cursor (null on the last
page), has_more and, on some lists' first page, total. Pass
next_cursor back as cursor for the next page; limit is 20 by
default and at most 100. Errors carry an error object with a
machine-readable code. Timestamps are RFC 3339 in UTC. Request bodies
are strict: a field the endpoint does not know is refused with
INVALID_BODY rather than ignored.
Declared and observed. Services, tiers, responsibilities and environments are what people declare. Resources, applications, images, changes and the map are what agents and cloud accounts observed; they are read-only here, except deciding which service a resource or application belongs to.
Agents. The routes under /api/v1/catalog/ingest/ are called by the
EvoHub agent only, signed with the agent's own key. API keys cannot call
them, and they are not part of this reference.
Servers
https://evohub.io
Authentication
bearerKeyHTTP BearerAn EvoHub API key (evohub_…) as a bearer token.headerKeyAPI key in the headerX-API-KeyAn EvoHub API key (evohub_…).
Services
What your teams declared, its responsibilities and its SLA report.
| GET | /api/v1/catalog/components | List services |
| POST | /api/v1/catalog/components | Declare a service |
| GET | /api/v1/catalog/components/{ref} | Get a service |
| DELETE | /api/v1/catalog/components/{ref} | Delete a service |
| PATCH | /api/v1/catalog/components/{ref} | Change a service |
| GET | /api/v1/catalog/components/{ref}/resources | List a service's resources |
| PUT | /api/v1/catalog/components/{ref}/responsibilities | Set a service's RACI |
| GET | /api/v1/catalog/components/{ref}/sla-report | Get a service's SLA report |
Matches
Which service a resource or an application belongs to.
| GET | /api/v1/catalog/matches | List match proposals |
| POST | /api/v1/catalog/matches/{id}/accept | Accept a proposal |
| POST | /api/v1/catalog/matches/{id}/reject | Reject a proposal |
| POST | /api/v1/catalog/resources/{id}/component | Put a resource in a service |
| POST | /api/v1/catalog/applications/{id}/component | Put an application in a service |
Resources
What agents and cloud accounts observed, its history and its changes.
| GET | /api/v1/catalog/resources | List resources |
| GET | /api/v1/catalog/resources/{id} | Get a resource |
| GET | /api/v1/catalog/resources/{id}/changes | List a resource's changes |
| GET | /api/v1/catalog/resources/{id}/changes/{change}/diff | Get what a change changed |
| GET | /api/v1/catalog/changes | List recent changes |
| GET | /api/v1/catalog/images | List container images |
Applications
Resources grouped the way they run together, the namespaces and the service map.
| GET | /api/v1/catalog/applications | List applications |
| GET | /api/v1/catalog/applications/{id} | Get an application |
| GET | /api/v1/catalog/applications/{id}/graph | Get an application's graph |
| GET | /api/v1/catalog/namespaces | List namespaces |
| GET | /api/v1/catalog/map | Get the service map |
Drift
Where what was declared and what runs disagree.
| GET | /api/v1/catalog/drift | Get drift |
Tiers
The organization's tiers and the SLA targets they promise.
| GET | /api/v1/catalog/tiers | List tiers |
| POST | /api/v1/catalog/tiers | Create a tier |
| PUT | /api/v1/catalog/tiers/order | Reorder tiers |
| PATCH | /api/v1/catalog/tiers/{id} | Change a tier |
| POST | /api/v1/catalog/tiers/{id}/archive | Archive a tier |
| GET | /api/v1/catalog/tiers/{id}/versions | List a tier's versions |
Environments
The places things run, declared by people.
| GET | /api/v1/catalog/environments | List environments |
| POST | /api/v1/catalog/environments | Create an environment |
| GET | /api/v1/catalog/environments/{id} | Get an environment |
| DELETE | /api/v1/catalog/environments/{id} | Delete an environment |
| PATCH | /api/v1/catalog/environments/{id} | Change an environment |
Sources
Where observations come from — agents and cloud accounts.
| GET | /api/v1/catalog/sources | List sources |
| GET | /api/v1/catalog/sources/{id} | Get a source |
| PATCH | /api/v1/catalog/sources/{id} | Rename, pause or resume a source |
Cloud accounts
AWS, Azure, GCP and portvMind accounts the catalog reads itself.
| GET | /api/v1/catalog/connections/setup | Get what a connection needs |
| GET | /api/v1/catalog/connections | List cloud accounts |
| POST | /api/v1/catalog/connections | Connect a cloud account |
| GET | /api/v1/catalog/connections/{id} | Get a cloud account |
| DELETE | /api/v1/catalog/connections/{id} | Disconnect a cloud account |
| PATCH | /api/v1/catalog/connections/{id} | Change a cloud account |
| POST | /api/v1/catalog/connections/{id}/pause | Pause a cloud account |
| POST | /api/v1/catalog/connections/{id}/resume | Resume a cloud account |
| POST | /api/v1/catalog/connections/{id}/check | Check a cloud account |
| GET | /api/v1/catalog/connections/{id}/template | Download the AWS role template |
| GET | /api/v1/catalog/connections/{id}/architecture | Get an account's architecture |
Export
The inventory, for an audit.
| GET | /api/v1/catalog/exports/inventory | Export the inventory |

