Convert OAuth Authorization API

Delegated authorization endpoints for third-party OAuth clients. Typical flow: * OAuth client initiates GET request in browser (`/oauth/authorize`) with `client_id` + `response_type=code` + `scope` + `state` + `code_challenge` (PKCE) * While generating `code_challenge` — don't forget to store the `code_verifier` which will be used to obtain the access token * User authenticates in Convert and approves scope in consent UI * OAuth client exchanges one-time code (`/auth/oauth/token`) for a scoped bearer session token * User can list/revoke authorized OAuth sessions (`/auth/oauth/sessions*`) Scopes: `selected_accounts_projects` Example: ``` https://app.convert.com/auth/oauth/authorize?client_id=1111111&state=randomstring&scope=selected_accounts_projects&response_type=code&code_challenge=generatedCodeChallenge ```

OpenAPI Specification

convert-oauth-authorization-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Convert Accounts OAuth Authorization API
  description: 'Move your app forward with the Convert API. The Convert API allows

    you to manage your Convert Experiences projects using code. The REST API is

    an interface for managing and extending functionality of Convert. For

    example, instead of creating and maintaining projects using the Convert

    Experiences web dashboard you can create an experiment programmatically.

    Additionally, if you prefer to run custom analysis on experiment results you

    can leverage the API to pull data from Convert Experiences into your own

    workflow. If you do not have a Convert account already, sign up for a free

    developer account at https://www.convert.com/api/.


    *[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged

    as it will be phased out in the future*

    '
  version: 2.0.0
servers:
- url: https://api.convert.com/api/v2
  description: Live API server
- url: https://apidev.convert.com/api/v2
  description: DEV API server
- url: http://apidev.convert.com:5000/api/v2
  description: DEV mocked API server
tags:
- name: OAuth Authorization
  description: 'Delegated authorization endpoints for third-party OAuth clients.


    Typical flow:

    * OAuth client initiates GET request in browser (`/oauth/authorize`) with `client_id` + `response_type=code` + `scope` + `state` + `code_challenge` (PKCE)

    * While generating `code_challenge` — don''t forget to store the `code_verifier` which will be used to obtain the access token

    * User authenticates in Convert and approves scope in consent UI

    * OAuth client exchanges one-time code (`/auth/oauth/token`) for a scoped bearer session token

    * User can list/revoke authorized OAuth sessions (`/auth/oauth/sessions*`)


    Scopes: `selected_accounts_projects`


    Example:

    ```

    https://app.convert.com/auth/oauth/authorize?client_id=1111111&state=randomstring&scope=selected_accounts_projects&response_type=code&code_challenge=generatedCodeChallenge

    ```

    '
paths:
  /auth/oauth/token:
    post:
      operationId: requestOauthToken
      summary: Exchange OAuth code for session token
      description: 'Public endpoint used by OAuth clients to exchange a one-time authorization code for a scoped bearer session token.

        Enforces PKCE binding.

        '
      tags:
      - OAuth Authorization
      requestBody:
        $ref: '#/components/requestBodies/OAuthTokenRequest'
      responses:
        '200':
          $ref: '#/components/responses/OAuthTokenResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    OAuthTokenResponseData:
      type: object
      required:
      - access_token
      - token_type
      - expires_at
      - scope
      properties:
        access_token:
          description: Opaque OAuth session bearer token.
          type: string
        token_type:
          type: string
          enum:
          - Bearer
        expires_at:
          type: integer
          description: Absolute expiration timestamp (unix seconds).
        scope:
          $ref: '#/components/schemas/OAuthScopeResponse'
    OAuthTokenRequestData:
      type: object
      required:
      - grant_type
      - code
      - client_id
      - code_verifier
      properties:
        grant_type:
          description: Authorization grant type.
          type: string
          enum:
          - authorization_code
          default: authorization_code
        code:
          description: One-time authorization code from consent redirect.
          type: string
          minLength: 1
        client_id:
          description: Identifier of the OAuth client application that initiated the authorization request.
          type: string
        code_verifier:
          description: PKCE verifier for code challenge validation.
          type: string
          minLength: 43
          maxLength: 128
          pattern: ^[A-Za-z0-9\-._~]+$
    OAuthScopeMode:
      type: string
      enum:
      - selected_accounts_projects
    OAuthScopeProject:
      type: object
      required:
      - project_id
      - role
      properties:
        project_id:
          type: integer
          minimum: 1
        role:
          description: User's role for this project.
          type: string
        name:
          description: Display name of the project.
          type: string
    ErrorData:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        fields:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    OAuthScopeAccountResponse:
      type: object
      required:
      - account_id
      properties:
        account_id:
          type: integer
          minimum: 1
        name:
          description: Display name of the account.
          type: string
        projects:
          type: array
          items:
            $ref: '#/components/schemas/OAuthScopeProject'
    OAuthScopeResponse:
      type: object
      required:
      - mode
      properties:
        mode:
          $ref: '#/components/schemas/OAuthScopeMode'
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/OAuthScopeAccountResponse'
  responses:
    ErrorResponse:
      description: 'Indicates an error occurred while processing the request. The `code` provides an HTTP status code, `message` offers a human-readable explanation or an array of validation errors, and `fields` (if present) specifies which input fields were problematic.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorData'
    OAuthTokenResponse:
      description: One-time code exchanged for a scoped OAuth bearer session token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OAuthTokenResponseData'
  requestBodies:
    OAuthTokenRequest:
      required: true
      description: Exchanges a one-time authorization code for an OAuth bearer session token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OAuthTokenRequestData'
  securitySchemes:
    requestSigning:
      type: apiKey
      x-name-applicationId: Convert-Application-ID
      x-name-expire: Expire
      name: Authorization
      in: header
      description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information.

        '
    secretKey:
      type: http
      scheme: bearer
      description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information.

        '
    cookieAuthentication:
      type: apiKey
      in: cookie
      name: sid
      description: Cookie authentication is used against Convert's own IdentityProvider  or third party identity providers and is described more in the "[Cookie Authentication](#tag/Cookie-Authentication)" section
x-tagGroups:
- name: Client Authentication
  tags:
  - API KEY Authentication
  - Cookie Authentication
  - OAuth Authorization
- name: Common Parameters
  tags:
  - Optional Fields
  - Expandable Fields
- name: Requests
  tags:
  - User
  - Accounts
  - AI content
  - Collaborators
  - API Keys
  - Projects
  - SDK Keys
  - Experiences
  - Experience Variations
  - Experience Sections
  - Section Versions
  - Version Changes
  - Experiences Reports
  - Experiences Heatmaps
  - Goals
  - Hypotheses
  - Knowledge Bases
  - Observations
  - Locations
  - Audiences
  - Domains
  - Cdn Images
  - Files
  - Tags
  - Features
  - Visitor Insights
  - Visitors Data
  - Visitor Data Placeholders
  - OAuth