Skip to main content

Reporting APIs

How to connect data from the platform to another software tool

Written by Marie Xhauflair

The Reporting API supplies a number of HTTP endpoints that expose ways to export data from users, groups, activities, journeys, programmes, skills and training times.

This documentation is written for developers who will be implementing an API connection for extracting data from the TinQwise learning platform for reporting purposes.

For user provisioning instead of reporting, see Web API v3 for user management. For an overview of both, see APIs within the learning platform.


Interactive documentation

To explore the available endpoints, use the interactive documentation.

It can be accessed at https://<platform name>.platform.co.nl/api/v2/public/docs/, for example https://tinqwise.platform.co.nl/api/v2/public/docs/.


Authentication

To connect with the Reporting API in a secure way we support OAuth2 with the Client Credentials Grant flow.

A client_id, client_secret and scope are needed to request an access token that can be used for authentication.

To request a client_id and client_secret, contact Quinn or email service@tinqwise.com. Please specify which scopes you require.

Using your client_id and client_secret, request an authorization token using the Token URL. Click the Authorize button in your interactive documentation to see your token URL. This token is necessary when you send a request to our API.

🚧 Be careful

The scope for which the token is provided should match the scope for the API you are trying to use. Tokens are only active for a limited amount of time.

There is only one scope for each endpoint, the read scope required for GET requests.

The available scopes are:

  • read.user.reports

  • read.group.reports

  • read.modules.reports

  • read.journey.reports

  • read.programmes.reports

  • read.skills.reports

  • read.trainingtime.reports


Users

List users using the /api/v2/reports/users/ GET endpoint. You can filter on a specific user by id in /api/v2/reports/users/{id}.

You can use a number of filters to find users within a certain timeframe based on contract_start_date, contract_end_date, last_seen or registration_date, filter on a specific user by email, uuid or employee_id, or filter on certain groups by group_name.

Field

Description

id

Users are uniquely identified by their id. Other endpoints in API v2 refer to users through this identifier, where it is called user_id.

uuid

An automatically generated code, created with the user.

username

The username of a user.

email

The unique email address of a user.

first_name and last_name

Used to refer to a user on the platform.

registration_date

The date a user registered on the platform.

last_seen

The date of the last login of the user on the platform.

contract_start_date and contract_end_date

The dates of a user's start and end of their contract. Optional data.

flexible_field

Can be any user profile field that is custom made on your platform.

status

Whether a user is active, pending or suspended on the platform.

employee_id

A customer-specific (unique) identifier, which can be used to disambiguate users.

saml_username

The username used with a saml2 SSO.


Groups

Use the GET /api/v2/reports/groups/ endpoint to retrieve a list of groups. You can filter on a specific group by id in /api/v2/reports/groups/{id}.

In other endpoints you can use group_name to filter on specific groups.

Field

Description

name

The unique identifier for this group.

type

The group type of this group.

name_i18n

The internationalized (i18n) or translated name for this group.

parent_name

The name of the parent of this group. Matches the name field of the parent group.

external_name

The optional id or name which the group is known by at the customer.

created_by_user_importer

Optional, and set to true when created by a user provisioning integration for importing users and groups.

extra

A JSON dictionary containing the information within the custom group fields of the platform.


Activities

Use the GET /api/v2/reports/modules/ endpoint to retrieve data on the progress of activities in the platform. You can filter on a specific activity by id in /api/v2/reports/modules/{id}.

You can filter activities within a certain timeframe on completed_at, expires_at, failed_at, modified_at or started_at, or filter on certain groups by group_name.

Field

Description

id

The unique identifier of an activity invite in combination with a specific user.

user_id

Matches the user id field in the Users endpoint.

module_uuid

The unique identifier of an activity.

module_name

The name of the activity.

module_identifier

The internal label of an activity.

module_type

Type of activity, such as learning-bite, exam or session.

module_duration

Theoretical duration of the activity.

progress

Percentage between 0 and 100 indicating how far along the user is with the specific activity.

started_at

Datetime stamp from the moment the activity was started by the user.

completed_at

Datetime stamp from the moment the activity was completed by the user.

expires_at

Datetime stamp for the moment the activity will expire in the future.

expired_at

Datetime stamp for the moment the activity expired in the past.

graded_at

