learning-pathways

27 endpoints.

GET/api/learning-pathways/mine Bearer token

List my learning pathways with progress

Every unarchived pathway whose audience covers the caller — through a held role, a department they hold a grant in (or one above it), or organization membership — with every level's derived state. Needs no permission grant: the audience is the gate. Locked levels are presentation only; nothing is enforced server-side.

Responses

StatusDescriptionBody
200The caller's learning pathways, each with derived progress.MyPathways
401The access token is missing or invalid.ErrorResponse
500The database could not be read.ErrorResponse
GET/api/learning-pathways/{pathway_id}/progress Bearer token

Get my progress on one pathway

The pathway's level graph as it stands for the caller: which levels are complete, unlocked or locked, and where every certification stands. Readable by anyone the pathway's audience covers, and by holders of certifications:read over its owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
200The pathway as it stands for the caller.PathwayProgress
401The access token is missing or invalid.ErrorResponse
404No visible pathway has that id or slug.ErrorResponse
500The database could not be read.ErrorResponse
GET/api/learning-pathways/{pathway_id}/attachments/{attachment_id}/download Bearer token

Get a download URL for a pathway attachment

Issues a short-lived presigned GET for the private attachment. Readable by anyone the pathway's audience covers, and by holders of certifications:read over its owner. Trainer resources are listed and downloadable by certifications:read holders only.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
attachment_idpathstring (uuid)yesUUID id of the attachment.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
200Where to fetch the file from, for the next five minutes.DownloadTicket
401The access token is missing or invalid.ErrorResponse
404No visible pathway matches the path, or it has no such attachment.ErrorResponse
500The download URL could not be signed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
POST/api/learning-pathways/{pathway_id}/attachment-uploads Bearer token

Request an upload URL for a pathway attachment

Issues a presigned URL to PUT one file of any type straight to private blob storage, scoped to this pathway, the declared content type and a 500 MB ceiling. Attach it with POST /learning-pathways/{pathway_id}/attachments and the returned pathname afterwards. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredCreateDescriptionUploadRequest
FieldTypeRequiredDescription
file_namestringyes

1–300 characters

content_typestringyes

The file's content type; any type is allowed, but the upload pins this one.

1–200 characters

size_bytesintegeryes

maximum 524288000

Responses

StatusDescriptionBody
201Where to PUT the file, and the pathname the attachment will point at.DescriptionUploadTicket
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but lacks certifications:write.ErrorResponse
404No visible pathway matches the path.ErrorResponse
500The upload URL could not be signed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
POST/api/learning-pathways/{pathway_id}/attachments Bearer token

Attach an uploaded file to a pathway

Creates the attachment at the end of the authored order, pointing at a pathname an upload ticket was issued for (after PUTting the file there). The content type is read back from the store, never from the request. Requires certifications:write. Trainer resources are listed and downloadable by certifications:read holders only.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredCreatePathwayAttachmentRequest

any

Responses

StatusDescriptionBody
201The created attachment.PathwayAttachment
400The body failed validation, or the pathname was not uploaded.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but lacks certifications:write.ErrorResponse
404No visible pathway matches the path.ErrorResponse
409That upload is already attached.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
PATCH/api/learning-pathways/{pathway_id}/attachments/{attachment_id} Bearer token

Relabel or reorder a pathway attachment

Changes the attachment's label (null or empty clears it back to the file name), its audience,, whether it shows on the page or downloads only, or its slot in the authored order. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
attachment_idpathstring (uuid)yesUUID id of the attachment.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredUpdatePathwayAttachmentRequest

any

Responses

StatusDescriptionBody
200The updated attachment.PathwayAttachment
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but lacks certifications:write.ErrorResponse
404No visible pathway matches the path, or it has no such attachment.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/learning-pathways/{pathway_id}/attachments/{attachment_id} Bearer token

Delete a pathway attachment

