> ## Documentation Index
> Fetch the complete documentation index at: https://docs.holos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Courses

> Immersive training delivered in Holos Learn, built from ordered lessons.

A **Course** is a unit of training delivered in [Holos Learn](/learn/index) on Apple Vision Pro. It holds ordered [lessons](/domains/lessons), the media they present, and the list of members permitted to open it.

Alongside an organization's own courses, the platform publishes a shared catalogue. `GET /courses/platform` returns those, and they appear to every organization without being copied into it.

## Key fields

| Field                   | Description                                      |
| ----------------------- | ------------------------------------------------ |
| `title` / `description` | The course itself                                |
| `coverPhoto`            | Tile image in the course library                 |
| `organizationId`        | Owning organization. Absent on a platform course |
| `createdBy`             | The member who created it                        |

## Access

A course is not open to an organization by default. Access is granted per member:

* `POST /courses/{courseId}/grants` grants a member access, and `DELETE /courses/{courseId}/grants/{memberId}` revokes it.
* A member without access can ask for it with `POST /courses/{courseId}/access-requests`, which an admin then grants or dismisses.
* `GET /courses/{courseId}/access` reports where a given member stands.

## Media

Lessons present images, video, and 3D models, uploaded to the course rather than to a lesson so the same asset can be used more than once. Upload is a two-step exchange: request a URL with `POST /courses/{courseId}/media/upload-url`, then confirm with `POST /courses/{courseId}/media/{mediaId}/complete` once the bytes have landed.

An existing 3D object can be used directly, without uploading anything, via `POST /courses/{courseId}/media/feature-from-object`.

## Endpoints

Full endpoint reference is available in the OpenAPI spec. Key operations:

* `GET /courses`: list the organization's courses
* `GET /courses/platform`: the shared platform catalogue
* `POST /courses`: create a course
* `PATCH /courses/{courseId}`: update title, description, or cover
* `DELETE /courses/{courseId}`: archive a course, recoverable with `POST /courses/{courseId}/restore`
* `POST /courses/{courseId}/grants`: grant a member access
* `POST /courses/{courseId}/media/upload-url`: begin a media upload