Datetime stamp for when the activity was graded by a manager or teacher.

failed_at

Datetime stamp for the moment the activity was failed.

modified_at

Datetime stamp for when this activity was last updated.

is_completed

Defaults to false, set to true if the activity is completed.

grade

The grade of an activity, such as good or excellent.

score

The score of an activity, such as 5 out of 6 questions right.

optional

Defaults to false, set to true if the activity is optional content.

attempt

Number of the current attempt of the activity.

accreditation_points

Number of the accredited points for the activity.


Journeys

Use the GET /api/v2/reports/journeys/ endpoint to retrieve data on the progress of journeys in the platform. You can filter on a specific journey by id in /api/v2/reports/journeys/{id}.

You can filter journeys within a certain timeframe on created_at, modified_at and completed_at, or filter on certain groups by group_name.

Field

Description

id

The unique identifier of the journey in combination with a specific user.

user_id

Matches the user id field in the Users endpoint.

journey_uuid

The unique identifier of the journey. When the result is a section, this field contains the uuid of the journey the section is part of.

journey_name

The name of the journey. When the result is a section, this field contains the name of the journey the section is part of.

section_uuid

The unique identifier of the section. Empty when the result is a journey.

section_name

The name of the section. Empty when the result is a journey.

progress

Percentage between 0 and 100 indicating how far along the user is with the specific journey or section.

created_at

Datetime stamp from the moment the journey was created.

modified_at

Datetime stamp for when this journey was last updated.

completed_at

Datetime stamp from the moment the journey was completed by the user.


Programmes

Use the GET /api/v2/reports/programmes/ endpoint to retrieve data on the progress of programmes in the platform. You can filter on a specific programme by id in /api/v2/reports/programmes/{id}.

You can filter programmes within a certain timeframe on completed_at, or on programme ids.

Field

Description

programme_uuid

The unique identifier of the programme.

programme_title

The name of the programme.

user_id

Matches the user id field in the Users endpoint.

progress

Percentage between 0 and 100 indicating how far along the user is with the specific programme.

completed_at

Datetime stamp from the moment the programme was completed by the user.


Skills

Use the GET /api/v2/reports/skills/ endpoint to retrieve data on the progress of skills and badges users are working on in the platform. You can filter on a specific skill by id in /api/v2/reports/skills/{id}.

You can filter skills within a certain timeframe on completed_at, expires_at, failed_at or modified_at, or filter on certain skill or user ids.

Field

Description

id

The unique identifier of the badge in combination with a specific user.

user_id

Matches the user id field in the Users endpoint.

skill_uuid

The unique identifier of the skill the badge represents.

skill_name

The name of the skill the badge represents.

progress

Percentage between 0 and 100 indicating how far along the user is with the specific skill.

seen_at

Datetime stamp from the moment the user saw the badge.

flagged

Defaults to false, set to true if the user flagged the skill because they no longer master it.

expires_at

Datetime stamp for the moment the badge will expire in the future.

completed_at

Datetime stamp from the moment the badge was completed by the user.

last_nudged_at

Datetime stamp from the moment a manager nudged the skill for a user to complete it.

modified_at

Datetime stamp for when this skill was last updated.


Training times

Use the GET /api/v2/reports/training_time/ endpoint to retrieve data on the time spent on completed activities in the platform. You can filter on a specific user_id in /api/v2/reports/training_time/{user_id}.

Activities counting towards the training time must have been completed within the timeframe you filter on, using reporting_period_start and reporting_period_end. You can also filter on certain users or groups by user_id or group_name.

Field

Description

user_id

Matches the user id field in the Users endpoint.

total_training_time

Number of minutes the user has spent on activities on the platform, based on the duration of completed activities.

When the Training Type feature is enabled on the platform, this endpoint also returns:

Field

Description

informal_training_time

Number of minutes the user has spent on informal activities.

formal_training_time

Number of minutes the user has spent on formal activities.

measured_informal_training_time

Measured time spent, in seconds, on the platform for completed informal activities.

measured_formal_training_time

Measured time spent, in seconds, on the platform for completed formal activities.


Good to know

Measured training time only reflects time spent since 13 February 2025.

The ids returned for an activity, journey or skill badge are unique for the attempt. For example, when the activity is reset, the endpoint will return a new id.

Did this answer your question?