components:
    schemas:
        event.CreateEventRequest:
            properties:
                description:
                    additionalProperties:
                        type: string
                    type: object
                discount_label:
                    additionalProperties:
                        type: string
                    type: object
                downloadable_from:
                    type: string
                end_at:
                    type: string
                is_active:
                    type: boolean
                is_downloadable:
                    type: boolean
                is_order_invoice_enabled:
                    type: boolean
                is_personalization_enabled:
                    type: boolean
                is_visible:
                    type: boolean
                languages:
                    items:
                        properties:
                            code:
                                type: string
                        type: object
                    type: array
                    uniqueItems: false
                minutes_to_order:
                    type: integer
                name:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
                short_id:
                    type: string
                start_at:
                    type: string
                timezone:
                    properties:
                        country_code:
                            type: string
                        name:
                            type: string
                    type: object
                type:
                    enum:
                        - GENERAL_ADMISSION
                        - SEATED
                    type: string
                venue:
                    properties:
                        id:
                            type: string
                    type: object
            type: object
        handler.channelListItem:
            properties:
                created_at:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
                slug:
                    type: string
                url:
                    type: string
                uuid:
                    type: string
            type: object
        handler.completeOrderRequest:
            properties:
                delivery_method:
                    enum:
                        - NONE
                        - EMAIL
                    type: string
                mark_as_scanned:
                    type: boolean
                payment_method:
                    enum:
                        - FREE
                        - EXTERNAL_PAYMENT
                    type: string
            type: object
        handler.createDiscountRequest:
            properties:
                currency_id:
                    type: string
                discount_campaign_products:
                    description: Only for PRODUCT campaigns.
                    items:
                        $ref: '#/components/schemas/handler.createDiscountRequestProduct'
                    type: array
                    uniqueItems: false
                discount_code:
                    description: Only for ORDER campaigns.
                    type: string
                discount_type:
                    description: ORDER (discount on the whole order) or PRODUCT (discount on specific products)
                    type: string
                max_usage:
                    type: integer
                name:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
                rate:
                    type: number
                rate_type:
                    type: string
            type: object
        handler.createDiscountRequestProduct:
            properties:
                currency_id:
                    type: string
                max_usage:
                    type: integer
                product_uuid:
                    type: string
                rate:
                    type: number
                rate_type:
                    type: string
            type: object
        handler.createDiscountResponse:
            properties:
                currency_id:
                    type: string
                discount_campaign_products:
                    description: Only present for PRODUCT campaigns.
                    items:
                        $ref: '#/components/schemas/handler.createDiscountResponseProduct'
                    type: array
                    uniqueItems: false
                discount_code:
                    description: |-
                        The code customers enter at checkout. For ORDER campaigns this is the code you
                        supplied; for PRODUCT campaigns it is generated for you.
                    type: string
                discount_type:
                    type: string
                id:
                    type: string
                max_usage:
                    type: integer
                name:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
                rate:
                    description: Only present for ORDER campaigns.
                    type: number
                rate_type:
                    type: string
            type: object
        handler.createDiscountResponseProduct:
            properties:
                currency_id:
                    type: string
                id:
                    type: integer
                max_usage:
                    type: integer
                product_uuid:
                    type: string
                rate:
                    type: number
                rate_type:
                    type: string
            type: object
        handler.createMarketingTrackerRequest:
            properties:
                channel:
                    type: string
                name:
                    type: string
                viewport_uuid:
                    type: string
            type: object
        handler.createMarketingTrackerResponse:
            properties:
                channel:
                    type: string
                clicks:
                    type: integer
                created_at:
                    type: string
                deliveries:
                    type: integer
                event_uuid:
                    type: string
                id:
                    type: string
                name:
                    type: string
                orders:
                    type: integer
                products:
                    type: integer
                viewport_uuid:
                    type: string
            type: object
        handler.createOrderCustomerData:
            properties:
                email:
                    type: string
                first_name:
                    type: string
                language:
                    description: Language the customer prefers to be addressed in, as an ISO 639-1 code (for example EN or NL)
                    type: string
                last_name:
                    type: string
                mobile:
                    type: string
            type: object
        handler.createOrderRequest:
            properties:
                complete:
                    type: boolean
                customer_data:
                    $ref: '#/components/schemas/handler.createOrderCustomerData'
                delivery_method:
                    enum:
                        - NONE
                        - EMAIL
                    type: string
                external_batch_id:
                    type: string
                payment_method:
                    enum:
                        - FREE
                        - EXTERNAL_PAYMENT
                    type: string
                tickets:
                    items:
                        $ref: '#/components/schemas/handler.createOrderTicket'
                    type: array
                    uniqueItems: false
            type: object
        handler.createOrderTicket:
            properties:
                amount:
                    type: integer
                product_id:
                    type: string
            type: object
        handler.customerProductListItem:
            properties:
                event_id:
                    type: string
                id:
                    type: string
                order_id:
                    type: string
                product_id:
                    type: string
                status:
                    type: string
            type: object
        handler.eventLanguage:
            properties:
                code:
                    type: string
                name:
                    type: string
            type: object
        handler.eventResponse:
            properties:
                downloadable_from:
                    type: string
                end_at:
                    type: string
                id:
                    type: string
                is_downloadable:
                    type: boolean
                is_order_invoice_enabled:
                    type: boolean
                languages:
                    items:
                        $ref: '#/components/schemas/handler.eventLanguage'
                    type: array
                    uniqueItems: false
                name:
                    type: string
                start_at:
                    type: string
                timezone:
                    properties:
                        country_code:
                            type: string
                        name:
                            type: string
                    type: object
                venue:
                    $ref: '#/components/schemas/handler.eventVenue'
            type: object
        handler.eventVenue:
            properties:
                address:
                    type: string
                city:
                    type: string
                country_code:
                    type: string
                id:
                    type: string
                name:
                    type: string
                state:
                    type: string
                zipcode:
                    type: string
            type: object
        handler.listResponse-handler_channelListItem:
            properties:
                items:
                    items:
                        $ref: '#/components/schemas/handler.channelListItem'
                    type: array
                    uniqueItems: false
                links:
                    properties:
                        first:
                            type: string
                        last:
                            type: string
                        next:
                            type: string
                        prev:
                            type: string
                        self:
                            type: string
                    type: object
                page_size:
                    type: integer
                total_items:
                    type: integer
            type: object
        handler.listResponse-handler_customerProductListItem:
            properties:
                items:
                    items:
                        $ref: '#/components/schemas/handler.customerProductListItem'
                    type: array
                    uniqueItems: false
                links:
                    properties:
                        first:
                            type: string
                        last:
                            type: string
                        next:
                            type: string
                        prev:
                            type: string
                        self:
                            type: string
                    type: object
                page_size:
                    type: integer
                total_items:
                    type: integer
            type: object
        handler.listResponse-handler_eventResponse:
            properties:
                items:
                    items:
                        $ref: '#/components/schemas/handler.eventResponse'
                    type: array
                    uniqueItems: false
                links:
                    properties:
                        first:
                            type: string
                        last:
                            type: string
                        next:
                            type: string
                        prev:
                            type: string
                        self:
                            type: string
                    type: object
                page_size:
                    type: integer
                total_items:
                    type: integer
            type: object
        handler.listResponse-handler_orderListItem:
            properties:
                items:
                    items:
                        $ref: '#/components/schemas/handler.orderListItem'
                    type: array
                    uniqueItems: false
                links:
                    properties:
                        first:
                            type: string
                        last:
                            type: string
                        next:
                            type: string
                        prev:
                            type: string
                        self:
                            type: string
                    type: object
                page_size:
                    type: integer
                total_items:
                    type: integer
            type: object
        handler.listResponse-handler_productListItem:
            properties:
                items:
                    items:
                        $ref: '#/components/schemas/handler.productListItem'
                    type: array
                    uniqueItems: false
                links:
                    properties:
                        first:
                            type: string
                        last:
                            type: string
                        next:
                            type: string
                        prev:
                            type: string
                        self:
                            type: string
                    type: object
                page_size:
                    type: integer
                total_items:
                    type: integer
            type: object
        handler.marketingTrackerDetail:
            properties:
                channel:
                    type: string
                clicks:
                    type: integer
                conversion_rate:
                    type: number
                link:
                    type: string
                mails_sent:
                    type: integer
                name:
                    type: string
                orders:
                    type: integer
                tickets_sold:
                    type: integer
                uuid:
                    type: string
            type: object
        handler.orderListItem:
            properties:
                batch_id:
                    type: string
                external_batch_id:
                    type: string
                status:
                    type: string
                uuid:
                    type: string
            type: object
        handler.paymentMethodResponse:
            properties:
                currency_id:
                    type: string
                image_uri:
                    type: string
                name:
                    type: string
                uuid:
                    type: string
            type: object
        handler.productListItem:
            properties:
                name:
                    additionalProperties:
                        type: string
                    type: object
                price:
                    type: number
                uuid:
                    type: string
            type: object
        handler.productResponse:
            properties:
                additional_information:
                    additionalProperties:
                        type: string
                    type: object
                capacity:
                    type: integer
                description:
                    additionalProperties:
                        type: string
                    type: object
                external_id_1:
                    type: string
                external_id_2:
                    type: string
                external_id_3:
                    type: string
                has_unlimited_stock:
                    type: boolean
                is_personalizable:
                    type: boolean
                is_visible:
                    type: boolean
                name:
                    additionalProperties:
                        type: string
                    type: object
                price:
                    type: number
                product_type:
                    type: string
                sales_from:
                    type: string
                sales_until:
                    type: string
                stock:
                    type: integer
                subtitle:
                    additionalProperties:
                        type: string
                    type: object
                ticket_status_type_id:
                    type: string
                uuid:
                    type: string
                valid_from:
                    type: string
                valid_until:
                    type: string
            type: object
        handler.updateDiscountRequest:
            properties:
                max_usage:
                    type: integer
                name:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
            type: object
        handler.viewCustomerProductCustomerData:
            properties:
                email:
                    type: string
                first_name:
                    type: string
                last_name:
                    type: string
                mobile:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewCustomerProductEvent:
            properties:
                name:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewCustomerProductProduct:
            properties:
                external_id_1:
                    type: string
                external_id_2:
                    type: string
                external_id_3:
                    type: string
                is_checkin_allowed:
                    type: boolean
                name:
                    additionalProperties:
                        type: string
                    type: object
                price_incl_vat:
                    type: number
                product_type:
                    type: string
                sales_from:
                    type: string
                sales_until:
                    type: string
                uuid:
                    type: string
                valid_from:
                    type: string
                valid_until:
                    type: string
                validation_max_checkins:
                    type: integer
            type: object
        handler.viewCustomerProductResponse:
            properties:
                barcode_id:
                    type: string
                canceled_at:
                    type: string
                created_at:
                    type: string
                currency_id:
                    type: string
                customer_data:
                    $ref: '#/components/schemas/handler.viewCustomerProductCustomerData'
                event:
                    $ref: '#/components/schemas/handler.viewCustomerProductEvent'
                expire_at:
                    type: string
                external_barcode_id:
                    type: string
                last_scanned_at:
                    type: string
                order_id:
                    type: string
                personalized_at:
                    type: string
                price_incl_vat:
                    type: number
                price_with_discount_incl_vat:
                    type: number
                product:
                    $ref: '#/components/schemas/handler.viewCustomerProductProduct'
                scan_count:
                    type: integer
                seat:
                    $ref: '#/components/schemas/handler.viewCustomerProductSeat'
                status:
                    type: string
                tracking_parameters:
                    items:
                        $ref: '#/components/schemas/handler.viewCustomerProductTrackingParameter'
                    type: array
                    uniqueItems: false
                used_access_key_id:
                    type: string
                used_discount_code_external_id:
                    type: string
                used_discount_code_id:
                    type: string
                uuid:
                    type: string
                venue:
                    $ref: '#/components/schemas/handler.viewCustomerProductVenue'
            type: object
        handler.viewCustomerProductSeat:
            properties:
                entrance:
                    type: string
                primary_label:
                    type: string
                primary_type:
                    type: string
                seat_object_id:
                    type: string
                secondary_label:
                    type: string
                secondary_type:
                    type: string
                section:
                    type: string
            type: object
        handler.viewCustomerProductTrackingParameter:
            properties:
                name:
                    type: string
                value:
                    type: string
            type: object
        handler.viewCustomerProductVenue:
            properties:
                name:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewEventResponse:
            properties:
                created_at:
                    type: string
                description:
                    additionalProperties:
                        type: string
                    type: object
                discount_label:
                    additionalProperties:
                        type: string
                    type: object
                downloadable_from:
                    type: string
                end_at:
                    type: string
                id:
                    type: string
                is_active:
                    type: boolean
                is_downloadable:
                    type: boolean
                is_order_invoice_enabled:
                    type: boolean
                is_personalization_enabled:
                    type: boolean
                is_visible:
                    type: boolean
                languages:
                    items:
                        $ref: '#/components/schemas/handler.eventLanguage'
                    type: array
                    uniqueItems: false
                minutes_to_order:
                    type: integer
                name:
                    type: string
                online_from:
                    type: string
                online_till:
                    type: string
                short_id:
                    type: string
                start_at:
                    type: string
                timezone:
                    properties:
                        country_code:
                            type: string
                        name:
                            type: string
                    type: object
                type:
                    type: string
                updated_at:
                    type: string
                venue:
                    $ref: '#/components/schemas/handler.eventVenue'
            type: object
        handler.viewOrderConsent:
            properties:
                is_accepted:
                    type: boolean
                name:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewOrderCustomerData:
            properties:
                email:
                    type: string
                first_name:
                    type: string
                last_name:
                    type: string
                mobile:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewOrderResponse:
            properties:
                batch_id:
                    type: string
                canceled_at:
                    type: string
                completed_at:
                    type: string
                consents:
                    items:
                        $ref: '#/components/schemas/handler.viewOrderConsent'
                    type: array
                    uniqueItems: false
                currency_id:
                    type: string
                customer_data:
                    $ref: '#/components/schemas/handler.viewOrderCustomerData'
                download_url:
                    type: string
                external_batch_id:
                    type: string
                is_guest_list_order:
                    type: boolean
                payment_method:
                    type: string
                personalized_at:
                    type: string
                refunded_at:
                    type: string
                requested_language_id:
                    type: string
                status:
                    type: string
                tickets:
                    items:
                        $ref: '#/components/schemas/handler.viewOrderTicket'
                    type: array
                    uniqueItems: false
                total_balance:
                    type: number
                uuid:
                    type: string
            type: object
        handler.viewOrderTicket:
            properties:
                amount:
                    type: integer
                cancellations:
                    type: integer
                name:
                    additionalProperties:
                        type: string
                    type: object
                product_price_incl_vat:
                    type: number
                product_type:
                    type: string
                uuid:
                    type: string
            type: object
        handler.viewportMarketingTrackersResponse:
            properties:
                channel_uuid:
                    type: string
                conversion_rate:
                    type: number
                marketing_trackers:
                    items:
                        $ref: '#/components/schemas/handler.marketingTrackerDetail'
                    type: array
                    uniqueItems: false
                orders:
                    type: integer
                tickets_sold:
                    type: integer
                total_clicks:
                    type: integer
                uri:
                    type: string
            type: object
        handler.webhookMessagePayload:
            properties:
                customer_product_id:
                    description: UUID of the customer product. Present only when entity == "customer_product".
                    example: f23c8ad2-9b5b-4f7e-9a55-7c5c4c8b71d2
                    type: string
                entity:
                    description: 'Resource the message is about. One of: order, customer_product.'
                    example: order
                    type: string
                event_id:
                    description: UUID of the ticketing event the resource belongs to.
                    example: 3e2af7d0-7c1f-4d40-9b62-2fcb6e0d2c8a
                    type: string
                order_id:
                    description: UUID of the order the resource belongs to.
                    example: a76d9c1c-1bd6-4f6b-8a3e-5a9d9c8a1b54
                    type: string
            type: object
        rest.HttpError:
            properties:
                error_code:
                    type: string
                error_msg:
                    type: string
            type: object
    securitySchemes:
        SystemTokenAuth:
            description: Send your organisation's system token in this header.
            in: header
            name: X-CM-SSO-ACCOUNTGUID
            type: apiKey
