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