Beacon OAuth Rest Service

Beacon's OAuth 2.0 token service, implementing the refresh_token grant and linking to https://oauth.net/2/grant-types/refresh-token/ in its own description. Returns access_token, token_type, expires_in, refresh_expires_in, refresh_token and scope. The scopes request field is a refresh-behaviour selector (empty, "all" or "refresh_token"), not a permission scope. No initial grant is published — the first refresh_token is issued during partner onboarding. This is the only Beacon document that declares a servers[] block, and its default is the UAT host.

Operations 1

POST /token Refresh access/refresh token

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/beacon-oauth"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

beacon-roofing-supply-oauth2-openapi.yml Raw ↑

openapi: 3.0.0
info:
  title: Beacon OAuth Rest Service Ver 1.0
  version: release/7.1
  description: >
    The Beacon implementation of [OAuth 2.0 Refresh Token](https://oauth.net/2/grant-types/refresh-token/)


    [ PROD BASE URL: *https://beaconproplus.com/rest/model/REST/oauth* ]
    
    
    [ UAT  BASE URL: *https://beacon-uat.becn.com/rest/model/REST/oauth* ]
    
    
    [ DEV  BASE URL: *https://beacon-dev.becn.com/rest/model/REST/oauth* ]

    ### API Response messages doc
      <details>
          <summary>Show...</summary>
          <table id="API_Response_Message_Code" border="1">
           <tbody>
              <tr>
                  <th colspan="1" align="center" width="20%"><p><span>API</span></p></th>
                  <th align="center" width="10%"><p><span>messages.key</span></p></th>
                  <th align="left" width="40%"><p><span>messages.value</span></p></th>
              </tr>
              <tr>
                  <td rowspan="10" align="left" width="20%"><a href="/swagger/oauth2/#/OAuth%20Service/post_token"><strong>/token</strong></a></td>
                  <td align="center" width="10%">grant_type</td>
                  <td align="left" width="40%">Bad Grant Type</td>
              </tr>
              <tr>
                  <td rowspan="5" align="center" width="10%">refresh_token</td>
                  <td align="left" width="40%">Empty Refresh Token</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Empty Request</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Empty Refresh Token or Client ID</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Invalid Token</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Expired Token</td>
              </tr>
              <tr>
                  <td align="center" width="10%">client_id</td>
                  <td align="left" width="40%">Empty Client ID</td>
              </tr>
              <tr>
                  <td rowspan="3" align="center" width="10%">token_validation</td>
                  <td align="left" width="40%">Get token failed</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Get token failed</td>
              </tr>
              <tr>
                  <td align="left" width="40%">Validate token failed</td>
              </tr>
            </tbody>
          </table>
      </details>
servers:
  - url: 'https://{server}/rest/model/REST/oauth/'
    variables:
      server:
        enum:
          - beacon-uat.becn.com
          - beaconproplus.com
        default: beacon-uat.becn.com
        description: Server
components:
  schemas:
    tokenReqObj:
      type: object
      properties:
        grant_type:
          type: string
        refresh_token:
          type: string
        client_id:
          type: string
        scopes:
          type: string
          description: |
            Indicate if refresh_token need generate new value, if multiple values, need separated by white space.
            * If value is empty, only refresh access_token.
            * If value is "all", refresh access_token and refresh_token.
            * If value contain "refresh_token", also refresh access_token and refresh_token.
    tokenResp:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
        expires_in:
          type: number
          format: long
        refresh_expires_in:
          type: number
          format: long
        refresh_token:
          type: string
        scope:
          type: string
        success:
          type: boolean
        messages:
          type: array
          items:
            type: object
            properties: 
              key:
                type: string
              value:
                type: string

paths:
  /token:
    post:
      security: []
      tags:
        - OAuth Service
      summary: Refresh access/refresh token
      description: |
        The grant_type must be refresh_token

        Request sample:

        {
          "grant_type": "refresh_token",
          "refresh_token": "xxxxxxx",
          "client_id": "yyyyyyy"
        }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/tokenReqObj'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tokenResp'
        '401':
          description: 'Unauthorized, request is invalid'
        '500':
          description: Internal exception