openapi: 3.0.3 info: title: Tito Admin Account Tickets API description: 'The Tito Admin API is a REST/JSON interface for secure programmatic access to Tito, an event registration and ticketing platform. It is used to manage accounts, events, releases (ticket types), tickets, registrations, discount codes, activities, check-in lists, refunds, and webhook endpoints. Resources are addressed by their account_slug and event_slug. Authentication uses a secret API token generated at https://id.tito.io (api-access-tokens), passed in the Authorization header as `Token token=YOUR-API-TOKEN`, together with an `Accept: application/json` header. Tokens carry a live or test mode. NOTE ON FIDELITY: All paths, HTTP methods, path parameters, query filters, and the authentication scheme in this document are grounded in Tito''s official Admin API v3.0 documentation (https://ti.to/docs/api/admin/3.0). Tito does not publish a machine-readable OpenAPI/JSON Schema definition, so the request and response BODY schemas here are modeled from the documented attribute tables and example payloads and are intentionally loosely typed (additionalProperties: true). Treat field-level schemas as a reasonable model, not an exhaustive contract.' version: '3.0' contact: name: Tito (Team Tito) url: https://ti.to license: name: Proprietary url: https://ti.to/terms servers: - url: https://api.tito.io/v3 description: Tito Admin API (production) security: - titoToken: [] tags: - name: Tickets description: Individual tickets held by attendees. paths: /{account_slug}/{event_slug}/tickets: parameters: - $ref: '#/components/parameters/AccountSlug' - $ref: '#/components/parameters/EventSlug' get: operationId: listTickets tags: - Tickets summary: Get all tickets description: Lists tickets for an event. Supports filtering via search parameters - e.g. search[states][], search[types][], search[release_ids][], search[activity_ids][], search[created_at][gt], search[updated_at][gt], search[sort], search[direction] - and free-text search via q. parameters: - name: q in: query required: false description: Free-text search across ticket holders. schema: type: string responses: '200': $ref: '#/components/responses/Collection' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createTicket tags: - Tickets summary: Create a ticket requestBody: $ref: '#/components/requestBodies/GenericBody' responses: '201': $ref: '#/components/responses/Resource' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/ValidationError' /{account_slug}/{event_slug}/tickets/{ticket_slug}: parameters: - $ref: '#/components/parameters/AccountSlug' - $ref: '#/components/parameters/EventSlug' - $ref: '#/components/parameters/TicketSlug' get: operationId: getTicket tags: - Tickets summary: Get a ticket responses: '200': $ref: '#/components/responses/Resource' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateTicket tags: - Tickets summary: Update a ticket requestBody: $ref: '#/components/requestBodies/GenericBody' responses: '200': $ref: '#/components/responses/Resource' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /{account_slug}/{event_slug}/tickets/{ticket_slug}/reassignments: parameters: - $ref: '#/components/parameters/AccountSlug' - $ref: '#/components/parameters/EventSlug' - $ref: '#/components/parameters/TicketSlug' post: operationId: reassignTicket tags: - Tickets summary: Reassign a ticket description: Reassigns a ticket to a different attendee. requestBody: $ref: '#/components/requestBodies/GenericBody' responses: '201': $ref: '#/components/responses/Resource' '401': $ref: '#/components/responses/Unauthorized' /{account_slug}/{event_slug}/tickets/{ticket_slug}/void: parameters: - $ref: '#/components/parameters/AccountSlug' - $ref: '#/components/parameters/EventSlug' - $ref: '#/components/parameters/TicketSlug' post: operationId: voidTicket tags: - Tickets summary: Void a ticket responses: '200': $ref: '#/components/responses/Resource' '401': $ref: '#/components/responses/Unauthorized' components: responses: Resource: description: A single resource. Body schema is modeled and loosely typed. content: application/json: schema: $ref: '#/components/schemas/Generic' Collection: description: A paginated collection. Pagination metadata is returned in a meta object (current_page, next_page, prev_page, total_pages, total_count, per_page, overall_total). Use page[number] and page[size] query parameters (default page size 100, maximum 1000). content: application/json: schema: type: object properties: meta: $ref: '#/components/schemas/PaginationMeta' additionalProperties: true ValidationError: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid API token. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object properties: error: type: string errors: type: array items: type: string additionalProperties: true PaginationMeta: type: object properties: current_page: type: integer next_page: type: integer nullable: true prev_page: type: integer nullable: true total_pages: type: integer total_count: type: integer per_page: type: integer overall_total: type: integer Generic: type: object description: Loosely-typed object modeled from Tito's documented attribute tables and example payloads. Field-level structure is not exhaustively specified. additionalProperties: true parameters: AccountSlug: name: account_slug in: path required: true description: The slug attribute of an Account. schema: type: string EventSlug: name: event_slug in: path required: true description: The slug attribute of an Event. schema: type: string TicketSlug: name: ticket_slug in: path required: true description: The slug attribute of a Ticket. schema: type: string requestBodies: GenericBody: required: true content: application/json: schema: $ref: '#/components/schemas/Generic' securitySchemes: titoToken: type: apiKey in: header name: Authorization description: 'Secret API token generated at https://id.tito.io/api-access-tokens, sent as `Authorization: Token token=YOUR-API-TOKEN`. Requests must also send `Accept: application/json`. Tokens carry a live or test mode.'