Certificate Types

A certificate type is a lightweight category that certificates can be grouped under (e.g. "Compliance", "Safety"). These endpoints manage the types themselves.

Required scope: read:certificatetypes for the GET endpoints, write:certificatetypes for the rest.

Endpoints

GET
/api/open/v1/certificatetypes

List certificate types (paginated)

GET
/api/open/v1/certificatetypes/{id}

Get a single certificate type

POST
/api/open/v1/certificatetypes

Create a certificate type (draft by default)

PATCH
/api/open/v1/certificatetypes/{id}

Update a certificate type (PUT works the same)

DELETE
/api/open/v1/certificatetypes/{id}

Soft delete a certificate type (returns 204)

List

curl "https://customer.monotree.com/api/open/v1/certificatetypes" \
  -H "Authorization: Bearer mono_your_token_here"
Query paramNotes
is_publishedtrue returns published types only, false returns drafts only. Omit for all.
sinceISO 8601 — filter by created_at.
page, per_pageStandard pagination — per_page max 50.

Newest first, by created_at.

Create

curl -X POST https://customer.monotree.com/api/open/v1/certificatetypes \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Compliance", "is_published": true }'

Request body

FieldTypeNotes
titlestringRequired. Max 255 characters.
is_publishedbooleanOptional. true publishes immediately. Defaults to false (draft).

Returns 201 with the type object.

PUT and PATCH accept the same fields — all optional — and only change what you send. Setting is_published toggles the published state. Returns 200 with the type object.

DELETE /certificatetypes/{id} soft-deletes the type and returns 204. Certificates that were grouped under it then show certificate_type: null.

Response

{
  "data": {
    "id": 3,
    "title": "Compliance",
    "is_published": true,
    "published_at": "2026-06-01T10:00:00+02:00",
    "created_at": "2026-06-01T10:00:00+02:00",
    "updated_at": "2026-06-01T10:00:00+02:00"
  }
}