Creates a completion record

Prev Next
Post
/learning/completions

An endpoint to create a content completion record.

The request is idempotent on the combination of userId, contentId and completedAt. Sending the same three values again returns 200 with the statement ID of the existing record rather than creating a second one; a new record returns 201. Retries are therefore safe.

The response contains a statement ID, which is not a completion ID. See CompletionStub for how to retrieve the completion itself.

Security
HTTP
Type basic

HTTP Basic authentication using your Tenant ID and API secret.

  • Username is the Tenant ID (i.e. eu-west-2_AbcdEfghI)
  • Password is the API secret you would have received.

You can also authenticate using OAuth 2.0 client credentials (oauth2 security scheme) instead of Basic auth.

OAuth

OAuth 2.0 client credentials authentication.

Use the following token endpoints (replace :tenantId with your Tenant ID):

  • Public API access tokens

    • Staging: https://public.api.learnstaging.link/oauth2/token/:tenantId
    • Production: https://public.api.learn.link/oauth2/token/:tenantId
    • Staging MEA: https://public.api.meastaging.learn.tech/oauth2/token/:tenantId
    • Production MEA: https://public.api.mea.learn.tech/oauth2/token/:tenantId
  • Webhooks access tokens

    • Staging: https://user.api.learnstaging.link/oauth2/token/:tenantId
    • Production: https://user.api.learn.link/oauth2/token/:tenantId
    • Staging MEA: https://user.api.meastaging.learn.tech/oauth2/token/:tenantId
    • Production MEA: https://user.api.mea.learn.tech/oauth2/token/:tenantId

All access tokens must be sent using the Authorization: Bearer <access_token> header.

Scopes

For API access (non-webhooks), the following scopes are available:

  • api/all – Full read and write access to the API.
  • api/read – Read-only access to the API.
  • api/write – Write access to the API.

For webhooks, the following scopes are available:

  • api/webhooks – Access to webhook functionality.
  • api/all – Full read and write access to the API, including webhooks.

Tokens must include appropriate scopes for the endpoints you wish to call.

FlowClient Credentials
Token URLhttps://public.api.learn.link/oauth2/token/:tenantId
Body parameters

Request body for creating a completion record

userId
string Required

The user ID

Example646767d82535201223349e09
contentId
string Required

The content ID for the content completed

Example646767ee9b667f9b87db851a
completedAt
string (date-time) Required

An ISO8601 for the timestamp when the completion occurred

Example2021-01-01T09:00:00+00:00
currentCompletion
boolean

Whether this is a live, on-system completion. Defaults to false, which treats the record as a historic completion (imported Recognition of Prior Learning) so it does not reset assignment due dates. Set to true to record a live completion that updates due dates as the most recent completion.

Defaultfalse
Examplefalse
Responses
200

The completion record already exists

The identifier of the completion statement that was recorded.

This is not a completion ID. Statement IDs and completion IDs are separate identifier spaces, so a statement ID cannot be passed to GET /learning/completions/{id}, which expects a completion ID and will return 422 for a statement ID. To retrieve the completion itself, query GET /learning/completions filtered by userId and contentId.

statementId
string (uuid)

The completion statement ID

Example7e34859f-6364-5315-82d9-1b16dfadee01
201

The completion record created

The identifier of the completion statement that was recorded.

This is not a completion ID. Statement IDs and completion IDs are separate identifier spaces, so a statement ID cannot be passed to GET /learning/completions/{id}, which expects a completion ID and will return 422 for a statement ID. To retrieve the completion itself, query GET /learning/completions filtered by userId and contentId.

statementId
string (uuid)

The completion statement ID

Example7e34859f-6364-5315-82d9-1b16dfadee01
401

Unauthorized

object

Unauthorized

status
number
Example401
error
string
ExampleUnauthorized
message
string
403

Forbidden

object

Forbidden

status
number
Example403
error
string
ExampleForbidden
message
string #deprecatedtemplate# #additional-property-template#
OneOf
string
string
object
object
422

Unprocessable Content

object

Unprocessable Content

status
number
Example422
error
string
ExampleUnprocessable Content
message
string #deprecatedtemplate# #additional-property-template#
OneOf
string
string
object
object
default

Internal Server Error

object

Internal Server Error

status
number
Example500
error
string
ExampleInternal Server Error
message
string