# This file is property of Viewcy INC., and is not to be distributed or copied without prior written consent.
# To preview the file, use https://editor-next.swagger.io/
---
openapi: 3.0.3
info:
  title: Viewcy Public API
  version: '2025_06'
  description: Viewcy Public API — stable, versioned API for third-party integrations
servers:
- url: https://api.viewcy.com/2025_06
paths:
  "/activities":
    get:
      summary: List activities
      tags:
      - Activity
      operationId: listActivities
      parameters:
      - name: eventId
        in: query
        required: false
        schema:
          type: string
        example: f8353552-112b-47f1-9da7-a736fadce32d
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: query
        in: query
        required: false
        schema:
          type: string
        example: Registered
      - name: since
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-01'
      - name: sort
        in: query
        required: false
        schema:
          type: string
        example: createdAt
      - name: until
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-30'
      responses:
        '200':
          description: Returns the owner's activities
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        message:
                          type: string
                        activityType:
                          type: string
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        actorId:
                          type: string
                        ownerId:
                          type: string
                        targetId:
                          type: string
                        targetType:
                          type: string
                      required:
                      - object
                      - id
                      - message
                      - activityType
                      - createdAt
                      - updatedAt
                      - actorId
                      - ownerId
                      - targetId
                      - targetType
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_the_owner's_activities:
                  summary: returns the owner's activities
                  value:
                    data:
                    - object: activity
                      id: '019d209c-29b0-7faa-b884-fe38d11d6b23'
                      message: Purchased ticket
                      activityType: purchase
                      createdAt: '2025-04-10T12:00:00Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                      actorId: 2e23ddc2-ff5c-4dc6-a3c2-16a05e110c4f
                      ownerId: fd230af3-bf9b-4422-9ea9-507848672d21
                      targetId: 3db5863c-819d-463e-a95f-4887346e9cfa
                      targetType: Event
                    - object: activity
                      id: '019d209c-29ab-7635-a78c-ca891cf751fe'
                      message: Registered for event
                      activityType: register
                      createdAt: '2025-03-15T12:00:00Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                      actorId: 2e23ddc2-ff5c-4dc6-a3c2-16a05e110c4f
                      ownerId: fd230af3-bf9b-4422-9ea9-507848672d21
                      targetId: fc229f04-e491-4feb-9ce0-aebbe09b603b
                      targetType: Course
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/activities/{id}":
    get:
      summary: Get activity
      tags:
      - Activity
      operationId: getActivity
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: '019d209c-297a-76e6-b630-e8e9f8be29a7'
      responses:
        '200':
          description: Returns the activity
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  message:
                    type: string
                  activityType:
                    type: string
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                  actorId:
                    type: string
                  ownerId:
                    type: string
                  targetId:
                    type: string
                  targetType:
                    type: string
                required:
                - object
                - id
                - message
                - activityType
                - createdAt
                - updatedAt
                - actorId
                - ownerId
                - targetId
                - targetType
              examples:
                returns_the_activity:
                  summary: returns the activity
                  value:
                    object: activity
                    id: '019d209c-2936-72be-b470-4c98cd96699a'
                    message: Registered for event
                    activityType: register
                    createdAt: '2025-03-15T12:00:00Z'
                    updatedAt: '2026-03-24T16:09:58Z'
                    actorId: 417fca34-ef51-4145-a551-32e99e5802c4
                    ownerId: e0f9b40b-9c3c-4c15-b997-ef8a355dfad8
                    targetId: 4e763167-e2f2-47b8-82c3-36d97123728a
                    targetType: Course
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent activity
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_activity:
                  summary: returns 404 for non-existent activity
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/events":
    get:
      summary: List events
      tags:
      - Event
      operationId: listEvents
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: sort
        in: query
        required: false
        schema:
          type: string
        example: "-createdAt"
      - name: status
        in: query
        required: false
        schema:
          type: string
        example: published
      responses:
        '200':
          description: Returns the owner's events
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        slug:
                          type: string
                        name:
                          type: string
                        description:
                          type: string
                        status:
                          type: string
                        visibility:
                          type: string
                        accessMode:
                          type: string
                        timezone:
                          type: string
                        locationSetting:
                          type: string
                        featuredVideoUrl:
                          nullable: true
                        bookText:
                          type: string
                        tags:
                          type: array
                          items: {}
                        registrationLimit:
                          type: integer
                        currency:
                          type: string
                        featuredImageUrl:
                          nullable: true
                        images:
                          type: array
                          items: {}
                        theme:
                          type: string
                        seatsEventKey:
                          nullable: true
                        likeCount:
                          type: integer
                        url:
                          type: string
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                      required:
                      - object
                      - id
                      - slug
                      - name
                      - description
                      - status
                      - visibility
                      - accessMode
                      - timezone
                      - locationSetting
                      - featuredVideoUrl
                      - bookText
                      - tags
                      - registrationLimit
                      - currency
                      - featuredImageUrl
                      - images
                      - theme
                      - seatsEventKey
                      - likeCount
                      - url
                      - createdAt
                      - updatedAt
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_filtered_and_sorted_events:
                  summary: returns filtered and sorted events
                  value:
                    data:
                    - object: event
                      id: 91903664-f67c-4cb5-9467-5d33e1c2eae4
                      slug: my_event
                      name: My Event
                      description: Learn the basics of this 3 part tutorial
                      status: published
                      visibility: listed
                      accessMode: open
                      timezone: Eastern Time (US & Canada)
                      locationSetting: physical
                      featuredVideoUrl:
                      bookText: Get tickets
                      tags: []
                      registrationLimit: 0
                      currency: usd
                      featuredImageUrl:
                      images: []
                      theme: light
                      seatsEventKey:
                      likeCount: 0
                      url: http://www.viewcy.com/event/my_event
                      createdAt: '2026-03-24T16:09:57Z'
                      updatedAt: '2026-03-24T16:09:57Z'
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 1
                    hasNextPage: false
                returns_the_owner's_events:
                  summary: returns the owner's events
                  value:
                    data:
                    - object: event
                      id: dc2c3b6a-fad2-4295-9669-4b834863bbc8
                      slug: draft_event
                      name: Draft Event
                      description: Learn the basics of this 3 part tutorial
                      status: draft
                      visibility: listed
                      accessMode: open
                      timezone: Eastern Time (US & Canada)
                      locationSetting: physical
                      featuredVideoUrl:
                      bookText: Get tickets
                      tags: []
                      registrationLimit: 0
                      currency: usd
                      featuredImageUrl:
                      images: []
                      theme: light
                      seatsEventKey:
                      likeCount: 0
                      url: http://www.viewcy.com/event/draft_event
                      createdAt: '2026-03-24T16:09:58Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                    - object: event
                      id: 85f93522-928a-4e3e-be95-ebef811f5f66
                      slug: my_event
                      name: My Event
                      description: Learn the basics of this 3 part tutorial
                      status: published
                      visibility: listed
                      accessMode: open
                      timezone: Eastern Time (US & Canada)
                      locationSetting: physical
                      featuredVideoUrl:
                      bookText: Get tickets
                      tags: []
                      registrationLimit: 0
                      currency: usd
                      featuredImageUrl:
                      images: []
                      theme: light
                      seatsEventKey:
                      likeCount: 0
                      url: http://www.viewcy.com/event/my_event
                      createdAt: '2026-03-24T16:09:58Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/events/{eventId}/occurrences":
    get:
      summary: List occurrences
      tags:
      - Occurrence
      operationId: listOccurrences
      parameters:
      - name: eventId
        in: path
        required: true
        schema:
          type: string
        example: 13fbacf2-383b-4697-8305-88412f72e7bf
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      responses:
        '200':
          description: Returns occurrences for the event
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        eventId:
                          type: string
                        startsAt:
                          type: string
                        endsAt:
                          type: string
                        canceled:
                          type: boolean
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                      required:
                      - object
                      - id
                      - eventId
                      - startsAt
                      - endsAt
                      - canceled
                      - createdAt
                      - updatedAt
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_occurrences_for_the_event:
                  summary: returns occurrences for the event
                  value:
                    data:
                    - object: occurrence
                      id: f0d88d5f-16b5-4d57-a7e1-3b4db69ce60a
                      eventId: 551b9780-2546-43b6-9b42-1d74d2a52559
                      startsAt: '2025-06-11T18:00:00Z'
                      endsAt: '2025-06-11T20:00:00Z'
                      canceled: false
                      createdAt: '2026-03-24T16:09:55Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                    - object: occurrence
                      id: 55959f4d-dda1-46db-bbb8-4a20c64b72aa
                      eventId: 551b9780-2546-43b6-9b42-1d74d2a52559
                      startsAt: '2025-06-12T18:00:00Z'
                      endsAt: '2025-06-12T20:00:00Z'
                      canceled: false
                      createdAt: '2026-03-24T16:09:55Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent event
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_event:
                  summary: returns 404 for non-existent event
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/events/{eventId}/tickets":
    get:
      summary: List tickets
      tags:
      - Ticket
      operationId: listTickets
      parameters:
      - name: eventId
        in: path
        required: true
        schema:
          type: string
        example: f8806dac-5c87-477d-b948-b886a99cc14f
      responses:
        '200':
          description: Returns tickets for the event
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        name:
                          type: string
                        description:
                          nullable: true
                        kind:
                          type: string
                        attendanceType:
                          type: string
                        visibilityScope:
                          type: string
                        pricingMode:
                          type: string
                        price:
                          type: number
                          format: float
                        fee:
                          type: number
                          format: float
                        currency:
                          type: string
                        quantity:
                          nullable: true
                        quantityPerOrder:
                          nullable: true
                        startsAt:
                          nullable: true
                        archived:
                          type: boolean
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                      required:
                      - object
                      - id
                      - name
                      - description
                      - kind
                      - attendanceType
                      - visibilityScope
                      - pricingMode
                      - price
                      - fee
                      - currency
                      - quantity
                      - quantityPerOrder
                      - startsAt
                      - archived
                      - createdAt
                      - updatedAt
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_tickets_for_the_event:
                  summary: returns tickets for the event
                  value:
                    data:
                    - object: ticket
                      id: afd0709e-9473-4c7a-bf20-9c8678565eeb
                      name: General Admission
                      description:
                      kind: paid_pass
                      attendanceType: in-person
                      visibilityScope: standard
                      pricingMode: fixed
                      price: 9.99
                      fee: 0.0
                      currency: usd
                      quantity:
                      quantityPerOrder:
                      startsAt:
                      archived: false
                      createdAt: '2026-03-24T16:09:58Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                    - object: ticket
                      id: bbf735f1-f8ef-4331-9eed-92ad9bb362e0
                      name: VIP Pass
                      description:
                      kind: paid_pass
                      attendanceType: in-person
                      visibilityScope: standard
                      pricingMode: fixed
                      price: 9.99
                      fee: 0.0
                      currency: usd
                      quantity:
                      quantityPerOrder:
                      startsAt:
                      archived: false
                      createdAt: '2026-03-24T16:09:58Z'
                      updatedAt: '2026-03-24T16:09:58Z'
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent event
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_event:
                  summary: returns 404 for non-existent event
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/events/{id}":
    get:
      summary: Get event
      tags:
      - Event
      operationId: getEvent
      parameters:
      - name: expand
        in: query
        required: false
        schema:
          type: string
        example: stats
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: 4331323f-633e-48be-a2ef-7960285bcc9f
      responses:
        '200':
          description: Returns the event with expanded fields
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  slug:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  status:
                    type: string
                  visibility:
                    type: string
                  accessMode:
                    type: string
                  timezone:
                    type: string
                  locationSetting:
                    type: string
                  featuredVideoUrl:
                    nullable: true
                  bookText:
                    type: string
                  tags:
                    type: array
                    items:
                      type: string
                  registrationLimit:
                    type: integer
                  currency:
                    type: string
                  featuredImageUrl:
                    nullable: true
                  images:
                    type: array
                    items:
                      type: string
                  theme:
                    type: string
                  seatsEventKey:
                    nullable: true
                    type: string
                  likeCount:
                    type: integer
                  url:
                    type: string
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                  location:
                    type: object
                    properties:
                      object:
                        type: string
                      id:
                        type: string
                      name:
                        type: string
                      address:
                        type: string
                      city:
                        type: string
                      state:
                        type: string
                      stateCode:
                        type: string
                      country:
                        type: string
                      zipcode:
                        type: string
                      lat:
                        nullable: true
                      lng:
                        nullable: true
                      googlePlaceId:
                        nullable: true
                      createdAt:
                        type: string
                      updatedAt:
                        type: string
                      url:
                        type: string
                    required:
                    - object
                    - id
                    - name
                    - address
                    - city
                    - state
                    - stateCode
                    - country
                    - zipcode
                    - lat
                    - lng
                    - googlePlaceId
                    - createdAt
                    - updatedAt
                    - url
                  occurrences:
                    type: object
                    properties:
                      object:
                        type: string
                      url:
                        type: string
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            object:
                              type: string
                            id:
                              type: string
                            eventId:
                              type: string
                            startsAt:
                              type: string
                              nullable: true
                            endsAt:
                              type: string
                              nullable: true
                            canceled:
                              type: boolean
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                          - object
                          - id
                          - eventId
                          - startsAt
                          - endsAt
                          - canceled
                          - createdAt
                          - updatedAt
                      hasMore:
                        type: boolean
                    required:
                    - object
                    - url
                    - data
                    - hasMore
                  tickets:
                    type: object
                    properties:
                      object:
                        type: string
                      url:
                        type: string
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            object:
                              type: string
                            id:
                              type: string
                            name:
                              type: string
                            description:
                              nullable: true
                            kind:
                              type: string
                            attendanceType:
                              type: string
                            visibilityScope:
                              type: string
                            pricingMode:
                              type: string
                            price:
                              type: number
                              format: float
                            fee:
                              type: number
                              format: float
                            currency:
                              type: string
                            quantity:
                              nullable: true
                            quantityPerOrder:
                              nullable: true
                            startsAt:
                              type: string
                            archived:
                              type: boolean
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                          - object
                          - id
                          - name
                          - description
                          - kind
                          - attendanceType
                          - visibilityScope
                          - pricingMode
                          - price
                          - fee
                          - currency
                          - quantity
                          - quantityPerOrder
                          - startsAt
                          - archived
                          - createdAt
                          - updatedAt
                      hasMore:
                        type: boolean
                    required:
                    - object
                    - url
                    - data
                    - hasMore
                  collaborators:
                    type: object
                    properties:
                      object:
                        type: string
                      url:
                        type: string
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            object:
                              type: string
                            id:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                            avatarUrl:
                              type: string
                          required:
                          - object
                          - id
                          - name
                          - type
                          - avatarUrl
                      hasMore:
                        type: boolean
                    required:
                    - object
                    - url
                    - data
                    - hasMore
                  stats:
                    type: object
                    properties:
                      object:
                        type: string
                      availableCurrencies:
                        type: array
                        items: {}
                      ticketsSold:
                        type: integer
                      capacity:
                        type: integer
                      grossRevenue:
                        type: number
                        format: float
                      netRevenue:
                        type: number
                        format: float
                      netSalesOnline:
                        type: number
                        format: float
                      netSalesTerminal:
                        type: number
                        format: float
                      netSalesCash:
                        type: number
                        format: float
                      netSalesTapToPay:
                        type: number
                        format: float
                      stripeFees:
                        type: number
                        format: float
                      viewcyFees:
                        type: number
                        format: float
                      refundedAmount:
                        type: number
                        format: float
                      freeTickets:
                        type: integer
                      canceledTickets:
                        type: integer
                      refundedTickets:
                        type: integer
                      ticketsSoldOnline:
                        type: integer
                      ticketsSoldTerminal:
                        type: integer
                      ticketsSoldCash:
                        type: integer
                      ticketsSoldTapToPay:
                        type: integer
                      donationsCount:
                        type: integer
                      donationsAmount:
                        type: number
                        format: float
                      ticketsStats:
                        type: object
                        properties:
                          tickets:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                kind:
                                  type: string
                                ticketsSold:
                                  type: integer
                                ticketsAvailable:
                                  nullable: true
                                revenue:
                                  type: integer
                              required:
                              - name
                              - kind
                              - ticketsSold
                              - ticketsAvailable
                              - revenue
                          admissionTotals:
                            type: object
                            properties:
                              ticketsSold:
                                type: integer
                              revenue:
                                type: integer
                                format: float
                            required:
                            - ticketsSold
                            - revenue
                          addOnTotals:
                            type: object
                            properties:
                              ticketsSold:
                                type: integer
                              revenue:
                                type: integer
                            required:
                            - ticketsSold
                            - revenue
                        required:
                        - tickets
                        - admissionTotals
                        - addOnTotals
                    required:
                    - object
                    - availableCurrencies
                    - ticketsSold
                    - capacity
                    - grossRevenue
                    - netRevenue
                    - netSalesOnline
                    - netSalesTerminal
                    - netSalesCash
                    - netSalesTapToPay
                    - stripeFees
                    - viewcyFees
                    - refundedAmount
                    - freeTickets
                    - canceledTickets
                    - refundedTickets
                    - ticketsSoldOnline
                    - ticketsSoldTerminal
                    - ticketsSoldCash
                    - ticketsSoldTapToPay
                    - donationsCount
                    - donationsAmount
                    - ticketsStats
                  promoters:
                    type: object
                    properties:
                      object:
                        type: string
                      data:
                        type: array
                        items:
                          type: object
                          properties:
                            object:
                              type: string
                            id:
                              type: string
                            name:
                              type: string
                            username:
                              type: string
                            viewCount:
                              type: integer
                            revenue:
                              type: number
                              format: float
                            ticketsSold:
                              type: integer
                            currency:
                              type: string
                          required:
                          - object
                          - id
                          - name
                          - username
                          - viewCount
                          - revenue
                          - ticketsSold
                          - currency
                      hasMore:
                        type: boolean
                    required:
                    - object
                    - data
                    - hasMore
                required:
                - object
                - id
                - slug
                - name
                - description
                - status
                - visibility
                - accessMode
                - timezone
                - locationSetting
                - featuredVideoUrl
                - bookText
                - tags
                - registrationLimit
                - currency
                - featuredImageUrl
                - images
                - theme
                - seatsEventKey
                - likeCount
                - url
                - createdAt
                - updatedAt
              examples:
                returns_the_event:
                  summary: returns the event
                  value:
                    object: event
                    id: 9c00d932-9818-435e-89f9-0f92b1f18bdc
                    slug: jazz-workshop
                    name: Jazz Workshop
                    description: Learn the basics of this 3 part tutorial
                    status: published
                    visibility: listed
                    accessMode: open
                    timezone: Eastern Time (US & Canada)
                    locationSetting: physical
                    featuredVideoUrl:
                    bookText: Get tickets
                    tags: []
                    registrationLimit: 0
                    currency: usd
                    featuredImageUrl:
                    images: []
                    theme: dark
                    seatsEventKey:
                    likeCount: 42
                    url: http://www.viewcy.com/event/jazz-workshop
                    createdAt: '2026-03-24T16:09:56Z'
                    updatedAt: '2026-03-24T16:09:56Z'
                returns_the_event_with_expanded_fields:
                  summary: returns the event with expanded fields
                  value:
                    object: event
                    id: 4b8f4216-a34c-43c2-a0f0-7f2326bff432
                    slug: my_event
                    name: My Event
                    description: Learn the basics of this 3 part tutorial
                    status: published
                    visibility: listed
                    accessMode: open
                    timezone: Eastern Time (US & Canada)
                    locationSetting: physical
                    featuredVideoUrl:
                    bookText: Get tickets
                    tags:
                    - music
                    - workshop
                    registrationLimit: 100
                    currency: usd
                    featuredImageUrl:
                    images: []
                    theme: light
                    seatsEventKey:
                    likeCount: 0
                    url: http://www.viewcy.com/event/my_event
                    createdAt: '2026-03-24T16:09:57Z'
                    updatedAt: '2026-03-24T16:09:57Z'
                    location:
                      object: location
                      id: e0fdfbea-6601-4e22-9864-238049da605f
                      name: Test Location
                      address: Address 5
                      city: Kingston
                      state: New York
                      stateCode: NY
                      country: US
                      zipcode: '12401'
                      lat:
                      lng:
                      googlePlaceId:
                      createdAt: '2026-03-24T16:09:57Z'
                      updatedAt: '2026-03-24T16:09:57Z'
                      url: http://api.viewcy.com/2025_06/locations/e0fdfbea-6601-4e22-9864-238049da605f
                    occurrences:
                      object: list
                      url: http://api.viewcy.com/2025_06/events/4b8f4216-a34c-43c2-a0f0-7f2326bff432/occurrences
                      data:
                      - object: occurrence
                        id: 7f855eb2-40ca-4477-b55d-616c773bdfdf
                        eventId: 4b8f4216-a34c-43c2-a0f0-7f2326bff432
                        startsAt: '2025-06-11T18:00:00Z'
                        endsAt: '2025-06-11T20:00:00Z'
                        canceled: false
                        createdAt: '2026-03-24T16:09:57Z'
                        updatedAt: '2026-03-24T16:09:57Z'
                      - object: occurrence
                        id: 5f8ff99c-a515-4e9e-9c2a-78c7a1135cde
                        eventId: 4b8f4216-a34c-43c2-a0f0-7f2326bff432
                        startsAt: '2025-06-12T18:00:00Z'
                        endsAt: '2025-06-12T20:00:00Z'
                        canceled: false
                        createdAt: '2026-03-24T16:09:57Z'
                        updatedAt: '2026-03-24T16:09:57Z'
                      hasMore: false
                    tickets:
                      object: list
                      url: http://api.viewcy.com/2025_06/events/4b8f4216-a34c-43c2-a0f0-7f2326bff432/tickets
                      data:
                      - object: ticket
                        id: afd0709e-9473-4c7a-bf20-9c8678565eeb
                        name: General Admission
                        description:
                        kind: paid_pass
                        attendanceType: in-person
                        visibilityScope: standard
                        pricingMode: fixed
                        price: 10.0
                        fee: 1.0
                        currency: usd
                        quantity:
                        quantityPerOrder:
                        startsAt: '2021-01-01T00:00:00Z'
                        archived: false
                        createdAt: '2026-03-24T16:09:57Z'
                        updatedAt: '2026-03-24T16:09:57Z'
                      - object: ticket
                        id: bbf735f1-f8ef-4331-9eed-92ad9bb362e0
                        name: Free Pass
                        description:
                        kind: free_pass
                        attendanceType: in-person
                        visibilityScope: standard
                        pricingMode: fixed
                        price: 0.0
                        fee: 0.0
                        currency: usd
                        quantity:
                        quantityPerOrder:
                        startsAt: '2021-01-01T00:00:00Z'
                        archived: false
                        createdAt: '2026-03-24T16:09:57Z'
                        updatedAt: '2026-03-24T16:09:57Z'
                      hasMore: false
                    collaborators:
                      object: list
                      url: http://api.viewcy.com/2025_06/events/4b8f4216-a34c-43c2-a0f0-7f2326bff432/collaborators
                      data:
                      - object: collaborator
                        id: 20553b74-500a-4dbb-bc06-5649614aa24a
                        name: John Smith
                        type: User
                        avatarUrl: ''
                      hasMore: false
                    stats:
                      object: event_stats
                      availableCurrencies: []
                      ticketsSold: 0
                      capacity: 100
                      grossRevenue: 0.0
                      netRevenue: 0.0
                      netSalesOnline: 0.0
                      netSalesTerminal: 0.0
                      netSalesCash: 0.0
                      netSalesTapToPay: 0.0
                      stripeFees: 0.0
                      viewcyFees: 0.0
                      refundedAmount: 0.0
                      freeTickets: 0
                      canceledTickets: 0
                      refundedTickets: 0
                      ticketsSoldOnline: 0
                      ticketsSoldTerminal: 0
                      ticketsSoldCash: 0
                      ticketsSoldTapToPay: 0
                      donationsCount: 0
                      donationsAmount: 0.0
                      ticketsStats:
                        tickets:
                        - name: General Admission
                          kind: admission
                          ticketsSold: 0
                          ticketsAvailable:
                          revenue: 0
                        - name: Free Pass
                          kind: admission
                          ticketsSold: 0
                          ticketsAvailable:
                          revenue: 0
                        admissionTotals:
                          ticketsSold: 0
                          revenue: 0.0
                        addOnTotals:
                          ticketsSold: 0
                          revenue: 0
                    promoters:
                      object: list
                      data:
                      - object: event_promoter
                        id: bf4ed1dd-73fb-4b11-8b6d-4c3af09e842a
                        name: John Smith
                        username: johnsmith2
                        viewCount: 5
                        revenue: 0.0
                        ticketsSold: 0
                        currency: usd
                      hasMore: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent event
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_event:
                  summary: returns 404 for non-existent event
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/locations":
    get:
      summary: List locations
      tags:
      - Location
      operationId: listLocations
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      responses:
        '200':
          description: Returns the owner's locations
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        name:
                          type: string
                        address:
                          type: string
                        city:
                          type: string
                        state:
                          type: string
                        stateCode:
                          type: string
                        country:
                          type: string
                        zipcode:
                          type: string
                        lat:
                          nullable: true
                        lng:
                          nullable: true
                        googlePlaceId:
                          nullable: true
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                      required:
                      - object
                      - id
                      - name
                      - address
                      - city
                      - state
                      - stateCode
                      - country
                      - zipcode
                      - lat
                      - lng
                      - googlePlaceId
                      - createdAt
                      - updatedAt
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_the_owner's_locations:
                  summary: returns the owner's locations
                  value:
                    data:
                    - object: location
                      id: 96f2320c-ce1b-47b4-a42f-ba821caa04e2
                      name: Downtown Hall
                      address: 456 Oak Ave
                      city: Brooklyn
                      state: New York
                      stateCode: NY
                      country: US
                      zipcode: '12401'
                      lat:
                      lng:
                      googlePlaceId:
                      createdAt: '2026-03-24T16:09:55Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                    - object: location
                      id: 81408d47-8acb-4b7c-803f-5d6d1c5f1dae
                      name: Main Studio
                      address: 123 Main St
                      city: New York
                      state: New York
                      stateCode: NY
                      country: US
                      zipcode: '12401'
                      lat:
                      lng:
                      googlePlaceId:
                      createdAt: '2026-03-24T16:09:55Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/locations/{id}":
    get:
      summary: Get location
      tags:
      - Location
      operationId: getLocation
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: 1596a039-466e-4501-b51f-60f1c854c0c1
      responses:
        '200':
          description: Returns the location
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  name:
                    type: string
                  address:
                    type: string
                  city:
                    type: string
                  state:
                    type: string
                  stateCode:
                    type: string
                  country:
                    type: string
                  zipcode:
                    type: string
                  lat:
                    nullable: true
                  lng:
                    nullable: true
                  googlePlaceId:
                    nullable: true
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                required:
                - object
                - id
                - name
                - address
                - city
                - state
                - stateCode
                - country
                - zipcode
                - lat
                - lng
                - googlePlaceId
                - createdAt
                - updatedAt
              examples:
                returns_the_location:
                  summary: returns the location
                  value:
                    object: location
                    id: d1d5cc65-38f3-4588-a763-d565835b6208
                    name: Main Studio
                    address: 123 Main St
                    city: New York
                    state: New York
                    stateCode: NY
                    country: US
                    zipcode: '12401'
                    lat:
                    lng:
                    googlePlaceId:
                    createdAt: '2026-03-24T16:09:55Z'
                    updatedAt: '2026-03-24T16:09:55Z'
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent location
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_location:
                  summary: returns 404 for non-existent location
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/occurrences/{id}":
    get:
      summary: Get occurrence
      tags:
      - Occurrence
      operationId: getOccurrence
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: f2baa330-06f7-473f-87ea-7dcee9a15e00
      responses:
        '200':
          description: Returns the occurrence
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  eventId:
                    type: string
                  startsAt:
                    type: string
                  endsAt:
                    type: string
                  canceled:
                    type: boolean
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                required:
                - object
                - id
                - eventId
                - startsAt
                - endsAt
                - canceled
                - createdAt
                - updatedAt
              examples:
                returns_the_occurrence:
                  summary: returns the occurrence
                  value:
                    object: occurrence
                    id: 2e48f887-1009-4a6a-8a72-174d66f65c02
                    eventId: 129edf23-6851-439f-b723-3cec8651679d
                    startsAt: '2025-06-11T18:00:00Z'
                    endsAt: '2025-06-11T20:00:00Z'
                    canceled: false
                    createdAt: '2026-03-24T16:09:55Z'
                    updatedAt: '2026-03-24T16:09:55Z'
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent occurrence
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_occurrence:
                  summary: returns 404 for non-existent occurrence
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/orders":
    get:
      summary: List orders
      tags:
      - Order
      operationId: listOrders
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: query
        in: query
        required: false
        schema:
          type: string
        example: unique-search-buyer
      - name: since
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-01'
      - name: sort
        in: query
        required: false
        schema:
          type: string
        example: "-date"
      - name: until
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-30'
      responses:
        '200':
          description: Returns the owner's orders
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        date:
                          type: string
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        amount:
                          type: number
                          format: float
                        currency:
                          type: string
                        paymentMethod:
                          type: string
                        status:
                          type: string
                        customer:
                          type: object
                          properties:
                            firstName:
                              type: string
                            lastName:
                              type: string
                            email:
                              type: string
                          required:
                          - firstName
                          - lastName
                          - email
                        product:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            type:
                              type: string
                            date:
                              nullable: true
                          required:
                          - id
                          - name
                          - type
                          - date
                        paymentDetails:
                          type: object
                          properties:
                            subtotal:
                              type: number
                              format: float
                            discounts:
                              type: number
                              format: float
                            donation:
                              type: number
                              format: float
                            total:
                              type: number
                              format: float
                            viewcyFee:
                              type: number
                              format: float
                            stripeFee:
                              type: number
                              format: float
                            refundedAmount:
                              type: number
                              format: float
                            netAmount:
                              type: number
                              format: float
                          required:
                          - subtotal
                          - discounts
                          - donation
                          - total
                          - viewcyFee
                          - stripeFee
                          - refundedAmount
                          - netAmount
                        refundable:
                          nullable: true
                      required:
                      - object
                      - id
                      - date
                      - createdAt
                      - updatedAt
                      - amount
                      - currency
                      - paymentMethod
                      - status
                      - customer
                      - product
                      - paymentDetails
                      - refundable
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_the_owner's_orders:
                  summary: returns the owner's orders
                  value:
                    data:
                    - object: order
                      id: T18
                      date: '2025-04-10T12:00:00Z'
                      createdAt: '2025-04-10T12:00:00Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                      amount: 50.0
                      currency: usd
                      paymentMethod: stripe
                      status: completed
                      customer:
                        firstName: Bob
                        lastName: Buyer
                        email: bob-buyer@example.com
                      product:
                        id: piano-masterclass
                        name: Piano Masterclass
                        type: Course
                        date:
                      paymentDetails:
                        subtotal: 50.0
                        discounts: 0.0
                        donation: 0.0
                        total: 50.0
                        viewcyFee: 0.0
                        stripeFee: 0.0
                        refundedAmount: 0.0
                        netAmount: 50.0
                      refundable:
                    - object: order
                      id: T17
                      date: '2025-03-15T12:00:00Z'
                      createdAt: '2025-03-15T12:00:00Z'
                      updatedAt: '2026-03-24T16:09:55Z'
                      amount: 100.0
                      currency: usd
                      paymentMethod: stripe
                      status: completed
                      customer:
                        firstName: Alice
                        lastName: Buyer
                        email: alice-buyer@example.com
                      product:
                        id: jazz-workshop
                        name: Jazz Workshop
                        type: Course
                        date:
                      paymentDetails:
                        subtotal: 100.0
                        discounts: 0.0
                        donation: 0.0
                        total: 100.0
                        viewcyFee: 0.0
                        stripeFee: 0.0
                        refundedAmount: 0.0
                        netAmount: 100.0
                      refundable:
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/orders/{id}":
    get:
      summary: Get order
      tags:
      - Order
      operationId: getOrder
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: invalid
      responses:
        '200':
          description: Returns order detail
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  date:
                    type: string
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                  amount:
                    type: number
                    format: float
                  currency:
                    type: string
                  paymentMethod:
                    type: string
                  status:
                    type: string
                  customer:
                    type: object
                    properties:
                      firstName:
                        type: string
                      lastName:
                        type: string
                      email:
                        type: string
                    required:
                    - firstName
                    - lastName
                    - email
                  product:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      type:
                        type: string
                      date:
                        nullable: true
                    required:
                    - id
                    - name
                    - type
                    - date
                  paymentDetails:
                    type: object
                    properties:
                      subtotal:
                        type: number
                        format: float
                      discounts:
                        type: number
                        format: float
                      donation:
                        type: number
                        format: float
                      total:
                        type: number
                        format: float
                      viewcyFee:
                        type: number
                        format: float
                      stripeFee:
                        type: number
                        format: float
                      refundedAmount:
                        type: number
                        format: float
                      netAmount:
                        type: number
                        format: float
                    required:
                    - subtotal
                    - discounts
                    - donation
                    - total
                    - viewcyFee
                    - stripeFee
                    - refundedAmount
                    - netAmount
                  refundable:
                    type: boolean
                  orderItems:
                    type: array
                    items: {}
                  totalRefundableAmount:
                    type: integer
                  alreadyRefundedAmount:
                    type: number
                    format: float
                required:
                - object
                - id
                - date
                - createdAt
                - updatedAt
                - amount
                - currency
                - paymentMethod
                - status
                - customer
                - product
                - paymentDetails
                - refundable
                - orderItems
                - totalRefundableAmount
                - alreadyRefundedAmount
              examples:
                returns_order_detail:
                  summary: returns order detail
                  value:
                    object: order_detail
                    id: T31
                    date: '2026-03-24T16:09:56Z'
                    createdAt: '2026-03-24T16:09:56Z'
                    updatedAt: '2026-03-24T16:09:56Z'
                    amount: 75.0
                    currency: usd
                    paymentMethod: stripe
                    status: completed
                    customer:
                      firstName: Jane
                      lastName: Customer
                      email: jane-customer@example.com
                    product:
                      id: vocal-training
                      name: Vocal Training
                      type: Course
                      date:
                    paymentDetails:
                      subtotal: 75.0
                      discounts: 0.0
                      donation: 0.0
                      total: 75.0
                      viewcyFee: 0.0
                      stripeFee: 0.0
                      refundedAmount: 0.0
                      netAmount: 75.0
                    refundable: false
                    orderItems: []
                    totalRefundableAmount: 0
                    alreadyRefundedAmount: 0.0
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent order
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_order:
                  summary: returns 404 for non-existent order
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/patrons":
    get:
      summary: List patrons
      tags:
      - Patron
      operationId: listPatrons
      parameters:
      - name: currency
        in: query
        required: false
        schema:
          type: string
        example: usd
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: query
        in: query
        required: false
        schema:
          type: string
        example: alice
      - name: sort
        in: query
        required: false
        schema:
          type: string
        example: "-totalAmount"
      responses:
        '200':
          description: Returns the owner's patrons
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        id:
                          type: string
                        email:
                          type: string
                        firstName:
                          type: string
                        lastName:
                          type: string
                        totalAmount:
                          type: number
                          format: float
                        currency:
                          type: string
                        orderCount:
                          type: integer
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        memberSince:
                          nullable: true
                      required:
                      - object
                      - id
                      - email
                      - firstName
                      - lastName
                      - totalAmount
                      - currency
                      - orderCount
                      - createdAt
                      - updatedAt
                      - memberSince
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_the_owner's_patrons:
                  summary: returns the owner's patrons
                  value:
                    data:
                    - object: patron
                      id: 89537f39-8618-4c03-97c7-7a17bbb4009b
                      email: alice@example.com
                      firstName: Alice
                      lastName: Patron
                      totalAmount: 100.0
                      currency: usd
                      orderCount: 1
                      createdAt: '2026-03-24T16:09:54Z'
                      updatedAt: '2026-03-24T16:09:54Z'
                      memberSince:
                    - object: patron
                      id: 7efb3bd2-fc0d-4edf-ac24-3cb24cad71d9
                      email: bob@example.com
                      firstName: Bob
                      lastName: Customer
                      totalAmount: 50.0
                      currency: usd
                      orderCount: 1
                      createdAt: '2026-03-24T16:09:54Z'
                      updatedAt: '2026-03-24T16:09:54Z'
                      memberSince:
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/patrons/{id}":
    get:
      summary: Get patron
      tags:
      - Patron
      operationId: getPatron
      parameters:
      - name: currency
        in: query
        required: false
        schema:
          type: string
        example: usd
      - name: email
        in: query
        required: false
        schema:
          type: string
        example: guest-buyer@example.com
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: some-uuid
      responses:
        '200':
          description: Returns patron by uuid
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                    nullable: true
                  email:
                    type: string
                  firstName:
                    type: string
                  lastName:
                    type: string
                  totalAmount:
                    type: number
                    format: float
                  currency:
                    type: string
                  orderCount:
                    type: integer
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                  memberSince:
                    nullable: true
                required:
                - object
                - id
                - email
                - firstName
                - lastName
                - totalAmount
                - currency
                - orderCount
                - createdAt
                - updatedAt
                - memberSince
              examples:
                returns_patron_by_uuid:
                  summary: returns patron by UUID
                  value:
                    object: patron
                    id: 1e1aad23-2da3-4845-8b04-be2cd78ad066
                    email: patron@example.com
                    firstName: Test
                    lastName: Patron
                    totalAmount: 75.0
                    currency: usd
                    orderCount: 1
                    createdAt: '2026-03-24T16:09:55Z'
                    updatedAt: '2026-03-24T16:09:55Z'
                    memberSince:
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent patron
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_patron:
                  summary: returns 404 for non-existent patron
                  value:
                    object: error
                    status: 404
                    message: Resource not found
  "/revenue":
    get:
      summary: List revenue
      tags:
      - Revenue
      operationId: listRevenue
      parameters:
      - name: currency
        in: query
        required: false
        schema:
          type: string
        example: usd
      - name: dimension
        in: query
        required: false
        schema:
          type: string
        example: month
      - name: page
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
        example: 1
      - name: since
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-01'
      - name: sort
        in: query
        required: false
        schema:
          type: string
        example: "-grossSales"
      - name: until
        in: query
        required: false
        schema:
          type: string
        example: '2025-04-30'
      responses:
        '200':
          description: Returns total revenue when dimension is omitted
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        dimension:
                          type: string
                        dimensionId:
                          nullable: true
                          type: string
                        grossSales:
                          type: number
                          format: float
                        netSales:
                          type: number
                          format: float
                        onlineSales:
                          type: number
                          format: float
                        terminalSales:
                          type: number
                          format: float
                        cashSales:
                          type: number
                          format: float
                        refunds:
                          type: number
                          format: float
                        stripeFees:
                          type: number
                          format: float
                        viewcyFees:
                          type: number
                          format: float
                      required:
                      - object
                      - dimension
                      - dimensionId
                      - grossSales
                      - netSales
                      - onlineSales
                      - terminalSales
                      - cashSales
                      - refunds
                      - stripeFees
                      - viewcyFees
                  object:
                    type: string
                  page:
                    type: integer
                  totalPages:
                    type: integer
                  perPage:
                    type: integer
                  totalCount:
                    type: integer
                  hasNextPage:
                    type: boolean
                required:
                - data
                - object
                - page
                - totalPages
                - perPage
                - totalCount
                - hasNextPage
              examples:
                returns_total_revenue_when_dimension_is_'total':
                  summary: returns total revenue when dimension is 'total'
                  value:
                    data:
                    - object: revenue
                      dimension: Total
                      dimensionId:
                      grossSales: 150.0
                      netSales: 127.5
                      onlineSales: 150.0
                      terminalSales: 0.0
                      cashSales: 0.0
                      refunds: 0.0
                      stripeFees: 7.5
                      viewcyFees: 15.0
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 1
                    hasNextPage: false
                returns_revenue_grouped_by_date_dimension:
                  summary: returns revenue grouped by date dimension
                  value:
                    data:
                    - object: revenue
                      dimension: '2025-03-15'
                      dimensionId: '2025-03-15'
                      grossSales: 100.0
                      netSales: 85.0
                      onlineSales: 100.0
                      terminalSales: 0.0
                      cashSales: 0.0
                      refunds: 0.0
                      stripeFees: 5.0
                      viewcyFees: 10.0
                    - object: revenue
                      dimension: '2025-04-10'
                      dimensionId: '2025-04-10'
                      grossSales: 50.0
                      netSales: 42.5
                      onlineSales: 50.0
                      terminalSales: 0.0
                      cashSales: 0.0
                      refunds: 0.0
                      stripeFees: 2.5
                      viewcyFees: 5.0
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 2
                    hasNextPage: false
                returns_total_revenue_when_dimension_is_omitted:
                  summary: returns total revenue when dimension is omitted
                  value:
                    data:
                    - object: revenue
                      dimension: Total
                      dimensionId:
                      grossSales: 150.0
                      netSales: 127.5
                      onlineSales: 150.0
                      terminalSales: 0.0
                      cashSales: 0.0
                      refunds: 0.0
                      stripeFees: 7.5
                      viewcyFees: 15.0
                    object: list
                    page: 1
                    totalPages: 1
                    perPage: 25
                    totalCount: 1
                    hasNextPage: false
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
  "/tickets/{id}":
    get:
      summary: Get ticket
      tags:
      - Ticket
      operationId: getTicket
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: df61ef9f-07a8-472b-aef5-965cc41b1c58
      responses:
        '200':
          description: Returns the ticket
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  id:
                    type: string
                  name:
                    type: string
                  description:
                    nullable: true
                  kind:
                    type: string
                  attendanceType:
                    type: string
                  visibilityScope:
                    type: string
                  pricingMode:
                    type: string
                  price:
                    type: number
                    format: float
                  fee:
                    type: number
                    format: float
                  currency:
                    type: string
                  quantity:
                    nullable: true
                  quantityPerOrder:
                    nullable: true
                  startsAt:
                    nullable: true
                  archived:
                    type: boolean
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                required:
                - object
                - id
                - name
                - description
                - kind
                - attendanceType
                - visibilityScope
                - pricingMode
                - price
                - fee
                - currency
                - quantity
                - quantityPerOrder
                - startsAt
                - archived
                - createdAt
                - updatedAt
              examples:
                returns_the_ticket:
                  summary: returns the ticket
                  value:
                    object: ticket
                    id: afd0709e-9473-4c7a-bf20-9c8678565eeb
                    name: General Admission
                    description:
                    kind: paid_pass
                    attendanceType: in-person
                    visibilityScope: standard
                    pricingMode: fixed
                    price: 9.99
                    fee: 0.0
                    currency: usd
                    quantity:
                    quantityPerOrder:
                    startsAt:
                    archived: false
                    createdAt: '2026-03-24T16:09:58Z'
                    updatedAt: '2026-03-24T16:09:58Z'
        '401':
          description: Returns 401
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_401:
                  summary: returns 401
                  value:
                    object: error
                    status: 401
                    message: Authentication required
        '404':
          description: Returns 404 for non-existent ticket
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                  status:
                    type: integer
                  message:
                    type: string
                required:
                - object
                - status
                - message
              examples:
                returns_404_for_non-existent_ticket:
                  summary: returns 404 for non-existent ticket
                  value:
                    object: error
                    status: 404
                    message: Resource not found
components:
  securitySchemes:
    apiToken:
      type: apiKey
      in: header
      name: Authorization
      description: API token passed as `Bearer <token>` in the Authorization header
