TicketSpice Coupons API
Full read-write management of discount coupons - list global coupons or coupons scoped to a form, and create, view, update, and delete individual coupons. One of the few write-capable areas of the Webconnex API.
Full read-write management of discount coupons - list global coupons or coupons scoped to a form, and create, view, update, and delete individual coupons. One of the few write-capable areas of the Webconnex API.
openapi: 3.0.3
info:
title: TicketSpice API (Webconnex v2 Public)
version: '2.0'
description: >-
OpenAPI description of the TicketSpice programmable surface, which is the
shared Webconnex v2 Public REST API (base https://api.webconnex.com/v2/public).
TicketSpice is one of several Webconnex products (alongside RegFox, RedPodium,
and GivingFuel) that share this API; the TicketSpice product is selected with a
product=ticketspice query parameter and requests authenticate with an apiKey
request header. Paths and methods are transcribed from the public Webconnex v2
reference and are real; a provisioned account API key (available on higher-tier
plans) is required to exercise them. Request and response bodies are modeled at
a summary level from the reference JSON envelope and are illustrative where the
full field-level schema is not published.
contact:
name: API Evangelist
email: kin@apievangelist.com
license:
name: Proprietary (Webconnex)
url: https://www.webconnex.com/privacy-policy
servers:
- url: https://api.webconnex.com/v2/public
description: Webconnex v2 Public API (shared across TicketSpice, RegFox, RedPodium, GivingFuel)
security:
- apiKeyAuth: []
tags:
- name: Health
- name: Forms
- name: Orders
- name: Registrants
- name: Tickets
- name: Subscriptions
- name: Transactions
- name: Customers
- name: Coupons
- name: Webhooks
paths:
/ping:
get:
tags: [Health]
summary: Health check
operationId: ping
responses:
'200':
description: API is reachable and the API key is valid.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/forms:
get:
tags: [Forms]
summary: List forms
description: List the ticketing forms (event pages) in the account.
operationId: listForms
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: A page of forms.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/forms/{id}:
get:
tags: [Forms]
summary: View form
operationId: getForm
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single form.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/forms/{formID}/inventory:
get:
tags: [Forms]
summary: View inventory
description: Remaining ticket and product inventory for a form.
operationId: getFormInventory
parameters:
- name: formID
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/product'
responses:
'200':
description: Inventory for the form.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/orders:
get:
tags: [Orders]
summary: Search orders
operationId: searchOrders
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/formId'
- $ref: '#/components/parameters/status'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
- $ref: '#/components/parameters/dateCreatedAfter'
- $ref: '#/components/parameters/dateCreatedBefore'
- $ref: '#/components/parameters/expand'
responses:
'200':
description: A page of orders.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/orders/{id}:
get:
tags: [Orders]
summary: View order
operationId: getOrder
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/expand'
responses:
'200':
description: A single order.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/registrants:
get:
tags: [Registrants]
summary: Search registrants
operationId: searchRegistrants
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/formId'
- $ref: '#/components/parameters/status'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
- $ref: '#/components/parameters/dateCreatedAfter'
- $ref: '#/components/parameters/dateCreatedBefore'
responses:
'200':
description: A page of registrants.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/registrants/{id}:
get:
tags: [Registrants]
summary: View registrant
operationId: getRegistrant
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single registrant.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/registrant/check-in:
post:
tags: [Registrants]
summary: Check-in registrant
operationId: checkInRegistrant
parameters:
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckInRequest'
responses:
'200':
description: Registrant checked in.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/registrant/check-out:
post:
tags: [Registrants]
summary: Check-out registrant
operationId: checkOutRegistrant
parameters:
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CheckInRequest'
responses:
'200':
description: Registrant checked out.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/tickets:
get:
tags: [Tickets]
summary: Search tickets
operationId: searchTickets
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/formId'
- $ref: '#/components/parameters/status'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: A page of tickets.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/tickets/{id}:
get:
tags: [Tickets]
summary: View ticket
operationId: getTicket
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single ticket.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/subscriptions:
get:
tags: [Subscriptions]
summary: Search subscriptions
operationId: searchSubscriptions
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: A page of subscriptions.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/subscriptions/{id}:
get:
tags: [Subscriptions]
summary: View subscription
operationId: getSubscription
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single subscription.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/transactions:
get:
tags: [Transactions]
summary: Search transactions
operationId: searchTransactions
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/formId'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
- $ref: '#/components/parameters/dateCreatedAfter'
- $ref: '#/components/parameters/dateCreatedBefore'
responses:
'200':
description: A page of transactions.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/transactions/{id}:
get:
tags: [Transactions]
summary: View transaction
operationId: getTransaction
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/search/customers:
get:
tags: [Customers]
summary: Search customers
operationId: searchCustomers
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: A page of customers.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/search/customers/{id}:
get:
tags: [Customers]
summary: View customer
operationId: getCustomer
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/coupons/global:
get:
tags: [Coupons]
summary: List global coupons
operationId: listGlobalCoupons
parameters:
- $ref: '#/components/parameters/product'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: A page of global coupons.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/coupons/form/{formID}:
get:
tags: [Coupons]
summary: List form coupons
operationId: listFormCoupons
parameters:
- name: formID
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/product'
responses:
'200':
description: A page of coupons scoped to the form.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/coupons:
post:
tags: [Coupons]
summary: Create coupon
operationId: createCoupon
parameters:
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Coupon'
responses:
'200':
description: Coupon created.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/coupons/{couponID}:
get:
tags: [Coupons]
summary: View coupon
operationId: getCoupon
parameters:
- $ref: '#/components/parameters/couponID'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single coupon.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
put:
tags: [Coupons]
summary: Update coupon
operationId: updateCoupon
parameters:
- $ref: '#/components/parameters/couponID'
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Coupon'
responses:
'200':
description: Coupon updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
delete:
tags: [Coupons]
summary: Delete coupon
operationId: deleteCoupon
parameters:
- $ref: '#/components/parameters/couponID'
- $ref: '#/components/parameters/product'
responses:
'200':
description: Coupon deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/webhooks:
get:
tags: [Webhooks]
summary: List webhooks
operationId: listWebhooks
parameters:
- $ref: '#/components/parameters/product'
responses:
'200':
description: A page of webhooks.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
post:
tags: [Webhooks]
summary: Create webhook
operationId: createWebhook
parameters:
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
responses:
'200':
description: Webhook created.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/webhooks/{id}:
get:
tags: [Webhooks]
summary: View webhook
operationId: getWebhook
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single webhook.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
put:
tags: [Webhooks]
summary: Update webhook
operationId: updateWebhook
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
responses:
'200':
description: Webhook updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
delete:
tags: [Webhooks]
summary: Delete webhook
operationId: deleteWebhook
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: Webhook deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/webhooks/{id}/logs:
get:
tags: [Webhooks]
summary: View webhook logs
operationId: listWebhookLogs
parameters:
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A page of webhook delivery logs.
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope'
/webhooks/{webhookID}/logs/{id}:
get:
tags: [Webhooks]
summary: View webhook log
operationId: getWebhookLog
parameters:
- name: webhookID
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/pathId'
- $ref: '#/components/parameters/product'
responses:
'200':
description: A single webhook delivery log.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
/webhooks/{webhookID}/resend/{logID}:
post:
tags: [Webhooks]
summary: Resend webhook
operationId: resendWebhook
parameters:
- name: webhookID
in: path
required: true
schema:
type: string
- name: logID
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/product'
responses:
'200':
description: Webhook delivery re-sent.
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
components:
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: apiKey
description: Account API key generated from the TicketSpice/Webconnex dashboard.
parameters:
product:
name: product
in: query
required: true
description: Webconnex product to scope the request to. Use ticketspice for TicketSpice.
schema:
type: string
default: ticketspice
example: ticketspice
pathId:
name: id
in: path
required: true
schema:
type: string
couponID:
name: couponID
in: path
required: true
schema:
type: string
formId:
name: formId
in: query
required: false
description: Filter results to a single form (event page).
schema:
type: string
status:
name: status
in: query
required: false
schema:
type: string
limit:
name: limit
in: query
required: false
description: Page size. Default 50.
schema:
type: integer
default: 50
startingAfter:
name: startingAfter
in: query
required: false
description: Cursor for pagination - the id to start after.
schema:
type: string
expand:
name: expand
in: query
required: false
description: Comma-separated related objects to expand (registrants, tickets, subscription, inventory).
schema:
type: string
dateCreatedAfter:
name: dateCreatedAfter
in: query
required: false
schema:
type: string
format: date-time
dateCreatedBefore:
name: dateCreatedBefore
in: query
required: false
schema:
type: string
format: date-time
schemas:
Envelope:
type: object
description: Standard Webconnex response envelope wrapping a single object.
properties:
responseCode:
type: integer
example: 200
data:
type: object
ListEnvelope:
type: object
description: Standard Webconnex response envelope wrapping a page of objects.
properties:
responseCode:
type: integer
example: 200
data:
type: array
items:
type: object
totalResults:
type: integer
hasMore:
type: boolean
CheckInRequest:
type: object
description: Illustrative body for registrant check-in/check-out.
properties:
registrantId:
type: string
Coupon:
type: object
description: Illustrative coupon object (field set summarized from the reference).
properties:
code:
type: string
formId:
type: string
discountType:
type: string
enum: [percentage, amount]
discountValue:
type: number
active:
type: boolean
Webhook:
type: object
description: Illustrative webhook subscription object.
properties:
name:
type: string
url:
type: string
format: uri
event:
type: string
active:
type: boolean