Go1

Go1 API

Go1's date-versioned REST API for discovering learning content (learning objects), managing learner enrollments, provisioning and managing customer portals, and subscribing to events via webhooks. Requests are made to the gateway.go1.com host with an `Api-Version` header and an OAuth 2.0 bearer token issued by auth.go1.com.

OpenAPI Specification

go1-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Go1 API
  version: '2025-01-01'
  description: 'The Go1 API lets partners and platforms discover Go1''s learning content library, manage
    learner enrollments, provision and manage customer portals, and subscribe to Go1 events via webhooks.
    Versioning is date-based and selected per request with the `Api-Version` header (current: 2025-01-01).
    All requests are authenticated with OAuth 2.0 bearer tokens issued by https://auth.go1.com/oauth/token.
    Reconstructed by the API Evangelist enrichment pipeline from Go1''s published REST reference (developers.go1.com)
    — operations, parameters, responses and scopes are Go1''s verbatim reference data.'
  contact:
    name: Go1 Developer Support
    url: https://developers.go1.com/
  termsOfService: https://www.go1.com/terms/customer-terms
servers:
- url: https://gateway.go1.com
  description: Go1 API gateway (production)
security:
- OAuth2: []
tags:
- name: Webhooks
- name: Learning Objects
- name: Enrollments
- name: Portals
paths:
  /webhooks:
    get:
      security:
      - OAuth2:
        - webhook.read
      operationId: WebhookController_getPortalWebhookConfiguration
      summary: List all webhooks
      description: Returns a list of your webhooks.
      responses:
        '200':
          description: Returns a list of webhooks
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: number
                    example: '1'
                    description: The number of webhooks contained in the response.
                  hits:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: xUjKifleke4u
                          description: The ID of the webhook configuration.
                        portal_id:
                          type: string
                          example: '11905591'
                          description: The Go1 portal against which the webhook is configured.
                        name:
                          type: string
                          example: My webhook description
                          description: A name or description of what the webhook is used for.
                        url:
                          type: string
                          example: https://webhook-consumer.com
                          description: The URL of the webhook endpoint.
                        secret_key:
                          type: string
                          example: MyS3cretK#y
                          description: An optional shared secret to identify each webhook as a trusted
                            Go1 event.
                        event_types:
                          type: array
                          example:
                          - enrollment.complete
                          - enrollment.create
                          - content.decommission
                          - content.decommission.pending
                          - content.add
                          - content.remove
                          - content.library.sync.request
                          description: The list of events that are enabled for this endpoint.
                          items:
                            type: string
                            enum:
                            - enrollment.complete
                            - enrollment.create
                            - content.decommission
                            - content.decommission.pending
                            - content.add
                            - content.remove
                            - content.library.sync.request
                        status:
                          type: string
                          example: active
                          description: The status of the webhook. It can be active or inactive.
                        created_by:
                          type: string
                          example: '19491473'
                          description: The user ID of the user who created the webhook.
                        created_time:
                          type: string
                          format: date-time
                          example: '2022-03-29T01:29:36.000Z'
                          description: Time at which the webhook was created (ISO 8601 in UTC).
                        updated_by:
                          type: string
                          example: '19491473'
                          description: The user ID of the user who last updated the webhook.
                        updated_time:
                          type: string
                          format: date-time
                          example: '2022-03-29T01:29:36.000Z'
                          description: Time at which the webhook was last updated (ISO 8601 in UTC).
                        auth_type:
                          type: string
                          example: oauth2
                          description: The type of authentication used when setting up webhook authentication
                            with an external auth system.
                        oauth2:
                          type: object
                          example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                          description: The oauth2 parameters required to authenticate a webhook with an
                            external system. This parameter should be supplied along with the auth_type
                            field, where it contains a value of oauth2.
                        integration_system_id:
                          type: string
                          example: int_AzuTsRz
                          description: A unique ID assigned to an external system that integrates with
                            Go1. When using the `content.library.sync.request` webhook event, the `integration_system_id`
                            is required to identify which system the event should apply to.
                      required:
                      - id
                      - url
                      - event_types
                      - status
                      - created_by
                      - created_time
                      - updated_by
                      - updated_time
                    description: The list of webhooks.
                required:
                - total
                - hits
        '401':
          description: User is unauthenticated.
        '403':
          description: User is not authorized.
        '500':
          description: Server error.
      tags:
      - Webhooks
    post:
      security:
      - OAuth2:
        - webhook.write
      operationId: WebhookController_createPortalWebhookConfiguration
      summary: Create a webhook
      description: Creates a new webhook that will fire events to the given url.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: My webhook description
                  description: A name or description of what the webhook is used for.
                url:
                  type: string
                  example: https://webhook-consumer.com
                  description: The URL of the webhook endpoint.
                secret_key:
                  type: string
                  example: MyS3cretK#y
                  description: An optional secret key, identifying each event as coming from a trusted
                    Go1 source.
                event_types:
                  type: array
                  example:
                  - enrollment.complete
                  - enrollment.create
                  - enrollment.delete
                  - content.decommission
                  - content.decommission.pending
                  - content.add
                  - content.remove
                  - content.library.sync.request
                  - content.library.add
                  - content.library.remove
                  - content.library.update
                  - content.library.decommission
                  description: The list of events to enable for this webhook.
                  items:
                    type: string
                    enum:
                    - enrollment.complete
                    - enrollment.create
                    - enrollment.delete
                    - content.decommission
                    - content.decommission.pending
                    - content.add
                    - content.remove
                    - content.library.sync.request
                    - content.library.add
                    - content.library.remove
                    - content.library.update
                    - content.library.decommission
                auth_type:
                  type: string
                  example: oauth2
                  description: The type of authentication used when setting up webhook authentication
                    with an external auth system.
                oauth2:
                  type: object
                  example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                  description: The oauth2 parameters required to authenticate a webhook with an external
                    system. This parameter should be supplied along with the auth_type field, where it
                    contains a value of oauth2.
                integration_system_id:
                  type: string
                  example: int_AzuTsaz
                  description: A unique ID assigned to an external system that integrates with Go1. When
                    using the `content.library.sync.request` webhook event, the `integration_system_id`
                    is required to identify which system the event should apply to.
              required:
              - url
              - event_types
      responses:
        '201':
          description: Webhook created successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: xUjKifleke4u
                    description: The ID of the webhook configuration.
                  portal_id:
                    type: string
                    example: '11905591'
                    description: The Go1 portal against which the webhook is configured.
                  name:
                    type: string
                    example: My webhook description
                    description: A name or description of what the webhook is used for.
                  url:
                    type: string
                    example: https://webhook-consumer.com
                    description: The URL of the webhook endpoint.
                  secret_key:
                    type: string
                    example: MyS3cretK#y
                    description: An optional shared secret to identify each webhook as a trusted Go1 event.
                  event_types:
                    type: array
                    example:
                    - enrollment.complete
                    - enrollment.create
                    - content.decommission
                    - content.decommission.pending
                    - content.add
                    - content.remove
                    - content.library.sync.request
                    description: The list of events that are enabled for this endpoint.
                    items:
                      type: string
                      enum:
                      - enrollment.complete
                      - enrollment.create
                      - content.decommission
                      - content.decommission.pending
                      - content.add
                      - content.remove
                      - content.library.sync.request
                  status:
                    type: string
                    example: active
                    description: The status of the webhook. It can be active or inactive.
                  created_by:
                    type: string
                    example: '19491473'
                    description: The user ID of the user who created the webhook.
                  created_time:
                    type: string
                    format: date-time
                    example: '2022-03-29T01:29:36.000Z'
                    description: Time at which the webhook was created (ISO 8601 in UTC).
                  updated_by:
                    type: string
                    example: '19491473'
                    description: The user ID of the user who last updated the webhook.
                  updated_time:
                    type: string
                    format: date-time
                    example: '2022-03-29T01:29:36.000Z'
                    description: Time at which the webhook was last updated (ISO 8601 in UTC).
                  auth_type:
                    type: string
                    example: oauth2
                    description: The type of authentication used when setting up webhook authentication
                      with an external auth system.
                  oauth2:
                    type: object
                    example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                    description: The oauth2 parameters required to authenticate a webhook with an external
                      system. This parameter should be supplied along with the auth_type field, where
                      it contains a value of oauth2.
                  integration_system_id:
                    type: string
                    example: int_AzuTsRz
                    description: A unique ID assigned to an external system that integrates with Go1.
                      When using the `content.library.sync.request` webhook event, the `integration_system_id`
                      is required to identify which system the event should apply to.
                required:
                - id
                - url
                - event_types
                - status
                - created_by
                - created_time
                - updated_by
                - updated_time
        '400':
          description: Invalid POST parameters provided.
        '403':
          description: Invalid permission to create the webhook.
      tags:
      - Webhooks
  /webhooks/{id}:
    patch:
      security:
      - OAuth2:
        - webhook.write
      operationId: WebhookController_updatePortalWebhookConfiguration
      summary: Update a webhook
      description: 'Updates any of the following fields on an existing webhook: name, url, secret_key,
        event_types and status.'
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: My webhook description
                  description: A name or description of what the webhook is used for.
                url:
                  type: string
                  example: https://webhook-consumer.com
                  description: The URL of the webhook endpoint.
                secret_key:
                  type: string
                  example: MyS3cretK#y
                  description: An optional secret key, identifying each event as coming from a trusted
                    Go1 source.
                event_types:
                  type: array
                  example:
                  - enrollment.complete
                  - enrollment.create
                  - enrollment.delete
                  - content.decommission
                  - content.decommission.pending
                  - content.add
                  - content.remove
                  - content.library.sync.request
                  - content.library.add
                  - content.library.remove
                  - content.library.update
                  - content.library.decommission
                  description: The list of events to enable for this webhook.
                  items:
                    type: string
                    enum:
                    - enrollment.complete
                    - enrollment.create
                    - enrollment.delete
                    - content.decommission
                    - content.decommission.pending
                    - content.add
                    - content.remove
                    - content.library.sync.request
                    - content.library.add
                    - content.library.remove
                    - content.library.update
                    - content.library.decommission
                status:
                  type: string
                  example: active
                  description: The status of the webhook. It can be active or inactive.
                auth_type:
                  type: string
                  example: oauth2
                  description: The type of authentication used when setting up webhook authentication
                    with an external auth system.
                oauth2:
                  type: object
                  example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                  description: The oauth2 parameters required to authenticate a webhook with an external
                    system. This parameter should be supplied along with the auth_type field, where it
                    contains a value of oauth2.
                integration_system_id:
                  type: string
                  example: int_AzuTsaz
                  description: A unique ID assigned to an external system that integrates with Go1. When
                    using the `content.library.sync.request` webhook event, the `integration_system_id`
                    is required to identify which system the event should apply to.
          application/merge-patch+json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: My webhook description
                  description: A name or description of what the webhook is used for.
                url:
                  type: string
                  example: https://webhook-consumer.com
                  description: The URL of the webhook endpoint.
                secret_key:
                  type: string
                  example: MyS3cretK#y
                  description: An optional secret key, identifying each event as coming from a trusted
                    Go1 source.
                event_types:
                  type: array
                  example:
                  - enrollment.complete
                  - enrollment.create
                  - enrollment.delete
                  - content.decommission
                  - content.decommission.pending
                  - content.add
                  - content.remove
                  - content.library.sync.request
                  - content.library.add
                  - content.library.remove
                  - content.library.update
                  - content.library.decommission
                  description: The list of events to enable for this webhook.
                  items:
                    type: string
                    enum:
                    - enrollment.complete
                    - enrollment.create
                    - enrollment.delete
                    - content.decommission
                    - content.decommission.pending
                    - content.add
                    - content.remove
                    - content.library.sync.request
                    - content.library.add
                    - content.library.remove
                    - content.library.update
                    - content.library.decommission
                status:
                  type: string
                  example: active
                  description: The status of the webhook. It can be active or inactive.
                auth_type:
                  type: string
                  example: oauth2
                  description: The type of authentication used when setting up webhook authentication
                    with an external auth system.
                oauth2:
                  type: object
                  example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                  description: The oauth2 parameters required to authenticate a webhook with an external
                    system. This parameter should be supplied along with the auth_type field, where it
                    contains a value of oauth2.
                integration_system_id:
                  type: string
                  example: int_AzuTsaz
                  description: A unique ID assigned to an external system that integrates with Go1. When
                    using the `content.library.sync.request` webhook event, the `integration_system_id`
                    is required to identify which system the event should apply to.
      responses:
        '200':
          description: Webhook updated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: xUjKifleke4u
                    description: The ID of the webhook configuration.
                  portal_id:
                    type: string
                    example: '11905591'
                    description: The Go1 portal against which the webhook is configured.
                  name:
                    type: string
                    example: My webhook description
                    description: A name or description of what the webhook is used for.
                  url:
                    type: string
                    example: https://webhook-consumer.com
                    description: The URL of the webhook endpoint.
                  secret_key:
                    type: string
                    example: MyS3cretK#y
                    description: An optional shared secret to identify each webhook as a trusted Go1 event.
                  event_types:
                    type: array
                    example:
                    - enrollment.complete
                    - enrollment.create
                    - content.decommission
                    - content.decommission.pending
                    - content.add
                    - content.remove
                    - content.library.sync.request
                    description: The list of events that are enabled for this endpoint.
                    items:
                      type: string
                      enum:
                      - enrollment.complete
                      - enrollment.create
                      - content.decommission
                      - content.decommission.pending
                      - content.add
                      - content.remove
                      - content.library.sync.request
                  status:
                    type: string
                    example: active
                    description: The status of the webhook. It can be active or inactive.
                  created_by:
                    type: string
                    example: '19491473'
                    description: The user ID of the user who created the webhook.
                  created_time:
                    type: string
                    format: date-time
                    example: '2022-03-29T01:29:36.000Z'
                    description: Time at which the webhook was created (ISO 8601 in UTC).
                  updated_by:
                    type: string
                    example: '19491473'
                    description: The user ID of the user who last updated the webhook.
                  updated_time:
                    type: string
                    format: date-time
                    example: '2022-03-29T01:29:36.000Z'
                    description: Time at which the webhook was last updated (ISO 8601 in UTC).
                  auth_type:
                    type: string
                    example: oauth2
                    description: The type of authentication used when setting up webhook authentication
                      with an external auth system.
                  oauth2:
                    type: object
                    example: '{"grant_type":"client_credentials","client_id":"123456789123456789","client_secret":"ThisIsMySecret","authentication_server_url":"https://authentication-service.com/oauth/token","scope":"create+delete"}'
                    description: The oauth2 parameters required to authenticate a webhook with an external
                      system. This parameter should be supplied along with the auth_type field, where
                      it contains a value of oauth2.
                  integration_system_id:
                    type: string
                    example: int_AzuTsRz
                    description: A unique ID assigned to an external system that integrates with Go1.
                      When using the `content.library.sync.request` webhook event, the `integration_system_id`
                      is required to identify which system the event should apply to.
                required:
                - id
                - url
                - event_types
                - status
                - created_by
                - created_time
                - updated_by
                - updated_time
        '400':
          description: Bad request.
        '401':
          description: User is unauthenticated.
        '403':
          description: User is not authorized.
        '404':
          description: Webhook not found.
        '500':
          description: Server error.
      tags:
      - Webhooks
  /learning-objects/{id}/alternatives:
    get:
      security:
      - OAuth2:
        - portal.read
        - lo.read
      operationId: getRetiringContentAlternatives
      summary: List alternative learning objects
      description: Returns a list of alternative learning objects for a specified learning object. You
        can refine the list by specifying a `type` parameter. For example, setting `type=retirement` will
        return alternative learning objects recommended as replacements for the specified learning object
        that is retiring from the library.
      parameters:
      - name: authorization
        required: true
        in: header
        schema:
          type: string
      - name: id
        required: true
        in: path
        description: The id of the learning object
        example: 1234
        schema:
          type: string
      - name: type
        required: false
        in: query
        description: "Specifies the type of alternative learning objects to retrieve. \n\n The available\
          \ values are: \n- `retirement`: for alternatives recommended as replacements for retiring content\
          \ from the Go1 content library. \n\n Default value is `retirement`."
        schema:
          default: retirement
          enum:
          - retirement
      - name: limit
        required: false
        in: query
        description: A limit on the number of objects to be returned, between 1 and 100. The default is
          10.
        example: 10
        schema:
          type: number
          format: int64
          default: 10
      - name: offset
        required: false
        in: query
        description: For use in pagination. The item number within a list request to start displaying
          results after. For example, a request with `limit=20` and `offset=20`, returns items 21 - 40.
        example: 20
        schema:
          format: int64
          default: 0
          type: number
      responses:
        '200':
          description: Returns the list of alternatives
          content:
            application/json:
              schema:
                required:
                - total
                - hits
                type: object
                properties:
                  total:
                    type: number
                    description: Total number of alternative learning objects matching the specified criteria.
                    example: 50
                  hits:
                    type: array
                    items:
                      type: integer
                    description: An array of IDs representing the alternative learning objects recommended
                      as replacements for the specified learning object. The array is sorted by relevance,
                      with the most relevant items appearing first.
                    example:
                    - 123
                    - 456
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
      tags:
      - Learning objects
  /learning-objects/{id}:
    get:
      description: Retrieves the details of a Learning Object by either id (uuid) or our legacy lo_id
        (integer). By default, only the `core` set of fields is returned. Use the `include[]` query parameter
        to retrieve additional information about the Learning Object, such as `pricing`, `lifecycle` or
        `relevance`.
      operationId: learning-objects-v3-get
      parameters:
      - name: id
        required: true
        in: path
        description: Unique identifier of the Learning Object
        schema:
          type: string
      - name: identifier
        required: false
        in: query
        description: 'The `identifier` query parameter allows you to specify the identifier you would
          like to use when looking up a Learning Object. The available values are:- `external_id`: The
          API will consider the supplied {id} as the external_id, and will look up the Learning Object
          that corresponds to the provided external_id.'
        schema:
          example: external_id
          type: string
          enum:
          - external_id
      - name: include[]
        required: false
        in: query
        description: 'Returns extended information related to the Learning Object. Enum:

          - `core`, returns the `core` object.

          - `pricing`, returns the `pricing` object.

          - `lifecycle`, returns the `lifecycle` object.

          - `relevance`, returns the `relevance` object.

          - `skills`, returns the `skills` object.

          - `quality`, returns the `quality` object.

          - `provider`, returns the `provider` object.

          - `protected`, returns the `protected` object.

          - `playback_behavior`, returns the `playback_behavior` object.

          - `images`, returns the `images` object.

          - `preview`, returns the `preview` object.

          - `tags`, returns the `tags` object.

          - `topics`, returns the `topics` object.

          - `offerings`, returns the `offerings` object.

          - `revisions`, returns the `revisions` object.


# --- truncated at 32 KB (356 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/go1/refs/heads/main/openapi/go1-openapi.yml