Removes the attachment; the blob it pointed at is deleted best-effort. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
attachment_idpathstring (uuid)yesUUID id of the attachment.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
204The attachment is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but lacks certifications:write.ErrorResponse
404No visible pathway matches the path, or it has no such attachment.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/learning-pathway-levels/{level_id}/attachments/{attachment_id}/download Bearer token

Get a download URL for a level attachment

Issues a short-lived presigned GET for the private attachment. Readable by anyone the level's pathway's audience covers, and by holders of certifications:read over its owner. Trainer resources are listed and downloadable by certifications:read holders only.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.
attachment_idpathstring (uuid)yesUUID id of the attachment.

Responses

StatusDescriptionBody
200Where to fetch the file from, for the next five minutes.DownloadTicket
401The access token is missing or invalid.ErrorResponse
404No visible level matches the path, or it has no such attachment.ErrorResponse
500The download URL could not be signed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
POST/api/learning-pathway-levels/{level_id}/attachment-uploads Bearer token

Request an upload URL for a level attachment

Issues a presigned URL to PUT one file of any type straight to private blob storage, scoped to this level, the declared content type and a 500 MB ceiling. Attach it with POST /learning-pathway-levels/{level_id}/attachments and the returned pathname afterwards. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.

Request body

application/jsonrequiredCreateDescriptionUploadRequest
FieldTypeRequiredDescription
file_namestringyes

1–300 characters

content_typestringyes

The file's content type; any type is allowed, but the upload pins this one.

1–200 characters

size_bytesintegeryes

maximum 524288000

Responses

StatusDescriptionBody
201Where to PUT the file, and the pathname the attachment will point at.DescriptionUploadTicket
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this level but lacks certifications:write.ErrorResponse
404No visible level matches the path.ErrorResponse
500The upload URL could not be signed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
POST/api/learning-pathway-levels/{level_id}/attachments Bearer token

Attach an uploaded file to a level

Creates the attachment at the end of the authored order, pointing at a pathname an upload ticket was issued for (after PUTting the file there). The content type is read back from the store, never from the request. Requires certifications:write. Trainer resources are listed and downloadable by certifications:read holders only.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.

Request body

application/jsonrequiredCreatePathwayAttachmentRequest

any

Responses

StatusDescriptionBody
201The created attachment.PathwayAttachment
400The body failed validation, or the pathname was not uploaded.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this level but lacks certifications:write.ErrorResponse
404No visible level matches the path.ErrorResponse
409That upload is already attached.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
503File storage is not configured on this deployment.ErrorResponse
PATCH/api/learning-pathway-levels/{level_id}/attachments/{attachment_id} Bearer token

Relabel or reorder a level attachment

Changes the attachment's label (null or empty clears it back to the file name), its audience,, whether it shows on the page or downloads only, or its slot in the authored order. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.
attachment_idpathstring (uuid)yesUUID id of the attachment.

Request body

application/jsonrequiredUpdatePathwayAttachmentRequest

any

Responses

StatusDescriptionBody
200The updated attachment.PathwayAttachment
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this level but lacks certifications:write.ErrorResponse
404No visible level matches the path, or it has no such attachment.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/learning-pathway-levels/{level_id}/attachments/{attachment_id} Bearer token

Delete a level attachment

Removes the attachment; the blob it pointed at is deleted best-effort. Requires certifications:write.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.
attachment_idpathstring (uuid)yesUUID id of the attachment.

Responses

StatusDescriptionBody
204The attachment is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller can read this level but lacks certifications:write.ErrorResponse
404No visible level matches the path, or it has no such attachment.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
PUT/api/learning-pathways/{pathway_id}/job-aids Bearer token

Replace the job aids presented on a pathway

Sets the complete, ordered list of job aids shown on the pathway's overview beside its handouts. Aids of the pathway's own organization only; each is shown only to viewers its own audience covers. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredSetLinkedJobAidsRequest
FieldTypeRequiredDescription
job_aid_idsarray of string (uuid)yes

