Sessions
use a sessions type ingest endpoint to create and update session records within an event this enables third party systems such as content management systems or scheduling tools to programmatically manage session data in jomablue typical use cases include syncing session schedules from an external agenda or content management system updating session details (times, descriptions, locations) as they change upstream populating session metadata such as categories, skill levels, and card content from external data how it works sessions ingest works the same way as people ingest you send a json payload to the ingest endpoint, and jomablue maps the fields based on the endpoint's configured mapping rules the endpoint, authentication, rate limits, and request format are identical the only difference is that the endpoint is configured as a session type, and the mapped fields correspond to session attributes rather than person attributes existing sessions can be matched using either a resource id or organisation uid to update records rather than create duplicates mapped fields the following fields are available for mapping within a session ingest endpoint field type notes resource id string formatted identifiers (e g acme/session/123) generate by jomablue used for matching existing sessions organisation uid string an external unique identifier for the session code string a human friendly/publicly displayed session identifier name string the session name/title description string session description text start time string mysql datetime (y m d h\ i s, utc) or iso 8601 strings with offsets finish time string mysql datetime (y m d h\ i s, utc) or iso 8601 strings with offsets location resource id string formatted identifiers (e g acme/location/123) or plain integers referencing an existing location active boolean whether the session is active truthy/falsy values are automatically normalised restricted boolean whether the session is restricted truthy/falsy values are automatically normalised restricted allow override boolean whether the restriction can be overridden truthy/falsy values are automatically normalised visible in api boolean whether the session is visible via public consumable apis truthy/falsy values are automatically normalised allow survey boolean whether the session allows survey responses truthy/falsy values are automatically normalised skill level string the skill level associated with the session sort order integer controls the display order of sessions entry buffer integer buffer time (in minutes) before the session start related content buffer integer buffer time (in minutes) for related content display categories string / array pipe separated string of record ids or array of integers traits string / array pipe separated string of record ids card content string content displayed on the session card card link label string label for the session card link card link type string validated against cardlinktype enum; accepts "internal" or "external" card link url string url for the session card link card allow rating boolean whether ratings are enabled on the session card card allow comment boolean whether comments are enabled on the session card card rating message string custom message displayed for session ratings email content id integer record id of the associated email content sms content id integer record id of the associated sms content related email content id integer record id of related email content related sms content id integer record id of related sms content related card content id integer record id of related card content eventapp promo text string promotional text displayed in the event app eventapp promo logo string promotional logo for the event app eventapp background string json object or json encoded string of css properties invalid values are ignored example request post /api/webhook/ingest/123e4567 e89b 12d3 a456 426614174000 authorization bearer eyjhbgcioi content type application/json accept application/json { "session" { "resource id" "acme/session/9001", "organisation uid" "ext session 42", "name" "introduction to cloud architecture", "description" "an introductory session covering core cloud architecture patterns ", "start time" "2026 06 15t09 00 00+10 00", "finish time" "2026 06 15t10 00 00+10 00", "location resource id" "acme/location/301", "active" true, "restricted" false, "skill level" "100", "categories" \[ 7, 12 ], "card link type" "external", "card link url" "https //example com/session details", "card link label" "view details" } } considerations the same general considerations as people ingest apply requests are processed asynchronously, a 200 accepted means queued (not yet processed), and event ordering is not guaranteed existing sessions are matched by resource id or organisation uid if neither is provided or matched, a new session is created the organisation uid can be updated via ingest when a session is matched by resource id duplicate organisation uid values are detected and logged as warnings speaker and track assignments are not currently available via session ingest