Go1

Go1 Webhooks API

The Webhooks API from Go1 — 2 operation(s) for webhooks.

OpenAPI Specification

go1-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Go1 Enrollments Webhooks 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
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
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0. Server-to-server integrations use the client_credentials flow; user-context integrations use the authorization_code flow. Access tokens are valid for 12 hours.
      flows:
        clientCredentials:
          tokenUrl: https://auth.go1.com/oauth/token
          scopes: &id001
            lo.read: Read learning objects (content catalog).
            lo.write: Create, update and delete learning objects.
            enrollment.read: Read enrollments and completion records.
            enrollment.write: Create, update and delete enrollments.
            webhook.read: Read webhook configurations.
            webhook.write: Create, update and delete webhook configurations.
            portal.read: Read customer portals.
            portal.write: Create and update customer portals.
        authorizationCode:
          authorizationUrl: https://auth.go1.com/oauth/authorize
          tokenUrl: https://auth.go1.com/oauth/token
          scopes: *id001