externalDocs:
    description: ""
    url: ""
info:
    contact:
        email: ticketing@cm.com
        name: CM.com Ticketing
        url: https://www.cm.com
    description: |-
        Integrate your own systems with CM.com Ticketing. Use this API to manage your events, read products, channels and payment methods, create and complete orders, look up the tickets issued to your customers, and set up discount campaigns and marketing trackers.

        **Authentication.** Every request must carry your system token in the `X-CM-SSO-ACCOUNTGUID` header. A request with a missing or unknown token is answered with `401`; a token that is not allowed to perform the request is answered with `403`. You only ever see and change data that belongs to your own organisation.

        **Rate limiting.** Each organisation may send up to 120 requests per minute, with short bursts of up to 30 requests. Requests over the limit are answered with `429` and the error code `rate_limit_exceeded`; wait a moment and retry.

        **Pagination.** List endpoints accept `skip` and `take` (default `take` is 100) and return `items`, `total_items`, `page_size` and `links` (`self`, `first`, `prev`, `next`, `last`) so you can walk through the results.

        **Errors.** Errors from the API itself are returned as JSON with a machine-readable `error_code` and a human-readable `error_msg`; switch on `error_code` in your code, as `error_msg` may change. (Authentication failures, `401` and `403`, are returned as plain text.)

        **Webhooks.** Register webhook endpoints, and choose which message types they receive, in the CM.com Ticketing dashboard. Messages are sent as a JSON `POST` with the message type in the `X-Message-Type` header, and identify the resource that changed; fetch its current state from this API. Respond with `2xx` within 10 seconds. Failed deliveries are retried, so the same message may arrive more than once.
    license:
        name: Proprietary
        url: https://www.cm.com
    termsOfService: https://www.cm.com/terms-of-service/
    title: External Ticketing API
    version: "0.1"
