// This file was auto-generated by Fern from our API Definition.

import type * as Vapi from "../index.js";

export interface Subscription {
    /** This is the unique identifier for the subscription. */
    id: string;
    /** This is the timestamp when the subscription was created. */
    createdAt: string;
    /** This is the timestamp when the subscription was last updated. */
    updatedAt: string;
    /** This is the type / tier of the subscription. */
    type: Vapi.SubscriptionType;
    /**
     * This is the status of the subscription. Past due subscriptions are subscriptions
     * with past due payments.
     */
    status: Vapi.SubscriptionStatus;
    /**
     * This is the number of credits the subscription currently has.
     *
     * Note: This is a string to avoid floating point precision issues.
     */
    credits: string;
    /** This is the total number of active calls (concurrency) across all orgs under this subscription. */
    concurrencyCounter: number;
    /** This is the default concurrency limit for the subscription. */
    concurrencyLimitIncluded: number;
    /** This is the number of free phone numbers the subscription has */
    phoneNumbersCounter?: number | undefined;
    /** This is the maximum number of free phone numbers the subscription can have */
    phoneNumbersIncluded?: number | undefined;
    /** This is the purchased add-on concurrency limit for the subscription. */
    concurrencyLimitPurchased: number;
    /** This is the ID of the monthly job that charges for subscription add ons and phone numbers. */
    monthlyChargeScheduleId?: number | undefined;
    /**
     * This is the ID of the monthly job that checks whether the credit balance of the subscription
     * is sufficient for the monthly charge.
     */
    monthlyCreditCheckScheduleId?: number | undefined;
    /** This is the Stripe customer ID. */
    stripeCustomerId?: string | undefined;
    /** This is the Stripe payment ID. */
    stripePaymentMethodId?: string | undefined;
    /** If this flag is true, then the user has purchased slack support. */
    slackSupportEnabled?: boolean | undefined;
    /** If this subscription has a slack support subscription, the slack channel's ID will be stored here. */
    slackChannelId?: string | undefined;
    /**
     * This is the HIPAA enabled flag for the subscription. It determines whether orgs under this
     * subscription have the option to enable HIPAA compliance.
     */
    hipaaEnabled?: boolean | undefined;
    /**
     * This is the ZDR enabled flag for the subscription. It determines whether orgs under this
     * subscription have the option to enable ZDR.
     */
    zdrEnabled?: boolean | undefined;
    /**
     * This is the data retention enabled flag for the subscription. It determines whether orgs under this
     * subscription have the option to enable data retention.
     */
    dataRetentionEnabled?: boolean | undefined;
    /** This is the ID for the Common Paper agreement outlining the HIPAA contract. */
    hipaaCommonPaperAgreementId?: string | undefined;
    /**
     * This is the Stripe fingerprint of the payment method (card). It allows us
     * to detect users who try to abuse our system through multiple sign-ups.
     */
    stripePaymentMethodFingerprint?: string | undefined;
    /** This is the customer's email on Stripe. */
    stripeCustomerEmail?: string | undefined;
    /** This is the email of the referrer for the subscription. */
    referredByEmail?: string | undefined;
    /** This is the auto reload plan configured for the subscription. */
    autoReloadPlan?: Vapi.AutoReloadPlan | undefined;
    /** The number of minutes included in the subscription. */
    minutesIncluded?: number | undefined;
    /** The number of minutes used in the subscription. */
    minutesUsed?: number | undefined;
    /** This is the timestamp at which the number of monthly free minutes is scheduled to reset at. */
    minutesUsedNextResetAt?: string | undefined;
    /** The per minute charge on minutes that exceed the included minutes. Enterprise only. */
    minutesOverageCost?: number | undefined;
    /** The list of providers included in the subscription. Enterprise only. */
    providersIncluded?: string[] | undefined;
    /** The maximum number of outbound calls this subscription may make in a day. Resets every night. */
    outboundCallsDailyLimit?: number | undefined;
    /** The current number of outbound calls the subscription has made in the current day. */
    outboundCallsCounter?: number | undefined;
    /** This is the timestamp at which the outbound calls counter is scheduled to reset at. */
    outboundCallsCounterNextResetAt?: string | undefined;
    /** This is the IDs of the coupons applicable to this subscription. */
    couponIds?: string[] | undefined;
    /** This is the number of credits left obtained from a coupon. */
    couponUsageLeft?: string | undefined;
    /** This is the invoice plan for the subscription. */
    invoicePlan?: Vapi.InvoicePlan | undefined;
    /**
     * This is the PCI enabled flag for the subscription. It determines whether orgs under this
     * subscription have the option to enable PCI compliance.
     */
    pciEnabled?: boolean | undefined;
    /** This is the ID for the Common Paper agreement outlining the PCI contract. */
    pciCommonPaperAgreementId?: string | undefined;
    /** This is the call retention days for the subscription. */
    callRetentionDays?: number | undefined;
    /** This is the chat retention days for the subscription. */
    chatRetentionDays?: number | undefined;
    /** This is the minutes_included reset frequency for the subscription. */
    minutesIncludedResetFrequency?: Vapi.SubscriptionMinutesIncludedResetFrequency | undefined;
    /** This is the Role Based Access Control (RBAC) enabled flag for the subscription. */
    rbacEnabled?: boolean | undefined;
    /** This is the platform fee for the subscription. */
    platformFee?: number | undefined;
}