Replaces the whole list of job aids presented here, in the given order. Aids of the pathway's own organization only.

at most 100 items

Responses

StatusDescriptionBody
200The pathway's job aids after the change, in authored order.array of JobAidRef
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug, or an aid is not the organization's own.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
PUT/api/learning-pathway-levels/{level_id}/job-aids Bearer token

Replace the job aids presented on a level

Sets the complete, ordered list of job aids shown on the level's card beside its handouts. Aids of the pathway's own organization only; each is shown only to viewers its own audience covers. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.

Request body

application/jsonrequiredSetLinkedJobAidsRequest
FieldTypeRequiredDescription
job_aid_idsarray of string (uuid)yes

Replaces the whole list of job aids presented here, in the given order. Aids of the pathway's own organization only.

at most 100 items

Responses

StatusDescriptionBody
200The level's job aids after the change, in authored order.array of JobAidRef
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this level but does not hold certifications:write.ErrorResponse
404No visible level has that id, or an aid is not the organization's own.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
POST/api/learning-pathways/{pathway_id}/levels Bearer token

Add a level to a pathway

Creates a level at the end of the authored order, with its phase, its prerequisite levels and phases, and its certification contents in one call. A certification type may appear in at most one level per pathway. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredCreatePathwayLevelRequest
FieldTypeRequiredDescription
namestringyes

1–200 characters

descriptionstringno

Omit or send empty for no description.

at most 2000 characters

description_markdownstringno

Omit or send empty for no long-form markdown description.

at most 50000 characters

phase_idstring (uuid) | nullno

An existing phase of the same pathway to group the level under. Omit for none.

depends_on_level_idsarray of string (uuid)no

Existing levels of the same pathway this one depends on. The edges must keep the pathway acyclic. Omit for a root level.

at most 50 items

depends_on_phase_idsarray of string (uuid)no

Existing phases of the same pathway this one depends on — every level of each must be complete first. Never the level's own phase; the expanded edges must stay acyclic.

at most 50 items

certification_type_idsarray of string (uuid)no

Certification types of the same organization to place in this level, in order. A type may appear in at most one level per pathway.

at most 100 items

Responses

StatusDescriptionBody
201The created level, with its prerequisites and contents.PathwayLevel
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug, or a phase, prerequisite level or certification type does not belong to it.ErrorResponse
409A certification type is already placed elsewhere in this pathway, the level would depend on its own phase, or the prerequisites would form a cycle.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
PATCH/api/learning-pathway-levels/{level_id} Bearer token

Update a level

Renames or re-describes a level, or moves it between phases (phase_id, null to ungroup); depends_on_level_ids and depends_on_phase_ids each replace its whole prerequisite set of that kind (rejected when the expanded edges would close a cycle, or the level would depend on its own phase), certification_type_ids its whole contents. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.

Request body

application/jsonrequiredUpdatePathwayLevelRequest
FieldTypeRequiredDescription
namestringno

1–200 characters

descriptionstring | nullno

Send null to clear the description.

at most 2000 characters

description_markdownstring | nullno

Send null to clear the long-form markdown description.

at most 50000 characters

positionintegerno

minimum 0

phase_idstring (uuid) | nullno

Moves the level into a phase of its pathway; send null to ungroup it.

depends_on_level_idsarray of string (uuid)no

Replaces the level's whole level-prerequisite set; must stay acyclic.

at most 50 items

depends_on_phase_idsarray of string (uuid)no

Replaces the level's whole phase-prerequisite set; never its own phase, and the expanded edges must stay acyclic.

at most 50 items

certification_type_idsarray of string (uuid)no

Replaces the level's whole certification list, in the given order.

at most 100 items

Responses

