Skip to content
Docs
Reference

BackstageClient.aiActionLimits

BackstageClient.aiActionLimits in @ticketlayer/backstage.

@ticketlayer/backstage


@ticketlayer/backstage / BackstageClient / aiActionLimits

aiActionLimits: {
  list: (requestOptions?: RequestOptions) => Promise<{
     accounts: (
        | {
        accountId: string | null;
        settings: {
           actionsEnabled: boolean | null;
           dailyChannelMoneyCap: number | null;
           dailyCustomerMoneyCap: number | null;
           dailyOrgMoneyCap: number | null;
           exchangeFeeCeiling: number | null;
           nameChangeApproval: "staff" | "customer_confirm" | null;
           refundAfterScan: "deny" | "staff_approval" | null;
           refundMaxPerOrder: number | null;
           refundsPerCustomer90d: number | null;
           retainTransactionFeeOnCancellation: boolean | null;
        };
        updatedAt: string | null;
        updatedBy: string | null;
      }
       | null)[];
     defaults: {
        actionsEnabled: boolean;
        dailyChannelMoneyCap: number;
        dailyCustomerMoneyCap: number;
        dailyOrgMoneyCap: number;
        exchangeFeeCeiling: number;
        nameChangeApproval: "staff" | "customer_confirm";
        refundAfterScan: "deny" | "staff_approval";
        refundMaxPerOrder: number;
        refundsPerCustomer90d: number;
        retainTransactionFeeOnCancellation: boolean;
     };
     organisation:   | {
        accountId: string | null;
        settings: {
           actionsEnabled: boolean | null;
           dailyChannelMoneyCap: number | null;
           dailyCustomerMoneyCap: number | null;
           dailyOrgMoneyCap: number | null;
           exchangeFeeCeiling: number | null;
           nameChangeApproval: "staff" | "customer_confirm" | null;
           refundAfterScan: "deny" | "staff_approval" | null;
           refundMaxPerOrder: number | null;
           refundsPerCustomer90d: number | null;
           retainTransactionFeeOnCancellation: boolean | null;
        };
        updatedAt: string | null;
        updatedBy: string | null;
      }
        | null;
  }>;
  resolve: (options?: {
     accountId?: string;
   }, requestOptions?: RequestOptions) => Promise<{
     accountId: string | null;
     source: {
      [key: string]: "account" | "organisation" | "default";
     };
     thresholds: {
        actionsEnabled: boolean;
        dailyChannelMoneyCap: number;
        dailyCustomerMoneyCap: number;
        dailyOrgMoneyCap: number;
        exchangeFeeCeiling: number;
        nameChangeApproval: "staff" | "customer_confirm";
        refundAfterScan: "deny" | "staff_approval";
        refundMaxPerOrder: number;
        refundsPerCustomer90d: number;
        retainTransactionFeeOnCancellation: boolean;
     };
  }>;
  set: (request: {
     accountId?: string | null;
     actionsEnabled?: boolean | null;
     dailyChannelMoneyCap?: number | null;
     dailyCustomerMoneyCap?: number | null;
     dailyOrgMoneyCap?: number | null;
     exchangeFeeCeiling?: number | null;
     nameChangeApproval?: "staff" | "customer_confirm" | null;
     refundAfterScan?: "deny" | "staff_approval" | null;
     refundMaxPerOrder?: number | null;
     refundsPerCustomer90d?: number | null;
     retainTransactionFeeOnCancellation?: boolean | null;
   }, requestOptions?: RequestOptions) => Promise<
     | {
     accountId: string | null;
     settings: {
        actionsEnabled: boolean | null;
        dailyChannelMoneyCap: number | null;
        dailyCustomerMoneyCap: number | null;
        dailyOrgMoneyCap: number | null;
        exchangeFeeCeiling: number | null;
        nameChangeApproval: "staff" | "customer_confirm" | null;
        refundAfterScan: "deny" | "staff_approval" | null;
        refundMaxPerOrder: number | null;
        refundsPerCustomer90d: number | null;
        retainTransactionFeeOnCancellation: boolean | null;
     };
     updatedAt: string | null;
     updatedBy: string | null;
   }
    | null>;
};

Defined in: client.ts:8208

AI Action Limits methods

list()#

