Data as a Service
Data as a Service (DaaS) gives your organization its own copy of your learning data, delivered as files that you load into your data lake, warehouse, or business intelligence (BI) tool. You can use the data to build the tables and dashboards you need, without waiting on a custom report from Skillsoft.
Your contract with Skillsoft determines if you have access to this feature. Reach out to your Skillsoft account team for more information. If you do have access to DaaS, it is not enabled by default. To use it, contact your Skillsoft Account Team. They will arrange for it to be enabled for your site. Until then, the APIs on this page are not available to your organization.
Insights
Getting your data through DaaS helps you answer questions such as:
- How many learners were active this month, and how does it vary by department, location or management level (or some other user attribute)?
- Are we on track to meet compliance training deadlines? Who is overdue, and under which manager?
- Which content drives engagement and learning hours? Which content is under-used?
- How are certification and skill programs progressing?
- Are learners moving through structured learning journeys as designed?
- How do we compare with anonymized industry peers?
Get Started using DaaS
The following is the flow on how to get started using DaaS:
- Get it enabled. DaaS is not on by default. Ask your Skillsoft Account Team to enable it for your site, and to create a service account and bearer token for your organization.
- Discover your data. Call the Data Dictionary to list categories and tables, their grain and columns.
List the categories available to your organization:
curl -sS -H "Authorization: Bearer $TOKEN" \
"$BASE/v1/organizations/$ORG/categories"
List the tables in a category (each includes name, description, grain and columnCount):
curl -sS -H "Authorization: Bearer $TOKEN" \
"$BASE/v1/organizations/$ORG/categories/learning/tables"
- Request an export. Choose all tables, specific tables, or whole categories, and a file format using the commands below. You then get a 202 Accepted response which returns a jobId. Save it.
curl -sS -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
-d '{"scope":"tables","tableNames":["assignment_status"],"format":"csv"}' \
"$BASE/v1/organizations/$ORG/exports"
- Check the job. When it is complete, the response lists a download URL per file.
curl -sS -H "Authorization: Bearer $TOKEN" \
"$BASE/v1/organizations/$ORG/exports/$JOB"
- Download and load. Download the files within the hour and load them into your data lake, warehouse, or BI tool. Download URLs expire 1 hour after the response that returned them. Call this endpoint again to get new URLs. The URL is a normal HTTPS GET and does not need the bearer token. Download before expiresAt and do not store the URL for later. The files themselves expire 7 days after the job was created. After that, request the export again.
curl -sS -o assignment_status.csv "$FILE_URL"
- Repeat. Later exports return only changed rows for tables that support incremental extracts. Apply them after the first full load.
Working with Data
Common Join Keys
| Join | Keys |
|---|---|
|
User and activity |
users.user_uuid = daily_activity.user_uuid |
|
User and HR data |
users.user_id = hris_data.external_user_id |
|
User and custom attributes |
users.user_uuid = user_attributes.user_uuid |
|
User and audiences |
users.user_uuid = audience_users.user_uuid |
|
Activity and content |
daily_activity.asset_uuid = content_listing.asset_uuid |
|
Assignment and user |
assignment_detail_by_user.user_uuid = users.user_uuid |
Data types and conventions
- Dates are YYYY-MM-DD.
- Timestamps are ISO 8601.
- Percentages and scores are stored 0-100, not 0-1.
- Durations are typically in seconds: divide by 3600 for hours, 60 for minutes.
- Nulls mean not applicable (for example, a score on a video), not zero.
- Formats: Parquet suits large datasets best. CSV suits Excel. JSON files are gzip-compressed.
- Recurrence: recurrence_number in learner_activity counts engagements with the same content (1 = first time, 2 = second).
Personal data (PII) and your responsibilities
- Some fields contain personally identifiable information, including names, email and login names, user_id, job title and role, manager, custom attributes, and free-text comments and waiver reasons. The data is yours, so you are responsible for how it is handled once downloaded:
- Handle it in line with your data governance and privacy policies (for example GDPR and CCPA).
- Restrict access to downloaded files and apply row-level security or masking when sharing dashboards.
- Store the service account token securely. Do not embed it in shared scripts or dashboards.
Frequently Asked Questions
No. DaaS is part of the platform offering, but it is not enabled by default. Contact your Skillsoft Account Team and they will arrange for it to be enabled for your site. Until then, calls return 404.
Ask your Skillsoft Account Team to enable Data as a Service for your site and to set up a service account and bearer token for your organization.
No. The API returns the data dictionary and export files. You query the data in your own warehouse or BI tool after loading it.
No. A token only works for its own organization. A different {orgId} returns 403.
Download URLs last 1 hour; call the job endpoint again for new ones. The files and the job are kept for 7 days from createdAt, then you must request the export again.
The first export of a table is full. Later exports of tables with an updated-date column contain only rows changed since the previous successful extract. Apply the full extract first, then each incremental in order. Tables without an updated-date column are always exported in full.
Set since to an earlier ISO-8601 timestamp, no more than 7 days back and not in the future. If the gap is longer, request a new full extract through your Account Team.
complete_with_errors: download the files that are present and check tableResults for the failed table. failed: no files were produced, so submit a new export. A 500 on request means the job could not be queued, so retry the same request.
401: token missing or invalid. 403: the orgId in the path is not your service account's organization. 404: DaaS has not been enabled for your organization yet (contact your Account Team), or the category, table or job name is not in your dictionary or does not belong to you.
The request body is invalid. Read resource and additionalInfo in the error to see which field to fix (for example an unknown table name, or a since older than 7 days).
The limit is 25 requests per 15 seconds per service account. Slow polling and spread calls out.
Not yet. Both are underway. For now, schedule the API calls from your own tooling.
In user_attributes (up to 40) and user_listing (up to 30). Check the table's columns in the Data Dictionary.
Any tool that reads CSV, Parquet or JSON: Power BI, Tableau, Looker (after loading into a warehouse), Qlik, Excel, and warehouses such as Snowflake, Redshift, BigQuery and Databricks.
Support and resources
The following is available to help you take advantage of DaaS:
- For enablement, access, full re-extracts, and data questions, contact your Skillsoft Account Team or Skillsoft Support. Include your organization id and, for export issues, the jobId and the requestId from any error.
- Custom analytics help: your Skillsoft team can recommend implementation partners if you need help building dashboards or data models.
- Schema updates: the Data Dictionary API is always current. New data models are added over time.