> ## Documentation Index
> Fetch the complete documentation index at: https://alyte.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish a ticket tier (API token, merchant:write). With externalRef the create is idempotent: a repeat returns the existing tier (200, existing: true).



## OpenAPI

````yaml https://app.alytegen.com/openapi.public.json post /v1/integration/tiers
openapi: 3.1.0
info:
  title: Alyte API
  description: >-
    Secure agentic checkout for live-events ticketing. REST is the canonical
    surface; MCP/A2A are adapters over the same orchestrator.
  version: 1.0.0
servers:
  - url: /
    description: this instance
security:
  - bearerAuth: []
tags:
  - name: catalog
    description: Shop / event / tier discovery
  - name: ticketing
    description: 'The purchase spine: quote → reserve → confirm'
  - name: payments
    description: One-shot authorize + result reads
  - name: acp
    description: Agentic Commerce Protocol — checkout sessions (OpenAI ACP conformance)
  - name: vic
    description: >-
      Visa Intelligent Commerce — mandate-governed purchase-initiate (the VIC
      mandate is the spend authority)
  - name: signed-mandate
    description: >-
      Network signed-mandate (VIC / Mastercard Agent Pay shape) — a detached
      network signature over the mandate artefact is verified with real crypto
      before the spend authority is granted
  - name: ap2
    description: Legacy AP2 purchase — unsupported pending verified checkout authorization
  - name: buyer
    description: >-
      Buyer surface — magic-link identity, bring/create agents, card capture
      (PSP iframe), and mandates whose scope is locked server-side to the shop
      the session is for
  - name: discovery
    description: >-
      PUBLIC discovery (no auth) — the opt-in shop window + the ACP product
      feed. Only shops that flipped `discoverable` appear; everything else 404s.
  - name: protocols
    description: Protocol adapters (MCP / A2A) over the same orchestrator as REST
  - name: integration
    description: >-
      Server-to-server merchant integration (API token) — e.g. minting buyer
      sessions for users the MERCHANT'S own auth has already verified
paths:
  /v1/integration/tiers:
    post:
      tags:
        - integration
      summary: >-
        Publish a ticket tier (API token, merchant:write). With externalRef the
        create is idempotent: a repeat returns the existing tier (200, existing:
        true).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - eventId
                - title
                - priceMinor
                - currency
                - kind
              properties:
                eventId:
                  type: string
                title:
                  type: string
                priceMinor:
                  type: integer
                  description: 'Integer MINOR units — never a float (invariant #1).'
                currency:
                  type: string
                kind:
                  type: string
                  enum:
                    - general
                    - seated
                availableCount:
                  type: integer
                maxQtyPerPurchase:
                  type:
                    - integer
                    - 'null'
                  minimum: 1
                sellable:
                  type: boolean
                onSaleStart:
                  type:
                    - string
                    - 'null'
                  format: date-time
                onSaleEnd:
                  type:
                    - string
                    - 'null'
                  format: date-time
                allowedGeos:
                  type:
                    - array
                    - 'null'
                  items:
                    type: string
                allowedSchemes:
                  type:
                    - array
                    - 'null'
                  items:
                    type: string
                    enum:
                      - visa
                      - mastercard
                      - amex
                poolId:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Draw on a shared inventory pool (general tiers only; then
                    omit availableCount — the pool is the counter). Adult and
                    child prices sharing one room limit, early-bird and standard
                    sharing the floor.
                externalRef:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    YOUR stable id for this tier (per tenant, 1–200 chars).
                    Makes creation IDEMPOTENT: a repeat POST with the same
                    externalRef returns the existing tier (200, existing: true)
                    untouched, instead of creating a duplicate. Resend a create
                    whose reply you lost; never create one you cannot recognise.
                role:
                  type: string
                  enum:
                    - primary
                    - addon
                  description: >-
                    Basket role: primary (standalone admission/table) or addon
                    (parking, shuttle, hospitality).
                category:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Merchant-defined category slug (e.g. parking, vip-table,
                    shuttle). Validated to ^[a-z0-9][a-z0-9_-]{0,39}$.
                categoryLabel:
                  type:
                    - string
                    - 'null'
                  description: Human-readable label for category.
                countsTowardPartySize:
                  type:
                    - boolean
                    - 'null'
                  description: >-
                    Override whether units of this tier count toward the buyer
                    party-size cap (defaults to role !== "addon").
                linkRule:
                  type:
                    - object
                    - 'null'
                  additionalProperties: false
                  required:
                    - parentScope
                    - scaling
                  properties:
                    parentScope:
                      type: string
                      enum:
                        - any_primary_in_event
                        - specific_tiers
                    parentTierIds:
                      type: array
                      items:
                        type: string
                    scaling:
                      type: string
                      enum:
                        - per_basket
                        - per_parent_unit
                    minQty:
                      type: integer
                      minimum: 1
                    maxQty:
                      type: integer
                      minimum: 1
                    minPerParent:
                      type: integer
                      minimum: 0
                    maxPerParent:
                      type: integer
                      minimum: 1
                    parentGroupSize:
                      type: integer
                      minimum: 1
                  description: >-
                    Cross-line basket composition rule enforced server-side at
                    reserve and confirm.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  tier:
                    type: object
                    additionalProperties: true
                    properties:
                      id:
                        type: string
                      eventId:
                        type: string
                      title:
                        type: string
                      priceMinor:
                        type: integer
                      currency:
                        type: string
                      kind:
                        type: string
                      availableCount:
                        type: integer
                        description: >-
                          Live availability. For a pooled tier this is the
                          POOL's count (the tier has no counter of its own).
                      poolId:
                        type: string
                        description: >-
                          The shared inventory pool this tier draws on, when it
                          does.
                      maxQtyPerPurchase:
                        type: integer
                      sellable:
                        type: boolean
                      externalRef:
                        type: string
                        description: >-
                          The integrator's stable id, when it gave one at
                          creation.
                    required:
                      - id
                      - priceMinor
                      - currency
                  existing:
                    type: boolean
                required:
                  - tier
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  tier:
                    type: object
                    additionalProperties: true
                    properties:
                      id:
                        type: string
                      eventId:
                        type: string
                      title:
                        type: string
                      priceMinor:
                        type: integer
                      currency:
                        type: string
                      kind:
                        type: string
                      availableCount:
                        type: integer
                        description: >-
                          Live availability. For a pooled tier this is the
                          POOL's count (the tier has no counter of its own).
                      poolId:
                        type: string
                        description: >-
                          The shared inventory pool this tier draws on, when it
                          does.
                      maxQtyPerPurchase:
                        type: integer
                      sellable:
                        type: boolean
                      externalRef:
                        type: string
                        description: >-
                          The integrator's stable id, when it gave one at
                          creation.
                    required:
                      - id
                      - priceMinor
                      - currency
                required:
                  - tier
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.