openapi: 3.1.0
info:
  title: Award Force API
  version: '2.3'
  description: |
    The Award Force API enables you to programmatically manage awards, competitions, scholarships, and recognition programs.

    Use this API to:
    - Create and manage entries and submissions
    - Automate judging workflows and assignments
    - Process entry fees and payments
    - Generate reports and analytics
    - Integrate with external systems via webhooks

    All API requests require authentication using an API key provided in the `X-Api-Key` header.
  license:
    name: Creative Force Client Subscription Terms
    url: https://creativeforce.team/agreement/
servers:
  - url: https://api.us.cr4ce.com
    description: US regional endpoint
  - url: https://api.eu.cr4ce.com
    description: EU regional endpoint
  - url: https://api.au.cr4ce.com
    description: Australasia regional endpoint
  - url: https://api.ca.cr4ce.com
    description: Canada regional endpoint
  - url: https://api.hk.cr4ce.com
    description: Hong Kong regional endpoint
security:
  - ApiKeyAuth: []
tags:
  - name: Account
    description: |-
      Use this operation to retrieve information about your organization account.
      The account resource provides metadata about the tenant associated with your API key.

      Note: Account information is read-only and contains organization-level settings and identifiers.
  - name: Assignments
    description: |-
      Use these operations to manage judging assignments for evaluating entries.
      Assignments connect judges (or roles) with entries and score sets to facilitate the review process.

      Assignments can be created individually or in bulk (asynchronous operations).
      Each assignment tracks completion status, scores, and panel membership.
      Assignments enable structured evaluation workflows with configurable score sets.
  - name: Attachments
    description: |-
      Use these operations to manage files uploaded to entries through attachment tabs.
      Attachments are distinct from field-based file uploads and allow for supplementary materials.

      Each attachment can have its own metadata and custom fields for categorization.
      Attachments remain associated with their entry throughout the entry lifecycle.
  - name: Categories
    description: |-
      Use these operations to manage competition categories or award divisions.
      Categories organize entries into logical groups and can be hierarchical with parent-child relationships.

      Each category can have its own entry form, chapter availability, entry limits, and custom labels.
      Categories support translated names and descriptions for multi-language programs.
  - name: Chapters
    description: |-
      Use these operations to manage geographic or organizational divisions within your programs.
      Chapters enable you to run regional competitions, manage local awards, or organize by business units.

      Entries can be assigned to chapters, and chapters can have their own administrators and configurations.
      Chapters support translated names and custom images for branding.
  - name: Contributors
    description: |-
      Use these operations to manage additional people associated with entries beyond the primary entrant.
      Contributors represent team members, collaborators, or co-authors on a submission.

      Each contributor can have their own custom fields and data collection requirements.
      Contributors are organized by tabs and can be managed independently from the main entry.
  - name: Documents
    description: |-
      Use these operations to generate and retrieve PDF documents and data exports.
      Documents can be created based on entry data, user data, or other program information.

      Document generation is asynchronous - after creating a document, poll the endpoint to check when generation is complete.
      Generated documents are available for download and can be associated with specific entrants or entries.
  - name: Entries
    description: |-
      Use these operations to manage entries (submissions) to your awards, competitions, or recognition programs.
      Entries are the core entity that flows through the entire lifecycle from submission to judging to winner selection.

      Entries can contain custom form fields, file uploads, contributors, and be organized by categories and chapters.
      Each entry goes through various statuses including draft, submitted, under review, and finalist stages.
  - name: Entries (realtime)
    description: |-
      Use these operations to perform granular updates on entries without replacing the entire resource.
      These endpoints enable real-time updates to specific entry properties such as:
      title, category assignment, chapter assignment, individual field values, file uploads, tags, and recusal status.

      These operations are optimized for interactive programs that need to update entries incrementally.
  - name: Fields
    description: |-
      Use these operations to manage custom form fields used to collect data throughout your programs.
      Fields can be attached to entries, users, contributors, attachments, and other resources.

      Supported field types include text, textarea, select, multi-select, date, file upload, table, and more.
      Fields support conditional logic, validation rules, and different protection levels.
      Note: Field deletion and updates are managed through the Award Force interface.
  - name: Files
    description: |-
      Use these operations to retrieve information about uploaded files.
      Files provide metadata and download links for content uploaded throughout the system.

      Access files using their secure token identifiers.
      Note: Files are read-only via this endpoint - file uploads are handled through resource-specific upload endpoints.
  - name: Leaderboard
    description: |-
      Use these operations to retrieve ranking results and scores for entries.
      The leaderboard shows how entries rank based on score sets, with support for filtering by category, chapter, and tags.

      Results can be filtered to show specific subsets of the competition.
      Note: The leaderboard is read-only and reflects calculated results from the judging process.
  - name: Orders
    description: |-
      Use these operations to manage payment transactions for entry fees and other charges.
      Orders represent financial transactions processed through your program.

      Each order contains line items, tracks payment status, and can operate in test or live mode.
      Orders are associated with seasons and can be queried for financial reporting.
  - name: Review tasks
    description: |-
      Use these operations to manage individual review and evaluation activities.
      Review tasks represent specific actions that judges or administrators need to complete during the evaluation process.

      Tasks track timestamps, decisions, and judge associations.
      Review tasks integrate with the broader judging workflow and status tracking.
  - name: Rounds
    description: |-
      Use these operations to retrieve round information for your programs.
      Rounds represent phases within a season, such as entry rounds, judging rounds, or finalist rounds.

      Each round has specific start and end dates, associated forms, and can be scoped to specific chapters.
      Note: Rounds are read-only via the API and must be managed through the Award Force interface.
  - name: Score sets
    description: |-
      Use these operations to retrieve score set configurations and evaluation criteria.
      Score sets define the questions, scales, and calculation methods used to evaluate entries.

      Score sets can operate in different modes including judging, ranking, and decision-making.
      Note: Score sets are read-only via the API and must be configured through the Award Force interface.
  - name: Seasons
    description: |-
      Use these operations to retrieve information about seasons (program cycles).
      A season represents a time-bound program instance, such as "2026 Awards" or "Q1 2026 Scholarship Round".

      Seasons contain forms, rounds, categories, and chapters.
      Seasons progress through statuses: draft, active, archived, and destroyed.
      Note: Seasons are read-only via the API and must be managed through the Award Force interface.
  - name: Taxes
    description: |-
      Use these operations to retrieve tax configurations for financial transactions.
      Tax settings define how taxes are calculated and applied to orders and payments.

      Note: Tax configurations are read-only via the API and must be managed through the Award Force interface.
  - name: Users
    description: |-
      Use these operations to manage user accounts in your organization.
      Users represent people who interact with your programs, including entrants, judges, administrators, and other roles.

      Users can be assigned roles, have custom profile fields, receive notifications, and authenticate via API tokens.
      Each user has a unique slug identifier and can participate across multiple seasons.
  - name: Webhooks
    description: |-
      Use these operations to manage webhook subscriptions for real-time event notifications.
      Webhooks notify your external systems when events occur in Award Force, such as entry submissions, status changes, or payment completions.

      Available events include: entry created, entry submitted, entry status changed, payment success, user confirmed, and 20+ more.
      Configure webhooks to send HTTP POST requests to your specified URLs with event payloads.
paths:
  /account:
    get:
      summary: Get account
      operationId: GetAccountV23
      tags:
        - Account
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Account retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
            application/xml:
              schema:
                $ref: '#/components/schemas/Account'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the account associated with the API key.
  /assignment:
    get:
      summary: List assignments
      operationId: GetAssignmentCollectionV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/assignmentSlugFilter'
        - $ref: '#/components/parameters/assignmentStatusFilter'
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/judgeFilter'
        - $ref: '#/components/parameters/methodFilter'
        - $ref: '#/components/parameters/panelFilter'
        - $ref: '#/components/parameters/scoreSetFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/stateFilter'
        - $ref: '#/components/parameters/tagFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/trashedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/assignmentOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of assignments.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentList'
            application/xml:
              schema:
                $ref: '#/components/schemas/AssignmentList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List assignments that match the specified filters.
    post:
      summary: Create assignment
      operationId: PostAssignmentV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '202':
          description: |-
            Assignment creation accepted.

            The response body is empty. Created assignments become available via `GET /assignment` once processing completes.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a new assignment.
      requestBody:
        $ref: '#/components/requestBodies/AssignmentCreate'
  /assignment/{assignment_slug}:
    parameters:
      - $ref: '#/components/parameters/assignmentSlug'
    get:
      summary: Get assignment
      operationId: GetAssignmentV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Assignment retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Assignment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Assignment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the assignment identified by the specified slug.
    delete:
      summary: Delete assignment
      operationId: DeleteAssignmentV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the assignment identified by the specified slug.
      x-mint:
        content: |-
          <Note>
          Only assignments with `method` of `manual` or `random` can be deleted. Other methods (`automatic`, `stray`, `recused`) return `422`.
          </Note>
  /entry/{entry_slug}/recuse:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Recuse assignment
      operationId: PutEntryRecuseV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: Assignment recused.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Recuse a judge from the assignment for the specified entry.
      requestBody:
        $ref: '#/components/requestBodies/EntryAssignmentRecusal'
  /entry/{entry_slug}/unrecuse:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Unrecuse assignment
      operationId: PutEntryUnrecuseV23
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: Assignment recusal removed.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Remove a judge recusal from the assignment for the specified entry.
      requestBody:
        $ref: '#/components/requestBodies/EntryAssignmentRecusal'
  /attachment:
    get:
      summary: List attachments
      operationId: GetAttachmentCollectionV23
      tags:
        - Attachments
      parameters:
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/entryFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/tabFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/attachmentOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of attachments.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentList'
            application/xml:
              schema:
                $ref: '#/components/schemas/AttachmentList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List attachments.
  /attachment/{token}:
    parameters:
      - $ref: '#/components/parameters/token'
    get:
      summary: Get attachment
      operationId: GetAttachmentV23
      tags:
        - Attachments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Attachment retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the attachment identified by the specified token. Unknown tokens return `400 Bad Request`.
    put:
      summary: Update attachment
      operationId: PutAttachmentV23
      tags:
        - Attachments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Attachment updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the attachment identified by the specified token.
      x-mint:
        content: |-
          <Note>
          Every property in the request body is optional; only properties that are supplied are written. Properties that are omitted retain their current value. On success the response carries the post-update attachment representation.
          </Note>

          <Note>
          Attachment fields are linked to the attachment and are distinct from form fields. If the attachment has no attachment fields, you can omit `attachment_fields` from the request body.
          </Note>
      requestBody:
        $ref: '#/components/requestBodies/AttachmentUpdate'
    delete:
      summary: Delete attachment
      operationId: DeleteAttachmentV23
      tags:
        - Attachments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the attachment identified by the specified token. Unknown tokens return `400 Bad Request`.
  /entry/{entry_slug}/attachment/{tab_slug}:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
      - $ref: '#/components/parameters/tabSlug'
    post:
      summary: Create attachment
      operationId: PostEntryAttachmentV23
      tags:
        - Attachments
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '201':
          description: Attachment created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentCreateResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/AttachmentCreateResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create an attachment on the specified entry under the specified tab.
      x-mint:
        content: |-
          <Note>
          The tab must be of type `Attachments`; tabs of other types are rejected.
          </Note>

          <Note>
          Attachment fields are linked to the attachment and are distinct from form fields. If the attachment has no attachment fields, you can omit `attachment_fields` from the request body.
          </Note>

          <Warning>
          The uploaded file is validated and stored before the response is returned; the attachment itself is finalized shortly after. A `GET` on the returned `Location` immediately after the `201` may briefly return a response with a `null` body until finalization is complete.
          </Warning>
      requestBody:
        $ref: '#/components/requestBodies/AttachmentUpload'
  /category:
    get:
      summary: List categories
      operationId: GetCategoryCollectionV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/activeInactiveStatusFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/formFilter'
        - $ref: '#/components/parameters/parentCategoryFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/categoryOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of categories.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryList'
            application/xml:
              schema:
                $ref: '#/components/schemas/CategoryList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List categories.
    post:
      summary: Create category
      operationId: PostCategoryV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/CategoryCreate'
      responses:
        '201':
          description: Category created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
            application/xml:
              schema:
                $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a category.
  /category/{category_slug}:
    parameters:
      - $ref: '#/components/parameters/categorySlug'
    get:
      summary: Get category
      operationId: GetCategoryV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Category retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
            application/xml:
              schema:
                $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the category identified by the specified slug.
      x-mint:
        content: |-
          The response includes all category fields.
          Images include a download link.
    put:
      summary: Update category
      operationId: PutCategoryV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/CategoryUpdate'
      responses:
        '200':
          description: Category updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
            application/xml:
              schema:
                $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the category identified by the specified slug.
    delete:
      summary: Delete category
      operationId: DeleteCategoryV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the category identified by the specified slug.
      x-mint:
        content: Any child categories are not deleted. They move up one level in the hierarchy to take the place of the deleted category.
  /category/{category_slug}/upload:
    parameters:
      - $ref: '#/components/parameters/categorySlug'
    post:
      summary: Upload category file
      operationId: PostCategoryUploadV23
      tags:
        - Categories
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Category file uploaded.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/UploadResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Upload a file for the category identified by the specified slug.
      requestBody:
        $ref: '#/components/requestBodies/CategoryUpload'
      x-mint:
        content: |-
          Use this operation to upload a category image.

          <Warning>
          The uploaded file is validated and stored before the response is returned; the image itself is processed shortly after. A `GET` on the returned `Location` immediately after the `201` may briefly return a response with a `null` body until processing is complete.
          </Warning>
  /chapter:
    get:
      summary: List chapters
      operationId: GetChapterCollectionV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/activeInactiveStatusFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/chapterOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of chapters.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChapterList'
            application/xml:
              schema:
                $ref: '#/components/schemas/ChapterList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List chapters.
    post:
      summary: Create chapter
      operationId: PostChapterV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/ChapterCreate'
      responses:
        '201':
          description: Chapter created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Chapter'
            application/xml:
              schema:
                $ref: '#/components/schemas/Chapter'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a chapter.
  /chapter/{chapter_slug}:
    parameters:
      - $ref: '#/components/parameters/chapterSlug'
    get:
      summary: Get chapter
      operationId: GetChapterV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Chapter retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Chapter'
            application/xml:
              schema:
                $ref: '#/components/schemas/Chapter'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the chapter identified by the specified slug.
    put:
      summary: Update chapter
      operationId: PutChapterV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/ChapterUpdate'
      responses:
        '200':
          description: Chapter updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Chapter'
            application/xml:
              schema:
                $ref: '#/components/schemas/Chapter'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the chapter identified by the specified slug.
    delete:
      summary: Delete chapter
      operationId: DeleteChapterV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the chapter identified by the specified slug.
  /chapter/{chapter_slug}/upload:
    parameters:
      - $ref: '#/components/parameters/chapterSlug'
    post:
      summary: Upload chapter file
      operationId: PostChapterUploadV23
      tags:
        - Chapters
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Chapter file uploaded.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/UploadResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Upload a file for the chapter identified by the specified slug.
      requestBody:
        $ref: '#/components/requestBodies/ChapterUpload'
      x-mint:
        content: |-
          Use this operation to upload a chapter image.

          <Warning>
          The uploaded file is validated and stored before the response is returned; the image itself is processed shortly after. A `GET` on the returned `Location` immediately after the `201` may briefly return a response with a `null` body until processing is complete.
          </Warning>
  /contributor:
    get:
      summary: List contributors
      operationId: GetContributorCollectionV23
      tags:
        - Contributors
      parameters:
        - $ref: '#/components/parameters/entryFilter'
        - $ref: '#/components/parameters/tabFilter'
        - $ref: '#/components/parameters/entryStatusFilter'
        - $ref: '#/components/parameters/entryPaymentStatusFilter'
        - $ref: '#/components/parameters/entryModerationFilter'
        - $ref: '#/components/parameters/entryReviewStatusFilter'
        - $ref: '#/components/parameters/tagFilter'
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/contributorOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of contributors.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributorList'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContributorList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List contributors.
    post:
      summary: Create contributor
      operationId: PostContributorV23
      tags:
        - Contributors
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/ContributorCreate'
      responses:
        '201':
          description: Contributor created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contributor'
            application/xml:
              schema:
                $ref: '#/components/schemas/Contributor'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a contributor.
  /contributor/{contributor_slug}:
    parameters:
      - $ref: '#/components/parameters/contributorSlug'
    get:
      summary: Get contributor
      operationId: GetContributorV23
      tags:
        - Contributors
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Contributor retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contributor'
            application/xml:
              schema:
                $ref: '#/components/schemas/Contributor'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the contributor identified by the specified slug.
    put:
      summary: Update contributor
      operationId: PutContributorV23
      tags:
        - Contributors
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/ContributorUpdate'
      responses:
        '200':
          description: Contributor updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contributor'
            application/xml:
              schema:
                $ref: '#/components/schemas/Contributor'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the contributor identified by the specified slug.
    delete:
      summary: Delete contributor
      operationId: DeleteContributorV23
      tags:
        - Contributors
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the contributor identified by the specified slug.
  /document:
    get:
      summary: List documents
      operationId: GetDocumentCollectionV23
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/documentEntrantFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/trashedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/documentOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of documents.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentList'
            application/xml:
              schema:
                $ref: '#/components/schemas/DocumentList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List documents.
    post:
      summary: Create document
      operationId: PostDocumentV23
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/DocumentCreate'
      responses:
        '202':
          description: Document creation accepted.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a document.
      x-mint:
        content: |-
          Documents are generated asynchronously. A successful request returns `202 Accepted` with an empty body and does not include a `Location` header.

          The generated document does not exist yet when the response is returned. Poll `GET /document` to retrieve it once generation completes.
  /document/{document_slug}:
    get:
      summary: Get document
      operationId: GetDocumentV23
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/documentSlug'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Document retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
            application/xml:
              schema:
                $ref: '#/components/schemas/Document'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the document identified by the specified slug.
    delete:
      summary: Delete document
      operationId: DeleteDocumentV23
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/documentSlug'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the document identified by the specified slug.
  /entry:
    get:
      summary: List entries
      operationId: GetEntryCollectionV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/entryEntrantFilter'
        - $ref: '#/components/parameters/entryModerationFilter'
        - $ref: '#/components/parameters/entryPaymentStatusFilter'
        - $ref: '#/components/parameters/entryPriceFilter'
        - $ref: '#/components/parameters/entryReviewStatusFilter'
        - $ref: '#/components/parameters/entryStatusFilter'
        - $ref: '#/components/parameters/entryTitleFilter'
        - $ref: '#/components/parameters/entryUpdatedAtFilter'
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/formFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/tagFilter'
        - $ref: '#/components/parameters/archivedFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/entryOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of entries.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryList'
            application/xml:
              schema:
                $ref: '#/components/schemas/EntryList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List entries.
    post:
      summary: Create entry
      operationId: PostEntryV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '201':
          description: Entry created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      requestBody:
        $ref: '#/components/requestBodies/EntryCreate'
      description: Create an entry.
  /entry/{entry_slug}:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    get:
      summary: Get entry
      operationId: GetEntryV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Entry retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the entry identified by the specified slug.
    put:
      summary: Update entry
      operationId: PutEntryV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/EntryUpdate'
      responses:
        '200':
          description: Entry updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the entry identified by the specified slug.
      x-mint:
        content: |-
          <Note>
          Only the properties you include in the request body are updated; omitted properties keep their current values.
          </Note>

          <Note>
          Within `entry_fields`, only the field slugs you include are updated, and any field slug that does not exist on the form for the entry is ignored. For most field types the value you supply replaces the stored value. Table fields are merged cell by cell: include only the cells you want to change, and send a cell with an empty value to clear it.
          </Note>
    delete:
      summary: Delete entry
      operationId: DeleteEntryV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the entry identified by the specified slug. The entry is moved to the trash and can be restored; it is not permanently removed.
  /entry/{entry_slug}/tag/{tags}:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Tag entry
      operationId: PutEntryTagV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/entryTagsToAdd'
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Entry tagged.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Add tags to the entry identified by the specified slug.
    delete:
      summary: Untag entry
      operationId: DeleteEntryTagV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/entryTagsToRemove'
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Entry untagged.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Remove tags from the entry identified by the specified slug.
      x-mint:
        content: |-
          <Note>
          Removing a tag that is not currently applied to the entry has no effect and still returns `201` with the current tags for the entry. Inspect `tags` in the response to confirm the result.
          </Note>
  /entry/{entry_slug}/upload/{field_slug}:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
      - $ref: '#/components/parameters/fieldSlug'
    post:
      summary: Upload entry file
      operationId: PostEntryUploadV23
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Entry file uploaded.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/UploadResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Upload a file to the specified field for the entry identified by the specified slug.
      requestBody:
        $ref: '#/components/requestBodies/FileUpload'
      x-mint:
        content: |-
          Use this operation to upload a file to a file field on the entry.

          <Warning>
          The uploaded file is validated and stored before the response is returned; the file itself is processed shortly after. A `GET` on the returned `Location` immediately after the `201` may briefly return a response with a `null` body until processing is complete.
          </Warning>
  /attachment/{token}/update-field/{field_slug}:
    parameters:
      - $ref: '#/components/parameters/token'
      - $ref: '#/components/parameters/fieldSlug'
    put:
      summary: Update attachment field
      operationId: PutAttachmentUpdateFieldV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: Attachment field updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
            application/xml:
              schema:
                $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update an attachment field for the attachment identified by the specified token.
      requestBody:
        $ref: '#/components/requestBodies/AttachmentFieldUpdate'
  /contributor/{contributor_slug}/update-field/{field_slug}:
    parameters:
      - $ref: '#/components/parameters/contributorSlug'
      - $ref: '#/components/parameters/fieldSlug'
    put:
      summary: Update contributor field
      operationId: PutContributorUpdateFieldV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: Contributor field updated.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contributor'
            application/xml:
              schema:
                $ref: '#/components/schemas/Contributor'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update a contributor field for the contributor identified by the specified slug.
      requestBody:
        $ref: '#/components/requestBodies/ContributorFieldUpdate'
  /entry/{entry_slug}/update-category:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Update entry category
      operationId: PutEntryUpdateCategoryV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/EntryCategoryUpdate'
      responses:
        '200':
          description: Entry category updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the category for the entry identified by the specified slug.
  /entry/{entry_slug}/update-chapter:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Update entry chapter
      operationId: PutEntryUpdateChapterV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/EntryChapterUpdate'
      responses:
        '200':
          description: Entry chapter updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the chapter for the entry identified by the specified slug.
  /entry/{entry_slug}/update-field/{field_slug}:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
      - $ref: '#/components/parameters/fieldSlug'
    put:
      summary: Update entry field
      operationId: PutEntryUpdateFieldV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/EntryFieldUpdate'
      responses:
        '200':
          description: Entry field updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update a field for the entry identified by the specified slug.
  /entry/{entry_slug}/update-title:
    parameters:
      - $ref: '#/components/parameters/entrySlug'
    put:
      summary: Update entry title
      operationId: PutEntryUpdateTitleV23
      tags:
        - Entries (realtime)
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/EntryTitleUpdate'
      responses:
        '200':
          description: Entry title updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
            application/xml:
              schema:
                $ref: '#/components/schemas/Entry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the title for the entry identified by the specified slug.
  /field:
    get:
      summary: List fields
      operationId: GetFieldCollectionV23
      tags:
        - Fields
      parameters:
        - $ref: '#/components/parameters/fieldConditionalFilter'
        - $ref: '#/components/parameters/fieldProtectionFilter'
        - $ref: '#/components/parameters/fieldResourceFilter'
        - $ref: '#/components/parameters/fieldTypeFilter'
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/formFilter'
        - $ref: '#/components/parameters/tabFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/fieldOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of fields.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldList'
            application/xml:
              schema:
                $ref: '#/components/schemas/FieldList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List fields.
    post:
      summary: Create field
      operationId: PostFieldV23
      tags:
        - Fields
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/FieldCreate'
      responses:
        '201':
          description: Field created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Field'
            application/xml:
              schema:
                $ref: '#/components/schemas/Field'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a field.
      x-mint:
        content: |-
          <Note>
          You cannot create `formula` or `ai` field types through the API.
          </Note>
  /file/{token}:
    parameters:
      - $ref: '#/components/parameters/token'
    get:
      summary: Get file information
      operationId: GetFileV23
      tags:
        - Files
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: File information retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
            application/xml:
              schema:
                $ref: '#/components/schemas/File'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get file information for the file identified by the specified token. Unknown tokens return `400 Bad Request`.
  /leaderboard:
    get:
      summary: List leaderboard results
      operationId: GetLeaderboardCollectionV23
      tags:
        - Leaderboard
      parameters:
        - $ref: '#/components/parameters/leaderboardScoreSetFilter'
        - $ref: '#/components/parameters/categoryFilter'
        - $ref: '#/components/parameters/chapterFilter'
        - $ref: '#/components/parameters/entryFilter'
        - $ref: '#/components/parameters/tagFilter'
        - $ref: '#/components/parameters/archivedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/leaderboardOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of leaderboard results.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardList'
            application/xml:
              schema:
                $ref: '#/components/schemas/LeaderboardList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List leaderboard results. A missing or unresolvable `score_set` parameter returns `404 Not Found`.
  /order:
    get:
      summary: List orders
      operationId: GetOrderCollectionV23
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/orderStatusFilter'
        - $ref: '#/components/parameters/orderTestFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/orderOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of orders.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderList'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List orders.
  /order/{order_slug}:
    parameters:
      - $ref: '#/components/parameters/orderSlug'
    get:
      summary: Get order
      operationId: GetOrderV23
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Order retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the order identified by the specified slug.
    put:
      summary: Update order
      operationId: PutOrderV23
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/OrderUpdate'
      responses:
        '200':
          description: Order updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the billing information and status of the order identified by the specified slug.
  /review-task:
    post:
      summary: Create review task
      operationId: PostReviewTaskV23
      tags:
        - Review tasks
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Review task created.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewTask'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReviewTask'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      requestBody:
        $ref: '#/components/requestBodies/ReviewTaskCreate'
      description: Create a review task.
    get:
      summary: List review tasks
      operationId: GetReviewTaskCollectionV23
      tags:
        - Review tasks
      parameters:
        - $ref: '#/components/parameters/reviewTaskActionAtFilter'
        - $ref: '#/components/parameters/reviewTaskCreatedAtFilter'
        - $ref: '#/components/parameters/reviewTaskUpdatedAtFilter'
        - $ref: '#/components/parameters/decisionFilter'
        - $ref: '#/components/parameters/reviewStageFilter'
        - $ref: '#/components/parameters/reviewerFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of review tasks.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewTaskList'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReviewTaskList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List review tasks.
  /review-task/{token}:
    parameters:
      - $ref: '#/components/parameters/token'
    get:
      summary: Get review task
      operationId: GetReviewTaskV23
      tags:
        - Review tasks
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Review task retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewTask'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReviewTask'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the review task identified by the specified token.
    delete:
      summary: Delete review task
      operationId: DeleteReviewTaskV23
      tags:
        - Review tasks
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the review task identified by the specified token.
  /round:
    get:
      summary: List rounds
      operationId: GetRoundCollectionV23
      tags:
        - Rounds
      parameters:
        - $ref: '#/components/parameters/roundTypeFilter'
        - $ref: '#/components/parameters/formFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/roundSlugFilter'
        - $ref: '#/components/parameters/roundOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/trashedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of rounds.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoundList'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoundList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List rounds.
  /round/{round_slug}:
    parameters:
      - $ref: '#/components/parameters/roundSlug'
    get:
      summary: Get round
      operationId: GetRoundV23
      tags:
        - Rounds
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Round retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Round'
            application/xml:
              schema:
                $ref: '#/components/schemas/Round'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the round identified by the specified slug.
  /score-set:
    get:
      summary: List score sets
      operationId: GetScoreSetCollectionV23
      tags:
        - Score sets
      parameters:
        - $ref: '#/components/parameters/scoreSetModeFilter'
        - $ref: '#/components/parameters/formFilter'
        - $ref: '#/components/parameters/seasonFilter'
        - $ref: '#/components/parameters/scoreSetOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/archivedFilter'
        - $ref: '#/components/parameters/trashedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of score sets.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreSetList'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScoreSetList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List score sets.
  /score-set/{score_set_slug}:
    parameters:
      - $ref: '#/components/parameters/scoreSetSlug'
    get:
      summary: Get score set
      operationId: GetScoreSetV23
      tags:
        - Score sets
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Score set retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreSet'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScoreSet'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the score set identified by the specified slug.
  /season:
    get:
      summary: List seasons
      operationId: GetSeasonCollectionV23
      tags:
        - Seasons
      parameters:
        - $ref: '#/components/parameters/seasonOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of seasons.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeasonList'
            application/xml:
              schema:
                $ref: '#/components/schemas/SeasonList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List seasons.
  /season/{season_slug}:
    parameters:
      - $ref: '#/components/parameters/seasonSlug'
    get:
      summary: Get season
      operationId: GetSeasonV23
      tags:
        - Seasons
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Season retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Season'
            application/xml:
              schema:
                $ref: '#/components/schemas/Season'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the season identified by the specified slug.
  /tax:
    get:
      summary: List taxes
      operationId: GetTaxCollectionV23
      tags:
        - Taxes
      parameters:
        - $ref: '#/components/parameters/taxOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of taxes.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxList'
            application/xml:
              schema:
                $ref: '#/components/schemas/TaxList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List taxes.
  /user:
    get:
      summary: List users
      operationId: GetUserCollectionV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userActiveInSeasonFilter'
        - $ref: '#/components/parameters/userConfirmationFilter'
        - $ref: '#/components/parameters/userEntriesFilter'
        - $ref: '#/components/parameters/userLanguageFilter'
        - $ref: '#/components/parameters/userRoleFilter'
        - $ref: '#/components/parameters/userSeasonJoinedFilter'
        - $ref: '#/components/parameters/deletedFilter'
        - $ref: '#/components/parameters/trashedFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/userOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of users.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserList'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List users.
    post:
      summary: Create user
      operationId: PostUserV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/UserCreate'
      responses:
        '201':
          description: |-
            User created, or an existing user added to the account.

            Two outcomes share this status code:

            - **New user** — a new user record is created. The body is the full user resource and the `Location` header links to it.
            - **Existing user** — the email or mobile already belongs to a user on another account, so that user is added to the current account instead. The body is a confirmation message and no `Location` header is returned.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/User'
                  - type: object
                    description: Confirmation returned when an existing user is added to the account.
                    properties:
                      message:
                        type: string
                        description: Confirmation that an existing user was added to the account.
            application/xml:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/User'
                  - type: object
                    description: Confirmation returned when an existing user is added to the account.
                    properties:
                      message:
                        type: string
                        description: Confirmation that an existing user was added to the account.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a user.
  /user/{user_slug}:
    get:
      summary: Get user
      operationId: GetUserV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userSlugParameter'
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: User retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the user identified by the specified slug or email address.
      x-mint:
        content: The response includes all user fields. File fields include a download link.
    put:
      summary: Update user
      operationId: PutUserV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userSlug'
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/UserUpdate'
      responses:
        '200':
          description: User updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the user identified by the specified slug.
    delete:
      summary: Delete user
      operationId: DeleteUserV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userSlug'
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the user identified by the specified slug.
  /user/{user_slug}/auth-token:
    parameters:
      - $ref: '#/components/parameters/userSlug'
    get:
      summary: Get user auth token
      operationId: GetUserAuthTokenV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: Auth token retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
            application/xml:
              schema:
                $ref: '#/components/schemas/AuthToken'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get an SSO auth token for the specified user.
      x-mint:
        content: |-
          Use the token to log the user into the app using SSO.

          <Card
            title="Creating your own SSO integration"
            icon="key"
            href="https://support.awardforce.com/hc/en-us/articles/360002282716-Creating-your-own-SSO-integration"
          >
            Learn how to integrate Award Force with your own SSO provider.
          </Card>
  /user/{user_slug}/restore:
    parameters:
      - $ref: '#/components/parameters/userSlug'
    post:
      summary: Restore user
      operationId: PostUserRestoreV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '204':
          description: User restored.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Restore the previously deleted user identified by the specified slug.
  /user/{user_slug}/upload/{field_slug}:
    parameters:
      - $ref: '#/components/parameters/userSlug'
      - $ref: '#/components/parameters/fieldSlug'
    post:
      summary: Upload user file
      operationId: PostUserUploadV23
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Accept'
      responses:
        '201':
          description: User file uploaded.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/UploadResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Upload a file to the specified field for the user identified by the specified slug.
      requestBody:
        $ref: '#/components/requestBodies/FileUpload'
      x-mint:
        content: |-
          Use this operation to upload a file to a file field on the user.

          <Warning>
          The uploaded file is validated and stored before the response is returned; the file itself is processed shortly after. A `GET` on the returned `Location` immediately after the `201` may briefly return a response with a `null` body until processing is complete.
          </Warning>
  /webhook:
    get:
      summary: List webhooks
      operationId: GetWebhookCollectionV23
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/webhookHttpMethodFilter'
        - $ref: '#/components/parameters/webhookSubscriptionEventFilter'
        - $ref: '#/components/parameters/webhookUrlFilter'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/perPage'
        - $ref: '#/components/parameters/webhookOrder'
        - $ref: '#/components/parameters/sortDirection'
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: Paginated list of webhooks.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookList'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List webhooks.
    post:
      summary: Create webhook
      operationId: PostWebhookV23
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/Accept'
      requestBody:
        $ref: '#/components/requestBodies/WebhookCreate'
      responses:
        '201':
          description: Webhook created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
            application/xml:
              schema:
                $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Create a webhook.
      x-mint:
        content: |-
          Each webhook subscribes to one or more events. When a subscribed event occurs, the webhook URL receives a payload describing the event.

          **Supported subscription events:**

          - allocation_created
          - allocation_payment_created
          - allocation_payment_deleted
          - allocation_payment_status_changed
          - allocation_payment_updated
          - assignment_completed
          - assignment_created
          - collaborator_invited
          - document_created
          - document_deleted
          - document_updated
          - entry_category_changed
          - entry_chapter_changed
          - entry_copied
          - entry_created
          - entry_deleted
          - entry_eligible
          - entry_ineligible
          - entry_moderated
          - entry_resubmitted
          - entry_submitted
          - entry_tagged
          - entry_updated
          - field_value_updated
          - membership_registered (user created)
          - order_payment_pending
          - order_payment_success
          - review_task_created
          - review_task_submitted
          - role_granted
          - user_updated
  /webhook/{webhook_slug}:
    get:
      summary: Get webhook
      operationId: GetWebhookV23
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/webhookSlug'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Webhook retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
            application/xml:
              schema:
                $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the webhook identified by the specified slug.
    put:
      summary: Update webhook
      operationId: PutWebhookV23
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/webhookSlug'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      requestBody:
        $ref: '#/components/requestBodies/WebhookUpdate'
      responses:
        '200':
          description: Webhook updated.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
            application/xml:
              schema:
                $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Update the webhook identified by the specified slug.
    delete:
      summary: Delete webhook
      operationId: DeleteWebhookV23
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/webhookSlug'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '204':
          description: No content.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Delete the webhook identified by the specified slug.
