import { T as TDataShape, O as Options$1, C as Client, a as ClientMeta, R as RequestResult } from './types.gen-DscLbbdi.js'; type ClientOptions = { baseUrl: 'https://api.revenuecat.com/v2' | (string & {}); }; type AmazonApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'amazon'; /** * The id of the project */ project_id: string; /** * Amazon type details */ amazon: { /** * The package name of the app */ package_name: string; [key: string]: unknown; }; [key: string]: unknown; }; type AmazonAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'amazon'; /** * Amazon type details. Should only be used when type is amazon. */ amazon: { /** * The package name of the app */ package_name: string; /** * Your Amazon Developer Identity Shared Key */ shared_secret?: string; }; }; /** * The price in micros. For example, USD 1 would be represented as 1000000 */ type AmountMicros = number; type App = ({ type: 'amazon'; } & AmazonApp) | ({ type: 'app_store'; } & AppStoreApp) | ({ type: 'mac_app_store'; } & MacAppStoreApp) | ({ type: 'play_store'; } & PlayStoreApp) | ({ type: 'stripe'; } & StripeApp) | ({ type: 'rc_billing'; } & RcBillingApp) | ({ type: 'roku'; } & RokuApp) | ({ type: 'paddle'; } & PaddleApp) | ({ type: 'test_store'; } & TestStoreApp); type AppCreate = ({ type: 'amazon'; } & AmazonAppCreate) | ({ type: 'app_store'; } & AppStoreAppCreate) | ({ type: 'mac_app_store'; } & MacAppStoreAppCreate) | ({ type: 'play_store'; } & PlayStoreAppCreate) | ({ type: 'stripe'; } & StripeAppCreate) | ({ type: 'rc_billing'; } & RcBillingAppCreate) | ({ type: 'roku'; } & RokuAppCreate) | ({ type: 'paddle'; } & PaddleAppCreate); type AppStoreApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'app_store'; /** * The id of the project */ project_id: string; /** * App Store type details */ app_store: { /** * The bundle ID of the app */ bundle_id: string; /** * Whether App Store Connect API key credentials are configured. */ app_store_connect_api_key_configured: boolean; /** * Whether In-App Purchase subscription key credentials are configured. */ subscription_key_configured: boolean; /** * The custom URL scheme for the app, derived from the app's public ID. */ custom_url_scheme?: string; [key: string]: unknown; }; [key: string]: unknown; }; type AppStoreAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'app_store'; /** * App Store type details. Should only be used when type is app_store. */ app_store: { /** * The bundle ID of the app */ bundle_id: string; /** * The shared secret of the app */ shared_secret?: string; /** * PKCS /#8 In App Key downloaded from App Store Connect in PEM format. Copy the contents * of the file in this field. See instructions on how to get it in: * https://www.revenuecat.com/docs/in-app-purchase-key-configuration * */ subscription_private_key?: string; /** * In App Key id. The ID of the downloaded in app key. You can get it from App Store Connect */ subscription_key_id?: string; /** * The key Issuer id. See instructions on how to obtain this in: https://www.revenuecat.com/docs/in-app-purchase-key-configuration#3-providing-the-issuer-id-to-revenuecat */ subscription_key_issuer?: string; /** * App Store Connect API Key downloaded from App Store Connect in PEM format. Copy the contents * of the file in this field. This is optional and used for advanced features like product imports. * */ app_store_connect_api_key?: string; /** * App Store Connect API Key ID. The ID of the downloaded API key. You can get it from App Store Connect. */ app_store_connect_api_key_id?: string; /** * App Store Connect API Key Issuer ID. */ app_store_connect_api_key_issuer?: string; /** * Your vendor number from App Store Connect. Required for some features like financial reports. */ app_store_connect_vendor_number?: string; }; }; type AuditLog = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'audit_log'; id: string; /** * ID of the project to which the audit log belongs. */ project_id: string; /** * Action that was performed. */ action_type: string; /** * Type of the target on which the action was performed. */ target_type: string; /** * Identifier of the action target. */ target_identifier: string; /** * Type of actor that performed the action. */ actor_type: 'user' | 'system' | 'api_key' | 'oauth_client'; /** * Identifier of the actor that performed the action. */ actor_identifier: string; /** * Timestamp when the action occurred, in milliseconds since epoch. */ occurred_at: number; /** * Additional metadata associated with the audit log. */ additional_data: { [key: string]: unknown; }; }; type AuthenticatedManagementUrl = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'authenticated_management_url'; /** * A secure URL that provides temporary access to the subscription management portal. For RC Billing subscriptions, this is a single-use magic link to the RevenueCat customer portal. For Paddle subscriptions, this is a short-lived authenticated Paddle Customer Portal URL when the API key has the Customer portal session (Write) permission and Paddle returns the required management URLs; otherwise a non-authenticated URL (customer signs in via email) or `null` if no URL can be generated. */ management_url: string | null; }; /** * A chart annotation marking a significant event on charts. */ type ChartAnnotation = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'chart_annotation'; /** * The ID of the chart annotation. */ id: string; /** * Human-readable description of the event this annotation represents. */ description: string; /** * The start date of the annotated period (ISO 8601 date format). */ start_date: Date; /** * The end date of the annotated period (ISO 8601 date format), or null if the annotation is a single-day event. */ end_date: Date | null; }; /** * Chart data response containing time-series data and metadata */ type ChartData = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'chart_data'; /** * Category the chart belongs to */ category: string; /** * Type of chart visualization */ display_type: string; /** * Human-readable name of the chart */ display_name: string; /** * Description of what the chart shows */ description: string; /** * Link to documentation for this chart */ documentation_link?: string | null; /** * Timestamp when the chart data was last computed (ms since epoch) */ last_computed_at?: number | null; /** * Start date of the data range (ms since epoch) */ start_date?: number | null; /** * End date of the data range (ms since epoch) */ end_date?: number | null; /** * Currency used for monetary values */ yaxis_currency?: string; /** * Whether filtering is allowed for this chart */ filtering_allowed?: boolean; /** * Whether segmentation is allowed for this chart */ segmenting_allowed?: boolean; /** * Time resolution of the data points */ resolution: 'day' | 'week' | 'month' | 'quarter' | 'year'; /** * Chart data points. Structure varies by chart type - can be arrays of numbers or objects with timestamps and values. Returned as an empty array when aggregate operations are requested. */ values: Array | { [key: string]: unknown; }>; /** * Summary statistics for the chart data */ summary?: { [key: string]: unknown; } | null; /** * Y-axis configuration including unit */ yaxis: string; /** * Segment information when data is segmented */ segments?: Array<{ id?: string; display_name?: string; }> | null; /** * Maximum number of segments returned */ segments_limit?: number | null; /** * Measure definitions for the chart (v3 charts) */ measures?: Array<{ [key: string]: unknown; }> | null; /** * Currently selected values for user-configurable selectors (keyed by selector name) */ user_selectors?: { [key: string]: string; } | null; /** * Parameters that were provided but not supported */ unsupported_params?: { filters?: Array; segment?: string | null; } | null; /** * Chart annotations for the project, filtered to the chart's date window. Only present when include_annotations=true is passed in the request. */ annotations?: Array; }; /** * A filter option for a chart */ type ChartFilterOption = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'chart_filter_option'; /** * Unique identifier for the filter */ id: string; /** * Human-readable name for the filter */ display_name: string; /** * Group name for organizing filter options */ group_display_name?: string | null; /** * Available values for this filter */ options: Array<{ /** * Unique identifier for the option value */ id: string; /** * Human-readable name for the option value */ display_name: string; [key: string]: unknown; }>; [key: string]: unknown; }; /** * Available options for filtering and segmenting a chart */ type ChartOptions = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'chart_options'; /** * Available time resolutions for the chart */ resolutions: Array<{ /** * Resolution ID to use in requests */ id: string; /** * Human-readable name */ display_name: string; }>; /** * Available segmentation options */ segments: Array; /** * Available filter options */ filters: Array; /** * User-configurable selectors for the chart (keyed by selector name) */ user_selectors?: { [key: string]: { /** * Default value for the selector */ default?: string; /** * Human-readable name */ display_name?: string; options?: Array<{ id: string; display_name: string; }>; }; } | null; }; /** * A segmentation option for a chart */ type ChartSegmentOption = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'chart_segment_option'; /** * Unique identifier for the segment option */ id: string; /** * Human-readable name for the segment option */ display_name: string; /** * Group name for organizing segment options */ group_display_name?: string | null; [key: string]: unknown; }; type Collaborator = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'collaborator'; /** * The id of the collaborator */ id: string; /** * The name of the collaborator */ name?: string | null; /** * The email address of the collaborator */ email: string; /** * The role of the collaborator. The project owner is included in the list with the role `owner`. */ role: 'owner' | 'admin' | 'read_only' | 'customer_support' | 'developer' | 'growth_specialist' | 'revenuecat'; /** * The date when the collaborator accepted the invitation in ms since epoch */ accepted_at: number | null; /** * Whether the collaborator has 2FA enabled */ has_mfa: boolean; }; /** * The country that the object is associated with, in ISO alpha 2 code */ declare const Country: { readonly NULL: null; readonly AF: "AF"; readonly AL: "AL"; readonly DZ: "DZ"; readonly AS: "AS"; readonly AD: "AD"; readonly AO: "AO"; readonly AI: "AI"; readonly AQ: "AQ"; readonly AG: "AG"; readonly AR: "AR"; readonly AM: "AM"; readonly AW: "AW"; readonly AU: "AU"; readonly AT: "AT"; readonly AZ: "AZ"; readonly BS: "BS"; readonly BH: "BH"; readonly BD: "BD"; readonly BB: "BB"; readonly BY: "BY"; readonly BE: "BE"; readonly BZ: "BZ"; readonly BJ: "BJ"; readonly BM: "BM"; readonly BT: "BT"; readonly BO: "BO"; readonly BQ: "BQ"; readonly BA: "BA"; readonly BW: "BW"; readonly BV: "BV"; readonly BR: "BR"; readonly IO: "IO"; readonly BN: "BN"; readonly BG: "BG"; readonly BF: "BF"; readonly BI: "BI"; readonly CV: "CV"; readonly KH: "KH"; readonly CM: "CM"; readonly CA: "CA"; readonly KY: "KY"; readonly CF: "CF"; readonly TD: "TD"; readonly CL: "CL"; readonly CN: "CN"; readonly CX: "CX"; readonly CC: "CC"; readonly CO: "CO"; readonly KM: "KM"; readonly CD: "CD"; readonly CG: "CG"; readonly CK: "CK"; readonly CR: "CR"; readonly HR: "HR"; readonly CU: "CU"; readonly CW: "CW"; readonly CY: "CY"; readonly CZ: "CZ"; readonly CI: "CI"; readonly DK: "DK"; readonly DJ: "DJ"; readonly DM: "DM"; readonly DO: "DO"; readonly EC: "EC"; readonly EG: "EG"; readonly SV: "SV"; readonly GQ: "GQ"; readonly ER: "ER"; readonly EE: "EE"; readonly SZ: "SZ"; readonly ET: "ET"; readonly FK: "FK"; readonly FO: "FO"; readonly FJ: "FJ"; readonly FI: "FI"; readonly FR: "FR"; readonly GF: "GF"; readonly PF: "PF"; readonly TF: "TF"; readonly GA: "GA"; readonly GM: "GM"; readonly GE: "GE"; readonly DE: "DE"; readonly GH: "GH"; readonly GI: "GI"; readonly GR: "GR"; readonly GL: "GL"; readonly GD: "GD"; readonly GP: "GP"; readonly GU: "GU"; readonly GT: "GT"; readonly GG: "GG"; readonly GN: "GN"; readonly GW: "GW"; readonly GY: "GY"; readonly HT: "HT"; readonly HM: "HM"; readonly VA: "VA"; readonly HN: "HN"; readonly HK: "HK"; readonly HU: "HU"; readonly IS: "IS"; readonly IN: "IN"; readonly ID: "ID"; readonly IR: "IR"; readonly IQ: "IQ"; readonly IE: "IE"; readonly IM: "IM"; readonly IL: "IL"; readonly IT: "IT"; readonly JM: "JM"; readonly JP: "JP"; readonly JE: "JE"; readonly JO: "JO"; readonly KZ: "KZ"; readonly KE: "KE"; readonly KI: "KI"; readonly KP: "KP"; readonly KR: "KR"; readonly KW: "KW"; readonly KG: "KG"; readonly LA: "LA"; readonly LV: "LV"; readonly LB: "LB"; readonly LS: "LS"; readonly LR: "LR"; readonly LY: "LY"; readonly LI: "LI"; readonly LT: "LT"; readonly LU: "LU"; readonly MO: "MO"; readonly MG: "MG"; readonly MW: "MW"; readonly MY: "MY"; readonly MV: "MV"; readonly ML: "ML"; readonly MT: "MT"; readonly MH: "MH"; readonly MQ: "MQ"; readonly MR: "MR"; readonly MU: "MU"; readonly YT: "YT"; readonly MX: "MX"; readonly FM: "FM"; readonly MD: "MD"; readonly MC: "MC"; readonly MN: "MN"; readonly ME: "ME"; readonly MS: "MS"; readonly MA: "MA"; readonly MZ: "MZ"; readonly MM: "MM"; readonly NA: "NA"; readonly NR: "NR"; readonly NP: "NP"; readonly NL: "NL"; readonly NC: "NC"; readonly NZ: "NZ"; readonly NI: "NI"; readonly NE: "NE"; readonly NG: "NG"; readonly NU: "NU"; readonly NF: "NF"; readonly MP: "MP"; readonly NO: "NO"; readonly OM: "OM"; readonly PK: "PK"; readonly PW: "PW"; readonly PS: "PS"; readonly PA: "PA"; readonly PG: "PG"; readonly PY: "PY"; readonly PE: "PE"; readonly PH: "PH"; readonly PN: "PN"; readonly PL: "PL"; readonly PT: "PT"; readonly PR: "PR"; readonly QA: "QA"; readonly MK: "MK"; readonly RO: "RO"; readonly RU: "RU"; readonly RW: "RW"; readonly RE: "RE"; readonly BL: "BL"; readonly SH: "SH"; readonly KN: "KN"; readonly LC: "LC"; readonly MF: "MF"; readonly PM: "PM"; readonly VC: "VC"; readonly WS: "WS"; readonly SM: "SM"; readonly ST: "ST"; readonly SA: "SA"; readonly SN: "SN"; readonly RS: "RS"; readonly SC: "SC"; readonly SL: "SL"; readonly SG: "SG"; readonly SX: "SX"; readonly SK: "SK"; readonly SI: "SI"; readonly SB: "SB"; readonly SO: "SO"; readonly ZA: "ZA"; readonly GS: "GS"; readonly SS: "SS"; readonly ES: "ES"; readonly LK: "LK"; readonly SD: "SD"; readonly SR: "SR"; readonly SJ: "SJ"; readonly SE: "SE"; readonly CH: "CH"; readonly SY: "SY"; readonly TW: "TW"; readonly TJ: "TJ"; readonly TZ: "TZ"; readonly TH: "TH"; readonly TL: "TL"; readonly TG: "TG"; readonly TK: "TK"; readonly TO: "TO"; readonly TT: "TT"; readonly TN: "TN"; readonly TR: "TR"; readonly TM: "TM"; readonly TC: "TC"; readonly TV: "TV"; readonly UG: "UG"; readonly UA: "UA"; readonly AE: "AE"; readonly GB: "GB"; readonly UM: "UM"; readonly US: "US"; readonly UY: "UY"; readonly UZ: "UZ"; readonly VU: "VU"; readonly VE: "VE"; readonly VN: "VN"; readonly VG: "VG"; readonly VI: "VI"; readonly WF: "WF"; readonly EH: "EH"; readonly YE: "YE"; readonly ZM: "ZM"; readonly ZW: "ZW"; readonly AX: "AX"; }; /** * The country that the object is associated with, in ISO alpha 2 code */ type Country = typeof Country[keyof typeof Country]; /** * In-app purchase products do not require any additional information */ type CreateAppStoreConnectInAppPurchaseInput = { [key: string]: never; }; type CreateAppStoreConnectSubscriptionInput = { /** * The subscription duration period */ duration: 'ONE_WEEK' | 'ONE_MONTH' | 'TWO_MONTHS' | 'THREE_MONTHS' | 'SIX_MONTHS' | 'ONE_YEAR'; /** * The name of the subscription group */ subscription_group_name: string; /** * The ID of the subscription group (optional) */ subscription_group_id?: string | null; }; type CreateWebhookIntegrationInput = { /** * The display name of the webhook integration */ name: string; /** * The URL RevenueCat will send webhook notifications to */ url: string; /** * Optional authorization header that will be sent with webhook notifications */ authorization_header?: string | null; /** * The environment the webhook integration is configured for */ environment?: 'production' | 'sandbox' | null; /** * Event types that will trigger the webhook */ event_types?: Array | null; /** * The ID of the app the webhook integration is scoped to */ app_id?: string | null; }; /** * ISO 4217 currency code */ declare const Currency: { readonly AED: "AED"; readonly AFN: "AFN"; readonly ALL: "ALL"; readonly AMD: "AMD"; readonly ANG: "ANG"; readonly AOA: "AOA"; readonly ARS: "ARS"; readonly AUD: "AUD"; readonly AWG: "AWG"; readonly AZN: "AZN"; readonly BAM: "BAM"; readonly BBD: "BBD"; readonly BDT: "BDT"; readonly BGN: "BGN"; readonly BHD: "BHD"; readonly BIF: "BIF"; readonly BMD: "BMD"; readonly BND: "BND"; readonly BOB: "BOB"; readonly BRL: "BRL"; readonly BSD: "BSD"; readonly BTC: "BTC"; readonly BTN: "BTN"; readonly BWP: "BWP"; readonly BYN: "BYN"; readonly BZD: "BZD"; readonly CAD: "CAD"; readonly CDF: "CDF"; readonly CHF: "CHF"; readonly CLF: "CLF"; readonly CLP: "CLP"; readonly CNH: "CNH"; readonly CNY: "CNY"; readonly COP: "COP"; readonly CRC: "CRC"; readonly CUC: "CUC"; readonly CUP: "CUP"; readonly CVE: "CVE"; readonly CZK: "CZK"; readonly DJF: "DJF"; readonly DKK: "DKK"; readonly DOP: "DOP"; readonly DZD: "DZD"; readonly EGP: "EGP"; readonly ERN: "ERN"; readonly ETB: "ETB"; readonly EUR: "EUR"; readonly FJD: "FJD"; readonly FKP: "FKP"; readonly GBP: "GBP"; readonly GEL: "GEL"; readonly GGP: "GGP"; readonly GHS: "GHS"; readonly GIP: "GIP"; readonly GMD: "GMD"; readonly GNF: "GNF"; readonly GTQ: "GTQ"; readonly GYD: "GYD"; readonly HKD: "HKD"; readonly HNL: "HNL"; readonly HRK: "HRK"; readonly HTG: "HTG"; readonly HUF: "HUF"; readonly IDR: "IDR"; readonly ILS: "ILS"; readonly IMP: "IMP"; readonly INR: "INR"; readonly IQD: "IQD"; readonly IRR: "IRR"; readonly ISK: "ISK"; readonly JEP: "JEP"; readonly JMD: "JMD"; readonly JOD: "JOD"; readonly JPY: "JPY"; readonly KES: "KES"; readonly KGS: "KGS"; readonly KHR: "KHR"; readonly KMF: "KMF"; readonly KPW: "KPW"; readonly KRW: "KRW"; readonly KWD: "KWD"; readonly KYD: "KYD"; readonly KZT: "KZT"; readonly LAK: "LAK"; readonly LBP: "LBP"; readonly LKR: "LKR"; readonly LRD: "LRD"; readonly LSL: "LSL"; readonly LYD: "LYD"; readonly MAD: "MAD"; readonly MDL: "MDL"; readonly MGA: "MGA"; readonly MKD: "MKD"; readonly MMK: "MMK"; readonly MNT: "MNT"; readonly MOP: "MOP"; readonly MRU: "MRU"; readonly MUR: "MUR"; readonly MVR: "MVR"; readonly MWK: "MWK"; readonly MXN: "MXN"; readonly MYR: "MYR"; readonly MZN: "MZN"; readonly NAD: "NAD"; readonly NGN: "NGN"; readonly NIO: "NIO"; readonly NOK: "NOK"; readonly NPR: "NPR"; readonly NZD: "NZD"; readonly OMR: "OMR"; readonly PAB: "PAB"; readonly PEN: "PEN"; readonly PGK: "PGK"; readonly PHP: "PHP"; readonly PKR: "PKR"; readonly PLN: "PLN"; readonly PYG: "PYG"; readonly QAR: "QAR"; readonly RON: "RON"; readonly RSD: "RSD"; readonly RUB: "RUB"; readonly RWF: "RWF"; readonly SAR: "SAR"; readonly SBD: "SBD"; readonly SCR: "SCR"; readonly SDG: "SDG"; readonly SEK: "SEK"; readonly SGD: "SGD"; readonly SHP: "SHP"; readonly SLL: "SLL"; readonly SOS: "SOS"; readonly SRD: "SRD"; readonly SSP: "SSP"; readonly STD: "STD"; readonly STN: "STN"; readonly SVC: "SVC"; readonly SYP: "SYP"; readonly SZL: "SZL"; readonly THB: "THB"; readonly TJS: "TJS"; readonly TMT: "TMT"; readonly TND: "TND"; readonly TOP: "TOP"; readonly TRY: "TRY"; readonly TTD: "TTD"; readonly TWD: "TWD"; readonly TZS: "TZS"; readonly UAH: "UAH"; readonly UGX: "UGX"; readonly USD: "USD"; readonly UYU: "UYU"; readonly UZS: "UZS"; readonly VEF: "VEF"; readonly VES: "VES"; readonly VND: "VND"; readonly VUV: "VUV"; readonly WST: "WST"; readonly XAF: "XAF"; readonly XAG: "XAG"; readonly XAU: "XAU"; readonly XCD: "XCD"; readonly XDR: "XDR"; readonly XOF: "XOF"; readonly XPD: "XPD"; readonly XPF: "XPF"; readonly XPT: "XPT"; readonly YER: "YER"; readonly ZAR: "ZAR"; readonly ZMW: "ZMW"; readonly ZWL: "ZWL"; }; /** * ISO 4217 currency code */ type Currency = typeof Currency[keyof typeof Currency]; type Customer = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'customer'; id: string; /** * ID of the project to which the customer belongs */ project_id: string; /** * The first time the customer was seen */ first_seen_at: number; /** * The last time the customer was seen */ last_seen_at: number | null; /** * The last app version the customer was seen on */ last_seen_app_version: string | null; /** * The last country the customer was seen in */ last_seen_country: string | null; /** * The last platform the customer was seen on */ last_seen_platform: string | null; /** * The last platform version the customer was seen on */ last_seen_platform_version: string | null; active_entitlements?: ({ [key: string]: unknown; } | null) & ListCustomerActiveEntitlements; experiment?: ExperimentEnrollment; attributes?: ({ [key: string]: unknown; } | null) & ListCustomerAttributes; }; type CustomerAlias = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'customer.alias'; id: string; /** * The time when the alias was created */ created_at: number; }; type CustomerAttribute = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'customer.attribute'; /** * The name of the attribute. Reserved attributes are prefixed with a `$`. */ name: string; /** * The value of the attribute. */ value: string | null; /** * The time when the attribute was last updated. */ updated_at: number; }; type CustomerAttributeCustomName = string; declare const CustomerAttributeReservedName: { readonly $AD: "$ad"; readonly $AD_GROUP: "$adGroup"; readonly $ADJUST_ID: "$adjustId"; readonly $AIRBRIDGE_DEVICE_ID: "$airbridgeDeviceId"; readonly $AIRSHIP_CHANNEL_ID: "$airshipChannelId"; readonly $AMAZON_AD_ID: "$amazonAdId"; readonly $AMPLITUDE_DEVICE_ID: "$amplitudeDeviceId"; readonly $AMPLITUDE_USER_ID: "$amplitudeUserId"; readonly $APPLE_REFUND_HANDLING_PREFERENCE: "$appleRefundHandlingPreference"; readonly $APPLE_ADS_AD_GROUP_ID: "$appleAdsAdGroupId"; readonly $APPLE_ADS_CAMPAIGN_ID: "$appleAdsCampaignId"; readonly $APPLE_ADS_KEYWORD_ID: "$appleAdsKeywordId"; readonly $APNS_TOKENS: "$apnsTokens"; readonly $APPSFLYER_ID: "$appsflyerId"; readonly $APPSFLYER_SHARING_FILTER: "$appsflyerSharingFilter"; readonly $ATT_CONSENT_STATUS: "$attConsentStatus"; readonly $BRANCH_ID: "$branchId"; readonly $BRAZE_ALIAS_LABEL: "$brazeAliasLabel"; readonly $BRAZE_ALIAS_NAME: "$brazeAliasName"; readonly $CAMPAIGN: "$campaign"; readonly $CLEVERTAP_ID: "$clevertapId"; readonly $CREATIVE: "$creative"; readonly $CUSTOMERIO_ID: "$customerioId"; readonly $DISPLAY_NAME: "$displayName"; readonly $EMAIL: "$email"; readonly $FB_ANON_ID: "$fbAnonId"; readonly $FCM_TOKENS: "$fcmTokens"; readonly $FIREBASE_APP_INSTANCE_ID: "$firebaseAppInstanceId"; readonly $GPS_AD_ID: "$gpsAdId"; readonly $IDFA: "$idfa"; readonly $IDFV: "$idfv"; readonly $IP: "$ip"; readonly $ITERABLE_CAMPAIGN_ID: "$iterableCampaignId"; readonly $ITERABLE_TEMPLATE_ID: "$iterableTemplateId"; readonly $ITERABLE_USER_ID: "$iterableUserId"; readonly $KEYWORD: "$keyword"; readonly $KOCHAVA_DEVICE_ID: "$kochavaDeviceId"; readonly $MEDIA_SOURCE: "$mediaSource"; readonly $MIXPANEL_DISTINCT_ID: "$mixpanelDistinctId"; readonly $MPARTICLE_ID: "$mparticleId"; readonly $ONESIGNAL_ID: "$onesignalId"; readonly $ONESIGNAL_USER_ID: "$onesignalUserId"; readonly $PHONE_NUMBER: "$phoneNumber"; readonly $POSTHOG_USER_ID: "$posthogUserId"; readonly $TELEMETRY_DECK_USER_ID: "$telemetryDeckUserId"; readonly $TELEMETRY_DECK_APP_ID: "$telemetryDeckAppId"; readonly TELEMETRY_DECK_USER_ID: "telemetry_deck_user_id"; readonly TELEMETRY_DECK_APP_ID: "telemetry_deck_app_id"; readonly $SEGMENT_ID: "$segmentId"; readonly $SOLAR_ENGINE_DISTINCT_ID: "$solarEngineDistinctId"; readonly $SOLAR_ENGINE_ACCOUNT_ID: "$solarEngineAccountId"; readonly $SOLAR_ENGINE_VISITOR_ID: "$solarEngineVisitorId"; readonly $TENJIN_ID: "$tenjinId"; readonly $DEVICE_VERSION: "$deviceVersion"; }; type CustomerAttributeReservedName = typeof CustomerAttributeReservedName[keyof typeof CustomerAttributeReservedName]; type CustomerCenterConfig = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'customer_center_config'; /** * The Customer Center configuration. When no platform is specified, contains the full configuration for all platforms and locales. When a platform is specified, contains the processed configuration for that platform and locale. * */ customer_center: { [key: string]: unknown; }; }; type CustomerEntitlement = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'customer.active_entitlement'; /** * ID of the entitlement granted to the customer */ entitlement_id: string; /** * The date after which the access to the entitlement expires in ms since epoch */ expires_at: number | null; }; type DeletedObject = { /** * The type of the deleted object */ object: 'app' | 'chart_annotation' | 'customer' | 'discount' | 'entitlement' | 'experiment' | 'offering' | 'package' | 'paywall' | 'product' | 'virtual_currency' | 'webhook_integration'; /** * The ID of the deleted object */ id: string; /** * The date when the object was deleted in ms since epoch */ deleted_at: number; }; /** * The duration of the product subscription. This field is only supported for the test store and it is ignored for other stores. */ declare const Duration: { readonly P1W: "P1W"; readonly P1M: "P1M"; readonly P2M: "P2M"; readonly P3M: "P3M"; readonly P6M: "P6M"; readonly P1Y: "P1Y"; }; /** * The duration of the product subscription. This field is only supported for the test store and it is ignored for other stores. */ type Duration = typeof Duration[keyof typeof Duration]; declare const EligibilityCriteria: { readonly ALL: "all"; readonly GOOGLE_SDK_LT_6: "google_sdk_lt_6"; readonly GOOGLE_SDK_GE_6: "google_sdk_ge_6"; }; type EligibilityCriteria = typeof EligibilityCriteria[keyof typeof EligibilityCriteria]; type Entitlement = { /** * Whether the entitlement is active or inactive (archived). */ state: 'active' | 'inactive'; /** * String representing the object's type. Objects of the same type share the same value. */ object: 'entitlement'; /** * ID of the project to which the entitlement belongs */ project_id: string; /** * The id of the entitlement */ id: string; /** * A custom identifier of the entitlement */ lookup_key: string; /** * The display name of the entitlement */ display_name: string; /** * The date when the entitlement was created in ms since epoch */ created_at: number; /** * ProductsList * * List of products attached to the entitlement */ products?: { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the Entitlement's products. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; } | null; }; /** * Error returned when attempting to make an entity active, but that entity references other entities that are currently inactive (archived). The `referenced_object_ids` field lists the IDs of the inactive entities that must be made active first. */ type EntityReferencesArchivedEntitiesError = Error & { type?: 'entity_references_archived_entities'; /** * The IDs of the archived (inactive) entities that need to be made active before this operation can succeed. */ referenced_object_ids: Array; }; /** * The store environment */ declare const Environment: { readonly PRODUCTION: "production"; readonly SANDBOX: "sandbox"; }; /** * The store environment */ type Environment = typeof Environment[keyof typeof Environment]; type Error = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'error'; /** * The error type */ type: 'parameter_error' | 'resource_already_exists' | 'resource_missing' | 'idempotency_error' | 'rate_limit_error' | 'authentication_error' | 'authorization_error' | 'store_error' | 'server_error' | 'resource_locked_error' | 'unprocessable_entity_error' | 'invalid_request' | 'entity_references_archived_entities'; /** * If the error is parameter-specific, the parameter related to the error */ param?: string | null; /** * A URL to more information about the error reported */ doc_url?: string; /** * A message describing the reason of the error */ message: string; /** * Indicates if the error is retryable or not */ retryable: boolean; /** * The ms the client should wait before retrying the request. Only present for retryable errors. */ backoff_ms?: number | null; /** * The IDs of related objects relevant to the error, such as the archived entities that need to be made active before the operation can succeed. */ referenced_object_ids?: Array; }; type ExperimentEnrollment = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'experiment_enrollment'; id: string; name: string; /** * The variant of the Experiment that the Customer was or is assigned to, where 'a' represents the Control, and 'b' represents the Treatment. */ variant: string; } | null; type ExtendSubscriptionByDuration = { /** * Number of days to extend the current billing period by. * For Apple Store subscriptions, the maximum allowed value is 90. * */ extend_by_days: number; /** * Reason for the extension. Required for Apple Store subscriptions; * ignored for Google Play and Web Billing subscriptions. * */ extend_reason_code?: 'undeclared' | 'customer_satisfaction' | 'other' | 'service_issue_or_outage'; }; type ExtendSubscriptionUntilDate = { /** * Absolute epoch timestamp (in milliseconds) to which the current billing * period should be extended. Must be after the subscription's current * `current_period_ends_at`. For Apple Store subscriptions, the resulting * extension cannot exceed 90 days. * */ extend_until_ms: number; /** * Reason for the extension. Required for Apple Store subscriptions; * ignored for Google Play and Web Billing subscriptions. * */ extend_reason_code?: 'undeclared' | 'customer_satisfaction' | 'other' | 'service_issue_or_outage'; }; /** * An indicative price for a product, in the default currency/country (USD / US). Uses the same price source as the get-offering-prices endpoint. */ type IndicativePrice = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'indicative_price'; currency: Currency; country: Country; amount_micros: AmountMicros; } | null; type Invoice = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'invoice'; /** * The id of the invoice */ id: string; total_amount: MonetaryAmount; /** * InvoiceLiteItemList * * List of line items that are part of the invoice. Each line item represents a product that was purchased. */ line_items: Array; /** * The date when the invoiced was issued in ms since epoch */ issued_at: number; /** * The date when the invoiced was paid in ms since epoch */ paid_at: number | null; /** * URL to download the invoice pdf */ invoice_url: string | null; }; type InvoiceLineItem = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'invoice.line_item'; /** * The product identifier */ product_identifier: string; /** * The display name of the product */ product_display_name: string | null; /** * The duration of the subscription in ISO-8601 standard */ product_duration: string | null; /** * Total purchased items */ quantity: number; unit_amount: MonetaryAmount; }; /** * AppList */ type ListApps = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's apps. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * AuditLogList */ type ListAuditLogs = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each audit log. */ items: Array; /** * URL to access the next page of the project's audit logs. If not present / null, there is no next page. */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CollaboratorList */ type ListCollaborators = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's collaborators. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CustomerActiveEntitlementList * * List of the entitlements currently active for the customer. This property is only available in the "Get a customer" endpoint. */ type ListCustomerActiveEntitlements = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's active entitlements. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CustomerAliasList */ type ListCustomerAliases = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's aliases. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CustomerAttributeList */ type ListCustomerAttributes = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's aliases. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CustomerInvoicesList */ type ListCustomerInvoices = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's invoice. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * CustomerList */ type ListCustomers = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's customers. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * EntitlementList */ type ListEntitlements = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's entitlements. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * OfferingList */ type ListOfferings = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's offerings. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * PackageList */ type ListPackages = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's packages. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * PaywallList */ type ListPaywalls = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's paywalls. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * ProductList */ type ListProducts = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's products. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * ProjectList */ type ListProjects = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the projects. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * PublicApiKeyList */ type ListPublicApiKeys = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the app's public API keys. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * PurchaseList */ type ListPurchases = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's purchases. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * SubscriptionTransactionList */ type ListSubscriptionTransaction = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the projects. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * SubscriptionList */ type ListSubscriptions = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's subscriptions. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * VirtualCurrencyList */ type ListVirtualCurrencies = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the project's virtual currencies. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * VirtualCurrenciesBalancesList */ type ListVirtualCurrenciesBalances = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's balances. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * WebhookIntegrationList */ type ListWebhookIntegrations = { /** * String representing the object's type. Objects of the same type share the * same value. */ object: 'list'; /** * Webhook integrations configured for the project. */ items: Array; /** * URL to access the next page of webhook integrations. If not present / null, there is no next page */ next_page?: string | null; /** * The URL where this list can be accessed. */ url: string; }; type MacAppStoreApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'mac_app_store'; /** * The id of the project */ project_id: string; /** * Legacy Mac App Store type details */ mac_app_store: { /** * The bundle ID of the app */ bundle_id: string; /** * The custom URL scheme for the app, derived from the app's public ID. */ custom_url_scheme?: string; [key: string]: unknown; }; [key: string]: unknown; }; type MacAppStoreAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'mac_app_store'; /** * Mac App Store type details. Should only be used when type is mac_app_store. */ mac_app_store: { /** * The bundle ID of the app */ bundle_id: string; /** * The shared secret of the app */ shared_secret?: string; }; }; type MediaAsset = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'media_asset'; /** * The ID of the media asset. */ id: string; /** * The storage object name for the original asset. */ object_name: string; /** * The uploaded file name. */ original_name: string; /** * The original file size in kilobytes. */ original_size: number; /** * The original image width in pixels. */ original_width: number | null; /** * The original image height in pixels. */ original_height: number | null; /** * Rendered image formats keyed by format name. */ formats: { [key: string]: MediaAssetFormat; } | null; /** * Alt text for the asset. */ alt_text: string | null; /** * Whether this asset is decorative. */ is_decorative: boolean; /** * The base URL where asset object names can be resolved. */ asset_base_url: string | null; /** * The media asset type. */ asset_type: 'image' | 'video'; /** * Video metadata, if this is a video asset. */ video_metadata: { [key: string]: unknown; } | null; /** * The video transcoding status, if this is a video asset. */ transcoding_status: string | null; }; type MediaAssetFormat = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'media_asset_format'; /** * The storage object name for this rendered asset format. */ object_name: string; /** * The file size in kilobytes. */ size: number; /** * The image width in pixels. */ width: number | null; /** * The image height in pixels. */ height: number | null; }; type MonetaryAmount = { currency: Currency; /** * Total revenue generated (excluding taxes and commission) */ gross: number; /** * Store commission or payment processor fees deducted from gross revenue (if any) */ commission?: number; /** * Estimated taxes deducted from gross revenue */ tax: number; /** * Net revenue after store commission / fees and taxes */ proceeds: number; [key: string]: unknown; }; type Offering = { /** * Whether the offering is active or inactive (archived). Inactive offerings are not returned by the SDK. */ state: 'active' | 'inactive'; /** * String representing the object's type. Objects of the same type share the same value. */ object: 'offering'; /** * The id of the offering */ id: string; /** * A custom identifier of the entitlement */ lookup_key: string; /** * The display name of the offering */ display_name: string; /** * Indicates if the offering is the current offering */ is_current: boolean; /** * The date the offering was created at in ms since epoch */ created_at: number; /** * ID of the project to which the offering belongs */ project_id: string; metadata?: OfferingMetadata; /** * PackageList */ packages?: { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the Offering's packages. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; } | null; }; /** * Custom metadata of the offering */ type OfferingMetadata = { [key: string]: unknown; } | null; type OneTimeProduct = { /** * Indicates whether the product is consumable or not. */ is_consumable: boolean | null; [key: string]: unknown; } | null; type OverviewMetric = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'overview_metric'; /** * Id of the overview metric */ id: string; /** * Display name of the overview metric */ name: string; /** * Description of the overview metric */ description: string; /** * Unit of the overview metric */ unit: string; /** * Length of time during which metric data is collected in ISO 8601 format. Zero period means metric data was collected now */ period: 'P0D' | 'P28D'; /** * Value of the overview metric */ value: number; /** * Last time the overview metric was updated in ms since epoch */ last_updated_at: number | null; /** * Last time the overview metric was updated datetime in ISO 8601 format */ last_updated_at_iso8601: Date | null; }; type OverviewMetrics = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'overview_metrics'; /** * Details about each overview metric. */ metrics: Array; /** * The currency that monetary metric values are expressed in. Defaults to USD. When the request is authenticated with a developer JWT/OAuth token and no `currency` query parameter is provided, this reflects the developer's saved dashboard display currency. */ currency: 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'JPY' | 'BRL' | 'KRW' | 'CNY' | 'MXN' | 'SEK' | 'PLN' | 'NZD' | 'CHF'; }; declare const Ownership: { readonly PURCHASED: "purchased"; readonly FAMILY_SHARED: "family_shared"; }; type Ownership = typeof Ownership[keyof typeof Ownership]; type Package = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'package'; /** * The id of the package */ id: string; /** * The lookup_key of the package */ lookup_key: string; /** * The display name of the package */ display_name: string; /** * The position of the package within the offering */ position: number | null; /** * The date the package was created at in ms since epoch */ created_at: number; /** * ProductList */ products?: { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Product association */ items: Array; /** * URL to access the next page of the project's products. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; } | null; }; type PackageProductAssociation = { product: Product; eligibility_criteria: EligibilityCriteria; [key: string]: unknown; }; type PackageProductIdAssociation = { product_id: string; eligibility_criteria: EligibilityCriteria; }; type PaddleApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'paddle'; /** * The id of the project */ project_id: string; /** * Paddle Billing type details */ paddle: { /** * Whether the app is tied to the sandbox environment. */ paddle_is_sandbox?: boolean; /** * Paddle Server-side API key provided on the Paddle dashboard. */ paddle_api_key?: string | null; [key: string]: unknown; }; [key: string]: unknown; }; type PaddleAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'paddle'; /** * Paddle Billing details. Should only be used when type is paddle. */ paddle?: { /** * Paddle Server-side API key provided on the Paddle dashboard. */ paddle_api_key?: string | null; /** * [Deprecated] Whether the app is tied to the sandbox environment. * This field is deprecated and will be removed in the future. * The environment is determined by the `paddle_api_key` format. * */ paddle_is_sandbox?: boolean | null; } | null; }; type Paywall = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'paywall'; /** * The id of the paywall */ id: string; /** * The name of the paywall */ name: string | null; /** * The ID of the offering the paywall is for. */ offering_id: string | null; /** * The date the paywall was created at in ms since epoch */ created_at: number; /** * The date the paywall was published at in ms since epoch */ published_at: number | null; /** * Whether font sizes should automatically scale for this paywall. */ automatically_scale_font_size: boolean; offering?: Offering; components?: PaywallComponents; }; type PaywallComponents = { published: PaywallComponentsVersion; draft: PaywallComponentsVersion; }; /** * A specific version (published or draft) of a paywall's components configuration. */ type PaywallComponentsVersion = { /** * The revision number of this version. */ revision: number | null; /** * The raw, schemaless JSON payload for paywall components configuration. */ components_config: { [key: string]: unknown; } | null; /** * The default locale for the paywall. */ default_locale: string | null; /** * Localized values keyed by locale code. */ components_localizations: { [key: string]: { [key: string]: unknown; }; }; /** * Whether font sizes should automatically scale for this paywall. */ automatically_scale_font_size: boolean; /** * Font objects used by the published paywall components. Only present on published versions. */ fonts?: { [key: string]: unknown; } | null; } | null; type PaywallVersion = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'paywall_version'; /** * The id of the paywall version. */ id: string; /** * The name of the paywall version. */ name: string; /** * The paywall revision captured by this version. */ revision: number; /** * The date the paywall version was created at in ms since epoch. */ created_at: number; /** * The raw paywall components configuration captured by this version. */ components_config: { [key: string]: unknown; } | null; /** * Localized component values keyed by locale. */ components_localizations: { [key: string]: { [key: string]: unknown; }; } | null; /** * The default locale captured by this version. */ default_locale: string | null; /** * Whether font sizes should automatically scale for this paywall version. */ automatically_scale_font_size: boolean; [key: string]: unknown; }; type PlayStoreApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'play_store'; /** * The id of the project */ project_id: string; /** * Play Store type details */ play_store: { /** * The package name of the app */ package_name: string; /** * The custom URL scheme for the app, derived from the app's public ID. */ custom_url_scheme?: string; [key: string]: unknown; }; [key: string]: unknown; }; type PlayStoreAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'play_store'; /** * Play Store type details. Should only be used when type is play_store. */ play_store: { /** * The package name of the app */ package_name: string; }; }; type Product = { /** * Whether the product is active or inactive (archived). */ state: 'active' | 'inactive'; /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'product'; /** * The id of the product */ id: string; /** * The store product identifier */ store_identifier: string; type: ProductType; subscription?: SubscriptionProduct; one_time?: OneTimeProduct; /** * The date when the product was created in ms since epoch */ created_at: number; /** * The id of the app */ app_id: string; app?: App; indicative_price?: IndicativePrice; /** * The display name of the product */ display_name: string | null; }; /** * Subscription parameters for product creation. Only supported for simulated store products. */ type ProductSubscriptionInput = { duration: Duration; } | null; declare const ProductType: { readonly SUBSCRIPTION: "subscription"; readonly ONE_TIME: "one_time"; readonly CONSUMABLE: "consumable"; readonly NON_CONSUMABLE: "non_consumable"; readonly NON_RENEWING_SUBSCRIPTION: "non_renewing_subscription"; }; type ProductType = typeof ProductType[keyof typeof ProductType]; /** * ProductsFromEntitlementList */ type ProductsFromEntitlement = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the entitlement's products. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * ProductsFromPackageList */ type ProductsFromPackage = { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the entitlement's products. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; type Project = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'project'; /** * The id of the project */ id: string; /** * The name of the project */ name: string; /** * The date when the project was created in ms since epoch */ created_at: number; /** * The URL of the project's icon (small size) */ icon_url?: string | null; /** * The URL of the project's icon (large size) */ icon_url_large?: string | null; }; type ProjectCreate = { /** * The name of the project */ name: string; }; type PublicApiKey = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'public_api_key'; /** * The ID of the public API key */ id: string; /** * The value of the public API key */ key: string; /** * The environment the public API key is for */ environment: 'production' | 'sandbox'; /** * The ID of the app the public API key is for */ app_id: string; /** * The date when the public API key was created in ms since epoch */ created_at: number; }; type Purchase = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'purchase'; /** * The id of the purchase */ id: string; /** * The id of the customer */ customer_id: string; /** * The ID of the original customer */ original_customer_id: string; /** * The ID of the product that was purchased */ product_id: string; /** * The date when the purchase was made in ms since epoch */ purchased_at: number; /** * The revenue generated by the purchase in USD */ revenue_in_usd: MonetaryAmount; /** * The quantity of the product purchased in one transaction */ quantity: number; /** * The status of a purchase */ status: 'owned' | 'refunded'; /** * The ID of the offering the customer saw when they did the purchase */ presented_offering_id: string | null; /** * EntitlementList */ entitlements: { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's entitlements. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; environment: Environment; /** * Store the purchase belongs to */ store: 'amazon' | 'app_store' | 'mac_app_store' | 'play_store' | 'promotional' | 'stripe' | 'rc_billing' | 'external' | 'roku' | 'paddle' | 'paypal' | 'galaxy' | 'test_store'; /** * The store purchase identifier */ store_purchase_identifier: string; /** * Ownership of the purchase */ ownership: Ownership; country?: Country; }; type RcBillingApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'rc_billing'; /** * The id of the project */ project_id: string; /** * Revenue Cat Billing Store type details */ rc_billing: { /** * Stripe account connected to your RevenueCat account. */ stripe_account_id?: string | null; /** * The company name. This field is deprecated. Please, use `app_name` instead. * * @deprecated */ seller_company_name: string; /** * Shown in checkout, emails, and receipts sent to customers. */ app_name?: string; /** * The company support email. This field is deprecated. Please, use `support_email` instead. * * @deprecated */ seller_company_support_email?: string | null; /** * Used as the `reply to` address in all emails sent to customers, to allow them to receive support. */ support_email?: string | null; default_currency: RcBillingCurrency; [key: string]: unknown; }; [key: string]: unknown; }; type RcBillingAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'rc_billing'; /** * Revenue Cat Billing Store type details */ rc_billing?: { /** * It needs to be connected to your RevenueCat account. It can be omitted if you only have a single Stripe account connected to your RevenueCat account. */ stripe_account_id?: string | null; /** * Shown in checkout, emails, and receipts sent to customers. */ app_name: string; /** * Used as the `reply to` address in all emails sent to customers, to allow them to receive support. If you leave this field blank, your RevenueCat account email address will be used. */ support_email?: string | null; default_currency?: RcBillingCurrency; } | null; }; /** * ISO 4217 currency code */ declare const RcBillingCurrency: { readonly USD: "USD"; readonly EUR: "EUR"; readonly JPY: "JPY"; readonly GBP: "GBP"; readonly AUD: "AUD"; readonly CAD: "CAD"; readonly BRL: "BRL"; readonly KRW: "KRW"; readonly CNY: "CNY"; readonly MXN: "MXN"; readonly SEK: "SEK"; readonly PLN: "PLN"; readonly MYR: "MYR"; readonly PHP: "PHP"; readonly CHF: "CHF"; readonly SAR: "SAR"; readonly TWD: "TWD"; readonly NOK: "NOK"; readonly DKK: "DKK"; readonly THB: "THB"; readonly NZD: "NZD"; readonly SGD: "SGD"; readonly HKD: "HKD"; readonly CZK: "CZK"; readonly AED: "AED"; readonly CLP: "CLP"; readonly COP: "COP"; readonly CRC: "CRC"; readonly GEL: "GEL"; readonly HUF: "HUF"; readonly IDR: "IDR"; readonly ILS: "ILS"; readonly IQD: "IQD"; readonly JOD: "JOD"; readonly KES: "KES"; readonly KZT: "KZT"; readonly MAD: "MAD"; readonly PEN: "PEN"; readonly QAR: "QAR"; readonly RON: "RON"; readonly RSD: "RSD"; readonly TZS: "TZS"; readonly VND: "VND"; readonly ZAR: "ZAR"; readonly TRY: "TRY"; readonly UAH: "UAH"; }; /** * ISO 4217 currency code */ type RcBillingCurrency = typeof RcBillingCurrency[keyof typeof RcBillingCurrency]; type RevenueMetric = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'revenue_metric'; /** * Start date of the revenue range, inclusive (ISO 8601 format). */ start_date: Date; /** * End date of the revenue range, inclusive (ISO 8601 format). */ end_date: Date; /** * The ISO 4217 currency code that the revenue value is expressed in. */ currency: string; /** * Revenue for the date range, expressed in `currency`, for the revenue definition selected by the `revenue_type` request parameter. Two-decimal precision. */ value: number; /** * The revenue definition that `value` represents: `revenue` (gross), `revenue_net_of_taxes`, or `proceeds` (net of both taxes and store commission). Matches the `revenue_type` request parameter. */ revenue_type: 'revenue' | 'revenue_net_of_taxes' | 'proceeds'; }; type RokuApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'roku'; /** * The id of the project */ project_id: string; /** * Roku Channel Store type details */ roku: { /** * Channel ID provided on the Roku Channel page. */ roku_channel_id?: string | null; /** * Channel name that is displayed on the Roku Channel page. */ roku_channel_name?: string | null; [key: string]: unknown; }; [key: string]: unknown; }; type RokuAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'roku'; /** * Roku Channel Store details. Should only be used when type is roku. */ roku?: { /** * Roku Pay API key provided on the Roku Pay Web Services page. */ roku_api_key?: string | null; /** * Channel ID provided on the Roku Channel page. */ roku_channel_id?: string | null; /** * Channel name that is displayed on the Roku Channel page. */ roku_channel_name?: string | null; } | null; }; /** * Contents of a generated StoreKit config file for an app */ type StoreKitConfigFile = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'store_kit_config_file'; /** * Contents of the StoreKit config file */ contents: { [key: string]: unknown; }; }; type StoreProduct = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'store_product'; /** * The unique identifier of the product in the store (e.g., App Store Connect product ID) */ id: string; /** * The name of the store product */ name?: string | null; /** * The product identifier used in the store */ product_identifier: string; }; type StripeApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'stripe'; /** * The id of the project */ project_id: string; /** * Stripe type details */ stripe: { /** * Stripe account connected to your RevenueCat account. */ stripe_account_id?: string | null; [key: string]: unknown; }; [key: string]: unknown; }; type StripeAppCreate = { /** * The name of the app */ name: string; /** * The platform of the app. * Mac App Store is disabled by default. See [Legacy Mac Apps](https://www.revenuecat.com/docs/legacy-mac-apps) for more details. * */ type: 'stripe'; /** * Stripe type details. Should only be used when type is stripe. */ stripe?: { /** * It needs to be connected to your RevenueCat account. It can be omitted if you only have a single Stripe account connected to your RevenueCat account. */ stripe_account_id?: string | null; }; }; type Subscription = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'subscription'; /** * The ID of the subscription (generated by RevenueCat) */ id: string; /** * The ID of the customer */ customer_id: string; /** * The ID of the original customer. Relevant for subscriptions that were transferred from one customer to another */ original_customer_id: string; /** * The RevenueCat ID of the product that the customer is subscribed to. Exists for all store types except for promotional. */ product_id: string | null; /** * The date when the subscription originally started in ms since epoch */ starts_at: number; /** * The date when the subscription billing period started in ms since epoch */ current_period_starts_at: number; /** * The date when the subscription billing period is expected to end in ms since epoch. Can be null if the subscription is paused until an indefinite date. */ current_period_ends_at: number | null; /** * The date when the latest subscription billing period is expected to end in ms since epoch. It will only be different from `current_period_ends_at` if `auto_renewal_status` is `has_already_renewed`, in which case it indicates the end of the next billing period. Can be null if the subscription is paused until an indefinite date. */ ends_at: number | null; /** * Determines whether the customer should currently be provided access to the entitlements associated with the subscription */ gives_access: boolean; /** * Determines whether there is a pending payment associated with the subscription */ pending_payment: boolean; /** * The auto renewal status of a subscription.

Possible values:
• `will_renew`: the subscription is currently set to automatically renew
• `will_not_renew`: the subscription is currently set to expire at the end of the period
• `will_change_product`: the subscription is currently set to change product at the end of the period (which might start a new subscription)
• `will_pause`: the subscription is currently set to pause at the end of the current period
• `requires_price_increase_consent`: the subscription will expire at the end of the current period unless the customer consents to the price increase
• `has_already_renewed`: the customer has already been charged for the upcoming renewal (so the renewal will take place even if the customer opts out of auto-renewal before the end of the period) * */ auto_renewal_status: 'will_renew' | 'will_not_renew' | 'will_change_product' | 'will_pause' | 'requires_price_increase_consent' | 'has_already_renewed'; /** * The status of a subscription. Please note that additional states might be added in the future. To determine whether or not a subscription currently provides access to any associated entitlements, use the _gives_access_ field.

Possible values:
• `trialing`: the subscription is in a free trial period
• `active`: the subscription is active, in a paid period
• `expired`: the subscription is expired and no longer active
• `in_grace_period`: the subscription is past its regular expiry date and experienced a billing issue, but is currently still in an access-granting grace period
• `in_billing_retry`: the subscription has experienced a billing issue. Billing is being retried, access is suspended.-paused: the subscription is currently paused and should not provide access.
• `unknown`: the subscription is in an unknown state. Refer to the _gives_access_ field to determine whether or not to grant access.
• `incomplete`: the subscription is in an incomplete state, maybe due to incorrect billing details or because it's scheduled to start in the future. * */ status: 'trialing' | 'active' | 'expired' | 'in_grace_period' | 'in_billing_retry' | 'paused' | 'unknown' | 'incomplete'; /** * Total revenue generated by a subscription in USD */ total_revenue_in_usd: MonetaryAmount; /** * The ID of the offering the customer saw when purchasing the subscription */ presented_offering_id: string | null; /** * EntitlementList */ entitlements: { /** * String representing the object's type. Objects of the same type share the same value. Always has the value `list`. */ object: 'list'; /** * Details about each object. */ items: Array; /** * URL to access the next page of the customer's entitlements. If not present / null, there is no next page */ next_page: string | null; /** * The URL where this list can be accessed. */ url: string; }; /** * The store environment */ environment: Environment; /** * Store the subscription belongs to */ store: 'amazon' | 'app_store' | 'mac_app_store' | 'play_store' | 'promotional' | 'stripe' | 'rc_billing' | 'external' | 'roku' | 'paddle' | 'paypal' | 'galaxy' | 'test_store'; /** * The subscription identifier as per the store (e.g, for Apple App Store, the `transaction_id` of the latest transaction of the subscription, or for Google Play Store, the Order ID of the last renewal of the subscription) */ store_subscription_identifier: string; /** * Ownership of the subscription */ ownership: Ownership; /** * Expected changes to the subscription that will occur at the end of the current period. Present when the subscription has a pending product change, has already renewed for the next period, or has a failed upcoming renewal. Only fields that differ from the current subscription state are included. */ pending_changes?: { /** * The product that will be active as of the next renewal */ product?: Product | null; /** * Expected start of the next billing period in ms since epoch. Omitted when unchanged from the current subscription. */ current_period_starts_at?: number | null; /** * Expected end of the next billing period in ms since epoch. Omitted when unchanged from the current subscription. */ current_period_ends_at?: number | null; /** * Expected store subscription identifier for the next period. Omitted when unchanged from the current subscription. */ store_subscription_identifier?: string | null; /** * Expected auto renewal status for the next period. Omitted when unchanged from the current subscription. */ auto_renewal_status?: 'will_renew' | 'will_not_renew' | 'will_change_product' | 'will_pause' | 'requires_price_increase_consent' | 'has_already_renewed'; /** * Expected subscription status for the next period. Omitted when unchanged from the current subscription. */ status?: 'trialing' | 'active' | 'expired' | 'in_grace_period' | 'in_billing_retry' | 'paused' | 'unknown' | 'incomplete'; /** * Expected pending payment flag for the next period. Omitted when unchanged from the current subscription. */ pending_payment?: boolean | null; /** * Expected access flag for the next period. Omitted when unchanged from the current subscription. */ gives_access?: boolean | null; [key: string]: unknown; } | null; country?: Country; /** * The URL to manage the subscription */ management_url: string | null; }; type SubscriptionProduct = { /** * The duration of the subscription in ISO-8601 standard */ duration: string | null; /** * The duration of the subscription's grace period in ISO-8601 standard */ grace_period_duration: string | null; /** * The duration of the subscription's trial period in ISO-8601 standard */ trial_duration: string | null; [key: string]: unknown; } | null; type SubscriptionTransaction = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'subscription_transaction'; /** * The ID of the subscription transaction in the store */ id: string; /** * The date of the transaction in ms since epoch */ purchased_at: number; /** * The store identifier of the purchased product */ product_store_identifier: string; /** * The revenue generated by the transaction in the customer's purchased currency */ revenue_in_local_currency?: MonetaryAmount | null; /** * The revenue generated by the transaction in USD */ revenue_in_usd?: MonetaryAmount | null; /** * The expiration date of the transaction in ms since epoch */ expiration_date?: number | null; /** * The effective expiration date of the transaction in ms since epoch, including potential grace period */ effective_expiration_date?: number | null; }; type TestStoreApp = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'app'; /** * The id of the app */ id: string; /** * The name of the app */ name: string; /** * The date when the app was created in ms since epoch */ created_at: number; /** * The platform of the app */ type: 'test_store'; /** * The id of the project */ project_id: string; [key: string]: unknown; }; /** * TransferResult */ type Transfer = { source_customer: Customer; target_customer: Customer; [key: string]: unknown; }; type UpdateWebhookIntegrationInput = { /** * The display name of the webhook integration */ name?: string; /** * The URL RevenueCat will send webhook notifications to */ url?: string; /** * Optional authorization header that will be sent with webhook notifications */ authorization_header?: string | null; /** * The environment the webhook integration is configured for */ environment?: 'production' | 'sandbox' | null; /** * Event types that will trigger the webhook */ event_types?: Array | null; /** * The ID of the app the webhook integration is scoped to */ app_id?: string | null; }; type VirtualCurrency = { /** * Whether the virtual currency is active or inactive (archived). */ state: 'active' | 'inactive'; /** * String representing the object's type. Objects of the same type share the same value. */ object: 'virtual_currency'; /** * ID of the project to which the virtual currency belongs */ project_id: string; /** * The unique code for this virtual currency */ code: string; /** * The display name of the virtual currency */ name: string; /** * The date the virtual currency was created at in ms since epoch */ created_at: number; /** * Description of the virtual currency */ description?: string | null; /** * The grants that define how products grant this virtual currency */ product_grants?: Array | null; }; /** * VirtualCurrencyBalance */ type VirtualCurrencyBalance = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'virtual_currency_balance'; /** * The code of the virtual currency. */ currency_code: string; /** * The balance of the virtual currency. */ balance: number; /** * The description of the virtual currency. */ description?: string; /** * The name of the virtual currency. */ name?: string; }; type VirtualCurrencyProductGrant = { /** * String representing the object's type. Objects of the same type share the same value. */ object: 'virtual_currency.product_grant'; /** * The list of product IDs that grant this virtual currency */ product_ids: Array; /** * The amount of virtual currency granted */ amount: number; /** * The amount of virtual currency granted during trial period */ trial_amount: number; /** * Whether the grant expires at the end of the subscription cycle */ expire_at_cycle_end: boolean; }; type VirtualCurrencyProductGrantInput = { /** * The list of product IDs that grant this virtual currency */ product_ids: Array; /** * The amount of virtual currency granted */ amount: number; /** * The amount of virtual currency granted during trial period */ trial_amount?: number | null; /** * Whether the grant expires at the end of the subscription cycle */ expire_at_cycle_end?: boolean | null; }; /** * The type of event that triggers the webhook */ declare const WebhookEventType: { readonly INITIAL_PURCHASE: "initial_purchase"; readonly RENEWAL: "renewal"; readonly PRODUCT_CHANGE: "product_change"; readonly CANCELLATION: "cancellation"; readonly BILLING_ISSUE: "billing_issue"; readonly NON_RENEWING_PURCHASE: "non_renewing_purchase"; readonly UNCANCELLATION: "uncancellation"; readonly TRANSFER: "transfer"; readonly SUBSCRIPTION_PAUSED: "subscription_paused"; readonly EXPIRATION: "expiration"; readonly SUBSCRIPTION_EXTENDED: "subscription_extended"; readonly INVOICE_ISSUANCE: "invoice_issuance"; readonly TEMPORARY_ENTITLEMENT_GRANT: "temporary_entitlement_grant"; readonly REFUND_REVERSED: "refund_reversed"; readonly VIRTUAL_CURRENCY_TRANSACTION: "virtual_currency_transaction"; }; /** * The type of event that triggers the webhook */ type WebhookEventType = typeof WebhookEventType[keyof typeof WebhookEventType]; type WebhookIntegration = { /** * String representing the object's type. Objects of the same type share the * same value. */ object: 'webhook_integration'; /** * The ID of the webhook integration */ id: string; /** * The ID of the project the webhook integration belongs to */ project_id: string; /** * The display name of the webhook integration */ name: string; /** * The URL RevenueCat will send webhook notifications to */ url: string; /** * The environment the webhook integration is configured for. Only events for the selected environment will be sent. */ environment: 'production' | 'sandbox' | null; /** * Event types that will trigger the webhook. Only events for the selected event types will be sent. */ event_types?: Array | null; /** * The ID of the app the webhook integration is scoped to. If not provided, the webhook integration will be scoped to all apps in the project. */ app_id: string | null; /** * The plaintext HMAC signing secret. Only returned in the response to a rotate request. */ signing_secret?: string; /** * The timestamp in ms since epoch when the webhook integration was created */ created_at: number; }; type CreateMediaAssetData = { body: { /** * File name for the uploaded image. */ filename: string; /** * MIME type for the uploaded image. */ content_type: 'image/jpeg' | 'image/png' | 'image/avif' | 'image/heic' | 'image/heif' | 'image/webp'; /** * Base64-encoded image bytes. */ file_data_base64: string; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/media_assets'; }; type CreateMediaAssetErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateMediaAssetError = CreateMediaAssetErrors[keyof CreateMediaAssetErrors]; type CreateMediaAssetResponses = { /** * Success. The media asset was uploaded. */ 201: MediaAsset; }; type CreateMediaAssetResponse = CreateMediaAssetResponses[keyof CreateMediaAssetResponses]; type ListPaywallsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; /** * Specifies which fields in the response should be expanded. * Accepted values are: `items.offering` (requires `project_configuration:offerings:read` permission). */ expand?: Array<'items.offering'>; }; url: '/projects/{project_id}/paywalls'; }; type ListPaywallsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListPaywallsError = ListPaywallsErrors[keyof ListPaywallsErrors]; type ListPaywallsResponses = { /** * Success */ 200: ListPaywalls; }; type ListPaywallsResponse = ListPaywallsResponses[keyof ListPaywallsResponses]; type CreatePaywallData = { body: { /** * The ID of the offering the paywall will be created for. * */ offering_id: string; /** * Whether font sizes should automatically scale for this paywall. Defaults to true. */ automatically_scale_font_size?: boolean; } | { /** * The optional ID of the offering the paywall draft will be attached to. * */ offering_id?: string | null; /** * Optional paywall name. */ name?: string | null; /** * The raw paywall components configuration to save as the draft. */ components_config: { [key: string]: unknown; }; /** * Localized component values keyed by locale. */ components_localizations: { [key: string]: { [key: string]: unknown; }; }; /** * The default locale for this paywall. Defaults to en_US. */ default_locale?: string; /** * Whether font sizes should automatically scale for this paywall. Defaults to true. */ automatically_scale_font_size?: boolean; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/paywalls'; }; type CreatePaywallErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreatePaywallError = CreatePaywallErrors[keyof CreatePaywallErrors]; type CreatePaywallResponses = { /** * Success. The paywall was created */ 201: Paywall; }; type CreatePaywallResponse = CreatePaywallResponses[keyof CreatePaywallResponses]; type DeletePaywallData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the paywall */ paywall_id: string; }; query?: never; url: '/projects/{project_id}/paywalls/{paywall_id}'; }; type DeletePaywallErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeletePaywallError = DeletePaywallErrors[keyof DeletePaywallErrors]; type DeletePaywallResponses = { /** * Success */ 200: DeletedObject; }; type DeletePaywallResponse = DeletePaywallResponses[keyof DeletePaywallResponses]; type GetPaywallData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the paywall */ paywall_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `offering` (requires `project_configuration:offerings:read` permission), `components` (requires `project_configuration:offerings:read` permission). */ expand?: Array<'offering' | 'components'>; }; url: '/projects/{project_id}/paywalls/{paywall_id}'; }; type GetPaywallErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetPaywallError = GetPaywallErrors[keyof GetPaywallErrors]; type GetPaywallResponses = { /** * Success */ 200: Paywall; }; type GetPaywallResponse = GetPaywallResponses[keyof GetPaywallResponses]; type UpdatePaywallData = { body: { /** * The current draft revision. Used to reject stale writes. */ revision: number; /** * The raw paywall components configuration to save as the draft. */ components_config: { [key: string]: unknown; }; /** * Localized component values keyed by locale. */ components_localizations: { [key: string]: { [key: string]: unknown; }; }; /** * The default locale for this paywall. */ default_locale: string; /** * Optional paywall name. */ name?: string | null; /** * Whether font sizes should automatically scale for this paywall draft. */ automatically_scale_font_size?: boolean; }; path: { /** * ID of the project */ project_id: string; /** * ID of the paywall */ paywall_id: string; }; query?: never; url: '/projects/{project_id}/paywalls/{paywall_id}'; }; type UpdatePaywallErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdatePaywallError = UpdatePaywallErrors[keyof UpdatePaywallErrors]; type UpdatePaywallResponses = { /** * Success. The paywall draft was updated. */ 200: Paywall; }; type UpdatePaywallResponse = UpdatePaywallResponses[keyof UpdatePaywallResponses]; type CreatePaywallVersionData = { body: { /** * A human-readable name for the paywall version snapshot. */ name: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the paywall */ paywall_id: string; }; query?: never; url: '/projects/{project_id}/paywalls/{paywall_id}/versions'; }; type CreatePaywallVersionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreatePaywallVersionError = CreatePaywallVersionErrors[keyof CreatePaywallVersionErrors]; type CreatePaywallVersionResponses = { /** * Success. The paywall version was created. */ 201: PaywallVersion; }; type CreatePaywallVersionResponse = CreatePaywallVersionResponses[keyof CreatePaywallVersionResponses]; type ListAppPublicApiKeysData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the app */ app_id: string; }; query?: never; url: '/projects/{project_id}/apps/{app_id}/public_api_keys'; }; type ListAppPublicApiKeysErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListAppPublicApiKeysError = ListAppPublicApiKeysErrors[keyof ListAppPublicApiKeysErrors]; type ListAppPublicApiKeysResponses = { /** * Success */ 200: ListPublicApiKeys; }; type ListAppPublicApiKeysResponse = ListAppPublicApiKeysResponses[keyof ListAppPublicApiKeysResponses]; type ListProjectsData = { body?: never; path?: never; query?: { starting_after?: string; limit?: number; }; url: '/projects'; }; type ListProjectsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListProjectsError = ListProjectsErrors[keyof ListProjectsErrors]; type ListProjectsResponses = { /** * Success */ 200: ListProjects; }; type ListProjectsResponse = ListProjectsResponses[keyof ListProjectsResponses]; type CreateProjectData = { body: ProjectCreate; path?: never; query?: never; url: '/projects'; }; type CreateProjectErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateProjectError = CreateProjectErrors[keyof CreateProjectErrors]; type CreateProjectResponses = { /** * Success */ 200: Project; }; type CreateProjectResponse = CreateProjectResponses[keyof CreateProjectResponses]; type ListAppsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/apps'; }; type ListAppsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListAppsError = ListAppsErrors[keyof ListAppsErrors]; type ListAppsResponses = { /** * Success */ 200: ListApps; }; type ListAppsResponse = ListAppsResponses[keyof ListAppsResponses]; type CreateAppData = { body: AppCreate; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/apps'; }; type CreateAppErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateAppError = CreateAppErrors[keyof CreateAppErrors]; type CreateAppResponses = { /** * Success. The app was created */ 201: App; }; type CreateAppResponse = CreateAppResponses[keyof CreateAppResponses]; type DeleteAppData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the app */ app_id: string; }; query?: never; url: '/projects/{project_id}/apps/{app_id}'; }; type DeleteAppErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteAppError = DeleteAppErrors[keyof DeleteAppErrors]; type DeleteAppResponses = { /** * Success */ 200: DeletedObject; }; type DeleteAppResponse = DeleteAppResponses[keyof DeleteAppResponses]; type GetAppData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the app */ app_id: string; }; query?: never; url: '/projects/{project_id}/apps/{app_id}'; }; type GetAppErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetAppError = GetAppErrors[keyof GetAppErrors]; type GetAppResponses = { /** * Success */ 200: App; }; type GetAppResponse = GetAppResponses[keyof GetAppResponses]; type UpdateAppData = { body: { /** * The name of the app */ name?: string; /** * Amazon type details. Should only be used when type is amazon. */ amazon?: { /** * The package name of the app */ package_name?: string; /** * Your Amazon Developer Identity Shared Key */ shared_secret?: string | null; }; /** * App Store type details. Should only be used when type is app_store. */ app_store?: { /** * The bundle ID of the app */ bundle_id?: string; /** * The shared secret of the app */ shared_secret?: string | null; /** * PKCS */ subscription_private_key?: string; /** * In App Key id. The ID of the downloaded in app key. You can get it from App Store Connect */ subscription_key_id?: string; /** * The key Issuer id. See instructions on how to obtain this in https://www.revenuecat.com/docs/in-app-purchase-key-configuration#3-providing-the-issuer-id-to-revenuecat */ subscription_key_issuer?: string; /** * App Store Connect API Key downloaded from App Store Connect in PEM format. Copy the contents of the file in this field. This is optional and used for advanced features like product imports. */ app_store_connect_api_key?: string; /** * App Store Connect API Key ID. The ID of the downloaded API key. You can get it from App Store Connect. */ app_store_connect_api_key_id?: string; /** * App Store Connect API Key Issuer ID. */ app_store_connect_api_key_issuer?: string; /** * Your vendor number from App Store Connect. Required for some features like financial reports. */ app_store_connect_vendor_number?: string; }; /** * Legacy Mac App Store type details. Should only be used when type is mac_app_store. */ mac_app_store?: { /** * The bundle ID of the app */ bundle_id?: string; /** * The shared secret of the app */ shared_secret?: string | null; }; /** * Play Store type details. Should only be used when type is play_store. */ play_store?: { /** * The package name of the app */ package_name: string; }; /** * Stripe type details. Should only be used when type is stripe. */ stripe?: { /** * It needs to be connected to your RevenueCat account. It can be omitted if you only have a single Stripe account connected to your RevenueCat account. */ stripe_account_id?: string; }; /** * Web Billing type details. Should only be used when type is rc_billing. */ rc_billing?: { /** * It needs to be connected to your RevenueCat account. It can be omitted if you only have a single Stripe account connected to your RevenueCat account. */ stripe_account_id?: string | null; /** * Shown in checkout, emails, and receipts sent to customers. */ app_name?: string | null; /** * Used as the `reply to` address in all emails sent to customers, to allow them to receive support. If you leave this field blank, your RevenueCat account email address will be used. */ support_email?: string | null; default_currency?: RcBillingCurrency; }; /** * Roku Channel Store type details. Should only be used when type is roku. */ roku?: { /** * Roku Pay API key provided on the Roku Pay Web Services page. */ roku_api_key?: string | null; /** * Channel ID provided on the Roku Channel page. */ roku_channel_id?: string | null; /** * Channel name that is displayed on the Roku Channel page. */ roku_channel_name?: string | null; }; /** * Paddle Billing type details. Should only be used when type is paddle. */ paddle?: { /** * Paddle Server-side API key provided on the Paddle dashboard. */ paddle_api_key?: string | null; /** * Whether the app is tied to the sandbox environment. */ paddle_is_sandbox?: boolean; }; }; path: { /** * ID of the project */ project_id: string; /** * ID of the app */ app_id: string; }; query?: never; url: '/projects/{project_id}/apps/{app_id}'; }; type UpdateAppErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateAppError = UpdateAppErrors[keyof UpdateAppErrors]; type UpdateAppResponses = { /** * Success. The app was updated */ 200: App; }; type UpdateAppResponse = UpdateAppResponses[keyof UpdateAppResponses]; type GetAppStorekitConfigData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the app */ app_id: string; }; query?: never; url: '/projects/{project_id}/apps/{app_id}/store_kit_config'; }; type GetAppStorekitConfigErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetAppStorekitConfigError = GetAppStorekitConfigErrors[keyof GetAppStorekitConfigErrors]; type GetAppStorekitConfigResponses = { /** * Success */ 200: StoreKitConfigFile; }; type GetAppStorekitConfigResponse = GetAppStorekitConfigResponses[keyof GetAppStorekitConfigResponses]; type ListAuditLogsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { /** * Cursor for pagination. Returns audit logs after the specified audit log ID, using descending order by audit log ID. */ starting_after?: string; /** * Start date for the data range (ISO 8601 format) */ start_date?: Date; /** * End date for the data range (ISO 8601 format) */ end_date?: Date; limit?: number; }; url: '/projects/{project_id}/audit_logs'; }; type ListAuditLogsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListAuditLogsError = ListAuditLogsErrors[keyof ListAuditLogsErrors]; type ListAuditLogsResponses = { /** * Success */ 200: ListAuditLogs; }; type ListAuditLogsResponse = ListAuditLogsResponses[keyof ListAuditLogsResponses]; type ListCollaboratorsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/collaborators'; }; type ListCollaboratorsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCollaboratorsError = ListCollaboratorsErrors[keyof ListCollaboratorsErrors]; type ListCollaboratorsResponses = { /** * Success */ 200: ListCollaborators; }; type ListCollaboratorsResponse = ListCollaboratorsResponses[keyof ListCollaboratorsResponses]; type ListCustomersData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; /** * Search term. Currently, only searching by email is supported (searching for exact matches in the $email attribute). */ search?: string; }; url: '/projects/{project_id}/customers'; }; type ListCustomersErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCustomersError = ListCustomersErrors[keyof ListCustomersErrors]; type ListCustomersResponses = { /** * Success */ 200: ListCustomers; }; type ListCustomersResponse = ListCustomersResponses[keyof ListCustomersResponses]; type CreateCustomerData = { body: { /** * The ID of the customer */ id: string; attributes?: Array<{ /** * The name of the attribute */ name: CustomerAttributeReservedName | CustomerAttributeCustomName; /** * The value of the attribute */ value: string; }>; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/customers'; }; type CreateCustomerErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateCustomerError = CreateCustomerErrors[keyof CreateCustomerErrors]; type CreateCustomerResponses = { /** * Success. The customer was created */ 201: Customer; }; type CreateCustomerResponse = CreateCustomerResponses[keyof CreateCustomerResponses]; type DeleteCustomerData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}'; }; type DeleteCustomerErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteCustomerError = DeleteCustomerErrors[keyof DeleteCustomerErrors]; type DeleteCustomerResponses = { /** * Success */ 200: DeletedObject; /** * Accepted. The customer deletion was queued. */ 202: DeletedObject; }; type DeleteCustomerResponse = DeleteCustomerResponses[keyof DeleteCustomerResponses]; type GetCustomerData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `attributes` (requires `customer_information:customers:read` permission). */ expand?: Array<'attributes'>; }; url: '/projects/{project_id}/customers/{customer_id}'; }; type GetCustomerErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetCustomerError = GetCustomerErrors[keyof GetCustomerErrors]; type GetCustomerResponses = { /** * Success */ 200: Customer; }; type GetCustomerResponse = GetCustomerResponses[keyof GetCustomerResponses]; type GetCustomerCenterConfigData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { /** * The platform to process the Customer Center configuration for. When provided, returns the locale-selected, platform-filtered configuration the customer would see. When omitted, returns the full unprocessed configuration for all platforms. Must match a store configured on this project. * */ platform?: 'app_store' | 'play_store' | 'mac_app_store' | 'stripe' | 'amazon'; /** * BCP 47 locale string (e.g. en_US) used to select the appropriate localization when platform is provided. When omitted, the configuration's default locale is used. Has no effect if platform is not provided. * */ locale?: string; }; url: '/projects/{project_id}/customers/{customer_id}/customer_center'; }; type GetCustomerCenterConfigErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetCustomerCenterConfigError = GetCustomerCenterConfigErrors[keyof GetCustomerCenterConfigErrors]; type GetCustomerCenterConfigResponses = { /** * Success */ 200: CustomerCenterConfig; }; type GetCustomerCenterConfigResponse = GetCustomerCenterConfigResponses[keyof GetCustomerCenterConfigResponses]; type TransferCustomerDataData = { body: { /** * The ID of the customer to whom the subscriptions and one-time purchases will be transferred. */ target_customer_id: string; /** * Optional. The IDs of the apps to filter the transfer by. When specified, only purchases and subscriptions associated with these apps will be transferred. */ app_ids?: Array | null; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/actions/transfer'; }; type TransferCustomerDataErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type TransferCustomerDataError = TransferCustomerDataErrors[keyof TransferCustomerDataErrors]; type TransferCustomerDataResponses = { /** * Success */ 200: Transfer; }; type TransferCustomerDataResponse = TransferCustomerDataResponses[keyof TransferCustomerDataResponses]; type GrantCustomerEntitlementData = { body: { /** * The ID of the entitlement to grant to the customer. */ entitlement_id: string; /** * The date after which the access to the entitlement expires in ms since epoch. */ expires_at: number; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/actions/grant_entitlement'; }; type GrantCustomerEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GrantCustomerEntitlementError = GrantCustomerEntitlementErrors[keyof GrantCustomerEntitlementErrors]; type GrantCustomerEntitlementResponses = { /** * Entitlement granted successfully */ 201: Customer; }; type GrantCustomerEntitlementResponse = GrantCustomerEntitlementResponses[keyof GrantCustomerEntitlementResponses]; type RevokeCustomerGrantedEntitlementData = { body: { /** * The ID of the granted entitlement to revoke from the customer. */ entitlement_id: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/actions/revoke_granted_entitlement'; }; type RevokeCustomerGrantedEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type RevokeCustomerGrantedEntitlementError = RevokeCustomerGrantedEntitlementErrors[keyof RevokeCustomerGrantedEntitlementErrors]; type RevokeCustomerGrantedEntitlementResponses = { /** * Entitlement revoked successfully */ 200: Customer; }; type RevokeCustomerGrantedEntitlementResponse = RevokeCustomerGrantedEntitlementResponses[keyof RevokeCustomerGrantedEntitlementResponses]; type AssignCustomerOfferingData = { body: { /** * The ID of the offering to assign to the customer. Set to null to clear any existing override. */ offering_id: string | null; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/actions/assign_offering'; }; type AssignCustomerOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type AssignCustomerOfferingError = AssignCustomerOfferingErrors[keyof AssignCustomerOfferingErrors]; type AssignCustomerOfferingResponses = { /** * Offering assigned successfully */ 200: unknown; }; type RestorePurchaseByOrderIdData = { body: { /** * The Google Play order ID to restore. */ order_id: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/actions/restore_purchase_by_order_id'; }; type RestorePurchaseByOrderIdErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type RestorePurchaseByOrderIdError = RestorePurchaseByOrderIdErrors[keyof RestorePurchaseByOrderIdErrors]; type RestorePurchaseByOrderIdResponses = { /** * Purchase restored successfully */ 200: Customer; }; type RestorePurchaseByOrderIdResponse = RestorePurchaseByOrderIdResponses[keyof RestorePurchaseByOrderIdResponses]; type ListWebhookIntegrationsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/integrations/webhooks'; }; type ListWebhookIntegrationsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListWebhookIntegrationsError = ListWebhookIntegrationsErrors[keyof ListWebhookIntegrationsErrors]; type ListWebhookIntegrationsResponses = { /** * Success */ 200: ListWebhookIntegrations; }; type ListWebhookIntegrationsResponse = ListWebhookIntegrationsResponses[keyof ListWebhookIntegrationsResponses]; type CreateWebhookIntegrationData = { body: CreateWebhookIntegrationInput; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/integrations/webhooks'; }; type CreateWebhookIntegrationErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateWebhookIntegrationError = CreateWebhookIntegrationErrors[keyof CreateWebhookIntegrationErrors]; type CreateWebhookIntegrationResponses = { /** * Webhook integration created */ 201: WebhookIntegration; }; type CreateWebhookIntegrationResponse = CreateWebhookIntegrationResponses[keyof CreateWebhookIntegrationResponses]; type DeleteWebhookIntegrationData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The ID of the webhook integration */ webhook_integration_id: string; }; query?: never; url: '/projects/{project_id}/integrations/webhooks/{webhook_integration_id}'; }; type DeleteWebhookIntegrationErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteWebhookIntegrationError = DeleteWebhookIntegrationErrors[keyof DeleteWebhookIntegrationErrors]; type DeleteWebhookIntegrationResponses = { /** * Webhook integration deleted */ 200: DeletedObject; }; type DeleteWebhookIntegrationResponse = DeleteWebhookIntegrationResponses[keyof DeleteWebhookIntegrationResponses]; type GetWebhookIntegrationData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The ID of the webhook integration */ webhook_integration_id: string; }; query?: never; url: '/projects/{project_id}/integrations/webhooks/{webhook_integration_id}'; }; type GetWebhookIntegrationErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetWebhookIntegrationError = GetWebhookIntegrationErrors[keyof GetWebhookIntegrationErrors]; type GetWebhookIntegrationResponses = { /** * Success */ 200: WebhookIntegration; }; type GetWebhookIntegrationResponse = GetWebhookIntegrationResponses[keyof GetWebhookIntegrationResponses]; type UpdateWebhookIntegrationData = { body: UpdateWebhookIntegrationInput; path: { /** * ID of the project */ project_id: string; /** * The ID of the webhook integration */ webhook_integration_id: string; }; query?: never; url: '/projects/{project_id}/integrations/webhooks/{webhook_integration_id}'; }; type UpdateWebhookIntegrationErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateWebhookIntegrationError = UpdateWebhookIntegrationErrors[keyof UpdateWebhookIntegrationErrors]; type UpdateWebhookIntegrationResponses = { /** * Webhook integration updated */ 200: WebhookIntegration; }; type UpdateWebhookIntegrationResponse = UpdateWebhookIntegrationResponses[keyof UpdateWebhookIntegrationResponses]; type DeleteProductData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}'; }; type DeleteProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteProductError = DeleteProductErrors[keyof DeleteProductErrors]; type DeleteProductResponses = { /** * Success */ 200: DeletedObject; }; type DeleteProductResponse = DeleteProductResponses[keyof DeleteProductResponses]; type GetProductData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `app` (requires `project_configuration:apps:read` permission). */ expand?: Array<'app'>; }; url: '/projects/{project_id}/products/{product_id}'; }; type GetProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetProductError = GetProductErrors[keyof GetProductErrors]; type GetProductResponses = { /** * Success */ 200: Product; }; type GetProductResponse = GetProductResponses[keyof GetProductResponses]; type UpdateProductData = { body: { /** * The display name of the product */ display_name?: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * */ expand?: Array; }; url: '/projects/{project_id}/products/{product_id}'; }; type UpdateProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateProductError = UpdateProductErrors[keyof UpdateProductErrors]; type UpdateProductResponses = { /** * Success. The product was updated */ 200: Product; }; type UpdateProductResponse = UpdateProductResponses[keyof UpdateProductResponses]; type ArchiveProductData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/actions/archive'; }; type ArchiveProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ArchiveProductError = ArchiveProductErrors[keyof ArchiveProductErrors]; type ArchiveProductResponses = { /** * Success. The product was archived */ 200: Product; }; type ArchiveProductResponse = ArchiveProductResponses[keyof ArchiveProductResponses]; type UnarchiveProductData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/actions/unarchive'; }; type UnarchiveProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UnarchiveProductError = UnarchiveProductErrors[keyof UnarchiveProductErrors]; type UnarchiveProductResponses = { /** * Success. The product was unarchived */ 200: Product; }; type UnarchiveProductResponse = UnarchiveProductResponses[keyof UnarchiveProductResponses]; type CreateProductInStoreData = { /** * Store-specific information. Only required for subscription products. * For in-app purchase products, send an empty body or omit the request body entirely. * */ body?: { /** * Store-specific information for creating the product in the store */ store_information?: CreateAppStoreConnectSubscriptionInput | CreateAppStoreConnectInAppPurchaseInput; }; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/create_in_store'; }; type CreateProductInStoreErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateProductInStoreError = CreateProductInStoreErrors[keyof CreateProductInStoreErrors]; type CreateProductInStoreResponses = { /** * Success. The product was pushed to the store */ 201: { created_product: StoreProduct; }; }; type CreateProductInStoreResponse = CreateProductInStoreResponses[keyof CreateProductInStoreResponses]; type ListProductsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { /** * This is an optional query parameter to get a list of products of a given entitlement associated with a particular app */ app_id?: string; starting_after?: string; limit?: number; /** * Specifies which fields in the response should be expanded. * Accepted values are: `items.app` (requires `project_configuration:apps:read` permission). */ expand?: Array<'items.app'>; }; url: '/projects/{project_id}/products'; }; type ListProductsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListProductsError = ListProductsErrors[keyof ListProductsErrors]; type ListProductsResponses = { /** * Success */ 200: ListProducts; }; type ListProductsResponse = ListProductsResponses[keyof ListProductsResponses]; type CreateProductData = { body: { /** * The store identifier of the product. * - For Apple App Store products this is the product ID of the subscription or in-app product. * - For Google's Play Store, it should follow the format 'productId:basePlanId' for subscription products and SKU for one-time purchase products. * - For Stripe, the product identifier that always starts with "prod_" * - For Amazon, if it's a subscription, the term SKU of the subscription. If it's a one-time purchase, the SKU of the product. * - For Roku, this is the product identifier of the subscription or one-time purchase product. * */ store_identifier: string; /** * The ID of the app */ app_id: string; type: ProductType; /** * The display name of the product */ display_name?: string | null; subscription?: ProductSubscriptionInput; /** * The user-facing title of the product. This field is required for Test Store products. */ title?: string | null; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/products'; }; type CreateProductErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateProductError = CreateProductErrors[keyof CreateProductErrors]; type CreateProductResponses = { /** * Success. The product was created */ 201: Product; }; type CreateProductResponse = CreateProductResponses[keyof CreateProductResponses]; type ListVirtualCurrenciesData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/virtual_currencies'; }; type ListVirtualCurrenciesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListVirtualCurrenciesError = ListVirtualCurrenciesErrors[keyof ListVirtualCurrenciesErrors]; type ListVirtualCurrenciesResponses = { /** * Success */ 200: ListVirtualCurrencies; }; type ListVirtualCurrenciesResponse = ListVirtualCurrenciesResponses[keyof ListVirtualCurrenciesResponses]; type CreateVirtualCurrencyData = { body: { /** * The unique code for this virtual currency */ code: string; /** * The display name of the virtual currency */ name: string; /** * Description of the virtual currency */ description?: string | null; /** * Product grants that define how products grant this virtual currency */ product_grants?: Array | null; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies'; }; type CreateVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateVirtualCurrencyError = CreateVirtualCurrencyErrors[keyof CreateVirtualCurrencyErrors]; type CreateVirtualCurrencyResponses = { /** * Success. The virtual currency was created */ 201: VirtualCurrency; }; type CreateVirtualCurrencyResponse = CreateVirtualCurrencyResponses[keyof CreateVirtualCurrencyResponses]; type DeleteVirtualCurrencyData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The virtual currency code */ virtual_currency_code: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies/{virtual_currency_code}'; }; type DeleteVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteVirtualCurrencyError = DeleteVirtualCurrencyErrors[keyof DeleteVirtualCurrencyErrors]; type DeleteVirtualCurrencyResponses = { /** * Success. The virtual currency was deleted */ 200: DeletedObject; }; type DeleteVirtualCurrencyResponse = DeleteVirtualCurrencyResponses[keyof DeleteVirtualCurrencyResponses]; type GetVirtualCurrencyData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The virtual currency code */ virtual_currency_code: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies/{virtual_currency_code}'; }; type GetVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetVirtualCurrencyError = GetVirtualCurrencyErrors[keyof GetVirtualCurrencyErrors]; type GetVirtualCurrencyResponses = { /** * Success */ 200: VirtualCurrency; }; type GetVirtualCurrencyResponse = GetVirtualCurrencyResponses[keyof GetVirtualCurrencyResponses]; type UpdateVirtualCurrencyData = { body: { /** * The display name of the virtual currency */ name?: string; /** * Description of the virtual currency */ description?: string | null; /** * Product grants that define how products grant this virtual currency */ product_grants?: Array | null; }; path: { /** * ID of the project */ project_id: string; /** * The virtual currency code */ virtual_currency_code: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies/{virtual_currency_code}'; }; type UpdateVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateVirtualCurrencyError = UpdateVirtualCurrencyErrors[keyof UpdateVirtualCurrencyErrors]; type UpdateVirtualCurrencyResponses = { /** * Success. The virtual currency was updated */ 200: VirtualCurrency; }; type UpdateVirtualCurrencyResponse = UpdateVirtualCurrencyResponses[keyof UpdateVirtualCurrencyResponses]; type ArchiveVirtualCurrencyData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The virtual currency code */ virtual_currency_code: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies/{virtual_currency_code}/actions/archive'; }; type ArchiveVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ArchiveVirtualCurrencyError = ArchiveVirtualCurrencyErrors[keyof ArchiveVirtualCurrencyErrors]; type ArchiveVirtualCurrencyResponses = { /** * Success. The virtual currency was archived */ 200: VirtualCurrency; }; type ArchiveVirtualCurrencyResponse = ArchiveVirtualCurrencyResponses[keyof ArchiveVirtualCurrencyResponses]; type UnarchiveVirtualCurrencyData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * The virtual currency code */ virtual_currency_code: string; }; query?: never; url: '/projects/{project_id}/virtual_currencies/{virtual_currency_code}/actions/unarchive'; }; type UnarchiveVirtualCurrencyErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UnarchiveVirtualCurrencyError = UnarchiveVirtualCurrencyErrors[keyof UnarchiveVirtualCurrencyErrors]; type UnarchiveVirtualCurrencyResponses = { /** * Success. The virtual currency was unarchived */ 200: VirtualCurrency; }; type UnarchiveVirtualCurrencyResponse = UnarchiveVirtualCurrencyResponses[keyof UnarchiveVirtualCurrencyResponses]; type DeleteEntitlementData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}'; }; type DeleteEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteEntitlementError = DeleteEntitlementErrors[keyof DeleteEntitlementErrors]; type DeleteEntitlementResponses = { /** * Success */ 200: DeletedObject; }; type DeleteEntitlementResponse = DeleteEntitlementResponses[keyof DeleteEntitlementResponses]; type GetEntitlementData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `product` (requires `project_configuration:products:read` permission). */ expand?: Array<'product'>; }; url: '/projects/{project_id}/entitlements/{entitlement_id}'; }; type GetEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetEntitlementError = GetEntitlementErrors[keyof GetEntitlementErrors]; type GetEntitlementResponses = { /** * Success */ 200: Entitlement; }; type GetEntitlementResponse = GetEntitlementResponses[keyof GetEntitlementResponses]; type UpdateEntitlementData = { body: { /** * The display name of the entitlement */ display_name: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}'; }; type UpdateEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateEntitlementError = UpdateEntitlementErrors[keyof UpdateEntitlementErrors]; type UpdateEntitlementResponses = { /** * Success. The entitlement was updated */ 200: Entitlement; }; type UpdateEntitlementResponse = UpdateEntitlementResponses[keyof UpdateEntitlementResponses]; type ListEntitlementsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; /** * Specifies which fields in the response should be expanded. * Accepted values are: `items.product` (requires `project_configuration:products:read` permission). */ expand?: Array<'items.product'>; }; url: '/projects/{project_id}/entitlements'; }; type ListEntitlementsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListEntitlementsError = ListEntitlementsErrors[keyof ListEntitlementsErrors]; type ListEntitlementsResponses = { /** * Success */ 200: ListEntitlements; }; type ListEntitlementsResponse = ListEntitlementsResponses[keyof ListEntitlementsResponses]; type CreateEntitlementData = { body: { /** * The identifier of the entitlement */ lookup_key: string; /** * The display name of the entitlement */ display_name: string; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/entitlements'; }; type CreateEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateEntitlementError = CreateEntitlementErrors[keyof CreateEntitlementErrors]; type CreateEntitlementResponses = { /** * Success. The entitlement was created */ 201: Entitlement; }; type CreateEntitlementResponse = CreateEntitlementResponses[keyof CreateEntitlementResponses]; type GetProductsFromEntitlementData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/entitlements/{entitlement_id}/products'; }; type GetProductsFromEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetProductsFromEntitlementError = GetProductsFromEntitlementErrors[keyof GetProductsFromEntitlementErrors]; type GetProductsFromEntitlementResponses = { /** * Success */ 200: ProductsFromEntitlement; }; type GetProductsFromEntitlementResponse = GetProductsFromEntitlementResponses[keyof GetProductsFromEntitlementResponses]; type ArchiveEntitlementData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}/actions/archive'; }; type ArchiveEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ArchiveEntitlementError = ArchiveEntitlementErrors[keyof ArchiveEntitlementErrors]; type ArchiveEntitlementResponses = { /** * Success. The entitlement was archived */ 200: Entitlement; }; type ArchiveEntitlementResponse = ArchiveEntitlementResponses[keyof ArchiveEntitlementResponses]; type UnarchiveEntitlementData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}/actions/unarchive'; }; type UnarchiveEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UnarchiveEntitlementError = UnarchiveEntitlementErrors[keyof UnarchiveEntitlementErrors]; type UnarchiveEntitlementResponses = { /** * Success. The entitlement was unarchived */ 200: Entitlement; }; type UnarchiveEntitlementResponse = UnarchiveEntitlementResponses[keyof UnarchiveEntitlementResponses]; type AttachProductsToEntitlementData = { body: { /** * IDs of the products to be attached to the entitlement. */ product_ids: Array; }; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}/actions/attach_products'; }; type AttachProductsToEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type AttachProductsToEntitlementError = AttachProductsToEntitlementErrors[keyof AttachProductsToEntitlementErrors]; type AttachProductsToEntitlementResponses = { /** * Success. The products were attached to the entitlement */ 200: Entitlement; }; type AttachProductsToEntitlementResponse = AttachProductsToEntitlementResponses[keyof AttachProductsToEntitlementResponses]; type DetachProductsFromEntitlementData = { body: { /** * IDs of the products to be detached from the entitlement. */ product_ids: Array; }; path: { /** * ID of the project */ project_id: string; /** * ID of the entitlement */ entitlement_id: string; }; query?: never; url: '/projects/{project_id}/entitlements/{entitlement_id}/actions/detach_products'; }; type DetachProductsFromEntitlementErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DetachProductsFromEntitlementError = DetachProductsFromEntitlementErrors[keyof DetachProductsFromEntitlementErrors]; type DetachProductsFromEntitlementResponses = { /** * Success. The products were detached from the entitlement */ 200: Entitlement; }; type DetachProductsFromEntitlementResponse = DetachProductsFromEntitlementResponses[keyof DetachProductsFromEntitlementResponses]; type DeleteOfferingData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: never; url: '/projects/{project_id}/offerings/{offering_id}'; }; type DeleteOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeleteOfferingError = DeleteOfferingErrors[keyof DeleteOfferingErrors]; type DeleteOfferingResponses = { /** * Success */ 200: DeletedObject; }; type DeleteOfferingResponse = DeleteOfferingResponses[keyof DeleteOfferingResponses]; type GetOfferingData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `package` (requires `project_configuration:packages:read` permission), `package.product` (requires `project_configuration:products:read` permission). */ expand?: Array<'package' | 'package.product'>; }; url: '/projects/{project_id}/offerings/{offering_id}'; }; type GetOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetOfferingError = GetOfferingErrors[keyof GetOfferingErrors]; type GetOfferingResponses = { /** * Success */ 200: Offering; }; type GetOfferingResponse = GetOfferingResponses[keyof GetOfferingResponses]; type UpdateOfferingData = { body: { /** * The display name of the offering */ display_name?: string; /** * Indicates if the offering is the current offering */ is_current?: boolean; metadata?: OfferingMetadata; }; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: never; url: '/projects/{project_id}/offerings/{offering_id}'; }; type UpdateOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateOfferingError = UpdateOfferingErrors[keyof UpdateOfferingErrors]; type UpdateOfferingResponses = { /** * Success. The offering was updated */ 200: Offering; }; type UpdateOfferingResponse = UpdateOfferingResponses[keyof UpdateOfferingResponses]; type ArchiveOfferingData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: never; url: '/projects/{project_id}/offerings/{offering_id}/actions/archive'; }; type ArchiveOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ArchiveOfferingError = ArchiveOfferingErrors[keyof ArchiveOfferingErrors]; type ArchiveOfferingResponses = { /** * Success. The offering was archived */ 200: Offering; }; type ArchiveOfferingResponse = ArchiveOfferingResponses[keyof ArchiveOfferingResponses]; type UnarchiveOfferingData = { body?: { /** * If true, also unarchive any archived products referenced by this offering's packages. */ unarchive_referenced_entities?: boolean; }; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: never; url: '/projects/{project_id}/offerings/{offering_id}/actions/unarchive'; }; type UnarchiveOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UnarchiveOfferingError = UnarchiveOfferingErrors[keyof UnarchiveOfferingErrors]; type UnarchiveOfferingResponses = { /** * Success. The offering was unarchived */ 200: Offering; }; type UnarchiveOfferingResponse = UnarchiveOfferingResponses[keyof UnarchiveOfferingResponses]; type ListOfferingsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { starting_after?: string; limit?: number; /** * Specifies which fields in the response should be expanded. * Accepted values are: `items.package` (requires `project_configuration:packages:read` permission), `items.package.product` (requires `project_configuration:products:read` permission). */ expand?: Array<'items.package' | 'items.package.product'>; }; url: '/projects/{project_id}/offerings'; }; type ListOfferingsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListOfferingsError = ListOfferingsErrors[keyof ListOfferingsErrors]; type ListOfferingsResponses = { /** * Success */ 200: ListOfferings; }; type ListOfferingsResponse = ListOfferingsResponses[keyof ListOfferingsResponses]; type CreateOfferingData = { body: { /** * The custom identifier of the offering */ lookup_key: string; /** * The display_name of the offering */ display_name: string; metadata?: OfferingMetadata; }; path: { /** * ID of the project */ project_id: string; }; query?: never; url: '/projects/{project_id}/offerings'; }; type CreateOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateOfferingError = CreateOfferingErrors[keyof CreateOfferingErrors]; type CreateOfferingResponses = { /** * Success. The offering was created */ 201: Offering; }; type CreateOfferingResponse = CreateOfferingResponses[keyof CreateOfferingResponses]; type DeletePackageFromOfferingData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: never; url: '/projects/{project_id}/packages/{package_id}'; }; type DeletePackageFromOfferingErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DeletePackageFromOfferingError = DeletePackageFromOfferingErrors[keyof DeletePackageFromOfferingErrors]; type DeletePackageFromOfferingResponses = { /** * Success */ 200: DeletedObject; }; type DeletePackageFromOfferingResponse = DeletePackageFromOfferingResponses[keyof DeletePackageFromOfferingResponses]; type GetPackageData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: { /** * Specifies which fields in the response should be expanded. * Accepted values are: `product` (requires `project_configuration:products:read` permission). */ expand?: Array<'product'>; }; url: '/projects/{project_id}/packages/{package_id}'; }; type GetPackageErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetPackageError = GetPackageErrors[keyof GetPackageErrors]; type GetPackageResponses = { /** * Success */ 200: Package; }; type GetPackageResponse = GetPackageResponses[keyof GetPackageResponses]; type UpdatePackageData = { body: { /** * The display name of the package */ display_name?: string; /** * The position of the package within the offering */ position?: number; }; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: never; url: '/projects/{project_id}/packages/{package_id}'; }; type UpdatePackageErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdatePackageError = UpdatePackageErrors[keyof UpdatePackageErrors]; type UpdatePackageResponses = { /** * Success. The package was updated */ 200: Package; }; type UpdatePackageResponse = UpdatePackageResponses[keyof UpdatePackageResponses]; type ListPackagesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: { starting_after?: string; limit?: number; /** * Specifies which fields in the response should be expanded. * Accepted values are: `items.product` (requires `project_configuration:products:read` permission). */ expand?: Array<'items.product'>; }; url: '/projects/{project_id}/offerings/{offering_id}/packages'; }; type ListPackagesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListPackagesError = ListPackagesErrors[keyof ListPackagesErrors]; type ListPackagesResponses = { /** * Success */ 200: ListPackages; }; type ListPackagesResponse = ListPackagesResponses[keyof ListPackagesResponses]; type CreatePackagesData = { body: { /** * The lookup_key of the package */ lookup_key: string; /** * The display name of the package */ display_name: string; /** * The position of the package in the offering */ position?: number; }; path: { /** * ID of the project */ project_id: string; /** * ID of the offering */ offering_id: string; }; query?: never; url: '/projects/{project_id}/offerings/{offering_id}/packages'; }; type CreatePackagesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreatePackagesError = CreatePackagesErrors[keyof CreatePackagesErrors]; type CreatePackagesResponses = { /** * Success. The package was created */ 201: Package; }; type CreatePackagesResponse = CreatePackagesResponses[keyof CreatePackagesResponses]; type GetProductsFromPackageData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/packages/{package_id}/products'; }; type GetProductsFromPackageErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetProductsFromPackageError = GetProductsFromPackageErrors[keyof GetProductsFromPackageErrors]; type GetProductsFromPackageResponses = { /** * Success */ 200: ProductsFromPackage; }; type GetProductsFromPackageResponse = GetProductsFromPackageResponses[keyof GetProductsFromPackageResponses]; type AttachProductsToPackageData = { body: { /** * Product association list */ products: Array; }; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: never; url: '/projects/{project_id}/packages/{package_id}/actions/attach_products'; }; type AttachProductsToPackageErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type AttachProductsToPackageError = AttachProductsToPackageErrors[keyof AttachProductsToPackageErrors]; type AttachProductsToPackageResponses = { /** * Success. The products were attached to the package. */ 200: Package; }; type AttachProductsToPackageResponse = AttachProductsToPackageResponses[keyof AttachProductsToPackageResponses]; type DetachProductsFromPackageData = { body: { /** * IDs of the products to detach from the package */ product_ids: Array; }; path: { /** * ID of the project */ project_id: string; /** * ID of the package */ package_id: string; }; query?: never; url: '/projects/{project_id}/packages/{package_id}/actions/detach_products'; }; type DetachProductsFromPackageErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type DetachProductsFromPackageError = DetachProductsFromPackageErrors[keyof DetachProductsFromPackageErrors]; type DetachProductsFromPackageResponses = { /** * Success */ 200: Package; }; type DetachProductsFromPackageResponse = DetachProductsFromPackageResponses[keyof DetachProductsFromPackageResponses]; type GetSubscriptionData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}'; }; type GetSubscriptionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetSubscriptionError = GetSubscriptionErrors[keyof GetSubscriptionErrors]; type GetSubscriptionResponses = { /** * Success */ 200: Subscription; }; type GetSubscriptionResponse = GetSubscriptionResponses[keyof GetSubscriptionResponses]; type GetPlayStoreOrAppStoreSubscriptionTransactionsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: { starting_after?: string; limit?: number; /** * Column to sort the result list by. */ sort?: 'id' | 'purchased_at'; /** * Sort direction for the result list. */ direction?: 'asc' | 'desc'; }; url: '/projects/{project_id}/subscriptions/{subscription_id}/transactions'; }; type GetPlayStoreOrAppStoreSubscriptionTransactionsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetPlayStoreOrAppStoreSubscriptionTransactionsError = GetPlayStoreOrAppStoreSubscriptionTransactionsErrors[keyof GetPlayStoreOrAppStoreSubscriptionTransactionsErrors]; type GetPlayStoreOrAppStoreSubscriptionTransactionsResponses = { /** * Success */ 200: ListSubscriptionTransaction; }; type GetPlayStoreOrAppStoreSubscriptionTransactionsResponse = GetPlayStoreOrAppStoreSubscriptionTransactionsResponses[keyof GetPlayStoreOrAppStoreSubscriptionTransactionsResponses]; type RefundPlayStoreOrGalaxySubscriptionTransactionData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; /** * Identifier of the transaction in the store */ transaction_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}/transactions/{transaction_id}/actions/refund'; }; type RefundPlayStoreOrGalaxySubscriptionTransactionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type RefundPlayStoreOrGalaxySubscriptionTransactionError = RefundPlayStoreOrGalaxySubscriptionTransactionErrors[keyof RefundPlayStoreOrGalaxySubscriptionTransactionErrors]; type RefundPlayStoreOrGalaxySubscriptionTransactionResponses = { /** * Success */ 200: SubscriptionTransaction; }; type RefundPlayStoreOrGalaxySubscriptionTransactionResponse = RefundPlayStoreOrGalaxySubscriptionTransactionResponses[keyof RefundPlayStoreOrGalaxySubscriptionTransactionResponses]; type ListSubscriptionEntitlementsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/subscriptions/{subscription_id}/entitlements'; }; type ListSubscriptionEntitlementsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListSubscriptionEntitlementsError = ListSubscriptionEntitlementsErrors[keyof ListSubscriptionEntitlementsErrors]; type ListSubscriptionEntitlementsResponses = { /** * Success */ 200: ListEntitlements; }; type ListSubscriptionEntitlementsResponse = ListSubscriptionEntitlementsResponses[keyof ListSubscriptionEntitlementsResponses]; type CancelSubscriptionData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}/actions/cancel'; }; type CancelSubscriptionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CancelSubscriptionError = CancelSubscriptionErrors[keyof CancelSubscriptionErrors]; type CancelSubscriptionResponses = { /** * Success. The subscription has been successfully canceled. */ 200: Subscription; }; type CancelSubscriptionResponse = CancelSubscriptionResponses[keyof CancelSubscriptionResponses]; type ExtendSubscriptionData = { body: ExtendSubscriptionByDuration | ExtendSubscriptionUntilDate; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}/actions/extend'; }; type ExtendSubscriptionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ExtendSubscriptionError = ExtendSubscriptionErrors[keyof ExtendSubscriptionErrors]; type ExtendSubscriptionResponses = { /** * Success. The subscription's current billing period has been extended. */ 200: Subscription; }; type ExtendSubscriptionResponse = ExtendSubscriptionResponses[keyof ExtendSubscriptionResponses]; type RefundSubscriptionData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}/actions/refund'; }; type RefundSubscriptionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type RefundSubscriptionError = RefundSubscriptionErrors[keyof RefundSubscriptionErrors]; type RefundSubscriptionResponses = { /** * Success. The subscription has been successfully refunded. */ 200: Subscription; }; type RefundSubscriptionResponse = RefundSubscriptionResponses[keyof RefundSubscriptionResponses]; type GetAuthorizedSubscriptionManagementUrlData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the subscription */ subscription_id: string; }; query?: never; url: '/projects/{project_id}/subscriptions/{subscription_id}/authenticated_management_url'; }; type GetAuthorizedSubscriptionManagementUrlErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Bad gateway */ 502: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetAuthorizedSubscriptionManagementUrlError = GetAuthorizedSubscriptionManagementUrlErrors[keyof GetAuthorizedSubscriptionManagementUrlErrors]; type GetAuthorizedSubscriptionManagementUrlResponses = { /** * Success */ 200: AuthenticatedManagementUrl; }; type GetAuthorizedSubscriptionManagementUrlResponse = GetAuthorizedSubscriptionManagementUrlResponses[keyof GetAuthorizedSubscriptionManagementUrlResponses]; type ListSubscriptionsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { environment?: 'sandbox' | 'production'; starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/subscriptions'; }; type ListSubscriptionsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListSubscriptionsError = ListSubscriptionsErrors[keyof ListSubscriptionsErrors]; type ListSubscriptionsResponses = { /** * Success */ 200: ListSubscriptions; }; type ListSubscriptionsResponse = ListSubscriptionsResponses[keyof ListSubscriptionsResponses]; type GetPurchaseData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the purchase */ purchase_id: string; }; query?: never; url: '/projects/{project_id}/purchases/{purchase_id}'; }; type GetPurchaseErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetPurchaseError = GetPurchaseErrors[keyof GetPurchaseErrors]; type GetPurchaseResponses = { /** * Success */ 200: Purchase; }; type GetPurchaseResponse = GetPurchaseResponses[keyof GetPurchaseResponses]; type ListPurchaseEntitlementsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the purchase */ purchase_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/purchases/{purchase_id}/entitlements'; }; type ListPurchaseEntitlementsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListPurchaseEntitlementsError = ListPurchaseEntitlementsErrors[keyof ListPurchaseEntitlementsErrors]; type ListPurchaseEntitlementsResponses = { /** * Success */ 200: ListEntitlements; }; type ListPurchaseEntitlementsResponse = ListPurchaseEntitlementsResponses[keyof ListPurchaseEntitlementsResponses]; type RefundPurchaseData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the purchase */ purchase_id: string; }; query?: never; url: '/projects/{project_id}/purchases/{purchase_id}/actions/refund'; }; type RefundPurchaseErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type RefundPurchaseError = RefundPurchaseErrors[keyof RefundPurchaseErrors]; type RefundPurchaseResponses = { /** * Success. The purchase has been successfully refunded. */ 200: Purchase; }; type RefundPurchaseResponse = RefundPurchaseResponses[keyof RefundPurchaseResponses]; type ListPurchasesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { environment?: 'sandbox' | 'production'; starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/purchases'; }; type ListPurchasesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListPurchasesError = ListPurchasesErrors[keyof ListPurchasesErrors]; type ListPurchasesResponses = { /** * Success */ 200: ListPurchases; }; type ListPurchasesResponse = ListPurchasesResponses[keyof ListPurchasesResponses]; type ListCustomerActiveEntitlementsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/active_entitlements'; }; type ListCustomerActiveEntitlementsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCustomerActiveEntitlementsError = ListCustomerActiveEntitlementsErrors[keyof ListCustomerActiveEntitlementsErrors]; type ListCustomerActiveEntitlementsResponses = { /** * Success */ 200: ListCustomerActiveEntitlements; }; type ListCustomerActiveEntitlementsResponse = ListCustomerActiveEntitlementsResponses[keyof ListCustomerActiveEntitlementsResponses]; type ListCustomerAliasesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/aliases'; }; type ListCustomerAliasesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCustomerAliasesError = ListCustomerAliasesErrors[keyof ListCustomerAliasesErrors]; type ListCustomerAliasesResponses = { /** * Success */ 200: ListCustomerAliases; }; type ListCustomerAliasesResponse = ListCustomerAliasesResponses[keyof ListCustomerAliasesResponses]; type ListVirtualCurrenciesBalancesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { include_empty_balances?: boolean; starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/virtual_currencies'; }; type ListVirtualCurrenciesBalancesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListVirtualCurrenciesBalancesError = ListVirtualCurrenciesBalancesErrors[keyof ListVirtualCurrenciesBalancesErrors]; type ListVirtualCurrenciesBalancesResponses = { /** * Success */ 200: ListVirtualCurrenciesBalances; }; type ListVirtualCurrenciesBalancesResponse = ListVirtualCurrenciesBalancesResponses[keyof ListVirtualCurrenciesBalancesResponses]; type CreateVirtualCurrenciesTransactionData = { body: { /** * The adjustments to the virtual currencies */ adjustments: { [key: string]: number; }; /** * The reference of the transaction */ reference?: string | null; }; headers?: { /** * This is an optional idempotency key to ensure exactly once execution of the request. */ 'Idempotency-Key'?: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { include_empty_balances?: boolean; }; url: '/projects/{project_id}/customers/{customer_id}/virtual_currencies/transactions'; }; type CreateVirtualCurrenciesTransactionErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type CreateVirtualCurrenciesTransactionError = CreateVirtualCurrenciesTransactionErrors[keyof CreateVirtualCurrenciesTransactionErrors]; type CreateVirtualCurrenciesTransactionResponses = { /** * Success */ 200: ListVirtualCurrenciesBalances; }; type CreateVirtualCurrenciesTransactionResponse = CreateVirtualCurrenciesTransactionResponses[keyof CreateVirtualCurrenciesTransactionResponses]; type UpdateVirtualCurrenciesBalanceData = { body: { /** * The adjustments to the virtual currencies */ adjustments: { [key: string]: number; }; /** * The reference of the transaction */ reference?: string | null; }; headers?: { /** * This is an optional idempotency key to ensure exactly once execution of the request. */ 'Idempotency-Key'?: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { include_empty_balances?: boolean; }; url: '/projects/{project_id}/customers/{customer_id}/virtual_currencies/update_balance'; }; type UpdateVirtualCurrenciesBalanceErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UpdateVirtualCurrenciesBalanceError = UpdateVirtualCurrenciesBalanceErrors[keyof UpdateVirtualCurrenciesBalanceErrors]; type UpdateVirtualCurrenciesBalanceResponses = { /** * Success */ 200: ListVirtualCurrenciesBalances; }; type UpdateVirtualCurrenciesBalanceResponse = UpdateVirtualCurrenciesBalanceResponses[keyof UpdateVirtualCurrenciesBalanceResponses]; type ListCustomerAttributesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/attributes'; }; type ListCustomerAttributesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCustomerAttributesError = ListCustomerAttributesErrors[keyof ListCustomerAttributesErrors]; type ListCustomerAttributesResponses = { /** * Success */ 200: ListCustomerAttributes; }; type ListCustomerAttributesResponse = ListCustomerAttributesResponses[keyof ListCustomerAttributesResponses]; type SetCustomerAttributesData = { body: { attributes: Array<{ /** * The name of the attribute */ name: CustomerAttributeReservedName | CustomerAttributeCustomName; /** * The value of the attribute. Use null to delete the attribute. */ value: string | null; }>; }; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/attributes'; }; type SetCustomerAttributesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type SetCustomerAttributesError = SetCustomerAttributesErrors[keyof SetCustomerAttributesErrors]; type SetCustomerAttributesResponses = { /** * Success. The customer attributes were set */ 200: ListCustomerAttributes; }; type SetCustomerAttributesResponse = SetCustomerAttributesResponses[keyof SetCustomerAttributesResponses]; type ListCustomerInvoicesData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; }; query?: { starting_after?: string; limit?: number; }; url: '/projects/{project_id}/customers/{customer_id}/invoices'; }; type ListCustomerInvoicesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type ListCustomerInvoicesError = ListCustomerInvoicesErrors[keyof ListCustomerInvoicesErrors]; type ListCustomerInvoicesResponses = { /** * Success */ 200: ListCustomerInvoices; }; type ListCustomerInvoicesResponse = ListCustomerInvoicesResponses[keyof ListCustomerInvoicesResponses]; type GetInvoiceData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the customer */ customer_id: string; /** * ID of the invoice */ invoice_id: string; }; query?: never; url: '/projects/{project_id}/customers/{customer_id}/invoices/{invoice_id}/file'; }; type GetInvoiceErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetInvoiceError = GetInvoiceErrors[keyof GetInvoiceErrors]; type GetOverviewMetricsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query?: { /** * The currency to return metrics data in */ currency?: 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'JPY' | 'BRL' | 'KRW' | 'CNY' | 'MXN' | 'SEK' | 'PLN' | 'NZD' | 'CHF'; }; url: '/projects/{project_id}/metrics/overview'; }; type GetOverviewMetricsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetOverviewMetricsError = GetOverviewMetricsErrors[keyof GetOverviewMetricsErrors]; type GetOverviewMetricsResponses = { /** * Success */ 200: OverviewMetrics; }; type GetOverviewMetricsResponse = GetOverviewMetricsResponses[keyof GetOverviewMetricsResponses]; type GetRevenueMetricData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query: { /** * Start date for the data range (ISO 8601 format) */ start_date: Date; /** * End date for the data range (ISO 8601 format) */ end_date: Date; /** * The currency to return metrics data in */ currency?: 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'JPY' | 'BRL' | 'KRW' | 'CNY' | 'MXN' | 'SEK' | 'PLN' | 'NZD' | 'CHF'; /** * Which revenue definition to return as the metric value: * - `revenue`: gross revenue. * - `revenue_net_of_taxes`: revenue with taxes subtracted. * - `proceeds`: revenue net of both taxes and store commission (the amount the * developer keeps). * */ revenue_type?: 'revenue' | 'revenue_net_of_taxes' | 'proceeds'; }; url: '/projects/{project_id}/metrics/revenue'; }; type GetRevenueMetricErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetRevenueMetricError = GetRevenueMetricErrors[keyof GetRevenueMetricErrors]; type GetRevenueMetricResponses = { /** * Success */ 200: RevenueMetric; }; type GetRevenueMetricResponse = GetRevenueMetricResponses[keyof GetRevenueMetricResponses]; type GetChartDataData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * Name of the chart to retrieve: * - actives: Active (paying) subscriptions * - actives_movement: Period-over-period delta of active (paying) subscriptions * - actives_new: New paying subscriptions, including trial conversions, resubscriptions, and product changes * - arr: Annual recurring revenue * - churn: Churn rate: active and expired subscriptions per period * - cohort_explorer: allows measuring the performance of various cohort definitions over time for revenue, retained subscriptions, and cohort LTV * - conversion_to_paying: Conversion of new customers to paying * - customers_new: Newly seen customers * - initial_conversion: Initial conversion of new customers to paying within fixed windows (0, 3, 7, 14, 30 days, and unbounded) * - ltv_per_customer: Realized LTV per customer, also known as ARPU, cohorted by first seen date * - ltv_per_paying_customer: Realized LTV per paying customer, also known as ARPPU, cohorted by first seen date * - mrr: Monthly recurring revenue * - mrr_movement: Period-over-period delta of monthly recurring revenue * - prediction_explorer: similar to cohort_explorer but including future predictions * - refund_rate: transactions per period, refunds, refund rate * - revenue: revenue (gross, net of taxes, or proceeds net of taxes and commissions) and number of transactions (subscriptions and non-subscriptions) per period * - subscription_retention: Per-period retention of paying subscriptions by duration * - subscription_status: Break down paying subscriptions, trials, MRR, ARR, or revenue by whether the subscription is set to renew, cancelled, or in billing recovery * - trials: Active trials * - trials_movement: Movement of active trials * - trials_new: New trials * - customers_active: Customers seen during the period (also known as DAU/MAU/WAU/etc.) * - trial_conversion_rate: Number of trials started in a period and ratio of them converting to paying * - non-subscription_purchases: Number of non-subscription purchases per period * */ chart_name: 'actives' | 'actives_movement' | 'actives_new' | 'arr' | 'churn' | 'cohort_explorer' | 'conversion_to_paying' | 'customers_new' | 'initial_conversion' | 'ltv_per_customer' | 'ltv_per_paying_customer' | 'mrr' | 'mrr_movement' | 'prediction_explorer' | 'refund_rate' | 'revenue' | 'subscription_retention' | 'subscription_status' | 'trials' | 'trials_movement' | 'trials_new' | 'customers_active' | 'trial_conversion_rate' | 'non-subscription_purchases'; }; query?: { /** * Whether to request real-time (v3) charts. Defaults to true. Set to false to request the v2 charts. */ realtime?: boolean; /** * JSON array of chart filters. Each filter is a ChartFilter object. */ filters?: string; /** * JSON object of chart selectors. */ selectors?: string; /** * Comma-separated aggregate operations to return in `summary` without raw `values`. * */ aggregate?: Array<'average' | 'total'>; /** * The currency to return metrics data in */ currency?: 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'JPY' | 'BRL' | 'KRW' | 'CNY' | 'MXN' | 'SEK' | 'PLN' | 'NZD' | 'CHF'; /** * Time resolution for the chart data. * Use the chart options endpoint to discover available resolutions and their IDs. * */ resolution?: string; /** * Start date for the data range (ISO 8601 format) */ start_date?: Date; /** * End date for the data range (ISO 8601 format) */ end_date?: Date; /** * Whether to expand the date range so the first period is complete (e.g. snap a weekly range back to the start of the week). Defaults to false, which only includes data from the exact start_date provided. Period labels are always aligned to period boundaries: with expand_periods=false and a mid-period start_date, the first period only aggregates data from start_date onwards and is marked as incomplete. Exception: charts of point-in-time (stock) metrics, such as active subscriptions or MRR, ignore this parameter entirely. Their values are snapshots measured exactly at each period boundary, so the first data point is always measured at the start of the period containing start_date (which can fall before start_date) and is not marked as incomplete, since a snapshot cannot be partial. */ expand_periods?: boolean; /** * Segment the data by this dimension. Use the chart options endpoint * to discover available segments for a chart. * */ segment?: string; /** * If set, limits the number of segments returned to the top N by value. * All remaining segments are aggregated into an "Other" segment. * Only applies when a segment is specified. * */ limit_num_segments?: number; /** * When true, includes chart annotations for the project in the response, filtered to the chart's date window. */ include_annotations?: boolean; }; url: '/projects/{project_id}/charts/{chart_name}'; }; type GetChartDataErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetChartDataError = GetChartDataErrors[keyof GetChartDataErrors]; type GetChartDataResponses = { /** * Chart data retrieved successfully */ 200: ChartData; }; type GetChartDataResponse = GetChartDataResponses[keyof GetChartDataResponses]; type GetChartOptionsData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * Name of the chart to retrieve: * - actives: Active (paying) subscriptions * - actives_movement: Period-over-period delta of active (paying) subscriptions * - actives_new: New paying subscriptions, including trial conversions, resubscriptions, and product changes * - arr: Annual recurring revenue * - churn: Churn rate: active and expired subscriptions per period * - cohort_explorer: allows measuring the performance of various cohort definitions over time for revenue, retained subscriptions, and cohort LTV * - conversion_to_paying: Conversion of new customers to paying * - customers_new: Newly seen customers * - initial_conversion: Initial conversion of new customers to paying within fixed windows (0, 3, 7, 14, 30 days, and unbounded) * - ltv_per_customer: Realized LTV per customer, also known as ARPU, cohorted by first seen date * - ltv_per_paying_customer: Realized LTV per paying customer, also known as ARPPU, cohorted by first seen date * - mrr: Monthly recurring revenue * - mrr_movement: Period-over-period delta of monthly recurring revenue * - prediction_explorer: similar to cohort_explorer but including future predictions * - refund_rate: transactions per period, refunds, refund rate * - revenue: revenue (gross, net of taxes, or proceeds net of taxes and commissions) and number of transactions (subscriptions and non-subscriptions) per period * - subscription_retention: Per-period retention of paying subscriptions by duration * - subscription_status: Break down paying subscriptions, trials, MRR, ARR, or revenue by whether the subscription is set to renew, cancelled, or in billing recovery * - trials: Active trials * - trials_movement: Movement of active trials * - trials_new: New trials * - customers_active: Customers seen during the period (also known as DAU/MAU/WAU/etc.) * - trial_conversion_rate: Number of trials started in a period and ratio of them converting to paying * - non-subscription_purchases: Number of non-subscription purchases per period * */ chart_name: 'actives' | 'actives_movement' | 'actives_new' | 'arr' | 'churn' | 'cohort_explorer' | 'conversion_to_paying' | 'customers_new' | 'initial_conversion' | 'ltv_per_customer' | 'ltv_per_paying_customer' | 'mrr' | 'mrr_movement' | 'prediction_explorer' | 'refund_rate' | 'revenue' | 'subscription_retention' | 'subscription_status' | 'trials' | 'trials_movement' | 'trials_new' | 'customers_active' | 'trial_conversion_rate' | 'non-subscription_purchases'; }; query?: { /** * Whether to request real-time (v3) charts. Defaults to true. Set to false to request the v2 charts. */ realtime?: boolean; }; url: '/projects/{project_id}/charts/{chart_name}/options'; }; type GetChartOptionsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetChartOptionsError = GetChartOptionsErrors[keyof GetChartOptionsErrors]; type GetChartOptionsResponses = { /** * Chart options retrieved successfully */ 200: ChartOptions; }; type GetChartOptionsResponse = GetChartOptionsResponses[keyof GetChartOptionsResponses]; type SearchSubscriptionsData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query: { /** * Store ID associated with the subscription for the current or next period. */ store_subscription_identifier: string; }; url: '/projects/{project_id}/subscriptions'; }; type SearchSubscriptionsErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type SearchSubscriptionsError = SearchSubscriptionsErrors[keyof SearchSubscriptionsErrors]; type SearchSubscriptionsResponses = { /** * Success */ 200: ListSubscriptions; }; type SearchSubscriptionsResponse = SearchSubscriptionsResponses[keyof SearchSubscriptionsResponses]; type SearchPurchasesData = { body?: never; path: { /** * ID of the project */ project_id: string; }; query: { /** * Store ID associated with the one-time purchase. */ store_purchase_identifier: string; }; url: '/projects/{project_id}/purchases'; }; type SearchPurchasesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type SearchPurchasesError = SearchPurchasesErrors[keyof SearchPurchasesErrors]; type SearchPurchasesResponses = { /** * Success */ 200: ListPurchases; }; type SearchPurchasesResponse = SearchPurchasesResponses[keyof SearchPurchasesResponses]; type GetProductStoreStateData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/store_state'; }; type GetProductStoreStateErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetProductStoreStateError = GetProductStoreStateErrors[keyof GetProductStoreStateErrors]; type GetProductStoreStateResponses = { /** * The current product store state. */ 200: { /** * The RevenueCat project identifier. */ project_id: string; /** * The RevenueCat product identifier. */ product_id: string; /** * The store this state was read from. */ store: 'app_store' | 'play_store'; /** * Optional guidance for follow-up actions. */ warnings?: Array; /** * Current normalized product status and raw store status returned by the underlying store, when available. */ store_status?: { /** * Normalized product status used across stores. */ status: 'ok' | 'could_not_check' | 'not_found' | 'action_in_progress' | 'needs_action' | 'inactive_in_store' | 'draft' | 'unspecified' | 'unknown'; /** * Raw status returned by the store API. */ raw_store_status?: string | null; } | null; common: unknown; store_state: unknown; }; }; type GetProductStoreStateResponse = GetProductStoreStateResponses[keyof GetProductStoreStateResponses]; type SetProductStoreStateData = { body: { /** * The target store for this desired state. */ store: 'app_store' | 'play_store'; common?: { pricing?: { territory_prices?: { [key: string]: { /** * Territory price amount in micros. */ amount_micros: number; /** * ISO currency code for this territory price. */ currency?: string; /** * ISO-8601 date (YYYY-MM-DD) for a scheduled price change. Required for approved subscriptions — Apple does not allow modifying the current price of an approved subscription directly; a future start date must be provided to schedule the change. Omit for initial pricing of unapproved products. For in-app purchases, sets the start date on the price schedule entry. */ start_date?: Date | null; }; }; }; availability?: { /** * Territories where the product is available. True = available, false = remove. */ territories?: { [key: string]: boolean; }; /** * Availability default for newly added territories. Optional; when omitted, the current App Store Connect value is preserved. */ available_in_new_territories?: boolean; }; localizations?: { [key: string]: { /** * Localized product display name. App Store Connect limits: 30 characters for both subscriptions and in-app purchases. */ name: string; /** * Localized product description. App Store Connect limits: 45 characters for both subscriptions and in-app purchases. */ description: string; } | null; } | null; /** * Optional product title used by create-if-missing flows. */ title?: string | null; /** * Subscription duration. Required for subscription creation in create-if-missing flows. */ duration?: 'ONE_WEEK' | 'ONE_MONTH' | 'TWO_MONTHS' | 'THREE_MONTHS' | 'SIX_MONTHS' | 'ONE_YEAR'; }; /** * Store-specific desired state. Must match the `store` discriminator. */ store_state?: unknown; }; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/store_state'; }; type SetProductStoreStateErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type SetProductStoreStateError = SetProductStoreStateErrors[keyof SetProductStoreStateErrors]; type SetProductStoreStateResponses = { /** * Accepted. The product store state operation was queued. */ 202: { /** * The ID of the queued store state operation. */ operation_id: string; /** * Current status of the queued operation. */ status: 'pending'; /** * Relative URL to poll operation status. */ polling_url: string; }; }; type SetProductStoreStateResponse = SetProductStoreStateResponses[keyof SetProductStoreStateResponses]; type GetProductStoreStateOperationData = { body?: never; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; /** * ID of the operation */ operation_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/store_state/{operation_id}'; }; type GetProductStoreStateOperationErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type GetProductStoreStateOperationError = GetProductStoreStateOperationErrors[keyof GetProductStoreStateOperationErrors]; type GetProductStoreStateOperationResponses = { /** * The current status/result for the operation. */ 200: { /** * Operation identifier. */ id: string; /** * The RevenueCat product identifier. */ product_id: string; /** * Current status for the operation. */ status: 'pending' | 'running' | 'succeeded' | 'failed'; /** * Error message when status is failed. */ error_message?: string | null; /** * Timestamp (ms since epoch) when the operation completed. */ completed_at?: number | null; }; }; type GetProductStoreStateOperationResponse = GetProductStoreStateOperationResponses[keyof GetProductStoreStateOperationResponses]; type UploadProductStoreStateScreenshotData = { body: { /** * Screenshot filename to reserve in App Store Connect. */ filename: string; /** * Screenshot file size in bytes. */ file_size: number; }; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/store_state/screenshot_upload'; }; type UploadProductStoreStateScreenshotErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type UploadProductStoreStateScreenshotError = UploadProductStoreStateScreenshotErrors[keyof UploadProductStoreStateScreenshotErrors]; type UploadProductStoreStateScreenshotResponses = { /** * Screenshot upload slot successfully reserved. */ 200: { /** * App Store Connect screenshot identifier. */ screenshot_id: string; /** * Reserved filename echoed from App Store Connect. */ filename?: string | null; /** * Reserved file size echoed from App Store Connect. */ file_size?: number | null; /** * Upload operations for direct upload to Apple. */ upload_operations?: Array<{ /** * HTTP method for the upload operation. */ method: string; /** * Presigned upload URL from App Store Connect. */ url: string; /** * Chunk length in bytes for this upload operation. */ length: number; /** * Byte offset in the source file for this upload operation. */ offset: number; /** * Headers required by App Store Connect for upload. */ request_headers?: Array<{ /** * Header name. */ name: string; /** * Header value. */ value: string; }> | null; }> | null; }; }; type UploadProductStoreStateScreenshotResponse = UploadProductStoreStateScreenshotResponses[keyof UploadProductStoreStateScreenshotResponses]; type EqualizeSubscriptionPricesData = { body: { /** * The target store for this operation. */ store: 'app_store'; /** * Base territory used to resolve the source price point from the * territory's current App Store price (alpha-2 or alpha-3 code). * */ base_territory: string; }; path: { /** * ID of the project */ project_id: string; /** * ID of the product */ product_id: string; }; query?: never; url: '/projects/{project_id}/products/{product_id}/store_state/actions/equalize_subscription_prices'; }; type EqualizeSubscriptionPricesErrors = { /** * Bad request */ 400: Error & { type?: 'parameter_error' | 'invalid_request'; }; /** * Unauthorized */ 401: Error & { type?: 'authentication_error'; }; /** * Access denied */ 403: Error & { type?: 'authorization_error'; }; /** * Not found */ 404: Error & { type?: 'resource_missing'; }; /** * Conflict */ 409: Error & { type?: 'resource_already_exists' | 'idempotency_error' | 'invalid_request'; }; /** * Unprocessable entity */ 422: Error & { type?: 'unprocessable_entity_error' | 'parameter_error' | 'store_error' | 'entity_references_archived_entities'; }; /** * Locked */ 423: Error & { type?: 'resource_locked_error'; }; /** * The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project. */ 429: Error & { type?: 'rate_limit_error'; }; /** * Internal server error */ 500: Error & { type?: 'server_error'; }; /** * Internal server error */ 503: Error & { type?: 'server_error'; }; }; type EqualizeSubscriptionPricesError = EqualizeSubscriptionPricesErrors[keyof EqualizeSubscriptionPricesErrors]; type EqualizeSubscriptionPricesResponses = { /** * Accepted. The equalization operation was queued. */ 202: { /** * The ID of the queued operation. */ operation_id: string; /** * Current status of the queued operation. */ status: 'pending'; /** * Relative URL to poll operation status. */ polling_url: string; }; }; type EqualizeSubscriptionPricesResponse = EqualizeSubscriptionPricesResponses[keyof EqualizeSubscriptionPricesResponses]; type Options = Options$1 & { /** * You can provide a client instance returned by `createClient()` instead of * individual options. This might be also useful if you want to implement a * custom client. */ client?: Client; /** * You can pass arbitrary values through the `meta` object. This can be * used to access values that aren't defined as part of the SDK function. */ meta?: keyof ClientMeta extends never ? Record : ClientMeta; }; /** * Upload a media asset * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createMediaAsset: (options: Options) => RequestResult; /** * Get a list of paywalls * * This endpoint requires the following permission(s): project_configuration:offerings:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listPaywalls: (options: Options) => RequestResult; /** * Create a paywall * * Create a paywall draft for a project. You can either use the offering template shortcut or provide full draft components directly. * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createPaywall: (options: Options) => RequestResult; /** * Delete a paywall * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deletePaywall: (options: Options) => RequestResult; /** * Get a paywall * * This endpoint requires the following permission(s): project_configuration:offerings:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getPaywall: (options: Options) => RequestResult; /** * Update a paywall draft * * Update a paywall draft. If the paywall is already published, this updates its draft version without changing the published version. * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updatePaywall: (options: Options) => RequestResult; /** * Create a paywall version * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createPaywallVersion: (options: Options) => RequestResult; /** * Get a list of the public API keys of an app * * Returns public API keys for the app. RC Checkout public keys are omitted. Sandbox keys are always included. Production keys are omitted when the app uses Stripe or Web Billing and the linked Stripe connected account is sandbox or test-only (same behavior as the RevenueCat dashboard list). * This endpoint requires the following permission(s): project_configuration:apps:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listAppPublicApiKeys: (options: Options) => RequestResult; /** * Get a list of projects * * This endpoint requires the following permission(s): project_configuration:projects:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listProjects: (options?: Options) => RequestResult; /** * Creates a new project * * This endpoint requires the following permission(s): project_configuration:projects:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createProject: (options: Options) => RequestResult; /** * Get a list of apps * * This endpoint requires the following permission(s): project_configuration:apps:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listApps: (options: Options) => RequestResult; /** * Create an app * * This endpoint requires the following permission(s): project_configuration:apps:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createApp: (options: Options) => RequestResult; /** * Delete an app * * This endpoint requires the following permission(s): project_configuration:apps:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteApp: (options: Options) => RequestResult; /** * Get an app * * This endpoint requires the following permission(s): project_configuration:apps:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getApp: (options: Options) => RequestResult; /** * Update an app * * This endpoint requires the following permission(s): project_configuration:apps:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateApp: (options: Options) => RequestResult; /** * Get the StoreKit configuration for an app * * This endpoint requires the following permission(s): project_configuration:apps:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getAppStorekitConfig: (options: Options) => RequestResult; /** * List audit logs * * This endpoint requires the following permission(s): project_configuration:audit_logs:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listAuditLogs: (options: Options) => RequestResult; /** * Get a list of collaborators * * This endpoint requires the following permission(s): project_configuration:collaborators:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listCollaborators: (options: Options) => RequestResult; /** * Get a list of customers * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listCustomers: (options: Options) => RequestResult; /** * Create a customer * * This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const createCustomer: (options: Options) => RequestResult; /** * Delete a customer * * This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const deleteCustomer: (options: Options) => RequestResult; /** * Get a customer * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getCustomer: (options: Options) => RequestResult; /** * Get customer center configuration * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getCustomerCenterConfig: (options: Options) => RequestResult; /** * Transfer customer's subscriptions and one-time purchases to another customer * * This endpoint requires the following permission(s): customer_information:customers:read_write, customer_information:subscriptions:read_write, customer_information:purchases:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const transferCustomerData: (options: Options) => RequestResult; /** * Grant an entitlement to a customer * * Grants an entitlement to a customer unless one already exists. As a side effect, a promotional subscription is created. This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const grantCustomerEntitlement: (options: Options) => RequestResult; /** * Revoke a granted entitlement from a customer * * Revokes a granted entitlement from a customer. As a side effect, the promotional subscription associated with the granted entitlement is expired. This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const revokeCustomerGrantedEntitlement: (options: Options) => RequestResult; /** * Assign or clear an offering override for a customer * * This endpoint requires the following permission(s): project_configuration:offerings:read, customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const assignCustomerOffering: (options: Options) => RequestResult; /** * Restore a Google Play purchase by order ID * * Restores a Google Play purchase to the specified customer using a Google Play order ID. This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const restorePurchaseByOrderId: (options: Options) => RequestResult; /** * List webhook integrations * * This endpoint requires the following permission(s): project_configuration:integrations:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listWebhookIntegrations: (options: Options) => RequestResult; /** * Create a webhook integration * * This endpoint requires the following permission(s): project_configuration:integrations:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createWebhookIntegration: (options: Options) => RequestResult; /** * Delete a webhook integration * * This endpoint requires the following permission(s): project_configuration:integrations:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteWebhookIntegration: (options: Options) => RequestResult; /** * Get a webhook integration * * This endpoint requires the following permission(s): project_configuration:integrations:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getWebhookIntegration: (options: Options) => RequestResult; /** * Update a webhook integration * * This endpoint requires the following permission(s): project_configuration:integrations:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateWebhookIntegration: (options: Options) => RequestResult; /** * Delete a product * * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteProduct: (options: Options) => RequestResult; /** * Get a product * * This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getProduct: (options: Options) => RequestResult; /** * Update a product * * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateProduct: (options: Options) => RequestResult; /** * Archive a product * * Archives a product (makes it inactive). * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const archiveProduct: (options: Options) => RequestResult; /** * Unarchive a product * * Unarchives a product (makes it active). * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const unarchiveProduct: (options: Options) => RequestResult; /** * Push a product to the store * * Push a product to the App Store. * * **For subscription products**: You must provide store information including duration and subscription group details. * * **For in-app purchase products** (consumable, non-consumable, non-renewing subscription): No request body is required. * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createProductInStore: (options: Options) => RequestResult; /** * Get a list of products * * This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listProducts: (options: Options) => RequestResult; /** * Create a product * *
*
Warning
*
This endpoint does not allow to create Web Billing products.
* This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createProduct: (options: Options) => RequestResult; /** * Get a list of virtual currencies * * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listVirtualCurrencies: (options: Options) => RequestResult; /** * Create a virtual currency * * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createVirtualCurrency: (options: Options) => RequestResult; /** * Delete a virtual currency * * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteVirtualCurrency: (options: Options) => RequestResult; /** * Get a virtual currency * * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getVirtualCurrency: (options: Options) => RequestResult; /** * Update a virtual currency * * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateVirtualCurrency: (options: Options) => RequestResult; /** * Archive a virtual currency * * Archives a virtual currency (makes it inactive). * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const archiveVirtualCurrency: (options: Options) => RequestResult; /** * Unarchive a virtual currency * * Unarchives a virtual currency (makes it active). * This endpoint requires the following permission(s): project_configuration:virtual_currencies:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const unarchiveVirtualCurrency: (options: Options) => RequestResult; /** * Delete an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteEntitlement: (options: Options) => RequestResult; /** * Get an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getEntitlement: (options: Options) => RequestResult; /** * Update an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateEntitlement: (options: Options) => RequestResult; /** * Get a list of entitlements * * This endpoint requires the following permission(s): project_configuration:entitlements:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listEntitlements: (options: Options) => RequestResult; /** * Create an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createEntitlement: (options: Options) => RequestResult; /** * Get a list of products attached to a given entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getProductsFromEntitlement: (options: Options) => RequestResult; /** * Archive an entitlement * * Archives an entitlement (makes it inactive). * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const archiveEntitlement: (options: Options) => RequestResult; /** * Unarchive an entitlement * * Unarchives an entitlement (makes it active). * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const unarchiveEntitlement: (options: Options) => RequestResult; /** * Attach a set of products to an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const attachProductsToEntitlement: (options: Options) => RequestResult; /** * Detach a set of product from an entitlement * * This endpoint requires the following permission(s): project_configuration:entitlements:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const detachProductsFromEntitlement: (options: Options) => RequestResult; /** * Delete an offering and its attached packages * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deleteOffering: (options: Options) => RequestResult; /** * Get an offering * * This endpoint requires the following permission(s): project_configuration:offerings:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getOffering: (options: Options) => RequestResult; /** * Update an offering * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updateOffering: (options: Options) => RequestResult; /** * Archive an offering * * Archives an offering (makes it inactive). * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const archiveOffering: (options: Options) => RequestResult; /** * Unarchive an offering * * Unarchives an offering (makes it active). * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const unarchiveOffering: (options: Options) => RequestResult; /** * Get a list of offerings * * This endpoint requires the following permission(s): project_configuration:offerings:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listOfferings: (options: Options) => RequestResult; /** * Create an offering * * This endpoint requires the following permission(s): project_configuration:offerings:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createOffering: (options: Options) => RequestResult; /** * Delete a package * * This endpoint requires the following permission(s): project_configuration:packages:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const deletePackageFromOffering: (options: Options) => RequestResult; /** * Get a package * * This endpoint requires the following permission(s): project_configuration:packages:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getPackage: (options: Options) => RequestResult; /** * Update a package * * This endpoint requires the following permission(s): project_configuration:packages:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const updatePackage: (options: Options) => RequestResult; /** * Get a list of packages in an offering * * This endpoint requires the following permission(s): project_configuration:packages:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const listPackages: (options: Options) => RequestResult; /** * Create a package * * This endpoint requires the following permission(s): project_configuration:packages:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const createPackages: (options: Options) => RequestResult; /** * Get a list of products attached to a given package of an offering * * This endpoint requires the following permission(s): project_configuration:packages:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getProductsFromPackage: (options: Options) => RequestResult; /** * Attach a set of products to a package * * This endpoint requires the following permission(s): project_configuration:packages:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const attachProductsToPackage: (options: Options) => RequestResult; /** * Detach a set of products from a package * * This endpoint requires the following permission(s): project_configuration:packages:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const detachProductsFromPackage: (options: Options) => RequestResult; /** * Get a subscription * * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getSubscription: (options: Options) => RequestResult; /** * Get a Play Store or App Store subscription's transactions * * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getPlayStoreOrAppStoreSubscriptionTransactions: (options: Options) => RequestResult; /** * Refund a Play Store or Galaxy subscription's transaction * * Refund and cancel a Play Store or Galaxy subscription's transaction. Access to the subscription will be revoked. This endpoint requires the following permission(s): customer_information:subscriptions:read_write. This endpoint belongs to the Subscription Transactions Refunds domain, which has a default rate limit of 480 requests per minute. */ declare const refundPlayStoreOrGalaxySubscriptionTransaction: (options: Options) => RequestResult; /** * Get a list of entitlements associated with a subscription * * Lists all Entitlements granted by a Subscription. * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listSubscriptionEntitlements: (options: Options) => RequestResult; /** * Cancel an active Web Billing subscription * * Cancel an active Web Billing subscription. The customer will lose access to the associated entitlements at the end of the current period. * This endpoint requires the following permission(s): customer_information:subscriptions:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const cancelSubscription: (options: Options) => RequestResult; /** * Extend the current billing period of a subscription * * Extend the current billing period of a subscription. Provide either `extend_by_days` to extend by a number of days, or `extend_until_ms` to extend to an absolute epoch-millisecond timestamp. Supported on Apple Store, Google Play Store, and Web Billing subscriptions. For Apple Store subscriptions, `extend_reason_code` is required and the extension is capped at 90 days. * This endpoint requires the following permission(s): customer_information:subscriptions:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const extendSubscription: (options: Options) => RequestResult; /** * Refund an active Web Billing subscription * * Cancel a Web Billing subscription by refunding the most recent payment. The customer will immediately lose access to the associated entitlements. * This endpoint requires the following permission(s): customer_information:subscriptions:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const refundSubscription: (options: Options) => RequestResult; /** * Get an authenticated subscription management URL * * Get a secure, single-use URL that allows customers to access their Web Billing customer portal. * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getAuthorizedSubscriptionManagementUrl: (options: Options) => RequestResult; /** * Get a list of subscriptions associated with a customer * * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listSubscriptions: (options: Options) => RequestResult; /** * Get a purchase * * This endpoint requires the following permission(s): customer_information:purchases:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getPurchase: (options: Options) => RequestResult; /** * Get a list of entitlements associated with a purchase * * Lists all Entitlements granted by a Purchase. * This endpoint requires the following permission(s): customer_information:purchases:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listPurchaseEntitlements: (options: Options) => RequestResult; /** * Refund a Web Billing purchase * * Refund a Web Billing purchase and revoke access to associated granted entitlements. * This endpoint requires the following permission(s): customer_information:purchases:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const refundPurchase: (options: Options) => RequestResult; /** * Get a list of purchases associated with a customer * * This endpoint requires the following permission(s): customer_information:purchases:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listPurchases: (options: Options) => RequestResult; /** * Get a list of customer's active entitlements * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listCustomerActiveEntitlements: (options: Options) => RequestResult; /** * Get a list of the customer's aliases * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listCustomerAliases: (options: Options) => RequestResult; /** * Get a list of customer's virtual currencies balances * * This endpoint requires the following permission(s): customer_information:purchases:read. This endpoint belongs to the Virtual Currencies domain, which has a default rate limit of 480 requests per minute. */ declare const listVirtualCurrenciesBalances: (options: Options) => RequestResult; /** * Create a virtual currencies transaction * * This endpoint requires the following permission(s): customer_information:purchases:read_write. This endpoint belongs to the Virtual Currencies domain, which has a default rate limit of 480 requests per minute. */ declare const createVirtualCurrenciesTransaction: (options: Options) => RequestResult; /** * Update a virtual currencies balance without creating a transaction * * This endpoint requires the following permission(s): customer_information:purchases:read_write. This endpoint belongs to the Virtual Currencies domain, which has a default rate limit of 480 requests per minute. */ declare const updateVirtualCurrenciesBalance: (options: Options) => RequestResult; /** * Get a list of the customer's attributes * * This endpoint requires the following permission(s): customer_information:customers:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listCustomerAttributes: (options: Options) => RequestResult; /** * Set a customer's attributes * * This endpoint requires the following permission(s): customer_information:customers:read_write. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const setCustomerAttributes: (options: Options) => RequestResult; /** * Get a list of the customer's invoices * * This endpoint requires the following permission(s): customer_information:invoices:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const listCustomerInvoices: (options: Options) => RequestResult; /** * Get an invoice * * This endpoint requires the following permission(s): customer_information:invoices:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const getInvoice: (options: Options) => RequestResult; /** * Get overview metrics for a project * * This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute. */ declare const getOverviewMetrics: (options: Options) => RequestResult; /** * Get revenue for a project * * Returns the total revenue for the project across all of its apps for the * given inclusive date range `[start_date, end_date]`. The value is expressed * in the project's primary currency unless `currency` is provided. * * Use `revenue_type` to choose which revenue definition the `value` represents: * gross `revenue` (default), `revenue_net_of_taxes`, or `proceeds` (net of both * taxes and store commission — the amount the developer keeps). * * This endpoint is backed by the same realtime (v3) revenue chart that powers * the dashboard. It is intended for cases where an app needs an authoritative * revenue total without inferring it from the transaction list. * * Note that the most recent day in the range may be partial if it includes * today, since transactions for today are still arriving. * This endpoint requires the following permission(s): charts_metrics:overview:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute. */ declare const getRevenueMetric: (options: Options) => RequestResult; /** * Get chart data * * Returns time-series data for a specific chart. * * **Response Structure** * * The response includes: * - Chart metadata (category, display_name, description) * - Time boundaries (start_date, end_date, last_computed_at) * - Data values (array of data points) * - Summary statistics * - Segment information (when segmented) * * **Chart Types** * * Different charts may return data in slightly different formats: * - Standard charts: values as arrays of data points with timestamps * - Cohort charts: values include cohort-specific data structures * - Segmented charts: include segment information in the response * * **Filtering and Segmentation** * * Use the `/charts/{chart_name}/options` endpoint to discover available * filters and segments for a specific chart before making requests. * * Filter parameters vary by chart and can be passed as additional query parameters. * * **Aggregation** * * Use `aggregate` to request summary-only output for supported charts. * When `aggregate` is provided, `values` is returned as an empty array and * `summary` includes only the requested aggregate operations. * * **Incomplete data** * For the most recent periods, data may be flagged as incomplete, and may not be appropriate to use for analysis. * This endpoint requires the following permission(s): charts_metrics:charts:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute. */ declare const getChartData: (options: Options) => RequestResult; /** * Get available options for a chart * * Returns configuration options for a specific chart. * * Use this endpoint to discover: * - **Resolutions**: Available time granularities (day, week, month, etc.) * - **Segments**: Dimensions you can segment the data by (country, store, product, etc.) * - **Filters**: Available filters and their possible values * * The options returned are specific to the chart and may vary based on * your project's data and configuration. * * **Usage** * * Call this endpoint before requesting chart data to: * 1. Build dynamic filter UIs * 2. Validate parameters before making chart data requests * 3. Discover available dimensions for analysis * . This endpoint requires the following permission(s): charts_metrics:charts:read. This endpoint belongs to the Charts & Metrics domain, which has a default rate limit of 25 requests per minute. */ declare const getChartOptions: (options: Options) => RequestResult; /** * Search subscriptions by store subscription identifier * * Search for a subscription by any of its associated `store_subscription_identifier` values, whether from a past or current subscription period. * * For example, this may include the `transactionId` of any transaction in an Apple App Store subscription, or any order ID from a Google Play Store subscription. * This endpoint requires the following permission(s): customer_information:subscriptions:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const searchSubscriptions: (options: Options) => RequestResult; /** * Search one-time purchases by store purchase identifier * * Search for a one-time purchases by any of its associated `store_purchase_identifier` values. * * For example, this may include the `transactionId` of any transaction in an Apple App Store purchase, or any order ID from a Google Play Store purchase. * This endpoint requires the following permission(s): customer_information:purchases:read. This endpoint belongs to the Customer Information domain, which has a default rate limit of 480 requests per minute. */ declare const searchPurchases: (options: Options) => RequestResult; /** * Get a product store state * * Returns the live ProductStoreState by reading data from the store. * * Pricing reflects the next effective price per territory. When App Store * Connect has a scheduled price change, this endpoint returns the scheduled * price instead of the current one and includes `start_date`. * This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getProductStoreState: (options: Options) => RequestResult; /** * Set a product store state * * Accepts desired store metadata for a product and enqueues an asynchronous * apply operation. Supports partial updates: only provided fields are applied, * omitted fields leave the existing state in App Store Connect unchanged. * For map fields, keys follow patch semantics: * - omitted key: no-op (preserves existing state) * - key with null value: delete that entry in App Store Connect * - key with object value: create or update * `territories` uses `true`/`false` instead of null (true = available, * false = remove). `territory_prices` does not support deletion because * Apple does not allow removing individual territory prices — override * with a new `amount_micros` value instead. * Exception: a placeholder review screenshot is always uploaded if the product * does not have one, regardless of whether review_information is provided. * * `store_state.trial_offer` requires at least one available territory. * If availability is omitted, the current territories in App Store Connect * are used. If no territories exist, the request will fail. * * If the product does not exist yet in the target store, the apply flow will * create it first and then apply availability, pricing, and localization state. * For subscription create-if-missing flows, provide `common.duration`. * Optionally set `store_state.subscription_group_name` to choose the target * subscription group name at creation time. * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const setProductStoreState: (options: Options) => RequestResult; /** * Get a product store state operation * * Polls status/result of async operation started by POST /store_state. * This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const getProductStoreStateOperation: (options: Options) => RequestResult; /** * Reserve a product store state screenshot upload * * Reserves an App Store Connect review screenshot upload slot for an existing * product and returns upload operations that the client can use to upload * screenshot bytes directly to Apple. * * After upload, pass `screenshot_id` and `source_file_checksum` in * `POST /store_state` under `store_state.review_information.screenshot`. * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const uploadProductStoreStateScreenshot: (options: Options) => RequestResult; /** * Equalize subscription prices for missing territories * * Enqueues an asynchronous operation that fills missing App Store subscription * territory prices using Apple's equalized price points derived from the * current price configured in a base territory. * * This action does not modify sale availability. It only creates missing * subscription prices. * This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute. */ declare const equalizeSubscriptionPrices: (options: Options) => RequestResult; export { type AmazonApp, type AmazonAppCreate, type AmountMicros, type App, type AppCreate, type AppStoreApp, type AppStoreAppCreate, type ArchiveEntitlementData, type ArchiveEntitlementError, type ArchiveEntitlementErrors, type ArchiveEntitlementResponse, type ArchiveEntitlementResponses, type ArchiveOfferingData, type ArchiveOfferingError, type ArchiveOfferingErrors, type ArchiveOfferingResponse, type ArchiveOfferingResponses, type ArchiveProductData, type ArchiveProductError, type ArchiveProductErrors, type ArchiveProductResponse, type ArchiveProductResponses, type ArchiveVirtualCurrencyData, type ArchiveVirtualCurrencyError, type ArchiveVirtualCurrencyErrors, type ArchiveVirtualCurrencyResponse, type ArchiveVirtualCurrencyResponses, type AssignCustomerOfferingData, type AssignCustomerOfferingError, type AssignCustomerOfferingErrors, type AssignCustomerOfferingResponses, type AttachProductsToEntitlementData, type AttachProductsToEntitlementError, type AttachProductsToEntitlementErrors, type AttachProductsToEntitlementResponse, type AttachProductsToEntitlementResponses, type AttachProductsToPackageData, type AttachProductsToPackageError, type AttachProductsToPackageErrors, type AttachProductsToPackageResponse, type AttachProductsToPackageResponses, type AuditLog, type AuthenticatedManagementUrl, type CancelSubscriptionData, type CancelSubscriptionError, type CancelSubscriptionErrors, type CancelSubscriptionResponse, type CancelSubscriptionResponses, type ChartAnnotation, type ChartData, type ChartFilterOption, type ChartOptions, type ChartSegmentOption, type ClientOptions, type Collaborator, Country, type CreateAppData, type CreateAppError, type CreateAppErrors, type CreateAppResponse, type CreateAppResponses, type CreateAppStoreConnectInAppPurchaseInput, type CreateAppStoreConnectSubscriptionInput, type CreateCustomerData, type CreateCustomerError, type CreateCustomerErrors, type CreateCustomerResponse, type CreateCustomerResponses, type CreateEntitlementData, type CreateEntitlementError, type CreateEntitlementErrors, type CreateEntitlementResponse, type CreateEntitlementResponses, type CreateMediaAssetData, type CreateMediaAssetError, type CreateMediaAssetErrors, type CreateMediaAssetResponse, type CreateMediaAssetResponses, type CreateOfferingData, type CreateOfferingError, type CreateOfferingErrors, type CreateOfferingResponse, type CreateOfferingResponses, type CreatePackagesData, type CreatePackagesError, type CreatePackagesErrors, type CreatePackagesResponse, type CreatePackagesResponses, type CreatePaywallData, type CreatePaywallError, type CreatePaywallErrors, type CreatePaywallResponse, type CreatePaywallResponses, type CreatePaywallVersionData, type CreatePaywallVersionError, type CreatePaywallVersionErrors, type CreatePaywallVersionResponse, type CreatePaywallVersionResponses, type CreateProductData, type CreateProductError, type CreateProductErrors, type CreateProductInStoreData, type CreateProductInStoreError, type CreateProductInStoreErrors, type CreateProductInStoreResponse, type CreateProductInStoreResponses, type CreateProductResponse, type CreateProductResponses, type CreateProjectData, type CreateProjectError, type CreateProjectErrors, type CreateProjectResponse, type CreateProjectResponses, type CreateVirtualCurrenciesTransactionData, type CreateVirtualCurrenciesTransactionError, type CreateVirtualCurrenciesTransactionErrors, type CreateVirtualCurrenciesTransactionResponse, type CreateVirtualCurrenciesTransactionResponses, type CreateVirtualCurrencyData, type CreateVirtualCurrencyError, type CreateVirtualCurrencyErrors, type CreateVirtualCurrencyResponse, type CreateVirtualCurrencyResponses, type CreateWebhookIntegrationData, type CreateWebhookIntegrationError, type CreateWebhookIntegrationErrors, type CreateWebhookIntegrationInput, type CreateWebhookIntegrationResponse, type CreateWebhookIntegrationResponses, Currency, type Customer, type CustomerAlias, type CustomerAttribute, type CustomerAttributeCustomName, CustomerAttributeReservedName, type CustomerCenterConfig, type CustomerEntitlement, type DeleteAppData, type DeleteAppError, type DeleteAppErrors, type DeleteAppResponse, type DeleteAppResponses, type DeleteCustomerData, type DeleteCustomerError, type DeleteCustomerErrors, type DeleteCustomerResponse, type DeleteCustomerResponses, type DeleteEntitlementData, type DeleteEntitlementError, type DeleteEntitlementErrors, type DeleteEntitlementResponse, type DeleteEntitlementResponses, type DeleteOfferingData, type DeleteOfferingError, type DeleteOfferingErrors, type DeleteOfferingResponse, type DeleteOfferingResponses, type DeletePackageFromOfferingData, type DeletePackageFromOfferingError, type DeletePackageFromOfferingErrors, type DeletePackageFromOfferingResponse, type DeletePackageFromOfferingResponses, type DeletePaywallData, type DeletePaywallError, type DeletePaywallErrors, type DeletePaywallResponse, type DeletePaywallResponses, type DeleteProductData, type DeleteProductError, type DeleteProductErrors, type DeleteProductResponse, type DeleteProductResponses, type DeleteVirtualCurrencyData, type DeleteVirtualCurrencyError, type DeleteVirtualCurrencyErrors, type DeleteVirtualCurrencyResponse, type DeleteVirtualCurrencyResponses, type DeleteWebhookIntegrationData, type DeleteWebhookIntegrationError, type DeleteWebhookIntegrationErrors, type DeleteWebhookIntegrationResponse, type DeleteWebhookIntegrationResponses, type DeletedObject, type DetachProductsFromEntitlementData, type DetachProductsFromEntitlementError, type DetachProductsFromEntitlementErrors, type DetachProductsFromEntitlementResponse, type DetachProductsFromEntitlementResponses, type DetachProductsFromPackageData, type DetachProductsFromPackageError, type DetachProductsFromPackageErrors, type DetachProductsFromPackageResponse, type DetachProductsFromPackageResponses, Duration, EligibilityCriteria, type Entitlement, type EntityReferencesArchivedEntitiesError, Environment, type EqualizeSubscriptionPricesData, type EqualizeSubscriptionPricesError, type EqualizeSubscriptionPricesErrors, type EqualizeSubscriptionPricesResponse, type EqualizeSubscriptionPricesResponses, type Error, type ExperimentEnrollment, type ExtendSubscriptionByDuration, type ExtendSubscriptionData, type ExtendSubscriptionError, type ExtendSubscriptionErrors, type ExtendSubscriptionResponse, type ExtendSubscriptionResponses, type ExtendSubscriptionUntilDate, type GetAppData, type GetAppError, type GetAppErrors, type GetAppResponse, type GetAppResponses, type GetAppStorekitConfigData, type GetAppStorekitConfigError, type GetAppStorekitConfigErrors, type GetAppStorekitConfigResponse, type GetAppStorekitConfigResponses, type GetAuthorizedSubscriptionManagementUrlData, type GetAuthorizedSubscriptionManagementUrlError, type GetAuthorizedSubscriptionManagementUrlErrors, type GetAuthorizedSubscriptionManagementUrlResponse, type GetAuthorizedSubscriptionManagementUrlResponses, type GetChartDataData, type GetChartDataError, type GetChartDataErrors, type GetChartDataResponse, type GetChartDataResponses, type GetChartOptionsData, type GetChartOptionsError, type GetChartOptionsErrors, type GetChartOptionsResponse, type GetChartOptionsResponses, type GetCustomerCenterConfigData, type GetCustomerCenterConfigError, type GetCustomerCenterConfigErrors, type GetCustomerCenterConfigResponse, type GetCustomerCenterConfigResponses, type GetCustomerData, type GetCustomerError, type GetCustomerErrors, type GetCustomerResponse, type GetCustomerResponses, type GetEntitlementData, type GetEntitlementError, type GetEntitlementErrors, type GetEntitlementResponse, type GetEntitlementResponses, type GetInvoiceData, type GetInvoiceError, type GetInvoiceErrors, type GetOfferingData, type GetOfferingError, type GetOfferingErrors, type GetOfferingResponse, type GetOfferingResponses, type GetOverviewMetricsData, type GetOverviewMetricsError, type GetOverviewMetricsErrors, type GetOverviewMetricsResponse, type GetOverviewMetricsResponses, type GetPackageData, type GetPackageError, type GetPackageErrors, type GetPackageResponse, type GetPackageResponses, type GetPaywallData, type GetPaywallError, type GetPaywallErrors, type GetPaywallResponse, type GetPaywallResponses, type GetPlayStoreOrAppStoreSubscriptionTransactionsData, type GetPlayStoreOrAppStoreSubscriptionTransactionsError, type GetPlayStoreOrAppStoreSubscriptionTransactionsErrors, type GetPlayStoreOrAppStoreSubscriptionTransactionsResponse, type GetPlayStoreOrAppStoreSubscriptionTransactionsResponses, type GetProductData, type GetProductError, type GetProductErrors, type GetProductResponse, type GetProductResponses, type GetProductStoreStateData, type GetProductStoreStateError, type GetProductStoreStateErrors, type GetProductStoreStateOperationData, type GetProductStoreStateOperationError, type GetProductStoreStateOperationErrors, type GetProductStoreStateOperationResponse, type GetProductStoreStateOperationResponses, type GetProductStoreStateResponse, type GetProductStoreStateResponses, type GetProductsFromEntitlementData, type GetProductsFromEntitlementError, type GetProductsFromEntitlementErrors, type GetProductsFromEntitlementResponse, type GetProductsFromEntitlementResponses, type GetProductsFromPackageData, type GetProductsFromPackageError, type GetProductsFromPackageErrors, type GetProductsFromPackageResponse, type GetProductsFromPackageResponses, type GetPurchaseData, type GetPurchaseError, type GetPurchaseErrors, type GetPurchaseResponse, type GetPurchaseResponses, type GetRevenueMetricData, type GetRevenueMetricError, type GetRevenueMetricErrors, type GetRevenueMetricResponse, type GetRevenueMetricResponses, type GetSubscriptionData, type GetSubscriptionError, type GetSubscriptionErrors, type GetSubscriptionResponse, type GetSubscriptionResponses, type GetVirtualCurrencyData, type GetVirtualCurrencyError, type GetVirtualCurrencyErrors, type GetVirtualCurrencyResponse, type GetVirtualCurrencyResponses, type GetWebhookIntegrationData, type GetWebhookIntegrationError, type GetWebhookIntegrationErrors, type GetWebhookIntegrationResponse, type GetWebhookIntegrationResponses, type GrantCustomerEntitlementData, type GrantCustomerEntitlementError, type GrantCustomerEntitlementErrors, type GrantCustomerEntitlementResponse, type GrantCustomerEntitlementResponses, type IndicativePrice, type Invoice, type InvoiceLineItem, type ListAppPublicApiKeysData, type ListAppPublicApiKeysError, type ListAppPublicApiKeysErrors, type ListAppPublicApiKeysResponse, type ListAppPublicApiKeysResponses, type ListApps, type ListAppsData, type ListAppsError, type ListAppsErrors, type ListAppsResponse, type ListAppsResponses, type ListAuditLogs, type ListAuditLogsData, type ListAuditLogsError, type ListAuditLogsErrors, type ListAuditLogsResponse, type ListAuditLogsResponses, type ListCollaborators, type ListCollaboratorsData, type ListCollaboratorsError, type ListCollaboratorsErrors, type ListCollaboratorsResponse, type ListCollaboratorsResponses, type ListCustomerActiveEntitlements, type ListCustomerActiveEntitlementsData, type ListCustomerActiveEntitlementsError, type ListCustomerActiveEntitlementsErrors, type ListCustomerActiveEntitlementsResponse, type ListCustomerActiveEntitlementsResponses, type ListCustomerAliases, type ListCustomerAliasesData, type ListCustomerAliasesError, type ListCustomerAliasesErrors, type ListCustomerAliasesResponse, type ListCustomerAliasesResponses, type ListCustomerAttributes, type ListCustomerAttributesData, type ListCustomerAttributesError, type ListCustomerAttributesErrors, type ListCustomerAttributesResponse, type ListCustomerAttributesResponses, type ListCustomerInvoices, type ListCustomerInvoicesData, type ListCustomerInvoicesError, type ListCustomerInvoicesErrors, type ListCustomerInvoicesResponse, type ListCustomerInvoicesResponses, type ListCustomers, type ListCustomersData, type ListCustomersError, type ListCustomersErrors, type ListCustomersResponse, type ListCustomersResponses, type ListEntitlements, type ListEntitlementsData, type ListEntitlementsError, type ListEntitlementsErrors, type ListEntitlementsResponse, type ListEntitlementsResponses, type ListOfferings, type ListOfferingsData, type ListOfferingsError, type ListOfferingsErrors, type ListOfferingsResponse, type ListOfferingsResponses, type ListPackages, type ListPackagesData, type ListPackagesError, type ListPackagesErrors, type ListPackagesResponse, type ListPackagesResponses, type ListPaywalls, type ListPaywallsData, type ListPaywallsError, type ListPaywallsErrors, type ListPaywallsResponse, type ListPaywallsResponses, type ListProducts, type ListProductsData, type ListProductsError, type ListProductsErrors, type ListProductsResponse, type ListProductsResponses, type ListProjects, type ListProjectsData, type ListProjectsError, type ListProjectsErrors, type ListProjectsResponse, type ListProjectsResponses, type ListPublicApiKeys, type ListPurchaseEntitlementsData, type ListPurchaseEntitlementsError, type ListPurchaseEntitlementsErrors, type ListPurchaseEntitlementsResponse, type ListPurchaseEntitlementsResponses, type ListPurchases, type ListPurchasesData, type ListPurchasesError, type ListPurchasesErrors, type ListPurchasesResponse, type ListPurchasesResponses, type ListSubscriptionEntitlementsData, type ListSubscriptionEntitlementsError, type ListSubscriptionEntitlementsErrors, type ListSubscriptionEntitlementsResponse, type ListSubscriptionEntitlementsResponses, type ListSubscriptionTransaction, type ListSubscriptions, type ListSubscriptionsData, type ListSubscriptionsError, type ListSubscriptionsErrors, type ListSubscriptionsResponse, type ListSubscriptionsResponses, type ListVirtualCurrencies, type ListVirtualCurrenciesBalances, type ListVirtualCurrenciesBalancesData, type ListVirtualCurrenciesBalancesError, type ListVirtualCurrenciesBalancesErrors, type ListVirtualCurrenciesBalancesResponse, type ListVirtualCurrenciesBalancesResponses, type ListVirtualCurrenciesData, type ListVirtualCurrenciesError, type ListVirtualCurrenciesErrors, type ListVirtualCurrenciesResponse, type ListVirtualCurrenciesResponses, type ListWebhookIntegrations, type ListWebhookIntegrationsData, type ListWebhookIntegrationsError, type ListWebhookIntegrationsErrors, type ListWebhookIntegrationsResponse, type ListWebhookIntegrationsResponses, type MacAppStoreApp, type MacAppStoreAppCreate, type MediaAsset, type MediaAssetFormat, type MonetaryAmount, type Offering, type OfferingMetadata, type OneTimeProduct, type Options, type OverviewMetric, type OverviewMetrics, Ownership, type Package, type PackageProductAssociation, type PackageProductIdAssociation, type PaddleApp, type PaddleAppCreate, type Paywall, type PaywallComponents, type PaywallComponentsVersion, type PaywallVersion, type PlayStoreApp, type PlayStoreAppCreate, type Product, type ProductSubscriptionInput, ProductType, type ProductsFromEntitlement, type ProductsFromPackage, type Project, type ProjectCreate, type PublicApiKey, type Purchase, type RcBillingApp, type RcBillingAppCreate, RcBillingCurrency, type RefundPlayStoreOrGalaxySubscriptionTransactionData, type RefundPlayStoreOrGalaxySubscriptionTransactionError, type RefundPlayStoreOrGalaxySubscriptionTransactionErrors, type RefundPlayStoreOrGalaxySubscriptionTransactionResponse, type RefundPlayStoreOrGalaxySubscriptionTransactionResponses, type RefundPurchaseData, type RefundPurchaseError, type RefundPurchaseErrors, type RefundPurchaseResponse, type RefundPurchaseResponses, type RefundSubscriptionData, type RefundSubscriptionError, type RefundSubscriptionErrors, type RefundSubscriptionResponse, type RefundSubscriptionResponses, type RestorePurchaseByOrderIdData, type RestorePurchaseByOrderIdError, type RestorePurchaseByOrderIdErrors, type RestorePurchaseByOrderIdResponse, type RestorePurchaseByOrderIdResponses, type RevenueMetric, type RevokeCustomerGrantedEntitlementData, type RevokeCustomerGrantedEntitlementError, type RevokeCustomerGrantedEntitlementErrors, type RevokeCustomerGrantedEntitlementResponse, type RevokeCustomerGrantedEntitlementResponses, type RokuApp, type RokuAppCreate, type SearchPurchasesData, type SearchPurchasesError, type SearchPurchasesErrors, type SearchPurchasesResponse, type SearchPurchasesResponses, type SearchSubscriptionsData, type SearchSubscriptionsError, type SearchSubscriptionsErrors, type SearchSubscriptionsResponse, type SearchSubscriptionsResponses, type SetCustomerAttributesData, type SetCustomerAttributesError, type SetCustomerAttributesErrors, type SetCustomerAttributesResponse, type SetCustomerAttributesResponses, type SetProductStoreStateData, type SetProductStoreStateError, type SetProductStoreStateErrors, type SetProductStoreStateResponse, type SetProductStoreStateResponses, type StoreKitConfigFile, type StoreProduct, type StripeApp, type StripeAppCreate, type Subscription, type SubscriptionProduct, type SubscriptionTransaction, type TestStoreApp, type Transfer, type TransferCustomerDataData, type TransferCustomerDataError, type TransferCustomerDataErrors, type TransferCustomerDataResponse, type TransferCustomerDataResponses, type UnarchiveEntitlementData, type UnarchiveEntitlementError, type UnarchiveEntitlementErrors, type UnarchiveEntitlementResponse, type UnarchiveEntitlementResponses, type UnarchiveOfferingData, type UnarchiveOfferingError, type UnarchiveOfferingErrors, type UnarchiveOfferingResponse, type UnarchiveOfferingResponses, type UnarchiveProductData, type UnarchiveProductError, type UnarchiveProductErrors, type UnarchiveProductResponse, type UnarchiveProductResponses, type UnarchiveVirtualCurrencyData, type UnarchiveVirtualCurrencyError, type UnarchiveVirtualCurrencyErrors, type UnarchiveVirtualCurrencyResponse, type UnarchiveVirtualCurrencyResponses, type UpdateAppData, type UpdateAppError, type UpdateAppErrors, type UpdateAppResponse, type UpdateAppResponses, type UpdateEntitlementData, type UpdateEntitlementError, type UpdateEntitlementErrors, type UpdateEntitlementResponse, type UpdateEntitlementResponses, type UpdateOfferingData, type UpdateOfferingError, type UpdateOfferingErrors, type UpdateOfferingResponse, type UpdateOfferingResponses, type UpdatePackageData, type UpdatePackageError, type UpdatePackageErrors, type UpdatePackageResponse, type UpdatePackageResponses, type UpdatePaywallData, type UpdatePaywallError, type UpdatePaywallErrors, type UpdatePaywallResponse, type UpdatePaywallResponses, type UpdateProductData, type UpdateProductError, type UpdateProductErrors, type UpdateProductResponse, type UpdateProductResponses, type UpdateVirtualCurrenciesBalanceData, type UpdateVirtualCurrenciesBalanceError, type UpdateVirtualCurrenciesBalanceErrors, type UpdateVirtualCurrenciesBalanceResponse, type UpdateVirtualCurrenciesBalanceResponses, type UpdateVirtualCurrencyData, type UpdateVirtualCurrencyError, type UpdateVirtualCurrencyErrors, type UpdateVirtualCurrencyResponse, type UpdateVirtualCurrencyResponses, type UpdateWebhookIntegrationData, type UpdateWebhookIntegrationError, type UpdateWebhookIntegrationErrors, type UpdateWebhookIntegrationInput, type UpdateWebhookIntegrationResponse, type UpdateWebhookIntegrationResponses, type UploadProductStoreStateScreenshotData, type UploadProductStoreStateScreenshotError, type UploadProductStoreStateScreenshotErrors, type UploadProductStoreStateScreenshotResponse, type UploadProductStoreStateScreenshotResponses, type VirtualCurrency, type VirtualCurrencyBalance, type VirtualCurrencyProductGrant, type VirtualCurrencyProductGrantInput, WebhookEventType, type WebhookIntegration, archiveEntitlement, archiveOffering, archiveProduct, archiveVirtualCurrency, assignCustomerOffering, attachProductsToEntitlement, attachProductsToPackage, cancelSubscription, createApp, createCustomer, createEntitlement, createMediaAsset, createOffering, createPackages, createPaywall, createPaywallVersion, createProduct, createProductInStore, createProject, createVirtualCurrenciesTransaction, createVirtualCurrency, createWebhookIntegration, deleteApp, deleteCustomer, deleteEntitlement, deleteOffering, deletePackageFromOffering, deletePaywall, deleteProduct, deleteVirtualCurrency, deleteWebhookIntegration, detachProductsFromEntitlement, detachProductsFromPackage, equalizeSubscriptionPrices, extendSubscription, getApp, getAppStorekitConfig, getAuthorizedSubscriptionManagementUrl, getChartData, getChartOptions, getCustomer, getCustomerCenterConfig, getEntitlement, getInvoice, getOffering, getOverviewMetrics, getPackage, getPaywall, getPlayStoreOrAppStoreSubscriptionTransactions, getProduct, getProductStoreState, getProductStoreStateOperation, getProductsFromEntitlement, getProductsFromPackage, getPurchase, getRevenueMetric, getSubscription, getVirtualCurrency, getWebhookIntegration, grantCustomerEntitlement, listAppPublicApiKeys, listApps, listAuditLogs, listCollaborators, listCustomerActiveEntitlements, listCustomerAliases, listCustomerAttributes, listCustomerInvoices, listCustomers, listEntitlements, listOfferings, listPackages, listPaywalls, listProducts, listProjects, listPurchaseEntitlements, listPurchases, listSubscriptionEntitlements, listSubscriptions, listVirtualCurrencies, listVirtualCurrenciesBalances, listWebhookIntegrations, refundPlayStoreOrGalaxySubscriptionTransaction, refundPurchase, refundSubscription, restorePurchaseByOrderId, revokeCustomerGrantedEntitlement, searchPurchases, searchSubscriptions, setCustomerAttributes, setProductStoreState, transferCustomerData, unarchiveEntitlement, unarchiveOffering, unarchiveProduct, unarchiveVirtualCurrency, updateApp, updateEntitlement, updateOffering, updatePackage, updatePaywall, updateProduct, updateVirtualCurrenciesBalance, updateVirtualCurrency, updateWebhookIntegration, uploadProductStoreStateScreenshot };