generated: '2026-10-04' method: derived generator: derive-data-model.py source: - openapi/moesif-applications-api-openapi.yml - openapi/moesif-balance-transactions-api-openapi.yml - openapi/moesif-billing-meters-api-openapi.yml - openapi/moesif-billing-reports-api-openapi.yml - openapi/moesif-cohorts-api-openapi.yml - openapi/moesif-companies-api-openapi.yml - openapi/moesif-dashboards-api-openapi.yml - openapi/moesif-email-templates-api-openapi.yml - openapi/moesif-governance-rules-api-openapi.yml - openapi/moesif-metrics-api-openapi.yml - openapi/moesif-product-catalog-api-openapi.yml - openapi/moesif-properties-api-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 92 entities_in_spec: 92 relationships: 98 entities: - name: ACLItem fields: 2 - name: AddSubscriptionDTO fields: 18 - name: AppCreateDTO fields: 4 - name: AppResponseDTO fields: 8 - name: AppUpdateDTO fields: 4 - name: BalanceChange fields: 1 - name: BillingMeterDocument fields: 11 - name: BillingMetricBucket fields: 4 - name: BillingMetricResponse fields: 1 - name: BillingParams fields: 7 - name: BillingPlan fields: 3 - name: BillingReport fields: 29 - name: BillingReportBalanceTransCreate fields: 8 - name: BillingReportUsage fields: 2 - name: BillingReportUsageInvoice fields: 3 - name: BillingWebhookParams fields: 3 - name: ChannelRequest fields: 3 - name: ChargebeeBillingParams fields: 4 - name: ChargebeeItemPlan fields: 11 - name: ChargebeeItemPrice fields: 21 - name: ChargebeeItemPriceTier fields: 3 - name: ChartItem fields: 12 - name: Cohort fields: 3 - name: CohortConfig fields: 7 - name: CohortCreateItem fields: 12 - name: CohortDocument fields: 18 - name: CohortUpdateItem fields: 13 - name: CommentItem fields: 2 - name: Comments fields: 1 - name: CompanyUpdateDTO fields: 5 - name: CreateCommentItem fields: 7 - name: CreditBalance fields: 4 - name: CreditBalanceMetric fields: 3 - name: CustomReportPlan fields: 1 - name: CustomReporting fields: 1 - name: DashboardDocument fields: 13 - name: DashboardUpdateItem fields: 7 - name: DrawingItem fields: 5 - name: DynamicField fields: 3 - name: EmailAddresses fields: 3 - name: EmailTemplateCreateItem fields: 8 - name: EmailTemplateUpdateItem fields: 8 - name: GovernanceRuleCreateItem fields: 13 - name: GovernanceRuleUpdateItem fields: 13 - name: GovernanceRulesDocument fields: 17 - name: GovernanceRulesVariables fields: 2 - name: KeyValuePair fields: 2 - name: MoesifPlan fields: 11 - name: MoesifPrice fields: 17 - name: MoesifPriceTier fields: 3 - name: MoesifTransformQuantity fields: 2 - name: NotificationRule fields: 4 - name: Plan fields: 3 - name: PolicyItem fields: 4 - name: ProviderReporting fields: 1 - name: ProviderRequest fields: 6 - name: RecurlyAddOnPercentageTier fields: 2 - name: RecurlyAddOnPercentageTiers fields: 2 - name: RecurlyAddOnTier fields: 2 - name: RecurlyBillingParams fields: 3 - name: RecurlyCurrencyAmount fields: 3 - name: RecurlyPlan fields: 3 - name: RecurlyPlanAddOn fields: 17 - name: RegexCondition fields: 2 - name: RegexRule fields: 2 - name: RulesResponseItem fields: 4 - name: SequenceItem fields: 2 - name: SignedTokenDTO fields: 3 - name: StripeBillingParams fields: 4 - name: StripePrice fields: 12 - name: StripeProduct fields: 5 - name: StripeRecurring fields: 5 - name: StripeTier fields: 5 - name: StripeTransformQuantity fields: 2 - name: SubmitData fields: 5 - name: SubscriptionDTO fields: 22 - name: SubscriptionItem fields: 7 - name: Summary fields: 2 - name: TemplateConfig fields: 4 - name: TemplateContent fields: 2 - name: TemplateItem fields: 2 - name: UserUpdateDTO fields: 11 - name: WorkspaceCreateItem fields: 12 - name: WorkspaceDocument fields: 21 - name: WorkspaceUpdateItem fields: 8 - name: ZuoraBillingParams fields: 3 - name: com.moesif.docdb.emailtemplates.EmailTemplateDocument fields: 0 description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API. - name: companyResponseDTO fields: 0 description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API. - name: eventResponseDTO fields: 3 - name: object fields: 0 description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API. - name: searchEventsResponseDTO fields: 3 - name: userResponseDTO fields: 3 relationships: - from: ChargebeeItemPrice to: ChargebeeItemPriceTier type: has_many via: tiers - from: RecurlyPlanAddOn to: RecurlyCurrencyAmount type: has_many via: currencies - from: RecurlyPlanAddOn to: RecurlyAddOnTier type: has_many via: tiers - from: RecurlyPlanAddOn to: Plan type: belongs_to via: plan_id - from: RecurlyPlanAddOn to: RecurlyAddOnPercentageTiers type: has_many via: percentage_tiers - from: RecurlyBillingParams to: RecurlyPlan type: has_one via: plan - from: RecurlyBillingParams to: RecurlyPlanAddOn type: has_one via: add_on - from: RecurlyBillingParams to: RecurlyPlanAddOn type: has_many via: add_ons - from: RecurlyAddOnPercentageTiers to: RecurlyAddOnPercentageTier type: has_many via: tiers - from: BillingWebhookParams to: CustomReporting type: has_one via: reporting - from: BillingWebhookParams to: CustomReportPlan type: has_one via: custom_plan - from: BillingMeterDocument to: BillingPlan type: has_one via: billing_plan - from: ZuoraBillingParams to: Plan type: belongs_to via: plan_id - from: StripePrice to: StripeTransformQuantity type: has_one via: transform_quantity - from: StripePrice to: StripeTier type: has_many via: tiers - from: StripePrice to: StripeRecurring type: has_one via: recurring - from: RecurlyAddOnTier to: RecurlyCurrencyAmount type: has_many via: currencies - from: BillingPlan to: BillingParams type: has_one via: params - from: BillingParams to: BillingWebhookParams type: has_one via: webhook_params - from: BillingParams to: RecurlyBillingParams type: has_one via: recurly_params - from: BillingParams to: ChargebeeBillingParams type: has_one via: chargebee_params - from: BillingParams to: StripeBillingParams type: has_one via: stripe_params - from: BillingParams to: ZuoraBillingParams type: has_one via: zuora_params - from: ChargebeeBillingParams to: ChargebeeItemPlan type: has_one via: item_plan - from: ChargebeeBillingParams to: ChargebeeItemPrice type: has_one via: item_price - from: ChargebeeBillingParams to: ChargebeeItemPrice type: has_many via: item_prices - from: ChargebeeBillingParams to: ProviderReporting type: has_one via: reporting - from: StripeBillingParams to: StripeProduct type: has_one via: product - from: StripeBillingParams to: StripePrice type: has_one via: price - from: StripeBillingParams to: StripePrice type: has_many via: prices - from: StripeBillingParams to: ProviderReporting type: has_one via: reporting - from: CustomReportPlan to: Plan type: belongs_to via: plan_id - from: BillingMetricBucket to: CreditBalanceMetric type: has_one via: ending_balance - from: BillingReportUsage to: BillingReportUsageInvoice type: has_one via: invoice - from: ChannelRequest to: ProviderRequest type: has_many via: provider_requests - from: BillingMetricResponse to: BillingMetricBucket type: has_many via: buckets - from: BillingReport to: CreditBalance type: has_one via: ending_balance - from: BillingReport to: BillingReportUsage type: has_one via: usage - from: BillingReport to: CreditBalance type: has_one via: beginning_balance - from: BillingReport to: ProviderRequest type: has_many via: provider_requests - from: BillingReport to: ChannelRequest type: has_many via: channel_requests - from: BillingReport to: BalanceChange type: has_many via: balance_changes - from: CohortDocument to: NotificationRule type: has_one via: notification_rule - from: CohortUpdateItem to: NotificationRule type: has_one via: notification_rule - from: CohortCreateItem to: NotificationRule type: has_one via: notification_rule - from: PolicyItem to: ACLItem type: has_many via: acl - from: DashboardUpdateItem to: PolicyItem type: has_one via: policy - from: DashboardDocument to: PolicyItem type: has_one via: policy - from: EmailTemplateUpdateItem to: Cohort type: has_many via: cohorts - from: EmailTemplateUpdateItem to: DynamicField type: has_many via: dynamic_fields - from: EmailTemplateUpdateItem to: TemplateContent type: has_one via: content - from: EmailTemplateUpdateItem to: TemplateConfig type: has_one via: template - from: EmailTemplateUpdateItem to: EmailAddresses type: has_one via: addresses - from: EmailTemplateCreateItem to: Cohort type: has_many via: cohorts - from: EmailTemplateCreateItem to: DynamicField type: has_many via: dynamic_fields - from: EmailTemplateCreateItem to: TemplateContent type: has_one via: content - from: EmailTemplateCreateItem to: TemplateConfig type: has_one via: template - from: EmailTemplateCreateItem to: EmailAddresses type: has_one via: addresses - from: Cohort to: CohortConfig type: has_one via: config - from: RegexRule to: RegexCondition type: has_many via: conditions - from: GovernanceRuleUpdateItem to: GovernanceRulesVariables type: has_many via: variables - from: GovernanceRuleUpdateItem to: RulesResponseItem type: has_one via: response - from: GovernanceRuleUpdateItem to: RegexRule type: has_many via: regex_config - from: GovernanceRuleUpdateItem to: Plan type: has_many via: plans - from: GovernanceRulesDocument to: GovernanceRulesVariables type: has_many via: variables - from: GovernanceRulesDocument to: RulesResponseItem type: has_one via: response - from: GovernanceRulesDocument to: RegexRule type: has_many via: regex_config - from: GovernanceRulesDocument to: Plan type: has_many via: plans - from: GovernanceRuleCreateItem to: GovernanceRulesVariables type: has_many via: variables - from: GovernanceRuleCreateItem to: RulesResponseItem type: has_one via: response - from: GovernanceRuleCreateItem to: RegexRule type: has_many via: regex_config - from: GovernanceRuleCreateItem to: Plan type: has_many via: plans - from: MoesifPrice to: MoesifTransformQuantity type: has_one via: transform_quantity - from: MoesifPrice to: MoesifPriceTier type: has_many via: tiers - from: MoesifPrice to: Plan type: belongs_to via: plan_id - from: MoesifPlan to: MoesifPrice type: has_many via: prices - from: SubscriptionItem to: Plan type: belongs_to via: plan_id - from: SubscriptionDTO to: SubscriptionItem type: has_many via: items - from: AddSubscriptionDTO to: SubscriptionItem type: has_many via: items - from: SubmitData to: KeyValuePair type: has_many via: params - from: SubmitData to: KeyValuePair type: has_many via: headers - from: WorkspaceUpdateItem to: DrawingItem type: has_many via: drawings - from: WorkspaceUpdateItem to: ChartItem type: has_one via: chart - from: WorkspaceUpdateItem to: TemplateItem type: has_one via: template - from: WorkspaceUpdateItem to: PolicyItem type: has_one via: policy - from: Summary to: CreateCommentItem type: has_one via: latest_comment - from: WorkspaceDocument to: SequenceItem type: has_many via: sequence - from: WorkspaceDocument to: DrawingItem type: has_many via: drawings - from: WorkspaceDocument to: ChartItem type: has_one via: chart - from: WorkspaceDocument to: TemplateItem type: has_one via: template - from: WorkspaceDocument to: PolicyItem type: has_one via: policy - from: WorkspaceDocument to: Comments type: has_one via: comments - from: WorkspaceCreateItem to: DrawingItem type: has_many via: drawings - from: WorkspaceCreateItem to: ChartItem type: has_one via: chart - from: WorkspaceCreateItem to: TemplateItem type: has_one via: template - from: WorkspaceCreateItem to: PolicyItem type: has_one via: policy - from: Comments to: Summary type: has_one via: summary - from: SequenceItem to: SubmitData type: has_one via: submit_data