Training sessions and recordings
Record or withdraw legacy interest in a session
/a/Training_interestUpdate
Record or withdraw legacy interest in a session
When to use this endpoint
Record a local indication of interest and obtain an external registration-page URL, or withdraw that indication later. Interest is neither a provider subscription nor proof of registration; use Training_register for the current embedded WebinarGeek workflow.
Authentication and permissions
Authenticate with signed API-key fields or a logged-in CRM session. Every Training handler requires login; there is no additional page, role, department, or tenant feature-flag check. CRM2 exposes Training to authenticated users.
Webinars and session IDs belong to a shared global catalogue. Interests and provider registrations are scoped to the authenticated tenant and user even though they are stored globally. Client-supplied tenant/user IDs do not select another person’s bookings or progress.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
session_id | Integer | Yes | Integer-converted positive shared session ID. |
interested | 0 or 1 | Yes | Value stringifies to exactly "0" or "1"; other values fail. interested=1 records interest; interested=0 withdraws it. Request tenant/user IDs are ignored. |
Example request
$result = FM_api('Training_interestUpdate', [
'session_id' => '1042',
'interested' => '1',
]);
Example response
{
"ok": 1,
"interested": true,
"registration_url": "https://example.test/register"
}
Withdraw returns {"ok":1,"interested":false,"registration_url":""}. The interest flag in this envelope is boolean. No provider registration ID, confirmation or seat reservation is returned.
Errors and unusual responses
| Response | Condition |
|---|---|
{"error":"not logged in"} | No authenticated tenant context is available. Invalid signed credentials can be rejected by the dispatcher before the handler runs. |
{"error":"missing or invalid Training interest parameters"} | Nonpositive/missing session ID, missing interested or value other than exact 0/1 after string conversion; checked before login. |
{"error":"Training session not found"} | Missing session or unpublished parent webinar. |
{"error":"This Training session is not open for registration"} | Recording interest for a session not in scheduled status. |
{"error":"Registration for this Training session has closed"} | Recording interest at/after starts_at or a nonzero registration cutoff. |
{"error":"This Training session has no valid registration link"} | Recording interest without a valid HTTPS registration URL free of embedded credentials. |
{"error":"Unable to save Training interest"} | The interest upsert or withdrawal write failed. No success or changed-interest flag is returned. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Adding interest requires a future scheduled session and valid external registration URL even when a provider broadcast mapping exists. A provider-only session with no legacy URL can allow Training_register while rejecting this endpoint.
- Adding interest upserts the unique session/tenant/user row, marks it active and refreshes registration_opened_at/last_edited. Existing cdate is retained. Repeated interest calls do not create duplicate interest rows, but update the opened timestamp.
- Withdrawal requires a session under a published webinar, but does not recheck status/start/cutoff or require a prior interest row. It updates existing matching rows inactive; a missing interest row is a successful no-op.
- Neither branch creates, confirms nor cancels a WebinarGeek registration. Withdrawal cannot revoke provider joining access. A legacy unmapped session needs active interest for shared joining access during the protected 15-minute window.
- No paging, entitlement/seat enforcement, Core_log history or tenant deletion log is involved. Withdraw retains the row and its prior timestamps/reminder markers.
Side effects
- Writes the authenticated user’s global interest row. It does not immediately mail, notify, open a browser tab or contact the webinar provider; the caller may open the returned registration_url.
- An active interest makes a future scheduled published session eligible for the separate reminder worker within 30 minutes of its start. That worker can create a tenant notice and global direct-push work for an active tenant/user. Reminder markers are per session start; withdrawing/re-adding the same interest does not reset an already-delivered reminder.
See it in Fieldmotion
CRM1
No direct CRM1 caller for Training_interestUpdate was found. The current catalogue/booking screen is CRM2 Training; tests are not production UI callers. No direct mobile-app or m-service caller for these CRM routes was found.
CRM2
The current provider Register Now flow uses Training_register, not interestUpdate=1. For an already-interested future session, open its details and choose Withdraw interest; filter for Training_interestUpdate with interested=0.
Related endpoints
Training_register: current provider booking workflow.Training_cancelRegistration: cancel a provider booking rather than only hiding an interest.Training_mySessions: read active interests when booked is omitted.Training_get: read current joining eligibility.