openapi: 3.0.0 info: title: Schematic accesstokens planbundle API version: '0.1' description: Schematic API x-rules-engine-schema-version: v97288f60 servers: - url: https://api.schematichq.com security: - ApiKeyAuth: [] tags: - name: planbundle paths: /plan-bundles: post: operationId: createPlanBundle summary: Create plan bundle tags: - planbundle requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePlanBundleRequestBody' required: true responses: '201': description: Created content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PlanBundleResponseData' params: type: object description: Input parameters title: CreatePlanBundleParams required: - data - params title: CreatePlanBundleResponse '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' /plan-bundles/{plan_bundle_id}: put: operationId: updatePlanBundle summary: Update plan bundle tags: - planbundle parameters: - name: plan_bundle_id in: path description: plan_bundle_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdatePlanBundleRequestBody' required: true responses: '200': description: OK content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PlanBundleResponseData' params: type: object description: Input parameters title: UpdatePlanBundleParams required: - data - params title: UpdatePlanBundleResponse '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' components: schemas: MetricPeriod: type: string enum: - all_time - current_day - current_month - current_week BillingCreditRolloverPolicy: type: string enum: - expire - none - rollover BillingProductPlanResponseData: type: object properties: account_id: type: string billing_product_id: type: string charge_type: $ref: '#/components/schemas/ChargeType' controlled_by: $ref: '#/components/schemas/BillingProviderType' environment_id: type: string is_trialable: type: boolean monthly_price_id: type: string nullable: true one_time_price_id: type: string nullable: true plan_id: type: string trial_days: type: integer format: int64 nullable: true yearly_price_id: type: string nullable: true required: - account_id - charge_type - environment_id - plan_id - billing_product_id - controlled_by - is_trialable title: BillingProductPlanResponseData CreditCurrencyPriceResponseData: type: object properties: currency: type: string price: $ref: '#/components/schemas/BillingPriceResponseData' required: - currency title: CreditCurrencyPriceResponseData BillingPriceScheme: type: string enum: - per_unit - tiered PlanEntitlementResponseData: type: object properties: billing_linked_resource: $ref: '#/components/schemas/BillingLinkedResourceResponseData' billing_threshold: type: integer format: int64 nullable: true consumption_rate: type: number nullable: true created_at: type: string format: date-time currency_prices: type: array items: $ref: '#/components/schemas/EntitlementCurrencyPricesResponseData' maxItems: 1000 environment_id: type: string feature: $ref: '#/components/schemas/FeatureResponseData' feature_id: type: string id: type: string metered_monthly_price: $ref: '#/components/schemas/BillingPriceView' metered_yearly_price: $ref: '#/components/schemas/BillingPriceView' metric_period: allOf: - $ref: '#/components/schemas/MetricPeriod' nullable: true metric_period_month_reset: allOf: - $ref: '#/components/schemas/MetricPeriodMonthReset' nullable: true plan: $ref: '#/components/schemas/PlanResponseData' plan_id: type: string price_behavior: allOf: - $ref: '#/components/schemas/EntitlementPriceBehavior' nullable: true rule_id: type: string rule_id_usage_exceeded: type: string nullable: true soft_limit: type: integer format: int64 nullable: true updated_at: type: string format: date-time usage_based_product: $ref: '#/components/schemas/BillingProductResponseData' value_bool: type: boolean nullable: true value_credit: $ref: '#/components/schemas/BillingCreditResponseData' value_numeric: type: integer format: int64 nullable: true value_trait: $ref: '#/components/schemas/EntityTraitDefinitionResponseData' value_trait_id: type: string nullable: true value_type: $ref: '#/components/schemas/EntitlementValueType' required: - created_at - currency_prices - environment_id - feature_id - id - plan_id - rule_id - updated_at - value_type title: PlanEntitlementResponseData PlanBundleAction: type: string enum: - create - update - delete BillingProductPriceTierResponseData: type: object properties: flat_amount: type: integer format: int64 nullable: true per_unit_price: type: integer format: int64 nullable: true per_unit_price_decimal: type: string nullable: true up_to: type: integer format: int64 nullable: true title: BillingProductPriceTierResponseData CreateEntitlementInBundleRequestBody: type: object properties: billing_product_id: type: string nullable: true billing_threshold: type: integer format: int64 nullable: true maximum: 9999999999999 minimum: 50 credit_consumption_rate: type: number nullable: true currency: type: string nullable: true currency_prices: type: array items: $ref: '#/components/schemas/CurrencyPriceRequestBody' nullable: true maxItems: 50 feature_id: type: string metric_period: allOf: - $ref: '#/components/schemas/MetricPeriod' nullable: true metric_period_month_reset: allOf: - $ref: '#/components/schemas/MetricPeriodMonthReset' nullable: true monthly_metered_price_id: type: string nullable: true deprecated: true monthly_price_tiers: type: array items: $ref: '#/components/schemas/CreatePriceTierRequestBody' nullable: true maxItems: 100 monthly_unit_price: type: integer format: int64 nullable: true monthly_unit_price_decimal: type: string nullable: true overage_billing_product_id: type: string nullable: true deprecated: true plan_id: type: string plan_version_id: type: string nullable: true price_behavior: allOf: - $ref: '#/components/schemas/EntitlementPriceBehavior' nullable: true price_tiers: type: array description: Use MonthlyPriceTiers or YearlyPriceTiers instead items: $ref: '#/components/schemas/CreatePriceTierRequestBody' nullable: true deprecated: true maxItems: 100 soft_limit: type: integer format: int64 nullable: true tier_mode: allOf: - $ref: '#/components/schemas/BillingTiersMode' nullable: true value_bool: type: boolean nullable: true value_credit_id: type: string nullable: true value_numeric: type: integer format: int64 nullable: true value_trait_id: type: string nullable: true value_type: $ref: '#/components/schemas/EntitlementValueType' yearly_metered_price_id: type: string nullable: true deprecated: true yearly_price_tiers: type: array items: $ref: '#/components/schemas/CreatePriceTierRequestBody' nullable: true maxItems: 100 yearly_unit_price: type: integer format: int64 nullable: true yearly_unit_price_decimal: type: string nullable: true required: - plan_id - feature_id - value_type title: CreateEntitlementInBundleRequestBody ChargeType: type: string enum: - free - one_time - recurring UpdatePlanTraitTraitRequestBody: type: object properties: trait_id: type: string trait_value: type: string required: - trait_id - trait_value title: UpdatePlanTraitTraitRequestBody PlanBundleCreditGrantRequestBody: type: object properties: action: $ref: '#/components/schemas/PlanBundleAction' create_req: $ref: '#/components/schemas/CreateBillingPlanCreditGrantRequestBody' credit_grant_id: type: string nullable: true delete_req: $ref: '#/components/schemas/DeleteBillingPlanCreditGrantRequestBody' update_req: $ref: '#/components/schemas/UpdateBillingPlanCreditGrantRequestBody' required: - action title: PlanBundleCreditGrantRequestBody EntitlementValueType: type: string enum: - boolean - credit - numeric - trait - unknown - unlimited UpdatePlanRequestBody: type: object properties: description: type: string nullable: true maxLength: 1024 minLength: 0 icon: allOf: - $ref: '#/components/schemas/PlanIcon' nullable: true name: type: string maxLength: 256 minLength: 1 required: - name title: UpdatePlanRequestBody BillingPriceUsageType: type: string enum: - licensed - metered FeatureResponseData: type: object properties: created_at: type: string format: date-time description: type: string event_subtype: type: string nullable: true feature_type: $ref: '#/components/schemas/FeatureType' icon: type: string id: type: string lifecycle_phase: allOf: - $ref: '#/components/schemas/FeatureLifecyclePhase' nullable: true maintainer_account_member_id: type: string nullable: true name: type: string plural_name: type: string nullable: true singular_name: type: string nullable: true trait_id: type: string nullable: true updated_at: type: string format: date-time required: - id - name - description - feature_type - icon - created_at - updated_at title: FeatureResponseData BillingPlanCreditGrantResetStart: type: string enum: - billing_period - first_of_month UpsertBillingProductRequestBody: type: object properties: billing_product_id: type: string nullable: true charge_type: $ref: '#/components/schemas/ChargeType' currency: type: string nullable: true currency_prices: type: array items: $ref: '#/components/schemas/PlanCurrencyPriceRequestBody' nullable: true maxItems: 50 is_trialable: type: boolean monthly_price: type: integer format: int64 nullable: true monthly_price_id: type: string nullable: true one_time_price: type: integer format: int64 nullable: true one_time_price_id: type: string nullable: true trial_days: type: integer format: int64 nullable: true yearly_price: type: integer format: int64 nullable: true yearly_price_id: type: string nullable: true required: - charge_type - is_trialable title: UpsertBillingProductRequestBody ApiError: type: object properties: error: type: string description: Error message required: - error PlanBundleEntitlementRequestBody: type: object properties: action: $ref: '#/components/schemas/PlanBundleAction' entitlement_id: type: string nullable: true req: $ref: '#/components/schemas/CreateEntitlementInBundleRequestBody' required: - action title: PlanBundleEntitlementRequestBody BillingCreditExpiryUnit: type: string enum: - billing_periods - days DeleteBillingPlanCreditGrantRequestBody: type: object properties: apply_to_existing: type: boolean nullable: true title: DeleteBillingPlanCreditGrantRequestBody PlanTraitResponseData: type: object properties: account_id: type: string created_at: type: string format: date-time environment_id: type: string id: type: string plan_id: type: string plan_type: type: string trait_id: type: string trait_value: type: string updated_at: type: string format: date-time required: - id - account_id - environment_id - plan_id - plan_type - trait_id - trait_value - created_at - updated_at title: PlanTraitResponseData BillingLinkedResourceResponseData: type: object properties: billing_provider: $ref: '#/components/schemas/BillingProviderType' external_resource_id: type: string originator: $ref: '#/components/schemas/BillingProviderType' required: - billing_provider - external_resource_id - originator title: BillingLinkedResourceResponseData FeatureType: type: string enum: - boolean - event - trait BillingCreditExpiryType: type: string enum: - duration - end_of_billing_period - end_of_next_billing_period - end_of_trial - no_expiry EntityType: type: string enum: - company - user MetricPeriodMonthReset: type: string enum: - billing_cycle - first_of_month UpdatePlanBundleRequestBody: type: object properties: billing_product: $ref: '#/components/schemas/UpsertBillingProductRequestBody' credit_grants: type: array items: $ref: '#/components/schemas/PlanBundleCreditGrantRequestBody' maxItems: 100 entitlements: type: array items: $ref: '#/components/schemas/PlanBundleEntitlementRequestBody' maxItems: 100 plan: $ref: '#/components/schemas/UpdatePlanRequestBody' plan_version_id: type: string nullable: true traits: type: array items: $ref: '#/components/schemas/UpdatePlanTraitTraitRequestBody' maxItems: 100 required: - entitlements title: UpdatePlanBundleRequestBody BillingProviderType: type: string enum: - orb - schematic - stripe BillingCreditResponseData: type: object properties: burn_strategy: $ref: '#/components/schemas/BillingCreditBurnStrategy' cost_editable: type: boolean created_at: type: string format: date-time currency_prices: type: array items: $ref: '#/components/schemas/CreditCurrencyPriceResponseData' maxItems: 256 default_expiry_unit: $ref: '#/components/schemas/BillingCreditExpiryUnit' default_expiry_unit_count: type: integer format: int64 nullable: true default_rollover_policy: $ref: '#/components/schemas/BillingCreditRolloverPolicy' description: type: string icon: type: string nullable: true id: type: string name: type: string plural_name: type: string nullable: true price: $ref: '#/components/schemas/BillingPriceResponseData' product: $ref: '#/components/schemas/BillingProductResponseData' singular_name: type: string nullable: true updated_at: type: string format: date-time required: - id - name - description - default_expiry_unit - default_rollover_policy - burn_strategy - cost_editable - currency_prices - created_at - updated_at title: BillingCreditResponseData PlanIcon: type: string enum: - amber - blue - blueGray - blueGreen - cyan - emerald - fuchsia - gray - green - indigo - lightBlue - lime - orange - pink - purple - red - redOrange - rose - sky - slate - teal - trueGray - violet - warmGray - yellow BillingTiersMode: type: string enum: - graduated - volume BillingPlanCreditGrantResetType: type: string enum: - no_reset - plan_period BillingPlanCreditGrantResetCadence: type: string enum: - daily - monthly - weekly - yearly PlanCurrencyPriceRequestBody: type: object properties: currency: type: string maxLength: 3 monthly_price: type: integer format: int64 nullable: true one_time_price: type: integer format: int64 nullable: true yearly_price: type: integer format: int64 nullable: true required: - currency title: PlanCurrencyPriceRequestBody EntityTraitDefinitionResponseData: type: object properties: created_at: type: string format: date-time display_name: type: string entity_type: $ref: '#/components/schemas/EntityType' hierarchy: type: array items: type: string maxItems: 1000 id: type: string trait_type: $ref: '#/components/schemas/TraitType' updated_at: type: string format: date-time required: - created_at - display_name - entity_type - hierarchy - id - trait_type - updated_at title: EntityTraitDefinitionResponseData BillingCreditBurnStrategy: type: string enum: - expiration_priority - first_in_first_out - last_in_first_out - plan_first_then_credit_bundles_first_in_first_out CurrencyPriceRequestBody: type: object properties: currency: type: string maxLength: 3 monthly_price_tiers: type: array items: $ref: '#/components/schemas/CreatePriceTierRequestBody' nullable: true maxItems: 100 monthly_unit_price: type: integer format: int64 nullable: true monthly_unit_price_decimal: type: string nullable: true yearly_price_tiers: type: array items: $ref: '#/components/schemas/CreatePriceTierRequestBody' nullable: true maxItems: 100 yearly_unit_price: type: integer format: int64 nullable: true yearly_unit_price_decimal: type: string nullable: true required: - currency title: CurrencyPriceRequestBody CreatePriceTierRequestBody: type: object properties: flat_amount: type: integer format: int64 nullable: true per_unit_price: type: integer format: int64 nullable: true per_unit_price_decimal: type: string nullable: true up_to: type: integer format: int64 nullable: true title: CreatePriceTierRequestBody BillingPriceResponseData: type: object properties: currency: type: string external_price_id: type: string id: type: string interval: $ref: '#/components/schemas/BillingProductPriceInterval' nickname: type: string nullable: true price: type: integer format: int64 price_decimal: type: string nullable: true provider_type: $ref: '#/components/schemas/BillingProviderType' scheme: $ref: '#/components/schemas/BillingPriceScheme' required: - currency - external_price_id - id - interval - price - provider_type - scheme title: BillingPriceResponseData CreatePlanRequestBody: type: object properties: description: type: string maxLength: 1024 minLength: 0 icon: allOf: - $ref: '#/components/schemas/PlanIcon' nullable: true name: type: string maxLength: 256 minLength: 1 plan_type: $ref: '#/components/schemas/PlanType' required: - description - name - plan_type title: CreatePlanRequestBody UpdateBillingPlanCreditGrantRequestBody: type: object properties: apply_to_existing: type: boolean nullable: true auto_topup_amount: type: integer format: int64 nullable: true minimum: 1 auto_topup_amount_type: allOf: - $ref: '#/components/schemas/CreditAutoTopupAmountType' nullable: true auto_topup_enabled: type: boolean nullable: true auto_topup_expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true auto_topup_expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true auto_topup_expiry_unit_count: type: integer format: int64 nullable: true minimum: 1 auto_topup_threshold_credits: type: integer format: int64 nullable: true minimum: 0 auto_topup_threshold_percent: type: integer format: int64 nullable: true maximum: 100 minimum: 1 credit_amount: type: integer format: int64 nullable: true maximum: 9999999999 minimum: 0 expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true expiry_unit_count: type: integer format: int64 nullable: true minimum: 1 reset_cadence: $ref: '#/components/schemas/BillingPlanCreditGrantResetCadence' reset_start: $ref: '#/components/schemas/BillingPlanCreditGrantResetStart' reset_type: allOf: - $ref: '#/components/schemas/BillingPlanCreditGrantResetType' nullable: true required: - reset_cadence - reset_start title: UpdateBillingPlanCreditGrantRequestBody PlanBundleResponseData: type: object properties: billing_product: $ref: '#/components/schemas/BillingProductPlanResponseData' credit_grants: type: array items: $ref: '#/components/schemas/BillingPlanCreditGrantResponseData' maxItems: 1000 entitlements: type: array items: $ref: '#/components/schemas/PlanEntitlementResponseData' maxItems: 1000 plan: $ref: '#/components/schemas/PlanResponseData' traits: type: array items: $ref: '#/components/schemas/PlanTraitResponseData' maxItems: 1000 title: PlanBundleResponseData BillingPlanCreditGrantResponseData: type: object properties: auto_topup_amount: type: integer format: int64 nullable: true auto_topup_amount_type: type: string nullable: true auto_topup_enabled: type: boolean auto_topup_expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true auto_topup_expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true auto_topup_expiry_unit_count: type: integer format: int64 nullable: true auto_topup_threshold_credits: type: integer format: int64 nullable: true auto_topup_threshold_percent: type: integer format: int64 nullable: true created_at: type: string format: date-time credit: $ref: '#/components/schemas/BillingCreditResponseData' credit_amount: type: integer format: int64 credit_id: type: string credit_name: type: string description: Use credit.name from the nested credit object instead deprecated: true credit_plural_name: type: string description: Use plural_name from the nested credit object instead nullable: true deprecated: true credit_singular_name: type: string description: Use singular_name from the nested credit object instead nullable: true deprecated: true expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true expiry_unit_count: type: integer format: int64 nullable: true id: type: string plan: $ref: '#/components/schemas/PreviewObjectResponseData' plan_id: type: string plan_name: type: string description: Use plan.name from the nested plan object instead deprecated: true plan_version_id: type: string nullable: true reset_cadence: allOf: - $ref: '#/components/schemas/BillingPlanCreditGrantResetCadence' nullable: true reset_start: allOf: - $ref: '#/components/schemas/BillingPlanCreditGrantResetStart' nullable: true reset_type: allOf: - $ref: '#/components/schemas/BillingPlanCreditGrantResetType' nullable: true updated_at: type: string format: date-time required: - id - credit_id - plan_id - plan_name - credit_amount - credit_name - auto_topup_enabled - created_at - updated_at title: BillingPlanCreditGrantResponseData CreditAutoTopupAmountType: type: string enum: - credit CreatePlanBundleRequestBody: type: object properties: billing_product: $ref: '#/components/schemas/UpsertBillingProductRequestBody' credit_grants: type: array items: $ref: '#/components/schemas/PlanBundleCreditGrantRequestBody' maxItems: 100 entitlements: type: array items: $ref: '#/components/schemas/PlanBundleEntitlementRequestBody' maxItems: 100 plan: $ref: '#/components/schemas/CreatePlanRequestBody' traits: type: array items: $ref: '#/components/schemas/UpdatePlanTraitTraitRequestBody' maxItems: 100 required: - entitlements title: CreatePlanBundleRequestBody CreateBillingPlanCreditGrantRequestBody: type: object properties: apply_to_existing: type: boolean nullable: true auto_topup_amount: type: integer format: int64 nullable: true minimum: 1 auto_topup_amount_type: allOf: - $ref: '#/components/schemas/CreditAutoTopupAmountType' nullable: true auto_topup_enabled: type: boolean nullable: true auto_topup_expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true auto_topup_expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true auto_topup_expiry_unit_count: type: integer format: int64 nullable: true minimum: 1 auto_topup_threshold_credits: type: integer format: int64 nullable: true minimum: 0 auto_topup_threshold_percent: type: integer format: int64 nullable: true maximum: 100 minimum: 1 credit_amount: type: integer format: int64 maximum: 9999999999 minimum: 0 credit_id: type: string expiry_type: allOf: - $ref: '#/components/schemas/BillingCreditExpiryType' nullable: true expiry_unit: allOf: - $ref: '#/components/schemas/BillingCreditExpiryUnit' nullable: true expiry_unit_count: type: integer format: int64 nullable: true minimum: 1 plan_id: type: string plan_version_id: type: string nullable: true reset_cadence: $ref: '#/components/schemas/BillingPlanCreditGrantResetCadence' reset_start: $ref: '#/components/schemas/BillingPlanCreditGrantResetStart' reset_type: allOf: - $ref: '#/components/schemas/BillingPlanCreditGrantResetType' nullable: true required: - reset_cadence - reset_start - credit_id - plan_id - credit_amount title: CreateBillingPlanCreditGrantRequestBody BillingProductPriceInterval: type: string enum: - day - month - one-time - year BillingProductResponseData: type: object properties: account_id: type: string created_at: type: string format: date-time currency: type: string description: Deprecated; currencies are associated with prices, not products nullable: true deprecated: true environment_id: type: string external_id: type: string is_active: type: boolean name: type: string price: type: number price_decimal: type: string nullable: true product_id: type: string provider_type: $ref: '#/components/schemas/BillingProviderType' quantity: type: number updated_at: type: string format: date-time required: - account_id - created_at - environment_id - external_id - is_active - name - price - product_id - provider_type - quantity - updated_at title: BillingProductResponseData TraitType: type: string enum: - boolean - currency - date - number - string - url EntitlementCurrencyPricesResponseData: type: object properties: currency: type: string monthly_price: $ref: '#/components/schemas/BillingPriceView' yearly_price: $ref: '#/components/schemas/BillingPriceView' required: - currency title: EntitlementCurrencyPricesResponseData PreviewObjectResponseData: type: object properties: description: type: string nullable: true id: type: string image_url: type: string nullable: true name: type: string required: - id - name title: PreviewObjectResponseData EntitlementPriceBehavior: type: string enum: - credit_burndown - overage - pay_as_you_go - pay_in_advance - tier PlanType: type: string enum: - plan - add_on BillingPriceView: type: object properties: billing_scheme: $ref: '#/components/schemas/BillingPriceScheme' created_at: type: string format: date-time currency: type: string id: type: string interval: $ref: '#/components/schemas/BillingProductPriceInterval' is_active: type: boolean meter_event_name: type: string nullable: true meter_event_payload_key: type: string nullable: true meter_id: type: string nullable: true nickname: type: string nullable: true package_size: type: integer format: int64 price: type: integer format: int64 price_decimal: type: string nullable: true price_external_id: type: string price_id: type: string price_tier: type: array items: $ref: '#/components/schemas/BillingProductPriceTierResponseData' maxItems: 100 product_external_id: type: string product_id: type: string product_name: type: string provider_type: $ref: '#/components/schemas/BillingProviderType' tiers_mode: allOf: - $ref: '#/components/schemas/BillingTiersMode' nullable: true updated_at: type: string format: date-time usage_type: $ref: '#/components/schemas/BillingPriceUsageType' required: - id - billing_scheme - created_at - currency - interval - is_active - package_size - price - price_external_id - product_external_id - provider_type - updated_at - usage_type - price_id - product_id - product_name - price_tier title: BillingPriceView FeatureLifecyclePhase: type: string enum: - add_on - alpha - beta - deprecated - ga - inactive - in_plan - internal_testing - legacy PlanResponseData: type: object properties: audience_type: type: string nullable: true deprecated: true company_id: type: string nullable: true copied_from_plan_id: type: string nullable: true created_at: type: string format: date-time description: type: string icon: $ref: '#/components/schemas/PlanIcon' id: type: string name: type: string plan_type: $ref: '#/components/schemas/PlanType' updated_at: type: string format: date-time required: - created_at - description - icon - id - name - plan_type - updated_at title: PlanResponseData responses: Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ApiError' ServerError: description: Server error content: application/json: schema: $ref: '#/components/schemas/ApiError' NotFound: description: Not found content: application/json: schema: $ref: '#/components/schemas/ApiError' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ApiError' BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/ApiError' securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-Schematic-Api-Key