# frozen_string_literal: true module Stigg module Fragment PlanFragment = <<~GRAPHQL fragment PlanFragment on Plan { id: refId displayName description metadata: additionalMetaData product { id: refId displayName description } basePlan { id: refId displayName } entitlements { ...PackageEntitlementFragment } inheritedEntitlements { ...PackageEntitlementFragment } compatibleAddons { ...AddonFragment } prices { ...PriceFragment } pricingType defaultTrialConfig { duration units } } GRAPHQL TotalPriceFragment = <<~GRAPHQL fragment TotalPriceFragment on CustomerSubscriptionTotalPrice { subTotal { amount currency } total { amount currency } } GRAPHQL PriceFragment = <<~GRAPHQL fragment PriceFragment on Price { billingModel billingPeriod price { amount currency } feature { ...FeatureFragment } } GRAPHQL PackageEntitlementFragment = <<~GRAPHQL fragment PackageEntitlementFragment on PackageEntitlement { usageLimit hasUnlimitedUsage featureId resetPeriod feature { ...FeatureFragment } } GRAPHQL AddonFragment = <<~GRAPHQL fragment AddonFragment on Addon { id: refId displayName description metadata: additionalMetaData entitlements { ...PackageEntitlementFragment } pricingType } GRAPHQL SubscriptionFragment = <<~GRAPHQL fragment SubscriptionFragment on CustomerSubscription { id: refId status startDate endDate trialEndDate cancellationDate effectiveEndDate currentBillingPeriodEnd metadata: additionalMetaData billingId billingLinkUrl prices { usageLimit price { ...PriceFragment } } totalPrice { ...TotalPriceFragment } pricingType plan { ...PlanFragment } addons { id quantity addon { ...AddonFragment } } } GRAPHQL PromotionalEntitlementFragment = <<~GRAPHQL fragment PromotionalEntitlementFragment on PromotionalEntitlement { status usageLimit featureId hasUnlimitedUsage resetPeriod endDate isVisible feature { ...FeatureFragment } } GRAPHQL CouponFragment = <<~GRAPHQL fragment CouponFragment on Coupon { id: refId name description type discountValue metadata: additionalMetaData createdAt updatedAt billingId billingLinkUrl status } GRAPHQL CustomerFragment = <<~GRAPHQL fragment CustomerFragment on Customer { id: refId name email createdAt updatedAt subscriptions { ...SubscriptionFragment } promotionalEntitlements { ...PromotionalEntitlementFragment } hasPaymentMethod coupon { ...CouponFragment } billingId metadata: additionalMetaData } GRAPHQL SlimSubscriptionFragment = <<~GRAPHQL fragment SlimSubscriptionFragment on CustomerSubscription { id: refId status metadata: additionalMetaData billingId billingLinkUrl effectiveEndDate currentBillingPeriodEnd pricingType prices { usageLimit price { ...PriceFragment } } totalPrice { ...TotalPriceFragment } plan { id: refId } addons { quantity addon { id: refId } } customer { id: refId } } GRAPHQL PaywallPlanFragment = <<~GRAPHQL fragment PaywallPlanFragment on Plan { id: refId description displayName product { id: refId displayName description } basePlan { id: refId displayName } entitlements { ...PaywallPackageEntitlementFragment } metadata: additionalMetaData inheritedEntitlements { ...PaywallPackageEntitlementFragment } prices { ...PaywallPriceFragment } pricingType defaultTrialConfig { duration units } compatibleAddons { ...PaywallAddonFragment } } GRAPHQL FeatureFragment = <<~GRAPHQL fragment FeatureFragment on Feature { id: refId featureType meterType featureUnits featureUnitsPlural displayName description } GRAPHQL EntitlementFeatureFragment = <<~GRAPHQL fragment EntitlementFeatureFragment on EntitlementFeature { id: refId featureType meterType featureUnits featureUnitsPlural displayName description } GRAPHQL PaywallPackageEntitlementFragment = <<~GRAPHQL fragment PaywallPackageEntitlementFragment on PackageEntitlement { usageLimit hasUnlimitedUsage featureId resetPeriod feature { ...FeatureFragment } } GRAPHQL PaywallPriceFragment = <<~GRAPHQL fragment PaywallPriceFragment on Price { billingModel billingPeriod price { amount currency } feature { ...FeatureFragment } } GRAPHQL PaywallAddonFragment = <<~GRAPHQL fragment PaywallAddonFragment on Addon { id: refId displayName description entitlements { ...PaywallPackageEntitlementFragment } prices { ...PaywallPriceFragment } metadata: additionalMetaData pricingType } GRAPHQL SubscriptionPreviewFragment = <<~GRAPHQL fragment SubscriptionPreviewFragment on SubscriptionPreview { subTotal { amount currency } total { amount currency } billingPeriodRange { start end } proration { prorationDate credit { amount currency } debit { amount currency } } } GRAPHQL EntitlementFragment = <<~GRAPHQL fragment EntitlementFragment on Entitlement { isGranted accessDeniedReason customerId usageLimit hasUnlimitedUsage currentUsage requestedUsage nextResetDate resetPeriod feature { ...EntitlementFeatureFragment } resetPeriodConfiguration { ... on MonthlyResetPeriodConfig { monthlyAccordingTo } ... on WeeklyResetPeriodConfig { weeklyAccordingTo } } } GRAPHQL end module Mutation CreateCustomer = <<~GRAPHQL mutation ($input: CustomerInput!) { createCustomer: createOneCustomer(input: $input) { ...CustomerFragment } } #{Fragment::CustomerFragment} #{Fragment::SubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} #{Fragment::PlanFragment} #{Fragment::PackageEntitlementFragment} #{Fragment::AddonFragment} #{Fragment::PromotionalEntitlementFragment} #{Fragment::CouponFragment} GRAPHQL ProvisionCustomer = <<~GRAPHQL mutation ($input: ProvisionCustomerInput!) { provisionCustomer(input: $input) { customer { ...CustomerFragment } subscriptionStrategyDecision subscription { ...SlimSubscriptionFragment } } } #{Fragment::CustomerFragment} #{Fragment::SubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} #{Fragment::PlanFragment} #{Fragment::PackageEntitlementFragment} #{Fragment::AddonFragment} #{Fragment::PromotionalEntitlementFragment} #{Fragment::CouponFragment} #{Fragment::SlimSubscriptionFragment} GRAPHQL ImportCustomer = <<~GRAPHQL mutation ($input: ImportCustomerInput!) { importCustomer: importOneCustomer(input: $input) { ...CustomerFragment } } #{Fragment::CustomerFragment} #{Fragment::SubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} #{Fragment::PlanFragment} #{Fragment::PackageEntitlementFragment} #{Fragment::AddonFragment} #{Fragment::PromotionalEntitlementFragment} #{Fragment::CouponFragment} GRAPHQL UpdateCustomer = <<~GRAPHQL mutation ($input: UpdateCustomerInput!) { updateCustomer: updateOneCustomer(input: $input) { ...CustomerFragment } } #{Fragment::CustomerFragment} #{Fragment::SubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} #{Fragment::PlanFragment} #{Fragment::PackageEntitlementFragment} #{Fragment::AddonFragment} #{Fragment::PromotionalEntitlementFragment} #{Fragment::CouponFragment} GRAPHQL CreateSubscription = <<~GRAPHQL mutation ($input: SubscriptionInput!) { createSubscription(subscription: $input) { ...SlimSubscriptionFragment } } #{Fragment::SlimSubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} GRAPHQL ProvisionSubscription = <<~GRAPHQL mutation ($input: ProvisionSubscription!) { provisionSubscription(input: $input) { checkoutUrl status subscription { ...SlimSubscriptionFragment } } } #{Fragment::SlimSubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} GRAPHQL UpdateSubscription = <<~GRAPHQL mutation ($input: UpdateSubscriptionInput!) { updateSubscription: updateOneSubscription(input: $input) { ...SlimSubscriptionFragment } } #{Fragment::SlimSubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} GRAPHQL CancelSubscription = <<~GRAPHQL mutation ($input: SubscriptionCancellationInput!) { cancelSubscription(input: $input) { ...SlimSubscriptionFragment } } #{Fragment::SlimSubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} GRAPHQL InitiateCheckout = <<~GRAPHQL mutation ($input: InitiateCheckoutInput!) { initiateCheckout(input: $input) { id checkoutUrl checkoutBillingId } } GRAPHQL EstimateSubscription = <<~GRAPHQL mutation ($input: EstimateSubscriptionInput!) { estimateSubscription(input: $input) { ...SubscriptionPreviewFragment } } #{Fragment::SubscriptionPreviewFragment} GRAPHQL EstimateSubscriptionUpdate = <<~GRAPHQL mutation ($input: EstimateSubscriptionUpdateInput!) { estimateSubscriptionUpdate(input: $input) { ...SubscriptionPreviewFragment } } #{Fragment::SubscriptionPreviewFragment} GRAPHQL ReportUsage = <<~GRAPHQL mutation ($input: UsageMeasurementCreateInput!) { createUsageMeasurement(usageMeasurement: $input) { id } } GRAPHQL end module Query GetCustomerById = <<~GRAPHQL query ($customerId: String) { customers(filter: { refId: { eq: $customerId } }) { edges { node { ...CustomerFragment } } } } #{Fragment::CustomerFragment} #{Fragment::SubscriptionFragment} #{Fragment::PriceFragment} #{Fragment::FeatureFragment} #{Fragment::TotalPriceFragment} #{Fragment::PlanFragment} #{Fragment::PackageEntitlementFragment} #{Fragment::AddonFragment} #{Fragment::PromotionalEntitlementFragment} #{Fragment::CouponFragment} GRAPHQL GetCoupons = <<~GRAPHQL query { coupons(filter: { status: { eq: ACTIVE } }, paging: { first: 50 }) { edges { node { ...CouponFragment } } } } #{Fragment::CouponFragment} GRAPHQL GetPaywall = <<~GRAPHQL query ($input: GetPaywallInput!) { getPaywall(input: $input) { ...PaywallPlanFragment } } #{Fragment::PaywallPlanFragment} #{Fragment::PaywallPackageEntitlementFragment} #{Fragment::FeatureFragment} #{Fragment::PaywallPriceFragment} #{Fragment::PaywallAddonFragment} GRAPHQL GetEntitlements = <<~GRAPHQL query ($query: FetchEntitlementsQuery!) { entitlements: cachedEntitlements(query: $query) { ...EntitlementFragment } } #{Fragment::EntitlementFragment} #{Fragment::EntitlementFeatureFragment} GRAPHQL GetEntitlement = <<~GRAPHQL query ($query: FetchEntitlementQuery!) { entitlement(query: $query) { ...EntitlementFragment } } #{Fragment::EntitlementFragment} #{Fragment::EntitlementFeatureFragment} GRAPHQL end end