CHAOSS · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the CollectOSS REST API
8 actions
8 updates
update
extends
../openapi/chaoss-collectoss-openapi.yml
Derived by API Evangelist
Built from the contracts CHAOSS publishes. CHAOSS did not publish this file.
What the actions change
x-oauth-rolex-grant-typex-not-replay-safex-notecontactlicensex-providerx-provider-id
Targets 5
$.info
$
$.paths['/user/session/generate'].post
$.paths['/user/session/refresh'].post
$.paths['/dei/repo/add'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the CollectOSS REST API
version: 1.0.0
extends: ../openapi/chaoss-collectoss-openapi.yml
x-provenance:
generated: '2026-09-05'
method: generated
provider: CHAOSS
providerId: chaoss
source: >-
Authored by API Evangelist against the verbatim provider contract harvested from
https://github.com/chaoss/CollectOSS/blob/main/docs/source/rest-api/spec.yml on 2026-09-05.
note: >-
This overlay records OUR annotations. It does not repair the contract and it must never be
merged back as if CHAOSS published it. In particular it deliberately does NOT invent a
servers[] host: CollectOSS is self-hosted and the provider's own documentation uses the
placeholder https://collectoss.example.com/api/unstable/. Supplying a concrete host here would
manufacture a callable endpoint that does not exist.
actions:
- target: $.info
description: Record who publishes this contract, where it lives, and its licence.
update:
contact:
name: CHAOSS CollectOSS maintainers
url: https://github.com/chaoss/CollectOSS/issues
license:
name: MIT
identifier: MIT
x-provider: CHAOSS
x-provider-id: chaoss
x-source-repository: https://github.com/chaoss/CollectOSS
x-source-spec: https://github.com/chaoss/CollectOSS/blob/main/docs/source/rest-api/spec.yml
x-rendered-reference: https://docs.collectoss.org/en/latest/rest-api/api.html
x-parent-organization: Linux Foundation
x-successor-to: >-
Augur. github.com/chaoss/augur was archived 2026-07-23 with the notice "The Augur project is
no longer part of CHAOSS. Use CollectOSS instead!"
- target: $
description: >-
Flag the deployment model at document level. The document declares openapi 3.1.0 but carries
the Swagger 2.0 host/basePath keys and no servers[] block, so it names no callable host.
update:
x-deployment-model: self-hosted
x-base-path: /api/unstable/
x-documented-base-url-template: https://collectoss.example.com/api/unstable/
x-servers-absent: true
x-servers-absent-note: >-
No servers[] block exists. host: example.com and basePath: /api/unstable/ are Swagger 2.0
keys and are ignored by OpenAPI 3 tooling.
- target: $
description: Record the contract-quality defects an integrator hits before their first call.
update:
x-contract-defects:
- id: flask-path-templating
detail: >-
249 path parameters are written Flask-style (/repos/:repo_id) instead of OpenAPI-style
(/repos/{repo_id}). No OpenAPI tool will bind them; generators emit a literal ":repo_id"
segment.
- id: swagger2-response-schema
detail: >-
Responses use responses.<code>.schema rather than responses.<code>.content.<media>.schema.
Strict OpenAPI 3 tooling reads all 137 operations as returning no body.
- id: duplicate-operation-ids
detail: >-
134 unique operationIds across 137 operations. "Number of Releases (Repo)", "Open Issues
Count (Repo Group)" and "New Contributor Counts Stacked Bar Chart (shows actions)" each
appear twice.
- id: operation-ids-are-sentences
detail: >-
operationIds contain spaces and parentheses ("Average Issue Resolution Time (Repo Group)").
Most generators will mangle them into method names.
- id: prefix-parameter-mismatch
detail: >-
Twelve operations sit under a prefix that contradicts their path parameter — eleven
repo-scoped metrics under /repo-groups/:repo_id/ plus /repos/:repo_group_id/releases.
- id: query-params-typed-as-path
detail: >-
Date and period parameters are declared in: path when they are query parameters. On
GET /repos/:repo_id/code-changes all four of repo_id, period, begin_date and end_date are
typed as path parameters while only repo_id appears in the path template.
- id: no-security-schemes
detail: >-
components.securitySchemes is absent although the API implements OAuth 2.0 and four
operations require an Authorization header. An agent reading only the contract concludes
the API is anonymous.
- id: no-reusable-schemas
detail: >-
No components/schemas and no $ref anywhere. Every response shape is inlined per
operation, so there is no authoritative definition of a repository or a contributor.
- target: $
description: >-
Bind the contract to the CHAOSS metric vocabulary it implements. The tag names ARE the CHAOSS
focus areas, and CHAOSS is the body that defines them.
update:
x-domain-standard:
id: chaoss-metrics
name: CHAOSS Metrics and Metrics Models
url: https://www.chaoss.community/kb-metrics-and-metrics-models/
role: publisher-and-implementer
x-focus-area-operation-counts:
evolution: 52
experimental: 26
risk: 21
visualizations: 12
utility: 8
value: 8
complexity: 6
login: 2
DEI Badging: 2
- target: $
description: Record the runtime semantics an agent needs and the contract does not carry.
update:
x-runtime-semantics:
pagination: none
idempotency: none
reversibility: none
dry_run: false
rate_limit_headers: none
request_id_header: none
error_format: 'bespoke {"status": string}'
error_warning: >-
Seven of the nine catalogued failure modes are returned as HTTP 200 with a status string in
the body. Branching on the status code alone reads authentication failure as success.
identifier_portability: >-
repo_id and repo_group_id are assigned by the local instance and are not stable across
deployments. Resolve via GET /owner/:owner/repo/:repo first.
- target: $.paths['/user/session/generate'].post
description: Mark the token endpoint so tooling does not treat it as an ordinary business operation.
update:
x-oauth-role: token-endpoint
x-grant-type: authorization_code
x-not-replay-safe: true
x-note: >-
The temporary authorization code is one-time use and valid for seconds. Never retry this
call with the same code.
- target: $.paths['/user/session/refresh'].post
description: Mark the refresh endpoint as destructive.
update:
x-oauth-role: refresh-endpoint
x-grant-type: refresh_token
x-not-replay-safe: true
x-destructive: true
x-note: >-
On rotation the previous bearer token AND the previous refresh token are invalidated. A
client that loses this response has lost the session; there is no revoke or recovery endpoint.
- target: $.paths['/dei/repo/add'].post
description: Mark the only state-changing business write and its missing undo.
update:
x-write: true
x-reversal-operation: null
x-reversal-note: >-
No remove, untrack, cancel or delete operation exists in the contract or the documentation.
An agent that registers the wrong repository cannot undo it through the API.
x-quasi-idempotent: >-
A repeat call returns the body value "Repo already exists" rather than duplicating the row.
This is an observed response enum, not a documented idempotency guarantee, and it arrives
inside an HTTP 200.
Work with this as data
Every overlay 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 openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.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.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/chaoss-collectoss-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.