CHAOSS · Authentication Profile

Chaoss Authentication

Authentication

CollectOSS implements OAuth 2.0 authorization code grant, and each CollectOSS deployment acts as its own authorization server. There is no CHAOSS-operated identity provider: credentials are issued by whichever instance you are calling. Authenticated requests carry BOTH the client secret and the user bearer token in a single Authorization header, which is a non-standard composition and is the single most important thing an integrator or agent has to get right.

CHAOSS declares 2 security scheme(s) across its OpenAPI definitions.

AnalyticsCommunity HealthDEILinux FoundationMetricsObservabilityOpen-SourceRiskSustainability
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

oauth2
· in: header ()
apiKey
· in: header ()

Source

Authentication Profile

Raw ↑
specification: API Commons Authentication
specificationVersion: '0.1'
provider: CHAOSS
providerId: chaoss
api: CollectOSS REST API
generated: '2026-09-05'
modified: '2026-09-05'
method: searched
source: >-
  https://docs.collectoss.org/en/latest/login.html ("CollectOSS OAuth Flow", HTTP 200, fetched
  2026-09-05) reconciled against the login operations in the published contract
  openapi/chaoss-collectoss-openapi.yml (POST /user/session/generate, POST /user/session/refresh).
docs: https://docs.collectoss.org/en/latest/login.html
description: >-
  CollectOSS implements OAuth 2.0 authorization code grant, and each CollectOSS deployment acts as
  its own authorization server. There is no CHAOSS-operated identity provider: credentials are issued
  by whichever instance you are calling. Authenticated requests carry BOTH the client secret and the
  user bearer token in a single Authorization header, which is a non-standard composition and is the
  single most important thing an integrator or agent has to get right.
spec_gap: >-
  The published OpenAPI declares NO components.securitySchemes and no top-level security block. The
  auth model below is read entirely from the prose documentation and from the header parameters on
  the four POST operations, each of which declares `Authorization: Client [API_Key]` as a required
  header. An agent consuming only the machine-readable contract would conclude the API is anonymous.
schemes:
  - id: oauth2_authorization_code
    type: oauth2
    flow: authorizationCode
    in: header
    header: Authorization
    description: >-
      Three-legged OAuth 2.0. The flow must be initiated by explicit user intent — the docs state the
      application "must not request initial authorization on the user's behalf, and must not
      automatically redirect the user to the authorization server."
    authorization_endpoint: /user/authorize
    authorization_params:
      - name: client_id
        required: true
        description: The Application ID issued when the Client Application was registered.
      - name: response_type
        required: true
        value: code
      - name: state
        required: false
        description: Optional caller-defined value echoed back on redirect.
    token_endpoint: /api/unstable/user/session/generate
    token_operation_id: Generate User Session Token
    token_params:
      - name: code
        in: query
        required: true
        description: The temporary authorization code, one-time use and valid for seconds only.
      - name: grant_type
        in: query
        required: true
        value: code
      - name: Authorization
        in: header
        required: true
        format: 'Client [client secret]'
    token_response_fields: [status, username, access_token, refresh_token, token_type, expires]
    refresh_endpoint: /api/unstable/user/session/refresh
    refresh_operation_id: Refresh User Session Token
    refresh_params:
      - name: refresh_token
        in: query
        required: true
      - name: grant_type
        in: query
        required: true
        value: refresh_token
      - name: Authorization
        in: header
        required: true
        format: 'Client [client secret]'
    refresh_rotation: >-
      Both the access token and the refresh token may be rotated. The docs state the returned bearer
      token may or may not equal the current one, and that when it differs, the previous bearer token
      AND the previous refresh token are invalidated. A refresh token may only be used by the
      application that issued it — reuse by another application returns status "Invalid application".
    token_lifetime: >-
      Variable. The token response carries an `expires` integer (seconds until the access_token
      expires); no fixed default is published.
    scopes: []
    scopes_note: >-
      No OAuth scopes are defined. The authorization page is documented as telling the user "what
      information will be shared", but neither the docs nor the contract enumerate a scope
      vocabulary, so authorization is all-or-nothing per application.
  - id: client_credential_header
    type: apiKey
    in: header
    header: Authorization
    format: 'Client [client secret]'
    description: >-
      The client secret alone authenticates the two DEI Badging write operations
      (POST /dei/repo/add, POST /dei/report) and the two token endpoints. Each declares the
      Authorization header as required with description "Client [API_Key]".
    applies_to_operations:
      - DEI Badging Tracking
      - DEI Badging Report
      - Generate User Session Token
      - Refresh User Session Token
authenticated_request_format:
  header: Authorization
  value: 'Client [Client Secret], Bearer [User Session Token]'
  note: >-
    Both credentials must be present in the SAME Authorization header, comma-separated. This is not
    RFC 7235 credential syntax and will break naive clients and most generated SDKs, which assume a
    single scheme token per header.
registration:
  self_service: true
  steps:
    - Register a user account on the target CollectOSS instance via Login -> Register.
    - Open your username -> Profile -> Applications.
    - Create an application with a name and a redirect URL reachable by the user's browser.
    - Record the Application ID and Client Secret shown after creation.
  local_testing_note: >-
    The docs explicitly allow http://127.0.0.1/ or http://localho.st as a redirect host for local
    testing, and warn that the authorization server does not verify the redirect URL is reachable.
deployment_prerequisite: >-
  Instances behind Nginx or Apache must set `proxy_set_header X-Forwarded-Proto $scheme;` (or the
  Apache equivalent) or the OAuth flow will not work.
unauthenticated_surface: >-
  The 133 GET metric operations declare no Authorization header in the contract. Whether they are
  in fact anonymous is an instance deployment decision and is not stated in the documentation;
  this artifact does not assert that they are.
maintainers:
  - FN: Kin Lane
    email: info@apievangelist.com

Work with this as data

Every security artifact 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 security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact 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.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/chaoss-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.