Course structure (sections and pages)
const url = 'https://example.com/wp-json/wp2/course-manager/v1/courses/1/structure?post_type=page';const options = {method: 'GET', headers: {'X-WP-Nonce': '<X-WP-Nonce>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/wp-json/wp2/course-manager/v1/courses/1/structure?post_type=page' \ --header 'X-WP-Nonce: <X-WP-Nonce>'Read-only snapshot: sections in term_order, pages inside each section by menu_order ASC then title
(same traversal as Static Builder CourseBuildStructure). pageIds is the flat order.
Query lang is reserved for future WPML filtering (accepted, ignored in v1).
Requires WP2LMS (CourseSectionRelation). Mutations stay on /sections, /assign, /reorder.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Course post ID (wp2lms_courses).
Query Parameters
Section titled “Query Parameters”Bound CPT to list under sections (one type per request).
Reserved for WPML language code (ignored in v1).
Responses
Section titled “Responses”Course tree in Static Builder order. Empty course returns empty sections/pageIds.
object
object
object
Flat page order (section term_order, then menu_order).
Example
{ "courseId": 12, "title": "Introductory compliance course", "postType": "page", "sections": [ { "id": 18, "name": "Introduction", "slug": "compliance-intro", "order": 0, "pages": [ { "id": 101, "title": "What is compliance", "slug": "what-is-compliance", "status": "publish", "menuOrder": 0 }, { "id": 102, "title": "Course goals", "slug": "course-goals", "status": "draft", "menuOrder": 1 } ] }, { "id": 19, "name": "Practice", "slug": "compliance-practice", "order": 1, "pages": [ { "id": 110, "title": "Case study", "slug": "case-study", "status": "publish", "menuOrder": 0 } ] } ], "pageIds": [ 101, 102, 110 ]}Wp2cm_bad_post_type
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Not authenticated.
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Insufficient capability or invalid REST nonce.
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Wp2cm_invalid_course_post
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Wp2cm_course_link_unavailable
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}