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

ParameterTypeRequiredDescription
session_idIntegerYesInteger-converted positive shared session ID.
interested0 or 1YesValue 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

ResponseCondition
{"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