Quick Summary: A learning item is an entry in your company’s training catalogue. It carries a title, an optional link or file, a learning type and up to four further references (provider, format, audience, course level) drawn from the company’s reference lists. Items are attached to skills and careers, labelled, and assigned to people as learning plans. Deleting is guarded.
Attributes
The five references are published as
{ id, name } pairs resolved against the reference lists. The legacy free-text provider, level, format and audience columns the app still stores are not part of the object.
Operations
Catalogue
The list is filterable by
title, id, labels, people, rating, cost, duration and skill — the app’s library filters under the same names — and sortable by title, cost, duration, rating and id. Pending and rejected suggestions are not part of the catalogue.
Create needs title and typeId; providerId, formatId, audienceId, courseLevelId, labelIds and skillIds are optional. A reference id that is not an entry of the company’s list is a field-level validation error.
Create with a file is the two-step path: send the same body plus fileName, receive { item, uploadUrl }, then PUT the file’s bytes to uploadUrl (a short-lived pre-signed URL). hasFile is true from the moment the item exists.
Update is partial: a field that is absent is left alone, an explicit null clears it. A url already used by another item is a 409 conflict.
Delete is guarded. If the item is assigned to anyone or attached to a skill or career the call answers 409 conflict:
?confirm=true to delete the item together with every assignment and attachment.
Skills
Attach takes
{ "skillId": "77", "featured": true } (featured optional) and is idempotent — attaching a skill the item already carries succeeds without change. Detaching a skill the item does not carry is a no-op. Every call answers the item’s current skills, each as { skill: { id, name }, featured }. A featured item is shown first for the skill.
Careers, labels, ratings and file
Replace labels takes
{ "labelIds": ["12", "15"] } and sets the complete set; an empty list clears every label. Incremental attach and detach live on the Label resource. Ratings answers { thumbsDown, thumbsUp, doubleThumbsUp }. Download URL answers a short-lived pre-signed URL; an item without a file is a 404.
Permissions
Any person who can see the training library in the app can read items here. Creating and updating items, and attaching skills or labels, requires a person who may author training in the app (global administrators, managers, full-access users and employees); administrators, directors and executives receive insufficient-permissions even when the key holdslearning:write. Deleting is restricted to global administrators.
Excluded
Assigning an item to a person, progress and completion, and thumbs ratings belong to the Learning Plan resource. Proposals from people who cannot author the catalogue are Learning Suggestions. CSV import and the “fetch the page’s title” convenience when pasting a URL are in-app paths.Related errors
- not-found — the item, or a skill named in a feature or detach call, is not in your company or not attached
- validation-error — a missing title or type, a reference id that is not in the company’s list, an unknown skill or label
- conflict — a duplicate URL; the guarded delete
- insufficient-permissions — the acting person may not author or delete training