webhooks:
  assignment-completed:
    post:
      summary: Assignment completed
      operationId: AssignmentCompletedWebhookV23
      x-products:
        - Award Force
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/AssignmentWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  assignment-created:
    post:
      summary: Assignment created
      operationId: AssignmentCreatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Assignments
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/AssignmentWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  collaborator-invited:
    post:
      summary: Collaborator invited
      operationId: CollaboratorInvitedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  document-created:
    post:
      summary: Document created
      operationId: DocumentCreatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/DocumentWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  document-deleted:
    post:
      summary: Document deleted
      operationId: DocumentDeletedWebhookV23
      x-products:
        - Award Force
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/DocumentWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  document-updated:
    post:
      summary: Document updated
      operationId: DocumentUpdatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Documents
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/DocumentWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-category-changed:
    post:
      summary: Entry category changed
      operationId: EntryCategoryChangedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-chapter-changed:
    post:
      summary: Entry chapter changed
      operationId: EntryChapterChangedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-copied:
    post:
      summary: Entry copied
      operationId: EntryCopiedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-created:
    post:
      summary: Entry created
      operationId: EntryCreatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-deleted:
    post:
      summary: Entry deleted
      operationId: EntryDeletedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-eligible:
    post:
      summary: Entry marked eligible
      operationId: EntryEligibleWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-ineligible:
    post:
      summary: Entry marked ineligible
      operationId: EntryIneligibleWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-moderated:
    post:
      summary: Entry moderated
      operationId: EntryModeratedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-resubmitted:
    post:
      summary: Entry resubmitted
      operationId: EntryResubmittedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-submitted:
    post:
      summary: Entry submitted
      operationId: EntrySubmittedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-tagged:
    post:
      summary: Entry tagged
      operationId: EntryTaggedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryTaggedWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  entry-updated:
    post:
      summary: Entry updated
      operationId: EntryUpdatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  field-value-updated:
    post:
      summary: Field value updated
      operationId: FieldValueUpdatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/UserWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  membership-registered:
    post:
      summary: User created
      operationId: MembershipRegisteredWebhookV23
      x-products:
        - Award Force
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/UserWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  payment-pending:
    post:
      summary: Payment pending
      operationId: PaymentPendingWebhookV23
      x-products:
        - Award Force
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/OrderWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  payment-success:
    post:
      summary: Payment success
      operationId: PaymentSuccessWebhookV23
      x-products:
        - Award Force
      tags:
        - Orders
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/OrderWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  review-task-created:
    post:
      summary: Review task created
      operationId: ReviewTaskCreatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  review-task-submitted:
    post:
      summary: Review task submitted
      operationId: ReviewTaskSubmittedWebhookV23
      x-products:
        - Award Force
      tags:
        - Entries
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/EntryWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  role-granted:
    post:
      summary: Role granted
      operationId: RoleGrantedWebhookV23
      x-products:
        - Award Force
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/UserWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
  user-updated:
    post:
      summary: User updated
      operationId: UserUpdatedWebhookV23
      x-products:
        - Award Force
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/Signature'
      security: []
      requestBody:
        $ref: '#/components/requestBodies/UserWebhook'
      responses:
        '200':
          description: Return any 2xx status code to acknowledge receipt of the event.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: |-
        API key used to authenticate and authorise every request.
        Include it in the `x-api-key` header.
  parameters:
    Accept:
      name: Accept
      in: header
      required: true
      description: Defines the response type.
      schema:
        type: string
        enum:
          - application/vnd.Creative Force.v2.3+json
          - application/vnd.Creative Force.v2.3+xml
    X-Api-Language:
      name: x-api-language
      in: header
      required: false
      description: |-
        Defines the languages included in the response. If non are provided, the account default language is returned.

        Value `all` overrides any other values present.

        You can request multiple languages using a comma-separated string of languages.

        The selected language must be supported by your account or a `400` error is returned.
      style: simple
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
            - all
            - ar_AR
            - bg_BG
            - bn_IN
            - ca_ES
            - cs_CZ
            - cy_GB
            - da_DK
            - de_DE
            - en_GB
            - en_US
            - el_GR
            - es_NN
            - es_LA
            - et_EE
            - fa_NN
            - fi_FI
            - fr_FR
            - fr_CA
            - he_IL
            - hi_IN
            - hr_HR
            - hu_HU
            - hy_AM
            - it_IT
            - ja_JP
            - ko_KR
            - lt_LT
            - ms_MY
            - nl_NL
            - nb_NO
            - pl_PL
            - pt_BR
            - ro_RO
            - ru_RU
            - sk_SK
            - sl_SI
            - sq_AL
            - sr_RS
            - sv_SE
            - sw_NN
            - th_TH
            - tr_TR
            - uk_UA
            - vi_VN
            - zh_CN
            - zh_HK
      example:
        - en_GB
        - fr_FR
    assignmentSlugFilter:
      name: slug
      in: query
      required: false
      description: Filter to a single assignment by slug. Returns at most one item.
      schema:
        type: string
        pattern: ^[A-Za-z0-9]{24}[JR]$
    assignmentStatusFilter:
      name: status
      in: query
      required: false
      description: Filter by assignment status.
      schema:
        type: string
        enum:
          - none
          - in_progress
          - complete
          - abstained
    categoryFilter:
      name: category
      in: query
      required: false
      description: Filter by category slug.
      schema:
        type: string
    chapterFilter:
      name: chapter
      in: query
      required: false
      description: Filter by chapter slug.
      schema:
        type: string
    judgeFilter:
      name: judge
      in: query
      required: false
      description: Filter by judge slug.
      schema:
        type: string
    methodFilter:
      name: method
      in: query
      required: false
      description: Filter by assignment method.
      schema:
        type: string
        enum:
          - automatic
          - manual
          - random
          - stray
          - recused
    panelFilter:
      name: panel
      in: query
      required: false
      description: Filter by panel slug.
      schema:
        type: string
    scoreSetFilter:
      name: score_set
      in: query
      required: false
      description: Filter by score set slug.
      schema:
        type: string
    seasonFilter:
      name: season
      in: query
      required: false
      description: |-
        Filter by season slug.
        Use `all` to show all seasons.
      schema:
        type: string
    stateFilter:
      name: state
      in: query
      required: false
      description: |-
        Filter by entry state.
        * `current` - Only current (non-archived) entries.
        * `archived` - Only archived entries.
        * `all` - Include both current and archived entries.
        * `only` - Equivalent to `archived`.
        * `none` - Exclude all entries.
      schema:
        type: string
        enum:
          - current
          - archived
          - all
          - only
          - none
    tagFilter:
      name: tag
      in: query
      required: false
      description: Filter by tag.
      schema:
        type: string
    deletedFilter:
      name: deleted
      in: query
      required: false
      description: |-
        Filter by deletion mode.
        * `only` - Show only deleted resources.
        * `included` - Include deleted resources.
        * `none` - Exclude deleted resources.
      schema:
        type: string
        enum:
          - only
          - included
          - none
    trashedFilter:
      name: trashed
      in: query
      required: false
      description: |-
        Filter by soft-deletion mode.
        * `only` - Show only soft-deleted resources.
        * `all` - Include soft-deleted resources alongside live ones.
        * `none` - Exclude soft-deleted resources.
      schema:
        type: string
        enum:
          - only
          - all
          - none
    page:
      name: page
      in: query
      required: false
      description: Specify the page number to return.
      schema:
        type: number
    perPage:
      name: per_page
      in: query
      required: false
      description: |
        Limit the number of items returned to between 1 and 100.

        If you provide a value outside this range, you will receive a `400` response.
      schema:
        type: number
    assignmentOrder:
      name: order
      in: query
      required: false
      description: |-
        Sort by a supported assignment column. Unsupported values fall back
        silently to the default sort (`updated` descending).
      schema:
        type: string
        enum:
          - method
          - status
          - updated
    sortDirection:
      name: dir
      in: query
      required: false
      description: Sort in ascending or descending order. Invalid values are rejected with `400 Bad Request`.
      schema:
        type: string
        enum:
          - asc
          - desc
    assignmentSlug:
      name: assignment_slug
      in: path
      required: true
      description: Slug of the assignment.
      schema:
        type: string
        pattern: ^[A-Za-z0-9]{24}[JR]$
    entrySlug:
      name: entry_slug
      in: path
      required: true
      description: Slug of the entry.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    entryFilter:
      name: entry
      in: query
      required: false
      description: Filter by entry slug.
      schema:
        type: string
    tabFilter:
      name: tab
      in: query
      required: false
      description: Filter by tab slug.
      schema:
        type: string
    attachmentOrder:
      name: order
      in: query
      required: false
      description: |-
        Sort by a supported attachment field. Unsupported values fall back
        silently to the default sort (`updated` descending).
      schema:
        type: string
        enum:
          - created
          - entry
          - order
          - tab
          - updated
    token:
      name: token
      in: path
      description: Token string.
      required: true
      schema:
        type: string
        pattern: ^[A-Za-z0-9]{16}$|^[A-Za-z0-9]{32}$
    tabSlug:
      name: tab_slug
      in: path
      required: true
      description: Entry tab slug
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    activeInactiveStatusFilter:
      name: status
      in: query
      required: false
      description: Filter by status.
      schema:
        type: string
        enum:
          - active
          - inactive
    formFilter:
      name: form
      in: query
      required: false
      description: |-
        Filter by form slug.

        Use the value `all` to include results from every form rather than a single form.
      schema:
        type: string
    parentCategoryFilter:
      name: parent
      in: query
      required: false
      description: Filter by parent category slug.
      schema:
        type: string
    categoryOrder:
      name: order
      in: query
      required: false
      description: |-
        Sort by a supported category field.
        * `parent` - Sort by parent slug.
        * `season` - Sort by season slug.
      schema:
        type: string
        enum:
          - chapter_count
          - created
          - divisions
          - entry_count
          - form
          - name
          - parent
          - promoted
          - season
          - shortcode
          - status
          - updated
    categorySlug:
      name: category_slug
      in: path
      required: true
      description: Slug of the category.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    chapterOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported chapter field.
      schema:
        type: string
        enum:
          - created
          - name
          - season
          - status
          - updated
    chapterSlug:
      name: chapter_slug
      in: path
      required: true
      description: Slug of the chapter.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    entryStatusFilter:
      name: status
      in: query
      required: false
      description: Filter by entry status.
      schema:
        type: string
        enum:
          - submitted
          - in_progress
          - resubmission_required
          - resubmitted
    entryPaymentStatusFilter:
      name: payment_status
      in: query
      required: false
      description: Filter by payment status.
      schema:
        type: string
        enum:
          - paid
          - awaiting_payment
    entryModerationFilter:
      name: moderation
      in: query
      required: false
      description: Filter by moderation status.
      schema:
        type: string
        enum:
          - approved
          - undecided
          - rejected
    entryReviewStatusFilter:
      name: review_status
      in: query
      required: false
      description: Filter by review status.
      schema:
        type: string
    contributorOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported contributor field. Custom contributor field slugs are also accepted.
      schema:
        type: string
        enum:
          - entry
          - tab
          - created
          - updated
    contributorSlug:
      name: contributor_slug
      in: path
      required: true
      description: Slug of the contributor.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    documentEntrantFilter:
      name: entrant
      in: query
      required: false
      description: Filter by entrant slug.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    documentOrder:
      name: order
      in: query
      required: false
      description: Column to sort by.
      schema:
        type: string
        enum:
          - created_at
          - file
          - file_type
          - name
          - shared_with_user
          - updated_at
    documentSlug:
      name: document_slug
      in: path
      required: true
      description: Slug of the document.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    entryEntrantFilter:
      name: entrant
      in: query
      required: false
      description: Filter by entrant slug.
      schema:
        type: string
    entryPriceFilter:
      name: price
      in: query
      required: false
      description: Filter by price slug.
      schema:
        type: string
    entryTitleFilter:
      name: title
      in: query
      required: false
      description: Filter by full or partial entry name.
      schema:
        type: string
    entryUpdatedAtFilter:
      name: updated_at
      in: query
      required: false
      description: |-
        Filter by update timestamp.
        Supported values:
        * `[before]=YYYY-MM-DDTHH:MM:SSZ`
        * `[after]=YYYY-MM-DDTHH:MM:SSZ`
        * `[on]=YYYY-MM-DDTHH:MM:SSZ`
        * `[between]=[YYYY-MM-DDTHH:MM:SSZ,YYYY-MM-DDTHH:MM:SSZ]`
      schema:
        type: string
    archivedFilter:
      name: archived
      in: query
      required: false
      description: |-
        Filter by archive mode.
        * `only` - Show only archived resources.
        * `all` - Include archived resources.
        * `none` - Exclude archived resources.
      schema:
        type: string
        enum:
          - only
          - all
          - none
    entryOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported entry field.
      schema:
        type: string
        enum:
          - category
          - chapter
          - entrant
          - local_id
          - parent_category
          - title
          - updated
    entryTagsToAdd:
      name: tags
      in: path
      required: true
      description: Comma-separated list of tags to add to the entry. Surrounding whitespace is trimmed from each tag and empty values are ignored. A tag cannot contain a comma or a forward slash.
      schema:
        type: string
    entryTagsToRemove:
      name: tags
      in: path
      required: true
      description: Comma-separated list of tags to remove from the entry. Surrounding whitespace is trimmed from each tag and empty values are ignored. Tags that are not currently applied to the entry are ignored.
      schema:
        type: string
    fieldSlug:
      name: field_slug
      in: path
      required: true
      description: Slug of the field.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    fieldConditionalFilter:
      name: conditional
      in: query
      required: false
      description: Filter by conditional value.
      schema:
        type: string
    fieldProtectionFilter:
      name: protection
      in: query
      required: false
      description: Filter by protection level.
      schema:
        type: string
        enum:
          - standard
          - elevated
          - maximum
    fieldResourceFilter:
      name: resource
      in: query
      required: false
      description: Filter by resource type.
      schema:
        type: string
        enum:
          - entries
          - users
          - attachments
          - contributors
    fieldTypeFilter:
      name: type
      in: query
      required: false
      description: Filter by field type.
      schema:
        type: string
        enum:
          - checkbox
          - checkboxlist
          - content
          - country
          - currency
          - date
          - datetime
          - drop-down-list
          - email
          - file
          - numeric
          - phone
          - radio
          - table
          - text
          - textarea
          - time
          - url
    fieldOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported field property.
      schema:
        type: string
        enum:
          - title
          - resource
          - type
          - updated
          - created
          - categories
          - order
          - tab
          - form
          - auto_scoring
          - category_count
    leaderboardScoreSetFilter:
      name: score_set
      in: query
      required: true
      description: Filter by score set slug.
      schema:
        type: string
    leaderboardOrder:
      name: order
      in: query
      required: false
      description: |-
        Sort by a supported leaderboard field.
        * `category` - Sort by category slug.
        * `chapter` - Sort by chapter slug.
      schema:
        type: string
        enum:
          - category
          - chapter
          - division
          - link
          - slug
          - status
          - submitted
          - auto_score
          - title
          - tags
    orderStatusFilter:
      name: status
      in: query
      required: false
      description: Filter by order status.
      schema:
        type: string
        enum:
          - paid
          - awaiting_payment
    orderTestFilter:
      name: test
      in: query
      required: false
      description: |-
        Filter by test order visibility.
        * `only` - Show only test orders.
        * `hide` - Exclude test orders.
      schema:
        type: string
        enum:
          - only
          - hide
    orderOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported order field.
      schema:
        type: string
        enum:
          - created_at
          - invoice_number
          - payment_method
          - payment_status
          - season
          - total
    orderSlug:
      name: order_slug
      in: path
      required: true
      description: Slug of the order.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    reviewTaskActionAtFilter:
      name: action_at
      in: query
      required: false
      description: |-
        Filter by action timestamp.
        Supported values:
        * `[before]=YYYY-MM-DDTHH:MM:SSZ`
        * `[after]=YYYY-MM-DDTHH:MM:SSZ`
        * `[on]=YYYY-MM-DDTHH:MM:SSZ`
        * `[between]=[YYYY-MM-DDTHH:MM:SSZ,YYYY-MM-DDTHH:MM:SSZ]`
      schema:
        type: string
    reviewTaskCreatedAtFilter:
      name: created_at
      in: query
      required: false
      description: |-
        Filter by creation timestamp.
        Supported values:
        * `[before]=YYYY-MM-DDTHH:MM:SSZ`
        * `[after]=YYYY-MM-DDTHH:MM:SSZ`
        * `[on]=YYYY-MM-DDTHH:MM:SSZ`
        * `[between]=[YYYY-MM-DDTHH:MM:SSZ,YYYY-MM-DDTHH:MM:SSZ]`
      schema:
        type: string
    reviewTaskUpdatedAtFilter:
      name: updated_at
      in: query
      required: false
      description: |-
        Filter by update timestamp.
        Supported values:
        * `[before]=YYYY-MM-DDTHH:MM:SSZ`
        * `[after]=YYYY-MM-DDTHH:MM:SSZ`
        * `[on]=YYYY-MM-DDTHH:MM:SSZ`
        * `[between]=[YYYY-MM-DDTHH:MM:SSZ,YYYY-MM-DDTHH:MM:SSZ]`
      schema:
        type: string
    decisionFilter:
      name: decision
      in: query
      required: false
      description: Filter by decision name.
      schema:
        type: string
    reviewStageFilter:
      name: review_stage
      in: query
      required: false
      description: Filter by review stage slug.
      schema:
        type: string
    reviewerFilter:
      name: reviewer
      in: query
      required: false
      description: Filter by reviewer name or email.
      schema:
        type: string
    roundTypeFilter:
      name: type
      in: query
      required: false
      description: Filter by round type.
      schema:
        type: string
        enum:
          - entry
          - judge
          - feedback
    roundSlugFilter:
      name: slug
      in: query
      required: false
      description: Filter to a single round by slug. Returns at most one item.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    roundOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported round field.
      schema:
        type: string
        enum:
          - created
          - end_date
          - name
          - start_date
          - type
          - updated
    roundSlug:
      name: round_slug
      in: path
      required: true
      description: Slug of the round.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    scoreSetModeFilter:
      name: mode
      in: query
      required: false
      description: Filter by score set mode.
      schema:
        type: string
        enum:
          - qualifying
          - top_pick
          - vip_judging
          - voting
          - gallery
    scoreSetOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported score set field.
      schema:
        type: string
        enum:
          - created
          - mode
          - name
          - updated
    scoreSetSlug:
      name: score_set_slug
      in: path
      required: true
      description: Slug of the score set.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    seasonOrder:
      name: order
      in: query
      required: false
      description: Column name to order by. An unrecognised value falls back to the default sort by `updated`.
      schema:
        type: string
        enum:
          - created
          - name
          - status
          - updated
    seasonSlug:
      name: season_slug
      in: path
      required: true
      description: Slug of the season.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    taxOrder:
      name: order
      in: query
      required: false
      description: Column name to order by. An unrecognised value falls back to the default sort order.
      schema:
        type: string
        enum:
          - country
          - country_name
          - created
          - name
          - rate
          - region
          - region_name
          - term
          - updated
    userActiveInSeasonFilter:
      name: active_in_season
      in: query
      required: false
      description: Filter by the season the user is active in, identified by season slug.
      schema:
        type: string
    userConfirmationFilter:
      name: confirmation
      in: query
      required: false
      description: Filter by account confirmation status.
      schema:
        type: string
        enum:
          - confirmed
          - pending
    userEntriesFilter:
      name: entries
      in: query
      required: false
      description: Filter by entry status.
      schema:
        type: string
        enum:
          - current_season
          - none_current_season
          - archived_season
          - none
    userLanguageFilter:
      name: language
      in: query
      required: false
      description: Filter by language code.
      schema:
        type: string
    userRoleFilter:
      name: role
      in: query
      required: false
      description: Filter by role slug.
      schema:
        type: string
    userSeasonJoinedFilter:
      name: season_joined
      in: query
      required: false
      description: Filter by the season the user joined in, identified by season slug.
      schema:
        type: string
    userOrder:
      name: order
      in: query
      required: false
      description: Column name to order by. An unrecognised value falls back to the default sort by `updated`.
      schema:
        type: string
        enum:
          - confirmed_at
          - created_at
          - created_by
          - email
          - first_name
          - last_name
          - mobile
          - name
          - updated
    userSlugParameter:
      name: user_slug
      in: path
      required: true
      description: |-
        User identifier.

        **Accepts either a user email or an eight-letter slug.**
      schema:
        oneOf:
          - type: string
            format: email
          - type: string
            pattern: ^[A-Za-z]{8}$
    userSlug:
      name: user_slug
      in: path
      required: true
      description: User slug
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    webhookHttpMethodFilter:
      name: http_method
      in: query
      required: false
      description: Filter by HTTP method.
      schema:
        type: string
        enum:
          - get
          - post
    webhookSubscriptionEventFilter:
      name: subscription_event
      in: query
      required: false
      description: Filter by subscription event.
      schema:
        type: string
        enum:
          - allocation_created
          - allocation_payment_created
          - allocation_payment_deleted
          - allocation_payment_status_changed
          - allocation_payment_updated
          - assignment_completed
          - assignment_created
          - collaborator_invited
          - document_created
          - document_deleted
          - document_updated
          - entry_category_changed
          - entry_chapter_changed
          - entry_copied
          - entry_created
          - entry_deleted
          - entry_eligible
          - entry_ineligible
          - entry_moderated
          - entry_resubmitted
          - entry_submitted
          - entry_tagged
          - entry_updated
          - field_value_updated
          - membership_registered
          - order_payment_pending
          - order_payment_success
          - review_task_created
          - review_task_submitted
          - role_granted
          - user_updated
    webhookUrlFilter:
      name: url
      in: query
      required: false
      description: Filter by webhook URL.
      schema:
        type: string
    webhookOrder:
      name: order
      in: query
      required: false
      description: Column to sort by.
      schema:
        type: string
        enum:
          - events
          - method
          - name
          - signing_key
          - updated
          - url
    webhookSlug:
      name: webhook_slug
      in: path
      required: true
      description: Slug of the webhook.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    Signature:
      name: Signature
      in: header
      required: true
      description: |-
        HMAC SHA256 signature of the request body. Generated using the webhook's signing key and the raw JSON payload.

        Generate the same value in your endpoint and compare it with this header to validate the webhook payload.
      schema:
        type: string
        example: a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890
  headers:
    ETag:
      description: Entity tag for the selected representation.
      schema:
        type: string
    X-RateLimit-Limit:
      description: Maximum number of requests allowed per minute.
      schema:
        type: integer
        example: 60
    X-RateLimit-Remaining:
      description: Number of requests remaining in the current rate limit window.
      schema:
        type: integer
        example: 58
    X-RateLimit-Reset:
      description: Unix timestamp when the rate limit window resets.
      schema:
        type: integer
        example: 1783470988
    Retry-After:
      description: Number of seconds the client should wait before retrying.
      schema:
        type: integer
      example: 60
    Location:
      description: URI of the newly created resource.
      schema:
        type: string
        example: https://api.us.cr4ce.com/entry/NzAMemqE
  schemas:
    Account:
      type: object
      title: Account
      description: Each account has one owner, one product tier, a region, a timezone, and a set of enabled locales.
      properties:
        created:
          type: string
          format: date-time
          description: Date and time when the account was created.
        domains:
          type: array
          description: Hostnames associated with the account.
          items:
            type: string
        global_id:
          type: string
          format: uuid
          description: Globally unique identifier for the account, stable across slug changes.
        languages:
          type: array
          description: Locales enabled for the account, used as keys for translation maps on other resources (such as category, round, and score-set names).
          items:
            type: object
            properties:
              code:
                type: string
                description: Locale code, for example `en_GB` or `en_US`.
        name:
          type: string
          description: Display name of the account.
        owner:
          type: object
          description: User who owns the account.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the owner.
            link:
              type: string
              format: uri
              description: Canonical URL for the owner resource.
            name:
              type: string
              description: Full display name of the owner.
            first_name:
              type: string
              description: Given name of the owner.
            last_name:
              type: string
              description: Family name of the owner.
        product:
          type: string
          description: Subscription plan tier the account is on, for example `Premium`.
        region:
          type: string
          description: Two-letter region code the account is hosted in, for example `au` or `eu`.
        slug:
          type: string
          description: Short URL-safe identifier for the account.
        timezone:
          type: string
          description: IANA timezone identifier without the slash separator, for example `EuropeLondon`.
        updated:
          type: string
          format: date-time
          description: Date and time when the account record was last updated.
      example:
        created: '2025-01-15T09:00:00Z'
        domains:
          - awards.example.com
        global_id: 6a0c6f70-1b9e-4d63-9c2a-2f8c5d0a1c34
        languages:
          - code: en_GB
          - code: en_US
        name: Example
        owner:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/user/AbCdEfGh
          name: Jane Doe
          first_name: Jane
          last_name: Doe
        product: payment-subscriptions.form.plan-premium.label
        region: au
        slug: WxYzAbCd
        timezone: EuropeLondon
        updated: '2025-06-20T14:30:00Z'
    BaseProblem:
      description: Standard error envelope for all API error responses.
      type: object
      properties:
        message:
          type: string
        status_code:
          type: integer
          minimum: 400
          maximum: 599
    BadRequest:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 400
              maximum: 400
    Unauthorized:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 401
              maximum: 401
    Forbidden:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 403
              maximum: 403
    TooManyRequests:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 429
              maximum: 429
    Pagination:
      type: object
      title: Pagination
      properties:
        current_page:
          type: integer
          description: Number of the page returned by this response, starting at `1`.
        first_page_url:
          type: string
          description: URL of the first page in the result set, relative when the requested page is beyond the last page.
        from:
          type:
            - integer
            - 'null'
          description: Position of the first record on this page within the full result set, starting at `1`, or `null` when the requested page is beyond the last page.
        last_page:
          type: integer
          description: Total number of pages.
        last_page_url:
          type: string
          description: URL of the last page in the result set, relative when the requested page is beyond the last page.
        next_page_url:
          type: string
          description: URL of the next page in the result set, empty when the current page is the last page.
        path:
          type: string
          description: Canonical URL of the endpoint, without query parameters.
        per_page:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
          description: Maximum number of records returned per page.
        prev_page_url:
          type: string
          description: URL of the previous page in the result set, empty when the current page is the first page.
        to:
          type:
            - integer
            - 'null'
          description: Position of the last record on this page within the full result set, or `null` when the requested page is beyond the last page.
        total:
          type: integer
          description: Total number of records across all pages.
    Assignment:
      type: object
      title: Assignment
      description: Single judging task for an entry, addressed to either a judge or a role within a given round and score set.
      properties:
        entry:
          type: object
          description: Entry the assignment refers to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the entry.
            link:
              type: string
              format: uri
              description: Canonical URL for the entry resource.
            title:
              type: string
              description: Title of the entry as submitted by the entrant.
        category:
          type: object
          description: Category the entry belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the category.
            link:
              type: string
              format: uri
              description: Canonical URL for the category resource.
            name:
              type: object
              description: Translated name of the category, keyed by locale code.
              additionalProperties:
                type: string
        chapter:
          type: object
          description: Chapter the category belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the chapter.
            link:
              type: string
              format: uri
              description: Canonical URL for the chapter resource.
            name:
              type: object
              description: Translated name of the chapter, keyed by locale code.
              additionalProperties:
                type: string
        comments:
          type:
            - object
            - 'null'
          description: Comments attached to the assignment, `null` for role-based assignments.
          properties:
            judging:
              type: array
              description: Comments left by the judge during evaluation.
              items:
                type: object
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the comment.
                  comment:
                    type: string
                    description: Comment body as an HTML fragment, empty when the user saved a comment with no content.
                  created_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was last updated.
                  user:
                    type: object
                    description: User who left the comment.
                    properties:
                      slug:
                        type: string
                        description: Short URL-safe identifier for the user.
                      link:
                        type: string
                        format: uri
                        description: Canonical URL for the user resource.
                      name:
                        type: string
                        description: Full display name of the user.
                      first_name:
                        type: string
                        description: Given name of the user.
                      last_name:
                        type: string
                        description: Family name of the user.
            abstention:
              type: array
              description: Comments left when the judge marked the entry as abstained.
              items:
                type: object
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the comment.
                  comment:
                    type: string
                    description: Comment body as an HTML fragment, empty when the user saved a comment with no content.
                  created_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was last updated.
                  user:
                    type: object
                    description: User who left the comment.
                    properties:
                      slug:
                        type: string
                        description: Short URL-safe identifier for the user.
                      link:
                        type: string
                        format: uri
                        description: Canonical URL for the user resource.
                      name:
                        type: string
                        description: Full display name of the user.
                      first_name:
                        type: string
                        description: Given name of the user.
                      last_name:
                        type: string
                        description: Family name of the user.
            conflict:
              type: array
              description: Comments left when the judge flagged a conflict of interest.
              items:
                type: object
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the comment.
                  comment:
                    type: string
                    description: Comment body as an HTML fragment, empty when the user saved a comment with no content.
                  created_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Date and time when the comment was last updated.
                  user:
                    type: object
                    description: User who left the comment.
                    properties:
                      slug:
                        type: string
                        description: Short URL-safe identifier for the user.
                      link:
                        type: string
                        format: uri
                        description: Canonical URL for the user resource.
                      name:
                        type: string
                        description: Full display name of the user.
                      first_name:
                        type: string
                        description: Given name of the user.
                      last_name:
                        type: string
                        description: Family name of the user.
            criteria:
              type: array
              description: Comments grouped by score-set criterion.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Display name of the criterion, in the account's default locale.
                  comments:
                    type: array
                    description: Comments left against this criterion.
                    items:
                      type: object
                      properties:
                        slug:
                          type: string
                          description: Short URL-safe identifier for the comment.
                        comment:
                          type: string
                          description: Comment body as an HTML fragment, empty when the user saved a comment with no content.
                        created_at:
                          type: string
                          format: date-time
                          description: Date and time when the comment was created.
                        updated_at:
                          type: string
                          format: date-time
                          description: Date and time when the comment was last updated.
                        user:
                          type: object
                          description: User who left the comment.
                          properties:
                            slug:
                              type: string
                              description: Short URL-safe identifier for the user.
                            link:
                              type: string
                              format: uri
                              description: Canonical URL for the user resource.
                            name:
                              type: string
                              description: Full display name of the user.
                            first_name:
                              type: string
                              description: Given name of the user.
                            last_name:
                              type: string
                              description: Family name of the user.
        created:
          type: string
          format: date-time
          description: Date and time when the assignment was created.
        form:
          type: string
          description: Slug of the form attached to the entry.
        method:
          type: string
          description: How the assignment was created, for example `Manual`, `Automatic (Panel)`, `Recused`, or `Stray`.
        panels:
          type: array
          description: Panels the assignment is associated with.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the panel.
              link:
                type: string
                format: uri
                description: Canonical URL for the panel resource.
              name:
                type: object
                description: Translated name of the panel, keyed by locale code.
                additionalProperties:
                  type: string
        judge:
          type:
            - object
            - 'null'
          description: Judge assigned to score the entry, `null` for role-based assignments.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the judge.
            link:
              type: string
              format: uri
              description: Canonical URL for the judge resource.
            name:
              type: string
              description: Full display name of the judge.
        role:
          type:
            - object
            - 'null'
          description: Role assigned to score the entry, `null` for judge-specific assignments.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the role.
            link:
              type: string
              format: uri
              description: Canonical URL for the role resource.
            name:
              type: object
              description: Translated name of the role, keyed by locale code.
              additionalProperties:
                type: string
        rounds:
          type: array
          description: Rounds the assignment applies to.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the round.
              link:
                type: string
                format: uri
                description: Canonical URL for the round resource.
              name:
                type: object
                description: Translated name of the round, keyed by locale code.
                additionalProperties:
                  type: string
        score:
          type:
            - object
            - 'null'
          description: Score for this assignment, formatted per the score-set mode, `null` when no score has been recorded.
        score_set:
          type:
            - object
            - 'null'
          description: Score set used to evaluate the entry.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the score set.
            link:
              type: string
              format: uri
              description: Canonical URL for the score set resource.
            name:
              type: object
              description: Translated name of the score set, keyed by locale code.
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the assignment.
        status:
          type: string
          description: Current state of the assignment, for example `To be scored`, `In progress`, or `Complete`.
        updated:
          type: string
          format: date-time
          description: Date and time when the assignment was last updated.
      example:
        entry:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/entry/AbCdEfGh
          title: Project title
        category:
          slug: WxYzAbCd
          link: https://api.au.cr4ce.com/category/WxYzAbCd
          name:
            en_GB: Documentary
        chapter:
          slug: MnOpQrSt
          link: https://api.au.cr4ce.com/chapter/MnOpQrSt
          name:
            en_GB: Film
        comments:
          judging: []
          abstention: []
          conflict: []
          criteria:
            - name: Originality
              comments: []
            - name: Execution
              comments: []
        created: '2025-01-15T09:00:00Z'
        form: GhIjKlMn
        method: Automatic (Panel)
        panels:
          - slug: OpQrStUv
            link: https://api.au.cr4ce.com/panel/OpQrStUv
            name:
              en_GB: Panel A
        judge:
          slug: EfGhIjKl
          link: https://api.au.cr4ce.com/judge/EfGhIjKl
          name: Jane Doe
        role: null
        rounds:
          - slug: QrStUvWx
            link: https://api.au.cr4ce.com/round/QrStUvWx
            name:
              en_GB: Judging
        score: null
        score_set:
          slug: UvWxYzAb
          link: https://api.au.cr4ce.com/score-set/UvWxYzAb
          name:
            en_GB: Scoring rubric
        slug: AbCdEfGhEfGhIjKlUvWxYzAbA
        status: To be scored
        updated: '2025-06-20T14:30:00Z'
    AssignmentList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Assignment'
      example:
        current_page: 1
        data:
          - entry:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/entry/IjKlMnOp
              title: Photo series
            category:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/category/QrStUvWx
              name:
                en_GB: Photography
            chapter:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/chapter/MnOpQrSt
              name:
                en_GB: Image
            comments:
              judging:
                - slug: AbCdEfGh
                  comment: <p>Strong composition.</p>
                  created_at: '2025-05-20T11:00:00Z'
                  updated_at: '2025-05-20T11:00:00Z'
                  user:
                    slug: YzAbCdEf
                    link: https://api.au.cr4ce.com/user/YzAbCdEf
                    name: Jane Doe
                    first_name: Jane
                    last_name: Doe
              abstention: []
              conflict: []
              criteria:
                - name: Composition
                  comments: []
            created: '2025-05-20T10:30:00Z'
            form: GhIjKlMn
            method: Stray
            panels: []
            judge:
              slug: YzAbCdEf
              link: https://api.au.cr4ce.com/judge/YzAbCdEf
              name: Jane Doe
            role: null
            rounds: []
            score: null
            score_set:
              slug: KlMnOpQr
              link: https://api.au.cr4ce.com/score-set/KlMnOpQr
              name:
                en_GB: Scoring rubric
            slug: IjKlMnOpYzAbCdEfKlMnOpQrA
            status: To be scored
            updated: '2025-06-10T09:00:00Z'
        first_page_url: https://api.au.cr4ce.com/assignment?per_page=50&page=1
        from: 1
        last_page: 4
        last_page_url: https://api.au.cr4ce.com/assignment?per_page=50&page=4
        next_page_url: https://api.au.cr4ce.com/assignment?per_page=50&page=2
        path: https://api.au.cr4ce.com/assignment
        per_page: 50
        prev_page_url: ''
        to: 50
        total: 175
    UnprocessableEntity:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 422
              maximum: 422
            errors:
              type: object
              description: Map of request field to the list of validation messages, present only on field-level validation failures.
              additionalProperties:
                type: array
                items:
                  type: string
    NotFound:
      allOf:
        - $ref: '#/components/schemas/BaseProblem'
        - type: object
          properties:
            status_code:
              type: integer
              minimum: 404
              maximum: 404
    Attachment:
      type: object
      title: Attachment
      description: File attached to an entry through an attachments-typed form tab.
      properties:
        entry:
          type: object
          description: Entry the attachment belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the entry.
            link:
              type: string
              format: uri
              description: Canonical URL for the entry resource.
            title:
              type: string
              description: Title of the entry as submitted by the entrant.
        attachment_fields:
          type: array
          description: Form fields captured against this attachment, one item per field, in form order.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the field.
              link:
                type: string
                format: uri
                description: Canonical URL for the field resource.
              label:
                type: object
                description: Display label shown to the entrant, may contain HTML or be empty, keyed by locale code.
                additionalProperties:
                  type: string
              title:
                type: object
                description: Short title used to refer to the field in administrative contexts, keyed by locale code.
                additionalProperties:
                  type: string
              value:
                type: string
                description: Raw stored value for the field, as submitted by the entrant.
              translated:
                type: object
                description: Human-readable rendering of `value` resolved against the field definition, keyed by locale code.
                additionalProperties:
                  type: string
              download:
                type: string
                format: uri
                description: Time-limited download URL, present only for file-typed fields with an underlying file.
        created:
          type: string
          format: date-time
          description: Date and time when the attachment was created.
        file:
          type: object
          description: File backing the attachment.
          properties:
            token:
              type: string
              description: Token identifying the file.
            link:
              type: string
              format: uri
              description: Canonical URL for the file resource.
            download:
              type:
                - string
                - 'null'
              format: uri
              description: Time-limited download URL for the underlying file, or `null` when no signed URL can be resolved.
            filename:
              type: string
              description: Original filename as uploaded.
        order:
          type: integer
          description: Position of the attachment within its tab.
        tab:
          type: object
          description: Attachments tab the attachment belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the tab.
            link:
              type: string
              format: uri
              description: Canonical URL for the tab resource.
            name:
              type: object
              description: Name of the tab, keyed by locale code.
              additionalProperties:
                type: string
        token:
          type: string
          description: Token identifying the attachment file, same value as `file.token`.
        updated:
          type: string
          format: date-time
          description: Date and time when the attachment was last updated.
      example:
        entry:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/entry/AbCdEfGh
          title: Project title
        attachment_fields:
          - slug: IjKlMnOp
            link: https://api.au.cr4ce.com/field/IjKlMnOp
            label:
              en_GB: Type of attachment
            title:
              en_GB: Type of attachment
            value: Photo
            translated:
              en_GB: Photo
          - slug: QrStUvWx
            link: https://api.au.cr4ce.com/field/QrStUvWx
            label:
              en_GB: <p>URL</p>
            title:
              en_GB: URL
            value: https://example.com/image.svg
            translated:
              en_GB: https://example.com/image.svg
        created: '2025-04-27T01:00:00Z'
        file:
          token: AbCdEfGhIjKlMnOp
          link: https://api.au.cr4ce.com/file/AbCdEfGhIjKlMnOp
          download: https://files.au.cr4ce.com/file/AbCdEfGhIjKlMnOp/example.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
          filename: example.pdf
        order: 1
        tab:
          slug: YzAbCdEf
          link: https://api.au.cr4ce.com/tab/YzAbCdEf
          name:
            en_GB: Attachments
        token: AbCdEfGhIjKlMnOp
        updated: '2025-04-27T01:05:00Z'
    AttachmentList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Attachment'
      example:
        current_page: 1
        data:
          - entry:
              slug: PqRsTuVw
              link: https://api.au.cr4ce.com/entry/PqRsTuVw
              title: Documentary series
            attachment_fields:
              - slug: KlMnOpQr
                link: https://api.au.cr4ce.com/field/KlMnOpQr
                label:
                  en_GB: <p>Headshot</p>
                title:
                  en_GB: Headshot
                value: GhIjKlMnOpQrStUv
                translated:
                  en_GB: headshot.jpg
                download: https://files.au.cr4ce.com/file/GhIjKlMnOpQrStUv/headshot.jpg?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
            created: '2025-05-12T14:00:00Z'
            file:
              token: GhIjKlMnOpQrStUv
              link: https://api.au.cr4ce.com/file/GhIjKlMnOpQrStUv
              download: https://files.au.cr4ce.com/file/GhIjKlMnOpQrStUv/headshot.jpg?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
              filename: headshot.jpg
            order: 2
            tab:
              slug: YzAbCdEf
              link: https://api.au.cr4ce.com/tab/YzAbCdEf
              name:
                en_GB: Attachments
            token: GhIjKlMnOpQrStUv
            updated: '2025-05-12T14:05:00Z'
        first_page_url: https://api.au.cr4ce.com/attachment?per_page=10&page=1
        from: 1
        last_page: 2
        last_page_url: https://api.au.cr4ce.com/attachment?per_page=10&page=2
        next_page_url: https://api.au.cr4ce.com/attachment?per_page=10&page=2
        path: https://api.au.cr4ce.com/attachment
        per_page: 10
        prev_page_url: ''
        to: 10
        total: 12
    UploadResult:
      type: object
      title: UploadResult
      description: Receipt returned when a file is uploaded to a category, chapter, entry, or user field.
      properties:
        filename:
          type: string
          description: Original filename of the uploaded file, including the extension.
        token:
          type: string
          description: Opaque identifier for the stored file, used as the `{token}` path parameter on `/file/{token}`.
        link:
          type: string
          format: uri
          description: Canonical URL for retrieving the uploaded file.
      example:
        filename: example.pdf
        token: AbCdEfGhIjKlMnOp
        link: https://api.au.cr4ce.com/file/AbCdEfGhIjKlMnOp
    AttachmentCreateResult:
      type: object
      title: AttachmentCreateResult
      description: Receipt returned after an attachment is created.
      properties:
        token:
          type: string
          description: Opaque identifier for the new attachment, used as the `{token}` path parameter on `/attachment/{token}`.
        link:
          type: string
          format: uri
          description: Canonical URL for the new attachment resource.
        file:
          $ref: '#/components/schemas/UploadResult'
      example:
        token: AbCdEfGhIjKlMnOp
        link: https://api.au.cr4ce.com/attachment/AbCdEfGhIjKlMnOp
        file:
          filename: example.pdf
          token: QrStUvWxYzAbCdEf
          link: https://api.au.cr4ce.com/file/QrStUvWxYzAbCdEf
    CategoryBase:
      type: object
      properties:
        created:
          type: string
          format: date-time
          description: Date and time when the category was created.
        description:
          type: object
          description: Description shown to entrants on the category, as an HTML fragment map keyed by locale code.
          additionalProperties:
            type: string
        divisions:
          type: integer
          minimum: 1
          description: Number of divisions configured for the category, always at least `1`.
        form:
          type: object
          description: Entry form attached to the category.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the form.
            link:
              type: string
              format: uri
              description: Canonical URL for the form resource.
            name:
              type: object
              description: Map of translated strings keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        name:
          type: object
          description: Display name of the category, as a map of translated strings keyed by locale code.
          additionalProperties:
            type: string
        parent:
          type:
            - object
            - 'null'
          description: Parent category this category sits under, or `null` for a top-level category.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the parent category.
            link:
              type: string
              format: uri
              description: Canonical URL for the parent category resource.
            name:
              type: object
              description: Map of translated strings keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        promoted:
          type:
            - integer
            - 'null'
          enum:
            - 0
            - 1
            - null
          description: Promotion state of the category, `1` when promoted, `0` when not, and `null` when unset.
        season:
          type: object
          description: Season the category belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Map of translated strings keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        shortcode:
          type: object
          description: Short code used to reference the category, as a map of translated strings keyed by locale code.
          additionalProperties:
            type: string
        slug:
          type: string
          description: Short URL-safe identifier for the category.
        status:
          type: string
          enum:
            - active
            - inactive
          description: Current state of the category.
        updated:
          type: string
          format: date-time
          description: Date and time when the category was last updated.
    CategoryList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/CategoryBase'
                  - type: object
                    properties:
                      chapter_count:
                        type: integer
                        description: Number of chapters the category is available in.
                      entry_count:
                        type: integer
                        description: Number of entries submitted to the category.
      example:
        current_page: 1
        data:
          - created: '2024-05-23T13:37:43Z'
            description:
              en_GB: Submit your documentary films exploring real-world subjects and stories.
            divisions: 1
            form:
              slug: GhIjKlMn
              link: https://api.au.cr4ce.com/form/GhIjKlMn
              name:
                en_GB: Entry form
            name:
              en_GB: Documentary
            parent: null
            promoted: null
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            shortcode:
              en_GB: '01'
            slug: AbCdEfGh
            status: active
            updated: '2025-05-07T16:18:07Z'
            chapter_count: 4
            entry_count: 3
          - created: '2025-02-10T10:00:00Z'
            description:
              en_GB: Submit short films under 40 minutes in length.
            divisions: 1
            form:
              slug: GhIjKlMn
              link: https://api.au.cr4ce.com/form/GhIjKlMn
              name:
                en_GB: Entry form
            name:
              en_GB: Short Film
            parent:
              slug: KlMnOpQr
              link: https://api.au.cr4ce.com/category/KlMnOpQr
              name:
                en_GB: Film
            promoted: 1
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            shortcode:
              en_GB: '02'
            slug: WxYzAbCd
            status: active
            updated: '2025-02-10T10:05:00Z'
            chapter_count: 2
            entry_count: 0
        first_page_url: https://api.au.cr4ce.com/category?per_page=10&page=1
        from: 1
        last_page: 7
        last_page_url: https://api.au.cr4ce.com/category?per_page=10&page=7
        next_page_url: https://api.au.cr4ce.com/category?per_page=10&page=2
        path: https://api.au.cr4ce.com/category
        per_page: 10
        prev_page_url: ''
        to: 10
        total: 66
    Category:
      title: Category
      description: Competition category that entries are submitted to.
      allOf:
        - $ref: '#/components/schemas/CategoryBase'
        - type: object
          properties:
            chapters:
              type: array
              description: Chapters the category is available in.
              items:
                type: object
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the chapter.
                  link:
                    type: string
                    format: uri
                    description: Canonical URL for the chapter resource.
                  name:
                    type: object
                    description: Map of translated strings keyed by locale code (for example, `en_GB` or `fr_FR`).
                    additionalProperties:
                      type: string
            entrant_max_entries:
              type:
                - integer
                - 'null'
              description: Maximum number of entries a single entrant may submit to this category, or `null` if uncapped.
            entry_name_label:
              type: object
              description: Custom label for the entry-name field shown to entrants, as a map of translated strings keyed by locale code.
              additionalProperties:
                type: string
            fill_entry_name:
              type: boolean
              description: Specifies whether entrants are asked to name their entry when submitting to this category.
            image_heading:
              type: object
              description: Heading shown above the category images, as a map of translated strings keyed by locale code.
              additionalProperties:
                type: string
            images:
              type: array
              description: Images attached to the category.
              items:
                type: object
                properties:
                  token:
                    type: string
                    description: Token identifying the image file.
                  link:
                    type: string
                    format: uri
                    description: Canonical URL for the file resource.
                  filename:
                    type: string
                    description: Original filename as uploaded.
                  download:
                    type: string
                    format: uri
                    description: Time-limited download URL for the image.
            max_image_width:
              type: integer
              description: Maximum display width for the category images, in pixels.
            packing_slip_instructions:
              type: object
              description: Instructions shown on the packing slip for the category, as a map of translated strings keyed by locale code.
              additionalProperties:
                type: string
            pdf_packing_slip:
              type: boolean
              description: Specifies whether a PDF packing slip is enabled for the category.
      example:
        created: '2025-01-15T09:00:00Z'
        description:
          en_GB: Submit your documentary films exploring real-world subjects and stories.
        divisions: 1
        form:
          slug: GhIjKlMn
          link: https://api.au.cr4ce.com/form/GhIjKlMn
          name:
            en_GB: Entry form
        name:
          en_GB: Documentary
        parent:
          slug: KlMnOpQr
          link: https://api.au.cr4ce.com/category/KlMnOpQr
          name:
            en_GB: Film
        promoted: null
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        shortcode:
          en_GB: '01'
        slug: AbCdEfGh
        status: active
        updated: '2025-06-20T14:30:00Z'
        chapters:
          - slug: MnOpQrSt
            link: https://api.au.cr4ce.com/chapter/MnOpQrSt
            name:
              en_GB: Film
        entrant_max_entries: null
        entry_name_label:
          en_GB: Entry title
        fill_entry_name: false
        image_heading:
          en_GB: Category image
        images:
          - token: AbCdEfGhIjKlMnOp
            link: https://api.au.cr4ce.com/file/AbCdEfGhIjKlMnOp
            filename: example.png
            download: https://files.au.cr4ce.com/file/AbCdEfGhIjKlMnOp/example.png?Expires=1781657570&Signature=REDACTED&Key-Pair-Id=REDACTED
        max_image_width: 300
        packing_slip_instructions:
          en_GB: Attach this slip to each physical submission.
        pdf_packing_slip: false
    Chapter:
      title: Chapter
      description: Grouping that categories can be made available in.
      type: object
      properties:
        created:
          type: string
          format: date-time
          description: Date and time when the chapter was created.
        description:
          type: object
          description: Description shown for the chapter, as a map of translated strings keyed by locale code.
          additionalProperties:
            type: string
        managers:
          type: array
          description: Users who manage the chapter.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the user.
              link:
                type: string
                format: uri
                description: Canonical URL for the user resource.
              first_name:
                type: string
                description: User's first name.
              last_name:
                type: string
                description: User's last name.
        name:
          type: object
          description: Display name of the chapter, as a map of translated strings keyed by locale code.
          additionalProperties:
            type: string
        season:
          type: object
          description: Season the chapter belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Map of translated strings keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the chapter.
        status:
          type: string
          description: Localized status label for the chapter, such as `Active` or `Inactive`, distinct from the `active`/`inactive` enum used when writing a chapter.
        updated:
          type: string
          format: date-time
          description: Date and time when the chapter was last updated.
      example:
        created: '2024-12-12T09:41:21Z'
        description:
          en_GB: Chapter for the Glenlivet region.
        managers:
          - slug: AbCdEfGh
            link: https://api.au.cr4ce.com/user/AbCdEfGh
            first_name: John
            last_name: Smith
          - slug: CdEfGhIj
            link: https://api.au.cr4ce.com/user/CdEfGhIj
            first_name: Carol
            last_name: Murphy
        name:
          en_GB: Glenlivet
        season:
          slug: EfGhIjKl
          link: https://api.au.cr4ce.com/season/EfGhIjKl
          name:
            en_GB: '2026'
        slug: GhIjKlMn
        status: Active
        updated: '2026-04-13T13:45:50Z'
    ChapterList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Chapter'
      example:
        current_page: 1
        data:
          - created: '2024-12-12T09:41:21Z'
            description:
              en_GB: Chapter for the Glenlivet region.
            managers:
              - slug: AbCdEfGh
                link: https://api.au.cr4ce.com/user/AbCdEfGh
                first_name: John
                last_name: Smith
              - slug: CdEfGhIj
                link: https://api.au.cr4ce.com/user/CdEfGhIj
                first_name: Carol
                last_name: Murphy
            name:
              en_GB: Glenlivet
            season:
              slug: EfGhIjKl
              link: https://api.au.cr4ce.com/season/EfGhIjKl
              name:
                en_GB: '2026'
            slug: GhIjKlMn
            status: Active
            updated: '2026-04-13T13:45:50Z'
          - created: '2023-01-16T10:01:11Z'
            description:
              en_GB: Chapter for the Lecht region.
            managers: []
            name:
              en_GB: Lecht
            season:
              slug: EfGhIjKl
              link: https://api.au.cr4ce.com/season/EfGhIjKl
              name:
                en_GB: '2026'
            slug: IjKlMnOp
            status: Active
            updated: '2026-04-13T13:45:43Z'
        first_page_url: https://api.au.cr4ce.com/chapter?per_page=10&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/chapter?per_page=10&page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/chapter
        per_page: 10
        prev_page_url: ''
        to: 4
        total: 4
    Contributor:
      type: object
      properties:
        entry:
          type: object
          description: Entry the contributor is attached to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the entry.
            link:
              type: string
              format: uri
              description: Canonical URL for the entry resource.
            title:
              type: string
              description: Title of the entry.
        created:
          type: string
          format: date-time
          description: Date and time when the contributor was created.
        fields:
          type: array
          description: Field values captured for the contributor, one entry per field on the contributor tab.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the field.
              link:
                type: string
                format: uri
                description: Canonical URL for the field resource.
              label:
                type: object
                description: Label of the field as an HTML fragment, keyed by locale code.
                additionalProperties:
                  type: string
              title:
                type: object
                description: Plain-text title of the field, keyed by locale code.
                additionalProperties:
                  type: string
              value:
                description: Value submitted for the field, type depends on the field type.
              translated:
                type: object
                description: Translated value submitted for the field, keyed by locale code.
                additionalProperties:
                  type: string
        season:
          type: object
          description: Season the contributor belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Display name of the season, keyed by locale code.
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the contributor.
        tab:
          type: object
          description: Contributor tab the contributor belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the tab.
            link:
              type: string
              format: uri
              description: Canonical URL for the tab resource.
            name:
              type: object
              description: Display name of the tab, keyed by locale code.
              additionalProperties:
                type: string
        updated:
          type: string
          format: date-time
          description: Date and time when the contributor was last updated.
      example:
        entry:
          slug: IjKlMnOp
          link: https://api.au.cr4ce.com/entry/IjKlMnOp
          title: Documentary submission
        created: '2025-01-15T09:00:00Z'
        fields:
          - slug: StUvWxYz
            link: https://api.au.cr4ce.com/field/StUvWxYz
            label:
              en_GB: Team member name
            title:
              en_GB: Team member name
            value: Jane Roe
            translated:
              en_GB: ''
          - slug: KlMnOpQr
            link: https://api.au.cr4ce.com/field/KlMnOpQr
            label:
              en_GB: <p>Confirmed</p>
            title:
              en_GB: Confirmed
            value: true
            translated:
              en_GB: ''
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        slug: AbCdEfGh
        tab:
          slug: MnOpQrSt
          link: https://api.au.cr4ce.com/tab/MnOpQrSt
          name:
            en_GB: Contributors
        updated: '2025-06-20T14:30:00Z'
    ContributorList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Contributor'
      example:
        current_page: 1
        data:
          - entry:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/entry/IjKlMnOp
              title: Documentary submission
            created: '2025-01-15T09:00:00Z'
            fields:
              - slug: StUvWxYz
                link: https://api.au.cr4ce.com/field/StUvWxYz
                label:
                  en_GB: Team member name
                title:
                  en_GB: Team member name
                value: Jane Roe
                translated:
                  en_GB: ''
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            slug: AbCdEfGh
            tab:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/tab/MnOpQrSt
              name:
                en_GB: Contributors
            updated: '2025-06-20T14:30:00Z'
          - entry:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/entry/MnOpQrSt
              title: Short film submission
            created: '2025-02-10T10:00:00Z'
            fields:
              - slug: UvWxYzAb
                link: https://api.au.cr4ce.com/field/UvWxYzAb
                label:
                  en_GB: <p>Confirmed</p>
                title:
                  en_GB: Confirmed
                value: true
                translated:
                  en_GB: ''
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            slug: WxYzAbCd
            tab:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/tab/MnOpQrSt
              name:
                en_GB: Contributors
            updated: '2025-02-10T10:05:00Z'
        first_page_url: https://api.au.cr4ce.com/contributor?per_page=10&page=1
        from: 1
        last_page: 2
        last_page_url: https://api.au.cr4ce.com/contributor?per_page=10&page=2
        next_page_url: https://api.au.cr4ce.com/contributor?per_page=10&page=2
        path: https://api.au.cr4ce.com/contributor
        per_page: 10
        prev_page_url: ''
        to: 10
        total: 14
    Document:
      title: Document
      description: Document generated from a document template and attached to an entry, allocation, or user.
      type: object
      properties:
        allocation:
          description: Allocation the document is attached to, or an empty array when not attached to one.
          oneOf:
            - type: object
              properties:
                slug:
                  type: string
                  description: Short URL-safe identifier for the allocation.
                link:
                  type: string
                  format: uri
                  description: Canonical URL for the allocation resource.
            - type: array
              maxItems: 0
        created_at:
          type: string
          format: date-time
          description: Date and time when the document was created.
        description:
          type: object
          description: Description of the document, inherited from the document template, keyed by locale code.
          additionalProperties:
            type: string
        entry:
          description: Entry the document is attached to, or an empty array when not attached to one.
          oneOf:
            - type: object
              properties:
                slug:
                  type: string
                  description: Short URL-safe identifier for the entry.
                link:
                  type: string
                  format: uri
                  description: Canonical URL for the entry resource.
                title:
                  type: string
                  description: Title of the entry.
            - type: array
              maxItems: 0
        file:
          type: object
          description: Generated document file.
          properties:
            token:
              type: string
              description: Token identifying the file.
            link:
              type: string
              format: uri
              description: Canonical URL for the file resource.
            name:
              type: string
              description: Original filename of the generated document.
            download:
              type: string
              format: uri
              description: Time-limited download URL for the file.
        file_type:
          type: string
          enum:
            - PDF
            - Word
          description: File format of the generated document.
        name:
          type: object
          description: Name of the document, keyed by locale code.
          additionalProperties:
            type: string
        shared_with_user:
          type: boolean
          description: Specifies whether the document is shared with the entrant.
        slug:
          type: string
          description: URL-safe identifier of the document.
        user:
          description: User who created the document, or an empty array when none is attached.
          oneOf:
            - type: object
              properties:
                slug:
                  type: string
                  description: Short URL-safe identifier for the user.
                link:
                  type: string
                  format: uri
                  description: Canonical URL for the user resource.
                name:
                  type: string
                  description: Full name of the user.
                first_name:
                  type: string
                  description: First name of the user.
                last_name:
                  type: string
                  description: Last name of the user.
            - type: array
              maxItems: 0
      example:
        allocation: []
        created_at: '2025-01-15T09:00:00Z'
        description:
          en_GB: ''
        entry:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/entry/AbCdEfGh
          title: Sustainable Cities Initiative
        file:
          token: IjKlMnOpQrStUvWx
          link: https://api.au.cr4ce.com/file/IjKlMnOpQrStUvWx
          name: certificate.pdf
          download: https://files.au.cr4ce.com/file/IjKlMnOpQrStUvWx/certificate.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
        file_type: PDF
        name:
          en_GB: Certificate of entry
        shared_with_user: false
        slug: QrStUvWx
        user:
          slug: YzAbCdEf
          link: https://api.au.cr4ce.com/user/YzAbCdEf
          name: Jane Smith
          first_name: Jane
          last_name: Smith
    DocumentList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Document'
      example:
        current_page: 1
        data:
          - allocation: []
            created_at: '2025-01-15T09:00:00Z'
            description:
              en_GB: ''
            entry:
              slug: AbCdEfGh
              link: https://api.au.cr4ce.com/entry/AbCdEfGh
              title: Sustainable Cities Initiative
            file:
              token: IjKlMnOpQrStUvWx
              link: https://api.au.cr4ce.com/file/IjKlMnOpQrStUvWx
              name: certificate.pdf
              download: https://files.au.cr4ce.com/file/IjKlMnOpQrStUvWx/certificate.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
            file_type: PDF
            name:
              en_GB: Certificate of entry
            shared_with_user: false
            slug: QrStUvWx
            user:
              slug: YzAbCdEf
              link: https://api.au.cr4ce.com/user/YzAbCdEf
              name: Jane Smith
              first_name: Jane
              last_name: Smith
          - allocation:
              slug: KlMnOpQr
              link: https://api.au.cr4ce.com/allocation/KlMnOpQr
            created_at: '2025-02-10T10:00:00Z'
            description:
              en_GB: ''
            entry: []
            file:
              token: StUvWxYzAbCdEfGh
              link: https://api.au.cr4ce.com/file/StUvWxYzAbCdEfGh
              name: grant-report.pdf
              download: https://files.au.cr4ce.com/file/StUvWxYzAbCdEfGh/grant-report.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
            file_type: Word
            name:
              en_GB: Grant report
            shared_with_user: true
            slug: WxYzAbCd
            user:
              slug: YzAbCdEf
              link: https://api.au.cr4ce.com/user/YzAbCdEf
              name: Jane Smith
              first_name: Jane
              last_name: Smith
        first_page_url: https://api.au.cr4ce.com/document?per_page=10&page=1
        from: 1
        last_page: 4
        last_page_url: https://api.au.cr4ce.com/document?per_page=10&page=4
        next_page_url: https://api.au.cr4ce.com/document?per_page=10&page=2
        path: https://api.au.cr4ce.com/document
        per_page: 10
        prev_page_url: ''
        to: 10
        total: 38
    EntrySummary:
      type: object
      description: Core entry fields shared by the list and single-entry responses.
      properties:
        entrant:
          type: object
          description: Entrant who created and owns the entry.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the entrant.
            link:
              type: string
              format: uri
              description: URL of the entrant resource.
            name:
              type: string
              description: Full name of the entrant.
            first_name:
              type: string
              description: First name of the entrant.
            last_name:
              type: string
              description: Last name of the entrant.
            email:
              type: string
              format: email
              description: Email address of the entrant.
            global_id:
              type: string
              description: Globally unique identifier of the entrant.
        auto_score:
          type: integer
          description: Automated score calculated for the entry.
        category:
          type: object
          description: Category the entry is assigned to.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the category.
            link:
              type: string
              format: uri
              description: URL of the category resource.
            name:
              type: object
              description: Name of the category, keyed by locale code.
              additionalProperties:
                type: string
        chapter:
          type: object
          description: Chapter the entry is assigned to.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the chapter.
            link:
              type: string
              format: uri
              description: URL of the chapter resource.
            name:
              type: object
              description: Name of the chapter, keyed by locale code.
              additionalProperties:
                type: string
        comments:
          type: string
          description: Manager comments recorded on the entry, joined into a single string.
        contributor_count:
          type: integer
          description: Number of contributors linked to the entry.
        created:
          type: string
          format: date-time
          description: Date and time when the entry was created.
        custom_deadline:
          type: string
          description: Custom submission deadline for the entry, or `-` when none is set.
        division:
          type:
            - integer
            - 'null'
          description: Division number assigned to the entry, or `null` when none is assigned.
        eligibility_status:
          type: string
          description: Eligibility status of the entry.
        files_count:
          type: integer
          description: Number of files uploaded to the entry.
        form:
          type: object
          description: Entry form used to capture the entry.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the form.
            link:
              type: string
              format: uri
              description: URL of the form resource.
            name:
              type: object
              description: Name of the form, keyed by locale code.
              additionalProperties:
                type: string
        grant_end_date:
          type:
            - string
            - 'null'
          description: Date when the grant ends, or `null` when not applicable.
        grant_status:
          type:
            - object
            - 'null'
          description: Grant status assigned to the entry, or `null` when none is set.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the grant status.
            link:
              type: string
              format: uri
              description: URL of the grant status resource.
            name:
              type: object
              description: Name of the grant status, keyed by locale code.
              additionalProperties:
                type: string
        local_id:
          type: integer
          description: Sequential identifier of the entry within the account.
        moderation_status:
          type: string
          description: Moderation status of the entry.
        parent_category:
          type:
            - object
            - 'null'
          description: Parent of the assigned category, or `null` when the category has no parent.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the parent category.
            link:
              type: string
              format: uri
              description: URL of the parent category resource.
            name:
              type: object
              description: Name of the parent category, keyed by locale code.
              additionalProperties:
                type: string
        payment_status:
          type: string
          description: Payment status of the entry.
        plagiarism_scan_status:
          type: string
          description: Plagiarism scan status of the entry.
        review_status:
          type: string
          description: Review status of the entry.
        season:
          type: object
          description: Season the entry belongs to.
          properties:
            slug:
              type: string
              description: URL-safe identifier of the season.
            link:
              type: string
              format: uri
              description: URL of the season resource.
            name:
              type: object
              description: Name of the season, keyed by locale code.
              additionalProperties:
                type: string
        slug:
          type: string
          description: URL-safe identifier of the entry.
        status:
          type: string
          description: Submission status of the entry, for example `submitted`, `in_progress`, `resubmission_required`, `resubmitted`, `invited`, or `not_approved_for_submission`.
        submitted:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time when the entry was submitted, or `null` when not yet submitted.
        tags:
          type: string
          description: Tags applied to the entry, as a comma-separated list.
        title:
          type: string
          description: Title of the entry.
        updated:
          type: string
          format: date-time
          description: Date and time when the entry was last updated.
        user_comments:
          type: string
          description: Comments left by users on the entry, joined into a single string.
    EntryList:
      description: Paginated list of entries.
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              description: Entries on the current page.
              items:
                $ref: '#/components/schemas/EntrySummary'
      example:
        current_page: 1
        data:
          - entrant:
              slug: AbCdEfGh
              link: https://api.au.cr4ce.com/user/AbCdEfGh
              name: Jane Doe
              first_name: Jane
              last_name: Doe
              email: jane.doe@example.com
              global_id: 9c78dcbc-53cf-42f1-b5b3-82fe396f66e6
            auto_score: 0
            category:
              slug: EfGhIjKl
              link: https://api.au.cr4ce.com/category/EfGhIjKl
              name:
                en_GB: Short film
            chapter:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/chapter/MnOpQrSt
              name:
                en_GB: Europe
            comments: 'Jane Roe (2025-06-03T10:45:29+00:00): manager comment'
            contributor_count: 1
            created: '2025-03-11T15:00:03Z'
            custom_deadline: '-'
            division: 2
            eligibility_status: ''
            files_count: 1
            form:
              slug: StUvWxYz
              link: https://api.au.cr4ce.com/form/StUvWxYz
              name:
                en_GB: Entry form
            grant_end_date: null
            grant_status: null
            local_id: 916
            moderation_status: undecided
            parent_category: null
            payment_status: Paid
            plagiarism_scan_status: unscanned
            review_status: ''
            season:
              slug: BcDeFgHi
              link: https://api.au.cr4ce.com/season/BcDeFgHi
              name:
                en_GB: '2026'
            slug: PqRsTuVw
            status: submitted
            submitted: '2025-08-11T13:19:42Z'
            tags: documentary, finalist
            title: Documentary series
            updated: '2026-06-18T07:25:20Z'
            user_comments: 'Jane Roe (2025-02-19T14:22:43+00:00): strong submission'
          - entrant:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/user/IjKlMnOp
              name: John Doe
              first_name: John
              last_name: Doe
              email: john.doe@example.com
              global_id: 2f4c9b1a-7d6e-4c3b-9a2f-1e8d5c7b6a40
            auto_score: 0
            category:
              slug: EfGhIjKl
              link: https://api.au.cr4ce.com/category/EfGhIjKl
              name:
                en_GB: Short film
            chapter:
              slug: MnOpQrSt
              link: https://api.au.cr4ce.com/chapter/MnOpQrSt
              name:
                en_GB: Europe
            comments: ''
            contributor_count: 0
            created: '2025-04-02T09:12:00Z'
            custom_deadline: '-'
            division: null
            eligibility_status: ''
            files_count: 0
            form:
              slug: StUvWxYz
              link: https://api.au.cr4ce.com/form/StUvWxYz
              name:
                en_GB: Entry form
            grant_end_date: null
            grant_status: null
            local_id: 917
            moderation_status: undecided
            parent_category: null
            payment_status: Unpaid
            plagiarism_scan_status: unscanned
            review_status: ''
            season:
              slug: BcDeFgHi
              link: https://api.au.cr4ce.com/season/BcDeFgHi
              name:
                en_GB: '2026'
            slug: YzAbCdEf
            status: in_progress
            submitted: null
            tags: ''
            title: Working title
            updated: '2025-04-02T09:12:00Z'
            user_comments: ''
    EntryDetail:
      type: object
      description: Detailed entry collections returned only for a single entry.
      properties:
        entry_fields:
          type: array
          description: Form field responses captured on the entry.
          items:
            type: object
            properties:
              slug:
                type: string
                description: URL-safe identifier of the field.
              link:
                type: string
                format: uri
                description: URL of the field resource.
              label:
                type: object
                description: Label of the field, as an HTML fragment, keyed by locale code.
                additionalProperties:
                  type: string
              title:
                type: object
                description: Plain-text title of the field, keyed by locale code.
                additionalProperties:
                  type: string
              value:
                description: Value submitted for the field, or `null` when none is recorded.
              token:
                type: string
                description: File token for the uploaded file, present on file fields.
              dynamicRows:
                type: array
                description: Rows captured for a table field.
                items: {}
              values:
                type: object
                description: Cell values for a table field, keyed by cell reference.
                additionalProperties:
                  type: string
              translated:
                type: object
                description: Translated value submitted for the field, keyed by locale code.
                additionalProperties:
                  type: string
              download:
                type: string
                format: uri
                description: Temporary download URL for the uploaded file, present on file fields.
        attachments:
          type: array
          description: Files attached to the entry.
          items:
            type: object
            properties:
              token:
                type: string
                description: URL-safe identifier of the attachment.
              link:
                type: string
                format: uri
                description: URL of the attachment resource.
              file:
                type: object
                description: File stored for the attachment.
                properties:
                  token:
                    type: string
                    description: URL-safe identifier of the file.
                  link:
                    type: string
                    format: uri
                    description: URL of the file resource.
                  filename:
                    type: string
                    description: Original name of the uploaded file.
                  download:
                    type: string
                    format: uri
                    description: Temporary download URL for the file.
              attachment_fields:
                type: array
                description: Field responses captured against the attachment.
                items:
                  type: object
                  properties:
                    slug:
                      type: string
                      description: URL-safe identifier of the field.
                    link:
                      type: string
                      format: uri
                      description: URL of the field resource.
                    label:
                      type: object
                      description: Label of the field, as an HTML fragment, keyed by locale code.
                      additionalProperties:
                        type: string
                    title:
                      type: object
                      description: Plain-text title of the field, keyed by locale code.
                      additionalProperties:
                        type: string
                    value:
                      type: string
                      description: Value submitted for the field.
                    translated:
                      type: object
                      description: Translated value submitted for the field, keyed by locale code.
                      additionalProperties:
                        type: string
              tab:
                type: object
                description: Form tab the attachment belongs to.
                properties:
                  slug:
                    type: string
                    description: URL-safe identifier of the tab.
                  type:
                    type: string
                    description: Type of the tab.
                  created_at:
                    type: string
                    format: date-time
                    description: Date and time when the tab was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Date and time when the tab was last updated.
        contributors:
          type: array
          description: Contributors linked to the entry.
          items:
            type: object
            properties:
              slug:
                type: string
                description: URL-safe identifier of the contributor.
              tab:
                type: object
                description: Form tab the contributor belongs to.
                properties:
                  slug:
                    type: string
                    description: URL-safe identifier of the tab.
                  type:
                    type: string
                    description: Type of the tab.
                  created_at:
                    type: string
                    format: date-time
                    description: Date and time when the tab was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Date and time when the tab was last updated.
              contributor_fields:
                type: array
                description: Field responses captured against the contributor.
                items:
                  type: object
                  properties:
                    slug:
                      type: string
                      description: URL-safe identifier of the field.
                    link:
                      type: string
                      format: uri
                      description: URL of the field resource.
                    label:
                      type: object
                      description: Label of the field, as an HTML fragment, keyed by locale code.
                      additionalProperties:
                        type: string
                    title:
                      type: object
                      description: Plain-text title of the field, keyed by locale code.
                      additionalProperties:
                        type: string
                    value:
                      type: string
                      description: Value submitted for the field.
                    translated:
                      type: object
                      description: Translated value submitted for the field, keyed by locale code.
                      additionalProperties:
                        type: string
    Entry:
      description: Single entry, including the entrant, form field responses, attachments, contributors, and status.
      allOf:
        - $ref: '#/components/schemas/EntrySummary'
        - $ref: '#/components/schemas/EntryDetail'
      example:
        entrant:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/user/AbCdEfGh
          name: Jane Doe
          first_name: Jane
          last_name: Doe
          email: jane.doe@example.com
          global_id: 9c78dcbc-53cf-42f1-b5b3-82fe396f66e6
        entry_fields:
          - slug: IjKlMnOp
            link: https://api.au.cr4ce.com/field/IjKlMnOp
            label:
              en_GB: <p>Summary</p>
            title:
              en_GB: Summary
            value: A short film about resilience.
            translated:
              en_GB: ''
          - slug: QrStUvWx
            link: https://api.au.cr4ce.com/field/QrStUvWx
            label:
              en_GB: <p>Budget</p>
            title:
              en_GB: Budget
            dynamicRows: []
            values:
              B1: '23.00'
              C1: '32'
            translated:
              en_GB: ''
          - slug: YzAbCdEf
            link: https://api.au.cr4ce.com/field/YzAbCdEf
            label:
              en_GB: <p>Supporting document</p>
            title:
              en_GB: Supporting document
            value: null
            token: GhIjKlMnOpQrStUv
            download: https://files.au.cr4ce.com/file/GhIjKlMnOpQrStUv/brief.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
            translated:
              en_GB: ''
        attachments:
          - token: GhIjKlMnOpQrStUv
            link: https://api.au.cr4ce.com/attachment/GhIjKlMnOpQrStUv
            file:
              token: GhIjKlMnOpQrStUv
              link: https://api.au.cr4ce.com/file/GhIjKlMnOpQrStUv
              filename: brief.pdf
              download: https://files.au.cr4ce.com/file/GhIjKlMnOpQrStUv/brief.pdf?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
            attachment_fields: []
            tab:
              slug: WxYzAbCd
              type: Attachments
              created_at: '2025-04-27T01:00:00Z'
              updated_at: '2025-05-12T14:00:00Z'
        auto_score: 0
        category:
          slug: EfGhIjKl
          link: https://api.au.cr4ce.com/category/EfGhIjKl
          name:
            en_GB: Short film
        chapter:
          slug: MnOpQrSt
          link: https://api.au.cr4ce.com/chapter/MnOpQrSt
          name:
            en_GB: Europe
        comments: 'Jane Roe (2025-06-03T10:45:29+00:00): manager comment'
        contributor_count: 1
        contributors:
          - slug: UvWxYzAb
            tab:
              slug: CdEfGhIj
              type: Contributors
              created_at: '2025-04-13T10:35:30Z'
              updated_at: '2025-06-18T14:42:14Z'
            contributor_fields:
              - slug: KlMnOpQr
                link: https://api.au.cr4ce.com/field/KlMnOpQr
                label:
                  en_GB: <p>Role</p>
                title:
                  en_GB: Role
                value: Director
                translated:
                  en_GB: ''
        created: '2025-03-11T15:00:03Z'
        custom_deadline: '-'
        division: 2
        eligibility_status: ''
        files_count: 1
        form:
          slug: StUvWxYz
          link: https://api.au.cr4ce.com/form/StUvWxYz
          name:
            en_GB: Entry form
        grant_end_date: null
        grant_status: null
        local_id: 916
        moderation_status: undecided
        parent_category: null
        payment_status: Paid
        plagiarism_scan_status: unscanned
        review_status: ''
        season:
          slug: BcDeFgHi
          link: https://api.au.cr4ce.com/season/BcDeFgHi
          name:
            en_GB: '2026'
        slug: PqRsTuVw
        status: submitted
        submitted: '2025-08-11T13:19:42Z'
        tags: documentary, finalist
        title: Documentary series
        updated: '2026-06-18T07:25:20Z'
        user_comments: 'Jane Roe (2025-02-19T14:22:43+00:00): strong submission'
    Field:
      type: object
      properties:
        entrant_read_access:
          type: boolean
          description: Whether entrants can view this field.
        entrant_write_access:
          type: boolean
          description: Whether entrants can edit this field.
        auto_scoring:
          type: integer
          description: Score awarded automatically for the field, or `0` when automatic judging is not configured.
        categories:
          type: array
          description: Category slugs the field is associated with, or `["*"]` for every category.
          items:
            type: string
        category_count:
          description: Number of categories the field is associated with, `all` when it applies to every category, or `null` when not category-scoped.
        conditional_field:
          type:
            - object
            - 'null'
          description: Field whose value controls whether this field is shown, or `null` when the field is not conditional.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the controlling field.
            link:
              type: string
              format: uri
              description: Canonical URL for the controlling field resource.
            name:
              type: object
              description: Display name of the controlling field, keyed by locale code.
              additionalProperties:
                type: string
        created:
          type: string
          format: date-time
          description: Date and time when the field was created.
        file_types:
          type: array
          description: Permitted file extensions for file fields, empty when no restriction applies.
          items:
            type: string
        form:
          type:
            - object
            - 'null'
          description: Form the field belongs to, or `null` when the field is not attached to a form.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the form.
            link:
              type: string
              format: uri
              description: Canonical URL for the form resource.
            name:
              type: object
              description: Display name of the form, keyed by locale code.
              additionalProperties:
                type: string
        help_text:
          type: object
          description: Help text shown for the field, as an HTML fragment keyed by locale code.
          additionalProperties:
            type: string
        hint_text:
          type: object
          description: Hint text shown for the field, as an HTML fragment keyed by locale code.
          additionalProperties:
            type: string
        label:
          type: object
          description: Label of the field, as an HTML fragment keyed by locale code.
          additionalProperties:
            type: string
        max_file_size:
          type:
            - integer
            - 'null'
          description: Maximum upload size in megabytes for file fields, or `null` when no limit applies.
        maximum_characters:
          type:
            - integer
            - 'null'
          description: Maximum number of characters accepted, or `null` when no limit applies.
        maximum_words:
          type:
            - integer
            - 'null'
          description: Maximum number of words accepted, or `null` when no limit applies.
        minimum_characters:
          type:
            - integer
            - 'null'
          description: Minimum number of characters required, or `null` when no limit applies.
        minimum_words:
          type:
            - integer
            - 'null'
          description: Minimum number of words required, or `null` when no limit applies.
        options:
          type: array
          description: Selectable options for choice fields (for example, drop-down or radio). Empty when the field type has no options.
          items:
            type: string
        order:
          type: integer
          description: Position of the field within its tab.
        protection:
          type: string
          description: Protection level governing access to the data for the field (for example, `standard`, `elevated`, or `maximum`).
        registration:
          type:
            - string
            - 'null'
          description: Registration attribute the field is mapped to, or `null` if unmapped.
        required:
          type: boolean
          description: Whether a value is required for the field.
        resource:
          type: string
          description: Resource the field collects data for (for example, the entry or application, `contributors`, `referees`, `attachments`, or `users`).
        searchable:
          type: boolean
          description: Whether the field is included in search.
        season:
          type: object
          description: Season the field belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Display name of the season, keyed by locale code.
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the field.
        tab:
          type:
            - object
            - 'null'
          description: Tab the field belongs to, or `null` when the field is not attached to a tab.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the tab.
            link:
              type: string
              format: uri
              description: Canonical URL for the tab resource.
            name:
              type: object
              description: Display name of the tab, keyed by locale code.
              additionalProperties:
                type: string
        title:
          type: object
          description: Plain-text title of the field, keyed by locale code.
          additionalProperties:
            type: string
        type:
          type: string
          description: Field type (for example, `text`, `textarea`, `drop-down-list`, `file`, `currency`, or `date`).
        updated:
          type: string
          format: date-time
          description: Date and time when the field was last updated.
        visibility:
          type: array
          description: Contexts in which the field is visible (for example, `qualifying`, `top_pick`, `voting`, `gallery`, or `vip_judging`).
          items:
            type: string
      example:
        entrant_read_access: true
        entrant_write_access: true
        auto_scoring: 0
        categories:
          - '*'
        category_count: all
        conditional_field: null
        created: '2025-01-15T09:00:00Z'
        file_types: []
        form:
          slug: GhIjKlMn
          link: https://api.au.cr4ce.com/form/GhIjKlMn
          name:
            en_GB: Entry form
        help_text:
          en_GB: <p>Provide a concise summary of your work.</p>
        hint_text:
          en_GB: <p>Up to 500 words.</p>
        label:
          en_GB: <p>Summary</p>
        max_file_size: null
        maximum_characters: null
        maximum_words: 500
        minimum_characters: null
        minimum_words: null
        options: []
        order: 1
        protection: standard
        registration: null
        required: true
        resource: entries
        searchable: true
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        slug: AbCdEfGh
        tab:
          slug: StUvWxYz
          link: https://api.au.cr4ce.com/tab/StUvWxYz
          name:
            en_GB: About you
        title:
          en_GB: Summary
        type: textarea
        updated: '2025-06-20T14:30:00Z'
        visibility:
          - qualifying
          - vip_judging
    FieldList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Field'
      example:
        current_page: 1
        data:
          - entrant_read_access: true
            entrant_write_access: true
            auto_scoring: 0
            categories:
              - '*'
            category_count: all
            conditional_field: null
            created: '2025-01-15T09:00:00Z'
            file_types: []
            form:
              slug: GhIjKlMn
              link: https://api.au.cr4ce.com/form/GhIjKlMn
              name:
                en_GB: Entry form
            help_text:
              en_GB: <p>Provide a concise summary of your work.</p>
            hint_text:
              en_GB: <p>Up to 500 words.</p>
            label:
              en_GB: <p>Summary</p>
            max_file_size: null
            maximum_characters: null
            maximum_words: 500
            minimum_characters: null
            minimum_words: null
            options: []
            order: 1
            protection: standard
            registration: null
            required: true
            resource: entries
            searchable: true
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            slug: AbCdEfGh
            tab:
              slug: StUvWxYz
              link: https://api.au.cr4ce.com/tab/StUvWxYz
              name:
                en_GB: About you
            title:
              en_GB: Summary
            type: textarea
            updated: '2025-06-20T14:30:00Z'
            visibility:
              - qualifying
              - vip_judging
        first_page_url: https://api.au.cr4ce.com/field?per_page=10&page=1
        from: 1
        last_page: 2
        last_page_url: https://api.au.cr4ce.com/field?per_page=10&page=2
        next_page_url: https://api.au.cr4ce.com/field?per_page=10&page=2
        path: https://api.au.cr4ce.com/field
        per_page: 10
        prev_page_url: ''
        to: 10
        total: 12
    File:
      type: object
      properties:
        download_link:
          type: string
          description: Download URL for the file.
        duration:
          type:
            - number
            - 'null'
          description: Duration of the file in seconds, or `null` for files without a duration.
        filename:
          type: string
          description: Name of the file.
        image_height:
          type:
            - integer
            - 'null'
          description: Height of the image in pixels, or `null` when not available.
        image_width:
          type:
            - integer
            - 'null'
          description: Width of the image in pixels, or `null` when not available.
        metadata:
          type: object
          description: File metadata.
          properties:
            title:
              type: string
              description: Metadata title.
            caption:
              type: string
              description: Metadata caption.
            copyright:
              type: string
              description: Metadata copyright notice.
            created:
              type: string
              description: Metadata creation time.
            city:
              type: string
              description: Metadata city.
            country:
              type: string
              description: Metadata country.
            state:
              type: string
              description: Metadata state.
            camera:
              type: string
              description: Camera model in the metadata.
            exposure:
              type: string
              description: Exposure setting in the metadata.
            iso:
              type: string
              description: ISO setting in the metadata.
            fstop:
              type: string
              description: F-stop setting in the metadata.
            focal_length:
              type: string
              description: Focal length in the metadata.
            size:
              type: string
              description: Size value in the metadata.
        mime:
          type: string
          description: MIME type of the file.
        size:
          type: integer
          description: Size of the file.
        transcoding:
          type: array
          description: Transcoded file variants. Empty when the file is not a video.
          items:
            type: object
            properties:
              basename:
                type: string
                description: Basename of the transcoded file.
              download_link:
                type: string
                description: Download URL for the transcoded file.
              extension:
                type: string
                description: File extension of the transcoded file.
              timestamp:
                type: integer
                description: Unix timestamp of the transcoded file's last modification.
              size:
                type: integer
                description: Size of the transcoded file.
              etag:
                type: string
                description: ETag of the transcoded file.
      example:
        download_link: https://files.au.cr4ce.com/file/AbCdEfGhIjKlMnOp/squirrel-on-log.jpg?Expires=1781485359&Signature=REDACTED&Key-Pair-Id=REDACTED
        duration: null
        filename: squirrel-on-log.jpg
        image_height: null
        image_width: null
        metadata:
          title: ''
          caption: ''
          copyright: ''
          created: ''
          city: ''
          country: ''
          state: ''
          camera: ''
          exposure: ''
          iso: ''
          fstop: ''
          focal_length: ''
          size: 768 x 574
        mime: image/jpeg
        size: 26513
        transcoding: []
    Leaderboard:
      title: Leaderboard
      description: Single row in a score-set leaderboard, representing one entry and its scores.
      type: object
      properties:
        slug:
          type: string
          description: Short URL-safe identifier for the entry.
        title:
          type: string
          description: Title of the entry as submitted by the entrant.
        tags:
          type: string
          description: Comma-separated tags applied to the entry, empty string if none.
        category:
          type:
            - object
            - 'null'
          description: Category the entry was submitted to, `null` if not assigned.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the category.
            link:
              type: string
              format: uri
              description: Canonical URL for the category resource.
            name:
              type: object
              description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
              additionalProperties:
                type: string
        chapter:
          type:
            - object
            - 'null'
          description: Chapter the entry belongs to, `null` if not assigned.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the chapter.
            link:
              type: string
              format: uri
              description: Canonical URL for the chapter resource.
            name:
              type: object
              description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
              additionalProperties:
                type: string
        division:
          type:
            - string
            - 'null'
          description: Division the entry is assigned to, `null` if not assigned.
        submitted:
          type: string
          format: date-time
          description: Date and time when the entry was submitted, in ISO 8601 format.
        auto_score:
          type:
            - number
            - 'null'
          description: Automated score calculated from the entry's auto-scored fields, `null` if none.
        status:
          type: string
          description: Submission status of the entry.
        grant_status:
          type:
            - string
            - 'null'
          description: Grant status of the entry, `null` unless grants are enabled.
        link:
          type: string
          format: uri
          description: Canonical URL for the entry resource.
        scores:
          description: Scores for the entry, shaped by the score set mode (`voting`, `qualifying`, `vip_judging`, or `top_pick`).
          anyOf:
            - title: Voting
              type: object
              description: Scores returned for a `voting` score set.
              properties:
                total_votes:
                  type: integer
                  description: Total number of votes the entry received.
            - title: Qualifying
              type: object
              description: Scores returned for a `qualifying` score set.
              properties:
                final_decision:
                  type:
                    - string
                    - 'null'
                  enum:
                    - pass
                    - fail
                    - unsure
                  description: Qualifying decision recorded for the entry, `null` if none recorded.
            - title: VIP Judging
              type: object
              description: Scores returned for a `vip_judging` score set.
              properties:
                total_score:
                  type: object
                  description: Aggregated score across all criteria.
                  properties:
                    value:
                      type: number
                      description: Total score awarded across all criteria.
                    max_score:
                      oneOf:
                        - type: integer
                        - type: string
                      description: Maximum achievable total score, empty string if none configured.
                    final_score:
                      type: string
                      description: Formatted total score, such as `8/10`, or `-` if no maximum is configured.
                criteria:
                  type: array
                  description: Per-criterion scores making up the total.
                  items:
                    type: object
                    properties:
                      name:
                        type: object
                        description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
                        additionalProperties:
                          type: string
                      value:
                        type: number
                        description: Score awarded for the criterion.
                      max_score:
                        type: integer
                        description: Maximum achievable score for the criterion.
                      final_score:
                        type: string
                        description: Formatted criterion score, such as `4/5`.
                      weight:
                        type: number
                        description: Relative weight of the criterion in the total.
            - title: Top Pick
              type: object
              description: Scores returned for a `top_pick` score set, keyed by preference position (for example, `preference_1`), with the number of judges at that position.
              additionalProperties:
                type: integer
      example:
        slug: AbCdEfGh
        title: Sustainable Cities Initiative
        tags: ''
        category:
          slug: IjKlMnOp
          link: https://api.au.cr4ce.com/category/IjKlMnOp
          name:
            en_GB: Documentary
        chapter:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/chapter/QrStUvWx
          name:
            en_GB: United Kingdom
        division: null
        submitted: '2026-01-15T09:00:00Z'
        auto_score: 0
        status: submitted
        grant_status: null
        link: https://api.au.cr4ce.com/entry/AbCdEfGh
        scores:
          total_score:
            value: 8
            max_score: 10
            final_score: 8/10
          criteria:
            - name:
                en_GB: Originality
              value: 4
              max_score: 5
              final_score: 4/5
              weight: 1
    LeaderboardList:
      title: Leaderboard list
      description: Paginated leaderboard for a single score set, with ranked entries in `data` alongside the score set and season.
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              description: Leaderboard rows for the current page.
              items:
                $ref: '#/components/schemas/Leaderboard'
            score_set:
              type: object
              description: Score set the leaderboard is calculated for.
              properties:
                slug:
                  type: string
                  description: Short URL-safe identifier for the score set.
                name:
                  type: object
                  description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
                  additionalProperties:
                    type: string
                mode:
                  type: string
                  enum:
                    - voting
                    - qualifying
                    - vip_judging
                    - top_pick
                  description: Scoring mode of the score set, determines the shape of each row's `scores` object.
                form:
                  type: object
                  description: Form the score set scores entries from.
                  properties:
                    slug:
                      type: string
                      description: Short URL-safe identifier for the form.
                    link:
                      type: string
                      format: uri
                      description: Canonical URL for the form resource.
                    name:
                      type: object
                      description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
                      additionalProperties:
                        type: string
            season:
              type: object
              description: Season the leaderboard belongs to.
              properties:
                slug:
                  type: string
                  description: Short URL-safe identifier for the season.
                link:
                  type: string
                  format: uri
                  description: Canonical URL for the season resource.
                name:
                  type: object
                  description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
                  additionalProperties:
                    type: string
      example:
        current_page: 1
        data:
          - slug: AbCdEfGh
            title: Sustainable Cities Initiative
            tags: ''
            category:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/category/IjKlMnOp
              name:
                en_GB: Documentary
            chapter:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/chapter/QrStUvWx
              name:
                en_GB: United Kingdom
            division: null
            submitted: '2026-01-15T09:00:00Z'
            auto_score: 0
            status: submitted
            grant_status: null
            link: https://api.au.cr4ce.com/entry/AbCdEfGh
            scores:
              total_votes: 12
          - slug: MnOpQrSt
            title: Ocean Cleanup Documentary
            tags: ''
            category:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/category/IjKlMnOp
              name:
                en_GB: Documentary
            chapter:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/chapter/QrStUvWx
              name:
                en_GB: United Kingdom
            division: null
            submitted: '2026-01-12T14:20:00Z'
            auto_score: 0
            status: submitted
            grant_status: null
            link: https://api.au.cr4ce.com/entry/MnOpQrSt
            scores:
              total_votes: 9
        first_page_url: https://api.au.cr4ce.com/leaderboard?score_set=UvWxYzAb&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/leaderboard?score_set=UvWxYzAb&page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/leaderboard
        per_page: 10
        prev_page_url: ''
        to: 2
        total: 2
        score_set:
          slug: UvWxYzAb
          name:
            en_GB: Voting
          mode: voting
          form:
            slug: GhIjKlMn
            link: https://api.au.cr4ce.com/form/GhIjKlMn
            name:
              en_GB: Entry form
        season:
          slug: CdEfGhIj
          link: https://api.au.cr4ce.com/season/CdEfGhIj
          name:
            en_GB: '2025'
    Order:
      title: Order
      description: Order recording a purchase made on the account.
      type: object
      properties:
        address:
          type: string
          description: Billing street address supplied for the order.
        city:
          type: string
          description: Billing city supplied for the order.
        comments:
          type: string
          description: Free-text comments recorded against the order.
        company:
          type: string
          description: Billing company name supplied for the order.
        country:
          type: string
          description: Billing country supplied for the order.
        created_at:
          type: string
          format: date-time
          description: Date and time when the order was created, in ISO 8601 format.
        currency:
          type: string
          description: Currency the order amounts are denominated in, as an ISO 4217 code.
        discount:
          type: number
          description: Total discount applied to the order, in the order currency.
        discount_code:
          type: string
          description: Discount code applied to the order, empty when none applied.
        e_invoice_status:
          type: string
          description: Electronic invoicing status of the order.
        invoice_number:
          type: string
          description: Invoice number assigned to the order.
        ip_address:
          type: string
          format: ip-address
          description: IP address the order was placed from.
        items:
          type: string
          description: HTML-formatted summary of the line items for the order.
        items_array:
          type: array
          description: Structured list of the line items for the order.
          items:
            type: object
            properties:
              amount:
                type: string
                description: Formatted line amount, including currency symbol.
              description:
                type: string
                description: Description of the line item.
              discount:
                type: string
                description: Formatted discount applied to the line item, including currency symbol.
              entry:
                type: object
                description: Entry the line item relates to, present for entry line items.
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the entry.
                  link:
                    type: string
                    format: uri
                    description: Canonical URL for the entry resource.
                  title:
                    type: string
                    description: Title of the entry.
              item_type:
                type: string
                description: Type of the line item.
              name:
                type: string
                description: Display name of the line item.
              price:
                type: object
                description: Price the line item was charged at.
                properties:
                  slug:
                    type: string
                    description: Short URL-safe identifier for the price.
                  link:
                    type: string
                    format: uri
                    description: Canonical URL for the price resource.
                  title:
                    type: object
                    description: Translated title, keyed by locale code such as `en_GB`.
                    additionalProperties:
                      type: string
              quantity:
                type: integer
                description: Number of units purchased for the line item.
        member_number:
          type: string
          description: Membership number recorded against the order.
        payment_method:
          type: string
          description: Method used to pay for the order.
        payment_status:
          type: string
          description: Payment status of the order.
        postcode:
          type: string
          description: Billing postcode supplied for the order.
        processing_fee:
          type: number
          description: Processing fee charged on the order, in the order currency.
        processing_fee_rate:
          type:
            - number
            - 'null'
          description: Rate used to calculate the processing fee, as a percentage, or null if none applies.
        region:
          type: string
          description: Billing region supplied for the order.
        season:
          type: object
          description: Season the order was placed in.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Translated name, keyed by locale code such as `en_GB`.
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the order.
        state:
          type: string
          description: Billing state supplied for the order.
        subtotal:
          type: number
          description: Order subtotal before tax and fees, in the order currency.
        tax:
          type: number
          description: Total tax charged on the order, in the order currency.
        tax_rate:
          type:
            - number
            - 'null'
          description: Rate used to calculate tax, as a percentage, or null if none applies.
        tax_rate_details:
          type: object
          description: Details of the tax rate applied to the order.
          properties:
            country:
              type: string
              description: Country the tax rate applies to.
            link:
              type: string
              format: uri
              description: Canonical URL for the tax rate resource.
            name:
              type: string
              description: Name of the tax rate.
            rate:
              type: number
              description: Tax rate, as a percentage.
            region:
              type:
                - string
                - 'null'
              description: Region the tax rate applies to, or null if not region-specific.
            slug:
              type: string
              description: Short URL-safe identifier for the tax rate.
            term:
              type: string
              description: Display term for the tax, such as `VAT` or `GST`.
        tax_term:
          type: string
          description: Display term used for tax on the order, such as `VAT` or `GST`.
        total:
          type: number
          description: Order total including tax and fees, in the order currency.
        transaction_date:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time when the payment transaction occurred, in ISO 8601 format, or null if none recorded.
        transaction_provider:
          type: string
          description: Payment provider that processed the transaction.
        transaction_reference:
          type: string
          description: Reference assigned to the transaction by the payment provider.
        transaction_status:
          type: string
          description: Status of the payment transaction.
        user:
          type: object
          description: User who placed the order.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the user.
            link:
              type: string
              format: uri
              description: Canonical URL for the user resource.
            name:
              type: string
              description: Display name of the user.
            first_name:
              type: string
              description: First name of the user.
            last_name:
              type: string
              description: Last name of the user.
            email:
              type: string
              format: email
              description: Email address of the user.
        vat_number:
          type: string
          description: VAT number supplied for the order.
      example:
        address: 12 Example Street
        city: London
        comments: ''
        company: Example Productions Ltd
        country: United Kingdom
        created_at: '2026-01-15T09:00:00Z'
        currency: GBP
        discount: 0
        discount_code: ''
        e_invoice_status: none
        invoice_number: INV-001234
        ip_address: 203.0.113.42
        items: <ul><li>Standard entry &times; 1 &mdash; &pound;50.00</li></ul>
        items_array:
          - amount: £50.00
            description: Standard entry
            discount: £0.00
            entry:
              slug: AbCdEfGh
              link: https://api.au.cr4ce.com/entry/AbCdEfGh
              title: Sustainable Cities Initiative
            item_type: entry
            name: Standard entry
            price:
              slug: IjKlMnOp
              link: https://api.au.cr4ce.com/price/IjKlMnOp
              title:
                en_GB: Standard entry
            quantity: 1
        member_number: ''
        payment_method: card
        payment_status: paid
        postcode: EC1A 1BB
        processing_fee: 1.5
        processing_fee_rate: 3
        region: ''
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        slug: YzAbCdEf
        state: ''
        subtotal: 50
        tax: 10
        tax_rate: 20
        tax_rate_details:
          country: GB
          link: https://api.au.cr4ce.com/tax/GhIjKlMn
          name: VAT
          rate: 20
          region: null
          slug: GhIjKlMn
          term: VAT
        tax_term: VAT
        total: 61.5
        transaction_date: '2026-01-15T09:01:00Z'
        transaction_provider: stripe
        transaction_reference: REDACTED
        transaction_status: succeeded
        user:
          slug: OpQrStUv
          link: https://api.au.cr4ce.com/user/OpQrStUv
          name: Jane Smith
          first_name: Jane
          last_name: Smith
          email: jane.smith@example.com
        vat_number: GB123456789
    OrderList:
      title: Order list
      description: Paginated list of orders, wrapped in `data` alongside the standard pagination envelope.
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              description: Orders for the current page.
              items:
                $ref: '#/components/schemas/Order'
      example:
        current_page: 1
        data:
          - address: 12 Example Street
            city: London
            comments: ''
            company: Example Productions Ltd
            country: United Kingdom
            created_at: '2026-01-15T09:00:00Z'
            currency: GBP
            discount: 0
            discount_code: ''
            e_invoice_status: none
            invoice_number: INV-001234
            ip_address: 203.0.113.42
            items: <ul><li>Standard entry &times; 1 &mdash; &pound;50.00</li></ul>
            items_array:
              - amount: £50.00
                description: Standard entry
                discount: £0.00
                entry:
                  slug: AbCdEfGh
                  link: https://api.au.cr4ce.com/entry/AbCdEfGh
                  title: Sustainable Cities Initiative
                item_type: entry
                name: Standard entry
                price:
                  slug: IjKlMnOp
                  link: https://api.au.cr4ce.com/price/IjKlMnOp
                  title:
                    en_GB: Standard entry
                quantity: 1
            member_number: ''
            payment_method: card
            payment_status: paid
            postcode: EC1A 1BB
            processing_fee: 1.5
            processing_fee_rate: 3
            region: ''
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            slug: YzAbCdEf
            state: ''
            subtotal: 50
            tax: 10
            tax_rate: 20
            tax_rate_details:
              country: GB
              link: https://api.au.cr4ce.com/tax/GhIjKlMn
              name: VAT
              rate: 20
              region: null
              slug: GhIjKlMn
              term: VAT
            tax_term: VAT
            total: 61.5
            transaction_date: '2026-01-15T09:01:00Z'
            transaction_provider: stripe
            transaction_reference: REDACTED
            transaction_status: succeeded
            user:
              slug: OpQrStUv
              link: https://api.au.cr4ce.com/user/OpQrStUv
              name: Jane Smith
              first_name: Jane
              last_name: Smith
              email: jane.smith@example.com
            vat_number: GB123456789
        first_page_url: https://api.au.cr4ce.com/order?page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/order?page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/order
        per_page: 10
        prev_page_url: ''
        to: 1
        total: 1
    ReviewTask:
      title: Review task
      description: Single review task, an entry paired with a review stage, listing the reviewers responsible for actioning it.
      type: object
      properties:
        action_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time when the review task was actioned, `null` if not yet actioned.
        category:
          type: object
          description: Category the entry belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the category.
            link:
              type: string
              format: uri
              description: Canonical URL for the category resource.
            name:
              type: object
              description: Translated name of the category, keyed by locale code.
              additionalProperties:
                type: string
        created:
          type: string
          format: date-time
          description: Date and time when the review task was created.
        decision:
          type:
            - string
            - 'null'
          description: Decision recorded against the review task, `null` if none recorded.
        entry:
          type: object
          description: Entry the review task relates to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the entry.
            link:
              type: string
              format: uri
              description: Canonical URL for the entry resource.
            title:
              type: string
              description: Title of the entry.
        review_stage:
          type: object
          description: Review stage the task belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the review stage.
            link:
              type: string
              format: uri
              description: Canonical URL for the review stage resource.
            name:
              type: object
              description: Translated name of the review stage, keyed by locale code.
              additionalProperties:
                type: string
        reviewer:
          type: array
          description: Reviewers responsible for actioning the review task.
          items:
            type: object
            properties:
              name:
                type: string
                description: Display name of the reviewer.
              email:
                type: string
                format: email
                description: Email address of the reviewer.
        season:
          type: object
          description: Season the entry belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Translated name of the season, keyed by locale code.
              additionalProperties:
                type: string
        token:
          type: string
          description: Token uniquely identifying the review task.
        updated:
          type: string
          format: date-time
          description: Date and time when the review task was last updated.
      example:
        action_at: null
        category:
          slug: CdEfGhIj
          link: https://api.au.cr4ce.com/category/CdEfGhIj
          name:
            en_GB: Photography
        created: '2026-01-15T09:00:00Z'
        decision: null
        entry:
          slug: AbCdEfGh
          link: https://api.au.cr4ce.com/entry/AbCdEfGh
          title: Sustainable Cities Initiative
        review_stage:
          slug: EfGhIjKl
          link: https://api.au.cr4ce.com/review-stage/EfGhIjKl
          name:
            en_GB: First round
        reviewer:
          - name: Jane Smith
            email: jane.smith@example.com
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        token: REDACTED
        updated: '2026-01-15T09:00:00Z'
    ReviewTaskList:
      title: Review task list
      description: Paginated list of review tasks.
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              description: Review tasks for the current page.
              items:
                $ref: '#/components/schemas/ReviewTask'
      example:
        current_page: 1
        data:
          - action_at: null
            category:
              slug: CdEfGhIj
              link: https://api.au.cr4ce.com/category/CdEfGhIj
              name:
                en_GB: Photography
            created: '2026-01-15T09:00:00Z'
            decision: null
            entry:
              slug: AbCdEfGh
              link: https://api.au.cr4ce.com/entry/AbCdEfGh
              title: Sustainable Cities Initiative
            review_stage:
              slug: EfGhIjKl
              link: https://api.au.cr4ce.com/review-stage/EfGhIjKl
              name:
                en_GB: First round
            reviewer:
              - name: Jane Smith
                email: jane.smith@example.com
            season:
              slug: QrStUvWx
              link: https://api.au.cr4ce.com/season/QrStUvWx
              name:
                en_GB: '2025'
            token: REDACTED
            updated: '2026-01-15T09:00:00Z'
        first_page_url: https://api.au.cr4ce.com/review-task?page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/review-task?page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/review-task
        per_page: 10
        prev_page_url: ''
        to: 1
        total: 1
    Round:
      title: Round
      description: Phase of a season with its own type, dates, form, and chapters.
      type: object
      properties:
        chapters:
          type: array
          description: Chapters associated with the round.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the chapter.
              link:
                type: string
                format: uri
                description: Canonical URL for the chapter resource.
              name:
                type: object
                description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
                additionalProperties:
                  type: string
        created:
          type: string
          format: date-time
          description: Date and time when the round was created.
        end_date:
          type:
            - string
            - 'null'
          description: Date and time when the round closes, in `YYYY-MM-DD HH:MM:SS` format, or null when no close date is set.
        form:
          type: string
          description: Slug of the form associated with the round.
        name:
          type: object
          description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
          additionalProperties:
            type: string
        season:
          type: object
          description: Season the round belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the round.
        start_date:
          type:
            - string
            - 'null'
          description: Date and time when the round opens, in `YYYY-MM-DD HH:MM:SS` format, or null when no open date is set.
        type:
          type: string
          description: Type of the round.
          enum:
            - entry
            - judge
            - feedback
        updated:
          type: string
          format: date-time
          description: Date and time when the round was last updated.
      example:
        chapters:
          - slug: CdEfGhIj
            link: https://api.au.cr4ce.com/chapter/CdEfGhIj
            name:
              en_GB: Open
        created: '2026-01-15T09:00:00Z'
        end_date: '2026-03-31 23:59:59'
        form: AbCdEfGh
        name:
          en_GB: Entry round
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        slug: EfGhIjKl
        start_date: '2026-01-01 00:00:00'
        type: entry
        updated: '2026-01-15T09:00:00Z'
    RoundList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Round'
      example:
        current_page: 1
        data:
          - chapters:
              - slug: AbCdEfGh
                link: https://api.eu.cr4ce.com/chapter/AbCdEfGh
                name:
                  en_GB: lecht
              - slug: CdEfGhIj
                link: https://api.eu.cr4ce.com/chapter/CdEfGhIj
                name:
                  en_GB: Glencoe
            created: '2026-06-24T13:57:52Z'
            end_date: null
            form: EfGhIjKl
            name:
              en_GB: form 15
            season:
              slug: GhIjKlMn
              link: https://api.eu.cr4ce.com/season/GhIjKlMn
              name:
                en_GB: '2026'
            slug: IjKlMnOp
            start_date: null
            type: entry
            updated: '2026-06-24T13:57:52Z'
          - chapters: []
            created: '2025-02-13T11:41:26Z'
            end_date: '2026-04-22 07:43:00'
            form: KlMnOpQr
            name:
              en_GB: Cycling grants judging
            season:
              slug: GhIjKlMn
              link: https://api.eu.cr4ce.com/season/GhIjKlMn
              name:
                en_GB: '2026'
            slug: MnOpQrSt
            start_date: '2025-03-07 08:43:00'
            type: judge
            updated: '2026-04-08T15:24:34Z'
        first_page_url: https://api.eu.cr4ce.com/round?per_page=100&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.eu.cr4ce.com/round?per_page=100&page=1
        next_page_url: ''
        path: https://api.eu.cr4ce.com/round
        per_page: 100
        prev_page_url: ''
        to: 29
        total: 29
    ScoreSet:
      type: object
      properties:
        created:
          type: string
          format: date-time
        form:
          type: string
        mode:
          type: string
          enum:
            - qualifying
            - top_pick
            - vip_judging
            - voting
            - gallery
        name:
          type: object
          description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
          additionalProperties:
            type: string
        order:
          type:
            - integer
            - 'null'
        season:
          type: object
          properties:
            slug:
              type: string
            link:
              type: string
              format: uri
            name:
              type: object
              description: Map keyed by locale code (for example, `en_GB` or `fr_FR`), with the translated string as the value.
              additionalProperties:
                type: string
        slug:
          type: string
        updated:
          type: string
          format: date-time
      example:
        created: '2026-03-19T08:05:41Z'
        form: AbCdEfGh
        mode: top_pick
        name:
          en_GB: Top pick test
        order: null
        season:
          slug: CdEfGhIj
          link: https://api.au.cr4ce.com/season/CdEfGhIj
          name:
            en_GB: '2026'
        slug: EfGhIjKl
        updated: '2026-06-03T06:50:18Z'
    ScoreSetList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/ScoreSet'
      example:
        current_page: 1
        data:
          - created: '2026-06-24T13:43:50Z'
            form: AbCdEfGh
            mode: vip_judging
            name:
              en_GB: Assignments view testing
            order: null
            season:
              slug: CdEfGhIj
              link: https://api.eu.cr4ce.com/season/CdEfGhIj
              name:
                en_GB: '2026'
            slug: EfGhIjKl
            updated: '2026-06-24T13:43:50Z'
          - created: '2025-04-02T16:00:58Z'
            form: AbCdEfGh
            mode: voting
            name:
              en_GB: Voting
            order: null
            season:
              slug: CdEfGhIj
              link: https://api.eu.cr4ce.com/season/CdEfGhIj
              name:
                en_GB: '2026'
            slug: GhIjKlMn
            updated: '2026-06-23T15:22:33Z'
        first_page_url: https://api.eu.cr4ce.com/score-set?per_page=100&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.eu.cr4ce.com/score-set?per_page=100&page=1
        next_page_url: ''
        path: https://api.eu.cr4ce.com/score-set
        per_page: 100
        prev_page_url: ''
        to: 21
        total: 21
    Season:
      type: object
      properties:
        created:
          type: string
          format: date-time
        name:
          type: object
          description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
          additionalProperties:
            type: string
        slug:
          type: string
        status:
          type: string
          description: Lifecycle status of the season.
          enum:
            - draft
            - active
            - archived
            - destroyed
        updated:
          type: string
          format: date-time
      example:
        created: '2023-01-16T10:01:11Z'
        name:
          en_GB: '2026'
        slug: AbCdEfGh
        status: active
        updated: '2026-06-03T06:50:16Z'
    SeasonList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Season'
      example:
        current_page: 1
        data:
          - created: '2023-01-16T10:01:11Z'
            name:
              en_GB: '2026'
            slug: AbCdEfGh
            status: active
            updated: '2026-06-03T06:50:16Z'
          - created: '2026-06-02T14:11:32Z'
            name:
              en_GB: copy test 2 june
            slug: CdEfGhIj
            status: archived
            updated: '2026-06-03T06:50:16Z'
        first_page_url: https://api.eu.cr4ce.com/season?per_page=100&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.eu.cr4ce.com/season?per_page=100&page=1
        next_page_url: ''
        path: https://api.eu.cr4ce.com/season
        per_page: 100
        prev_page_url: ''
        to: 8
        total: 8
    Tax:
      type: object
      properties:
        country:
          type: string
          description: Country the tax applies to.
        country_name:
          type: string
          description: Localised name of the country the tax applies to.
        created:
          type: string
          format: date-time
        name:
          type:
            - string
            - 'null'
          description: Name of the tax.
        rate:
          type: number
          format: float
          description: Tax rate as a percentage.
        region:
          type:
            - string
            - 'null'
          description: Region code the tax applies to.
        region_name:
          type:
            - string
            - 'null'
          description: Localised name of the region the tax applies to.
        slug:
          type: string
        term:
          type: string
          description: Tax term label, such as GST or VAT.
        updated:
          type: string
          format: date-time
      example:
        country: GB
        country_name: United Kingdom
        created: '2024-12-09T08:36:57Z'
        name: VAT
        rate: 20
        region: null
        region_name: null
        slug: AbCdEfGh
        term: VAT
        updated: '2025-05-19T12:35:40Z'
    TaxList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Tax'
      example:
        current_page: 1
        data:
          - country: GB
            country_name: United Kingdom
            created: '2024-12-09T08:36:57Z'
            name: VAT
            rate: 20
            region: null
            region_name: null
            slug: AbCdEfGh
            term: VAT
            updated: '2025-05-19T12:35:40Z'
          - country: US
            country_name: United States of America
            created: '2026-04-23T10:41:29Z'
            name: Alaska
            rate: 10
            region: AK
            region_name: Alaska
            slug: CdEfGhIj
            term: Tax
            updated: '2026-04-23T10:41:29Z'
        first_page_url: https://api.au.cr4ce.com/tax?per_page=10&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/tax?per_page=10&page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/tax
        per_page: 10
        prev_page_url: ''
        to: 2
        total: 2
    UserSummary:
      type: object
      description: Core user fields shared by the list and single-user responses.
      properties:
        analytics_cookies:
          type: boolean
          description: Specifies whether the user accepted analytics cookies.
        broadcast_emails:
          type: boolean
          description: Specifies whether the user accepted broadcast emails.
        comments:
          type: string
          description: Administrative notes recorded against the user, formatted for export.
        confirmation:
          type: string
          description: Account confirmation status of the user, such as `Confirmed` or `Invited`.
        confirmed_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time when the user confirmed the account, null until confirmed.
        created_at:
          type: string
          format: date-time
          description: Date and time when the user account was created.
        created_by:
          type: string
          description: Method by which the user account was created, such as `manual` or `registration`.
        email:
          type:
            - string
            - 'null'
          format: email
          description: Email address of the user, null if not recorded.
        first_name:
          type: string
          description: First name of the user.
        language:
          type: object
          description: Preferred language of the user.
          properties:
            code:
              type: string
              description: Locale code of the language, such as `en_GB`.
            language:
              type: string
              description: Display name of the language, such as `English (United Kingdom)`.
        last_name:
          type: string
          description: Last name of the user.
        marketing_cookies:
          type: boolean
          description: Specifies whether the user accepted marketing cookies.
        mobile:
          type: string
          description: Mobile phone number of the user.
        name:
          type: string
          description: Full name of the user.
        necessary_cookies:
          type: boolean
          description: Specifies whether the user accepted necessary cookies.
        notification_emails:
          type: boolean
          description: Specifies whether the user accepted notification emails.
        notification_sms:
          type: boolean
          description: Specifies whether the user accepted notification text messages.
        roles:
          type: array
          description: Roles assigned to the user within the account.
          items:
            type: object
            properties:
              slug:
                type: string
                description: URL-safe identifier of the role.
              link:
                type: string
                format: uri
                description: URL of the role resource.
              name:
                type: object
                description: Name of the role, keyed by locale code.
                additionalProperties:
                  type: string
        slug:
          type: string
          description: URL-safe identifier of the user.
        updated:
          type: string
          format: date-time
          description: Date and time when the user account was last updated.
    UserList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/UserSummary'
      example:
        current_page: 1
        data:
          - analytics_cookies: true
            broadcast_emails: true
            comments: ''
            confirmation: Confirmed
            confirmed_at: '2025-08-05T00:00:00Z'
            created_at: '2025-08-05T09:00:58Z'
            created_by: invited
            email: john.doe@example.com
            first_name: John
            language:
              code: en_GB
              language: English (United Kingdom)
            last_name: Doe
            marketing_cookies: true
            mobile: ''
            name: John Doe
            necessary_cookies: true
            notification_emails: true
            notification_sms: true
            roles:
              - slug: AbCdEfGh
                link: https://api.eu.cr4ce.com/role/AbCdEfGh
                name:
                  en_GB: Entrant
            slug: KlMnOpQr
            updated: '2026-06-28T08:03:58Z'
          - analytics_cookies: false
            broadcast_emails: false
            comments: ''
            confirmation: Confirmed
            confirmed_at: '2025-04-01T00:00:00Z'
            created_at: '2025-04-23T12:36:32Z'
            created_by: manual
            email: jane.roe@example.com
            first_name: Jane
            language:
              code: en_GB
              language: English (United Kingdom)
            last_name: Roe
            marketing_cookies: false
            mobile: ''
            name: Jane Roe
            necessary_cookies: true
            notification_emails: false
            notification_sms: false
            roles:
              - slug: AbCdEfGh
                link: https://api.eu.cr4ce.com/role/AbCdEfGh
                name:
                  en_GB: Entrant
              - slug: CdEfGhIj
                link: https://api.eu.cr4ce.com/role/CdEfGhIj
                name:
                  en_GB: Program manager
            slug: MnOpQrSt
            updated: '2026-06-25T15:39:46Z'
        first_page_url: https://api.eu.cr4ce.com/user?per_page=100&page=1
        from: 1
        last_page: 5
        last_page_url: https://api.eu.cr4ce.com/user?per_page=100&page=5
        next_page_url: https://api.eu.cr4ce.com/user?per_page=100&page=2
        path: https://api.eu.cr4ce.com/user
        per_page: 100
        prev_page_url: ''
        to: 100
        total: 470
    UserDetail:
      type: object
      description: Detailed user fields returned only for a single user.
      properties:
        preferences:
          type: object
          description: Notification preferences selected by the user.
          properties:
            broadcast_emails:
              type: boolean
              description: Specifies whether the user receives broadcast emails.
            notification_emails:
              type: boolean
              description: Specifies whether the user receives notification emails.
            notification_sms:
              type: boolean
              description: Specifies whether the user receives notification text messages.
        social_sharing:
          type: boolean
          description: Specifies whether the user opted in to social sharing.
        user_fields:
          type: array
          description: Custom field responses captured on the user profile.
          items:
            type: object
            properties:
              slug:
                type: string
                description: URL-safe identifier of the field.
              link:
                type: string
                format: uri
                description: URL of the field resource.
              label:
                type: object
                description: Label of the field, keyed by locale code.
                additionalProperties:
                  type: string
              title:
                type: object
                description: Plain-text title of the field, keyed by locale code.
                additionalProperties:
                  type: string
              value:
                type: string
                description: Value submitted for the field.
              token:
                type: string
                description: File token for the uploaded file, present on file fields.
              translated:
                type: object
                description: Translated value of the field, keyed by locale code.
                additionalProperties:
                  type: string
    User:
      allOf:
        - $ref: '#/components/schemas/UserSummary'
        - $ref: '#/components/schemas/UserDetail'
      example:
        analytics_cookies: true
        broadcast_emails: true
        comments: 'Jane Doe (2025-05-21T15:25:39+00:00): User comment'
        confirmation: Confirmed
        confirmed_at: '2018-04-17T00:00:00Z'
        created_at: '2024-06-24T06:34:30Z'
        created_by: manual
        email: jane.doe@example.com
        first_name: Jane
        language:
          code: en_GB
          language: English (United Kingdom)
        last_name: Doe
        marketing_cookies: true
        mobile: ''
        name: Jane Doe
        necessary_cookies: true
        notification_emails: true
        notification_sms: true
        preferences:
          broadcast_emails: true
          notification_emails: true
          notification_sms: true
        roles:
          - slug: AbCdEfGh
            link: https://api.eu.cr4ce.com/role/AbCdEfGh
            name:
              en_GB: Entrant
          - slug: CdEfGhIj
            link: https://api.eu.cr4ce.com/role/CdEfGhIj
            name:
              en_GB: Program manager
        slug: EfGhIjKl
        social_sharing: true
        updated: '2026-06-26T07:50:46Z'
        user_fields:
          - slug: GhIjKlMn
            link: https://api.eu.cr4ce.com/field/GhIjKlMn
            label:
              en_GB: <p>Title</p>
            title:
              en_GB: Title
            value: Ms
            translated:
              en_GB: ''
          - slug: IjKlMnOp
            link: https://api.eu.cr4ce.com/field/IjKlMnOp
            label:
              en_GB: <p>user file upload</p>
            title:
              en_GB: user file upload
            value: https://api.eu.cr4ce.com/file/
            token: ''
            translated:
              en_GB: ''
    AuthToken:
      type: object
      title: AuthToken
      description: Single-use SSO auth token for logging the user into the app via SSO.
      properties:
        auth_token:
          type: string
          description: Opaque SSO auth token for the user.
      example:
        auth_token: AbCdEfGhIjKlMnOpQrStUvWxYz012345
    Webhook:
      type: object
      properties:
        events:
          type: array
          description: Subscription events that trigger this webhook.
          items:
            type: string
        fields:
          type: array
          description: Fields included in the webhook payload.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the field.
              link:
                type: string
                format: uri
                description: Canonical URL for the field resource.
              title:
                type: object
                description: Plain-text title of the field, as a map keyed by locale code (for example, `en_GB` or `fr_FR`).
                additionalProperties:
                  type: string
        form:
          type:
            - object
            - 'null'
          description: Form the webhook is scoped to, or `null` if not scoped to a specific form.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the form.
            link:
              type: string
              format: uri
              description: Canonical URL for the form resource.
            name:
              type: string
              description: Name of the form.
        method:
          type: string
          description: HTTP method used to call the webhook URL.
          enum:
            - get
            - post
        name:
          type: string
          description: Name of the webhook.
        slug:
          type: string
          description: Slug of the webhook.
        signing_key:
          type: string
          description: Key used to sign outgoing webhook requests.
        url:
          type: string
          format: uri
          description: URL that receives the webhook payload.
        created:
          type: string
          format: date-time
          description: Date and time when the webhook was created.
        updated:
          type: string
          format: date-time
          description: Date and time when the webhook was last updated.
      example:
        created: '2025-12-21T23:11:20Z'
        events:
          - entry_created
          - entry_submitted
        fields: []
        form: null
        method: post
        name: Entry notifications
        signing_key: REDACTED
        slug: AbCdEfGh
        updated: '2025-12-21T23:11:20Z'
        url: https://example.com/webhooks
    WebhookList:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Webhook'
      example:
        current_page: 1
        data:
          - created: '2025-12-21T23:11:20Z'
            events:
              - entry_created
              - entry_submitted
            fields: []
            form: null
            method: post
            name: Entry notifications
            signing_key: REDACTED
            slug: AbCdEfGh
            updated: '2025-12-21T23:11:20Z'
            url: https://example.com/webhooks
          - created: '2026-04-23T10:41:29Z'
            events:
              - entry_updated
            fields: []
            form: null
            method: get
            name: Entry update notifications
            signing_key: REDACTED
            slug: CdEfGhIj
            updated: '2026-04-23T10:41:29Z'
            url: https://example.com/webhooks/updates
        first_page_url: https://api.au.cr4ce.com/webhook?per_page=10&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.au.cr4ce.com/webhook?per_page=10&page=1
        next_page_url: ''
        path: https://api.au.cr4ce.com/webhook
        per_page: 10
        prev_page_url: ''
        to: 2
        total: 2
  responses:
    BadRequest:
      description: 'Request was rejected before the endpoint could process it. Common causes: invalid `Accept` header, unsupported `x-api-language` code, empty request body on `POST` / `PUT`, invalid JSON in the request body, or an invalid slug format in a path parameter.'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequest'
        application/xml:
          schema:
            $ref: '#/components/schemas/BadRequest'
    Unauthorized:
      description: Missing `x-api-key` header.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
        application/xml:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    Forbidden:
      description: |-
        Authenticated request denied. Common causes: invalid or unknown
        API key, suspended account, or `api` feature not enabled for
        the account.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Forbidden'
        application/xml:
          schema:
            $ref: '#/components/schemas/Forbidden'
    TooManyRequests:
      description: Rate limit of 60 requests per minute exceeded.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
        application/xml:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
    ServiceUnavailable:
      description: Service is temporarily unavailable due to regional maintenance.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                description: Human-readable maintenance status.
            example:
              status: Maintenance in progress
        application/xml:
          schema:
            type: object
            properties:
              status:
                type: string
                description: Human-readable maintenance status.
            example:
              status: Maintenance in progress
    UnprocessableEntity:
      description: |-
        Request was syntactically valid but could not be processed.

        Returned in two scenarios:

        - **Field-level validation failure** — one or more request fields violated the endpoint's validation rules. The body includes an `errors` map keyed by field name with one or more validation messages each.
        - **Resource-state precondition failure** — the request fields were all valid, but the target resource was in a state that does not permit the requested operation. The body carries only `message` and `status_code`; no `errors` map.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnprocessableEntity'
        application/xml:
          schema:
            $ref: '#/components/schemas/UnprocessableEntity'
    NotFound:
      description: Resource identified by the path slug does not exist. Returned when the slug is well-formed but no record matches it.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFound'
        application/xml:
          schema:
            $ref: '#/components/schemas/NotFound'
  requestBodies:
    AssignmentCreate:
      content:
        application/json:
          schema:
            type: object
            title: Assignment creation request
            description: |-
              Inputs for creating assignments in bulk.

              One assignment is created for each pairing of an entry from `entries` with a judge from `judges` under `score_set`, and every resulting assignment is linked to all rounds listed in `rounds`. Existing assignments for the same entry, judge, and score set are updated in place rather than duplicated.
            required:
              - score_set
              - entries
              - judges
              - rounds
            properties:
              score_set:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the score set to assign under.

                  Its current season must be either active or draft. Entries and rounds must belong to the same form as this score set.
              entries:
                type: array
                description: |-
                  Slugs of the entries to include.

                  Each entry must belong to the same form as `score_set`.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
              judges:
                type: array
                description: |-
                  Slugs of the users to assign as judges.

                  Each user must hold the judge role for the account.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
              rounds:
                type: array
                description: |-
                  Slugs of the judging rounds to link the assignments to.

                  Each round must be a judging round on the same form as `score_set`.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
      description: |-
        Inputs for the assignment creation request.

        The request is processed asynchronously: the response is `202 Accepted` with an empty body. Created assignments become available via `GET /assignment` once processing completes.
      required: true
    EntryAssignmentRecusal:
      content:
        application/json:
          schema:
            type: object
            required:
              - judge
            properties:
              judge:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the judge to recuse.

                  Must be an existing user. The recusal is recorded even when the judge has no current assignment to the entry, and prevents the judge being assigned in the future within the affected score set scope.
              score_set:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the score set to scope the recusal to.

                  When omitted, the recusal applies to every score set the judge has assignments under for this entry and prevents future assignment across all of them. When supplied, the scope is limited to the named score set.
      description: |-
        Recusal payload identifying the judge and, optionally, the score set scope.

        Shared by the recuse and unrecuse operations. When `score_set` is omitted the operation acts across every score set associated with the judge's assignments for the entry; otherwise it is limited to the named score set.
      required: true
    AttachmentUpdate:
      content:
        application/json:
          schema:
            type: object
            properties:
              attachment_fields:
                type: object
                description: |-
                  Values for the form fields captured against this attachment, keyed by field slug.

                  Each value must conform to the type of the corresponding field on the parent attachments tab; for example, a text field accepts a string, a choice field accepts the slug of one of its options, and a number field accepts a numeric value.

                  Field slugs that do not exist on the parent tab are rejected.
                additionalProperties: {}
              order:
                type: integer
                description: Position of the attachment within its tab. Lower values sort earlier.
              tab:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the tab to move the attachment to.

                  Must reference a tab whose type is `Attachments`; tabs of other types are rejected.
      description: |-
        Fields to update on an existing attachment.

        Every property is optional; only properties that are supplied are written.
      required: true
    AttachmentUpload:
      content:
        application/json:
          schema:
            type: object
            required:
              - filename
              - data
              - order
            properties:
              filename:
                type: string
                description: Original filename of the uploaded file, including the extension.
              data:
                type: string
                format: byte
                description: |-
                  Base64-encoded contents of the file.

                  The encoded payload must round-trip cleanly through standard base64 decoding; payloads with stray characters, incorrect padding, or other malformed encoding are rejected.
              order:
                type: integer
                description: Position of the attachment within its tab. Lower values sort earlier.
              attachment_fields:
                type: object
                description: |-
                  Values for the form fields captured against this attachment, keyed by field slug.

                  Each value must conform to the type of the corresponding field on the parent attachments tab:

                  - `text`, `textarea`, `email`, `url`, `phone`, `ai` — string.
                  - `numeric` — number.
                  - `currency` — string holding a decimal value, for example `"1234.56"`.
                  - `checkbox` — boolean (`true`/`false`; `1` and `0` are also accepted).
                  - `radio`, `drop-down-list` — string matching one of the defined option keys for the field (case-insensitive).
                  - `checkboxlist` — array of option keys, or a comma-separated string such as `"opt1,opt2"`.
                  - `country` — ISO 3166 alpha-2 country code; lower-case codes are accepted and stored upper-cased.
                  - `date` — `YYYY-MM-DD` string or an object such as `{date: "2026-06-16"}`; the bare string form is wrapped server-side into the object form.
                  - `datetime` — `YYYY-MM-DD HH:MM` string or an object such as `{date: "2026-06-16 14:30"}`; same wrapping behaviour as `date`.
                  - `time` — `HH:MM` string.

                  Field slugs that do not exist on the parent tab are rejected. Fields marked as required on the parent tab must be supplied; omitting them returns a 422.

                  `formula` fields are computed server-side and cannot be set through this property. `file` fields are not settable here; upload files through `POST /entry/{entry_slug}/upload/{field_slug}` instead. `table` and `lookup` field types are not handled by this property; consult their dedicated endpoints if your tab uses them.
                additionalProperties: {}
            example:
              filename: hello.xls
              data: aGVsbG8gd29ybGQ=
              order: 1
              attachment_fields:
                text-slug: Some short text
                numeric-slug: 42
                checkbox-slug: true
                radio-slug: option-key-1
                checkboxlist-slug:
                  - option-key-1
                  - option-key-2
                country-slug: AU
                date-slug: '2026-06-16'
      description: |-
        File and metadata for a new attachment on the specified entry tab.

        `filename`, `data`, and `order` are required. `attachment_fields` is optional and may be omitted when the parent tab has no required attachment fields.
      required: true
    CategoryCreate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - season
              - status
              - translated
            properties:
              season:
                type: string
                description: Slug of the season.
              status:
                type: string
                description: Active or inactive state of the category.
                enum:
                  - active
                  - inactive
              translated:
                type: object
                description: Translated category field values keyed by field name.
                additionalProperties: false
                required:
                  - name
                properties:
                  name:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  description:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  entry_name_label:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  image_heading:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  packing_slip_instructions:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  shortcode:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
              chapters:
                type: array
                description: |-
                  Array of chapter slugs.

                  Each chapter must belong to the same season as `season`.
                items:
                  type: string
              divisions:
                type: integer
                minimum: 1
                description: Number of divisions.
              entrant_max_entries:
                type:
                  - integer
                  - 'null'
                minimum: 1
                description: Maximum number of entries per entrant.
              fill_entry_name:
                type: boolean
                description: Specifies whether to prefill the entry name when the category is selected.
              max_image_width:
                type: integer
                description: Maximum image width.
              form:
                type: string
                description: |-
                  Slug of the form.

                  The form must be valid for `season`.
              parent:
                type: string
                description: |-
                  Slug of the parent category.

                  The parent category must belong to the same season as `season`.
              promoted:
                type:
                  - integer
                  - 'null'
                enum:
                  - 0
                  - 1
                  - null
                description: |-
                  Promotion state of the category.

                  `1` when promoted, `0` when not, and `null` when no preference has been set.
              pdf_packing_slip:
                type: boolean
                description: |-
                  Specifies whether to generate a PDF packing slip.

                  Required when `translated.packing_slip_instructions` is provided.
      description: Category creation payload.
      required: true
    CategoryUpdate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            properties:
              status:
                type: string
                description: Active or inactive state of the category.
                enum:
                  - active
                  - inactive
              translated:
                type: object
                description: Translated category field values keyed by field name.
                additionalProperties: false
                properties:
                  name:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  description:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  entry_name_label:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  image_heading:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  packing_slip_instructions:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  shortcode:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
              chapters:
                type: array
                description: |-
                  Array of chapter slugs.

                  Each chapter must belong to the season for the category.
                items:
                  type: string
              divisions:
                type: integer
                minimum: 1
                description: Number of divisions.
              entrant_max_entries:
                type:
                  - integer
                  - 'null'
                minimum: 1
                description: Maximum number of entries per entrant.
              fill_entry_name:
                type: boolean
                description: Specifies whether to prefill the entry name when the category is selected.
              locked:
                type: boolean
                description: Specifies whether the category is locked.
              max_image_width:
                type: integer
                description: Maximum image width.
              parent:
                type: string
                description: |-
                  Slug of the parent category.

                  The parent category must belong to the season for the category, and cannot be the category itself or one of its descendants.
              pdf_packing_slip:
                type: boolean
                description: |-
                  Specifies whether to generate a PDF packing slip.

                  Required when `translated.packing_slip_instructions` is provided.
      description: Category update payload.
      required: true
    CategoryUpload:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - filename
              - data
            properties:
              filename:
                type: string
                description: Original filename of the uploaded file, including the extension.
              data:
                type: string
                format: byte
                description: |-
                  Base64-encoded contents of the image file.

                  The encoded payload must round-trip cleanly through standard base64 decoding; payloads with stray characters, incorrect padding, or other malformed encoding are rejected.

                  Only image files are accepted: `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, `ico`, `webp`, and `avif`. The file size must not exceed the maximum file size for the account.
            example:
              filename: logo.png
              data: aGVsbG8gd29ybGQ=
      description: |-
        Image payload for the category upload.

        `filename` and `data` are required.
      required: true
    ChapterCreate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - season
              - status
              - translated
            properties:
              season:
                type: string
                description: Slug of the season.
              status:
                type: string
                description: One of the following values.
                enum:
                  - active
                  - inactive
              translated:
                type: object
                description: Translated chapter field values keyed by field name.
                additionalProperties: false
                properties:
                  name:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  image_heading:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
              max_image_width:
                type: integer
                description: Maximum image width.
              managers:
                type: array
                description: Array of user slugs for chapter managers.
                items:
                  type: string
      description: Chapter creation payload.
      required: true
    ChapterUpdate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            properties:
              status:
                type: string
                description: One of the following values.
                enum:
                  - active
                  - inactive
              translated:
                type: object
                description: Translated chapter field values keyed by field name.
                additionalProperties: false
                properties:
                  name:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  image_heading:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
              max_image_width:
                type: integer
                description: Maximum image width.
              managers:
                type: array
                description: Array of user slugs for chapter managers.
                items:
                  type: string
      description: Chapter update payload.
      required: true
    ChapterUpload:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - filename
              - data
            properties:
              filename:
                type: string
                description: Original filename of the uploaded file, including the extension.
              data:
                type: string
                format: byte
                description: |-
                  Base64-encoded contents of the image file.

                  The encoded payload must round-trip cleanly through standard base64 decoding; payloads with stray characters, incorrect padding, or other malformed encoding are rejected.

                  Only image files are accepted: `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, `ico`, `webp`, and `avif`. The file size must not exceed the maximum file size for the account.
            example:
              filename: logo.png
              data: aGVsbG8gd29ybGQ=
      description: |-
        Image payload for the chapter upload.

        `filename` and `data` are required.
      required: true
    ContributorCreate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - entry
              - tab
            properties:
              entry:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the entry.
              tab:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the contributor tab.
              fields:
                type: object
                description: Contributor field values keyed by field slug.
                additionalProperties:
                  description: Value to submit for the field. The type depends on the field type — for example, a string for text fields or a boolean for checkbox fields.
      description: Contributor creation payload.
      required: true
    ContributorUpdate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            properties:
              fields:
                type: object
                description: Contributor field values keyed by field slug.
                additionalProperties:
                  description: Value to submit for the field. The type depends on the field type — for example, a string for text fields or a boolean for checkbox fields.
      description: Contributor update payload.
      required: true
    DocumentCreate:
      description: Document create payload.
      content:
        application/json:
          schema:
            type: object
            required:
              - translated
              - template
              - fileType
              - shared
              - resource
              - selected
            properties:
              translated:
                type: object
                required:
                  - name
                properties:
                  name:
                    type: object
                    description: |-
                      Name of the document.

                      Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
                    additionalProperties:
                      type: string
                  description:
                    type: object
                    description: |-
                      Description of the document.

                      Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
                    additionalProperties:
                      type: string
              template:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the document template to generate the document from.
              fileType:
                type: string
                enum:
                  - pdf
                  - word
                description: File format to generate the document in.
              shared:
                type: boolean
                description: Specifies whether the generated document is shared with the entrant.
              resource:
                type: string
                enum:
                  - user
                  - entry
                  - allocation
                  - grant-report
                description: Type of resource to attach the generated documents to.
              selected:
                type: array
                minItems: 1
                description: Slugs of the resources, of the type given by `resource`, to attach the generated documents to.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
              notification:
                type:
                  - string
                  - 'null'
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the notification to send when the document is created.

                  Omit or set to `null` to send no notification.
      required: true
    EntryCreate:
      description: Entry creation payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - category
              - entrant
              - season
              - title
            properties:
              category:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the category.
              chapter:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the chapter. If omitted, defaults to the first chapter of the season.
              entrant:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the entrant.
              season:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the season.
              title:
                type: string
                description: Title of the entry.
              form:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the form.
              status:
                type: string
                description: Entry status.
                enum:
                  - submitted
                  - in_progress
                  - resubmission_required
              moderation_status:
                type: string
                description: Moderation status of the entry.
                enum:
                  - approved
                  - undecided
                  - rejected
              entry_fields:
                type: object
                description: Entry field values keyed by field slug. Each key must be a valid eight-letter field slug. The value type depends on the field type.
                additionalProperties: {}
              custom_deadline:
                type: string
                pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) ([01][0-9]|2[0-3]):[0-5][0-9]$
                description: Custom deadline in `yyyy-mm-dd hh:mm` format.
              grant_status:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the grant status. Available when the grants feature is enabled.
              grant_end_date:
                type: string
                format: date
                description: Date when the grant ends. Available when the grants feature is enabled.
      required: true
    EntryUpdate:
      description: Entry update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            properties:
              category:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the category.
              chapter:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the chapter.
              entrant:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the entrant.
              title:
                type: string
                description: Title of the entry.
              status:
                type: string
                description: Entry status.
                enum:
                  - submitted
                  - in_progress
                  - resubmission_required
                  - resubmitted
              moderation_status:
                type: string
                description: Moderation status of the entry.
                enum:
                  - approved
                  - undecided
                  - rejected
              entry_fields:
                type: object
                description: Entry field values keyed by field slug. Each key must be a valid eight-letter field slug. The value type depends on the field type.
                additionalProperties: {}
              custom_deadline:
                type: string
                pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) ([01][0-9]|2[0-3]):[0-5][0-9]$
                description: Custom deadline in `yyyy-mm-dd hh:mm` format.
              grant_status:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the grant status. Available when the grants feature is enabled.
              grant_end_date:
                type: string
                format: date
                description: Date when the grant ends. Available when the grants feature is enabled.
      required: true
    FileUpload:
      content:
        application/json:
          schema:
            type: object
            required:
              - filename
              - data
            properties:
              filename:
                type: string
                description: Original filename of the uploaded file, including the extension.
              data:
                type: string
                format: byte
                description: |-
                  Base64-encoded contents of the file.

                  The encoded payload must round-trip cleanly through standard base64 decoding; payloads with stray characters, incorrect padding, or other malformed encoding are rejected.
            example:
              filename: example.pdf
              data: aGVsbG8gd29ybGQ=
      description: |-
        File payload for an upload operation.

        `filename` and `data` are required.
    AttachmentFieldUpdate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - value
            properties:
              value:
                description: |-
                  New value for the attachment field identified by `field_slug`. The accepted value depends on the type and configuration of the field.

                  Use a string for text fields, a number for numeric fields, an ISO 8601 date for date fields, and an option slug for choice fields. A value outside the option set of a choice field returns a `422` response. For file-type fields, use an object containing the base64-encoded file data and a filename.
      description: Attachment field update payload.
      required: true
    ContributorFieldUpdate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - value
            properties:
              value:
                description: |-
                  New value for the contributor field identified by `field_slug`. The accepted value depends on the type and configuration of the field.

                  Use a string for text fields, a number for numeric fields, an ISO 8601 date for date fields, and an option slug for choice fields. A value outside the option set of a choice field returns a `422` response. For file-type fields, use an object containing the base64-encoded file data and a filename.
      description: Contributor field update payload.
      required: true
    EntryCategoryUpdate:
      description: Entry category update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - category
            properties:
              category:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the category.
      required: true
    EntryChapterUpdate:
      description: Entry chapter update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - chapter
            properties:
              chapter:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the chapter.
      required: true
    EntryFieldUpdate:
      description: Entry field update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - value
            properties:
              value:
                description: New value for the field. The type depends on the field type.
      required: true
    EntryTitleUpdate:
      description: Entry title update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - title
            properties:
              title:
                type: string
                maxLength: 255
                description: New title of the entry.
      required: true
    FieldCreate:
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - type
              - tab
              - translated
            properties:
              type:
                type: string
                description: Type of the field.
                enum:
                  - checkbox
                  - checkboxlist
                  - content
                  - country
                  - currency
                  - date
                  - datetime
                  - drop-down-list
                  - email
                  - file
                  - lookup
                  - numeric
                  - phone
                  - radio
                  - table
                  - text
                  - textarea
                  - time
                  - url
              tab:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the tab the field belongs to.
              form:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the form the field belongs to.

                  The form must be valid for the active season and the field type.
              currency:
                type: string
                description: |-
                  Currency code.

                  Required when `type` is `currency`.
              translated:
                type: object
                description: Translated field values keyed by field name.
                additionalProperties: false
                required:
                  - title
                properties:
                  title:
                    type: object
                    description: |-
                      Field title, keyed by language code.

                      A value for the account default language is required.
                    additionalProperties:
                      type: string
                  help_text:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
                  hint_text:
                    type: object
                    description: Values keyed by existing and enabled language code.
                    additionalProperties:
                      type: string
      description: Field creation payload.
      required: true
    OrderUpdate:
      content:
        application/json:
          schema:
            type: object
            properties:
              company:
                type: string
                description: Billing company name.
              address:
                type: string
                description: Billing address.
              city:
                type: string
                description: Billing city.
              state:
                type: string
                description: Billing state.
              postcode:
                type: string
                description: Billing postcode.
              country:
                type: string
                description: |-
                  Two-letter country code.
                  See [Two-letter country codes](https://support.awardforce.com/hc/en-us/articles/360000237856-Two-letter-country-codes).
              payment_status:
                type: string
                description: Status of the order.
                enum:
                  - paid
                  - awaiting_payment
              note:
                type: string
                description: Annotation on the order.
      description: Order update payload.
    ReviewTaskCreate:
      description: Review task creation payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - review_stage
              - entry
            properties:
              review_stage:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the review stage.
                  Review stages reviewed by referees cannot be used to create review tasks.
              entry:
                type: string
                pattern: ^[A-Za-z]{8}$
                description: Slug of the entry.
      required: true
    UserCreate:
      description: User create payload.
      content:
        application/json:
          schema:
            type: object
            required:
              - first_name
              - last_name
              - password
            anyOf:
              - required:
                  - email
              - required:
                  - mobile
            properties:
              first_name:
                type: string
                description: User's first name.
              last_name:
                type: string
                description: User's last name.
              password:
                type: string
                description: Password for the new user. The minimum length and complexity requirements are configured per account, so a value accepted on one account may be rejected on another.
              email:
                type: string
                format: email
                description: User's email address. Required if `mobile` is not set.
              mobile:
                type: string
                description: User's mobile number in E.164 international format, such as `+14155552671`. Required if `email` is not set.
              roles:
                type: array
                description: Role slugs to assign to the user. If omitted or empty, the default role for the account is assigned instead, so the user is never left without a role.
                items:
                  type: string
              preferences:
                type: object
                description: User notification preferences.
                properties:
                  broadcast_emails:
                    type: boolean
                    description: Specifies whether the user receives broadcast emails.
                  notification_emails:
                    type: boolean
                    description: Specifies whether the user receives notification emails.
                  notification_sms:
                    type: boolean
                    description: Specifies whether the user receives notification text messages.
              user_fields:
                type: object
                description: 'User field values, keyed by field slug. For example, `{ "fJkIjGmB": "Test value" }`. Single-value fields take a string; multi-value fields, such as checkbox or multi-select, take an array of strings.'
                additionalProperties:
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
    UserUpdate:
      description: User update payload.
      content:
        application/json:
          schema:
            type: object
            properties:
              first_name:
                type: string
                description: User's first name.
              last_name:
                type: string
                description: User's last name.
              password:
                type: string
                description: New password for the user. The minimum length and complexity requirements are configured per account. A user who belongs to more than one account cannot have their password changed through this endpoint. If the user owns an account, only that same user can change the password.
              email:
                type: string
                format: email
                description: User's email address. Must be unique across all users; the request is rejected if another user already uses it. A user who belongs to more than one account cannot have their email address changed through this endpoint. If the user owns an account, only that same user can change the email address.
              mobile:
                type: string
                description: User's mobile number in E.164 international format, such as `+14155552671`. Must be unique across all users; the request is rejected if another user already uses it. A user who belongs to more than one account cannot have their mobile number changed through this endpoint. If the user owns an account, only that same user can change the mobile number.
              roles:
                type: array
                description: Array of role slugs.
                items:
                  type: string
              preferences:
                type: object
                description: User notification preferences.
                properties:
                  broadcast_emails:
                    type: boolean
                  notification_emails:
                    type: boolean
                  notification_sms:
                    type: boolean
              cookies:
                type: object
                description: Cookie consent preferences. Applied only on accounts where cookie consent is enabled.
                properties:
                  analytics_cookies:
                    type: boolean
                    description: Specifies whether the user consents to analytics cookies.
                  marketing_cookies:
                    type: boolean
                    description: Specifies whether the user consents to marketing cookies.
                  necessary_cookies:
                    type: boolean
                    description: Specifies whether the user consents to necessary cookies.
              user_fields:
                type: object
                description: 'User field values, keyed by field slug. For example, `{ "fJkIjGmB": "Test value" }`.'
                additionalProperties:
                  type: string
    WebhookCreate:
      description: Webhook create payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - method
              - name
              - url
              - events
            properties:
              method:
                type: string
                description: |-
                  HTTP method used to call the webhook URL.

                  Values are case-sensitive.
                enum:
                  - get
                  - post
              name:
                type: string
                description: Name of the webhook.
              url:
                type: string
                format: uri
                description: URL that receives the webhook payload.
              signing_key:
                type: string
                pattern: ^[A-Za-z0-9]+$
                maxLength: 128
                description: |-
                  Key used to sign outgoing webhook requests so the receiver can validate the payload. Must be alphanumeric (`A`–`Z`, `a`–`z`, `0`–`9`).

                  If omitted, the account's existing webhook signing key is reused, or a new key is generated when the account has none. Supply a unique key to isolate each receiver's trust boundary.
              notification_emails:
                description: Email addresses that receive webhook delivery-failure notifications. Accepts a single address or multiple comma-separated addresses as a string.
                type: string
              form:
                type:
                  - string
                  - 'null'
                pattern: ^[A-Za-z]{8}$
                description: |-
                  Slug of the form to scope the webhook to. When set, the webhook only fires for events on that form. Omit or set to `null` for an account-wide webhook.

                  **Constraint:** only accepted when `field_value_updated` is among the `events` array. Sending `form` without `field_value_updated` in the events list returns a `422` validation error.
              fields:
                type: array
                description: Slugs of the fields to include in the webhook payload.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
              events:
                type: array
                minItems: 1
                description: Subscription events that trigger this webhook. For example, `["entry_created", "entry_submitted"]`.
                items:
                  type: string
                  enum:
                    - allocation_created
                    - allocation_payment_created
                    - allocation_payment_deleted
                    - allocation_payment_status_changed
                    - allocation_payment_updated
                    - assignment_completed
                    - assignment_created
                    - collaborator_invited
                    - document_created
                    - document_deleted
                    - document_updated
                    - entry_category_changed
                    - entry_chapter_changed
                    - entry_copied
                    - entry_created
                    - entry_deleted
                    - entry_eligible
                    - entry_ineligible
                    - entry_moderated
                    - entry_resubmitted
                    - entry_submitted
                    - entry_tagged
                    - entry_updated
                    - field_value_updated
                    - membership_registered
                    - order_payment_pending
                    - order_payment_success
                    - review_task_created
                    - review_task_submitted
                    - role_granted
                    - user_updated
      required: true
    WebhookUpdate:
      description: Webhook update payload.
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            properties:
              method:
                type: string
                description: |-
                  HTTP method used to call the webhook URL.

                  Values are case-sensitive.
                enum:
                  - get
                  - post
              name:
                type: string
                description: Name of the webhook.
              url:
                type: string
                format: uri
                description: URL that receives the webhook payload.
              signing_key:
                type: string
                pattern: ^[A-Za-z0-9]+$
                maxLength: 128
                description: |-
                  Key used to sign outgoing webhook requests so the receiver can validate the payload. Must be alphanumeric (`A`–`Z`, `a`–`z`, `0`–`9`).

                  Omit to keep the existing key. When supplied, it replaces the current key.
              notification_emails:
                description: Email addresses that receive webhook delivery-failure notifications. Accepts either a single address as a string, or multiple addresses as an array of strings.
                oneOf:
                  - type: string
                  - type: array
                    items:
                      type: string
              form:
                type:
                  - string
                  - 'null'
                pattern: ^[A-Za-z]{8}$
                description: Slug of the form to scope the webhook to. When set, the webhook only fires for events on that form. Omit or set to `null` for an account-wide webhook.
              fields:
                type: array
                description: Slugs of the fields to include in the webhook payload.
                items:
                  type: string
                  pattern: ^[A-Za-z]{8}$
              events:
                type: array
                minItems: 1
                description: Subscription events that trigger this webhook. For example, `["entry_created", "entry_submitted"]`.
                items:
                  type: string
                  enum:
                    - allocation_created
                    - allocation_payment_created
                    - allocation_payment_deleted
                    - allocation_payment_status_changed
                    - allocation_payment_updated
                    - assignment_completed
                    - assignment_created
                    - collaborator_invited
                    - document_created
                    - document_deleted
                    - document_updated
                    - entry_category_changed
                    - entry_chapter_changed
                    - entry_copied
                    - entry_created
                    - entry_deleted
                    - entry_eligible
                    - entry_ineligible
                    - entry_moderated
                    - entry_resubmitted
                    - entry_submitted
                    - entry_tagged
                    - entry_updated
                    - field_value_updated
                    - membership_registered
                    - order_payment_pending
                    - order_payment_success
                    - review_task_created
                    - review_task_submitted
                    - role_granted
                    - user_updated
      required: true
    AssignmentWebhook:
      description: Payload delivered for assignment-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Assignment'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: Assignment completed
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: assignment_completed
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
            example:
              event: Assignment completed
              timestamp: '2026-08-14T09:30:00Z'
              trigger: assignment_completed
              source: ui
    EntryWebhook:
      description: Payload delivered for entry-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Entry'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: Entry created
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: entry_created
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
            example:
              event: Entry created
              timestamp: '2026-08-14T09:30:00Z'
              trigger: entry_created
              source: ui
    DocumentWebhook:
      description: Payload delivered for document-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Document'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: Document created
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: document_created
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
            example:
              event: Document created
              timestamp: '2026-08-14T09:30:00Z'
              trigger: document_created
              source: api
    EntryTaggedWebhook:
      description: Payload delivered for entry-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Entry'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: Entry tagged
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: entry_tagged
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
                  triggering_tag:
                    type: object
                    description: Tag whose addition triggered this event.
                    properties:
                      tag:
                        type: string
                        description: Text of the tag.
                      slug:
                        type: string
                        description: Short URL-safe identifier for the tag.
            example:
              event: Entry tagged
              timestamp: '2026-08-14T09:30:00Z'
              trigger: entry_tagged
              source: api
              triggering_tag:
                tag: shortlisted
                slug: GhIjKlMn
    UserWebhook:
      description: Payload delivered for user-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/User'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: User created
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: user_created
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
            example:
              event: User created
              timestamp: '2026-08-14T09:30:00Z'
              trigger: user_created
              source: ui
    OrderWebhook:
      description: Payload delivered for order and payment-related events.
      required: true
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Order'
              - type: object
                properties:
                  event:
                    type: string
                    description: Human-readable name of the event that triggered the webhook.
                    example: Order payment success
                  timestamp:
                    type: string
                    format: date-time
                    description: ISO 8601 formatted datetime indicating when the event occurred.
                    example: '2020-01-01T00:00:00Z'
                  trigger:
                    type: string
                    description: Machine-readable event key that fired the webhook. Full list of events can be found [here](/docs/additional/webhook-subscriptions).
                    example: order_payment_success
                  source:
                    type: string
                    description: Origin of the change that triggered the event.
                    enum:
                      - ui
                      - api
                    default: ui
            example:
              event: Order payment success
              timestamp: '2026-08-14T09:30:00Z'
              trigger: order_payment_success
              source: api
