Skip to main content
GET
Get a coaching catalogue directory

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Query Parameters

id
string
required

Id of the catalogue directory to read (the catalogue URL segment). The old id of a renamed directory also works; the response carries its current id.

Minimum string length: 1
Example:

"sales-coaching-en"

merchant_id
string<uuid>

Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.

Example:

"28106cba-1c27-4e53-b149-32113e5e8e31"

mojito_language_code
enum<string>

Show sub_directories and matched_sessions for this language version of the directory (one of its languages) instead of the default one - how you verify a translation lists the right sessions.

Available options:
ar,
bg,
zh,
hr,
cs,
da,
nl,
en,
fil,
fi,
fr,
de,
el,
hi,
hu,
id,
it,
ja,
ko,
ms,
no,
pl,
pt,
br,
ro,
ru,
sk,
es,
sv,
ta,
th,
tr,
uk,
vi
Example:

"en"

Response

The resolved catalogue directory.

One catalogue directory with its content page, sub-directories and matched sessions.

id
string
required

Directory id — also the catalogue URL segment.

Example:

"sales-coaching-en"

name
string | null
required

Display name.

description
string | null
required

Short description shown on the directory card.

mojito_language_code
string | null
required

Directory language.

Example:

"en"

visibility
string | null
required

Who can see it.

status
string | null
required

Lifecycle status.

coach_plan
string | null
required

Coaching-plan stage, when the directory belongs to one.

cover_image_url
string | null
required

Cover image URL.

merchant_id
string | null
required

Owning merchant id. Null for a platform-wide directory.

tags_sub
string[] | null
required

Ids of the directories nested under this one, in display order. Replaces the whole list — send the full set, not just the additions. A referenced directory only appears if it exists and is visible to the viewer.

Example:
tags_interview_set_filter
string[] | null
required

Tag filter selecting which coaching sessions this directory lists: a session appears when its own tags contain EVERY tag here (an AND, not an OR). Only active coaching/persona sessions with visibility public or merchant_public are listed. Set the matching tags on the session with the create-interview / job-interview-update tags field.

Example:
content_md
string | null
required

Markdown for a custom directory page. When set (even as an empty string) the markdown replaces the default grid and decides the layout itself; null renders the plain grid of sub-directories and sessions. Alongside normal Markdown you can place these directives, each ALONE on its own line: [plan-progress] (the learner's coaching-plan progress), [directory:<tag-id>] (a card for one sub-directory), [session:<interview-id>] (a card for one session), [sessions] (every session in this directory), [sessions:<term>] (sessions matching a term), [sessions:filter=<term>,limit=<n>] (a filtered, capped list). A directive on a line with other text is rendered as ordinary text. Chips, callouts, cards, columns and buttons are available here too — full vocabulary: https://developer.jobmojito.com/cookbooks/format-content-with-markdown

Example:

"## Sales coaching\n\nPick a session to practise with.\n\n[chip:6 sessions] [chip:Beginner,tone=accent]\n\n[sessions:filter=objection-handling,limit=6]\n"

translations
object | null
required

The directory's OTHER language versions, keyed by mojito language code. The top-level fields are the default language (mojito_language_code); each version here is a page of its own with its own name, Markdown, session filter and sub-directories, shown to learners who pick that language in the catalogue (falling back to English, then the default). A key may not equal mojito_language_code.

languages
string[]
required

Every language the directory has, the default (mojito_language_code) first. matched_sessions and sub_directories describe the default language unless the request names another one in mojito_language_code.

Example:
viewed_language
string | null
required

The language version sub_directories and matched_sessions were resolved for: the requested mojito_language_code, else the default.

Example:

"sk"

merged_into
string | null
required

Set when this directory was folded into another as one of its language versions: the directory to edit instead. Its old URL redirects there.

created_at
string | null
required

Creation timestamp (ISO 8601).

updated_at
string | null
required

Last update timestamp (ISO 8601).

catalogue_url
string | null
required

Public URL of this directory page, when the merchant has a coaching-portal domain configured.

Example:

"https://coaching.example.com/catalogue/sales-coaching-en"

is_start_directory
boolean
required

True when this is the directory the merchant's catalogue opens on.

sub_directories
object[]
required

The directories listed in tags_sub, resolved and in display order. An id in tags_sub that does not resolve (deleted, or not visible to you) is simply absent here — compare the two to spot a broken link.

matched_sessions
object[]
required

The coaching/persona sessions this directory currently lists, applying the same rules as the live portal: active, type coaching or persona, visibility public or merchant_public for this merchant, and tags containing every tag of tags_interview_set_filter. Empty when the filter is null. Capped at 200.

matched_sessions_truncated
boolean
required

True when more sessions match than the 200 returned — narrow tags_interview_set_filter if you see this.