Brightcove Client Credentials API

Create client credentials needed to get access tokens.

OpenAPI Specification

brightcove-client-credentials-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Brightcove Analytics API Reference Access Tokens Client Credentials API
  description: "Reference for the Brightcove Analytics API, used to retrieve analytics data for your accounts. To test API requests, you can use our <a href=\"/getting-started/concepts-testing-tools-brightcove-apis.html\" target=\"_blank\">API Testing Tools</a>.\n\nFor additional in-depth guides to features of the API, see the **[general documentation](/analytics/index.html)**.\n\n **Base URL**: https://analytics.api.brightcove.com"
  x-bc-access: public
  version: 1.0.0
servers:
- url: https://analytics.api.brightcove.com
  variables: {}
tags:
- name: Client Credentials
  description: Create client credentials needed to get access tokens.
paths:
  /client_credentials:
    get:
      tags:
      - Client Credentials
      summary: Get Client Credentials
      description: 'Get an array of client credentials for one or more accounts '
      operationId: GetClientCredentials
      parameters:
      - $ref: '#/components/parameters/Credentials_Content-Type'
      - $ref: '#/components/parameters/Credentials_Authorization'
      - $ref: '#/components/parameters/origin_account_ids'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetClientCredentialsResponse'
        '401':
          description: 'UNAUTHORIZED: Authentication failed; The request does not carry authentication credentials sufficient to authorize the requested access.'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    post:
      tags:
      - Client Credentials
      summary: Create Client Credentials
      description: 'Create client credential, consisting of a client-id and client_secret used in getting an access token for one or more APIs Note: client credentials are permanent unless revoked, but you must save the client secret when you create it - it can never be retrieved again.'
      operationId: CreateClientCredential
      parameters:
      - $ref: '#/components/parameters/Credentials_Content-Type'
      - $ref: '#/components/parameters/Credentials_Authorization'
      requestBody:
        description: 'Create client credential, consisting of a client-id and client_secret used in getting an access token for one or more APIs Note: client credentials are permanent unless revoked, but you must save the client secret when you create it - it can never be retrieved again.'
        content:
          application/json:
            schema:
              description: 'Create client credential, consisting of a client-id and client_secret used in getting an access token for one or more APIs Note: client credentials are permanent unless revoked, but you must save the client secret when you create it - it can never be retrieved again.'
              $ref: '#/components/schemas/ClientCredentialbody'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateClientCredentialResponse'
        '400':
          description: 'BAD_VALUE: The JSON could not be parsed '
        '401':
          description: 'UNAUTHORIZED: Authentication failed; The request does not carry authentication credentials sufficient to authorize the requested access.'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
        '409':
          description: 'REFERENCE_ID_IN_USE: The specified reference id is already in use

            ILLEGAL_FIELD: Spelling error or other use of non-existent field

            VALIDATION_ERROR: the JSON data was not valid; error messages vary depending on the problem'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /client_credentials/{client_id}:
    put:
      tags:
      - Client Credentials
      summary: Update Client Credentials
      description: 'Update a client credential '
      operationId: UpdateClientCredential
      parameters:
      - $ref: '#/components/parameters/client_id'
      - $ref: '#/components/parameters/Credentials_Content-Type'
      - $ref: '#/components/parameters/Credentials_Authorization'
      requestBody:
        description: 'Create client credential, consisting of a client-id and client_secret used in getting an access token for one or more APIs Note: client credentials are permanent unless revoked, but you must save the client secret when you create it - it can never be retrieved again.'
        content:
          application/json:
            schema:
              description: 'Create client credential, consisting of a client-id and client_secret used in getting an access token for one or more APIs Note: client credentials are permanent unless revoked, but you must save the client secret when you create it - it can never be retrieved again.'
              $ref: '#/components/schemas/ClientCredentialbody'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateClientCredentialResponse'
        '401':
          description: 'UNAUTHORIZED: Authentication failed; The request does not carry authentication credentials sufficient to authorize the requested access.'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    delete:
      tags:
      - Client Credentials
      summary: Delete Client Credentials
      description: Delete a client credential
      operationId: DeleteClientCredential
      parameters:
      - $ref: '#/components/parameters/client_id'
      - $ref: '#/components/parameters/Credentials_Content-Type'
      - $ref: '#/components/parameters/Credentials_Authorization'
      responses:
        '200':
          description: '200'
        '401':
          description: 'UNAUTHORIZED: Authentication failed; The request does not carry authentication credentials sufficient to authorize the requested access.'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
