Get coaching catalogue directory
get_catalogue_directory[Coaching catalogue] Read one catalogue directory in full: its settings, its custom Markdown page (content_md), its resolved sub-directories, and the coaching sessions its tag filter currently matches — which is how you verify that a session's tags actually place it in this directory. Read before updating: content_md, tags_sub and tags_interview_set_filter are replaced wholesale, so you need the current value to extend it.
Reads one catalogue directory in full: its settings, its custom Markdown page (content_md), the sub-directories it nests, and the coaching sessions its tags_interview_set_filter currently matches. Read a directory before updating it — content_md, tags_sub and tags_interview_set_filter are replaced wholesale by catalogue-tag-update, so you need the current value to extend rather than overwrite it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the catalogue directory to read (the catalogue URL segment). | |
| merchant_id | No | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Directory id — also the catalogue URL segment. | |
| name | Yes | Display name. | |
| status | Yes | Lifecycle status. | |
| tags_sub | Yes | 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. | |
| coach_plan | Yes | Coaching-plan stage, when the directory belongs to one. | |
| content_md | Yes | 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 | |
| created_at | Yes | Creation timestamp (ISO 8601). | |
| updated_at | Yes | Last update timestamp (ISO 8601). | |
| visibility | Yes | Who can see it. | |
| description | Yes | Short description shown on the directory card. | |
| merchant_id | Yes | Owning merchant id. Null for a platform-wide directory. | |
| catalogue_url | Yes | Public URL of this directory page, when the merchant has a coaching-portal domain configured. | |
| cover_image_url | Yes | Cover image URL. | |
| sub_directories | Yes | 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 | Yes | 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. | |
| is_start_directory | Yes | True when this is the directory the merchant's catalogue opens on. | |
| mojito_language_code | Yes | Directory language. | |
| tags_interview_set_filter | Yes | 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. | |
| matched_sessions_truncated | Yes | True when more sessions match than the 200 returned — narrow `tags_interview_set_filter` if you see this. |