Skip to content
Docs
Reference

BackstageClient.carts

BackstageClient.carts in @ticketlayer/backstage.

@ticketlayer/backstage


@ticketlayer/backstage / BackstageClient / carts

carts: {
  addItem: (cartId: string, request: {
     categoryId: string;
     eventLayoutAreaId?: string;
     eventLayoutSeatIds?: string[];
     eventOccurrenceId: string;
     quantity?: number;
     ticketTypeId: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  addUnlock: (cartId: string, request: {
     actAsTags?: string[];
     reason: string;
     targets?: (
        | {
        eventId: string;
        type: "event";
      }
        | {
        occurrenceId: string;
        type: "occurrence";
      }
        | {
        ticketTypeId: string;
        type: "ticket_type";
      }
        | {
        categoryId: string;
        ticketTypeId: string;
        type: "price_cell";
     })[];
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  applyCode: (cartId: string, request: {
     code?: string;
     codeId?: string;
     typed?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  changeSeat: (cartId: string, occurrenceId: string, seat: string, request: {
     ticketTypeId: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  checkout: (cartId: string, request: {
     customerId?: string;
     customerNotes?: string;
     discount?: {
        amount?: number;
        label?: string;
        percent?: number;
        reason: string;
     };
     formResponses?: Record<string, any>;
     metadata?: Record<string, any>;
     returnUrl?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     checkout: {
        capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[];
        deferred: {
           fallback: string;
           key: string;
           requirement: string;
        }[];
        expiresAt: string | null;
        nextAction:   | {
           awaitApproval:   | {
              expiresAt: string | null;
              message: string;
              orderId: string;
              pollAfterSeconds: number;
              taskId: string | null;
            }
              | null;
           completeForm:   | {
              errors: {
                 code: ...;
                 index: ...;
                 key: ...;
                 lineId: ...;
                 message: ...;
                 source: ...;
              }[];
              form: {
                 id: string;
                 questions: ...[];
                 version: number;
              };
            }
              | null;
           payment:   | {
              amount: number;
              connectedAccountId: string | null;
              currency: string;
              externalPaymentUrl: string | null;
              orderId: string;
              paymentId: string | null;
              paymentType: string | null;
              providerClientSecret: string | null;
              providerType: string | null;
              publishableKey: string | null;
              status: string | null;
            }
              | null;
           redirect:   | {
              expiresAt: string;
              reason: "complete_form" | "await_approval" | "payment" | "hook_input";
              returnUrl: string;
              url: string;
            }
              | null;
           type: "redirect" | "complete_form" | "await_approval" | "payment";
         }
           | null;
        status:   | "processing"
           | "complete"
           | "requires_input"
           | "requires_approval"
           | "requires_payment";
     };
     order:   | {
        accountId: string;
        createdAt: string;
        currency: string;
        customerId: string | null;
        expiresAt: string | null;
        id: string;
        items: {
           description: string | null;
           id: string;
           name: string;
           orderId: string;
           quantity: number;
           subtotal: number;
           type: string;
           unitPrice: number;
        }[];
        orderNumber: string;
        organisationId: string;
        paymentStatus: string;
        status: string;
        subtotal: number;
        total: number;
        totalFees: number;
        totalPaid: number;
        totalTax: number;
        updatedAt: string;
      }
        | null;
  }>;
  choose: (cartId: string, request: {
     cardFunding?: "credit" | "debit" | "prepaid" | null;
     deliveryMethod?: string | null;
     paymentMethod?: string | null;
     shipTo?:   | {
        city: string;
        country: string;
        line1: string;
        line2?: string | null;
        name: string;
        phone?: string | null;
        postalCode: string;
        region?: string | null;
      }
        | null;
   }, requestOptions?: RequestOptions) => Promise<{
     cartId: string;
     choices: {
        cardFunding?: "credit" | "debit" | "prepaid" | null;
        deliveryMethod?: string | null;
        paymentMethod?: string | null;
     };
     currency: string | null;
     fees: {
        amount: number;
        basis: "per_ticket" | "per_order";
        code: string;
        display: "included" | "separate";
        kind: string;
        label: string;
        optional: boolean;
        refundable: "always" | "never" | "until_fulfilled" | null;
        taxCategory: string | null;
        waivedFrom: number | null;
     }[];
     headline: {
        allIn: boolean;
        amount: number;
     };
     lines: {
        discount: number;
        fees: number;
        itemId: string;
        quantity: number;
        tax: number;
        total: number;
        unitPrice: number;
     }[];
     shipTo: {
        city: string;
        country: string;
        line1: string;
        line2?: string | null;
        name: string;
        phone?: string | null;
        postalCode: string;
        region?: string | null;
     } & Record<string, never>;
     taxes: {
        category: string;
        inclusive: boolean;
        jurisdiction: string;
        rate: string | null;
        supplier: string;
        tax: number;
        taxable: number;
        treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope";
     }[];
     totals: {
        discounts: number;
        fees: number;
        giftCards: number;
        tax: number;
        tickets: number;
        total: number;
     };
  }>;
  create: (request: {
     customerId?: string;
     metadata?: Record<string, any>;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  get: (cartId: string, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  getCheckout: (cartId: string, options?: {
     returnUrl?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     checkout: {
        capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[];
        deferred: {
           fallback: string;
           key: string;
           requirement: string;
        }[];
        expiresAt: string | null;
        nextAction:   | {
           awaitApproval:   | {
              expiresAt: string | null;
              message: string;
              orderId: string;
              pollAfterSeconds: number;
              taskId: string | null;
            }
              | null;
           completeForm:   | {
              errors: {
                 code: ...;
                 index: ...;
                 key: ...;
                 lineId: ...;
                 message: ...;
                 source: ...;
              }[];
              form: {
                 id: string;
                 questions: ...[];
                 version: number;
              };
            }
              | null;
           payment:   | {
              amount: number;
              connectedAccountId: string | null;
              currency: string;
              externalPaymentUrl: string | null;
              orderId: string;
              paymentId: string | null;
              paymentType: string | null;
              providerClientSecret: string | null;
              providerType: string | null;
              publishableKey: string | null;
              status: string | null;
            }
              | null;
           redirect:   | {
              expiresAt: string;
              reason: "complete_form" | "await_approval" | "payment" | "hook_input";
              returnUrl: string;
              url: string;
            }
              | null;
           type: "redirect" | "complete_form" | "await_approval" | "payment";
         }
           | null;
        status:   | "processing"
           | "complete"
           | "requires_input"
           | "requires_approval"
           | "requires_payment";
     };
     order:   | {
        accountId: string;
        createdAt: string;
        currency: string;
        customerId: string | null;
        expiresAt: string | null;
        id: string;
        items: {
           description: string | null;
           id: string;
           name: string;
           orderId: string;
           quantity: number;
           subtotal: number;
           type: string;
           unitPrice: number;
        }[];
        orderNumber: string;
        organisationId: string;
        paymentStatus: string;
        status: string;
        subtotal: number;
        total: number;
        totalFees: number;
        totalPaid: number;
        totalTax: number;
        updatedAt: string;
      }
        | null;
  }>;
  holders: (cartId: string, requestOptions?: RequestOptions) => Promise<{
     addOns: {
        cartItemId: string;
        eligibleHolders: {
           holder:   | {
              cartItemId: string;
              unitIndex: number;
            }
              | {
              slotId: string;
            };
           kind: "person" | "vehicle" | "group";
           label: string | null;
           remaining: number | null;
        }[];
        holder:   | {
           cartItemId: string;
           unitIndex: number;
         }
           | {
           slotId: string;
         }
           | null;
        how: "automatic" | "explicit" | "unassigned";
        ticketTypeId: string;
        unitIndex: number;
     }[];
     existingHolders: {
        eventId: string;
        kind: "person" | "vehicle" | "group";
        label: string;
        orderId: string;
        slotId: string;
     }[];
     holders: {
        cartItemId: string;
        email: string | null;
        kind: "person" | "vehicle" | "group";
        label: string;
        name: string | null;
        naming: {
           changesCloseAt: string | null;
           maxNameChanges: number | null;
           nameChangesAllowed: boolean;
           namesCloseAt: string | null;
           policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate";
           required: boolean;
           transfersAllowed: boolean;
        };
        ticketTypeId: string;
        unitIndex: number;
     }[];
  }>;
  options: (cartId: string, requestOptions?: RequestOptions) => Promise<{
     cartId: string;
     delivery: {
        available: boolean;
        chosen: boolean;
        closesAt: string | null;
        default: boolean;
        fee: number;
        kind: "digital" | "physical";
        label: string;
        method: string;
        needsAddress: boolean;
        passId: string | null;
        reason: string | null;
     }[];
     payment: {
        available: boolean;
        chosen: boolean;
        closesAt: string | null;
        fee: number;
        label: string;
        method: string;
        pending: boolean;
        reason: string | null;
     }[];
     shipTo: {
        city: string;
        country: string;
        line1: string;
        line2?: string | null;
        name: string;
        phone?: string | null;
        postalCode: string;
        region?: string | null;
     } & Record<string, never>;
     surface: "box_office" | "online";
     total: number;
  }>;
  quote: (cartId: string, requestOptions?: RequestOptions) => Promise<{
     cartId: string;
     choices: {
        cardFunding?: "credit" | "debit" | "prepaid" | null;
        deliveryMethod?: string | null;
        paymentMethod?: string | null;
     };
     currency: string | null;
     fees: {
        amount: number;
        basis: "per_ticket" | "per_order";
        code: string;
        display: "included" | "separate";
        kind: string;
        label: string;
        optional: boolean;
        refundable: "always" | "never" | "until_fulfilled" | null;
        taxCategory: string | null;
        waivedFrom: number | null;
     }[];
     headline: {
        allIn: boolean;
        amount: number;
     };
     lines: {
        discount: number;
        fees: number;
        itemId: string;
        quantity: number;
        tax: number;
        total: number;
        unitPrice: number;
     }[];
     shipTo: {
        city: string;
        country: string;
        line1: string;
        line2?: string | null;
        name: string;
        phone?: string | null;
        postalCode: string;
        region?: string | null;
     } & Record<string, never>;
     taxes: {
        category: string;
        inclusive: boolean;
        jurisdiction: string;
        rate: string | null;
        supplier: string;
        tax: number;
        taxable: number;
        treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope";
     }[];
     totals: {
        discounts: number;
        fees: number;
        giftCards: number;
        tax: number;
        tickets: number;
        total: number;
     };
  }>;
  releaseSeat: (cartId: string, occurrenceId: string, seat: string, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  removeCode: (cartId: string, codeId: string, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  removeItem: (cartId: string, itemId: string, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  removeUnlock: (cartId: string, unlockId: string, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  reserveSeats: (cartId: string, request: {
     acceptSingleSeatGap?: boolean;
     eventOccurrenceId: string;
     planVersion?: string;
     seats: number[];
     ticketTypeId?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     cart: {
        accountId: string;
        channelId: string;
        codes: {
           appliedAt: string;
           appliedBy: string | null;
           code: string;
           codeId: string;
           typed: string | null;
        }[];
        createdAt: string;
        currency: string | null;
        customerId: string | null;
        expiresAt: string;
        id: string;
        metadata:   | {
         [key: string]: unknown;
         }
           | null;
        orderId: string | null;
        organisationId: string;
        staffUnlocks: {
           actAsTags: string[];
           at: string;
           id: string;
           reason: string;
           targets: (
              | {
              eventId: string;
              type: "event";
            }
              | {
              occurrenceId: string;
              type: "occurrence";
            }
              | {
              ticketTypeId: string;
              type: "ticket_type";
            }
              | {
              categoryId: string;
              ticketTypeId: string;
              type: "price_cell";
           })[];
           userId: string;
        }[];
        status: "expired" | "active" | "checked_out" | "abandoned";
        updatedAt: string;
     };
     items: {
        cartId: string;
        categoryId: string;
        createdAt: string;
        eventLayoutAreaId: string | null;
        eventLayoutSeatId: string | null;
        eventOccurrenceId: string;
        id: string;
        notes: string | null;
        organisationId: string;
        priceSnapshot: {
           categoryName: string;
           currency: string;
           eventId: string;
           eventName: string;
           priceSchemeId: string;
           ticketTypeName: string;
           unitPrice: number;
        };
        quantity: number;
        reservationId: string | null;
        seatIndex?: number | null;
        ticketTypeId: string;
        venuePlanVersionId?: string | null;
     }[];
     seats?: {
        expiresAt: string | null;
        itemId: string;
        label: string;
        number: string;
        row: string;
        seat: number;
        section: string;
     }[];
  }>;
  setHolders: (cartId: string, request: {
     addOns?: {
        cartItemId: string;
        holder:   | {
           cartItemId: string;
           unitIndex: number;
         }
           | {
           slotId: string;
         }
           | null;
        unitIndex: number;
     }[];
     holders?: {
        cartItemId: string;
        email?: string | null;
        name?: string | null;
        unitIndex: number;
     }[];
   }, requestOptions?: RequestOptions) => Promise<{
     addOns: {
        cartItemId: string;
        eligibleHolders: {
           holder:   | {
              cartItemId: string;
              unitIndex: number;
            }
              | {
              slotId: string;
            };
           kind: "person" | "vehicle" | "group";
           label: string | null;
           remaining: number | null;
        }[];
        holder:   | {
           cartItemId: string;
           unitIndex: number;
         }
           | {
           slotId: string;
         }
           | null;
        how: "automatic" | "explicit" | "unassigned";
        ticketTypeId: string;
        unitIndex: number;
     }[];
     existingHolders: {
        eventId: string;
        kind: "person" | "vehicle" | "group";
        label: string;
        orderId: string;
        slotId: string;
     }[];
     holders: {
        cartItemId: string;
        email: string | null;
        kind: "person" | "vehicle" | "group";
        label: string;
        name: string | null;
        naming: {
           changesCloseAt: string | null;
           maxNameChanges: number | null;
           nameChangesAllowed: boolean;
           namesCloseAt: string | null;
           policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate";
           required: boolean;
           transfersAllowed: boolean;
        };
        ticketTypeId: string;
        unitIndex: number;
     }[];
  }>;
};

Defined in: client.ts:7812

Carts methods

addItem()#

addItem: (cartId: string, request: {
  categoryId: string;
  eventLayoutAreaId?: string;
  eventLayoutSeatIds?: string[];
  eventOccurrenceId: string;
  quantity?: number;
  ticketTypeId: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Add cart item Add an item to the cart, taking a real inventory reservation. The event must be listed on the cart's channel.

Parameters#

ParameterType
cartIdstring
request{ categoryId: string; eventLayoutAreaId?: string; eventLayoutSeatIds?: string[]; eventOccurrenceId: string; quantity?: number; ticketTypeId: string; }
request.categoryIdstring
request.eventLayoutAreaId?string
request.eventLayoutSeatIds?string[]
request.eventOccurrenceId?string
request.quantity?number
request.ticketTypeId?string
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

addStaffCartItem

addUnlock()#

addUnlock: (cartId: string, request: {
  actAsTags?: string[];
  reason: string;
  targets?: (
     | {
     eventId: string;
     type: "event";
   }
     | {
     occurrenceId: string;
     type: "occurrence";
   }
     | {
     ticketTypeId: string;
     type: "ticket_type";
   }
     | {
     categoryId: string;
     ticketTypeId: string;
     type: "price_cell";
  })[];
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Unlock a price for this sale Add a staff unlock to the cart: every locked or hidden price its targets cover, or that one of its tags would unlock, becomes buyable for this cart and the order it becomes, and for nothing else. Also opens a sale window whose audience includes one of its tags, for this cart. Needs orders.unlock_prices on the channel's account, as a person; the reason is required and the order records who applied it, what it opened and why.

Parameters#

ParameterTypeDescription
cartIdstring-
request{ actAsTags?: string[]; reason: string; targets?: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; }-
request.actAsTags?string[]Description Customer tags (slugs) the cart counts as holding for this sale: opens every price and every sale window they would open. Nothing is granted to any customer Example [ "member" ]
request.reason?stringDescription Why, recorded on the order and in its audit log Example Comp for the lighting designer
request.targets?( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]Description What it opens. At least one target or one tag to act as
requestOptions?RequestOptions-

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

addStaffCartUnlock

applyCode()#

applyCode: (cartId: string, request: {
  code?: string;
  codeId?: string;
  typed?: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Apply a code to the cart Apply a code (TKT-343) to the cart: its effects - prices it unlocks, tags it acts as, its discount and its fee waiver - apply to this cart and the order it becomes, and to nothing else; nothing is granted to any customer. By code, the text the buyer typed: anyone who may sell through the channel, and every attempt counts against the code attempt limits (10 per cart and 30 per caller per channel in 15 minutes; 429 CODE_ATTEMPTS_EXCEEDED, also when the attempt cannot be counted), unless the caller holds codes.read. By codeId, as a counter applies the code a buyer meant after finding it: needs codes.read on the channel's account, and typed records what the buyer typed. The code must be usable on the channel now (404 CODE_NOT_FOUND, 400 CODE_NOT_YET_VALID or CODE_EXPIRED, 409 CODE_EXHAUSTED) and not already applied (409 CODE_ALREADY_APPLIED). Its use is counted when the order is made.

Parameters#

ParameterTypeDescription
cartIdstring-
request{ code?: string; codeId?: string; typed?: string; }-
request.code?stringDescription The text the buyer typed. Counts against the code attempt limits Example BEST2FORYOU
request.codeId?stringDescription The code's id, as a counter applies the code a buyer meant after finding it. Needs codes.read Example cod_ab12cd34
request.typed?stringDescription With codeId: what the buyer typed, recorded on the order beside the code applied Example BESTTWOFORYOU
requestOptions?RequestOptions-

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

applyStaffCartCode

changeSeat()#

changeSeat: (cartId: string, occurrenceId: string, seat: string, request: {
  ticketTypeId: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Change a seat's ticket type Change a seat line's ticket type, repriced, the reservation untouched (422 TICKET_TYPE_NOT_FOR_SEAT when the type is not on offer for the seat's category on the channel).

Parameters#

ParameterType
cartIdstring
occurrenceIdstring
seatstring
request{ ticketTypeId: string; }
request.ticketTypeIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

changeStaffCartSeat

checkout()#

checkout: (cartId: string, request: {
  customerId?: string;
  customerNotes?: string;
  discount?: {
     amount?: number;
     label?: string;
     percent?: number;
     reason: string;
  };
  formResponses?: Record<string, any>;
  metadata?: Record<string, any>;
  returnUrl?: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  checkout: {
     capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[];
     deferred: {
        fallback: string;
        key: string;
        requirement: string;
     }[];
     expiresAt: string | null;
     nextAction:   | {
        awaitApproval:   | {
           expiresAt: string | null;
           message: string;
           orderId: string;
           pollAfterSeconds: number;
           taskId: string | null;
         }
           | null;
        completeForm:   | {
           errors: {
              code: ...;
              index: ...;
              key: ...;
              lineId: ...;
              message: ...;
              source: ...;
           }[];
           form: {
              id: string;
              questions: ...[];
              version: number;
           };
         }
           | null;
        payment:   | {
           amount: number;
           connectedAccountId: string | null;
           currency: string;
           externalPaymentUrl: string | null;
           orderId: string;
           paymentId: string | null;
           paymentType: string | null;
           providerClientSecret: string | null;
           providerType: string | null;
           publishableKey: string | null;
           status: string | null;
         }
           | null;
        redirect:   | {
           expiresAt: string;
           reason: "complete_form" | "await_approval" | "payment" | "hook_input";
           returnUrl: string;
           url: string;
         }
           | null;
        type: "redirect" | "complete_form" | "await_approval" | "payment";
      }
        | null;
     status:   | "processing"
        | "complete"
        | "requires_input"
        | "requires_approval"
        | "requires_payment";
  };
  order:   | {
     accountId: string;
     createdAt: string;
     currency: string;
     customerId: string | null;
     expiresAt: string | null;
     id: string;
     items: {
        description: string | null;
        id: string;
        name: string;
        orderId: string;
        quantity: number;
        subtotal: number;
        type: string;
        unitPrice: number;
     }[];
     orderNumber: string;
     organisationId: string;
     paymentStatus: string;
     status: string;
     subtotal: number;
     total: number;
     totalFees: number;
     totalPaid: number;
     totalTax: number;
     updatedAt: string;
   }
     | null;
}>;

Checkout cart Check the cart out under the cart's channel. From API version 2026-10-02 this is a loop: the answer's checkout says where the checkout is (requires_input, requires_approval, requires_payment, processing, complete) and what the client does next (nextAction), and the client does it and calls again until complete. A requirement the client cannot handle (TL-Client-Capabilities) is sent to the hosted completion page if the client declared redirect, and otherwise takes its fallback; a block fallback answers 422 REQUIREMENTS_NOT_MET. Safe to repeat: a cart already checked out answers its checkout as it stands, and an expired or cancelled order answers 409 CHECKOUT_CLOSED. Earlier versions answer as before, without checkout. Manual discounts require the orders.applydiscount permission.

Parameters#

ParameterType
cartIdstring
request{ customerId?: string; customerNotes?: string; discount?: { amount?: number; label?: string; percent?: number; reason: string; }; formResponses?: Record<string, any>; metadata?: Record<string, any>; returnUrl?: string; }
request.customerId?string
request.customerNotes?string
request.discount?{ amount?: number; label?: string; percent?: number; reason: string; }
request.discount.amount?number
request.discount.label?string
request.discount.percent?number
request.discount.reason?string
request.formResponses?Record<string, any>
request.metadata?Record<string, any>
request.returnUrl?string
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; checkout: { capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[]; deferred: { fallback: string; key: string; requirement: string; }[]; expiresAt: string | null; nextAction: | { awaitApproval: | { expiresAt: string | null; message: string; orderId: string; pollAfterSeconds: number; taskId: string | null; } | null; completeForm: | { errors: { code: ...; index: ...; key: ...; lineId: ...; message: ...; source: ...; }[]; form: { id: string; questions: ...[]; version: number; }; } | null; payment: | { amount: number; connectedAccountId: string | null; currency: string; externalPaymentUrl: string | null; orderId: string; paymentId: string | null; paymentType: string | null; providerClientSecret: string | null; providerType: string | null; publishableKey: string | null; status: string | null; } | null; redirect: | { expiresAt: string; reason: "complete_form" | "await_approval" | "payment" | "hook_input"; returnUrl: string; url: string; } | null; type: "redirect" | "complete_form" | "await_approval" | "payment"; } | null; status: | "processing" | "complete" | "requires_input" | "requires_approval" | "requires_payment"; }; order: | { accountId: string; createdAt: string; currency: string; customerId: string | null; expiresAt: string | null; id: string; items: { description: string | null; id: string; name: string; orderId: string; quantity: number; subtotal: number; type: string; unitPrice: number; }[]; orderNumber: string; organisationId: string; paymentStatus: string; status: string; subtotal: number; total: number; totalFees: number; totalPaid: number; totalTax: number; updatedAt: string; } | null; }>

Operation Id#

checkoutStaffCart

choose()#

choose: (cartId: string, request: {
  cardFunding?: "credit" | "debit" | "prepaid" | null;
  deliveryMethod?: string | null;
  paymentMethod?: string | null;
  shipTo?:   | {
     city: string;
     country: string;
     line1: string;
     line2?: string | null;
     name: string;
     phone?: string | null;
     postalCode: string;
     region?: string | null;
   }
     | null;
}, requestOptions?: RequestOptions) => Promise<{
  cartId: string;
  choices: {
     cardFunding?: "credit" | "debit" | "prepaid" | null;
     deliveryMethod?: string | null;
     paymentMethod?: string | null;
  };
  currency: string | null;
  fees: {
     amount: number;
     basis: "per_ticket" | "per_order";
     code: string;
     display: "included" | "separate";
     kind: string;
     label: string;
     optional: boolean;
     refundable: "always" | "never" | "until_fulfilled" | null;
     taxCategory: string | null;
     waivedFrom: number | null;
  }[];
  headline: {
     allIn: boolean;
     amount: number;
  };
  lines: {
     discount: number;
     fees: number;
     itemId: string;
     quantity: number;
     tax: number;
     total: number;
     unitPrice: number;
  }[];
  shipTo: {
     city: string;
     country: string;
     line1: string;
     line2?: string | null;
     name: string;
     phone?: string | null;
     postalCode: string;
     region?: string | null;
  } & Record<string, never>;
  taxes: {
     category: string;
     inclusive: boolean;
     jurisdiction: string;
     rate: string | null;
     supplier: string;
     tax: number;
     taxable: number;
     treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope";
  }[];
  totals: {
     discounts: number;
     fees: number;
     giftCards: number;
     tax: number;
     tickets: number;
     total: number;
  };
}>;

Choose delivery and payment Set the cart's delivery method, payment method, and the card's funding once known; the quote re-prices and is returned. A payment method the cart is not offered gets 409 PAYMENT_METHOD_NOT_OFFERED, a delivery method 409 DELIVERY_METHOD_NOT_OFFERED.

Parameters#

ParameterTypeDescription
cartIdstring-
request{ cardFunding?: "credit" | "debit" | "prepaid" | null; deliveryMethod?: string | null; paymentMethod?: string | null; shipTo?: | { city: string; country: string; line1: string; line2?: string | null; name: string; phone?: string | null; postalCode: string; region?: string | null; } | null; }-
request.cardFunding?"credit" | "debit" | "prepaid" | nullDescription The card's funding, once the processor reports it after card entry; a credit-only surcharge waits for it
request.deliveryMethod?string | nullDescription How the tickets reach the buyer: one of the options' available delivery methods. A delivery fee, where one applies, follows it; none chosen is the options' default (email) Example email
request.paymentMethod?string | nullDescription How the buyer will pay: one of the options' available payment methods. A surcharge, where one applies, follows it Example card
request.shipTo?| { city: string; country: string; line1: string; line2?: string | null; name: string; phone?: string | null; postalCode: string; region?: string | null; } | nullDescription Where a physical method (post) sends to. Checkout needs one when the delivery method needs an address (409 SHIP_TO_REQUIRED), and post to a country the policies exclude is not offered. Null clears it
requestOptions?RequestOptions-

Returns#

Promise<{ cartId: string; choices: { cardFunding?: "credit" | "debit" | "prepaid" | null; deliveryMethod?: string | null; paymentMethod?: string | null; }; currency: string | null; fees: { amount: number; basis: "per_ticket" | "per_order"; code: string; display: "included" | "separate"; kind: string; label: string; optional: boolean; refundable: "always" | "never" | "until_fulfilled" | null; taxCategory: string | null; waivedFrom: number | null; }[]; headline: { allIn: boolean; amount: number; }; lines: { discount: number; fees: number; itemId: string; quantity: number; tax: number; total: number; unitPrice: number; }[]; shipTo: { city: string; country: string; line1: string; line2?: string | null; name: string; phone?: string | null; postalCode: string; region?: string | null; } & Record<string, never>; taxes: { category: string; inclusive: boolean; jurisdiction: string; rate: string | null; supplier: string; tax: number; taxable: number; treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope"; }[]; totals: { discounts: number; fees: number; giftCards: number; tax: number; tickets: number; total: number; }; }>

Operation Id#

setStaffCartChoices

create()#

create: (request: {
  customerId?: string;
  metadata?: Record<string, any>;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Create cart Create a cart on the channel named in X-Ticketlayer-Channel (required) as a staff actor. Trusted actors may act on behalf of a customer they have looked up. Answers 400 CHANNEL_REQUIRED when no channel is named.

Parameters#

ParameterType
request{ customerId?: string; metadata?: Record<string, any>; }
request.customerId?string
request.metadata?Record<string, any>
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

createStaffCart

get()#

get: (cartId: string, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Get cart Get a cart with its items. The channel is the cart's own; X-Ticketlayer-Channel, when sent, must agree with it (400 CHANNEL_MISMATCH otherwise).

Parameters#

ParameterType
cartIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

getStaffCart

getCheckout()#

getCheckout: (cartId: string, options?: {
  returnUrl?: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  checkout: {
     capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[];
     deferred: {
        fallback: string;
        key: string;
        requirement: string;
     }[];
     expiresAt: string | null;
     nextAction:   | {
        awaitApproval:   | {
           expiresAt: string | null;
           message: string;
           orderId: string;
           pollAfterSeconds: number;
           taskId: string | null;
         }
           | null;
        completeForm:   | {
           errors: {
              code: ...;
              index: ...;
              key: ...;
              lineId: ...;
              message: ...;
              source: ...;
           }[];
           form: {
              id: string;
              questions: ...[];
              version: number;
           };
         }
           | null;
        payment:   | {
           amount: number;
           connectedAccountId: string | null;
           currency: string;
           externalPaymentUrl: string | null;
           orderId: string;
           paymentId: string | null;
           paymentType: string | null;
           providerClientSecret: string | null;
           providerType: string | null;
           publishableKey: string | null;
           status: string | null;
         }
           | null;
        redirect:   | {
           expiresAt: string;
           reason: "complete_form" | "await_approval" | "payment" | "hook_input";
           returnUrl: string;
           url: string;
         }
           | null;
        type: "redirect" | "complete_form" | "await_approval" | "payment";
      }
        | null;
     status:   | "processing"
        | "complete"
        | "requires_input"
        | "requires_approval"
        | "requires_payment";
  };
  order:   | {
     accountId: string;
     createdAt: string;
     currency: string;
     customerId: string | null;
     expiresAt: string | null;
     id: string;
     items: {
        description: string | null;
        id: string;
        name: string;
        orderId: string;
        quantity: number;
        subtotal: number;
        type: string;
        unitPrice: number;
     }[];
     orderNumber: string;
     organisationId: string;
     paymentStatus: string;
     status: string;
     subtotal: number;
     total: number;
     totalFees: number;
     totalPaid: number;
     totalTax: number;
     updatedAt: string;
   }
     | null;
}>;

Get cart checkout The cart's checkout as it stands, in the same shape POST /cart/{cartId}/checkout answers: what a client reads after the hosted completion page returns the buyer, and what it polls while an approval or a payment is awaited. It changes nothing, except that a redirect it answers makes a fresh completion link. 409 CHECKOUT_NOT_STARTED for a cart that has not been checked out and has nothing to answer first.

Parameters#

ParameterType
cartIdstring
options?{ returnUrl?: string; }
options.returnUrl?string
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; checkout: { capabilitiesApplied: ("redirect" | "complete_form" | "await_approval")[]; deferred: { fallback: string; key: string; requirement: string; }[]; expiresAt: string | null; nextAction: | { awaitApproval: | { expiresAt: string | null; message: string; orderId: string; pollAfterSeconds: number; taskId: string | null; } | null; completeForm: | { errors: { code: ...; index: ...; key: ...; lineId: ...; message: ...; source: ...; }[]; form: { id: string; questions: ...[]; version: number; }; } | null; payment: | { amount: number; connectedAccountId: string | null; currency: string; externalPaymentUrl: string | null; orderId: string; paymentId: string | null; paymentType: string | null; providerClientSecret: string | null; providerType: string | null; publishableKey: string | null; status: string | null; } | null; redirect: | { expiresAt: string; reason: "complete_form" | "await_approval" | "payment" | "hook_input"; returnUrl: string; url: string; } | null; type: "redirect" | "complete_form" | "await_approval" | "payment"; } | null; status: | "processing" | "complete" | "requires_input" | "requires_approval" | "requires_payment"; }; order: | { accountId: string; createdAt: string; currency: string; customerId: string | null; expiresAt: string | null; id: string; items: { description: string | null; id: string; name: string; orderId: string; quantity: number; subtotal: number; type: string; unitPrice: number; }[]; orderNumber: string; organisationId: string; paymentStatus: string; status: string; subtotal: number; total: number; totalFees: number; totalPaid: number; totalTax: number; updatedAt: string; } | null; }>

Operation Id#

getStaffCartCheckout

holders()#

holders: (cartId: string, requestOptions?: RequestOptions) => Promise<{
  addOns: {
     cartItemId: string;
     eligibleHolders: {
        holder:   | {
           cartItemId: string;
           unitIndex: number;
         }
           | {
           slotId: string;
         };
        kind: "person" | "vehicle" | "group";
        label: string | null;
        remaining: number | null;
     }[];
     holder:   | {
        cartItemId: string;
        unitIndex: number;
      }
        | {
        slotId: string;
      }
        | null;
     how: "automatic" | "explicit" | "unassigned";
     ticketTypeId: string;
     unitIndex: number;
  }[];
  existingHolders: {
     eventId: string;
     kind: "person" | "vehicle" | "group";
     label: string;
     orderId: string;
     slotId: string;
  }[];
  holders: {
     cartItemId: string;
     email: string | null;
     kind: "person" | "vehicle" | "group";
     label: string;
     name: string | null;
     naming: {
        changesCloseAt: string | null;
        maxNameChanges: number | null;
        nameChangesAllowed: boolean;
        namesCloseAt: string | null;
        policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate";
        required: boolean;
        transfersAllowed: boolean;
     };
     ticketTypeId: string;
     unitIndex: number;
  }[];
}>;

Holders and add-ons on a cart Who each unit is for before checkout: a holder ("Guest 1" until named) per unit of a ticket type that creates one, and where each add-on goes, placed by hand, automatically (one holder, or one each) or not yet. Lists the buyer's holders from earlier bookings that add-ons can also go to.

Parameters#

ParameterType
cartIdstring
requestOptions?RequestOptions

Returns#

Promise<{ addOns: { cartItemId: string; eligibleHolders: { holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; }; kind: "person" | "vehicle" | "group"; label: string | null; remaining: number | null; }[]; holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; } | null; how: "automatic" | "explicit" | "unassigned"; ticketTypeId: string; unitIndex: number; }[]; existingHolders: { eventId: string; kind: "person" | "vehicle" | "group"; label: string; orderId: string; slotId: string; }[]; holders: { cartItemId: string; email: string | null; kind: "person" | "vehicle" | "group"; label: string; name: string | null; naming: { changesCloseAt: string | null; maxNameChanges: number | null; nameChangesAllowed: boolean; namesCloseAt: string | null; policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate"; required: boolean; transfersAllowed: boolean; }; ticketTypeId: string; unitIndex: number; }[]; }>

Operation Id#

getStaffCartHolders

options()#

options: (cartId: string, requestOptions?: RequestOptions) => Promise<{
  cartId: string;
  delivery: {
     available: boolean;
     chosen: boolean;
     closesAt: string | null;
     default: boolean;
     fee: number;
     kind: "digital" | "physical";
     label: string;
     method: string;
     needsAddress: boolean;
     passId: string | null;
     reason: string | null;
  }[];
  payment: {
     available: boolean;
     chosen: boolean;
     closesAt: string | null;
     fee: number;
     label: string;
     method: string;
     pending: boolean;
     reason: string | null;
  }[];
  shipTo: {
     city: string;
     country: string;
     line1: string;
     line2?: string | null;
     name: string;
     phone?: string | null;
     postalCode: string;
     region?: string | null;
  } & Record<string, never>;
  surface: "box_office" | "online";
  total: number;
}>;

Delivery and payment options The delivery and payment methods this cart can choose on its channel's surface, each with what choosing it adds to the total and why an unavailable one is not (a method closed by its cut-off is listed, unavailable, with closesAt). Staff are offered invoice and bank transfer, which a buyer never is.

Parameters#

ParameterType
cartIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cartId: string; delivery: { available: boolean; chosen: boolean; closesAt: string | null; default: boolean; fee: number; kind: "digital" | "physical"; label: string; method: string; needsAddress: boolean; passId: string | null; reason: string | null; }[]; payment: { available: boolean; chosen: boolean; closesAt: string | null; fee: number; label: string; method: string; pending: boolean; reason: string | null; }[]; shipTo: { city: string; country: string; line1: string; line2?: string | null; name: string; phone?: string | null; postalCode: string; region?: string | null; } & Record<string, never>; surface: "box_office" | "online"; total: number; }>

Operation Id#

getStaffCartOptions

quote()#

quote: (cartId: string, requestOptions?: RequestOptions) => Promise<{
  cartId: string;
  choices: {
     cardFunding?: "credit" | "debit" | "prepaid" | null;
     deliveryMethod?: string | null;
     paymentMethod?: string | null;
  };
  currency: string | null;
  fees: {
     amount: number;
     basis: "per_ticket" | "per_order";
     code: string;
     display: "included" | "separate";
     kind: string;
     label: string;
     optional: boolean;
     refundable: "always" | "never" | "until_fulfilled" | null;
     taxCategory: string | null;
     waivedFrom: number | null;
  }[];
  headline: {
     allIn: boolean;
     amount: number;
  };
  lines: {
     discount: number;
     fees: number;
     itemId: string;
     quantity: number;
     tax: number;
     total: number;
     unitPrice: number;
  }[];
  shipTo: {
     city: string;
     country: string;
     line1: string;
     line2?: string | null;
     name: string;
     phone?: string | null;
     postalCode: string;
     region?: string | null;
  } & Record<string, never>;
  taxes: {
     category: string;
     inclusive: boolean;
     jurisdiction: string;
     rate: string | null;
     supplier: string;
     tax: number;
     taxable: number;
     treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope";
  }[];
  totals: {
     discounts: number;
     fees: number;
     giftCards: number;
     tax: number;
     tickets: number;
     total: number;
  };
}>;

Quote the cart The cart priced with the choices made so far. Checkout charges exactly this total for the same cart and choices.

Parameters#

ParameterType
cartIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cartId: string; choices: { cardFunding?: "credit" | "debit" | "prepaid" | null; deliveryMethod?: string | null; paymentMethod?: string | null; }; currency: string | null; fees: { amount: number; basis: "per_ticket" | "per_order"; code: string; display: "included" | "separate"; kind: string; label: string; optional: boolean; refundable: "always" | "never" | "until_fulfilled" | null; taxCategory: string | null; waivedFrom: number | null; }[]; headline: { allIn: boolean; amount: number; }; lines: { discount: number; fees: number; itemId: string; quantity: number; tax: number; total: number; unitPrice: number; }[]; shipTo: { city: string; country: string; line1: string; line2?: string | null; name: string; phone?: string | null; postalCode: string; region?: string | null; } & Record<string, never>; taxes: { category: string; inclusive: boolean; jurisdiction: string; rate: string | null; supplier: string; tax: number; taxable: number; treatment: "standard" | "reduced" | "zero" | "exempt" | "outside_scope"; }[]; totals: { discounts: number; fees: number; giftCards: number; tax: number; tickets: number; total: number; }; }>

Operation Id#

getStaffCartQuote

releaseSeat()#

releaseSeat: (cartId: string, occurrenceId: string, seat: string, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Give a seat back Release a seat now and remove its line from the cart.

Parameters#

ParameterType
cartIdstring
occurrenceIdstring
seatstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

releaseStaffCartSeat

removeCode()#

removeCode: (cartId: string, codeId: string, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Remove a code from the cart Take a code off the cart. Its discount and fee waiver stop applying; a line it unlocked stays in the cart and is refused at checkout (TAG_REQUIRED), as offers would report it. 404 CODE_NOT_APPLIED when the cart does not hold it.

Parameters#

ParameterType
cartIdstring
codeIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

removeStaffCartCode

removeItem()#

removeItem: (cartId: string, itemId: string, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Remove cart item Remove an item from the cart, releasing its reservation

Parameters#

ParameterType
cartIdstring
itemIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

removeStaffCartItem

removeUnlock()#

removeUnlock: (cartId: string, unlockId: string, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Remove an unlock for this sale Remove a staff unlock from the cart. A line it let in stays in the cart and is refused at checkout (TAG_REQUIRED), as offers would report it. Needs orders.unlock_prices, as a person.

Parameters#

ParameterType
cartIdstring
unlockIdstring
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

removeStaffCartUnlock

reserveSeats()#

reserveSeats: (cartId: string, request: {
  acceptSingleSeatGap?: boolean;
  eventOccurrenceId: string;
  planVersion?: string;
  seats: number[];
  ticketTypeId?: string;
}, requestOptions?: RequestOptions) => Promise<{
  cart: {
     accountId: string;
     channelId: string;
     codes: {
        appliedAt: string;
        appliedBy: string | null;
        code: string;
        codeId: string;
        typed: string | null;
     }[];
     createdAt: string;
     currency: string | null;
     customerId: string | null;
     expiresAt: string;
     id: string;
     metadata:   | {
      [key: string]: unknown;
      }
        | null;
     orderId: string | null;
     organisationId: string;
     staffUnlocks: {
        actAsTags: string[];
        at: string;
        id: string;
        reason: string;
        targets: (
           | {
           eventId: string;
           type: "event";
         }
           | {
           occurrenceId: string;
           type: "occurrence";
         }
           | {
           ticketTypeId: string;
           type: "ticket_type";
         }
           | {
           categoryId: string;
           ticketTypeId: string;
           type: "price_cell";
        })[];
        userId: string;
     }[];
     status: "expired" | "active" | "checked_out" | "abandoned";
     updatedAt: string;
  };
  items: {
     cartId: string;
     categoryId: string;
     createdAt: string;
     eventLayoutAreaId: string | null;
     eventLayoutSeatId: string | null;
     eventOccurrenceId: string;
     id: string;
     notes: string | null;
     organisationId: string;
     priceSnapshot: {
        categoryName: string;
        currency: string;
        eventId: string;
        eventName: string;
        priceSchemeId: string;
        ticketTypeName: string;
        unitPrice: number;
     };
     quantity: number;
     reservationId: string | null;
     seatIndex?: number | null;
     ticketTypeId: string;
     venuePlanVersionId?: string | null;
  }[];
  seats?: {
     expiresAt: string | null;
     itemId: string;
     label: string;
     number: string;
     row: string;
     seat: number;
     section: string;
  }[];
}>;

Reserve seats Box Office's seat reservation, with the body and refusals of the Live surface's (POST /internal/live/carts/{cartId}/seats): seats by index, each its own line, at the ticket type named or the category's default, all or none. 409 SEAT_UNAVAILABLE with alternatives, 409 SINGLE_SEAT_GAP with a suggestion, 409 PLAN_VERSION_CHANGED, 422 SEAT_LIMIT, 422 TICKET_TYPE_NOT_FOR_SEAT. On a channel whose single seat gap rule is confirm (a box office's default) a choice refused with SINGLE_SEAT_GAP may be sent again with acceptSingleSeatGap: true, once the customer has confirmed it.

Parameters#

ParameterType
cartIdstring
request{ acceptSingleSeatGap?: boolean; eventOccurrenceId: string; planVersion?: string; seats: number[]; ticketTypeId?: string; }
request.acceptSingleSeatGap?boolean
request.eventOccurrenceId?string
request.planVersion?string
request.seats?number[]
request.ticketTypeId?string
requestOptions?RequestOptions

Returns#

Promise<{ cart: { accountId: string; channelId: string; codes: { appliedAt: string; appliedBy: string | null; code: string; codeId: string; typed: string | null; }[]; createdAt: string; currency: string | null; customerId: string | null; expiresAt: string; id: string; metadata: | { [key: string]: unknown; } | null; orderId: string | null; organisationId: string; staffUnlocks: { actAsTags: string[]; at: string; id: string; reason: string; targets: ( | { eventId: string; type: "event"; } | { occurrenceId: string; type: "occurrence"; } | { ticketTypeId: string; type: "ticket_type"; } | { categoryId: string; ticketTypeId: string; type: "price_cell"; })[]; userId: string; }[]; status: "expired" | "active" | "checked_out" | "abandoned"; updatedAt: string; }; items: { cartId: string; categoryId: string; createdAt: string; eventLayoutAreaId: string | null; eventLayoutSeatId: string | null; eventOccurrenceId: string; id: string; notes: string | null; organisationId: string; priceSnapshot: { categoryName: string; currency: string; eventId: string; eventName: string; priceSchemeId: string; ticketTypeName: string; unitPrice: number; }; quantity: number; reservationId: string | null; seatIndex?: number | null; ticketTypeId: string; venuePlanVersionId?: string | null; }[]; seats?: { expiresAt: string | null; itemId: string; label: string; number: string; row: string; seat: number; section: string; }[]; }>

Operation Id#

reserveStaffCartSeats

setHolders()#

setHolders: (cartId: string, request: {
  addOns?: {
     cartItemId: string;
     holder:   | {
        cartItemId: string;
        unitIndex: number;
      }
        | {
        slotId: string;
      }
        | null;
     unitIndex: number;
  }[];
  holders?: {
     cartItemId: string;
     email?: string | null;
     name?: string | null;
     unitIndex: number;
  }[];
}, requestOptions?: RequestOptions) => Promise<{
  addOns: {
     cartItemId: string;
     eligibleHolders: {
        holder:   | {
           cartItemId: string;
           unitIndex: number;
         }
           | {
           slotId: string;
         };
        kind: "person" | "vehicle" | "group";
        label: string | null;
        remaining: number | null;
     }[];
     holder:   | {
        cartItemId: string;
        unitIndex: number;
      }
        | {
        slotId: string;
      }
        | null;
     how: "automatic" | "explicit" | "unassigned";
     ticketTypeId: string;
     unitIndex: number;
  }[];
  existingHolders: {
     eventId: string;
     kind: "person" | "vehicle" | "group";
     label: string;
     orderId: string;
     slotId: string;
  }[];
  holders: {
     cartItemId: string;
     email: string | null;
     kind: "person" | "vehicle" | "group";
     label: string;
     name: string | null;
     naming: {
        changesCloseAt: string | null;
        maxNameChanges: number | null;
        nameChangesAllowed: boolean;
        namesCloseAt: string | null;
        policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate";
        required: boolean;
        transfersAllowed: boolean;
     };
     ticketTypeId: string;
     unitIndex: number;
  }[];
}>;

Name holders and place add-ons on a cart Replace the cart's holder names and add-on choices; checkout writes them as the order's holders. Checked as checkout checks them: 409 ADD_ON_HOLDER_MISMATCH (wrong kind of holder or no parent ticket), ADD_ON_LIMIT_REACHED, or ADD_ON_PARENT_REQUIRED (an add-on with no holder it could ever go to); 400 for a unit not in the cart.

Parameters#

ParameterTypeDescription
cartIdstring-
request{ addOns?: { cartItemId: string; holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; } | null; unitIndex: number; }[]; holders?: { cartItemId: string; email?: string | null; name?: string | null; unitIndex: number; }[]; }-
request.addOns?{ cartItemId: string; holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; } | null; unitIndex: number; }[]Description Where each add-on unit goes. One left out is placed automatically when that is unambiguous (one holder, or one each), else left for later
request.holders?{ cartItemId: string; email?: string | null; name?: string | null; unitIndex: number; }[]Description A name (and optionally an email) for units that make a holder; a unit left out stays "Guest N" until named
requestOptions?RequestOptions-

Returns#

Promise<{ addOns: { cartItemId: string; eligibleHolders: { holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; }; kind: "person" | "vehicle" | "group"; label: string | null; remaining: number | null; }[]; holder: | { cartItemId: string; unitIndex: number; } | { slotId: string; } | null; how: "automatic" | "explicit" | "unassigned"; ticketTypeId: string; unitIndex: number; }[]; existingHolders: { eventId: string; kind: "person" | "vehicle" | "group"; label: string; orderId: string; slotId: string; }[]; holders: { cartItemId: string; email: string | null; kind: "person" | "vehicle" | "group"; label: string; name: string | null; naming: { changesCloseAt: string | null; maxNameChanges: number | null; nameChangesAllowed: boolean; namesCloseAt: string | null; policy: "none" | "at_checkout" | "before_deadline" | "id_at_gate"; required: boolean; transfersAllowed: boolean; }; ticketTypeId: string; unitIndex: number; }[]; }>

Operation Id#

setStaffCartHolders