Rockbot · Authentication Profile

Rockbot Authentication

Authentication

Rockbot secures its APIs with oauth2 and openIdConnect across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials, authorizationCode, and deviceCode flow(s).

CompanyConsumerMusicDigital SignageAudio MessagingRetail MediaIn-Location MediaMediaEntertainment
Methods: oauth2, openIdConnect Schemes: 2 OAuth flows: clientCredentials, authorizationCode, deviceCode API key in:

Security Schemes

oauth2 oauth2
· flows: clientCredentials
mcp-oauth openIdConnect

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://developer.rockbot.com/start.html +
  https://api.rockbot.com/.well-known/oauth-protected-resource +
  https://auth.rockbot.com/application/o/mcp-server/.well-known/openid-configuration
notes: >-
  UPGRADED from derived to searched. Rockbot runs TWO SEPARATE AUTHENTICATION
  SURFACES with different issuers, different grants, and different onboarding —
  a fact visible nowhere in the developer documentation, and the single most
  important thing an integrator needs to know here. Surface 1 is the documented
  v5 REST API (OAuth 2.0 client-credentials against api.rockbot.com, credentials
  issued by a human at Rockbot support). Surface 2 is the undocumented Rockbot
  MCP server (OAuth against a self-hosted authentik identity provider at
  auth.rockbot.com). A token minted for one will not authenticate the other.
summary:
  types:
    - oauth2
    - openIdConnect
  oauth2_flows:
    - clientCredentials
    - authorizationCode
    - deviceCode
  surfaces: 2
schemes:
  - name: oauth2
    type: oauth2
    surface: REST v5 API
    applies_to: https://api.rockbot.com/v5
    flows:
      - flow: clientCredentials
        tokenUrl: https://api.rockbot.com/v5/api-clients/token
        scopes: 0
    token_type: bearer
    header: 'Authorization: Bearer ACCESS_TOKEN'
    token_ttl_hours: 24
    request_format: >-
      POST application/json with {"client_id": "...", "client_secret": "..."} —
      NOT the RFC 6749 form-encoded grant_type=client_credentials body. A
      standards-compliant OAuth client library will not work unmodified.
    onboarding: >-
      Email support@rockbot.com with subject "Rockbot API Access Request", a link
      to your Dashboard, and the features you want. The email must come from the
      address tied to your Rockbot user. On approval you receive a CLIENT_ID and
      a ONE-TIME link to retrieve the CLIENT_SECRET at
      /v5/api-clients/CLIENT_ID/secret?one_time_code=... — the secret is shown
      once and never again.
    scope_model: >-
      "Your credentials only grant access to the scopes you requested." Scopes
      exist and are bound to the client at issuance, but Rockbot publishes no
      scope reference — see scopes/rockbot-scopes.yml.
    description: >-
      OAuth 2.0 Client Credentials grant. Exchange a CLIENT_ID/CLIENT_SECRET
      (issued by Rockbot support) at the token endpoint for a 24-hour bearer
      ACCESS_TOKEN, then send it as `Authorization: Bearer ACCESS_TOKEN`.
    sources:
      - https://developer.rockbot.com/start.html
      - openapi/rockbot-auth-api-openapi.yml
  - name: mcp-oauth
    type: openIdConnect
    surface: Rockbot MCP server
    applies_to: https://api.rockbot.com/v5/mcp
    discovery:
      protected_resource_metadata: https://api.rockbot.com/.well-known/oauth-protected-resource/v5/mcp
      protected_resource_metadata_spec: RFC 9728
      openid_configuration: https://auth.rockbot.com/application/o/mcp-server/.well-known/openid-configuration
      saved: well-known/rockbot-mcp-authorization-server.json
    issuer: https://auth.rockbot.com/application/o/mcp-server/
    software: authentik 2026.5.4
    authorization_endpoint: https://auth.rockbot.com/application/o/authorize/
    token_endpoint: https://auth.rockbot.com/application/o/token/
    userinfo_endpoint: https://auth.rockbot.com/application/o/userinfo/
    introspection_endpoint: https://auth.rockbot.com/application/o/introspect/
    revocation_endpoint: https://auth.rockbot.com/application/o/revoke/
    device_authorization_endpoint: https://auth.rockbot.com/application/o/device/
    jwks_uri: https://auth.rockbot.com/application/o/mcp-server/jwks/
    grant_types_supported:
      - authorization_code
      - refresh_token
      - implicit
      - client_credentials
      - password
      - urn:ietf:params:oauth:grant-type:device_code
    token_endpoint_auth_methods_supported:
      - client_secret_post
      - client_secret_basic
    code_challenge_methods_supported: [S256, plain]
    id_token_signing_alg_values_supported: [RS256]
    scopes_supported: [openid, email, profile]
    bearer_methods_supported: [header]
    challenge: >-
      An unauthenticated call returns HTTP 401 with body `no bearer token` and
      WWW-Authenticate: Bearer
      resource_metadata="https://api.rockbot.com/.well-known/oauth-protected-resource/v5/mcp"
    onboarding: >-
      Not documented. No public client registration endpoint is advertised
      (registration_endpoint is absent from the discovery document), and dynamic
      client registration was not offered, so obtaining MCP credentials appears
      to require Rockbot to provision them.
    description: >-
      OpenID Connect / OAuth 2.0 against Rockbot's self-hosted authentik. Used
      only by the MCP surface. Advertises standard OIDC scopes; no Rockbot
      resource scopes appear in discovery.
    sources:
      - https://api.rockbot.com/.well-known/oauth-protected-resource
      - https://auth.rockbot.com/application/o/mcp-server/.well-known/openid-configuration
      - mcp/rockbot-mcp.yml
observations:
  - >-
    PKCE is supported (S256), but `plain` is also advertised, and the implicit
    and password grants remain enabled on the authentik provider. Those are
    deprecated grants and are worth flagging to Rockbot.
  - >-
    Invalid client credentials at the REST token endpoint return HTTP 500, not
    401/400 — see errors/rockbot-problem-types.yml. Clients must not treat that
    500 as retryable.