list: (requestOptions?: RequestOptions) => Promise<{
  accounts: (
     | {
     accountId: string | null;
     settings: {
        actionsEnabled: boolean | null;
        dailyChannelMoneyCap: number | null;
        dailyCustomerMoneyCap: number | null;
        dailyOrgMoneyCap: number | null;
        exchangeFeeCeiling: number | null;
        nameChangeApproval: "staff" | "customer_confirm" | null;
        refundAfterScan: "deny" | "staff_approval" | null;
        refundMaxPerOrder: number | null;
        refundsPerCustomer90d: number | null;
        retainTransactionFeeOnCancellation: boolean | null;
     };
     updatedAt: string | null;
     updatedBy: string | null;
   }
    | null)[];
  defaults: {
     actionsEnabled: boolean;
     dailyChannelMoneyCap: number;
     dailyCustomerMoneyCap: number;
     dailyOrgMoneyCap: number;
     exchangeFeeCeiling: number;
     nameChangeApproval: "staff" | "customer_confirm";
     refundAfterScan: "deny" | "staff_approval";
     refundMaxPerOrder: number;
     refundsPerCustomer90d: number;
     retainTransactionFeeOnCancellation: boolean;
  };
  organisation:   | {
     accountId: string | null;
     settings: {
        actionsEnabled: boolean | null;
        dailyChannelMoneyCap: number | null;
        dailyCustomerMoneyCap: number | null;
        dailyOrgMoneyCap: number | null;
        exchangeFeeCeiling: number | null;
        nameChangeApproval: "staff" | "customer_confirm" | null;
        refundAfterScan: "deny" | "staff_approval" | null;
        refundMaxPerOrder: number | null;
        refundsPerCustomer90d: number | null;
        retainTransactionFeeOnCancellation: boolean | null;
     };
     updatedAt: string | null;
     updatedBy: string | null;
   }
     | null;
}>;

List AI action limits What the Concierge AI may do without a person, as set by the organisation and by each account you can read, and the platform defaults. A null field is not set at that level. What applies to an event is the stricter of the organisation's and the event-owning account's (GET /ai-action-limits/resolved). Requires refundpolicies.read.

Parameters#

ParameterType
requestOptions?RequestOptions

Returns#

Promise<{ accounts: ( | { accountId: string | null; settings: { actionsEnabled: boolean | null; dailyChannelMoneyCap: number | null; dailyCustomerMoneyCap: number | null; dailyOrgMoneyCap: number | null; exchangeFeeCeiling: number | null; nameChangeApproval: "staff" | "customer_confirm" | null; refundAfterScan: "deny" | "staff_approval" | null; refundMaxPerOrder: number | null; refundsPerCustomer90d: number | null; retainTransactionFeeOnCancellation: boolean | null; }; updatedAt: string | null; updatedBy: string | null; } | null)[]; defaults: { actionsEnabled: boolean; dailyChannelMoneyCap: number; dailyCustomerMoneyCap: number; dailyOrgMoneyCap: number; exchangeFeeCeiling: number; nameChangeApproval: "staff" | "customer_confirm"; refundAfterScan: "deny" | "staff_approval"; refundMaxPerOrder: number; refundsPerCustomer90d: number; retainTransactionFeeOnCancellation: boolean; }; organisation: | { accountId: string | null; settings: { actionsEnabled: boolean | null; dailyChannelMoneyCap: number | null; dailyCustomerMoneyCap: number | null; dailyOrgMoneyCap: number | null; exchangeFeeCeiling: number | null; nameChangeApproval: "staff" | "customer_confirm" | null; refundAfterScan: "deny" | "staff_approval" | null; refundMaxPerOrder: number | null; refundsPerCustomer90d: number | null; retainTransactionFeeOnCancellation: boolean | null; }; updatedAt: string | null; updatedBy: string | null; } | null; }>

Operation Id#

listAiActionLimits

resolve()#

resolve: (options?: {
  accountId?: string;
}, requestOptions?: RequestOptions) => Promise<{
  accountId: string | null;
  source: {
   [key: string]: "account" | "organisation" | "default";
  };
  thresholds: {
     actionsEnabled: boolean;
     dailyChannelMoneyCap: number;
     dailyCustomerMoneyCap: number;
     dailyOrgMoneyCap: number;
     exchangeFeeCeiling: number;
     nameChangeApproval: "staff" | "customer_confirm";
     refundAfterScan: "deny" | "staff_approval";
     refundMaxPerOrder: number;
     refundsPerCustomer90d: number;
     retainTransactionFeeOnCancellation: boolean;
  };
}>;

Resolve the AI action limits for an account The limits the policy engine applies to an event owned by accountId: field by field, the stricter of the organisation's and the account's, else the default, with where each came from. Without accountId, the organisation's alone. Requires refundpolicies.read for that account.

Parameters#

ParameterType
options?{ accountId?: string; }
options.accountId?string
requestOptions?RequestOptions

Returns#

Promise<{ accountId: string | null; source: { [key: string]: "account" | "organisation" | "default"; }; thresholds: { actionsEnabled: boolean; dailyChannelMoneyCap: number; dailyCustomerMoneyCap: number; dailyOrgMoneyCap: number; exchangeFeeCeiling: number; nameChangeApproval: "staff" | "customer_confirm"; refundAfterScan: "deny" | "staff_approval"; refundMaxPerOrder: number; refundsPerCustomer90d: number; retainTransactionFeeOnCancellation: boolean; }; }>

Operation Id#

resolveAiActionLimits

set()#

