Skip to main content

Update Course

This endpoint updates an existing course and optionally resets the set of groups it is attached to.

Endpoint​

PUT /api/course/:id

Authentication​

Authentication is required. User must have the admin or creator role.

Path Parameters​

ParameterTypeRequiredDescription
idIntegerYesUnique identifier of the course to update

Request Body​

FieldTypeRequiredDescription
titleStringNoDisplay title of the course
descriptionStringNoRich text description (HTML allowed)
imageStringNoCover image filename. Original images are auto-resized to a 480px variant.
publishedDateDateNoWhen the course should be considered published
hiddenBooleanNoWhen true, hides the course from non-admin listings
groupIdsArrayNoReplaces the set of groups this course is attached to

Any field omitted from the body is left unchanged. Supplying groupIds performs a full replacement of the course's group attachments — pass the complete desired array.

Response​

Success Response​

  • Status Code: 200 OK
  • Content: The updated course object
{
"id": 42,
"title": "Intro to Stoicism (Cohort 2)",
"description": "<p>Updated description.</p>",
"image": "1700000000000_tsf.png",
"publishedDate": "2025-02-01T00:00:00.000Z",
"hidden": false,
"PlatformId": 36,
"authorId": 9846,
"createdAt": "2025-01-10T19:24:52.000Z",
"updatedAt": "2025-02-01T12:00:00.000Z"
}

Error Responses​

  • 404 Not Found — No course exists with the supplied ID.
  • 403 Forbidden — User does not have admin or creator privileges.
  • 500 Internal Server Error — Unexpected server error.

Notes​

  • The course is mirrored to Firebase Firestore on every successful update so mobile clients stay in sync.
  • If image transformation is enabled on the platform, a new image URL is downloaded, resized to 480px wide, and re-uploaded before being stored.

Example​

curl -X PUT "https://api.tribesocial.io/api/course/42" \
-H "Authorization: Bearer YOUR_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Intro to Stoicism (Cohort 2)",
"groupIds": [12, 34, 56]
}'