Fields that render Markdown
Read the current value back with
catalogue-tag-get (content_md) or job-interview-get (interview_description_long).
Every field above uses the same vocabulary and the same renderer. Only
content_md additionally accepts the catalogue directives at the end of this page, because only a directory page has sessions to place.Sending Markdown over the API
Markdown is line-based and JSON strings are not, so newlines have to be escaped as\n in the request body:
Standard Markdown
Headings
## The **fast** track gives you a coloured word rather than a bolder one.
A heading is given twice as much space above it as below it, so it reads as belonging to the section it opens. A heading at the very top of the content gets no space above it, and two headings in a row are treated as a title and its subtitle and kept close together.
Text
Lists
Links and images
Quotes
[note] instead — see below.
Tables
Code
Fence a block with three backticks and, optionally, a language name:Horizontal rule
Rich elements
These are written as[name] or [name:argument]. An argument is either a single value or a comma-separated list of key=value pairs.
Chip — inline
A small pill for a label, a level, a duration or a status. Write it anywhere in a sentence.tone is one of neutral (the default), accent, success, warning, danger, info.
Keyboard key — inline
Note — block
A tinted aside. Put it on its own lines and close it with[/note]. The body is ordinary Markdown.
tone is one of note (the default), tip, info, warning, danger. caution and important are accepted as spellings of warning, and success as a spelling of tip.
Card — block
A bordered, raised box around any Markdown.Columns — block
Lays its children out side by side: one column on a phone, two from tablet width up, and the requested number on a wide screen.[columns:2], [columns:3] and [columns:4] are supported; anything else falls back to two.
Each block inside becomes one cell. To put several blocks in one cell, wrap them in [column] … [/column]:
Button — block
A call to action. Needs both a label and anhref.
tone is one of primary (the default, dark), accent (your brand colour) or secondary (outlined). External links open in a new tab. Two buttons written on consecutive lines sit next to each other.
Divider — block
---, with more space around it.
Catalogue directives
content_md only. Each must sit alone on its line, and each draws from the sessions and sub-directories the directory already contains — a directive can never surface a session the directory itself would not show.
filter matches a session’s tags first (whole tags, so new does not match renewal), then its name, description and code. Accents are ignored, so filter=simulacion finds “Simulación”. Several terms can be given, separated by commas.
Card directives written on consecutive lines share one row:
A worked directory page
HTML
Plain HTML works for anything Markdown cannot express:styleis written the ordinary HTML way, as a string. It is converted for you.class,colspan,tabindexand the rest of the HTML attribute names are accepted and translated.onclickand every otheron…handler is removed, as arejavascript:links. Content submitted through the API cannot run scripts in a candidate’s browser.- Void tags may be written either way —
<br>and<br />both work.
Things that trip people up
Curly braces are safe.{name} renders as {name}. You do not need to escape it.
A block element must be alone on its line. Some text [sessions] renders the literal text. Chips and [kbd:…] are the exception — those are inline by design.
Unknown names stay as text. [see the guide] on its own line renders as written, because see the guide is not one of the names above.
Nothing inside a code fence is interpreted, including the elements on this page. That is how you show the syntax to someone else.
Values may contain spaces, but not commas. [button:Book a session,href=/x] is fine; a label with a comma in it will be cut short.
Backslashes in stored content are expected. Content that was last saved through the JobMojito admin editor comes back with backslashes in front of punctuation — \[sessions\:negotiation]. That is the editor’s own escaping and it renders correctly. Leave it as it is; do not strip it by hand.
Close your containers. An unclosed [card] wraps everything after it rather than blanking the page, but it will not look the way you meant.