openapi: 3.0.1 info: title: 'Brushfire API: Version 2025-07-22 AccessCodes Exchanges API' version: '2025-07-22' description: 'The Brushfire REST API provides programmatic access to the Brushfire event ticketing and registration platform. It covers events, ticket types, sections and seats, attendees, orders, the shopping cart and checkout flow, groups, sessions and check-in, promotions and access codes, payment profiles, and webhooks (Hooks). Authenticate by sending your App Key (requested at https://developer.brushfire.com/key) in the Authorization header. The API is date-versioned: send the desired version in the api-version request header (for example, 2025-07-22). This document is the live specification published at api.brushfire.com/swagger.' contact: name: Brushfire Developers url: https://developer.brushfire.com servers: - url: https://api.brushfire.com description: Brushfire API (date-versioned via the api-version header) tags: - name: Exchanges paths: /exchanges: post: tags: - Exchanges summary: Create an exchange requestBody: description: Exchange create body content: application/json: schema: $ref: '#/components/schemas/ExchangeInput' text/json: schema: $ref: '#/components/schemas/ExchangeInput' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExchangeInput' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExchangeOutput' text/json: schema: $ref: '#/components/schemas/ExchangeOutput' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiModelError' text/json: schema: $ref: '#/components/schemas/ApiModelError' security: - apiKey: [] /exchanges/{exchangeId}: delete: tags: - Exchanges summary: Deletes an exchange based on the provided exchange ID and client key. parameters: - name: exchangeId in: path description: A valid ExchangeId required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: boolean text/json: schema: type: boolean '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiModelError' text/json: schema: $ref: '#/components/schemas/ApiModelError' security: - apiKey: [] get: tags: - Exchanges summary: Get full details of an exchange parameters: - name: exchangeId in: path description: A valid ExchangeId required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExchangeOutput' text/json: schema: $ref: '#/components/schemas/ExchangeOutput' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiModelError' text/json: schema: $ref: '#/components/schemas/ApiModelError' security: - apiKey: [] put: tags: - Exchanges summary: Update an exchange parameters: - name: exchangeId in: path description: A valid ExchangeId required: true schema: type: string requestBody: description: Exchange update body content: application/json: schema: $ref: '#/components/schemas/ExchangeInput' text/json: schema: $ref: '#/components/schemas/ExchangeInput' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExchangeInput' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExchangeOutput' text/json: schema: $ref: '#/components/schemas/ExchangeOutput' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiModelError' text/json: schema: $ref: '#/components/schemas/ApiModelError' security: - apiKey: [] components: schemas: ExchangeOutput: type: object properties: ExchangeId: type: string format: uuid ExchangeMethod: $ref: '#/components/schemas/ExchangeMethod' ClientKey: type: string nullable: true ExchangeAttendees: type: array items: $ref: '#/components/schemas/ExchangeAttendeeOutput' nullable: true LastModifiedAt: type: string format: date-time SourceEventId: type: string format: uuid IsExchangeRefundAllowed: type: boolean ExchangeAttendeesTotal: type: number format: double readOnly: true additionalProperties: false StringStringKeyValuePair: type: object properties: Key: type: string nullable: true Value: type: string nullable: true additionalProperties: false ApiModelError: type: object properties: Errors: type: array items: $ref: '#/components/schemas/StringStringKeyValuePair' nullable: true Message: type: string nullable: true Data: nullable: true StackTrace: type: string nullable: true additionalProperties: false ExchangeAttendeeOutput: type: object properties: AttendeeId: type: string format: uuid AttendeeNumber: type: integer format: int64 EventId: type: string format: uuid AttendeeTypeId: type: string format: uuid TypeName: type: string nullable: true Amount: type: number format: double Addons: type: number format: double Discounts: type: number format: double Fees: type: number format: double Taxes: type: number format: double Deliveries: type: number description: Deprecated. Delivery has been folded into API.Models.ExchangeAttendeeOutput.Fees; this property is kept for backwards compatibility but should be ignored. format: double Status: type: string nullable: true IsCompleted: type: boolean ExternalId: type: string nullable: true ExternalDescription: type: string nullable: true IsAddon: type: boolean Total: type: number format: double readOnly: true additionalProperties: false ExchangeInput: required: - AccessKey - AttendeeNumbers - ClientKey - ExchangeMethod - SourceEventId type: object properties: ClientKey: minLength: 1 type: string AttendeeNumbers: type: array items: type: integer format: int64 ExchangeMethod: $ref: '#/components/schemas/ExchangeMethod' AccessKey: minLength: 1 type: string SourceEventId: type: string format: uuid additionalProperties: false ExchangeMethod: enum: - SameEvent - NewEvent type: string securitySchemes: apiKey: type: apiKey description: The App Key you received from https://developer.brushfire.com/key name: Authorization in: header