openapi: 3.1.0
paths:
    /customer-products:
        get:
            description: Returns all customer products (the individual tickets and other products issued to customers) across all of your events. Accepts the same filters as the event-level list.
            operationId: ListOrganisationCustomerProducts
            parameters:
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Only return customer products of this product type
                  in: query
                  name: product_type
                  schema:
                    type: string
                - description: Only return customer products with this status
                  in: query
                  name: status
                  schema:
                    type: string
                - description: Only return customer products of this product (UUID). Repeat the parameter to include several products
                  in: query
                  name: product_id
                  schema:
                    items:
                        type: string
                    type: array
                - description: Only return customer products whose order was completed at or after this time (RFC 3339)
                  in: query
                  name: issued_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was completed at or before this time (RFC 3339)
                  in: query
                  name: issued_at_to
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or after this time (RFC 3339)
                  in: query
                  name: refunded_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or before this time (RFC 3339)
                  in: query
                  name: refunded_at_to
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_customerProductListItem'
                    description: OK
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List customer products for the organisation
            tags:
                - Customer products
    /events/:
        get:
            description: Returns your organisation's active events.
            operationId: ListEvents
            parameters:
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_eventResponse'
                    description: OK
                "403":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: Your token does not have permission to list events"That
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List events
            tags:
                - Events
        post:
            description: 'Creates a new event. `description` and `discount_label` are objects keyed by language code (for example `{"en": "...", "nl": "..."}`); provide them for the languages you list in `languages`.'
            operationId: CreateEvent
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/event.CreateEventRequest'
                            description: Event payload
                            summary: request
                description: Event payload
                required: true
            responses:
                "201":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewEventResponse'
                    description: Created
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error / timezone_not_found / venue_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Create event
            tags:
                - Events
    /events/{event_id}:
        delete:
            description: 'Deactivates an event: it is not removed, but `is_active` becomes `false`. Calling this on an event that is already inactive also returns `204`.'
            operationId: DeleteEvent
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            responses:
                "204":
                    description: Event deactivated
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Delete event
            tags:
                - Events
        get:
            description: Returns the details of one event, including its description and discount label in every language they are available in.
            operationId: ViewEvent
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewEventResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: View event
            tags:
                - Events
        put:
            description: 'Replaces all editable fields of an event. This is a full replacement, not a partial update: send the complete event as you want it to be stored. Fields you leave out or set to `null`, and arrays you send empty, are cleared.'
            operationId: EditEvent
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/event.CreateEventRequest'
                            description: Event payload
                            summary: request
                description: Event payload
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewEventResponse'
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error / timezone_not_found / venue_not_found
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Edit event
            tags:
                - Events
    /events/{event_id}/channels:
        get:
            description: Returns the active sales channels of an event. Each channel has a public shop `url` that you can link your customers to.
            operationId: ListChannels
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Field to sort by
                  in: query
                  name: sort
                  schema:
                    enum:
                        - created_at
                        - slug
                    type: string
                - description: Sort direction
                  in: query
                  name: order
                  schema:
                    enum:
                        - asc
                        - desc
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_channelListItem'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List channels
            tags:
                - Channels
    /events/{event_id}/customer-products:
        get:
            description: Returns all customer products (the individual tickets and other products issued to customers) of one event.
            operationId: ListEventCustomerProducts
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Only return customer products of this product type
                  in: query
                  name: product_type
                  schema:
                    type: string
                - description: Only return customer products with this status
                  in: query
                  name: status
                  schema:
                    type: string
                - description: Only return customer products of this product (UUID). Repeat the parameter to include several products
                  in: query
                  name: product_id
                  schema:
                    items:
                        type: string
                    type: array
                - description: Only return customer products whose order was completed at or after this time (RFC 3339)
                  in: query
                  name: issued_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was completed at or before this time (RFC 3339)
                  in: query
                  name: issued_at_to
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or after this time (RFC 3339)
                  in: query
                  name: refunded_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or before this time (RFC 3339)
                  in: query
                  name: refunded_at_to
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_customerProductListItem'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List customer products for an event
            tags:
                - Customer products
    /events/{event_id}/discounts:
        post:
            description: 'Creates a discount campaign for an event. Set `discount_type` to choose the kind of discount. With `ORDER`, the discount applies to the whole order: provide a `rate`, a `rate_type` (`MONETARY` or `PERCENTAGE`) and the `discount_code` your customers will enter. With `PRODUCT`, the discount applies to specific products: provide `discount_campaign_products` with a `product_uuid`, `max_usage`, `rate` and `currency_id` for each product (each `rate_type` must be `MONETARY`); the discount code is generated for you. The response contains the campaign `id`, the `discount_code` (the one you supplied for `ORDER`, the generated one for `PRODUCT`) and the rate, or the per-product entries.'
            operationId: CreateDiscount
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.createDiscountRequest'
                            description: Discount payload
                            summary: request
                description: Discount payload
                required: true
            responses:
                "201":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.createDiscountResponse'
                    description: Created
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "409":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: discount_code_taken
                "422":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: product_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Create discount campaign
            tags:
                - Discounts
    /events/{event_id}/discounts/{discount_id}:
        put:
            description: Updates the `name`, `max_usage`, `online_from` and `online_till` of a discount campaign. The rate, currency, discount code and per-product entries cannot be changed after the campaign is created; to change them, create a new campaign. The response has the same shape as the create response.
            operationId: UpdateDiscount
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Discount campaign ID (UUID)
                  in: path
                  name: discount_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.updateDiscountRequest'
                            description: Fields to update
                            summary: request
                description: Fields to update
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.createDiscountResponse'
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found / discount_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Update discount campaign
            tags:
                - Discounts
    /events/{event_id}/marketing-trackers:
        get:
            description: Returns the marketing trackers of an event, grouped by channel (shop). Each group has totals for clicks, orders and tickets sold, and lists its trackers with their own statistics and the tracking link to share.
            operationId: ListMarketingTrackers
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                items:
                                    $ref: '#/components/schemas/handler.viewportMarketingTrackersResponse'
                                type: array
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List marketing trackers
            tags:
                - Marketing Trackers
        post:
            description: Creates a marketing tracker for one of your event's channels (shops). Pass the channel's `uuid`, as returned by `GET /events/{event_id}/channels`, as `viewport_uuid`. The tracker gets its own tracking link, so you can see how many clicks, orders and tickets each promotion brings in. Supported channels are `INSTAGRAM`, `FACEBOOK`, `TIKTOK`, `WHATSAPP`, `NEWSLETTER`, `X`, `SHOPIFY` and `OTHER`. The `SPOTIFY` and `AUTOMATED_EMAIL` channels are managed by CM.com and cannot be created here.
            operationId: CreateMarketingTracker
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.createMarketingTrackerRequest'
                            description: Marketing tracker payload
                            summary: request
                description: Marketing tracker payload
                required: true
            responses:
                "201":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.createMarketingTrackerResponse'
                    description: Created
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error / viewport_not_found / invalid_channel
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "409":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: tracker_already_exists
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Create marketing tracker
            tags:
                - Marketing Trackers
    /events/{event_id}/marketing-trackers/{tracker_id}:
        delete:
            description: Deletes a marketing tracker. Only trackers that you created can be deleted; the `SPOTIFY` and `AUTOMATED_EMAIL` trackers are managed by CM.com and cannot be deleted.
            operationId: DeleteMarketingTracker
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Marketing Tracker ID (UUID)
                  in: path
                  name: tracker_id
                  required: true
                  schema:
                    type: string
            responses:
                "204":
                    description: No Content
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found / tracker_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Delete marketing tracker
            tags:
                - Marketing Trackers
    /events/{event_id}/orders:
        get:
            description: Returns the orders of an event, optionally filtered by status, product, sales origin or completion time.
            operationId: ListOrders
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Only return orders with this status
                  in: query
                  name: status
                  schema:
                    enum:
                        - COMPLETED
                        - CANCELED
                        - REFUNDED
                        - RELEASED
                        - PENDING
                    type: string
                - description: Only return orders that contain this product (UUID). Repeat the parameter to match orders containing any of several products
                  in: query
                  name: product_id
                  schema:
                    items:
                        type: string
                    type: array
                - description: 'Only return orders created through this sales origin: `SHOP` (the online shop), `BACKOFFICE` or `PARTNER_API` (orders created through this API)'
                  in: query
                  name: sales_origin
                  schema:
                    type: string
                - description: Only return orders completed at or after this time (RFC 3339)
                  in: query
                  name: completed_at_from
                  schema:
                    type: string
                - description: Only return orders completed at or before this time (RFC 3339)
                  in: query
                  name: completed_at_to
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_orderListItem'
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: invalid query parameter
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List orders
            tags:
                - Orders
        post:
            description: Creates an order for an event. There are two ways to use it. With `complete=true` the order is completed immediately, using the `payment_method` and `delivery_method` in the same request. With `complete=false` (the default) the order is created with status `PENDING` and reserves the requested tickets; you then finish it with `PUT /events/{event_id}/orders/{order_id}/complete`, or release the tickets with `PUT /events/{event_id}/orders/{order_id}/cancel`. The response has the same shape as `GET /events/{event_id}/orders/{order_id}`. Use `external_batch_id` to store your own reference for the order.
            operationId: CreateOrder
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.createOrderRequest'
                            description: Order payload
                            summary: request
                description: Order payload
                required: true
            responses:
                "201":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewOrderResponse'
                    description: Created
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: validation error
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "422":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: product_out_of_stock / product_not_enabled
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Create order
            tags:
                - Orders
    /events/{event_id}/orders/{order_id}:
        get:
            description: 'Returns the details of one order: its status, the customer''s details, the payment method, the tickets that were ordered and the consents the customer gave.'
            operationId: ViewOrder
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewOrderResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found / order_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: View order
            tags:
                - Orders
    /events/{event_id}/orders/{order_id}/cancel:
        put:
            description: Cancels an order that is still `PENDING` and makes the tickets it reserved available again. This endpoint does not refund or cancel completed orders; to cancel individual tickets of a completed order, use the customer product cancel endpoint. Canceling an order that is already canceled returns `409`.
            operationId: CancelOrder
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewOrderResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found / order_not_found
                "409":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: order_already_canceled
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Cancel order
            tags:
                - Orders
    /events/{event_id}/orders/{order_id}/complete:
        put:
            description: Completes an order that was created with `complete=false` and is still `PENDING`. If you leave out `payment_method` it defaults to `FREE`, and if you leave out `delivery_method` it defaults to `NONE`. Completing an order that is already completed returns `409`.
            operationId: CompleteOrder
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.completeOrderRequest'
                            description: Complete order payload
                            summary: request
                description: Complete order payload
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewOrderResponse'
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: invalid request
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found / order_not_found
                "409":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: order_already_completed
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Complete order
            tags:
                - Orders
    /events/{event_id}/orders/{order_id}/products:
        get:
            description: Returns the customer products (the individual tickets and other products issued to the customer) of one order. Accepts the same filters as the event-level and organisation-level lists.
            operationId: ListOrderCustomerProducts
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Only return customer products of this product type (for example `ENTRANCE_TICKET`)
                  in: query
                  name: product_type
                  schema:
                    type: string
                - description: Only return customer products with this status (for example `ISSUED`, `RESERVED` or `REFUNDED`)
                  in: query
                  name: status
                  schema:
                    type: string
                - description: Only return customer products of this product (UUID). Repeat the parameter to include several products
                  in: query
                  name: product_id
                  schema:
                    items:
                        type: string
                    type: array
                - description: Only return customer products whose order was completed at or after this time (RFC 3339)
                  in: query
                  name: issued_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was completed at or before this time (RFC 3339)
                  in: query
                  name: issued_at_to
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or after this time (RFC 3339)
                  in: query
                  name: refunded_at_from
                  schema:
                    type: string
                - description: Only return customer products whose order was refunded at or before this time (RFC 3339)
                  in: query
                  name: refunded_at_to
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_customerProductListItem'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List customer products for an order
            tags:
                - Customer products
    /events/{event_id}/orders/{order_id}/products/{customer_product_id}:
        get:
            description: 'Returns the details of one customer product (an individual ticket or other product issued to a customer): the customer''s details, the product, the event and venue, the seat (`null` for events without seating), how often and when it was last scanned, and the tracking parameters of the order it belongs to.'
            operationId: ViewCustomerProduct
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
                - description: Customer product ID (UUID)
                  in: path
                  name: customer_product_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewCustomerProductResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: customer_product_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: View customer product
            tags:
                - Customer products
    /events/{event_id}/orders/{order_id}/products/{customer_product_id}/cancel:
        put:
            description: Cancels one customer product (an individual ticket or other product issued to a customer). Its barcode can no longer be used for entry and the product's stock is increased by one. The order it belongs to is not changed, and no refund is made. Canceling a customer product that is already canceled returns `409`.
            operationId: CancelCustomerProduct
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Order ID (UUID)
                  in: path
                  name: order_id
                  required: true
                  schema:
                    type: string
                - description: Customer product ID (UUID)
                  in: path
                  name: customer_product_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.viewCustomerProductResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: customer_product_not_found
                "409":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: customer_product_already_canceled
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: Cancel customer product
            tags:
                - Customer products
    /events/{event_id}/payment-methods:
        get:
            description: Returns the payment methods that are enabled for an event and available to online customers. Box-office-only payment methods are not included.
            operationId: ListPaymentMethods
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                items:
                                    $ref: '#/components/schemas/handler.paymentMethodResponse'
                                type: array
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List payment methods
            tags:
                - Payment methods
    /events/{event_id}/products:
        get:
            description: Returns the active products (for example tickets) of an event, with their name in each language and their price.
            operationId: ListProducts
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Number of items to skip (default 0)
                  in: query
                  name: skip
                  schema:
                    type: integer
                - description: Page size (default 100)
                  in: query
                  name: take
                  schema:
                    type: integer
                - description: Field to sort by
                  in: query
                  name: sort
                  schema:
                    enum:
                        - display_order
                        - name
                        - created_at
                    type: string
                - description: Sort direction
                  in: query
                  name: order
                  schema:
                    enum:
                        - asc
                        - desc
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.listResponse-handler_productListItem'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: event_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: List products
            tags:
                - Products
    /events/{event_id}/products/{product_id}:
        get:
            description: Returns the details of one product, including its remaining `stock` (reported as 0 when `has_unlimited_stock` is `true`) and the `capacity` of the pool it draws from, which can be shared with other products.
            operationId: ViewProduct
            parameters:
                - description: Event ID (UUID)
                  in: path
                  name: event_id
                  required: true
                  schema:
                    type: string
                - description: Product ID (UUID)
                  in: path
                  name: product_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/handler.productResponse'
                    description: OK
                "404":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: product_not_found
                "500":
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/rest.HttpError'
                    description: internal_server_error
            security:
                - SystemTokenAuth: []
            summary: View product
            tags:
                - Products
