{"name":"SparkGlim Developer","version":"1","documentation":"https://developer.sparkglim.net","openapi":"https://developer.sparkglim.net/openapi.json","languages":["en","fr","es","pt","ar"],"readiness":"Source-implemented contracts; production activation and provider availability require separate evidence.","contracts":[{"id":"organization-get-context","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/context","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-context","title":"Account context","description":"Loads approved organization account, branding, verified domains and configured operational context for a private settings reader.","auth":"organization","permissions":["settings:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-config","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/config","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-config","title":"Domain and modules","description":"Returns the authenticated domain, optional campaign scope and enabled organization modules without private provider credentials.","auth":"scoped-public","permissions":["settings:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-storefront","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/storefront","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-storefront","title":"Campaign storefront","description":"Combines permitted approved campaigns and ticket types for one account/domain; campaign credentials keep their narrower scope.","auth":"scoped-public","permissions":["campaigns:read","tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-campaigns","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/campaigns","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-campaigns","title":"Approved campaigns","description":"Lists approved campaigns owned by this organization, optionally narrowed by campaignId. Private campaigns require an explicit matching campaign credential.","auth":"scoped-public","permissions":["campaigns:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-campaigns","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/campaigns","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-campaigns","title":"Create campaign","description":"Creates a campaign under the approved organization using validated details and creator ownership; draft creation is not publication.","auth":"organization","permissions":["campaigns:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-patch-campaigns-campaignId","product":"organization","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/campaigns/:campaignId","documentation":"https://developer.sparkglim.net/reference/organization/organization-patch-campaigns-campaignId","title":"Update campaign","description":"Updates supported fields of a campaign owned by the authenticated organization; account permissions and status rules still apply.","auth":"organization","permissions":["campaigns:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-ticket-types","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/ticket-types","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-ticket-types","title":"Ticket types","description":"Lists campaign ticket definitions and campaign currency after checking the organization’s ticketing module and permitted campaign scope.","auth":"scoped-public","permissions":["tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-ticket-types","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/ticket-types","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-ticket-types","title":"Create ticket type","description":"Creates a validated ticket type for an organization-owned campaign; price, capacity and attendee fields remain server-controlled records.","auth":"organization","permissions":["tickets:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-patch-ticket-types-ticketTypeId","product":"organization","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/ticket-types/:ticketTypeId","documentation":"https://developer.sparkglim.net/reference/organization/organization-patch-ticket-types-ticketTypeId","title":"Update ticket type","description":"Changes supported ticket definition fields after verifying ticket ownership within the organization account.","auth":"organization","permissions":["tickets:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-ticket-types-bootstrap","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/ticket-types/bootstrap","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-ticket-types-bootstrap","title":"Creator-enabled bootstrap","description":"Initializes1–30 ticket types only for an empty campaign with creator-enabled bootstrap, using a durable idempotent operation.","auth":"organization","permissions":["tickets:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-participants","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/participants","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-participants","title":"Nominees and participants","description":"Lists organization-owned nominees or participants with optional campaign, status and search filters; this is a private record reader.","auth":"organization","permissions":["campaigns:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-participants","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/participants","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-participants","title":"Create participant","description":"Creates a participant associated with an organization-owned campaign and optional category using the validated participant schema.","auth":"organization","permissions":["campaigns:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-patch-participants-participantId","product":"organization","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/participants/:participantId","documentation":"https://developer.sparkglim.net/reference/organization/organization-patch-participants-participantId","title":"Update participant","description":"Updates only a participant belonging to the organization, preserving the existing campaign and approval authorization checks.","auth":"organization","permissions":["campaigns:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-tickets-verify","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/tickets/verify","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-tickets-verify","title":"Public ticket status","description":"Reads tenant-scoped public admission status without checking the guest in or exposing the purchased ticket QR.","auth":"scoped-public","permissions":["tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-tickets-check-in","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/tickets/check-in","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-tickets-check-in","title":"Authorized check-in","description":"Records authorized admission for a ticket belonging to this organization; duplicate check-in returns its existing state.","auth":"organization","permissions":["tickets:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-votes-initialize","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/votes/initialize","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-votes-initialize","title":"Start vote checkout","description":"Validates campaign and nominee, initializes the existing vote payment and reuses the durable operation on retries; the server records completed votes.","auth":"organization","permissions":["payments:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-fundraising-initialize","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/fundraising/initialize","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-fundraising-initialize","title":"Start donation checkout","description":"Initializes a donation through the approved organization campaign and existing payment service with durable idempotency.","auth":"organization","permissions":["payments:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-fundraising-summary","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/fundraising/summary","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-fundraising-summary","title":"Fundraising report","description":"Returns private organization fundraising totals, campaigns and up to50 recent donation records; it is not a public disclosure-safe aggregate.","auth":"organization","permissions":["analytics:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-payments-initialize","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/payments/initialize","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-payments-initialize","title":"Start ticket checkout","description":"Validates organization ticketing access, selected ticket and buyer information, then creates or reuses central checkout with a receipt bound to this domain.","auth":"organization","permissions":["payments:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-payments-verify","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/payments/verify","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-payments-verify","title":"Server payment reconciliation","description":"Server-side reconciliation checks the opaque receipt against this account/domain/reference before using the existing authoritative payment service. Never call from a public browser.","auth":"organization","permissions":["payments:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-submissions","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/submissions","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-submissions","title":"Vendor, volunteer or partner application","description":"Stores an idempotent vendor, volunteer or partner application after module, campaign and required contact checks; submission does not approve it.","auth":"organization","permissions":["submissions:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-my-tickets-request-otp","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/my-tickets/request-otp","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-my-tickets-request-otp","title":"Request ticket-access OTP","description":"Sends a ticket-access code only when the scoped campaign has a completed ticket matching the submitted contact.","auth":"organization","permissions":["my-tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-my-tickets-verify-otp","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/my-tickets/verify-otp","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-my-tickets-verify-otp","title":"Verify ticket-access OTP","description":"Validates the campaign-bound challenge and code, then issues a limited customer ticket-access session.","auth":"organization","permissions":["my-tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-my-tickets-list","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/my-tickets/list","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-my-tickets-list","title":"Customer ticket list","description":"Lists tickets within the verified customer session and campaign using20 purchases per zero-based page.","auth":"organization","permissions":["my-tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-my-tickets-qr","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/my-tickets/qr","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-my-tickets-qr","title":"Customer ticket QR","description":"Renders a QR only for a ticket found inside the verified customer session and authorized campaign.","auth":"organization","permissions":["my-tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-my-tickets-logout","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/my-tickets/logout","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-my-tickets-logout","title":"End ticket-access session","description":"Revokes the customer ticket-access session; it does not sign the organizer out of unrelated accounts.","auth":"organization","permissions":["my-tickets:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-analytics","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/analytics","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-analytics","title":"Campaign analytics","description":"Returns private account metrics, creator-currency reporting totals and up to20 recent transaction-reporting records.","auth":"organization","permissions":["analytics:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-get-settings","product":"organization","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/settings","documentation":"https://developer.sparkglim.net/reference/organization/organization-get-settings","title":"Read settings","description":"Reads permitted organization settings, optionally filtered by categories; private configuration is not a public feed.","auth":"organization","permissions":["settings:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-patch-settings-category","product":"organization","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/settings/:category","documentation":"https://developer.sparkglim.net/reference/organization/organization-patch-settings-category","title":"Update allowed settings","description":"Updates one allowed organization settings category and records its configuration version and audit history.","auth":"organization","permissions":["settings:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-notifications","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/notifications","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-notifications","title":"Queue configured notification","description":"Dispatches an enabled email or SMS notification using the organization’s configured sender/provider and returns the notification record plus delivery result.","auth":"organization","permissions":["notifications:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"organization-post-withdrawals","product":"organization","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/v1/withdrawals","documentation":"https://developer.sparkglim.net/reference/organization/organization-post-withdrawals","title":"Capability-gated withdrawal","description":"Creates or reuses a server-validated withdrawal only for a private key with explicit withdrawal capability and a stable idempotency key.","auth":"organization","permissions":["withdrawals:write + withdrawal_enabled"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/auth.ts","server/src/white-label/schemas.ts","server/src/white-label/organization-service.ts","server/src/white-label/service.ts"]},{"id":"reseller-get-console","product":"reseller","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-get-console","title":"Reseller account console","description":"Loads the signed-in reseller account console, actor, member relationships and review context after membership checks.","auth":"reseller","permissions":["settings:read","members:read"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-patch-profile","product":"reseller","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/profile","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-patch-profile","title":"Update reseller profile","description":"Updates the authorized reseller profile policy, including approval requirements and permitted public signup settings.","auth":"reseller","permissions":["settings:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-members","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/members","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-members","title":"Add creator-team member","description":"Adds a member through the existing creator-team workflow and stores the reseller relationship; the member completes normal organizer onboarding.","auth":"reseller","permissions":["members:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-patch-members-memberId","product":"reseller","method":"PATCH","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/members/:memberId","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-patch-members-memberId","title":"Update member relationship","description":"Updates the reseller relationship and synchronizes the linked authorized creator-team member where present.","auth":"reseller","permissions":["members:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-approval-requests","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/approval-requests","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-approval-requests","title":"Request approval","description":"Records a review request for a supported account resource; escalation and account oversight policy determine the next reviewer.","auth":"reseller","permissions":["oversight:escalate"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-approval-requests-requestId-decision","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/approval-requests/:requestId/decision","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-approval-requests-requestId-decision","title":"Record authorized decision","description":"Records an authorized decision on an existing reseller approval request without bypassing SparkGlim oversight.","auth":"reseller","permissions":["campaigns:approve"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-payment-methods","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/payment-methods","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-payment-methods","title":"Configure approved payment method","description":"Creates a reseller payment-method configuration under the assigned payment permission and approval policy; it does not enable arbitrary providers.","auth":"reseller","permissions":["payments:write"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-payout-rules","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/payout-rules","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-payout-rules","title":"Configure payout rule","description":"Creates or updates an account-scoped payout rule after withdrawals:approve authorization and the existing financial policy checks.","auth":"reseller","permissions":["withdrawals:approve"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-otp-send","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/otp/send","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-otp-send","title":"Request configured OTP","description":"Starts an account-scoped verification challenge using an enabled delivery channel and records its expiry and delivery state.","auth":"reseller","permissions":["otp:send"],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"reseller-post-otp-challengeId-verify","product":"reseller","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/white-label/portal/reseller/otp/:challengeId/verify","documentation":"https://developer.sparkglim.net/reference/reseller/reseller-post-otp-challengeId-verify","title":"Verify OTP challenge","description":"Validates an unexpired challenge belonging to the authorized reseller account, marking only that challenge verified.","auth":"reseller","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/white-label.ts","server/src/white-label/reseller-service.ts","server/src/white-label/schemas.ts"]},{"id":"public-post-api-public-tickets-purchase","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/tickets/purchase","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-tickets-purchase","title":"Start ticket purchase","description":"Validates campaign ticket, quantity, required buyer details and browser protection, then returns the existing server checkout or free-ticket result.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-post-api-public-vote","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/vote","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-vote","title":"Start public vote","description":"Validates a public voting campaign, eligible nominee, supported vote quantity and browser protection before starting centralized checkout.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-post-api-public-donate","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/donate","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-donate","title":"Start public donation","description":"Starts a donation for the selected fundraiser after validating requested amount, campaign rules and browser protection; this is not a completed contribution.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-payment-methods-campaignId","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/payment-methods/:campaignId","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-payment-methods-campaignId","title":"Campaign payment options","description":"Lists enabled checkout method names for an approved campaign’s selling country, currency and client context without exposing provider secrets.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-tickets-public-verify","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/tickets/public-verify","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-tickets-public-verify","title":"Public ticket verification","description":"Forwards bearer ticket-credential verification to the Web ticket reader and preserves its status and payload; it does not perform admission.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-blog","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-blog","title":"Published articles","description":"Lists published articles with search, category, featured, limit and offset filters, returning the exact total and list pagination.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-blog-categories","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/categories","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-blog-categories","title":"Article categories","description":"Lists active article categories ordered by configured position and post count.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-blog-slug","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/:slug","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-blog-slug","title":"Published article detail","description":"Returns a published article and up to four related published posts, and increments the article view counter.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-homepage-discovery","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/homepage/discovery","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-homepage-discovery","title":"Public campaign discovery","description":"Searches the strict public campaign index with product, country, lifecycle, location and date filters, returning exact pagination and disclosure-gated facts.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/routes/public-homepage.ts"]},{"id":"public-get-api-public-homepage-campaigns","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/homepage/campaigns","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-homepage-campaigns","title":"Homepage campaign feed","description":"Returns a curated active public campaign feed of up to72 records for an optional country; it is not a paginated full index.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/routes/public-homepage.ts"]},{"id":"public-get-api-public-homepage-awards","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/homepage/awards","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-homepage-awards","title":"Public awards feed","description":"Returns up to200 public voting campaigns in approved, ended or postponed states, ordered by featured status and creation date.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/routes/public-homepage.ts"]},{"id":"public-get-api-public-countries","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/countries","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-countries","title":"Active country catalog","description":"Returns the active admin-managed country catalog and default currencies; this is not a list of enabled payment corridors.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-blog-slug-reactions","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/:slug/reactions","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-blog-slug-reactions","title":"Read article reactions","description":"Counts the supported reactions on a published article and identifies the current visitor’s selections without returning other visitor identities.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-post-api-public-blog-slug-reactions","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/:slug/reactions","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-blog-slug-reactions","title":"Toggle article reaction","description":"Toggles or changes one reaction for the supplied existing visitor or verified community profile on a published article.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-get-api-public-blog-slug-comments","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/:slug/comments","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-blog-slug-comments","title":"Approved article comments","description":"Lists up to500 approved comments on a published article in ascending creation order; private author contact is not returned.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-post-api-public-blog-slug-comments","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/blog/:slug/comments","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-blog-slug-comments","title":"Submit moderated comment","description":"Submits a comment from an existing verified community profile, respecting article comments settings and moderation policy.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/router.ts","server/src/api/routes/public.ts"]},{"id":"public-post-api-public-discounts-validate","product":"public","method":"POST","baseOrigin":"https://api.sparkglim.net","path":"/api/public/discounts/validate","documentation":"https://developer.sparkglim.net/reference/public/public-post-api-public-discounts-validate","title":"Validate campaign discount","description":"Validates an existing campaign discount through the shared database contract; purchase still validates the final price and eligibility.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/routes/public.ts","app/api/discounts/validate/route.ts"]},{"id":"public-get-api-public-qr-ticket-code","product":"public","method":"GET","baseOrigin":"https://api.sparkglim.net","path":"/api/public/qr/ticket/:code","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-qr-ticket-code","title":"Ticket QR image","description":"Returns a branded binary PNG for the supplied ticket credential at a bounded image size; rendering does not grant ticket ownership.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["server/src/api/routes/public.ts","app/api/qr/ticket/[code]/route.ts"]},{"id":"public-get-api-participants-search","product":"public","method":"GET","baseOrigin":"https://sparkglim.net","path":"/api/participants/search","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-participants-search","title":"Public nominee or campaign code lookup","description":"Finds an approved nominee or public voting campaign by code or slug using the current public visibility and active-category boundary.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["app/api/participants/search/route.ts"]},{"id":"public-get-api-public-voting-counts-campaignId","product":"public","method":"GET","baseOrigin":"https://sparkglim.net","path":"/api/public/voting-counts/:campaignId","documentation":"https://developer.sparkglim.net/reference/public/public-get-api-public-voting-counts-campaignId","title":"Visibility-gated public vote counts","description":"Returns completed vote totals only for a publicly visible voting campaign, approved nominees and active categories when counts are explicitly public.","auth":"public","permissions":[],"availability":"implemented","productionAvailability":"unverified","sources":["app/api/public/voting-counts/[campaignId]/route.ts"]}],"excluded":[{"id":"public-get-api-public-donation-summary-campaignId","method":"GET","path":"/api/public/donation-summary/:campaignId","availability":"unverified","reason":"Availability is verified from source, not a live production guarantee. Legacy aggregate lacks the full current public visibility boundary. Not recommended for new integrations."},{"id":"public-get-api-public-vote-counts-campaignId","method":"GET","path":"/api/public/vote-counts/:campaignId","availability":"unverified","reason":"Availability is verified from source, not a live production guarantee. Legacy aggregate lacks the full current public visibility boundary. Not recommended for new integrations."}]}