components:
  parameters:
    client_id:
      name: client_id
      in: path
      description: client id for the credential
      required: true
      style: simple
      explode: false
      schema:
        type: string
    origin_account_ids:
      name: origin_account_ids
      in: query
      description: account id(s) to fetch credentials for.
      required: true
      style: form
      explode: true
      schema:
        type: string
      example: 1752604059001,57838016001
    Credentials_Content-Type:
      name: Content-Type
      in: header
      description: 'Content-Type: application/json'
      required: true
      style: simple
      explode: false
      schema:
        type: string
    Credentials_Authorization:
      name: Authorization
      in: header
      description: 'Authorization: BC_TOKEN your_BC_TOKEN (see [Get BC_TOKEN](/oauth/code-samples/oauth-api-sample-create-client-credentials.html))'
      required: true
      style: simple
      explode: false
      schema:
        type: string
  schemas:
    CreateClientCredentialResponse:
      title: Create Client Credential Response
      required:
      - name
      - name_html
      - description
      - description_html
      - client_id
      - client_secret
      - type
      - issued_to
      - issued_user
      - redirect_url
      - trusted
      - revoked
      - expires_at
      - issued_at
      - maximum_scope
      type: object
      properties:
        name:
          type: string
          description: credential name
        name_html:
          type: string
          description: html version of credential name
        description:
          type: string
          description: credential description
        description_html:
          type: string
          description: html version of credential description
        client_id:
          type: string
          description: the client id
        client_secret:
          type: string
          description: client secret - note that this is the only request that will return the client secret; if you do not save it, there is no way to retrieve it again
        type:
          type: string
          description: the type - currently always equals credential
        issued_to:
          type: string
          description: the email address of the account user issued to
        issued_user:
          type: string
          description: system id for user issued to
        redirect_url:
          type: string
          description: currently not used
        trusted:
          type: boolean
          description: whether the client is trusted
        revoked:
          type: boolean
          description: whether the credential is revoked
        expires_at:
          type: string
          description: when the credential expires
        issued_at:
          type: string
          description: when the credential was issued
        maximum_scope:
          type: array
          items:
            $ref: '#/components/schemas/MaximumScope'
          description: array of maps specifying the accounts and API operations for the credentials
      example:
        redirect_url: null
        maximum_scope:
        - identity:
            type: video-cloud-account
            account-id: 57838016001
          operations:
          - video-cloud/video/all
        name_html: Test credentials
        issued_to: rcrooks@brightcove.com
        trusted: null
        expires_at: null
        issued_at: '2018-09-03T19:28:09Z'
        name: Test credentials
        description_html: null
        revoked: null
        type: credential
        client_secret: OCGy1nKvsnPX09Yt6Djmu8hpecepIRWWmKnMccjDwygaR4Nc9R5ZspXc_oXYuVZqLLA
        description: null
        client_id: dc2e1dcc-006c-43fc-b57a-1868a8eec359
        issued_user: 53255203001
    MaximumScope:
      title: maximum_scope
      required:
      - identity
      type: object
      properties:
        identity:
          description: map defining the account and operations
          $ref: '#/components/schemas/MaximumScope.identity'
    GetClientCredentialsResponse:
      title: Get Client Credentials Resposne
      required:
      - name
      - name_html
      - description
      - description_html
      - client_id
      - client_secret
      - type
      - issued_to
      - issued_user
      - redirect_url
      - trusted
      - revoked
      - expires_at
      - issued_at
      - maximum_scope
      type: object
      properties:
        name:
          type: string
          description: credential name
        name_html:
          type: string
          description: html version of credential name
        description:
          type: string
          description: credential description
        description_html:
          type: string
          description: html version of credential description
        client_id:
          type: string
          description: the client id
        client_secret:
          type: string
          description: client secret &mdash; note that it will always be null; it is returned only for the POST request that creates the credential
        type:
          type: string
          description: the type - currently always equals credential
        issued_to:
          type: string
          description: the email address of the account user issued to
        issued_user:
          type: string
          description: system id for user issued to
        redirect_url:
          type: string
          description: currently not used
        trusted:
          type: boolean
          description: whether the client is trusted
        revoked:
          type: boolean
          description: whether the credential is revoked
        expires_at:
          type: string
          description: when the credential expires
        issued_at:
          type: string
          description: when the credential was issued
        maximum_scope:
          type: array
          items:
            $ref: '#/components/schemas/MaximumScope'
          description: array of maps specifying the accounts and API operations for the credentials
      example:
      - redirect_url: null
        maximum_scope:
        - identity:
            type: video-cloud-account
            account-id: 1485884786001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 1486906377
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 1752604059001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 20318290001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 3742124955001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 3921507403001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        - identity:
            type: video-cloud-account
            account-id: 57838016001
          operations:
          - video-cloud/asset/read
          - video-cloud/ingest-profiles/profile/write
          - video-cloud/playlist/all
          - video-cloud/asset/delete
          - video-cloud/audience/write
          - video-cloud/video/all
          - video-cloud/asset/create
          - video-cloud/player/all
          - video-cloud/ingest-profiles/account/write
          - video-cloud/ingest-profiles/profile/read
          - video-cloud/ingest-profiles/account/read
          - video-cloud/notifications/all
          - video-cloud/analytics/read
          - video-cloud/asset/update
          - video-cloud/audience/read
          - video-cloud/upload-urls/read
        name_html: U-BCL-SAMP-TV-BCT-BEML-ASDRM
        issued_to: rcrooks@brightcove.com
        trusted: null
        expires_at: null
        issued_at: '2016-10-04T12:19:32Z'
        name: U-BCL-SAMP-TV-BCT-BEML-ASDRM
        description_html: null
        revoked: null
        type: credential
        client_secret: null
        description: null
        client_id: b10631d3-7597-4be8-b8b5-dce142f81006
        issued_user: 53255203001
    MaximumScope.identity:
      title: maximum_scope.identity
      required:
      - type
      - account-id
      - operations
      type: object
      properties:
        type:
          type: string
          description: the type of account
        account-id:
          type: integer
          description: the account ID
        operations:
          type: array
          items:
            type: string
          description: array of operations the credentials grant access to (see Operations)
    ClientCredentialbody:
      title: Create_Client_CredentialBody
      required:
      - type
      - maximum_scope
      - name
      type: object
      properties:
        type:
          type: string
          description: always equal to credential
        maximum_scope:
          type: array
          items:
            $ref: '#/components/schemas/ClientCredentialbody.maximumScope'
          description: array of maps specifying the accounts and API operations for the credentials
        name:
          type: string
          description: name for the credentials
        description:
          type: string
          description: description for the credentials
      example:
        type: credential
        maximum_scope:
        - identity:
            type: video-cloud-account
            account-id: 57838016001
          operations:
          - video-cloud/video/all
          - video-cloud/asset/all
          - video-cloud/notifications/all
        name: update-test
    UpdateClientCredentialResponse:
      title: Update_Client Credential Response
      required:
      - name
      - name_html
      - description
      - description_html
      - client_id
      - client_secret
      - type
      - issued_to
      - issued_user
      - redirect_url
      - trusted
      - revoked
      - expires_at
      - issued_at
      - maximum_scope
      type: object
      properties:
        name:
          type: string
          description: credential name
        name_html:
          type: string
          description: html version of credential name
        description:
          type: string
          description: credential description
        description_html:
          type: string
          description: html version of credential description
        client_id:
          type: string
          description: the client id
        client_secret:
          type: string
          description: client secret &mdash; note that it will always be null; it is returned only for the POST request that creates the credential
        type:
          type: string
          description: the type - currently always equals credential
        issued_to:
          type: string
          description: the email address of the account user issued to
        issued_user:
          type: string
          description: system id for user issued to
        redirect_url:
          type: string
          description: currently not used
        trusted:
          type: boolean
          description: whether the client is trusted
        revoked:
          type: boolean
          description: whether the credential is revoked
        expires_at:
          type: string
          description: when the credential expires
        issued_at:
          type: string
          description: when the credential was issued
        maximum_scope:
          type: array
          items:
            $ref: '#/components/schemas/MaximumScope'
          description: array of maps specifying the accounts and API operations for the credentials
    ClientCredentialbody.maximumScope:
      title: Create_Client_CredentialBody.maximum_scope
      required:
      - identity
      type: object
      properties:
        identity:
          $ref: '#/components/schemas/ClientCredentialbody.maximumScope.identity'
        operations:
          type: array
          items:
            type: string
          description: array of operations the credentials grant access to (see [Operations](/oauth/guides/api-operations-client-credentials-requests.html))
    ClientCredentialbody.maximumScope.identity:
      title: Create_Client_CredentialBody.maximum_scope.identity
      required:
      - type
      - account-id
      - operations
      type: object
      properties:
        type:
          type: string
          description: the type of account
          enum:
          - video-cloud-account
        account-id:
          type: integer
          description: the account ID
  securitySchemes:
    BC_OAuth2:
      type: oauth2
      description: Brightcove OAuth API. See the [support documentation](/oauth/index.html) or [Getting Access Tokens](/oauth/code-samples/oauth-api-sample-get-access-token.html) to learn more
      flows:
        clientCredentials:
          tokenUrl: https://oauth.brightcove.com/v4/access_token
          scopes:
            video-cloud/analytics/read: Read analytics data
            video-cloud/video/read: Read video data
x-bc-implicit-head: true
x-bc-implicit-options: true
x-bc-upstream: https://backend_server