servers:
    - url: /ticketing/v1
webhooks:
    customer_product.canceled:
        post:
            description: Sent when a customer product (an individual ticket) is canceled, either on its own or as part of an order cancellation. Retrieve it with `GET /events/{event_id}/orders/{order_id}/products/{customer_product_id}`.
            operationId: WebhookCustomerProductCanceled
            parameters:
                - description: Always `customer_product.canceled`
                  in: header
                  name: X-Message-Type
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.webhookMessagePayload'
                            description: Message payload
                            summary: payload
                description: Message payload
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                type: object
                    description: Any 2xx response is treated as a successful delivery
                "500":
                    description: Any other response, or no response within 10 seconds, counts as a failed delivery and is retried
            summary: Webhook — customer_product.canceled
            tags:
                - Webhooks
            security: []
    order.canceled:
        post:
            description: Sent when an order is canceled, followed by a `customer_product.canceled` message for each ticket in the order.
            operationId: WebhookOrderCanceled
            parameters:
                - description: Always `order.canceled`
                  in: header
                  name: X-Message-Type
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.webhookMessagePayload'
                            description: Message payload
                            summary: payload
                description: Message payload
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                type: object
                    description: Any 2xx response is treated as a successful delivery
                "500":
                    description: Any other response, or no response within 10 seconds, counts as a failed delivery and is retried
            summary: Webhook — order.canceled
            tags:
                - Webhooks
            security: []
    order.completed:
        post:
            description: Sent when an order is completed. Retrieve it with `GET /events/{event_id}/orders/{order_id}`.
            operationId: WebhookOrderCompleted
            parameters:
                - description: Always `order.completed`
                  in: header
                  name: X-Message-Type
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/handler.webhookMessagePayload'
                            description: Message payload
                            summary: payload
                description: Message payload
                required: true
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                type: object
                    description: Any 2xx response is treated as a successful delivery
                "500":
                    description: Any other response, or no response within 10 seconds, counts as a failed delivery and is retried
            summary: Webhook — order.completed
            tags:
                - Webhooks
            security: []