StatusDescriptionBody
200The updated level, with its prerequisites and contents.PathwayLevel
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible level has that id, or a phase, prerequisite level or certification type does not belong to its pathway.ErrorResponse
409The prerequisites would form a cycle, the level would depend on its own phase, or a certification type is already placed elsewhere in this pathway.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/learning-pathway-levels/{level_id} Bearer token

Delete a level

Removes the level, its edges and its contents; levels that depended on it simply lose that prerequisite. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
level_idpathstring (uuid)yesUUID id of the level.

Responses

StatusDescriptionBody
204The level is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible level has that id.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
POST/api/learning-pathways/{pathway_id}/phases Bearer token

Add a phase to a pathway

Creates a phase — a grouping of the pathway's levels — with the phases it comes after. That ordering lays the phases out; it gates nothing. Levels join a phase through their own phase_id. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredCreatePathwayPhaseRequest
FieldTypeRequiredDescription
namestringyes

1–200 characters

description_markdownstringno

Omit or send empty for no markdown description.

at most 50000 characters

depends_on_phase_idsarray of string (uuid)no

Existing phases of the same pathway this one comes after. The edges must keep the phases acyclic. Omit for a first phase.

at most 50 items

Responses

StatusDescriptionBody
201The created phase, with the phases it comes after.PathwayPhase
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug, or a phase it would come after does not belong to it.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
PATCH/api/learning-pathway-phases/{phase_id} Bearer token

Update a phase

Renames or re-describes a phase; depends_on_phase_ids replaces the whole set of phases it comes after (rejected when the ordering would close a cycle). Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
phase_idpathstring (uuid)yesUUID id of the phase.

Request body

application/jsonrequiredUpdatePathwayPhaseRequest
FieldTypeRequiredDescription
namestringno

1–200 characters

description_markdownstring | nullno

Send null to clear the markdown description.

at most 50000 characters

depends_on_phase_idsarray of string (uuid)no

Replaces the whole set of phases this one comes after; must stay acyclic.

at most 50 items

Responses

StatusDescriptionBody
200The updated phase, with the phases it comes after and its levels.PathwayPhase
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible phase has that id, or a phase it would come after does not belong to its pathway.ErrorResponse
409The ordering would put a phase after itself.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/learning-pathway-phases/{phase_id} Bearer token

Delete a phase

Removes an empty phase. One that still holds levels, or that levels depend on, is refused until those are moved out or re-pointed; phases that came after it simply lose that predecessor. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
phase_idpathstring (uuid)yesUUID id of the phase.

Responses

StatusDescriptionBody
204The phase is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible phase has that id.ErrorResponse
409The phase still holds levels, or levels still depend on it.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
POST/api/learning-pathways/{pathway_id}/assignments Bearer token

Assign a pathway's audience

Presents the pathway to holders of a role, to everyone with a role grant in a department (or one nested beneath it), or to every member of the organization. The audience is presentation only — it never adds a certification requirement. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredCreatePathwayAssignmentRequest
FieldTypeRequiredDescription
assignee_kindstringyes

role: holders of role_id. department: everyone with a role grant in department_id or any department nested beneath it. organization: every member.

one of "role" | "department" | "organization"

role_idstring (uuid)no

Required for role assignments; must be a role of the pathway's organization.

department_idstring (uuid)no

Required for department assignments; forbidden for organization ones.

Responses

StatusDescriptionBody
201The created assignment.PathwayAssignment
400The request body failed validation, or the kind/id pairing is off.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug, or the role or department is not in the pathway's organization.ErrorResponse
409The pathway already has that audience row.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
DELETE/api/learning-pathways/{pathway_id}/assignments/{assignment_id} Bearer token

Remove one audience row

Withdraws the pathway from that role, department or organization audience. Requires certifications:write over the pathway's owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
assignment_idpathstring (uuid)yesUUID id of the assignment.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
204The assignment is gone.—
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug, or no such assignment on it.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/learning-pathways Bearer token

List learning pathways

