TicketSpice Transactions and Customers API

Search and view financial transactions (payments, refunds) and the customer records tied to them. Enables reconciliation and reporting against ticket sales processed through Webconnex Payments or a custom processor.

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