API reference
Start ticket purchase
Validates campaign ticket, quantity, required buyer details and browser protection, then returns the existing server checkout or free-ticket result.
https://api.sparkglim.net/api/public/tickets/purchaseAccess model
- Access model
- Public access with validation
- Documented availability
- Implemented in source
Availability is verified from source, not a live production guarantee.
Open the returned checkout URL. SparkGlim Server owns prices, methods, payment verification and fulfillment; browser returns are navigation only.
Request
| Name | Type | Validation |
|---|---|---|
campaign_idRequiredExisting campaign record within the caller’s account and any narrower campaign credential. | string | Validation: UUID. |
ticket_idRequiredThe selected ticket type belonging to the specified campaign; server checks status, capacity and price. | string | Validation: UUID. |
quantityRequiredNumber of tickets requested; inventory and per-person purchase limits remain server-enforced. | integer | Validation: 1–100. |
phone_numberRequiredParticipant contact phone; required payment channels and campaign rules may require a valid international number. | string | Validation: nonempty valid phone. |
emailOptionalContact email used by the configured campaign or account workflow; never a credential granting access by itself. | string | Validation: email. |
discount_codeOptionalExisting campaign-specific discount or invitation credential, revalidated by the server before purchasing. | string | Validation: trimmed nonempty. |
invite_codeOptionalExisting campaign-specific discount or invitation credential, revalidated by the server before purchasing. | string | Validation: trimmed nonempty. |
luggage_quantityOptionalQuantity of luggage in an event that actually supports the configured luggage option. | integer | Validation: >=0. |
attendee_informationOptionalAnswers matching the actual campaign-specific fields, required values and supported options. | object | Validation: string values matching configured fields. |
payment_channelOptionalOptional channel preference; only methods enabled for the real selling country, currency and merchant may be used. | enum | Validation: card | mobile_money | apple_pay | bank_transfer | crypto; availability is server-controlled. |
network_codeOptionalConfigured mobile network selection where the chosen payment channel requires it. | string | Validation: configured network. |
is_appOptionalExisting caller context used to select Web or User App configuration; it grants no extra permissions. | boolean | Validation: client context. |
web_abuse_contextRequiredExisting browser/device protection payload required before public checkout initialization; not a replacement for server authorization. | object | Validation: strict object; device_details JSON <=12000 characters. |
web_abuse_context.device_idRequiredExisting browser/device protection signal accepted by the current public checkout protection schema. | string | Validation: 12–160. |
web_abuse_context.device_fingerprintRequiredExisting browser/device protection signal accepted by the current public checkout protection schema. | string | Validation: 12–160. |
web_abuse_context.browser_signatureOptionalExisting browser/device protection signal accepted by the current public checkout protection schema. | string|null | Validation: 12–160. |
web_abuse_context.hardware_signatureOptionalExisting browser/device protection signal accepted by the current public checkout protection schema. | string|null | Validation: 12–160. |
web_abuse_context.device_detailsOptionalExisting browser/device protection signal accepted by the current public checkout protection schema. | object | Validation: JSON object. |
web_abuse_context.client_pattern_detectedOptionalExisting browser/device protection signal accepted by the current public checkout protection schema. | boolean | Validation: existing device protection. |
client_attempt_idOptionalStable client operation identifier used to reuse an existing attempt and reject mismatched retries. | string | Validation: stable normalized operation identity. |
return_pathOptionalRelative return destination on the verified current website after centralized checkout. | string | Validation: same-origin relative path; no // or backslash. |
Request
Examples describe the contract and are not executed. Use authorized test records; never paste a real secret into these pages.
POST /api/public/tickets/purchase HTTP/1.1
Host: api.sparkglim.net
Content-Type: application/json
{
"campaign_id": "11111111-1111-4111-8111-111111111111",
"ticket_id": "22222222-2222-4222-8222-222222222222",
"quantity": 1,
"phone_number": "+233200000000",
"web_abuse_context": {
"device_id": "<EXISTING_DEVICE_ID>",
"device_fingerprint": "<EXISTING_DEVICE_FINGERPRINT>"
},
"client_attempt_id": "example_stable_attempt_0001"
}Response
{
"success": true,
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"status": "pending"
}
}{
"success": false,
"error": "<ERROR_MESSAGE>"
}Validation, permissions, unavailable records and temporary service failures use the handler’s HTTP status and error payload.
Limits & retries
Default Server limit: 100 requests per IP per 60 seconds. Resource-specific controls also apply.
Source compatibility
Authorized operations require account-specific testing.
server/src/api/router.tsserver/src/api/routes/public.ts