set: (request: {
  accountId?: string | null;
  actionsEnabled?: boolean | null;
  dailyChannelMoneyCap?: number | null;
  dailyCustomerMoneyCap?: number | null;
  dailyOrgMoneyCap?: number | null;
  exchangeFeeCeiling?: number | null;
  nameChangeApproval?: "staff" | "customer_confirm" | null;
  refundAfterScan?: "deny" | "staff_approval" | null;
  refundMaxPerOrder?: number | null;
  refundsPerCustomer90d?: number | null;
  retainTransactionFeeOnCancellation?: boolean | null;
}, requestOptions?: RequestOptions) => Promise<
  | {
  accountId: string | null;
  settings: {
     actionsEnabled: boolean | null;
     dailyChannelMoneyCap: number | null;
     dailyCustomerMoneyCap: number | null;
     dailyOrgMoneyCap: number | null;
     exchangeFeeCeiling: number | null;
     nameChangeApproval: "staff" | "customer_confirm" | null;
     refundAfterScan: "deny" | "staff_approval" | null;
     refundMaxPerOrder: number | null;
     refundsPerCustomer90d: number | null;
     retainTransactionFeeOnCancellation: boolean | null;
  };
  updatedAt: string | null;
  updatedBy: string | null;
}
| null>;

Set AI action limits Set the organisation's limits (no accountId) or one account's. A field sent as null clears it at this level; a field left out is kept. Money is integer minor units of the order's currency. The stricter of the organisation's and the event-owning account's applies (decision 2); retainTransactionFeeOnCancellation is the organisation's alone (400 AI_ACTION_LIMIT_ORGANISATION_ONLY with an accountId). Needs refundpolicies.manage for the account, or on every account for the organisation's limits, as a person or an organisation API key, and the plan's Concierge AI (403 PLAN_ENTITLEMENT_REQUIRED).

Parameters#

ParameterTypeDescription
request{ accountId?: string | null; actionsEnabled?: boolean | null; dailyChannelMoneyCap?: number | null; dailyCustomerMoneyCap?: number | null; dailyOrgMoneyCap?: number | null; exchangeFeeCeiling?: number | null; nameChangeApproval?: "staff" | "customer_confirm" | null; refundAfterScan?: "deny" | "staff_approval" | null; refundMaxPerOrder?: number | null; refundsPerCustomer90d?: number | null; retainTransactionFeeOnCancellation?: boolean | null; }-
request.accountId?string | nullDescription The account to set; absent or null sets the organisation's own
request.actionsEnabled?boolean | nullDescription The kill switch: false stops every AI action (verdict deny ACTIONS_PAUSED). Null: not set at this level.
request.dailyChannelMoneyCap?number | nullDescription AI-initiated money per sales channel in 24 hours; above it, staff. Integer minor units of the order's currency. Null: not set at this level.
request.dailyCustomerMoneyCap?number | nullDescription AI-initiated money per customer in 24 hours; above it, staff. Integer minor units of the order's currency. Null: not set at this level.
request.dailyOrgMoneyCap?number | nullDescription AI-initiated money per organisation in 24 hours; above it, staff. Integer minor units of the order's currency. Null: not set at this level.
request.exchangeFeeCeiling?number | nullDescription The most an exchange may charge (recorded; exchanges are staff-driven today). Integer minor units of the order's currency. Null: not set at this level.
request.nameChangeApproval?"staff" | "customer_confirm" | nullDescription Who approves a name change once they exist: the customer confirming, or staff. Null: not set at this level.
request.refundAfterScan?"deny" | "staff_approval" | nullDescription A refund of an order with a scanned ticket: deny, or staff_approval. Null: not set at this level.
request.refundMaxPerOrder?number | nullDescription A refund above this goes to staff. Integer minor units of the order's currency. Null: not set at this level.
request.refundsPerCustomer90d?number | nullDescription Refunds a customer may have had in 90 days before the next goes to staff. Null: not set at this level.
request.retainTransactionFeeOnCancellation?boolean | nullDescription Organisation only (400 AI_ACTION_LIMIT_ORGANISATION_ONLY when sent with an accountId). A cancelled event is refunded in full, booking fees included, whatever the refund policy's retainFees says. True keeps back the order's per-order transaction fee (its fee lines charged once per order) on a cancellation; per-ticket booking fees are still refunded. Null: not set (false).
requestOptions?RequestOptions-

Returns#

Promise< | { accountId: string | null; settings: { actionsEnabled: boolean | null; dailyChannelMoneyCap: number | null; dailyCustomerMoneyCap: number | null; dailyOrgMoneyCap: number | null; exchangeFeeCeiling: number | null; nameChangeApproval: "staff" | "customer_confirm" | null; refundAfterScan: "deny" | "staff_approval" | null; refundMaxPerOrder: number | null; refundsPerCustomer90d: number | null; retainTransactionFeeOnCancellation: boolean | null; }; updatedAt: string | null; updatedBy: string | null; } | null>

Operation Id#

setAiActionLimits