TicketSpice Orders and Registrants API

Search and view ticket orders and the individual registrants (ticket buyers/attendees) within them, and check registrants in or out at the door. Supports cursor pagination via startingAfter, date-range filters, and expand of registrants, tickets, and inventory.

OpenAPI Specification

ticketspice-openapi.yml Raw ↑
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