---
title: "Get subscription (V2)"
method: GET
path: "/subscriptions/{id}/v2"
tags: ["Subscriptions"]
---

# Get subscription (V2)

`GET /subscriptions/{id}/v2`

Use when you need a subscription with related data (line items, prices, plan). Supports expand for detailed payloads without extra round-trips.

## Path parameters

- `id` string, required

## Query parameters

- `expand` string

## Response `200`

OK

- SubscriptionResponseV2
  - `active_pause_id` string — ActivePauseID references the current active pause configuration This will be null if no pause is active or scheduled
  - `auto_invoice_threshold` string — AutoInvoiceThreshold is the usage amount (in subscription currency) that triggers an intermediate invoice. Overrides the plan-level threshold when set. Nil means: inherit from the plan's threshold (which may also be nil = disabled).
  - `billing_anchor` string, date-time — BillingAnchor is the reference point that aligns future billing cycle dates. It sets the day of week for week intervals, the day of month for month and year intervals, and the month of year for year intervals. The timestamp is in UTC format.
  - `billing_cadence` 'RECURRING'
  - `billing_cycle` 'anniversary' | 'calendar'
  - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
  - `billing_period_count` integer — BillingPeriodCount is the total number units of the billing period.
  - `cancel_at` string, date-time — CancelAt is the date the subscription will be canceled
  - `cancel_at_period_end` boolean — CancelAtPeriodEnd is whether the subscription was canceled at the end of the current period
  - `cancelled_at` string, date-time — CanceledAt is the date the subscription was canceled
  - `collection_method` string — CollectionMethod determines how invoices are collected
  - `commitment_amount` string — CommitmentAmount is the minimum amount a customer commits to paying for a billing period
  - `commitment_duration` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
  - `coupon_associations` CouponAssociationResponse[] — CouponAssociations are included when "coupon_associations" is in expand parameter
    - `coupon` CouponResponse
      - `amount_off` string
      - `cadence` 'once' | 'repeated' | 'forever'
      - `coupon_code` string
      - `created_at` string, date-time
      - `created_by` string
      - `currency` string
      - `duration_in_periods` integer
      - `environment_id` string
      - `id` string
      - `max_redemptions` integer
      - `metadata` object
      - `name` string
      - `percentage_off` string
      - `redeem_after` string
      - `redeem_before` string
      - `rules` object
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `total_redemptions` integer
      - `type` 'fixed' | 'percentage'
      - `updated_at` string, date-time
      - `updated_by` string
    - `coupon_id` string
    - `created_at` string, date-time
    - `created_by` string
    - `end_date` string, date-time — Optional
    - `environment_id` string
    - `id` string
    - `metadata` object
    - `start_date` string, date-time
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string — Mandatory
    - `subscription_line_item` SubscriptionLineItemResponse
      - `addon_association_id` string
      - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
      - `billing_period_count` integer — from price at create; default 1
      - `commitment_amount` string — Commitment fields
      - `commitment_duration` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
      - `commitment_overage_factor` string
      - `commitment_quantity` string
      - `commitment_time_buckets` TypesTimeOfDayBucket[]
        - `commitment_type` 'amount' | 'quantity'
        - `commitment_value` string
        - `end` TypesBucket
          - `hour` integer
          - `minute` integer
        - `id` string — ID is server-assigned. Stable for the lifetime of the line item; invoice breakdown and analytics responses reference this ID.
        - `overage_factor` number
        - `price_id` string — PriceID is the SUBSCRIPTION-scoped price created at bucket-creation time. Immutable post-create; changing pricing requires a successor line item.
        - `start` TypesBucket
          - `hour` integer
          - `minute` integer
        - `true_up_enabled` boolean
      - `commitment_true_up_enabled` boolean
      - `commitment_type` 'amount' | 'quantity'
      - `commitment_windowed` boolean
      - `created_at` string, date-time
      - `created_by` string
      - `currency` string
      - `customer_id` string
      - `display_name` string
      - `end_date` string, date-time
      - `entity_id` string
      - `entity_type` 'plan' | 'addon' | 'subscription'
      - `environment_id` string
      - `id` string
      - `invoice_cadence` 'ARREAR' | 'ADVANCE'
      - `metadata` object
      - `meter` MeterMeter
        - `aggregation` MeterAggregation
          - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
          - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
          - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
          - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
          - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
          - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
        - `created_at` string, date-time
        - `created_by` string
        - `environment_id` string — EnvironmentID is the environment identifier for the meter
        - `event_name` string — EventName is the unique identifier for the event that this meter is tracking It is a mandatory field in the events table and hence being used as the primary matching field We can have multiple meters tracking the same event but with different filters and aggregation
        - `filters` MeterFilter[] — Filters define the criteria for the meter to be applied on the events before aggregation It also defines the possible values on which later the charges will be applied
          - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
          - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
        - `id` string — ID is the unique identifier for the meter
        - `name` string — Name is the display name of the meter
        - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `meter_display_name` string
      - `meter_id` string
      - `plan_display_name` string
      - `price` PriceResponse
        - `addon` AddonResponse
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grants` CreditGrantResponse[]
            - `addon_id` string
            - `cadence` 'ONETIME' | 'RECURRING'
            - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
            - `created_at` string, date-time
            - `created_by` string
            - `credit_grant_anchor` string, date-time
            - `credits` string
            - `end_date` string, date-time
            - `environment_id` string
            - `expiration_duration` integer
            - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
            - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
            - `id` string
            - `metadata` TypesMetadata
            - `name` string
            - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
            - `period_count` integer
            - `plan_id` string
            - `priority` integer
            - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
            - `start_date` string, date-time
            - `status` 'published' | 'deleted' | 'archived'
            - `subscription_id` string
            - `tenant_id` string
            - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
            - `updated_at` string, date-time
            - `updated_by` string
          - `description` string
          - `entitlements` EntitlementResponse[]
            - `addon` AddonResponse — recursive
            - `aggregation_mode` 'additive' | 'parallel'
            - `config_value` object
            - `created_at` string, date-time
            - `created_by` string
            - `display_order` integer
            - `end_date` string, date-time
            - `entity_id` string
            - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
            - `environment_id` string
            - `feature` FeatureResponse
              - …
            - `feature_id` string
            - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
            - `grant_duration_unit` 'hour' | 'day' | 'week'
            - `grant_duration_value` integer
            - `grant_measure` 'quantity' | 'amount'
            - `grant_quota` number
            - `id` string
            - `is_enabled` boolean
            - `is_soft_limit` boolean
            - `parent_entitlement_id` string
            - `plan` PlanResponse
              - …
            - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
            - `start_date` string, date-time
            - `static_value` string
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `updated_at` string, date-time
            - `updated_by` string
            - `usage_limit` integer
            - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
          - `environment_id` string
          - `id` string
          - `lookup_key` string
          - `metadata` object
          - `name` string
          - `prices` PriceResponse[] — Optional expanded fields
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
        - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
        - `billing_cadence` 'RECURRING'
        - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
        - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
        - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
        - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
        - `created_at` string, date-time
        - `created_by` string
        - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
        - `description` string — Description of the price
        - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
        - `display_name` string — DisplayName is the name of the price
        - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
        - `end_date` string, date-time — EndDate is the end date of the price
        - `entity_id` string — EntityID holds the value of the "entity_id" field.
        - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
        - `environment_id` string — EnvironmentID is the environment identifier for the price
        - `group` GroupResponse
          - `created_at` string, date-time
          - `entity_ids` string[]
          - `entity_type` string
          - `id` string
          - `lookup_key` string
          - `metadata` object
          - `name` string
          - `status` string
          - `updated_at` string, date-time
        - `group_id` string — GroupID references the group this price belongs to
        - `id` string — ID uuid identifier for the price
        - `invoice_cadence` 'ARREAR' | 'ADVANCE'
        - `lookup_key` string — LookupKey used for looking up the price in the database
        - `metadata` PriceJSONBMetadata
        - `meter` MeterResponse
          - `aggregation` MeterAggregation
            - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
            - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
            - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
            - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
            - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
            - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
          - `created_at` string, date-time
          - `event_name` string
          - `filters` MeterFilter[]
            - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
            - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
          - `id` string
          - `name` string
          - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
          - `status` string
          - `tenant_id` string
          - `updated_at` string, date-time
        - `meter_id` string — MeterID is the id of the meter for usage based pricing
        - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
        - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
        - `plan` PlanResponse
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grants` CreditGrantResponse[]
            - `addon_id` string
            - `cadence` 'ONETIME' | 'RECURRING'
            - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
            - `created_at` string, date-time
            - `created_by` string
            - `credit_grant_anchor` string, date-time
            - `credits` string
            - `end_date` string, date-time
            - `environment_id` string
            - `expiration_duration` integer
            - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
            - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
            - `id` string
            - `metadata` TypesMetadata
            - `name` string
            - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
            - `period_count` integer
            - `plan_id` string
            - `priority` integer
            - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
            - `start_date` string, date-time
            - `status` 'published' | 'deleted' | 'archived'
            - `subscription_id` string
            - `tenant_id` string
            - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
            - `updated_at` string, date-time
            - `updated_by` string
          - `description` string
          - `display_order` integer
          - `entitlements` EntitlementResponse[]
            - `addon` AddonResponse
              - …
            - `aggregation_mode` 'additive' | 'parallel'
            - `config_value` object
            - `created_at` string, date-time
            - `created_by` string
            - `display_order` integer
            - `end_date` string, date-time
            - `entity_id` string
            - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
            - `environment_id` string
            - `feature` FeatureResponse
              - …
            - `feature_id` string
            - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
            - `grant_duration_unit` 'hour' | 'day' | 'week'
            - `grant_duration_value` integer
            - `grant_measure` 'quantity' | 'amount'
            - `grant_quota` number
            - `id` string
            - `is_enabled` boolean
            - `is_soft_limit` boolean
            - `parent_entitlement_id` string
            - `plan` PlanResponse — recursive
            - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
            - `start_date` string, date-time
            - `static_value` string
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `updated_at` string, date-time
            - `updated_by` string
            - `usage_limit` integer
            - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
          - `environment_id` string
          - `id` string
          - `lookup_key` string
          - `metadata` TypesMetadata
          - `name` string
          - `prices` PriceResponse[] — TODO: Add inline addons
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
        - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
        - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
        - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
        - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
          - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
          - `unit_amount` string — unit_amount is the amount per unit for the given tier
          - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
        - `price_unit_type` 'FIAT' | 'CUSTOM'
        - `pricing_unit` PriceUnitResponse
          - `base_currency` string
          - `code` string
          - `conversion_rate` string
          - `created_at` string, date-time
          - `created_by` string
          - `environment_id` string
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `status` 'published' | 'deleted' | 'archived'
          - `symbol` string
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
        - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
        - `start_date` string, date-time — StartDate is the start date of the price
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `tier_mode` 'VOLUME' | 'SLAB'
        - `tiers` PricePriceTier[]
          - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
          - `unit_amount` string — unit_amount is the amount per unit for the given tier
          - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
        - `transform_quantity` PriceJSONBTransformQuantity
          - `divide_by` integer — Divide quantity by this number
          - `round` 'up' | 'down'
        - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
        - `type` 'USAGE' | 'FIXED'
        - `updated_at` string, date-time
        - `updated_by` string
      - `price_id` string
      - `price_type` 'USAGE' | 'FIXED'
      - `price_unit` string
      - `price_unit_id` string
      - `quantity` string
      - `start_date` string, date-time
      - `status` 'published' | 'deleted' | 'archived'
      - `subscription_id` string
      - `subscription_phase_id` string
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `subscription_line_item_id` string — Optional
    - `subscription_phase_id` string — Optional
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
  - `created_at` string, date-time
  - `created_by` string
  - `credit_grants` CreditGrantResponse[] — CreditGrants are included when "credit_grants" is in expand parameter
    - `addon_id` string
    - `cadence` 'ONETIME' | 'RECURRING'
    - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
    - `created_at` string, date-time
    - `created_by` string
    - `credit_grant_anchor` string, date-time
    - `credits` string
    - `end_date` string, date-time
    - `environment_id` string
    - `expiration_duration` integer
    - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
    - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
    - `id` string
    - `metadata` TypesMetadata
    - `name` string
    - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
    - `period_count` integer
    - `plan_id` string
    - `priority` integer
    - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
    - `start_date` string, date-time
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string
    - `tenant_id` string
    - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
    - `updated_at` string, date-time
    - `updated_by` string
  - `currency` string — Currency is the currency of the subscription in lowercase 3 digit ISO codes
  - `current_period_end` string, date-time — CurrentPeriodEnd is the end of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
  - `current_period_start` string, date-time — CurrentPeriodStart is the end of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
  - `customer` CustomerResponse — Customer response object containing all customer information
    - `address_city` string — AddressCity is the city of the customer's address
    - `address_country` string — AddressCountry is the country of the customer's address (ISO 3166-1 alpha-2)
    - `address_line1` string — AddressLine1 is the first line of the customer's address
    - `address_line2` string — AddressLine2 is the second line of the customer's address
    - `address_postal_code` string — AddressPostalCode is the postal code of the customer's address
    - `address_state` string — AddressState is the state of the customer's address
    - `contact` string — Contact is an optional contact number for the customer (e.g. phone)
    - `created_at` string, date-time
    - `created_by` string
    - `email` string — Email is the email of the customer
    - `environment_id` string — EnvironmentID is the environment identifier for the customer
    - `external_id` string — ExternalID is the external identifier for the customer
    - `id` string — ID is the unique identifier for the customer
    - `integrations` EntityIntegrationMappingResponse[]
      - `created_at` string, date-time
      - `created_by` string
      - `entity_id` string
      - `entity_type` 'customer' | 'plan' | 'invoice' | 'subscription' | 'payment' | 'credit_note' | 'addon' | 'item' | 'item_price' | 'price' | 'invoice_line_item'
      - `environment_id` string
      - `id` string
      - `metadata` object
      - `provider_entity_id` string
      - `provider_type` string
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `metadata` object — Metadata
    - `name` string — Name is the name of the customer
    - `status` 'published' | 'deleted' | 'archived'
    - `tenant_id` string
    - `timezone` string — Timezone is the customer's IANA timezone name (e.g. "Asia/Kolkata"). Defaults to "UTC". Inherited by subscriptions at creation time.
    - `updated_at` string, date-time
    - `updated_by` string
  - `customer_id` string — CustomerID is the identifier for the customer in our system
  - `enable_true_up` boolean
  - `end_date` string, date-time — EndDate is the end date of the subscription
  - `environment_id` string — EnvironmentID is the environment identifier for the subscription
  - `gateway_payment_method_id` string — GatewayPaymentMethodID is the gateway payment method ID for this subscription
  - `id` string — ID is the unique identifier for the subscription
  - `invoicing_customer_id` string — InvoicingCustomerID is the customer ID to use for invoicing This can differ from the subscription customer (e.g., parent company invoicing for child company)
  - `line_items` SubscriptionLineItemResponse[] — LineItems is expanded only if "subscription_line_items" is in expand parameter Each line item can optionally include expanded price data
    - `addon_association_id` string
    - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
    - `billing_period_count` integer — from price at create; default 1
    - `commitment_amount` string — Commitment fields
    - `commitment_duration` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
    - `commitment_overage_factor` string
    - `commitment_quantity` string
    - `commitment_time_buckets` TypesTimeOfDayBucket[]
      - `commitment_type` 'amount' | 'quantity'
      - `commitment_value` string
      - `end` TypesBucket
        - `hour` integer
        - `minute` integer
      - `id` string — ID is server-assigned. Stable for the lifetime of the line item; invoice breakdown and analytics responses reference this ID.
      - `overage_factor` number
      - `price_id` string — PriceID is the SUBSCRIPTION-scoped price created at bucket-creation time. Immutable post-create; changing pricing requires a successor line item.
      - `start` TypesBucket
        - `hour` integer
        - `minute` integer
      - `true_up_enabled` boolean
    - `commitment_true_up_enabled` boolean
    - `commitment_type` 'amount' | 'quantity'
    - `commitment_windowed` boolean
    - `created_at` string, date-time
    - `created_by` string
    - `currency` string
    - `customer_id` string
    - `display_name` string
    - `end_date` string, date-time
    - `entity_id` string
    - `entity_type` 'plan' | 'addon' | 'subscription'
    - `environment_id` string
    - `id` string
    - `invoice_cadence` 'ARREAR' | 'ADVANCE'
    - `metadata` object
    - `meter` MeterMeter
      - `aggregation` MeterAggregation
        - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
        - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
        - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
        - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
        - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
        - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
      - `created_at` string, date-time
      - `created_by` string
      - `environment_id` string — EnvironmentID is the environment identifier for the meter
      - `event_name` string — EventName is the unique identifier for the event that this meter is tracking It is a mandatory field in the events table and hence being used as the primary matching field We can have multiple meters tracking the same event but with different filters and aggregation
      - `filters` MeterFilter[] — Filters define the criteria for the meter to be applied on the events before aggregation It also defines the possible values on which later the charges will be applied
        - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
        - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
      - `id` string — ID is the unique identifier for the meter
      - `name` string — Name is the display name of the meter
      - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `meter_display_name` string
    - `meter_id` string
    - `plan_display_name` string
    - `price` PriceResponse
      - `addon` AddonResponse
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grants` CreditGrantResponse[]
          - `addon_id` string
          - `cadence` 'ONETIME' | 'RECURRING'
          - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grant_anchor` string, date-time
          - `credits` string
          - `end_date` string, date-time
          - `environment_id` string
          - `expiration_duration` integer
          - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
          - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
          - `period_count` integer
          - `plan_id` string
          - `priority` integer
          - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `start_date` string, date-time
          - `status` 'published' | 'deleted' | 'archived'
          - `subscription_id` string
          - `tenant_id` string
          - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
          - `updated_at` string, date-time
          - `updated_by` string
        - `description` string
        - `entitlements` EntitlementResponse[]
          - `addon` AddonResponse — recursive
          - `aggregation_mode` 'additive' | 'parallel'
          - `config_value` object
          - `created_at` string, date-time
          - `created_by` string
          - `display_order` integer
          - `end_date` string, date-time
          - `entity_id` string
          - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `environment_id` string
          - `feature` FeatureResponse
            - `alert_settings` TypesAlertSettings
              - …
            - `created_at` string, date-time
            - `created_by` string
            - `description` string
            - `environment_id` string
            - `group` GroupResponse
              - …
            - `group_id` string
            - `id` string
            - `lookup_key` string
            - `metadata` TypesMetadata
            - `meter` MeterResponse
              - …
            - `meter_id` string
            - `name` string
            - `reporting_unit` TypesReportingUnit
              - …
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `type` 'metered' | 'boolean' | 'static' | 'config'
            - `unit_plural` string
            - `unit_singular` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `feature_id` string
          - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
          - `grant_duration_unit` 'hour' | 'day' | 'week'
          - `grant_duration_value` integer
          - `grant_measure` 'quantity' | 'amount'
          - `grant_quota` number
          - `id` string
          - `is_enabled` boolean
          - `is_soft_limit` boolean
          - `parent_entitlement_id` string
          - `plan` PlanResponse
            - `created_at` string, date-time
            - `created_by` string
            - `credit_grants` CreditGrantResponse[]
              - …
            - `description` string
            - `display_order` integer
            - `entitlements` EntitlementResponse[]
            - `environment_id` string
            - `id` string
            - `lookup_key` string
            - `metadata` TypesMetadata
            - `name` string
            - `prices` PriceResponse[] — TODO: Add inline addons
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
          - `start_date` string, date-time
          - `static_value` string
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
          - `usage_limit` integer
          - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
        - `environment_id` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `prices` PriceResponse[] — Optional expanded fields
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
      - `billing_cadence` 'RECURRING'
      - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
      - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
      - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
      - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
      - `created_at` string, date-time
      - `created_by` string
      - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
      - `description` string — Description of the price
      - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
      - `display_name` string — DisplayName is the name of the price
      - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
      - `end_date` string, date-time — EndDate is the end date of the price
      - `entity_id` string — EntityID holds the value of the "entity_id" field.
      - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
      - `environment_id` string — EnvironmentID is the environment identifier for the price
      - `group` GroupResponse
        - `created_at` string, date-time
        - `entity_ids` string[]
        - `entity_type` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `status` string
        - `updated_at` string, date-time
      - `group_id` string — GroupID references the group this price belongs to
      - `id` string — ID uuid identifier for the price
      - `invoice_cadence` 'ARREAR' | 'ADVANCE'
      - `lookup_key` string — LookupKey used for looking up the price in the database
      - `metadata` PriceJSONBMetadata
      - `meter` MeterResponse
        - `aggregation` MeterAggregation
          - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
          - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
          - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
          - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
          - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
          - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
        - `created_at` string, date-time
        - `event_name` string
        - `filters` MeterFilter[]
          - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
          - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
        - `id` string
        - `name` string
        - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
        - `status` string
        - `tenant_id` string
        - `updated_at` string, date-time
      - `meter_id` string — MeterID is the id of the meter for usage based pricing
      - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
      - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
      - `plan` PlanResponse
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grants` CreditGrantResponse[]
          - `addon_id` string
          - `cadence` 'ONETIME' | 'RECURRING'
          - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grant_anchor` string, date-time
          - `credits` string
          - `end_date` string, date-time
          - `environment_id` string
          - `expiration_duration` integer
          - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
          - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
          - `period_count` integer
          - `plan_id` string
          - `priority` integer
          - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `start_date` string, date-time
          - `status` 'published' | 'deleted' | 'archived'
          - `subscription_id` string
          - `tenant_id` string
          - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
          - `updated_at` string, date-time
          - `updated_by` string
        - `description` string
        - `display_order` integer
        - `entitlements` EntitlementResponse[]
          - `addon` AddonResponse
            - `created_at` string, date-time
            - `created_by` string
            - `credit_grants` CreditGrantResponse[]
              - …
            - `description` string
            - `entitlements` EntitlementResponse[]
            - `environment_id` string
            - `id` string
            - `lookup_key` string
            - `metadata` object
            - `name` string
            - `prices` PriceResponse[] — Optional expanded fields
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `aggregation_mode` 'additive' | 'parallel'
          - `config_value` object
          - `created_at` string, date-time
          - `created_by` string
          - `display_order` integer
          - `end_date` string, date-time
          - `entity_id` string
          - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `environment_id` string
          - `feature` FeatureResponse
            - `alert_settings` TypesAlertSettings
              - …
            - `created_at` string, date-time
            - `created_by` string
            - `description` string
            - `environment_id` string
            - `group` GroupResponse
              - …
            - `group_id` string
            - `id` string
            - `lookup_key` string
            - `metadata` TypesMetadata
            - `meter` MeterResponse
              - …
            - `meter_id` string
            - `name` string
            - `reporting_unit` TypesReportingUnit
              - …
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `type` 'metered' | 'boolean' | 'static' | 'config'
            - `unit_plural` string
            - `unit_singular` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `feature_id` string
          - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
          - `grant_duration_unit` 'hour' | 'day' | 'week'
          - `grant_duration_value` integer
          - `grant_measure` 'quantity' | 'amount'
          - `grant_quota` number
          - `id` string
          - `is_enabled` boolean
          - `is_soft_limit` boolean
          - `parent_entitlement_id` string
          - `plan` PlanResponse — recursive
          - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
          - `start_date` string, date-time
          - `static_value` string
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
          - `usage_limit` integer
          - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
        - `environment_id` string
        - `id` string
        - `lookup_key` string
        - `metadata` TypesMetadata
        - `name` string
        - `prices` PriceResponse[] — TODO: Add inline addons
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
      - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
      - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
      - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
        - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
        - `unit_amount` string — unit_amount is the amount per unit for the given tier
        - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
      - `price_unit_type` 'FIAT' | 'CUSTOM'
      - `pricing_unit` PriceUnitResponse
        - `base_currency` string
        - `code` string
        - `conversion_rate` string
        - `created_at` string, date-time
        - `created_by` string
        - `environment_id` string
        - `id` string
        - `metadata` TypesMetadata
        - `name` string
        - `status` 'published' | 'deleted' | 'archived'
        - `symbol` string
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
      - `start_date` string, date-time — StartDate is the start date of the price
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `tier_mode` 'VOLUME' | 'SLAB'
      - `tiers` PricePriceTier[]
        - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
        - `unit_amount` string — unit_amount is the amount per unit for the given tier
        - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
      - `transform_quantity` PriceJSONBTransformQuantity
        - `divide_by` integer — Divide quantity by this number
        - `round` 'up' | 'down'
      - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
      - `type` 'USAGE' | 'FIXED'
      - `updated_at` string, date-time
      - `updated_by` string
    - `price_id` string
    - `price_type` 'USAGE' | 'FIXED'
    - `price_unit` string
    - `price_unit_id` string
    - `quantity` string
    - `start_date` string, date-time
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string
    - `subscription_phase_id` string
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
  - `lookup_key` string — LookupKey is the key used to lookup the subscription in our system
  - `metadata` TypesMetadata
  - `overage_factor` string — OverageFactor is a multiplier applied to usage beyond the commitment amount
  - `parent_subscription_id` string — ParentSubscriptionID is the parent subscription ID for hierarchy (e.g. child subscription under a parent)
  - `pause_status` 'none' | 'active' | 'scheduled' | 'completed' | 'cancelled'
  - `pauses` SubscriptionSubscriptionPause[] — Pauses are included when subscription has pause status
    - `created_at` string, date-time
    - `created_by` string
    - `environment_id` string — EnvironmentID is the environment identifier for the pause
    - `id` string — ID is the unique identifier for the subscription pause
    - `metadata` TypesMetadata
    - `original_period_end` string, date-time — OriginalPeriodEnd is the end of the billing period when the pause was created
    - `original_period_start` string, date-time — OriginalPeriodStart is the start of the billing period when the pause was created
    - `pause_end` string, date-time — PauseEnd is when the pause will end (null for indefinite)
    - `pause_mode` 'immediate' | 'scheduled' | 'period_end'
    - `pause_start` string, date-time — PauseStart is when the pause actually started
    - `pause_status` 'none' | 'active' | 'scheduled' | 'completed' | 'cancelled'
    - `reason` string — Reason is the reason for pausing
    - `resume_mode` 'immediate' | 'scheduled' | 'auto'
    - `resumed_at` string, date-time — ResumedAt is when the pause was actually ended (if manually resumed)
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string — SubscriptionID is the identifier for the subscription
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
  - `payment_behavior` string — PaymentBehavior determines how subscription payments are handled
  - `payment_terms` '15 NET' | '30 NET' | '45 NET' | '60 NET' | '75 NET' | '90 NET'
  - `phases` SubscriptionPhaseResponse[] — Phases are included when "phases" is in expand parameter
    - `created_at` string, date-time
    - `created_by` string
    - `end_date` string, date-time — EndDate is when the phase ends (nil if phase is still active or indefinite)
    - `environment_id` string — EnvironmentID is the environment identifier for the phase
    - `id` string — ID is the unique identifier for the subscription phase
    - `metadata` TypesMetadata
    - `start_date` string, date-time — StartDate is when the phase starts
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string — SubscriptionID is the identifier for the subscription
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
  - `plan` PlanResponse
    - `created_at` string, date-time
    - `created_by` string
    - `credit_grants` CreditGrantResponse[]
      - `addon_id` string
      - `cadence` 'ONETIME' | 'RECURRING'
      - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
      - `created_at` string, date-time
      - `created_by` string
      - `credit_grant_anchor` string, date-time
      - `credits` string
      - `end_date` string, date-time
      - `environment_id` string
      - `expiration_duration` integer
      - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
      - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
      - `id` string
      - `metadata` TypesMetadata
      - `name` string
      - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
      - `period_count` integer
      - `plan_id` string
      - `priority` integer
      - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
      - `start_date` string, date-time
      - `status` 'published' | 'deleted' | 'archived'
      - `subscription_id` string
      - `tenant_id` string
      - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
      - `updated_at` string, date-time
      - `updated_by` string
    - `description` string
    - `display_order` integer
    - `entitlements` EntitlementResponse[]
      - `addon` AddonResponse
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grants` CreditGrantResponse[]
          - `addon_id` string
          - `cadence` 'ONETIME' | 'RECURRING'
          - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grant_anchor` string, date-time
          - `credits` string
          - `end_date` string, date-time
          - `environment_id` string
          - `expiration_duration` integer
          - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
          - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
          - `period_count` integer
          - `plan_id` string
          - `priority` integer
          - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `start_date` string, date-time
          - `status` 'published' | 'deleted' | 'archived'
          - `subscription_id` string
          - `tenant_id` string
          - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
          - `updated_at` string, date-time
          - `updated_by` string
        - `description` string
        - `entitlements` EntitlementResponse[]
        - `environment_id` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `prices` PriceResponse[] — Optional expanded fields
          - `addon` AddonResponse — recursive
          - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
          - `billing_cadence` 'RECURRING'
          - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
          - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
          - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
          - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
          - `created_at` string, date-time
          - `created_by` string
          - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
          - `description` string — Description of the price
          - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
          - `display_name` string — DisplayName is the name of the price
          - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
          - `end_date` string, date-time — EndDate is the end date of the price
          - `entity_id` string — EntityID holds the value of the "entity_id" field.
          - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
          - `environment_id` string — EnvironmentID is the environment identifier for the price
          - `group` GroupResponse
            - `created_at` string, date-time
            - `entity_ids` string[]
            - `entity_type` string
            - `id` string
            - `lookup_key` string
            - `metadata` object
            - `name` string
            - `status` string
            - `updated_at` string, date-time
          - `group_id` string — GroupID references the group this price belongs to
          - `id` string — ID uuid identifier for the price
          - `invoice_cadence` 'ARREAR' | 'ADVANCE'
          - `lookup_key` string — LookupKey used for looking up the price in the database
          - `metadata` PriceJSONBMetadata
          - `meter` MeterResponse
            - `aggregation` MeterAggregation
              - …
            - `created_at` string, date-time
            - `event_name` string
            - `filters` MeterFilter[]
              - …
            - `id` string
            - `name` string
            - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
            - `status` string
            - `tenant_id` string
            - `updated_at` string, date-time
          - `meter_id` string — MeterID is the id of the meter for usage based pricing
          - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
          - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
          - `plan` PlanResponse — recursive
          - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
          - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
          - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
          - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
            - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
            - `unit_amount` string — unit_amount is the amount per unit for the given tier
            - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
          - `price_unit_type` 'FIAT' | 'CUSTOM'
          - `pricing_unit` PriceUnitResponse
            - `base_currency` string
            - `code` string
            - `conversion_rate` string
            - `created_at` string, date-time
            - `created_by` string
            - `environment_id` string
            - `id` string
            - `metadata` TypesMetadata
            - `name` string
            - `status` 'published' | 'deleted' | 'archived'
            - `symbol` string
            - `tenant_id` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
          - `start_date` string, date-time — StartDate is the start date of the price
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `tier_mode` 'VOLUME' | 'SLAB'
          - `tiers` PricePriceTier[]
            - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
            - `unit_amount` string — unit_amount is the amount per unit for the given tier
            - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
          - `transform_quantity` PriceJSONBTransformQuantity
            - `divide_by` integer — Divide quantity by this number
            - `round` 'up' | 'down'
          - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
          - `type` 'USAGE' | 'FIXED'
          - `updated_at` string, date-time
          - `updated_by` string
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `aggregation_mode` 'additive' | 'parallel'
      - `config_value` object
      - `created_at` string, date-time
      - `created_by` string
      - `display_order` integer
      - `end_date` string, date-time
      - `entity_id` string
      - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
      - `environment_id` string
      - `feature` FeatureResponse
        - `alert_settings` TypesAlertSettings
          - `alert_enabled` boolean
          - `critical` TypesAlertThreshold
            - `condition` 'above' | 'below'
            - `threshold` string
          - `info` TypesAlertThreshold
            - `condition` 'above' | 'below'
            - `threshold` string
          - `warning` TypesAlertThreshold
            - `condition` 'above' | 'below'
            - `threshold` string
        - `created_at` string, date-time
        - `created_by` string
        - `description` string
        - `environment_id` string
        - `group` GroupResponse
          - `created_at` string, date-time
          - `entity_ids` string[]
          - `entity_type` string
          - `id` string
          - `lookup_key` string
          - `metadata` object
          - `name` string
          - `status` string
          - `updated_at` string, date-time
        - `group_id` string
        - `id` string
        - `lookup_key` string
        - `metadata` TypesMetadata
        - `meter` MeterResponse
          - `aggregation` MeterAggregation
            - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
            - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
            - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
            - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
            - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
            - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
          - `created_at` string, date-time
          - `event_name` string
          - `filters` MeterFilter[]
            - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
            - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
          - `id` string
          - `name` string
          - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
          - `status` string
          - `tenant_id` string
          - `updated_at` string, date-time
        - `meter_id` string
        - `name` string
        - `reporting_unit` TypesReportingUnit
          - `conversion_rate` number — Multiplier: reporting_unit_value = unit_value * conversion_rate; must be > 0
          - `unit_plural` string — Display unit label, plural (e.g. "seconds")
          - `unit_singular` string — Display unit label, singular (e.g. "second")
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `type` 'metered' | 'boolean' | 'static' | 'config'
        - `unit_plural` string
        - `unit_singular` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `feature_id` string
      - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
      - `grant_duration_unit` 'hour' | 'day' | 'week'
      - `grant_duration_value` integer
      - `grant_measure` 'quantity' | 'amount'
      - `grant_quota` number
      - `id` string
      - `is_enabled` boolean
      - `is_soft_limit` boolean
      - `parent_entitlement_id` string
      - `plan` PlanResponse — recursive
      - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
      - `start_date` string, date-time
      - `static_value` string
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
      - `usage_limit` integer
      - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
    - `environment_id` string
    - `id` string
    - `lookup_key` string
    - `metadata` TypesMetadata
    - `name` string
    - `prices` PriceResponse[] — TODO: Add inline addons
      - `addon` AddonResponse
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grants` CreditGrantResponse[]
          - `addon_id` string
          - `cadence` 'ONETIME' | 'RECURRING'
          - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
          - `created_at` string, date-time
          - `created_by` string
          - `credit_grant_anchor` string, date-time
          - `credits` string
          - `end_date` string, date-time
          - `environment_id` string
          - `expiration_duration` integer
          - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
          - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
          - `period_count` integer
          - `plan_id` string
          - `priority` integer
          - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `start_date` string, date-time
          - `status` 'published' | 'deleted' | 'archived'
          - `subscription_id` string
          - `tenant_id` string
          - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
          - `updated_at` string, date-time
          - `updated_by` string
        - `description` string
        - `entitlements` EntitlementResponse[]
          - `addon` AddonResponse — recursive
          - `aggregation_mode` 'additive' | 'parallel'
          - `config_value` object
          - `created_at` string, date-time
          - `created_by` string
          - `display_order` integer
          - `end_date` string, date-time
          - `entity_id` string
          - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
          - `environment_id` string
          - `feature` FeatureResponse
            - `alert_settings` TypesAlertSettings
              - …
            - `created_at` string, date-time
            - `created_by` string
            - `description` string
            - `environment_id` string
            - `group` GroupResponse
              - …
            - `group_id` string
            - `id` string
            - `lookup_key` string
            - `metadata` TypesMetadata
            - `meter` MeterResponse
              - …
            - `meter_id` string
            - `name` string
            - `reporting_unit` TypesReportingUnit
              - …
            - `status` 'published' | 'deleted' | 'archived'
            - `tenant_id` string
            - `type` 'metered' | 'boolean' | 'static' | 'config'
            - `unit_plural` string
            - `unit_singular` string
            - `updated_at` string, date-time
            - `updated_by` string
          - `feature_id` string
          - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
          - `grant_duration_unit` 'hour' | 'day' | 'week'
          - `grant_duration_value` integer
          - `grant_measure` 'quantity' | 'amount'
          - `grant_quota` number
          - `id` string
          - `is_enabled` boolean
          - `is_soft_limit` boolean
          - `parent_entitlement_id` string
          - `plan` PlanResponse — recursive
          - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
          - `start_date` string, date-time
          - `static_value` string
          - `status` 'published' | 'deleted' | 'archived'
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
          - `usage_limit` integer
          - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
        - `environment_id` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `prices` PriceResponse[] — Optional expanded fields
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
      - `billing_cadence` 'RECURRING'
      - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
      - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
      - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
      - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
      - `created_at` string, date-time
      - `created_by` string
      - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
      - `description` string — Description of the price
      - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
      - `display_name` string — DisplayName is the name of the price
      - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
      - `end_date` string, date-time — EndDate is the end date of the price
      - `entity_id` string — EntityID holds the value of the "entity_id" field.
      - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
      - `environment_id` string — EnvironmentID is the environment identifier for the price
      - `group` GroupResponse
        - `created_at` string, date-time
        - `entity_ids` string[]
        - `entity_type` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `status` string
        - `updated_at` string, date-time
      - `group_id` string — GroupID references the group this price belongs to
      - `id` string — ID uuid identifier for the price
      - `invoice_cadence` 'ARREAR' | 'ADVANCE'
      - `lookup_key` string — LookupKey used for looking up the price in the database
      - `metadata` PriceJSONBMetadata
      - `meter` MeterResponse
        - `aggregation` MeterAggregation
          - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
          - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
          - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
          - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
          - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
          - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
        - `created_at` string, date-time
        - `event_name` string
        - `filters` MeterFilter[]
          - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
          - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
        - `id` string
        - `name` string
        - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
        - `status` string
        - `tenant_id` string
        - `updated_at` string, date-time
      - `meter_id` string — MeterID is the id of the meter for usage based pricing
      - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
      - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
      - `plan` PlanResponse — recursive
      - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
      - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
      - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
      - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
        - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
        - `unit_amount` string — unit_amount is the amount per unit for the given tier
        - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
      - `price_unit_type` 'FIAT' | 'CUSTOM'
      - `pricing_unit` PriceUnitResponse
        - `base_currency` string
        - `code` string
        - `conversion_rate` string
        - `created_at` string, date-time
        - `created_by` string
        - `environment_id` string
        - `id` string
        - `metadata` TypesMetadata
        - `name` string
        - `status` 'published' | 'deleted' | 'archived'
        - `symbol` string
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
      - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
      - `start_date` string, date-time — StartDate is the start date of the price
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `tier_mode` 'VOLUME' | 'SLAB'
      - `tiers` PricePriceTier[]
        - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
        - `unit_amount` string — unit_amount is the amount per unit for the given tier
        - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
      - `transform_quantity` PriceJSONBTransformQuantity
        - `divide_by` integer — Divide quantity by this number
        - `round` 'up' | 'down'
      - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
      - `type` 'USAGE' | 'FIXED'
      - `updated_at` string, date-time
      - `updated_by` string
    - `status` 'published' | 'deleted' | 'archived'
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
  - `plan_id` string — PlanID is the identifier for the plan in our system
  - `plan_prices_out_of_sync` boolean — PlanPricesOutOfSync is true when the subscription's synced_price_sequence is behind the plan's current max prices.sequence — i.e. plan-price changes have not yet been reconciled into this subscription's line items.
  - `proration_behavior` 'create_prorations' | 'none'
  - `start_date` string, date-time — StartDate is the start date of the subscription
  - `status` 'published' | 'deleted' | 'archived'
  - `subscription_status` 'active' | 'paused' | 'cancelled' | 'incomplete' | 'trialing' | 'draft'
  - `subscription_type` 'standalone' | 'delegated_invoicing' | 'parent' | 'inherited' | 'grouped_invoicing'
  - `synced_price_sequence` integer — SyncedPriceSequence is the plan-price sequence up to which this subscription's line items have been reconciled. Bumped by the plan-price sync after a successful pass.
  - `tenant_id` string
  - `timezone` string
  - `trial_end` string, date-time — TrialEnd is the end date of the trial period
  - `trial_start` string, date-time — TrialStart is the start date of the trial period
  - `updated_at` string, date-time
  - `updated_by` string
  - `version` integer — Version is used for optimistic locking

## Other responses

- `400` — Invalid request
- `500` — Server error

---

[API](https://skmtc.net/flexprice/apis/flexprice-api.md) · [All operations](https://skmtc.net/flexprice/apis/flexprice-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/flexprice/flexprice-api/versions/f0601ed97bd3/schema)