Lists the learning pathways the caller can administer, newest first, with cursor pagination. Requires certifications:read in scope; rows outside the caller's scope are simply absent. Trainees list what is assigned to them at /learning-pathways/mine instead.

Parameters

NameInTypeRequiredDescription
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).
departmentquerystringnoDepartment UUID id or slug, resolved within org (which is then required).
include_archivedquerystringnoInclude archived rows. Defaults to false.
limitqueryintegernoPage size, 1-200. Defaults to 50.
cursorquerystringnoOpaque cursor from a previous page's next_cursor.

Responses

StatusDescriptionBody
200One page of learning pathways, and the cursor for the next.PathwayList
400A filter did not resolve, or the cursor is malformed.ErrorResponse
401The access token is missing or invalid.ErrorResponse
500The database could not be read.ErrorResponse
POST/api/learning-pathways Bearer token

Create a learning pathway

Creates a pathway, owned by an organization or one department within it. A pathway arranges existing certification types into levels with prerequisite edges — a presentation overlay that never adds a requirement. Add levels and assign the audience next. Requires certifications:write over the owner.

Request body

application/jsonrequiredCreatePathwayRequest
FieldTypeRequiredDescription
owner_organization_idstring (uuid)yes

Organization the pathway belongs to. Always required.

owner_department_idstring (uuid)no

Omit for a pathway owned by the organization directly.

slugstringyes

Unique within the organization. Slugs are lowercase letters and digits in words separated by single hyphens, like new-hire-path.

1–100 characters · matches ^[a-z0-9]+(-[a-z0-9]+)*$

namestringyes

1–200 characters

description_markdownstringno

Omit or send empty for no markdown description.

at most 50000 characters

Responses

StatusDescriptionBody
201The created pathway, with no levels yet.Pathway
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller does not hold certifications:write over the owner.ErrorResponse
404The organization, or the department within it, does not exist.ErrorResponse
409The organization already has a pathway with that slug.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
GET/api/learning-pathways/{pathway_id} Bearer token

Get a pathway with its structure

The pathway, its phases, every level with its phase, prerequisites, certification contents and job aids, and the audience — the authoring read. Requires certifications:read over the owner; trainees read their own derived view at /learning-pathways/{pathway_id}/progress instead.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
200The pathway, its phases and levels, and its audience.PathwayDetail
401The access token is missing or invalid.ErrorResponse
404No visible pathway has that id or slug.ErrorResponse
500The database could not be read.ErrorResponse
PATCH/api/learning-pathways/{pathway_id} Bearer token

Update a pathway

Renames, re-slugs or re-describes a pathway. File attachments are managed through the /learning-pathways/{pathway_id}/attachments endpoints. Requires certifications:write over the owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Request body

application/jsonrequiredUpdatePathwayRequest
FieldTypeRequiredDescription
slugstringno

1–100 characters · matches ^[a-z0-9]+(-[a-z0-9]+)*$

namestringno

1–200 characters

description_markdownstring | nullno

Send null to clear the markdown description.

at most 50000 characters

Responses

StatusDescriptionBody
200The updated pathway.Pathway
400The request body failed validation.ErrorResponse
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug.ErrorResponse
409The organization already has a pathway with the new slug.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse
POST/api/learning-pathways/{pathway_id}/archive Bearer token

Archive a pathway

Retires the pathway: it stays readable to administrators but leaves every trainee's pathway list. Idempotent. Requires certifications:write over the owner.

Parameters

NameInTypeRequiredDescription
pathway_idpathstringyesUUID id, or a slug resolved within the organization given by the org query parameter.
orgquerystringnoOrganization UUID id or slug to filter by (and to resolve slug refs in).

Responses

StatusDescriptionBody
200The archived pathway.Pathway
401The access token is missing or invalid.ErrorResponse
403The caller can read this pathway but does not hold certifications:write.ErrorResponse
404No visible pathway has that id or slug.ErrorResponse
500The database could not be reached, or the write failed.ErrorResponse