Radio Browser · API Governance Rules

Radio Browser API Rules

Spectral linting rules defining API design standards and conventions for Radio Browser.

7 Rules error 2 warn 4 info 1
View Rules File View on GitHub

Rule Categories

rb

Rules

error
rb-operation-id-camel-case
All operationIds must be camelCase to match Radio Browser conventions.
$.paths[*][get,post,put,delete,patch].operationId
warn
rb-summary-title-case
Operation summaries must use Title Case.
$.paths[*][get,post,put,delete,patch].summary
warn
rb-stations-tag-required
Operations under /json/stations must be tagged Stations.
$.paths[?(@property =~ /^\/json\/stations/)][get,post].tags
error
rb-uuid-path-format
Station path parameters named stationuuid must declare format uuid.
$.paths[*][get,post,put,delete,patch].parameters[?(@.name=='stationuuid')].schema
warn
rb-user-agent-doc
The API description must remind callers that a User-Agent header is mandatory.
$.info.description
warn
rb-license-agpl
License must be AGPL-3.0 for the canonical server.
$.info.license.name
info
rb-server-pool
At least one server entry must reference the round-robin pool host.
$.servers[*].url

Spectral Ruleset

Raw ↑
extends:
  - spectral:oas
documentationUrl: https://docs.radio-browser.info/
functions: []
rules:
  rb-operation-id-camel-case:
    description: All operationIds must be camelCase to match Radio Browser conventions.
    given: $.paths[*][get,post,put,delete,patch].operationId
    severity: error
    then:
      function: pattern
      functionOptions:
        match: '^[a-z][a-zA-Z0-9]+$'
  rb-summary-title-case:
    description: Operation summaries must use Title Case.
    given: $.paths[*][get,post,put,delete,patch].summary
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: '^([A-Z][a-zA-Z0-9]*)( [A-Z][a-zA-Z0-9]*)*$'
  rb-stations-tag-required:
    description: Operations under /json/stations must be tagged Stations.
    given: $.paths[?(@property =~ /^\/json\/stations/)][get,post].tags
    severity: warn
    then:
      function: schema
      functionOptions:
        schema:
          type: array
          contains:
            const: Stations
  rb-uuid-path-format:
    description: Station path parameters named stationuuid must declare format uuid.
    given: $.paths[*][get,post,put,delete,patch].parameters[?(@.name=='stationuuid')].schema
    severity: error
    then:
      field: format
      function: truthy
  rb-user-agent-doc:
    description: The API description must remind callers that a User-Agent header is mandatory.
    given: $.info.description
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: 'User-Agent'
  rb-license-agpl:
    description: License must be AGPL-3.0 for the canonical server.
    given: $.info.license.name
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: '^AGPL-3\.0$'
  rb-server-pool:
    description: At least one server entry must reference the round-robin pool host.
    given: $.servers[*].url
    severity: info
    then:
      function: truthy

Work with this as data

Every ruleset 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 spectral rules

4 MCP tools reach this
  • find_rulesBrowse and filter every ruleset 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 ruleset
curl "https://apis.io/api/v1/rules/radio-browser-rules"
All spectral rules
curl "https://apis.io/api/v1/rules?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.