openapi: 3.0.3 info: title: Donorbox Campaigns Purchases API description: The Donorbox API provides read-only access to a nonprofit organization's fundraising data - Campaigns, Donations, Plans (recurring donation subscriptions), Donors, Events, Tickets, and Event Ticket Purchases. The API is a paid add-on available on the Pro and Premium Donorbox plans. All requests use HTTP Basic Auth, with your Donorbox organization login email as the username and your API key as the password. Every list endpoint supports `page`/`per_page` pagination and `order` sorting, and most support endpoint-specific filters. There are no documented write (POST/PUT/PATCH/DELETE) operations - donations, donors, and plans are created through the hosted Donorbox checkout flow, not this API. This document was authored by API Evangelist from the official donorbox/donorbox-api GitHub README and wiki, since Donorbox does not publish its own OpenAPI/Swagger file. version: '1.0' contact: name: Donorbox url: https://donorbox.org license: name: Proprietary (API access is a paid add-on) url: https://github.com/donorbox/donorbox-api servers: - url: https://donorbox.org/api/v1 description: Donorbox production API security: - basicAuth: [] tags: - name: Purchases description: Event ticket purchase transactions. paths: /purchases: get: operationId: listPurchases tags: - Purchases summary: List event ticket purchases description: Returns all event ticket purchase transactions for the authenticated organization. Endpoint and response shape confirmed in the official README sample payload. parameters: - name: payment_status in: query description: Filter purchases by payment status. Defaults to `succeeded` if an invalid value is passed. schema: type: string enum: - succeeded - pending - failed - refunded default: succeeded - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Order' responses: '200': description: A list of event ticket purchases. content: application/json: schema: type: array items: $ref: '#/components/schemas/Purchase' '401': $ref: '#/components/responses/Unauthorized' components: parameters: PerPage: name: per_page in: query description: Number of records per page. Default 50, maximum 100 (values above 100 fall back to the default). schema: type: integer default: 50 maximum: 100 Page: name: page in: query description: Page number to return. schema: type: integer default: 1 Order: name: order in: query description: Sort order. schema: type: string enum: - asc - desc default: desc responses: Unauthorized: description: Missing or invalid Basic Auth credentials (organization email / API key). Response shape not published; modeled generically. content: application/json: schema: type: object properties: error: type: string schemas: TicketType: type: object properties: id: type: integer name: type: string fair_market_value: type: number fair_market_value_formatted: type: string tax_deductible_amount: type: number tax_deductible_amount_formatted: type: string tax_amount: type: number tax_amount_formatted: type: string Purchase: type: object properties: id: type: integer currency: type: string status: type: string enum: - succeeded - pending - failed - refunded - paid supporter_id: type: integer amount: type: number amount_formatted: type: string amount_refunded: type: number date: type: string format: date-time tickets_count: type: integer preferences_answer: nullable: true event: type: object properties: id: type: integer name: type: string tickets: type: array items: type: object properties: id: type: integer currency: type: string free_ticket: type: boolean price: type: number price_formatted: type: string ticket_type: $ref: '#/components/schemas/TicketType' securitySchemes: basicAuth: type: http scheme: basic description: Username is the Donorbox organization login email; password is the API key generated under Account > API & Zapier Integration.