# Totogi Charging as a Service API — GraphQL schema # Reconstructed verbatim from the public SpectaQL reference at https://docs.api.totogi.com/ # Endpoints: https://gql.produseast1.api.totogi.com/graphql (US) | https://gql.prodapsoutheast1.api.totogi.com/graphql (Singapore) """An extended ISO 8601 date string in the format YYYY-MM-DD.""" scalar AWSDate """An extended ISO 8601 date and time string in the format YYYY-MM-DDThh:mm:ss.sssZ.""" scalar AWSDateTime """An email address in the format local-part@domain-part as defined by RFC 822.""" scalar AWSEmail """A JSON string. Any valid JSON construct is automatically parsed and loaded in the resolver mapping templates as maps, lists, or scalar values rather than as the literal input strings. Unquoted strings or otherwise invalid JSON result in a GraphQL validation error.""" scalar AWSJSON """A phone number. This value is stored as a string. Phone numbers can contain either spaces or hyphens to separate digit groups. Phone numbers without a country code are assumed to be US/North American numbers adhering to the North American Numbering Package (NANP).""" scalar AWSPhone """A URL as defined by RFC 1738. For example, https://www.amazon.com/dp/B000NZW3KC/ or mailto: example@example.com . URLs must contain a schema (http, mailto) and can't contain two forward slashes (//) in the path part.""" scalar AWSURL """An account to manage multiple devices.""" type Account implements Node { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" id: ID! """Any custom data required by the account. Can include used and reserved balance for different services.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write; available in Rate Anything expressions as account.custom. .""" customProperties: AWSJSON """The parent account in an account hierarchy.""" parent: Account """Any plan version that the account is subscribed to but is not currently active. Newly subscribed to plans are inactive until the first credit/charge request.""" inactivePlanVersions: [SubscribedPlanVersion] """Any plan version that the account is subscribed to and are currently active. The same plan service can not be used in multiple version.""" activePlanVersions: [SubscribedPlanVersion] """Any plan version that the account was subscribed to but the subscription ended.""" archivedPlanVersions: [SubscribedPlanVersion] """List of friends and family.""" friendsAndFamily: [String] @deprecated(reason: "This field is deprecated in favor of custom fields. Deprecated date is 2025-02-14. Expiration date is 2025-04-13.") """The limit an account can be credited to. It should be negative/zero for prepaid accounts and positive for postpaid accounts.""" creditLimit: Float """Thresholds of the default monetary balance on the account. Whenever the account balance goes lower than any of the values in the set a notification is sent.""" notificationCreditLimitThresholds: [Float] """Balances associated with the Account, either created through plan subscriptions and renewals or manually added via the createBalance API.""" balances: [AccountBalanceInfo!]! """If account is a postpaid account, i.e. creditLimit is greater than zero, this holds the postpaid properties""" postpaid: AccountPostpaidProperties """The churn score for the account, which is the probability that this account would churn""" churnScore: Float """Date of account activation.""" activatedAt: AWSDateTime """Information about the Account's assigned Lifecycle""" accountLifecycle: AccountLifecycle """State of policy counters attached to the Account""" policyCounters: [AccountPolicyCounterState!] """The timezone of the account in +/-hh:mm or Country/City format.""" timezone: String! } """An error type to be thrown if an account with provided ID already exists.""" type AccountAlreadyExists implements Error { """Already existing account ID.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Balance details return type.""" type AccountBalanceInfo { """ID for the balance.""" balanceId: ID! """Each balance is associated with a BalanceType , which defines its characteristics, such as type (e.g., volume, time, rate), notification thresholds, policy counters, and the maximum allowable value.""" balanceType: BalanceTypePayload! """Priority of the balance. If there are multiple balances of the same type, the one with the highest priority will be used first.""" priority: Float! """Whether the balance is unlimited or not.""" unlimited: Boolean """The maximum amount a balance can reach through credit operations. For multiple balances of the same BalanceType on the account, the limit applies independently to each balance. By default, limits are inherited from the balance’s BalanceType and can be overridden at the account level using the createBalance and updateBalance APIs. Rate-based balances (e.g., the default Monetary balance) can have decimal limits, while others (e.g., volume, time) should use integers.""" limit: Float """Defines the start date of the balance's validity. For balances created through plans, this date aligns with the start of the plan period. For manually created balances, the start date is provided with the createBalance or updateBalance APIs.""" from: AWSDateTime """Defines the end date of the balance's validity. For balances created through plans, this date matches the end of the current plan period. For manually created balances, the end date is provided with the createBalance or updateBalance APIs.""" to: AWSDateTime """The allowance of the balance configured in the plan service managing that balance. Total is the sum of Available, Reserved and Used. Modifications to the balance through the updateBalance API directly affect the Total value; credits increase Total and debits decrease Total.""" total: Float """The quantity of money or service (bytes, seconds, units) reserved by active sessions.""" reserved: Float """The quantity of money or service consumed during the balance’s lifetime where lifetime is defined as the period between the balance 'from' and 'to' dates. The only exception is the default monetary balance on postpaid accounts, which resets monthly on the Billing Day of Month.""" used: Float """The quantity of money or service available for consumption, excluding active reservations. At renewal, if rollover is configured, the available balance is also adjusted according to rollover settings (e.g., maximum rollover amount per period).""" available: Float """The quantity of money or service, including active reservations. The calculation is total - used.""" value: Float """All counters configured on the balance, including notification counters for allowance thresholds and policy counters to enable PCRF/PCF interworking. By default, counters are inherited from the BalanceType of the balance and can be overridden at the account level using updateAccountBalanceTypeCounter .""" counters: [BalanceTypeCounterPayload!] """The ID of the associated plan subscription if the balance is managed by a plan service.""" planSubscriptionId: ID """Policy counter IDs associated with this balance instance.""" policyCounters: [ID!] } """An error type to be thrown if the Balance Type Counter was not found with the given inputs for the account.""" type AccountBalanceTypeCounterNotFound implements Error { """Service balanceTypeCounter Id with problem.""" balanceTypeCounterId: ID! """Service balanceType with problem.""" balanceTypeId: ID! """Account Id with problem.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """A representation of a single Balance Type Counter overridden in an Account.""" type AccountBalanceTypeCounterPayload { """The Balance Type associated with the Balance Type Counter.""" balanceTypeId: ID! """The account ID associated with the Balance Type Counter.""" accountId: ID! """The counter information payload.""" counter: BalanceTypeCounterPayload! } """Return type of BalanceTypeCounter including all possible errors. AccountNotFound (AccountNotFound) - The specified account does not exist. AccountBalanceTypeCounterNotFound (AccountBalanceTypeCounterNotFound) - The specified counter does not exist in the account. BalanceTypeNotFound (BalanceTypeNotFound) - The specified balance type does not exist.""" union AccountBalanceTypeCounterResult = AccountBalanceTypeCounterPayload | AccountNotFound | BalanceTypeNotFound | AccountBalanceTypeCounterNotFound | InternalServerError """A representation of BalanceType counters configured on an account. A BalanceType counter is created on the account the first time a balance of a certain BalanceType is created, either during plan subscription or through the createBalance API. The corresponding counter configuration is inherited from the BalanceType . Once the counter configuration is copied to the account, any modifications can only be made using the updateAccountBalanceTypeCounter API. Changes made to the BalanceType counters after it is copied to the account are not reflected to the account Balance Type Counters.""" type AccountBalanceTypeCountersPayload { """The Balance Type associated with the counter.""" balanceTypeId: ID! """The account ID associated with the Balance Type Counter.""" accountId: ID! """List of counter payload on the account configured for the given BalanceType .""" counters: [BalanceTypeCounterPayload!]! } """Return type of several BalanceTypeCounter items including all possible errors. AccountNotFound (AccountNotFound) - The specified account does not exist. AccountBalanceTypeCounterNotFound (AccountBalanceTypeCounterNotFound) - The specified counter does not exist in the account. BalanceTypeNotFound (BalanceTypeNotFound) - The specified balance type does not exist.""" union AccountBalanceTypeCountersResult = AccountNotFound | BalanceTypeNotFound | AccountBalanceTypeCountersPayload | AccountBalanceTypeCounterNotFound | InternalServerError """An error type to be thrown if an account has references preventing it from deletion.""" type AccountHasReferences implements Error { """An account for a provided provider ID has references (such as devices or children accounts) preventing it from deletion.""" providerId: ID! """An account with a provided account ID has references (such as devices or children accounts) preventing it from deletion.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Information about the Account’s assigned Lifecycle.""" type AccountLifecycle { """Assigned Lifecycle.""" lifecycle: Lifecycle! """Current state within the assigned Lifecycle.""" state: String! """Time of transition to the current state.""" transitionTime: AWSDateTime! """Number of days after transitionTime before transitioning to the next state. Either the default value from the lifecycle or the value set when transitioning. Null indicates no expiry time.""" expiryDays: Int """The calculated expiry date for the current state.""" expiryDate: AWSDateTime } """Information about the Account’s assigned Lifecycle""" input AccountLifecycleInput { """Assigned Lifecycle""" lifecycle: ID! """Initial state within the assigned Lifecycle. Null indicates to use the lifecycle’s default state""" state: String """Number of days before transitioning to the next state - null means use the lifecycle's default expiry""" expiryDays: Int } """An error type to be thrown if an account was not found.""" type AccountNotFound implements Error { """An account for a provided provider ID was not found.""" providerId: ID! """An account with a provided account ID was not found.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Current state of a policy counter on an account.""" type AccountPolicyCounterState { """Unique identifier of the policy counter""" id: String! """Type of the policy counter""" type: PolicyCounterType! """Name of policy/notification""" name: String! """Current state""" state: String! } """Type to hold the postpaid properties of accounts""" type AccountPostpaidProperties { """The timezone of the user in +/-hh:mm or Country/City format. This is a property for postpaid accounts only. This is a property for postpaid accounts only.""" timezone: String @deprecated(reason: "This field is deprecated in favor of the top-level timezone field. Use Account.timezone instead. Deprecated date is 2025-11-18. Expiration date is 2026-01-18.") """The day of month for resetting balance and units for account. Value is between 1 and 31 inclusive. This is a property for postpaid accounts only.""" billingDayOfMonth: Int """The new day of month for resetting balance and units for account. Value is between 1 and 31 inclusive. This is a property for postpaid accounts only.""" newBillingDayOfMonth: Int """The date (in yyyy-mm-dd format) of the previous billing. This is a property for postpaid accounts only.""" lastBillingDate: AWSDate """Whether the first billing cycle is a long one, e.g. if billing DoM is on the 1st and the account was created on the 16th. If this value is true, it means that the first bill will be for 45 days, while if false, bill will be for 15 days only. This is a property for postpaid accounts only.""" longFirstBillingCycle: Boolean """Whether the new first billing cycle is a long one, e.g. if billing DoM is on the 1st and the account was created on the 16th. If this value is true, it means that the first bill will be for 45 days, while if false, bill will be for 15 days only. This is a property for postpaid accounts only.""" newLongFirstBillingCycle: Boolean } """Return type of Account including all possible errors.""" union AccountResult = Account | AccountNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Balance adjustment type.""" enum AdjustmentType { """If amount need to be added to the balance.""" CREDIT """If amount need to be subtracted from the balance.""" DEBIT """If amount need to be set as the balance.""" SET """If no balance adjustment.""" NONE } type Alias { """The plan version ID that is being aliased.""" planVersionId: ID! """The effective time the plan version ID becomes active for the alias.""" effectiveTime: AWSDateTime """The migration type of the alias.""" migrationType: MigrationType! } input AliasInput { """The optional time the new plan version should become active in the alias. Needs to be at least 6min in the future. If not provided and 'migrationFromVersions' is not provided as well, the alias will be active in 6min in the future.""" effectiveTime: AWSDateTime """The optional migration type how the new plan version should become active. The default is TIME if not passed.""" migrationType: MigrationType } """Aggregate Maximum Bit Rate parameters.""" type Ambr { """Maximum downlink bit rate""" maxBitRateDL: String! """Maximum uplink bit rate""" maxBitRateUL: String! } """Input for Aggregate Maximum Bit Rate parameters.""" input AmbrInput { """Maximum downlink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxBitRateDL: String! """Maximum uplink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxBitRateUL: String! } """Type for mapping specific conditions to announcement codes.""" type AnnouncementMapping { """Announcement code to return when end user service is denied. Providing a negative value will explicitly delete it.""" endUserServiceDenied: Float """Announcement code to return when quota limit is reached. Providing a negative value will explicitly delete it.""" quotaLimitReached: Float """Announcement code to return for other error conditions. Providing a negative value will explicitly delete it.""" otherError: Float } """Input type for mapping specific conditions to announcement codes.""" input AnnouncementMappingInput { """Announcement code to return when end user service is denied. Providing a negative value will explicitly delete it.""" endUserServiceDenied: Float """Announcement code to return when quota limit is reached. Providing a negative value will explicitly delete it.""" quotaLimitReached: Float """Announcement code to return for other error conditions. Providing a negative value will explicitly delete it.""" otherError: Float } """The configurations for limiting a specific API. currentRate and averageRate may show high values as the cold start is at max.""" type ApiLimitsConfig { """API type including 4G/5G interface.""" apiType: ApiType! """If true, API requests are rejected beyond the soft limit.""" rejectRequestsOverSoftLimit: Boolean @deprecated(reason: "Use minLimit, maxLimit, burstPercentage, currentLimit, currentRate, and averageRate for the Rate Limiting Standalone component instead.") """The soft limit for the average number of transactions per second.""" softLimitTps: Int @deprecated(reason: "Use minLimit, maxLimit, burstPercentage, currentLimit, currentRate, and averageRate for the Rate Limiting Standalone component instead.") """The hard limit for the average number of transactions per second.""" hardLimitTps: Int @deprecated(reason: "Use minLimit, maxLimit, burstPercentage, currentLimit, currentRate, and averageRate for the Rate Limiting Standalone component instead.") """DateTime when the provider will no longer be over the soft limit.""" overSoftLimitUntil: AWSDateTime @deprecated(reason: "Use minLimit, maxLimit, burstPercentage, currentLimit, currentRate, and averageRate instead.") """DateTime when the provider will no longer be over the hard limit.""" overHardLimitUntil: AWSDateTime @deprecated(reason: "Use minLimit, maxLimit, burstPercentage, currentLimit, currentRate, and averageRate instead.") """Rate limit, in requests per second, allowed regardless of current average rate.""" minLimit: Int! """Absolute maximum rate limit, in requests per second.""" maxLimit: Int! """Percentage allowed to burst above average rate limit.""" burstPercentage: Int! """Current limit being applied to requests; will be between minLimit and maxLimit.""" currentLimit: Int! """Number of requests allowed in the last second.""" currentRate: Int! """Average number of requests per second over the last 5 minutes.""" averageRate: Float! } """All possible API types including 4G/5G interface.""" enum ApiType { """Diameter Adapter (4G) Gx interface.""" DA_GX """Diameter Adapter (4G) Gy interface.""" DA_GY """Diameter Adapter (4G) Rx interface.""" DA_RX """Diameter Adapter (4G) Sy interface.""" DA_SY """Engine (5G) n7 interface.""" ENGINE_N7 """Engine (5G) n40 interface.""" ENGINE_N40 """Engine (5G) n28 interface.""" ENGINE_N28 """Engine (5G) n5 interface.""" ENGINE_N5 """AppSync (GraphQL) API.""" APPSYNC } """Input type of ArchivePlanVersion.""" input ArchivePlanVersionInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID.""" planVersionId: ID! } """Return type of ArchivePlanVersion.""" type ArchivePlanVersionPayload { """A plan version that has been archived.""" archivedPlanVersion: PlanVersionInterface! } """Return type of ArchivePlanVersion including all possible errors.""" union ArchivePlanVersionResult = ArchivePlanVersionPayload | PlanVersionNotFound | PlanVersionWrongTransition | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of MakePlanVersionAssignable and MakePlanVersionNotAssignable.""" input AssignablePlanVersionInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version to make assignable or not assignable.""" planVersionId: ID! } """Return type of MakePlanVersionAssignable and MakePlanVersionNotAssignable including all possible errors. PlanVersionNotFound (PlanVersionNotFound) - The requested plan version with the provided ID cannot be found. MigrationAlreadyInProgress (MigrationAlreadyInProgress) - Another migration on the same plan can be done only when the current migration is finished. PlanVersionWrongTransition (PlanVersionIsAlreadyInState) - The plan version is already in the correct state. Transition is not required. PlanVersionWrongTransition (PlanVersionIsAlreadyInState) - The plan version is already archived and can not move to suspended anymore. PlanVersionWrongTransition (PlanVersionCanNotBeAvailable) - The state of a plan version can be changed to available only if it is in suspended or deployed state. PlanVersionWrongTransition (PlanVersionCanNotBeSuspended) - The state of a plan version can be changed to suspended only if it is in available or deployed state. PlanVersionWrongTransition (PlanAliasUsesVersions) - The plan version is part of a plan alias and other versions of the plan alias that would be made unassignable are either in use or will be in use by the alias. InternalServerError (ChargeEngineNotAvailable) - The charge engine is not available at this time.""" union AssignablePlanVersionResult = PlanVersionPayload | PlanVersionNotFound | PlanVersionWrongTransition | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError enum AuthProvider { apiKey iam oidc userPools } input AuthRule { allow: AuthStrategy! provider: AuthProvider ownerField: String identityClaim: String groupClaim: String groups: [String] groupsField: String operations: [ModelOperation] queries: [ModelQuery] mutations: [ModelMutation] } enum AuthStrategy { owner groups private public } """An error type to be thrown if the balance is used in an active account.""" type BalanceHasReferences implements Error { """The ID of the rating group that has references.""" balanceId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a balance was not found.""" type BalanceNotFound implements Error { """The provider for which the balance ID wasn't found.""" providerId: ID! """The balance ID that wasn't found.""" balanceId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Balance return type.""" type BalancePayload { """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """Details of the created balance, including its type, value, and validity.""" balanceInfo: AccountBalanceInfo @deprecated(reason: "Use balanceInfos instead") """Details of all affected balances, including their types, values, and validity.""" balanceInfos: [AccountBalanceInfo!] """The transaction ID returned as a result of the createBalance API call. This ID ensures idempotency and allows for the correlation of transactions between Totogi and upstream systems. If not provided in the request, Totogi generates a unique identifier for the transaction.""" transactionId: ID! } """Input parameters for updating Balance Type Counter configuration.""" input BalanceTypeCounterInput { """The unique identifier for the Balance Type Counter. If balanceTypeCounterId is not provided, a new counter will be created. Otherwise, the existing counter will be modified.""" balanceTypeCounterId: ID """The unique name associated with the Balance Type Counter. This name will appear in the Event Bridge notifications. If the counter is used to track policy management, the name should be set to the PCRF policy counter name, while individual state names should match the PCRF counter value in the states array. The name is required if balanceTypeCounterId is not provided to create a new counter. Otherwise, the existing counter name will be modified. Name must be between 1 and 50 characters and consist of letters, digits, or special characters.""" name: String """The optional reset date for the Balance Type Counter. Note: This feature is reserved for future implementation and is currently not functional.""" period: BalanceTypeCounterPeriodInput """Indicates whether the counter is active or not.""" isActive: Boolean """An optional list of states associated with the Balance Type Counter. The current state of a counter is determined by comparing the threshold value against the balance values, either the used balance (if isOnUsedBalance is true) or the available balance (if isOnUsedBalance is false). The isExclusive parameter determines whether reservations are included on top of available or used when calculating the current state.""" states: [BalanceTypeCounterStateInput] """Indicates whether the counter includes or excludes reservations when calculating the current state. If isExclusive is true, reservations are not added to the used or the available balance. If isExclusive is false, reservations are added on top of the used or available balance when determining the current state.""" isExclusive: Boolean """Indicates whether the counter operates on the remaining (available) balance or the used balance.""" isOnUsedBalance: Boolean } """An error type to be thrown if Balance Type Counter was not found with the given inputs.""" type BalanceTypeCounterNotFound implements Error { """Service balanceTypeCounter Id with problem.""" balanceTypeCounterId: ID! """Service balanceType with problem.""" balanceTypeId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """A representation of Balance Type Counter.""" type BalanceTypeCounterPayload { """The unique identifier for the Balance Type Counter.""" balanceTypeCounterId: ID! """The unique name associated with the Balance Type Counter. This name will appear in the Event Bridge notifications. If the counter is used to track policy management, the name should be the PCRF policy counter name, while individual state names should match the PCRF counter value in the states array.""" name: String! """The optional reset date for the Balance Type Counter. Note: This feature is reserved for future implementation and is currently not functional.""" period: BalanceTypeCounterPeriod """Indicates whether the counter is active or not.""" isActive: Boolean """An optional list of states associated with the Balance Type Counter. The current state of a counter is determined by comparing the threshold value against the balance values, either the used balance (if isOnUsedBalance is true) or the available balance (if isOnUsedBalance is false). The isExclusive parameter determines whether reservations are included on top of available or used when calculating the current state.""" states: [BalanceTypeCounterState] """Indicates whether the counter includes or excludes reservations when calculating the current state. If isExclusive is true, reservations are not added to the used or the available balance. If isExclusive is false, reservations are added on top of the used or available balance when determining the current state.""" isExclusive: Boolean! """Indicates whether the counter operates on the remaining (available) balance or the used balance.""" isOnUsedBalance: Boolean! } """Information when balance counter value resets. Important : This feature is reserved for future implementation and is currently not functional.""" type BalanceTypeCounterPeriod { """The period when counter value must be reset.""" type: CounterPeriodType! """The hour at which a balance type counter is reset in UTC in case of DAILY periods.""" hourOfDay: Int """The day on which a balance type counter is reset in case of MONTHLY periods.""" dayOfMonth: Int } """Information when balance counter value must be reset. Important : This feature is reserved for future implementation and is currently not functional.""" input BalanceTypeCounterPeriodInput { """Determines the period when the counter value must be reset. Use the option NONE when providing the counter period.""" type: CounterPeriodType! """The hour at which a balance type counter is reset in UTC. Applicable for DAILY periods. Has to be in range of 0 - 23. Default is 0.""" hourOfDay: Int """The day on which a balance type counter is reset. Required for MONTHLY periods. Has to be in range of 1 - 31. If the day is not valid for the month, the reset will happen on the last day of the month.""" dayOfMonth: Int } """Return type of BalanceTypeCounter including all possible errors. BalanceTypeCounterNotFound (BalanceTypeCounterNotFound) - The balance type ID provided does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union BalanceTypeCounterResult = UpdateBalanceTypeCounterPayload | BalanceTypeCounterNotFound | BalanceTypeNotFound | InternalServerError """Defines the name, threshold, and action for a Balance Type Counter state. A state represents a specific threshold in the counter’s operation and triggers the configured actions when that threshold is reached. Each counter has at least one initial state with a null threshold.""" type BalanceTypeCounterState { """The unique name of the Balance Type Counter's current state. This name is used to identify both the previous and current states in Event Bridge notifications. If the counter is configured for policy management, state names should correspond to the PCRF policy counter values of the associated policy counter. The name must be between 1 and 50 characters and consist of letters, digits, or special characters.""" name: String! """The threshold value that determines when the Balance Type Counter transitions to the specified state. If no threshold is provided, the state is considered the default state. This threshold is compared against either the used or available balance to trigger state transitions. For the used balance, a state is reached if the used balance is greater than the corresponding threshold. For the remaining balance, a state is reached if the available balance is less than the corresponding state threshold.""" threshold: Float """Actions to perform when the state is triggered.""" actions: [BalanceTypeCounterStateAction!]! } """The action to perform when a Balance Type Counter State is triggered.""" enum BalanceTypeCounterStateAction { """Trigger notification when the state is triggered.""" NOTIFY """Block the balance (if not blocked) when this state is triggered.""" BLOCK_BALANCE """Unblock the balance (if blocked) when this state is triggered.""" UNBLOCK_BALANCE } """Defines the name, threshold, and action for a Balance Type Counter state. A state represents a specific threshold in the counter’s operation and triggers the configured actions when that threshold is reached. Each counter must have at least one initial state with a null threshold. If not provided, the backend automatically creates an initial state with name: "normal" , threshold: null , and action: "notify" .""" input BalanceTypeCounterStateInput { """The unique name of the Balance Type Counter's current state. This name is used to identify both the previous and current states in Event Bridge notifications. If the counter is configured for policy management, state names should correspond to the PCRF values of the associated policy counter. The name must be between 1 and 50 characters and consist of letters, digits, or special characters.""" name: String! """The threshold value that determines when the Balance Type Counter transitions to the specified state. If no threshold is provided, the state is considered the default state. This threshold is compared against either the used or available balance to trigger state transitions. For the used balance, a state is reached if the used balance is greater than the corresponding threshold. For the remaining balance, a state is reached if the available balance is less than the corresponding state threshold.""" threshold: Float """Specifies the actions to be performed when the counter reaches the given state. If no actions are desired, provide an empty array to prevent any action from being triggered. If actions is not provided at all, a default NOTIFY action is created. Actions typically include notifications sent to Event Bridge. If the counter is configured for Policy Management, the PCRF is additionally notified about state changes for the subscribed counters.""" actions: [BalanceTypeCounterStateAction!] } """A representation of Balance Type Counters associated with a balance type.""" type BalanceTypeCountersPayload { """The Balance Type associated with the Balance Type Counter.""" balanceTypeId: ID! """The counters information payload.""" counters: [BalanceTypeCounterPayload]! } """An error type to be thrown if the balance type is used in an active plan.""" type BalanceTypeHasReferences implements Error { """The ID of the rating group that has references.""" balanceTypeId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if the BalanceType name is already in use.""" type BalanceTypeNameInUse implements Error { """The Balance Type ID which uses the name.""" balanceTypeId: ID! """Balance Type Name with problem.""" name: String! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a balance type was not found.""" type BalanceTypeNotFound implements Error { """The provider for which the balance type ID wasn't found.""" providerId: ID! """The balance type ID that wasn't found.""" balanceTypeId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Balance type return type.""" type BalanceTypePayload { """ID for the balance type.""" balanceTypeId: ID! """Provider ID.""" providerId: ID! """Name of the balance type.""" name: String! """Unit type of the balance type.""" unitType: UnitType! """The maximum amount a balance of a specific BalanceType can reach through credit operations. For multiple balances of the same BalanceType on the account, the limit applies independently to each balance. Rate-based balances (e.g., the default Monetary balance) can have decimal limits, while others (e.g., volume, time) should use integers.""" limit: Float """Specifies whether the BalanceType is rate-based, like the default Monetary balance, or allowance-based, measured in units (e.g., time, volume).""" rateBased: Boolean! """List of counters configured for the given BalanceType .""" counters: [BalanceTypeCounterPayload!] } """An error type to be thrown if balance type references in expressions do not exist in the provider's catalog.""" type BalanceTypeReferencesNotFound implements Error { """The balance type references (names or IDs) that were not found.""" invalidReferences: [String!]! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Input type of CancelPlanSubscription.""" input CancelPlanSubscriptionInput { """A unique identifier of a plan subscription to unsubscribe.""" planSubscriptionId: ID! """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """Cancel all managed balances associated with the subscription. Defaults to false.""" cancelManagedBalances: Boolean } """Return type of CancelPlanVersionSubscription.""" type CancelPlanVersionSubscriptionPayload { """The account for which the subscription was cancelled.""" account: Account! """The account for which the subscription was cancelled.""" planSubscriptionId: ID! } """Return type of CancelPlanVersionSubscription including all possible errors. AccountNotFound (AccountNotFound) - The requested account with the provided ID cannot be found. SubscriptionNotFound (SubscriptionNotFound) - The plan subscription with the provided ID was not found. InternalServerError (ChargeEngineNotAvailable) - The charge engine is not available at this time. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union CancelPlanVersionSubscriptionResult = CancelPlanVersionSubscriptionPayload | AccountNotFound | SubscriptionNotFound | InternalServerError | InvalidProviderLifecycleStage | RateLimitExceeded | FeatureNotEnabled """An error that is thrown when user tries to change a postpaid account into a prepaid one and vice versa""" type CannotChangeAccountType implements Error { """Account for a provided provider ID cannot be changed from postpaid to prepaid and vice versa.""" providerId: ID! """Account with a provided account ID cannot be changed from postpaid to prepaid and vice versa.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error that is thrown when user tries to set longFirstBillingCycle without changing DoM""" type CannotSetLongFirstBillingCycle implements Error { """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown when the account hierarchy exceeds the maximum allowed items for a transaction.""" type ChildLimitExceeded implements Error { """The account whose children exceed the limit.""" accountId: ID! """The number of children.""" childCount: Int! """The maximum allowed items.""" maxAllowed: Int! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown when a circular reference would be created in the account hierarchy.""" type CircularReference implements Error { """The account that would create the cycle.""" accountId: ID! """The parent account that would create the cycle.""" parentAccountId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if the client creation limit exceeds the maximum allowed (10).""" type ClientCreationLimitExceeded implements Error { """The provider ID for the service or system attempting to create the client credentials.""" providerId: ID! """The current number of client credentials in the system.""" currentClientCount: Int! """The maximum allowed number of client credentials (set to 10).""" maxClientLimit: Int! """The error code associated with the failure.""" errorCode: String! """A detailed error message explaining the failure.""" errorMessage: String } type ClientCredentials { """Unique identifier for the client credentials.""" clientId: ID! """The ID of the provider to which this credentials belongs.""" providerId: ID! """The descriptive name of the client credentials.""" name: String! """The email of the user associated with the client credentials.""" email: AWSEmail! """The roles assigned to this client credentials.""" roleGroupMemberships: [RoleGroup!]! } """An error type to be thrown if client was not found with the given inputs.""" type ClientNotFound implements Error { """The client for a provided provider ID was not found.""" providerId: ID! """clientId with problem.""" clientId: ID! """The error code associated with the failure.""" errorCode: String! """The error message associated with the failure.""" errorMessage: String } """Counters provide a posibility to calculate spending values and change their states based on the calculations. Later on their state can be used to provide notifications to the customer. They enable other elements of the Provider's core network to support real-time quality-of-service and other policies, even for post-paid offline transactions. Counter values can be accessed in policy expressions using bracket notation: counter['counter-name'] - Returns the current state of the counter (String) Example: counter['fair usage'] == 'high' Non-existent counters evaluate to null.""" type Counter { """Unique name for this Counter.""" name: String! """Persistent counter saves its state between sessions, transient counter resets its state between sessions.""" persistent: Boolean! """Determines when a counter is reset.""" period: CounterPeriod """Boolean expression to determine if the current event should be counted.""" selector: String """Value expression that will be used to increment the counter.""" increment: String! """Possible states of the counter.""" states: [CounterState!]! """Additional notification fields which are sent in notifications caused by this counter.""" notificationFields: [String] } """Information when counter value must be reset.""" type CounterPeriod { """Determines a period when counter value must be reset.""" type: CounterPeriodType! """Value expression, specific for the given period type - e.g. the hour to reset daily counter.""" data: String! } """Possible period types for counters.""" enum CounterPeriodType { """Counter value is reset when the plan that contains the counter is renewed.""" SAME_AS_PLAN """Counter value is reset every month.""" MONTHLY """Counter value is reset every day.""" DAILY """Counter value is never reset.""" NONE } """List of name / value pairs used to determine the counter's current state.""" type CounterState { """Unique name of the counter's current state.""" name: String! """Value expression used as the upper bound of the state - previous state threshold is the lower bound.""" threshold: String } """Input type of CreateAccount.""" input CreateAccountInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID """The parent account in an account hierarchy.""" parentAccountId: ID """Any custom data required by the account.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write — rejected as InvalidField ( errorCode: UndeclaredCustomProperty for unknown keys, errorCode: CustomPropertyTypeMismatch for type mismatches). When no schema is declared, any value is rejected.""" customProperties: AWSJSON """List of friends and family.""" friendsAndFamily: [String] @deprecated(reason: "This field is deprecated in favor of custom fields. Deprecated date is 2025-02-14. Expiration date is 2025-04-13.") """The limit an account can be credited to. It should be negative/zero for prepaid accounts and positive for postpaid accounts.""" creditLimit: Float """Thresholds of the default monetary balance on the account. Whenever the account balance goes lower than any of the values in the set a notification is sent.""" notificationCreditLimitThresholds: [Float!] """Balances types for account.""" balances: [CreateBalanceInfoInput!] """If account is a postpaid account, i.e. creditLimit is greater than zero, this holds the postpaid properties""" postpaid: CreateAccountPostpaidPropertiesInput """Date of account activation. If it is set, then it’s used, else, it defaults to the invocation time of the mutation.""" activatedAt: AWSDateTime """An optional transaction ID to ensure idempotency of the API call if required.""" transactionId: ID """Initial Lifecycle and state to assign to the new account""" accountLifecycle: AccountLifecycleInput """The timezone of the account in +/-hh:mm or Country/City format.""" timezone: String } """Return type of CreateAccount.""" type CreateAccountPayload { """The created account.""" account: Account! """A transaction ID to ensure idempotency of the API call if required.""" transactionId: ID! } """An input type to hold the postpaid properties of accounts to enforce required fields for postpaid accounts only""" input CreateAccountPostpaidPropertiesInput { """The timezone of the user in +/-hh:mm or Country/City format. This is a property for postpaid accounts only.""" timezone: String @deprecated(reason: "This field is deprecated in favor of the top-level timezone field. Use CreateAccountInput.timezone instead. Deprecated date is 2025-11-18. Expiration date is 2026-01-18.") """The day of month for resetting balance and units for account. Value is between 1 and 31 inclusive. This is a property for postpaid accounts only.""" billingDayOfMonth: Int! """Whether the first billing cycle is a long one, e.g. if billing DoM is on the 1st and the account was created on the 16th. If this value is true, it means that the first bill will be for 45 days, while if false, bill will be for 15 days only. This is a property for postpaid accounts only.""" longFirstBillingCycle: Boolean! } """Return type of CreateAccount including all possible errors. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist. TransactionHasBeenProcessed (TransactionHasBeenProcessed) - The transaction has been processed. InvalidField (InvalidId) - accountId must not be empty and must not contain "#", "/", or "\" characters (reserved as DynamoDB key delimiters and path separators). InvalidField (InvalidLifecycleState) - The state for the lifecycle is invalid. InvalidField (InvalidFriendsAndFamilyList) - Friends and family list can consist of 20 numbers maximum. InvalidField (InvalidFriendsAndFamilyNumber) - Friends and family list consists of invalid number. The only allowed format is E.164. InvalidField (InvalidJsonCreditLimit) - Cannot set credit limit from json.creditLimit. Must use creditLimit directly. InvalidField (InvalidJsonCustomData) - The provided customData is an invalid JSON. InvalidField (InvalidTimezone) - Timezone format is wrong. It should be between -12:00 and +14:00 or use a Country/City format. InvalidField (InvalidDayOfMonth) - Billing day of month should be between 1 and 31 inclusive. InvalidField (InvalidCreateBalanceInfoInput) - Only value field can be provided for the default monetary balance type. InvalidField (BalanceLimitViolation) - When the balance total exceeds the balance or balance type limit or limit exceeds the limit in balance type. InvalidField (UndeclaredCustomProperty) - A submitted customProperties key is not declared in the provider's customAccountProperties schema (also raised when the schema is empty / undeclared). InvalidField (CustomPropertyTypeMismatch) - A submitted customProperties value's runtime type does not match its declared CustomPropertyType. PolicyCounterNotFound (PolicyCounterNotFound) - A referenced policy counter ID does not exist.""" union CreateAccountResult = CreateAccountPayload | TransactionHasBeenProcessed | AccountNotFound | AccountAlreadyExists | BalanceTypeNotFound | LifecycleNotFound | InvalidField | PolicyCounterNotFound | PostpaidFieldInPrepaidAccount | PostpaidPropertiesRequired | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type for creating a new balance details.""" input CreateBalanceInfoInput { """ID of the BalanceType , which defines the characteristics of the balance to be created, such as type (e.g., volume, time, rate), notification thresholds, policy counters, and the maximum allowable value.""" balanceTypeId: ID! """Priority of the balance. If there are multiple balances of the same type, the one with the highest priority will be used first.""" priority: Float! """Value of the balance.""" value: Float! """The maximum amount a balance can reach through credit operations. If there are multiple balances of the same BalanceType on the account, the limit applies independently to each balance. If not specified, limits are inherited from the BalanceType. For rate-based balance s (e.g., the default Monetary balance ), the limit can be a decimal. For others (e.g., volume, time), integers should be used.""" limit: Float """Defines the start date of the balance's validity.""" from: AWSDateTime """Defines the end date of the balance's validity.""" to: AWSDateTime """Policy counter IDs to associate with this balance instance. Only NOTIFICATION type counters are allowed.""" policyCounters: [ID!] } """Input type for creating a new balance.""" input CreateBalanceInput { """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """Details of the balance to be created, including its type, value, and validity.""" balanceInfo: CreateBalanceInfoInput @deprecated(reason: "Use balanceInfos instead") """Balance infos for batch creation.""" balanceInfos: [CreateBalanceInfoInput!] """An optional transaction ID to ensure idempotency of the API call, allowing for transaction correlation between Totogi and upstream systems. If not provided, Totogi automatically generates a unique identifier for each transaction""" transactionId: ID } """Return type of CreateBalance including all possible errors. TransactionHasBeenProcessed (TransactionHasBeenProcessed) - The transaction has been processed. AccountNotFound (AccountNotFound) - The specified account does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - None of the balance type IDs provided does exist. InvalidField (MissingBalanceInfoInput) - Either balanceInfo or balanceInfos must be provided. InvalidField (CannotProvideBothBalanceInfoAndBalanceInfos) - Cannot provide both balanceInfo and balanceInfos. Use only one. InvalidField (InvalidCreateBalanceInfoInput) - Only value field can be provided for the default monetary balance type. InvalidField (CreatingBalanceInDefaultBalanceType) - Cannot add balances to the default balance type. InvalidField (InvalidLimit) - The limit has to be an integer value if it is not a rate based balance. Only rate based balance types can have decimal limits. InvalidField (BalanceLimitViolation) - When the balance total exceeds the balance or balance type limit or limit exceeds the limit in balance type. PolicyCounterNotFound (PolicyCounterNotFound) - A referenced policy counter ID does not exist. InvalidField (PolicyTypeNotAllowed) - Only NOTIFICATION type policy counters can be associated with balances.""" union CreateBalanceResult = BalancePayload | TransactionHasBeenProcessed | AccountNotFound | BalanceTypeNotFound | InvalidField | PolicyCounterNotFound | RateLimitExceeded | InternalServerError """Input type for creating a new balance type.""" input CreateBalanceTypeInput { """Provider ID.""" providerId: ID! """Name of the balance type. Has to be unique across a tenant.""" name: String! """Unit type of the balance type.""" unitType: UnitType! """Limit of the balance type. If the balance is rate based, it is equivalent creditLimit.""" limit: Float """Whether it is a rate based balance type like a monetary balance or an allowance based type that is in units. If it is a rate based type, then decimal limits are allowed, otherwise, they aren't.""" rateBased: Boolean! """List of balance type counter inputs of the balance type.""" counters: [BalanceTypeCounterInput!] } """Return type of CreateBalanceType including all possible errors. BalanceTypeNameInUse (BalanceTypeNameInUse) - The balance type name is already in use. InvalidField (InvalidLimit) - The limit has to be an integer value if it is not a rate based balance type. Only rate based balance types can have decimal limits. InvalidField (InvalidCounterName) - The provided counter name must be between 1 and 50 characters and consist of letters, digits or special characters. InvalidField (InvalidCounterNames) - Counter names must be unique across the balance type. InvalidField (InvalidCounterStates) - Thresholds and names of states must be unique across the counter and one of the states must not have a threshold.""" union CreateBalanceTypeResult = BalanceTypePayload | BalanceTypeNameInUse | InvalidField | RateLimitExceeded | InternalServerError """Input type for createClientCredentials API. The email for this would be fetched directly from the user/token calling.""" input CreateClientCredentialsInput { """A descriptive name for the client credentials.""" name: String! """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! } """Return type of createClientCredentials API.""" type CreateClientCredentialsPayload { """The created client credentials.""" clientCredentials: ClientCredentials! """The generated secret for the client credentials.""" secret: String! } """Return type of createClientCredentials, including all possible errors. ProviderNotFound - The specified providerId does not exist. InvalidField (InvalidEmail) - The provided email is incorrectly formatted InvalidField (RoleGroupMemberships) - A non-valid role group was provided ClientCreationLimitExceeded - There are more than 10 clients already created for this provider""" union CreateClientCredentialsResult = CreateClientCredentialsPayload | ProviderNotFound | ClientCreationLimitExceeded | InvalidField | InternalServerError """Input type of CreateDevice.""" input CreateDeviceInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """A unique identifier of a device.""" deviceId: ID """Any custom data required by the device.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write — rejected as InvalidField ( errorCode: UndeclaredCustomProperty for unknown keys, errorCode: CustomPropertyTypeMismatch for type mismatches). When no schema is declared, any value is rejected.""" customProperties: AWSJSON } """Return type of CreateDevice.""" type CreateDevicePayload { """The created device.""" device: Device! } """Return type of CreateDevice including all possible errors. InvalidField (InvalidId) - deviceId must not be empty and must not contain "#", "/", or "\" characters (reserved as DynamoDB key delimiters and path separators). InvalidField (InvalidJsonCustomData) - The provided customData is an invalid JSON. InvalidField (UndeclaredCustomProperty) - A submitted customProperties key is not declared in the provider's customDeviceProperties schema (also raised when the schema is empty / undeclared). InvalidField (CustomPropertyTypeMismatch) - A submitted customProperties value's runtime type does not match its declared CustomPropertyType.""" union CreateDeviceResult = CreateDevicePayload | AccountNotFound | DeviceAlreadyExists | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of CreateFieldMapping.""" input CreateFieldMappingInput { """A unique identifier of a service provider.""" providerId: ID! """The path to the field you want to manipulate. For example, "transformedRequest.sMSChargingInformation.numberofMessagesSent". The path must start from either "transformedRequest." or "transformedResponse." and might be existing path or not existing. If provided path does not exist in request or response, only the last key should not exist. For example, "transformedResponse.invocationResult.message" is allowed, while "transformedResponse.invocationResult.message.text" is not allowed, because message is a new key already. It is possible to set a new field to a list. Originally SpEL does not support that, but we iterate over lists with provided [] after them. For example, "transformedRequest.multipleUnitUsage[].usedUnitContainer[].timeSpecificUnits", both multipleUnitUsage and usedUnitContainer are arrays, it means eventually field mapper will add to each item in these lists a new key "timeSpecificUnits". For the N28/SY interface, the path must start from either "transformedN28Request" or "transformedN28Response". You can then set the custom "tenantIdentifier" field by using the path "transformedN28Request.tenantIdentifier". This field can and will not be set on deleting spending limit subscriptions but the subscription ID will be used. For the N5 (Npcf_PolicyAuthorization) interface, the path must start from either "transformedN5Request" or "transformedN5Response". For the N7 (Npcf_SMPolicyControl) interface, the path must start from either "transformedN7Request" or "transformedN7Response".""" path: String! """SpEL expression to generate the value(s). It must return one value, but also it can use the same expressions as "path" with []. For example, "originalRequest.multipleUnitUsage[].usedUnitContainer[].serviceSpecificUnits * 10". It is also possible to use "originalField" as a reference to original value if field exists. For example, "originalField + 10". For the N28/SY interface, the expression must start with either "originalN28Request" or "originalN28Response". For the N5 (Npcf_PolicyAuthorization) interface, the expression must start with either "originalN5Request" or "originalN5Response". For the N7 (Npcf_SMPolicyControl) interface, the expression must start with either "originalN7Request" or "originalN7Response".""" expr: String! } """Return type of CreateFieldMapping.""" type CreateFieldMappingPayload { """Created field mapping.""" fieldMapping: FieldMapping! } """Return type of CreateFieldMapping including all possible errors. InvalidField (InvalidFieldMappingPath) - The provided field mapping path cannot be compiled. InvalidField (InvalidFieldMappingExpression) - The provided field mapping SpEL expression cannot be compiled.""" union CreateFieldMappingResult = CreateFieldMappingPayload | InvalidField | FieldMappingAlreadyExists | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError input CreateLifecycleInput { """Service provider ID.""" providerId: ID! """Descriptive name""" name: String! """Any custom data; typically only used by Plan Design UI.""" customData: AWSJSON """Lifecycle Definition; first state is used as the default.""" states: [LifecycleStateInput!]! } """Return type of CreateAccount including all possible errors. InvalidNumberOfStates (InvalidNumberOfStates) - The lifecycle requires at least one state. InvalidStateTransitions (InvalidStateTransitions) - Transitions need to be to a valid state. InvalidStateTransitions (InvalidExpiryState) - Transition state on expiry need to be in state's list of transitions. InvalidField (InvalidExpiryDays) - expiryDays exceed maxDays. InvalidField (InvalidCustomDataSize) - customData size exceeds max size.""" union CreateLifecycleResult = LifecyclePayload | InvalidNumberOfStates | InvalidStateTransitions | ProviderNotFound | RateLimitExceeded | InternalServerError | InvalidField """Input type of createPlanFromInitialRecurringFirstUsageTemplate.""" input CreatePlanFromInitialRecurringFirstUsageTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """A new plan ID. Autogenerated if not provided.""" planId: ID """The name of the first version.""" version: String! """A name for a new plan.""" name: String! """A fee that will be charged every time after the recurringFirstUsagePeriod expires. Currently, this is at the next hour for hourly plans, at next midnight of the account timezone for daily plans, at next Saturday midnight of the account timezone for weekly plans, and at the last day of the month midnight of the account timezone for monthly plans.""" recurringFirstUsageFee: Float! """The period type at which the recurringFirstUsageFee is charged, hourly, daily, weekly, monthly.""" recurringFirstUsagePeriodType: PeriodType! """List of plan services.""" services: [InitialRecurringFirstUsageTemplateServiceInput!]! """Custom data in JSON format to be able to save and retrieve some configurations.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. Considered as 0 if not provided.""" priority: Float """Policies to attach to the plan version for PCF policy negotiation""" policies: [PolicyInput!] } """Input type of CreatePlanFromInitialTemplate.""" input CreatePlanFromInitialTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """A new plan ID. Autogenerated if not provided.""" planId: ID """The name of the first version.""" version: String! """A name for a new plan.""" name: String! """A fee that will be charged per specified recurring period. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. If not provided then no such fee is charged.""" fee: Float """A fee that will be charged just once on first usage of the plan. If not provided then no such fee is charged.""" firstUsageFee: Float """A fee that will be charged just once right after the subscription. If not provided then no such fee is charged.""" purchaseFee: Float """A period when specified fee will be charged. If not provided then it is considered that plan never expires until cancellation and there are no recurring actions.""" period: RecurringPeriodInput """List of plan services. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" services: [InitialTemplateServiceInput!]! """A set of periods in seconds when to send multiple notifications before the plan expires.""" notificationPeriodsBeforeExpiration: [Int] """Put a plan on hold for a limited grace period while waiting for a successful renewal. It is a sum of provided duration inputs.""" renewalGracePeriod: [DurationInput] """Custom data in JSON format to be able to save and retrieve some configurations.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. Considered as 0 if not provided.""" priority: Float """The prorating options for the plan""" proratingOptions: ProratingOptionsInput """Policies to attach to the plan version for PCF policy negotiation""" policies: [PolicyInput!] } """Return type of CreatePlanFromInitialTemplate including all possible errors. InvalidField (InvalidId) - planId must not be empty and must not contain "#", "/", or "\" characters (reserved as DynamoDB key delimiters and path separators). InvalidField (InvalidExtendedRate) - In the roaming or long distance one of the inputs (origination or termination) must be provided. InvalidField (InvalidRatingGroup) - There is no provided rating group ID in the hierarchy or provided rating group ID is the Root. InvalidField (SubscriptionPolicy) - If "alignBillingToDoM" is set to false and "subscriptionPolicy" was anything other than NONE or empty InvalidField (RefundPolicy) - If "alignBillingToDoM" is set to false and "refundPolicy" was anything other than NONE or empty InvalidField (ProratingOptionsSetForNonMonthlyPlan) - If "alignBillingToDoM" is set to true for a non-monthly plan InvalidField (InvalidRecurringFirstUsageFee) - recurringFirstUsageFee cannot be zero for recurring first usage template BalanceTypeNotFound (BalanceTypeNotFound) - One of the provided balance type IDs does not exist. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. CreatePlanValidationFailed (FeeIsNotRequired) - Fee is provided for a non recurring plan. Recurring plan must have a period specified and this period must be marked as recurring. ServiceFormatError (ServiceFormatError) - A new version of a plan is created based on the old format while a version with the new format exists. As soon as a plan uses the new balance format, all versions of the plan must use the new format.""" union CreatePlanFromInitialTemplateResult = CreatePlanPayload | InvalidField | BalanceTypeReferencesNotFound | PlanAlreadyExists | BalanceTypeNotFound | CreatePlanValidationFailed | PolicyCounterNotFound | InvalidProviderLifecycleStage | ServiceFormatError | RateLimitExceeded | InternalServerError """Return type of CreatePlanFromInitialTemplate.""" type CreatePlanPayload { """Created plan.""" plan: Plan! } """Return type of CreatePlan including all possible errors. InvalidField (InvalidId) - planId must not be empty and must not contain "#", "/", or "\" characters (reserved as DynamoDB key delimiters and path separators). InvalidField (InvalidName) - The provided name must be between 2 and 50 characters and consist of letters, digits or special characters. InvalidField (InvalidIsoDuration) - Expected a valid ISO 8601 duration string. InvalidField (InvalidPlanVersionInput) - PlanVersionInput must provide only one of the versions. InvalidField (InvalidVersionName) - The provided plan version name must be between 1 and 50 characters and consist of letters, digits or special characters. InvalidField (InvalidServiceName) - The provided name must be between 2 and 50 characters and consist of letters, digits or special characters. InvalidField (DuplicatedServiceName) - Service names must be unique across the plan version. InvalidField (InvalidRatingGroup) - There is no provided rating group ID in the hierarchy or provided rating group ID is the Root. InvalidField (EmptyBalanceTypes) - balanceTypes must not be empty. InvalidField (InvalidBalanceTypeIds) - Balance Type Ids in balanceTypeIds must be unique. InvalidField (InvalidBalanceTypes) - Balance Type Ids in balanceTypes must be unique. InvalidField (InvalidBalanceTypeIds) - All balance Type Ids in balanceTypeIds must be Ids of either rate based balance types or not rate based balance types. Mixing is not allowed. InvalidField (InvalidBalanceTypes) - UnitPlanService only supports non-rate based balance types. InvalidField (InvalidManagedBalanceTypeId) - balanceTypeIds does not include 'managedBalanceTypeId'. InvalidField (InvalidManagedBalanceTypes) - balanceTypes does not include 'managedBalanceTypeId'. InvalidField (MissingField) - The periodAllowance must be provided and must be greater than zero when managedBalance is used for unit plan services. InvalidField (InvalidRolloverSettings) - The fields maxRolloverPeriods, rolloverAllowance, rolloverMaxAllowance must not be provided if rollover is set to false. InvalidField (InvalidRolloverSettings) - Rollover, maxRolloverPeriods, rolloverAllowance, rolloverMaxAllowance must not be provided if periodAllowance is not provided or 0 (unlimited). InvalidField (InvalidInteger) - The provided number can be only an integer. InvalidField (ExpressionValidationFailed) - Invalid expression in service restrictions or rateOptions.restrictions. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. PlanAlreadyExists (PlanAlreadyExists) - A plan with the provided ID already exists. PlanServiceValidationFailed (RateBalanceNotAllowedInUnlimitedService) - UnlimitedPlanService cannot use rate balance type. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider. QoSProfileNotFound (QoSProfileNotFound) - A referenced QoS profile ID does not exist.""" union CreatePlanResult = PlanPayload | InvalidField | BalanceTypeReferencesNotFound | BalanceTypeNotFound | PlanAlreadyExists | PlanServiceValidationFailed | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | FeatureNotEnabled | QoSProfileNotFound """An error type to be thrown if a plan cannot be created out of the provided input. DuplicateCounterName - Two or more counters in a service have the same name. MissingCounterStates - One or more counter has no states. At least one state is required. DuplicateCounterStateName - Two or more counter states in a counter have the same name. MissingDefaultCounterState - A counter has no default state (a state with no threshold). DuplicateCounterStateThreshold - Two or more states of a counter have the same threshold. WrongCountryCodeExpression - The country code expression defines a non-restricting value set. RoamingConfigOverlapping - The roaming configuration includes overlapping entries. A start ( ) includes all countries, having an entry with " " and one with "US" is overlapping "*" needs to be replaced with "!US". LongDistanceConfigOverlapping - The long distance configuration includes overlapping entries. A start ( ) includes all countries, having an entry with " " and one with "US" is overlapping "*" needs to be replaced with "!US". TooManyEntries - The entry list for the roaming and long distance configuration has too many entries. 10k entries is the maximum. PlanServiceAllowanceIsUnlimited - If "periodAllowance" is not provided, the plan service is considered unlimited. "overage" is not needed.""" type CreatePlanValidationFailed implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Input type of CreatePlanVersionFromInitialRecurringFirstUsageTemplate.""" input CreatePlanVersionFromInitialRecurringFirstUsageTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID to be updated or a base plan version ID for a new version.""" planVersionId: ID! """The name of the new version.""" version: String! """A fee that will be charged every time after the recurringFirstUsagePeriod expires. Currently, this is at the next hour for hourly plans, at next midnight of the account timezone for daily plans, at next Saturday midnight of the account timezone for weekly plans, and at the last day of the month midnight of the account timezone for monthly plans.""" recurringFirstUsageFee: Float! """The period type at which the recurringFirstUsageFee is charged, hourly, daily, weekly, monthly.""" recurringFirstUsagePeriodType: PeriodType! """List of plan services. If not provided used from the original version.""" services: [InitialRecurringFirstUsageTemplateServiceInput!] """Custom data in JSON format to be able to save and retrieve some configurations. If not provided used from the original version.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. If not provided used from the original version.""" priority: Float """Policies to attach to the plan version for PCF policy negotiation""" policies: [PolicyInput!] } """Input type of CreatePlanVersionFromInitialTemplate.""" input CreatePlanVersionFromInitialTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID to be updated or a base plan version ID for a new version.""" planVersionId: ID! """The name of the new version.""" version: String! """A fee that will be charged per specified recurring period. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. If not provided used from original version.""" fee: Float """A fee that will be charged just once on first usage of the plan. If not provided used from original version.""" firstUsageFee: Float """A fee that will be charged just once right after the subscription. If not provided used from original version.""" purchaseFee: Float """A period when specified fee will be charged. If not provided used from original version.""" period: RecurringPeriodInput """List of plan services. If not provided used from the original version. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" services: [InitialTemplateServiceInput!] """A set of periods in seconds when to send multiple notifications before the plan expires. If not provided and there's an original version, values are taken from there.""" notificationPeriodsBeforeExpiration: [Int] """Put a plan on hold for a limited grace period while waiting for a successful renewal. It is a sum of provided duration inputs.""" renewalGracePeriod: [DurationInput] """Custom data in JSON format to be able to save and retrieve some configurations. If not provided used from the original version.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. If not provided used from the original version.""" priority: Float """The prorating options for the plan""" proratingOptions: ProratingOptionsInput """Policies to attach to the plan version for PCF policy negotiation""" policies: [PolicyInput!] } """Return type of CreatePlanVersionFromInitialTemplate including all possible errors. InvalidField (InvalidExtendedRate) - In the roaming or long distance one of the inputs (origination or termination) must be provided. InvalidField (InvalidRatingGroup) - There is no provided rating group ID in the hierarchy or provided rating group ID is the Root. InvalidField (SubscriptionPolicy) - If "alignBillingToDoM" is set to false and "subscriptionPolicy" was anything other than NONE or empty InvalidField (RefundPolicy) - If "alignBillingToDoM" is set to false and "refundPolicy" was anything other than NONE or empty InvalidField (ProratingOptionsSetForNonMonthlyPlan) - If "alignBillingToDoM" is set to true for a non monthly plan BalanceTypeNotFound (BalanceTypeNotFound) - One of the provided balance type IDs does not exist. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. CreatePlanValidationFailed (FeeIsNotRequired) - Fee is provided for a non recurring plan. Recurring plan must have a period specified and this period must be marked as recurring. CreatePlanValidationFailed (BaseVersionIsNotTemplate) - The specified planVersionId is not a template version. ServiceFormatError (ServiceFormatError) - A new version of a plan is created based on the old format while a version with the new format exists. As soon as a plan uses the new balance format, all versions of the plan must use the new format.""" union CreatePlanVersionFromInitialTemplateResult = PlanVersionPayload | InvalidField | BalanceTypeReferencesNotFound | PlanVersionNotFound | BalanceTypeNotFound | CreatePlanValidationFailed | PolicyCounterNotFound | PlanVersionAlreadyExists | InvalidProviderLifecycleStage | ServiceFormatError | RateLimitExceeded | InternalServerError """Return type of createPolicyCounter including all possible errors. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union CreatePolicyCounterResult = PolicyCounter | InvalidField | BalanceTypeReferencesNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | FeatureNotEnabled """Payload for successful QoS Profile creation.""" type CreateQoSProfilePayload { """The created QoS profile""" qosProfile: QoSProfile! } """Result type for createQoSProfile mutation.""" union CreateQoSProfileResult = CreateQoSProfilePayload | InvalidField | InternalServerError """Input type of CreateUser""" input CreateUserInput { """Service provider ID""" providerId: ID! """Email""" email: AWSEmail! """The name of the user. Should be between 2 and 75 characters""" name: String! """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! """The user's phone number""" phoneNumber: AWSPhone """The user's job title. If present, it should be between 2 and 50 characters""" jobTitle: String """The time when the user should expire. Used for temporary access.""" expiry: AWSDateTime """The alarm interval in minutes when an email should be send to the user that access expires. Only used when expiry is specified. Can be 0 or not specified when expiry is specified which means no email is send.""" alertInterval: Int } """Return type of CreateUser including all possible errors. InvalidField (name) - Name should be at least two characters long and a maximum of seventy five InvalidField (jobTitle) - Job title should be at least two characters long and a maximum of fifty InvalidField (expiry) - Expiry needs to be in the future and needs to be a valid datetime string InvalidField (alertInterval) - The alert interval can't be negative InvalidField (InvalidEmailDomain) - The email domain is not allowed""" union CreateUserResult = SaveUserPayload | UserAlreadyExists | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """A tenant-defined custom property declared on the provider's Account or Device schema.""" type CustomProperty { """The unique name of the custom property within its containing schema.""" name: String! """The declared data type of the custom property.""" type: CustomPropertyType! } """Input type for declaring a tenant-defined custom property on the provider's Account or Device schema.""" input CustomPropertyInput { """The unique name of the custom property within its containing schema.""" name: String! """The declared data type of the custom property.""" type: CustomPropertyType! } """Data type of a tenant-defined custom property declared on an Account or Device.""" enum CustomPropertyType { """Scalar string.""" STRING """Scalar number (integer or floating point).""" NUMBER """Scalar boolean.""" BOOLEAN """Array of strings.""" STRING_ARRAY """Array of numbers.""" NUMBER_ARRAY """Array of booleans.""" BOOLEAN_ARRAY } type DashboardConfig { """URL for the embedded dashboard.""" dashboard: AWSURL } """An error that is thrown when user tries to change DoM during the same cycle DoM was changed.""" type DayOfMonthAlreadySet implements Error { """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """The current value of the DoM.""" billingDayOfMonth: Int! """The updated value of the DoM.""" newBillingDayOfMonth: Int! """The current value of the long billing cycle.""" longFirstBillingCycle: Boolean """The updated value of the long billing cycle.""" newLongFirstBillingCycle: Boolean """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Input parameters for deleting a Balance Type Counter for an account. Deletes an AccountBalanceCounter record.""" input DeleteAccountBalanceTypeCounterInput { """Provider ID.""" providerId: ID! """The unique identifier for the Balance Type Counter to be deleted.""" balanceTypeCounterId: ID! """The unique identifier for the Balance Type where the counter should be be deleted.""" balanceTypeId: ID! """The Account ID associated with the Balance Type Counter.""" accountId: ID! } """Return type when deleting a Balance Type Counter""" type DeleteAccountBalanceTypeCounterPayload { """The ID of the balance that has been deleted.""" deletedBalanceTypeCounterId: ID! """The Account ID associated with the Balance Type Counter.""" accountId: ID! """The Balance Type where the counter was be deleted.""" balanceTypeId: ID! } """Return type of Balance Type Counter including all possible errors. AccountNotFound (AccountNotFound) - The specified account does not exist. AccountBalanceTypeCounterNotFound (AccountBalanceTypeCounterNotFound) - The specified counter does not exist in the account. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union DeleteAccountBalanceTypeCounterResult = DeleteAccountBalanceTypeCounterPayload | AccountNotFound | AccountBalanceTypeCounterNotFound | BalanceTypeNotFound | RateLimitExceeded | InternalServerError """Input type of DeleteAccount.""" input DeleteAccountInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """An optional transaction ID to ensure idempotency of the API call if required.""" transactionId: ID } """Return type of DeleteAccount.""" type DeleteAccountPayload { """The unique identifier of the deleted account.""" deletedAccountId: ID! """The parent account in an account hierarchy, if present.""" parentAccount: Account """A transaction ID to ensure idempotency of the API call if required.""" transactionId: ID! } """Return type of DeleteAccount including all possible errors.""" union DeleteAccountResult = DeleteAccountPayload | TransactionHasBeenProcessed | AccountNotFound | AccountHasReferences | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type for deleting a balance.""" input DeleteBalanceInput { """Balance type ID.""" balanceTypeId: ID @deprecated(reason: "Balance type ID is no longer required for balance deletion") """ID for the balance.""" balanceId: ID @deprecated(reason: "Use balanceIds instead") """List of balance IDs to delete.""" balanceIds: [ID!] """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """An optional transaction ID to ensure idempotency of the API call if required.""" transactionId: ID } """Return type when deleting a balance""" type DeleteBalancePayload { """The ID of the balance that has been deleted.""" deletedBalanceId: ID @deprecated(reason: "Use deletedBalances instead") """List of deleted balances grouped by balance type.""" deletedBalances: [ID!] """A transaction ID to ensure idempotency of the API call if required.""" transactionId: ID! } """Return type of DeleteBalance including all possible errors. TransactionHasBeenProcessed (TransactionHasBeenProcessed) - The transaction has been processed. BalanceHasReferences (BalanceHasReferences) - The balance cannot be deleted because: It is the default balance type (monetary balance), or It is referenced by an active service (has serviceId), or It is referenced by an active subscription (has subscriptionId), or It has active reservations (first usage, recurring, or general reservations). BalanceNotFound (BalanceNotFound) - The balance ID provided does not exist. AccountNotFound (AccountNotFound) - The specified account does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist (only applicable when balanceTypeId is explicitly provided in the old API). InvalidField (MissingBalanceIdInput) - Either balanceId or balanceIds must be provided. InvalidField (CannotProvideBothBalanceIdAndBalanceIds) - Cannot provide both balanceId and balanceIds. Use only one. InvalidField (DuplicateBalanceIds) - Duplicate balance IDs are automatically deduplicated. Each balance will only be deleted once.""" union DeleteBalanceResult = DeleteBalancePayload | TransactionHasBeenProcessed | BalanceNotFound | BalanceTypeNotFound | AccountNotFound | BalanceHasReferences | InvalidField | RateLimitExceeded | InternalServerError """Input parameters for deleting a Balance Type Counter.""" input DeleteBalanceTypeCounterInput { """Provider ID.""" providerId: ID! """The unique identifier for the Balance Type Counter to be deleted.""" balanceTypeCounterId: ID! """The unique identifier for the Balance Type where the counter should be be deleted.""" balanceTypeId: ID! } """Return type when deleting a Balance Type Counter""" type DeleteBalanceTypeCounterPayload { """The ID of the balance that has been deleted.""" deletedBalanceTypeCounterId: ID! """The Balance Type where the counter was be deleted.""" balanceTypeId: ID! } """Return type of Balance Type Counter including all possible errors. BalanceTypeCounterNotFound (BalanceTypeCounterNotFound) - The balance type counter ID provided does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union DeleteBalanceTypeCounterResult = DeleteBalanceTypeCounterPayload | BalanceTypeCounterNotFound | BalanceTypeNotFound | RateLimitExceeded | InternalServerError """Input type for deleting a balance type.""" input DeleteBalanceTypeInput { """ID for the balance type.""" balanceTypeId: ID! """Provider ID.""" providerId: ID! } """Return type when deleting a balance type""" type DeleteBalanceTypePayload { """The ID of the balance type that has been deleted.""" deletedBalanceTypeId: ID! } """Return type of DeleteBalanceType including all possible errors. BalanceTypeHasReferences (BalanceTypeHasReferences) - The balance type is used in an active plan and can't be deleted. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union DeleteBalanceTypeResult = DeleteBalanceTypePayload | BalanceTypeNotFound | BalanceTypeHasReferences | RateLimitExceeded | InternalServerError """Return type of deleteClientCredentials API.""" type DeleteClientCredentialsPayload { """The provider id of the deleted client credentials.""" providerId: ID! """The client id of the deleted client credentials.""" clientId: ID! } """Return type of deleteClientCredentials, including all possible errors. ProviderNotFound - The specified providerId does not exist. ClientNotFound - The specified client credentials id does not exist.""" union DeleteClientCredentialsResult = DeleteClientCredentialsPayload | ProviderNotFound | ClientNotFound | InternalServerError """Input type of DeleteDevice.""" input DeleteDeviceInput { """A unique identifier of a service provider.""" providerId: ID! """The unique identifier of the account the device is associated to.""" accountId: ID! """The unique identifier of the to be deleted device.""" deviceId: ID! } """Return type of DeleteDevice.""" type DeleteDevicePayload { """The unique identifier of the deleted device.""" deletedDeviceId: ID! """The account the device was associated to.""" account: Account! } """Return type of DeleteDevice including all possible errors.""" union DeleteDeviceResult = DeleteDevicePayload | DeviceNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of DeleteFieldMapping.""" input DeleteFieldMappingInput { """A unique identifier of a service provider.""" providerId: ID! """A path of a field mapping to delete.""" path: ID! } """Return type of DeleteFieldMapping.""" type DeleteFieldMappingPayload { """A path of a field mapping that has been deleted.""" deletedPath: ID! } """Return type of DeleteFieldMapping including all possible errors.""" union DeleteFieldMappingResult = DeleteFieldMappingPayload | FieldMappingNotFound | FieldMappingHasReferences | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError input DeleteLifecycleInput { """Service provider ID.""" providerId: ID! """Lifecycle ID.""" lifecycleId: ID! } type DeleteLifecyclePayload { """The created lifecycle.""" lifecycleId: ID! } """Return type of CreateAccount including all possible errors. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist.""" union DeleteLifecycleResult = DeleteLifecyclePayload | LifecycleNotFound | ProviderNotFound | RateLimitExceeded | InternalServerError """Return type of DeletePlan.""" type DeletePlanPayload { """A unique identifier of a plan that has been deleted.""" deletedPlanId: ID! """A list of plan version IDs for deleted plan versions.""" deletedPlanVersions: [ID!]! """A list of plan service IDs for deleted plan services.""" deletedPlanServices: [ID!]! } """Return type of DeletePlan including all possible errors.""" union DeletePlanResult = DeletePlanPayload | PlanNotFound | InvalidField | PlanVersionHasReferences | PlanIsReadOnly | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of DeletePlanVersion.""" input DeletePlanVersionInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID.""" planVersionId: ID! } """Return type of DeletePlanVersion.""" type DeletePlanVersionPayload { """A unique identifier of a plan version that has been deleted.""" deletedPlanVersionId: ID! """A plan from where the version has been deleted.""" plan: Plan! } """Return type of DeletePlanVersion including all possible errors.""" union DeletePlanVersionResult = DeletePlanVersionPayload | PlanVersionNotFound | PlanVersionHasReferences | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Payload returned when deleting a policy counter.""" type DeletePolicyCounterPayload { """ID of the deleted policy counter""" id: ID! } """Return type of deletePolicyCounter including all possible errors. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union DeletePolicyCounterResult = DeletePolicyCounterPayload | PolicyCounterNotFound | PolicyCounterInUse | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | FeatureNotEnabled """Payload for successful QoS Profile deletion.""" type DeleteQoSProfilePayload { """The ID of the deleted QoS profile""" deletedQoSProfileId: ID! } """Result type for deleteQoSProfile mutation.""" union DeleteQoSProfileResult = DeleteQoSProfilePayload | QoSProfileNotFound | QoSProfileInUse | InternalServerError """Delete User Mutation Input.""" input DeleteUserInput { """Service provider ID.""" providerId: ID! """User ID""" userId: ID! } """Delete user mutation response payload object.""" type DeleteUserPayload { """provider ID""" providerId: ID! """User ID""" userId: ID! } union DeleteUserResult = DeleteUserPayload | UserNotFound | UserIsReadOnly | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of DeployFieldMappings.""" input DeployFieldMappingsInput { """A unique identifier of a service provider.""" providerId: ID! """Deploys only provided list of fields. If not provided then all field mappings are replaced. If provided then all configurations applied after "from" date are updated with provided set of fields.""" paths: [String!] """The date when current set of field mappings take effect in the system. If not provided then considered as now. All the configurations after this date are either updated with provided paths or removed if paths are not provided.""" from: AWSDateTime } """Return type of DeployFieldMappings.""" type DeployFieldMappingsPayload { deployedFieldMapping: DeployedFieldMapping! } """Return type of DeployFieldMappings including all possible errors.""" union DeployFieldMappingsResult = DeployFieldMappingsPayload | FieldMappingNotFound | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of DeployPlanVersion.""" input DeployPlanVersionInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a planVersion version to deploy. If another version of the same common plan has already been deployed, it will be made unassignable.""" planVersionId: ID! """The list of plan version IDs to migrate from to this new deployed version. Automatically upgrade already subscribed accounts to the new version. Not required for a new deployment. If not specified considered as no auto migration is required. Note : This field is not supported for Rate Anything plans. Migration to or from Rate Anything plans is not available; please use aliases instead.""" migrateFromVersions: [ID!] @deprecated(reason: "Use aliases for plan version migration instead. See alias field on DeployPlanVersionInput. Deprecated date is 2026-02-16. Expiration date is 2026-04-16.") """Optional alias deployment. If provided, an alias will be deployed with the new plan version. Other plan versions will only be made unassignable if the version is not referenced in the alias as a current or future version.""" alias: AliasInput } """Return type of DeployPlanVersion including all possible errors. PlanVersionNotFound (PlanVersionNotFound) - The requested plan version with the provided ID cannot be found. DeploymentVerificationFailed (PlanServiceConfigIsNotComplete) - The plan contains plan service configuration(s) that are not complete to provide enough information for charging / crediting. DeploymentVerificationFailed (PlanIsReadOnly) - The requested plan is an initial plan and cannot be deployed. MigrationAlreadyInProgress (MigrationAlreadyInProgress) - Another migration on the same plan can be done only when the current migration is finished. PlanVersionWrongTransition (PlanVersionIsAlreadyInState) - The plan version is already in the correct state. Transition is not required. InternalServerError (ChargeEngineNotAvailable) - The charge engine is not available at this time. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union DeployPlanVersionResult = PlanVersionPayload | PlanVersionNotFound | DeploymentVerificationFailed | MigrationAlreadyInProgress | PlanVersionWrongTransition | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | FeatureNotEnabled """Field mappings that have been deployed and take effect starting from some date.""" type DeployedFieldMapping { """A unique identifier of a service provider.""" providerId: ID! """The date when current set of field mappings take effect in the system.""" from: AWSDateTime! } """The connection type for DeployedFieldMapping.""" type DeployedFieldMappingConnection { """List of nodes in the connection.""" edges: [DeployedFieldMappingEdge!] """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection.""" type DeployedFieldMappingEdge { """The item at the end of the edge.""" node: DeployedFieldMapping! """A cursor for use in pagination.""" cursor: String! } """An error type to be thrown if a plan failed verification on deployment.""" type DeploymentVerificationFailed implements Error { """A plan for a provided provider ID failed verification.""" providerId: ID! """A plan version with a provided plan version ID failed verification.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The smallest unit in the Charging Engine which represents an end user and belongs to an account.""" type Device implements Node { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a device.""" id: ID! """The account to which the device belongs to.""" account: Account! """Any custom data required by the device.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write; available in Rate Anything expressions as device.custom. .""" customProperties: AWSJSON } """An error type to be thrown if a device with provided ID already exists.""" type DeviceAlreadyExists implements Error { """Already existing device ID.""" deviceId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Possible values for deviceIdSelector.""" enum DeviceIdSelector { """To take the device id from PDUSessionChargingInformation > userInformation > servedGpsi for charging or gpsi for spending limit control.""" SERVED_GPSI """To take the device id from subscriberIdentifier for charging or supi for spending limit control. This is the default value.""" SUBSCRIBER_IDENTIFIER } """An error type to be thrown if a device was not found.""" type DeviceNotFound implements Error { """A device for a provided provider ID was not found.""" providerId: ID! """A device with a provided device ID was not found.""" deviceId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Return type of Device including all possible errors.""" union DeviceResult = Device | DeviceNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """A time-based amount of time, such as '34.5 seconds'""" type Duration { """The amount of the duration, measured in terms of the unit.""" amount: Int! """The unit that the duration is measured in.""" unit: PeriodType! } """Input type for some time period. For example, 2w, 1d, 30m, etc.""" input DurationInput { """Determines a period.""" type: PeriodType! """The number of period types to calculate the final time period.""" value: Int! } """Represents an error type.""" interface Error { """Machine-readable error identifier.""" errorCode: String! """Human-readable error description.""" errorMessage: String } """Represents an event in the Charging Engine.""" type EventDataRecord implements Node { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a record.""" id: ID! """When the record was created.""" createdAt: AWSDateTime! """Event action.""" action: EventDataRecordAction! """Any custom data of the record.""" customData: AWSJSON """Arbitrary event data.""" eventData: AWSJSON """A correlation identifier to group related event data records.""" correlationId: String } """The connection type for EventDataRecord.""" type EventDataRecordAccountConnection { """List of nodes in the connection.""" edges: [EventDataRecordEdge!] """Information about pagination in the connection.""" pageInfo: PageInfo! """All of the EDRs belong to this account.""" account: Account! } """Return type of EventDataRecordAccountConnection including all possible errors.""" union EventDataRecordAccountConnectionResult = EventDataRecordAccountConnection | AccountNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Possible actions in event data records.""" enum EventDataRecordAction { """An account has been subscribed to some plan.""" subscribeToPlan """An existing subscription has been activated.""" activatePlanSubscription """An existing subscription has been changed.""" updatePlanSubscription """An existing subscription has been migrated.""" migratePlanSubscription """An existing subscription has been cancelled.""" cancelPlanSubscription """An existing subscription has expired.""" expirePlanSubscription """A recurring fee has been charged from an account.""" recurringFee """A purchase fee has been charged from an account.""" purchaseFee """A first usage fee has been charged from an account.""" firstUsageFee """A recurring first usage fee has been charged from an account.""" recurringFirstUsageFee """Postpaid account has been reset.""" postpaidReset """A credit event has happened.""" credit """A debit event has happened.""" debit """Create a spending limit subscription.""" createSpendingLimitSubscription """A charge event has happened.""" charge """A counter threshold has been crossed and a notification has been sent.""" notify """A counter threshold has been crossed and a notification has been sent. (Old)""" notification """A device has been deleted.""" deleteDevice """An account has been created.""" createAccount """A device has been created.""" createDevice """An account has been updated.""" updateAccount """An account has been deleted.""" deleteAccount """A device as been updated.""" updateDevice """A new plan has been created.""" createPlan """A new plan version has been created.""" createPlanVersion """A plan version has been updated.""" updatePlanVersion """A plan has been updated.""" updatePlan """A plan has been deleted.""" deletePlan """A plan has been deployed.""" deployPlan """A plan version has been archived.""" archivePlanVersion """A plan version has been deleted.""" deletePlanVersion """A plan has been made assignable.""" makePlanAssignable """The rating group hierarchy has been updated.""" updateRatingGroupHierarchy """A new rating group hierarchy has been deployed.""" deployRatingGroupHierarchy """An account's churn score has been updated.""" churnScoreUpdate """Creation a balance on an account.""" createBalance """Updating the balance of an account.""" updateBalance """Deleting the balance of an account.""" deleteBalance """Creation of a lifecycle.""" createLifecycle """Updating of a lifecycle.""" updateLifecycle """Deleting of a lifecycle.""" deleteLifecycle """Updating the balance type of an account.""" updateAccountBalanceType """General create. Will be used with different EDR types, e.g. POLICY.""" create """General update. Will be used with different EDR types, e.g. POLICY.""" update """General delete. Will be used with different EDR types, e.g. POLICY.""" delete } """The connection type for EventDataRecord.""" type EventDataRecordDeviceConnection { """List of nodes in the connection.""" edges: [EventDataRecordEdge!] """Information about pagination in the connection.""" pageInfo: PageInfo! """All of the EDRs belong to this device.""" device: Device! } """Return type of EventDataRecordDeviceConnection including all possible errors.""" union EventDataRecordDeviceConnectionResult = EventDataRecordDeviceConnection | DeviceNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """An edge in a connection.""" type EventDataRecordEdge { """The item at the end of the edge.""" node: EventDataRecord! """A cursor for use in pagination.""" cursor: String! } """Filtering options for event data records.""" input EventDataRecordFilter { """If not provided, then it is considered that all types are included.""" types: [EventDataRecordType!] """Return EDRs created only at this time or later.""" from: AWSDateTime """Return EDRs created only earlier than this time.""" to: AWSDateTime } """Possible types of event data records.""" enum EventDataRecordType { """Charging EDRs are created as part of "init" and "update" charging requests.""" CHARGING """Billing EDRs are created as part of "terminate" charging requests, and event based requests.""" BILLING """Account EDRs are created as part of executing any account mutation, and each EDR includes the time of the transaction, the identifier of the user who made the change, the action taken, the changed account identifier and the changed attributes.""" ACCOUNT """Device EDRs are created as part of executing any device mutation, and each EDR includes the time of the transaction, the identifier of the user who made the change, the action taken, the changed device identifier and the changed attributes.""" DEVICE """Churn score EDRs are created for providers that have churnFeatureEnabled set to true on a regular basis when calculating the churn score for each account. An EDR record is created for each update to every account. Each EDR contains the time of the update, the account ID, account type (prepaid/postpaid), the previous churn score and the current churn score.""" CHURN_SCORE """Policy EDRs are created as part of N7 SM Policy Control API requests. Each EDR includes the account ID, device ID, policy ID, request payload and response payload.""" POLICY """AppSession EDRs are created as part of N5 Create/Update/Delete AppSession API requests. Each EDR includes the account ID, device ID, session ID, request payload and response payload.""" APP_SESSION } """An error returned when an export is already in progress for the provider.""" type ExportAlreadyRunning implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """output type for data export config.""" type ExportConfig { """AWS Account ID where the Iceberg table is located""" awsAccountId: String! """Database name containing the Iceberg table""" databaseName: String! """Name of the Iceberg table""" tableName: String! """S3 bucket name in the form s3://bucket-name""" s3BucketUri: String! """ARN in the tenant account that we assume when writing to the tenant table""" roleArn: String! } """Successful result of an on-demand customer DB export, containing the destination URI, processing status, and execution handle.""" type ExportCustomerDBPayload { """The URI of the destination where the exported customer DB data will be written.""" destinationUri: AWSURL! """The current processing status of the export operation.""" status: String! """An opaque handle that can be used to track or reference the export execution.""" executionHandle: String! } """Return type of exportCustomerDB including all possible errors.""" union ExportCustomerDBResult = ExportCustomerDBPayload | InvalidExportTime | ExportAlreadyRunning | ProviderNotFound | InternalServerError """Rate configuration for roaming.""" type ExtendedRate { """Information about A and B parties for MO calls.""" origination: Origination """Information about A and B parties for MT calls.""" termination: Termination """Rate configuration. If not provided means roaming for this origination is denied.""" rate: Rate } """Information about the rate for a plan. Either origination or termination must be provided. If no rate is provided, it is assumed that the rate is for long distance calls and origination is denied.""" input ExtendedRateInput { """Information about A and B parties for MO calls. Either origination or termination must be provided.""" origination: OriginationInput """Information about A and B parties for MT calls. Either origination or termination must be provided.""" termination: TerminationInput """Rate configuration. If not provided means long distance for this number and origination is denied.""" rate: RateInput } """Failure handling strategies""" enum FailureHandling { TERMINATE CONTINUE RETRY_AND_TERMINATE } """An error type to be thrown if a feature is not enabled.""" type FeatureNotEnabled implements Error { """The unique identifier for the Service Provider.""" providerId: ID! """The name of the feature that is disabled.""" featureName: String! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Field mapping.""" type FieldMapping { """The path to the field you want to manipulate. For example, "transformedRequest.sMSChargingInformation.numberofMessagesSent". The path must start from either "transformedRequest." or "transformedResponse." and might be existing path or not existing. If provided path does not exist in request or response, only the last key should not exist. For example, "transformedResponse.invocationResult.message" is allowed, while "transformedResponse.invocationResult.message.text" is not allowed, because message is a new key already. It is possible to set a new field to a list. Originally SpEL does not support that, but we iterate over lists with provided [] after them. For example, "transformedRequest.multipleUnitUsage[].usedUnitContainer[].timeSpecificUnits", both multipleUnitUsage and usedUnitContainer are arrays, it means eventually field mapper will add to each item in these lists a new key "timeSpecificUnits".""" path: String! """SpEL expression to generate the value(s). It must return one value, but also it can use the same expressions as "path" with []. For example, "originalRequest.multipleUnitUsage[].usedUnitContainer[].serviceSpecificUnits * 10". It is also possible to use "originalField" as a reference to original value if field exists. For example, "originalField + 10".""" expr: String! } """An error type to be thrown if a field mapping for provided path already exists.""" type FieldMappingAlreadyExists implements Error { """Already existing path.""" path: String! errorCode: String! errorMessage: String } """The connection type for FieldMapping.""" type FieldMappingConnection { """List of nodes in the connection.""" edges: [FieldMappingEdge!] """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection.""" type FieldMappingEdge { """The item at the end of the edge.""" node: FieldMapping! """A cursor for use in pagination.""" cursor: String! } """An error type to be thrown if a field mapping has references preventing it from deletion.""" type FieldMappingHasReferences implements Error { """A field mapping with has references preventing it from deletion.""" fieldMapping: FieldMapping! errorCode: String! errorMessage: String } """An error type to be thrown if a field mapping was not found.""" type FieldMappingNotFound implements Error { """A field mapping for a provided provider ID was not found.""" providerId: ID! """A field mapping with a provided path was not found.""" path: String! errorCode: String! errorMessage: String } """Final unit handling configuration for a rating group.""" type FinalUnitHandling { """Action to take for the final unit when the rating group's balance is depleted.""" finalUnitIndication: FinalUnitIndication! """Candidate redirect servers, evaluated in order. The first whose restrictions all evaluate to true is selected; used only when finalUnitIndication is REDIRECT.""" redirectServer: [RedirectServer!] } """Final unit handling configuration for a rating group.""" input FinalUnitHandlingInput { """Action to take for the final unit when the rating group's balance is depleted.""" finalUnitIndication: FinalUnitIndication! """Candidate redirect servers, evaluated in order. The first whose restrictions all evaluate to true is selected; used only when finalUnitIndication is REDIRECT.""" redirectServer: [RedirectServerInput!] } """Indicates how the final unit is handled when a rating group's balance is depleted. PARENT: use the settings of the parent rating group; default when finalUnitHandling is not set. NONE: do not send a final unit indication; send a credit-limit-reached indication when no balance is available. TERMINATE: send a final unit indication with a final unit action of terminate; default when finalUnitHandling is not set and there is no parent. REDIRECT: send a final unit indication with a final unit action of redirect.""" enum FinalUnitIndication { PARENT NONE TERMINATE REDIRECT } """Input parameters for retrieving Balance Type Counter notifications for an account.""" input GetAccountBalanceTypeCountersInput { """A unique identifier of a service provider.""" providerId: ID! """The account ID associated with the Balance Type Counter. Retrieves the Balance Type Counter records from the account.""" accountId: ID! """The Balance Type associated with the counter. Retrieves the Balance Type Counter records for the Balance Type.""" balanceTypeId: ID! """The optional unique identifier of the Balance Type Counter. If specified, retrieves only the Balance Type Counter record with that ID.""" balanceTypeCounterId: ID } """Input parameters for retrieving Balance Type Counters.""" input GetBalanceTypeCountersInput { """The optional unique identifier for the Balance Type Counter. If provided retrieves the single Balance Type Counter from the Balance Type.""" balanceTypeCounterId: ID """The Balance Type associated with the counter. Retrieves the Balance Type Counter records from the Balance Type.""" balanceTypeId: ID! """Provider ID.""" providerId: ID! } """Return type of several BalanceTypeCounter including all possible errors. BalanceTypeCounterNotFound (BalanceTypeCounterNotFound) - The balance type ID provided does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union GetBalanceTypeCountersResult = BalanceTypeCountersPayload | BalanceTypeCounterNotFound | BalanceTypeNotFound | InternalServerError """Input type for getting balance type data.""" input GetBalanceTypeInput { """ID for the balance type.""" balanceTypeId: ID! """Provider ID.""" providerId: ID! } """Return type of GetBalanceType including all possible errors. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist.""" union GetBalanceTypeResult = BalanceTypePayload | BalanceTypeNotFound | RateLimitExceeded | InternalServerError """Input type for getting balance types data. Returns only IDs that are found. If none of the specified are found, returns an error.""" input GetBalanceTypesInput { """List of IDs for the balance types. If not provided, returns all balance types.""" balanceTypeIds: [ID!] """Provider ID.""" providerId: ID! } """Balance type return type for getting multiple balance types.""" type GetBalanceTypesPayload { """The found balance types.""" balanceTypes: [BalanceTypePayload!] } """Return type of GetBalanceTypes including all possible errors. BalanceTypeNotFound (BalanceTypeNotFound) - None of the balance type IDs provided does exist.""" union GetBalanceTypesResult = GetBalanceTypesPayload | BalanceTypeNotFound | RateLimitExceeded | InternalServerError """Return type of getClientCredentials, including all possible errors. ProviderNotFound - The specified providerId does not exist. ClientNotFound - The specified client credentials id does not exist.""" union GetClientCredentialsResult = ClientCredentials | ProviderNotFound | InternalServerError | ClientNotFound """Return type of CreateAccount including all possible errors. InvalidNumberOfStates (InvalidNumberOfStates) - The lifecycle requires at least one state. InvalidStateTransitions (InvalidStateTransitions) - Transitions need to be to a valid state. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist.""" union GetLifecycleResult = Lifecycle | LifecycleNotFound | ProviderNotFound | RateLimitExceeded | InternalServerError """Return type of GetLifecycles including all possible errors. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist.""" union GetLifecyclesResult = Lifecycles | ProviderNotFound | RateLimitExceeded | InternalServerError union GetMyDashboardResult = DashboardConfig | FeatureNotEnabled | RateLimitExceeded | InternalServerError """Return type of GetMyProviderConfig including all possible errors. InvalidProviderLifecycleStage - Provider user can't call API when provider lifecycle stage is CREATING, SUSPENDED, TERMINATED or DELETED.""" union GetMyProviderConfigResult = ProviderConfig | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError union GetMyProviderListResult = ProviderListResult | RateLimitExceeded | InternalServerError """Input type for GetMyRestoreJobs.""" input GetMyRestoreJobsInput { """Optional ID to get info of a specific job. If not passed, then we list jobs.""" jobId: ID """Optional date/time in UTC to get the jobs created after (inclusive). If jobId is used, job exists, but doesn't match 'from', then an empty result is returned.""" from: AWSDateTime """Date/time in UTC to get the jobs created before (inclusive). If jobId is used, job exists, but doesn't match 'to', then an empty result is returned.""" to: AWSDateTime } """Return type for GetMyRestoreJobs.""" type GetMyRestoreJobsPayload { """The ID for the job.""" jobs: [RestoreJob]! } """Return type of GetMyRestoreJobs including all possible errors. InvalidField(from) - From field must be before to.""" union GetMyRestoreJobsResult = GetMyRestoreJobsPayload | InvalidField | InternalServerError """Return type of getPolicyCounter including all possible errors.""" union GetPolicyCounterResult = PolicyCounter | PolicyCounterNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Payload returned when getting multiple policy counters with pagination support.""" type GetPolicyCountersPayload { """Paginated list of policy counters""" policyCounters: PolicyCounterConnection! } """Return type of getPolicyCounters including all possible errors.""" union GetPolicyCountersResult = GetPolicyCountersPayload | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Result type for getQoSProfile query.""" union GetQoSProfileResult = QoSProfile | QoSProfileNotFound | InternalServerError """Result type for getQoSProfiles query.""" union GetQoSProfilesResult = QoSProfileConnection | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Return type of getRelatedAccountsByDevice""" type GetRelatedAccountsByDevicePayload { """Service provider ID. This is retrieved from cognito group named Provider_{providerId}""" providerId: ID! """Device id for which the related accounts are returned""" deviceId: ID! """Accounts the device is related to""" accounts: [Account!]! } """Return type of GetRelatedAccountsByDevice including all possible errors. DeviceNotFound - Given device ID does not exist in the tenant""" union GetRelatedAccountsByDeviceResult = GetRelatedAccountsByDevicePayload | DeviceNotFound | InternalServerError """Input type of GetUser""" input GetUserInput { """Service provider ID.""" providerId: ID! """Cognito User ID""" userId: ID! } """Return type of a User for queries fetching a user or listing a group of them""" type GetUserPayload { """Service provider ID. This is retrieved from cognito group named Provider_{providerId}""" providerId: ID! """Cognito User ID""" userId: ID! """User email""" email: AWSEmail! """The name of the user""" name: String """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! """The user's profile picture. If profile picture exists, it will always contain a pre-signed URL to download profile picture. It will contain pre-signed URL to upload picture only for the updateUserProfile mutation""" profilePicture: ProfilePhoto @deprecated(reason: "User profile pictures are no longer supported. Deprecated date is 2026-04-13. Expiration date is 2026-06-13.") """The user's phone number""" phoneNumber: AWSPhone """The user's job title""" jobTitle: String """Whether the user has enabled software MFA or not""" softwareMfaEnabled: Boolean! """The time when the user should expire. Used for temporary access.""" expiry: AWSDateTime """The alarm interval in minutes when an email should be send to the user that access expires. Only used when expiry is specified. Can be 0 or not specified when expiry is specified which means no email is send.""" alertInterval: Int } """Return type of GetUser including all possible errors. UserNotFound - Given user ID does not exist for the given provider, even if provider does not exist.""" union GetUserResult = GetUserPayload | UserNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError input HttpHeader { key: String value: String } enum HttpMethod { PUT POST GET DELETE PATCH } """All the parameters with which initial recurring first usage fee template was used to create a plan.""" type InitialRecurringFirstUsageTemplateInstance { """A fee that will be charged every time after the recurringFirstUsagePeriod expires. Currently, this is at the next hour for hourly plans, at next midnight of the account timezone for daily plans, at next Saturday midnight of the account timezone for weekly plans, and at the last day of the month midnight of the account timezone for monthly plans.""" recurringFirstUsageFee: Float! """The period type at which the recurringFirstUsageFee is charged, hourly, daily, weekly, monthly.""" recurringFirstUsagePeriodType: PeriodType! """List of plan services.""" services: [InitialRecurringFirstUsageTemplateService!]! """Custom data in JSON format to be able to save and retrieve some configurations.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating.""" priority: Float } """All the parameters for each service in initial recurring first usage template.""" type InitialRecurringFirstUsageTemplateService { """Custom rating group ID for this service.""" ratingGroupId: Int! """Plan service priority that determines the execution order for charging and rating.""" priority: Float """List of unique balance type IDs the plan service uses for charging if a balance of that type exists on the account. Balance type IDs could be, for example, manually added to the account and used if present or from another service. Order of the IDs specifies in what order the balances are applied on charging.""" balanceTypeIds: [ID!]! """Rate based balance configuration for this service. The configuration is used for any rate based balance type based on the order of input for the balance types. Premium numbers are only applicable to rate based balances.""" rateBalance: RateBalance """A list of time periods when service is applicable.""" workingHours: [TimePeriod!] """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the origination party must be located in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" fromCountriesExpr: String """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the termination party must belong to an operator in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" toCountriesExpr: String """If provided, the MOC calls are restricted by the provided expression. It contains service(s). For example, for voice it consists of number(s) and it must match calledPartyAddress in 5G. Negation can be used. For example, !+12024561111. Conjunction can be used. For example, (+12024561111,+12024561414).""" bNumbersExpr: String """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. If both unit and monetary are not provided then requests that match provided ratingGroupId, workingHours, fromCountriesExpr, toCountriesExpr and bNumbersExpr are immediately failed without execution of all next services. By default it is false.""" denyOtherServices: Boolean """The service allowance and rating can only be used if all the constraints listed are met.""" restrictions: [ServiceConstraint] } """Input type for creating a recurring first usage service from a template. If parameters free, unit and monetary are not specified then service is denied completely. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" input InitialRecurringFirstUsageTemplateServiceInput { """Rating group ID for this service.""" ratingGroupId: Int! """Plan priority that determines the execution order for charging and rating. Considered as 0 (the highest) if not provided.""" priority: Float """List of unique balance type IDs the plan service uses for charging if a balance of that type exists on the account. Balance type IDs could be, for example, manually added to the account and used if present or from another service. Order of the IDs specifies in what order the balances are applied on charging.""" balanceTypeIds: [ID!]! """Rate based balance configuration for this service. The configuration is used for any rate based balance type based on the order of input for the balance types. Premium numbers are only applicable to rate based balances.""" rateBalance: RateBalanceInput """A list of time periods when service is applicable.""" workingHours: [TimePeriodInput!] """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the origination party must be located in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" fromCountriesExpr: String """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the termination party must belong to an operator in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" toCountriesExpr: String """If provided, the MOC calls are restricted by the provided expression. It contains service(s). For example, for voice it consists of number(s) and it must match calledPartyAddress in 5G. Negation can be used. For example, !+12024561111. Conjunction can be used. For example, (+12024561111,+12024561414).""" bNumbersExpr: String """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. If both unit and monetary are not provided then requests that match provided ratingGroupId, workingHours, fromCountriesExpr, toCountriesExpr and bNumbersExpr are immediately failed without execution of all next services. By default it is false.""" denyOtherServices: Boolean """The service allowance and rating can only be used if all the constraints listed are met. Note: Do not include opposite restrictions together at the same time, such as IS_ON_NET and IS_OFF_NET.""" restrictions: [ServiceConstraint] } """All the parameters with which initial template was used to create a plan.""" type InitialTemplateInstance { """A fee that will be charged per specified recurring period. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee.""" fee: Float """A fee that will be charged just once on first usage of the plan.""" firstUsageFee: Float """A fee that will be charged just once right after the subscription.""" purchaseFee: Float """A period when specified fee will be charged.""" period: RecurringPeriod """List of plan services. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" services: [InitialTemplateService!]! """A set of periods in seconds when to send multiple notifications before the plan expires.""" notificationPeriodsBeforeExpiration: [Int] """Put a plan on hold for a limited grace period while waiting for a successful renewal. It is a sum of provided durations.""" renewalGracePeriod: [Duration] """Custom data in JSON format to be able to save and retrieve some configurations.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating.""" priority: Float """The prorating options of the plan""" proratingOptions: ProratingOptions } """All the parameters for each service in initial template. If parameters free, unit and monetary are not specified then service is denied completely. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" type InitialTemplateService { """Custom rating group ID for this service.""" ratingGroupId: Int! """Plan service priority that determines the execution order for charging and rating.""" priority: Float """List of unique balance type IDs the plan service uses for charging if a balance of that type exists on the account. Only a single balance type ID is managed by the service. Other balance type IDs could be, for example, manually added to the account and used if present. Order of the IDs specifies in what order the balances are applied on charging.""" balanceTypeIds: [ID!] """Managed balance configuration for this service. Roaming and long distance calls use this unit balance unless it is not restricted by from and to countries. Only unit and monetary or managedBalance and rateBalance can be specified but not both, they are exclusive. If the field is not specified, the service will not have a recurring allowance or rollover. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" managedBalance: ManagedBalance """Rate based balance configuration for this service. The configuration is used for any rate based balance type based on the order of input for the balance types. Premium numbers are only applicable to rate based balances. Only unit and monetary or managedBalance and rateBalance can be specified but not both, they are exclusive.""" rateBalance: RateBalance """A list of time periods when service is applicable.""" workingHours: [TimePeriod!] """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the origination party must be located in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" fromCountriesExpr: String """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the termination party must belong to an operator in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" toCountriesExpr: String """If provided, the MOC calls are restricted by the provided expression. It contains service(s). For example, for voice it consists of number(s) and it must match calledPartyAddress in 5G. Negation can be used. For example, !+12024561111. Conjunction can be used. For example, (+12024561111,+12024561414).""" bNumbersExpr: String """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. If both unit and monetary are not provided then requests that match provided ratingGroupId, workingHours, fromCountriesExpr, toCountriesExpr and bNumbersExpr are immediately failed without execution of all next services. By default it is false.""" denyOtherServices: Boolean """The service allowance and rating can only be used if all the constraints listed are met.""" restrictions: [ServiceConstraint] } """Input type for creating a service from a template. If parameters free, unit and monetary are not specified then service is denied completely. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" input InitialTemplateServiceInput { """Rating group ID for this service.""" ratingGroupId: Int! """Plan priority that determines the execution order for charging and rating. Considered as 0 (the highest) if not provided.""" priority: Float """List of unique balance type IDs the plan service uses for charging if a balance of that type exists on the account. Only a single balance type ID is managed by the service. Other balance type IDs could be, for example, manually added to the account and used if present. Order of the IDs specifies in what order the balances are applied on charging.""" balanceTypeIds: [ID!] """Managed balance configuration for this service. Roaming and long distance calls use this unit balance unless it is not restricted by from and to countries. Only unit and monetary or managedBalance and rateBalance can be specified but not both, they are exclusive. If the field is not specified, the service will not have a recurring allowance or rollover. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" managedBalance: ManagedBalanceInput """Rate based balance configuration for this service. The configuration is used for any rate based balance type based on the order of input for the balance types. Premium numbers are only applicable to rate based balances. Only unit and monetary or managedBalance and rateBalance can be specified but not both, they are exclusive.""" rateBalance: RateBalanceInput """A list of time periods when service is applicable.""" workingHours: [TimePeriodInput!] """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the origination party must be located in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" fromCountriesExpr: String """Applicable only for unit allowance. For monetary allowance, refer to roaming and longDistance fields in RateBalance. If provided, the termination party must belong to an operator in one of these countries for the service allowance and rating to be used. ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA.""" toCountriesExpr: String """If provided, the MOC calls are restricted by the provided expression. It contains service(s). For example, for voice it consists of number(s) and it must match calledPartyAddress in 5G. Negation can be used. For example, !+12024561111. Conjunction can be used. For example, (+12024561111,+12024561414).""" bNumbersExpr: String """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. If both unit and monetary are not provided then requests that match provided ratingGroupId, workingHours, fromCountriesExpr, toCountriesExpr and bNumbersExpr are immediately failed without execution of all next services. By default it is false.""" denyOtherServices: Boolean """The service allowance and rating can only be used if all the constraints listed are met. Note: Do not include opposite restrictions together at the same time, such as IS_ON_NET and IS_OFF_NET.""" restrictions: [ServiceConstraint] } """Insufficient balance handling strategies for event-based charging""" enum InsufficientBalanceEventHandling { """Deny the grant""" REJECT """Grant the balance up to the rounding value with a Final Unit Indication""" PROVIDE_ROUNDED_AMOUNT } """Insufficient balance handling strategies for session-based charging""" enum InsufficientBalanceSessionHandling { """Grant the amount as a multiple of the rounding unit that is less or equal to the requested amount.""" IGNORE """Grant the remaining balance amount with a Final Unit Indication""" PROVIDE_REMAINING """Grant the balance up to the rounding value with a Final Unit Indication""" PROVIDE_ROUNDED_AMOUNT } """An error type to be thrown if an internal error happened or the charge engine is not available.""" type InternalServerError implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error returned when the requested export time is invalid.""" type InvalidExportTime implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a value of a field in an input fails a validation.""" type InvalidField implements Error { """A name of the invalid field.""" fieldName: String! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a lifecycle doesn't define any states.""" type InvalidNumberOfStates implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a provider's lifecycle state is not valid to execute the operation""" type InvalidProviderLifecycleStage implements Error { """A name of the provider lifecycle stage.""" providerLifecycleStage: ProviderLifecycleStage! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a lifecycle defines an invalid state transition.""" type InvalidStateTransitions implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Key value object.""" type KeyValue { """Name of the key.""" name: String! """Value for the key.""" value: String! } """Input type of KeyValue. This type is used in overrides which are key value pairs which can be nested. There are two main levels: plan and plan service. A simple plan override is the following: { name: "recurring period", value: "HOUR" } A nested override is used for plan services and can be like the following: "{ name: \"TemplateService0\", value: {\"recurring units":\"120\"} }" Pay attention to the format, it is a JSON, but as an escaped string because only strings are allowed as values. The same applies to inner values, such as recurring units, it must be also a string. A nested override uses the override field and value as the high-level value field with value. The following override fields are valid: Field ReferencedField Type Scope Format alignToBillingDoM ProratingOptionsInput. alignToBillingDoM BOOLEAN Plan old and new fee fee NUMBER Plan old renewalFee fee NUMBER Plan new first usage fee firstUsageFee NUMBER Plan old firstUsageFee firstUsageFee NUMBER Plan new number of periods RecurringPeriodInput. numberOfPeriods NUMBER Plan old numberOfPeriods RecurringPeriodInput. numberOfPeriods NUMBER Plan new recurring RecurringPeriodInput. recurring BOOLEAN Plan old and new recurring period RecurringPeriodInput. numberOfPeriods STRING Plan old recurringPeriod RecurringPeriodInput. numberOfPeriods STRING Plan new refundPolicy ProratingOptionsInput. refundPolicy STRING(NONE /FULL_REFUND /TIME_BASED) Plan old and new renewalGracePeriod InitialTemplateInstance. renewalGracePeriod STRING Plan old and new subscriptionPolicy ProratingOptionsInput. subscriptionPolicy STRING (NONE / TIME_BASED) Plan old and new purchase fee InitialTemplateInstance. purchaseFee NUMBER Plan old purchaseFee InitialTemplateInstance. purchaseFee NUMBER Plan new periodAllowance ManagedBalance. periodAllowance NUMBER Plan -Service new rollover ManagedBalance.rollover BOOLEAN Plan Service maxRolloverPeriods ManagedBalance. maxRolloverPeriods NUMBER Plan-Service new rolloverAllowance ManagedBalance. rolloverAllowance NUMBER Plan-Service new rolloverMaxAllowance ManagedBalance. rolloverMaxAllowance NUMBER Plan-Service new chargeNewBalanceFirst ManagedBalance. chargeNewBalanceFirst BOOLEAN Plan-Service new workingHours InitialTemplateServiceInput. workingHours JSON Plan-Service old and new""" input KeyValueInput { """Name of the key.""" name: String! """Value for the key. If not provided then the key will be removed.""" value: String } type Lifecycle implements Node { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a Lifecycle.""" id: ID! """Descriptive name""" name: String! """Lifecycle Definition; first state is used as the default.""" states: [LifecycleState!]! """Any custom data; typically only used by Plan Design UI.""" customData: AWSJSON } type LifecycleExpiry { """State to transition to upon expiry""" state: String! """Number of days before the state automatically transitions - null means no expiry""" days: Int """Maximum number of days that can be set for an account's expiry - null means unlimited expiry""" maxDays: Int } input LifecycleExpiryInput { """State to transition to upon expiry - must be in the state's list of transitions""" state: String! """Number of days before the state automatically transitions - null means no expiry""" days: Int """Maximum number of days that can be set for an account's expiry - null means unlimited expiry""" maxDays: Int } """An error type to be thrown if a lifecycle defines an invalid state transition.""" type LifecycleNotFound implements Error { """The requested lifecycle ID.""" id: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } type LifecyclePayload { """The created lifecycle.""" lifecycle: Lifecycle! } type LifecycleState { """Name of State; used for specifying transitions""" name: String! """Transitions to other states""" transitions: [LifecycleTransition!] """Automatic transition after an expiry period""" expiry: LifecycleExpiry } input LifecycleStateInput { """Name of State; used for specifying transitions""" name: String! """Transitions to other states""" transitions: [LifecycleTransitionInput!] """Automatic transition after an expiry period""" expiry: LifecycleExpiryInput } type LifecycleTransition { """Name of State to transition to""" state: String! } input LifecycleTransitionInput { """Name of State to transition to""" state: String! } """Balance type return type for getting multiple balance types.""" type Lifecycles { """The found balance types.""" lifecycles: [Lifecycle!] } """Return type of listAllClientCredentials API. Pagination is not required over here as there is a limit of 10 clients per provider.""" type ListAllClientCredentialsPayload { clientCredentials: [ClientCredentials!]! } """Return type of listAllClientCredentials, including all possible errors. ProviderNotFound - The specified providerId does not exist.""" union ListAllClientCredentialsResult = ListAllClientCredentialsPayload | ProviderNotFound | InternalServerError """Return type of a User for queries fetching a user or listing a group of them""" type ListUserPayload { """Service provider ID. This is retrieved from cognito group named Provider_{providerId}""" providerId: ID! """Cognito User ID""" userId: ID! """User email""" email: AWSEmail! """The name of the user""" name: String """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! """The user's phone number""" phoneNumber: AWSPhone """The user's job title""" jobTitle: String """The time when the user should expire. Used for temporary access.""" expiry: AWSDateTime """The alarm interval in minutes when an email should be send to the user that access expires. Only used when expiry is specified. Can be 0 or not specified when expiry is specified which means no email is send.""" alertInterval: Int } """The connection type for ListUsers""" type ListUsersConnection { """List of nodes in the connection.""" edges: [ListUsersEdge!]! """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a user connection.""" type ListUsersEdge { """The item at the end of the edge.""" node: ListUserPayload! """A cursor for use in pagination.""" cursor: String } """Return type of ListUsers including all possible errors.""" union ListUsersResult = ListUsersConnection | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type for the managed balance.""" type ManagedBalance { """The balance type ID that the plan service manages. Managing means that for this balance type ID, the service creates balances on subscription and renewal and handles rollover if specified. BalanceTypeIds must be provided if this is set and the referred balance type ID must be provided in balanceTypeIds. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" managedBalanceTypeId: ID! """Value that the managed balance type ID will be created with. Can only be a decimal value for rate based balance types. If not specified or zero it means that it is unlimited. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" periodAllowance: Float """An action to perform with balances from a previous period. Rollover if true or reset if false. False by default.""" rollover: Boolean """The number of additional periods (on top of the balance's own origin period) that a rolled-over balance remains valid. Each balance instance's total validity window is (1 + maxRolloverPeriods) × planPeriod , counted from the instance's origin period start. If rollover is set but this value isn't, then it is one period. Example: with planPeriod = 2 weeks and maxRolloverPeriods = 3 , each instance is valid for (1 + 3) × 2 weeks = 8 weeks starting from its origin period's start.""" maxRolloverPeriods: Int """The maximum allowance that is rolled over per period. If rollover is set but this value isn't, then it is unlimited.""" rolloverAllowance: Float """The maximum allowance that is rolled over for all periods specified by maxRolloverPeriods . If the overall rollover balance is larger then it will be removed from balances in the same order as chargeNewBalanceFirst is set.""" rolloverMaxAllowance: Float """Determines if the newest balance or the oldest balance is charged first. False By default which means the oldest balance is charged first.""" chargeNewBalanceFirst: Boolean """Policy counter IDs auto-associated with balances managed by this plan service.""" policyCounters: [ID!] } """Input type for the managed balance.""" input ManagedBalanceInput { """The balance type ID that the plan service manages. Managing means that for this balance type ID, the service creates balances on subscription and renewal and handles rollover if specified. BalanceTypeIds must be provided if this is set and the referred balance type ID must be provided in balanceTypeIds. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" managedBalanceTypeId: ID! """Value that the managed balance type ID will be created with. Must be an integer for unit-based balance types (no decimals allowed). Can only be a decimal value for rate based balance types. Mandatory for unit plan services - must be provided and must be greater than zero when managedBalance is used in UnitPlanServiceInput. For template-based plans, if not specified or zero it means that it is unlimited. For fair usage and unlimited plans, a balance type counter should be added to the specified balance type ID.""" periodAllowance: Float """An action to perform with balances from a previous period. Rollover if true or reset if false. False by default.""" rollover: Boolean """The number of additional periods (on top of the balance's own origin period) that a rolled-over balance remains valid. Each balance instance's total validity window is (1 + maxRolloverPeriods) × planPeriod , counted from the instance's origin period start. If rollover is set but this value isn't, then it is one period. Example: with planPeriod = 2 weeks and maxRolloverPeriods = 3 , each instance is valid for (1 + 3) × 2 weeks = 8 weeks starting from its origin period's start.""" maxRolloverPeriods: Int """The maximum allowance that is rolled over per period. If rollover is set but this value isn't, then it is unlimited.""" rolloverAllowance: Float """The maximum allowance that is rolled over for all periods specified by maxRolloverPeriods . If the overall rollover balance is larger then it will be removed from balances in the same order as chargeNewBalanceFirst is set.""" rolloverMaxAllowance: Float """Determines if the newest balance or the oldest balance is charged first. False By default which means the oldest balance is charged first.""" chargeNewBalanceFirst: Boolean """Policy counter IDs to auto-associate with balances managed by this plan service.""" policyCounters: [ID!] } """An error type to be thrown if there is already migration in progress for this plan. Important : This type is deprecated. Use aliases for plan version migration instead. Deprecated date is 2026-02-16. Expiration date is 2026-04-16.""" type MigrationAlreadyInProgress implements Error { """A plan for a provided provider ID is being migrated.""" providerId: ID! """A plan version to which there is an ongoing migration.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The possible values of migrating to a new plan alias.""" enum MigrationType { """Migrating on a specific timestamp.""" TIME } enum ModelMutation { create update delete } input ModelMutationMap { create: String update: String delete: String } enum ModelOperation { create update delete read } enum ModelQuery { get list } input ModelQueryMap { get: String list: String } enum ModelSubscriptionLevel { off public on } input ModelSubscriptionMap { onCreate: [String] onUpdate: [String] onDelete: [String] level: ModelSubscriptionLevel } """An object with an ID.""" interface Node { """The object belongs to a provider.""" providerId: ID! """ID of the object.""" id: ID! } """Possible directions in which to order a list of items when provided an orderBy argument.""" enum OrderDirection { """Specifies an ascending order for a given orderBy argument.""" ASC """Specifies a descending order for a given orderBy argument.""" DESC } type Origination { """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA) Only aNumberCurrentCountryExpr or currentOperatorExpr can be specified but not both, they are exclusive.""" aNumberCurrentCountryExpr: String """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA)""" bNumberHomeCountryExpr: String! """An MCC/MNC expression that allows for wildcards, conjunction, and negation and identifies the operator network. For example, specifying: 505/* - All of Australia and its territories. 31*/* - All of the US. 310/(350,012) - Two specific Verizon networks in the US. This uses an OR. {31*, !310/(350,012)} - All of the US except two specific Verizon networks. This is an outer AND and an inner OR. Only currentOperatorExpr or aNumberCurrentCountryExpr can be specified but not both, they are exclusive.""" currentOperatorExpr: String } """Information about A and B parties for MO calls.""" input OriginationInput { """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA) Only aNumberCurrentCountryExpr or currentOperatorExpr can be specified but not both, they are exclusive.""" aNumberCurrentCountryExpr: String """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA)""" bNumberHomeCountryExpr: String! """An MCC/MNC expression that allows for wildcards, conjunction, and negation and identifies the operator network. For example, specifying: 505/* - All of Australia and its territories. 31*/* - All of the US. 310/(350,012) - Two specific Verizon networks in the US. This uses an OR. {31*, !310/(350,012)} - All of the US except two specific Verizon networks. This is an outer AND and an inner OR. Only currentOperatorExpr or aNumberCurrentCountryExpr can be specified but not both, they are exclusive.""" currentOperatorExpr: String } """Information about pagination in a connection.""" type PageInfo { """When paginating backwards, are there more items?""" hasPreviousPage: Boolean! """When paginating forwards, are there more items?""" hasNextPage: Boolean! """When paginating backwards, the cursor to continue.""" startCursor: String """When paginating forwards, the cursor to continue.""" endCursor: String } """The possible values for recurring period.""" enum PeriodType { """Per hour.""" HOUR """Per day.""" DAY """Per week.""" WEEK """Per month.""" MONTH } """An object to represent a set of plan services that contains all the information to perform charging / crediting operations.""" type Plan implements Node { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan.""" id: ID! """A human readable name. Not unique.""" name: String! """The list of plan versions and their properties that this plan aliases.""" alias: [Alias!] } """An error type to be thrown if a plan alias does not have an active version.""" type PlanAliasNotActive implements Error { """A plan for a provided provider ID was not found.""" providerId: ID! """A plan alias with a provided plan ID was not found.""" planId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a plan alias was not found.""" type PlanAliasNotFound implements Error { """A plan for a provided provider ID was not found.""" providerId: ID! """A plan alias with a provided plan ID was not found.""" planId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a plan with provided ID already exists.""" type PlanAlreadyExists implements Error { """Already existing plan ID.""" planId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The connection type for Plan.""" type PlanConnection { """List of nodes in the connection.""" edges: [PlanEdge!]! """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection.""" type PlanEdge { """The item at the end of the edge.""" node: Plan! """A cursor for use in pagination.""" cursor: String! } """Input for creating a new plan.""" input PlanInput { """A unique identifier of a plan. Generated if not provided.""" planId: ID """The plan name.""" name: String! """The definition of the first plan version in this plan.""" planVersion: PlanVersionInput! } """An error type to be thrown if the plan is the initial one preventing it from deletion.""" type PlanIsReadOnly implements Error { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan.""" planId: ID! """Machine-readable error identifier.""" errorCode: String! """Human-readable error description.""" errorMessage: String } """An error type to be thrown if a plan was not found.""" type PlanNotFound implements Error { """A plan for a provided provider ID was not found.""" providerId: ID! """A plan with a provided plan ID was not found.""" planId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Ways in which lists of plans can be ordered upon return.""" input PlanOrder { """The direction in which to order issues by the specified field.""" direction: OrderDirection! """The field in which to order plans by.""" field: PlanOrderField! } """Properties by which plan connections can be ordered.""" enum PlanOrderField { """Order plans by last deployed plan version priority.""" PRIORITY """Order plans by the plan name.""" PLAN_NAME """Order plans by last deployed plan version state.""" PLAN_STATUS """Order plans by last deployed plan version modification date.""" LAST_MODIFICATION_DATE """Order plans by last deployed plan version purchase fee.""" PURCHASE_FEE """Order plans by last deployed plan version renewal fee.""" RENEWAL_FEE } """Return type of Create / Update Plan.""" type PlanPayload { """Created / Updated plan.""" plan: Plan! } """Return type of Plan including all possible errors.""" union PlanResult = Plan | PlanNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Plan Service Definition. This type is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" interface PlanService { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan service.""" id: ID! """The name of the plan service.""" name: String! """The rating groups supported by the service.""" ratingGroups: [Int!]! """The priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] } """Input to define the plan service.""" input PlanServiceInput { """Defines an unlimited plan service.""" unlimited: UnlimitedPlanServiceInput """Defines a rate plan service charging against the default monetary balance.""" rate: RatePlanServiceInput """Defines a unit plan service with allowances and rollover.""" unit: UnitPlanServiceInput } """Interface for service-level overrides within a plan.""" interface PlanServiceOverride { """The name of the service that was overridden.""" name: String! } """Selects the service type to override. Exactly one field must be provided.""" input PlanServiceOverrideInput { """Override for a unit service.""" unit: UnitServiceOverrideInput } """An error type to be thrown if the PlanService cannot be created out of the provided input. RateBalanceNotAllowedInUnlimitedService - UnlimitedPlanService cannot use rate balance type.""" type PlanServiceValidationFailed implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Possible states of a planVersion.""" enum PlanState { """A planVersion was just created and currently editable.""" NEW """A planVersion was already deployed and is no longer editable, but cannot be assigned to an Account.""" DEPLOYED """A planVersion can be assigned to an Account.""" AVAILABLE """A planVersion cannot be assigned to an Account.""" SUSPENDED """A planVersion is no longer used by any Accounts.""" ARCHIVED } """Versioned part of the planVersion.""" type PlanVersion implements Node & PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] } """An error type to be thrown if a plan version already exists in a plan.""" type PlanVersionAlreadyExists implements Error { """A plan where the version already exists.""" plan: Plan! """Already existing plan version.""" planVersion: PlanVersionInterface! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The connection type for PlanVersion.""" type PlanVersionConnection { """List of nodes in the connection.""" edges: [PlanVersionEdge!]! """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection.""" type PlanVersionEdge { """The item at the end of the edge.""" node: PlanVersionInterface! """A cursor for use in pagination.""" cursor: String! } """An error type to be thrown if a plan version has references preventing it from deletion.""" type PlanVersionHasReferences implements Error { """A plan version with has references preventing it from deletion.""" planVersion: PlanVersionInterface! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Input to define a plan version.""" input PlanVersionInput { """Provide 'simple' if this will be a non-recurring one-time plan.""" simple: SimplePlanVersionInput """Provide 'recurring' if this will be a recurring plan.""" recurring: RecurringPlanVersionInput """Provide 'recurringFirstUsage' for a recurring first usage fee plan.""" recurringFirstUsage: RecurringFirstUsagePlanVersionInput """Provide 'postpaid' if this will be a postpaid billing plan.""" postpaid: PostpaidPlanVersionInput } """Versioned part of the planVersion.""" interface PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] } """An error type to be thrown if a plan cannot be assigned.""" type PlanVersionIsNotAssignable implements Error { """A plan for a provided provider ID cannot be assigned.""" providerId: ID! """A plan version with a provided plan version ID cannot be assigned.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a plan version is read only. For example, when the version is already deployed.""" type PlanVersionIsReadOnly implements Error { """A plan version which is read only.""" planVersion: PlanVersionInterface! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a plan was not found.""" type PlanVersionNotFound implements Error { """A plan for a provided provider ID was not found.""" providerId: ID! """A plan version with a provided plan version ID was not found.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Ways in which lists of plan versions can be ordered upon return.""" input PlanVersionOrder { """The direction in which to order issues by the specified field.""" direction: OrderDirection! """The field in which to order versions by.""" field: PlanVersionOrderField! } """Properties by which version connections can be ordered.""" enum PlanVersionOrderField { """Order versions by id.""" ID """Order versions by update time.""" LAST_MODIFIED """Order versions by deploy time.""" DEPLOYED_DATE } """Interface for plan-level overrides.""" interface PlanVersionOverride { """Plan version priority.""" priority: Float """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] } """Selects the plan type to override. Exactly one field must be provided.""" input PlanVersionOverrideInput { """Override for a simple (non-recurring) plan.""" simple: SimplePlanVersionOverrideInput """Override for a recurring plan.""" recurring: RecurringPlanVersionOverrideInput """Override for a postpaid plan.""" postpaid: PostpaidPlanVersionOverrideInput """Override for a recurring-first-usage plan.""" recurringFirstUsage: RecurringFirstUsagePlanVersionOverrideInput } """Return type of PlanVersion.""" type PlanVersionPayload { """Created plan version.""" planVersion: PlanVersionInterface! } """Return type of PlanVersion including all possible errors.""" union PlanVersionResult = PlanVersion | SimplePlanVersion | RecurringPlanVersion | RecurringFirstUsagePlanVersion | PostpaidPlanVersion | PlanVersionNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """An error type to be the plan version update is in progress.""" type PlanVersionUpdateAlreadyInProgress implements Error { """A plan for a provider ID.""" providerId: ID! """The plan version.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if transition from one state to another is not possible.""" type PlanVersionWrongTransition implements Error { """A plan version for a provided provider ID cannot be transitioned.""" providerId: ID! """A plan version with a provided plan version ID cannot be transitioned.""" planVersionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """PCF policy configuration. Policies define rules and QoS profiles to apply based on conditions.""" type Policy { """Descriptive name for the policy""" name: String """List of expressions that must all evaluate to true for this policy to apply""" apply: [String!] """List of rule names to apply when this policy is active""" ruleNames: [String!] """ID of the QoS profile to apply when this policy is active""" qos: ID } """Policy counter configuration for account-level notifications and policies.""" type PolicyCounter { """Unique generated ID""" id: ID! """Name of policy/notification""" name: String! """Human readable description""" description: String! """Type of counter""" type: PolicyCounterType! """Name of the default state if no other states apply""" defaultState: String! """List of states, evaluated in order""" states: [PolicyCounterState!]! } """The connection type for PolicyCounter.""" type PolicyCounterConnection { """List of nodes in the connection.""" edges: [PolicyCounterEdge!]! """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection for PolicyCounter.""" type PolicyCounterEdge { """The item at the end of the edge.""" node: PolicyCounter! """A cursor for use in pagination.""" cursor: String! } """Error type when a policy counter cannot be deleted because it is in use.""" type PolicyCounterInUse implements Error { """The provider ID""" providerId: ID! """The policy counter ID that is in use""" policyCounterId: ID! """List of plan version IDs that reference this counter""" referencingPlanVersions: [ID!]! """Error code""" errorCode: String! """Error message""" errorMessage: String } """Input type for creating or updating a policy counter.""" input PolicyCounterInput { """Name of policy/notification""" name: String! """Human readable description""" description: String! """Type of counter""" type: PolicyCounterType! """Name of the default state if no other states apply""" defaultState: String! """List of states, evaluated in order""" states: [PolicyCounterStateInput!]! } """Error type when a policy counter is not found.""" type PolicyCounterNotFound implements Error { """Policy counter ID that was not found""" id: ID! """Error code""" errorCode: String! """Error message""" errorMessage: String } """A state within a policy counter with conditions that must be met.""" type PolicyCounterState { """Name of state""" name: String! """List of expressions that must be true for state to apply""" conditions: [String!]! } """Input type for policy counter state.""" input PolicyCounterStateInput { """Name of state""" name: String! """List of expressions that must be true for state to apply""" conditions: [String!]! } """Type of policy counter - determines notification behavior.""" enum PolicyCounterType { """Sends Spending Limit Control (N28/Sy) Notification""" POLICY """EventBridge notification only - no Spending Limit Control (N28/Sy) Notification""" NOTIFICATION } """Input for PCF policy configuration. Policies define rules and QoS profiles to apply based on conditions.""" input PolicyInput { """Descriptive name for the policy""" name: String """List of expressions that must all evaluate to true for this policy to apply. If null or empty, policy always applies.""" apply: [String!] """List of rule names to apply when this policy is active""" ruleNames: [String!] """ID of the QoS profile to apply when this policy is active""" qos: ID } """An error type to be thrown when creating account if postpaid properties were not set when creditLimit of account is positive.""" type PostpaidFieldInPrepaidAccount implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Versioned part of the postpaid plan version.""" type PostpaidPlanVersion implements Node & PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] """The list of plan services of the plan version. This attribute is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" services: [PlanService!] """Any custom details.""" custom: AWSJSON """A fee that will be charged just once right after the subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee that will be charged just once on first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """A fee that will be charged per specified renewal duration. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. If not provided then no such fee is charged.""" renewalFee: Float """Maximum number of renewal cycles. If not provided, the plan renews indefinitely.""" renewalCount: Int """The prorating options for a plan for postpaid accounts.""" proratingOptions: ProratingOptions """Defines the seconds before renewal to send notifications.""" notificationSecondsBeforeRenewal: [Int] } """Input to define a postpaid plan.""" input PostpaidPlanVersionInput { """String representation of the version.""" version: String! """The services included in the plan.""" services: [PlanServiceInput!]! """Any custom details of the plan version.""" custom: AWSJSON """Plan version priority.""" priority: Float """A fee charged once immediately after subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee charged once upon the first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """A fee charged at each renewal. If not provided, no fee is charged.""" renewalFee: Float """Number of times the plan renews after the initial period. Null means unlimited.""" renewalCount: Int """Prorating options controlling subscription and refund policies.""" proratingOptions: ProratingOptionsInput """Seconds before renewal to send a notification. Null means no notification.""" notificationSecondsBeforeRenewal: [Int] """PCF policies to apply for this plan version.""" policies: [PolicyInput!] """Policy counters to attach to account when subscribing.""" policyCounters: [ID!] } """Resolved override for a postpaid plan.""" type PostpaidPlanVersionOverride implements PlanVersionOverride { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """A fee charged at each renewal.""" renewalFee: Float """Number of renewals before the plan expires.""" renewalCount: Int """Prorating options for the postpaid plan.""" proratingOptions: ProratingOptions """Defines the seconds before renewal to send notifications.""" notificationSecondsBeforeRenewal: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverride!] } """Override for plan-level properties of a postpaid plan.""" input PostpaidPlanVersionOverrideInput { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """A fee charged at each renewal.""" renewalFee: Float """Number of renewals before the plan expires.""" renewalCount: Int """Prorating options for the postpaid plan.""" proratingOptions: ProratingOptionsOverrideInput """Defines the seconds before renewal to send notifications.""" notificationSecondsBeforeRenewal: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverrideInput!] } """An error type to be thrown when creating account if postpaid properties were not set when creditLimit of account is positive.""" type PostpaidPropertiesRequired implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } enum PredictionsActions { identifyText identifyLabels convertTextToSpeech translateText } """Enumeration for ARP preemption capability.""" enum PreemptionCapability { """The service cannot preempt other services""" NOT_PREEMPT """The service may preempt other services""" MAY_PREEMPT } """Enumeration for ARP preemption vulnerability.""" enum PreemptionVulnerability { """The service cannot be preempted by other services""" NOT_PREEMPTABLE """The service can be preempted by other services""" PREEMPTABLE } """An object (a file) in S3. This type is deprecated. User profile pictures are no longer supported. Deprecated date is 2026-04-13. Expiration date is 2026-06-13.""" type ProfilePhoto { """The URL for the object""" url: AWSURL @deprecated(reason: "User profile pictures are no longer supported. Deprecated date is 2026-04-13. Expiration date is 2026-06-13.") """The pre-signed URL to use for uploading the object""" uploadUrl: AWSURL @deprecated(reason: "User profile pictures are no longer supported. Deprecated date is 2026-04-13. Expiration date is 2026-06-13.") } """The prorating options for a plan for postpaid accounts""" type ProratingOptions { """Whether to align the plan billing to the account billing day of month. If true, then subscription offer and refund policies must be filled,""" alignToBillingDoM: Boolean @deprecated(reason: "Not supported in Rate Anything.") """The subscription policy for plans that align billing to the account billing day of month. Default is NONE.""" subscriptionPolicy: SubscriptionPolicy """The refund policy for plans that align billing to the account billing day of month. Default is NONE.""" refundPolicy: RefundPolicy } """Input for the prorating options for a plan for postpaid accounts""" input ProratingOptionsInput { """Whether to align the plan billing to the account billing day of month. If false, then subscription and refund policies should always be NONE""" alignToBillingDoM: Boolean @deprecated(reason: "Not supported in Rate Anything.") """The subscription policy for plans that align billing to the account billing day of month. Default is NONE.""" subscriptionPolicy: SubscriptionPolicy """The refund policy for plans that align billing to the account billing day of month. Default is NONE.""" refundPolicy: RefundPolicy } input ProratingOptionsOverrideInput { """The subscription policy for plans that align billing to the account billing day of month. Default is NONE.""" subscriptionPolicy: SubscriptionPolicy """The refund policy for plans that align billing to the account billing day of month. Default is NONE.""" refundPolicy: RefundPolicy } """A tenant/provider that a user belongs to.""" type Provider { """The ID of the tenant.""" id: ID! """The name of the tenant.""" name: String! } """Configurations of a tenant.""" type ProviderConfig { """The ID of the tenant.""" id: ID! """The name of the tenant.""" name: String! """The common name that will be used in the SSL certificates of the tenant.""" commonName: String! """The home networks for the tenant. Required if onNet calls should be supported.""" homeNetworks: String """List of emergency numbers.""" emergencyNumbers: [String] """The lifecycle stage of the tenant""" lifecycleStage: ProviderLifecycleStage! """The allowed lifecycle transitions for the tenant.""" allowedLifecycleTransitions: [ProviderLifecycleStage!]! """API limit configurations for 4G, 5G and GraphQL calls.""" limits: [ApiLimitsConfig] """Whether account churn calculation feature is enabled or not.""" churnFeatureEnabled: Boolean """The frequency of which the ML model is updated in days.""" frequencyOfModelUpdate: Int """The frequency of calculating the accounts churn in days.""" frequencyOfChurnCalculation: Int """The number of weeks to use for look-back data.""" lookbackPeriod: Int """The execution ARN of delete provider operation. Empty if deletion is not in progress""" deleteProviderExecutionArn: String """The ARN of the event bus that we should be sending events to.""" eventBusArn: String """The parent of this tenant.""" parent: ID """The list of all subtenants of a provider.""" subtenants: [ID] """The list of approved VPC Endpoints IDs to be used by provider to communicate with Diameter Adapter by using non-TLS connection.""" vpcEndpointsIds: [String] """The tenant specific alarms the provider is subscribed to.""" activeAlarms: [TenantAlarmType] """The field to select device ID. Can be either 'servedGpsi' or 'subscriberIdentifier'. For the spending limit API, it uses 'gpsi' if 'servedGpsi' is used or 'supi' if 'subscriberIdentifier' is used. The default value is 'subscriberIdentifier'.""" deviceIdSelector: DeviceIdSelector """Failure handling strategy. Default is RETRY_AND_TERMINATE.""" failureHandling: FailureHandling """Whether RAR notifications are enabled or not. Defaults to false.""" rarEnabled: Boolean """Whether alarm is created for the tenant or not. Defaults to false.""" createAlarm: Boolean """Incremental DB exports enabled.""" exportEnabled: Boolean """Configuration for data export""" exportConfig: ExportConfig """Are dashboards enabled for this tenant""" dashboardFeatureEnabled: Boolean """Insufficient balance handling strategy for session-based charging. Defaults to PROVIDE_ROUNDED_AMOUNT. Rate Anything requests with PROVIDE_ROUNDED_AMOUNT will be handled just like PROVIDE_REMAINING.""" insufficientBalanceSessionHandling: InsufficientBalanceSessionHandling! """Insufficient balance handling strategy for event-based charging. Defaults to PROVIDE_ROUNDED_AMOUNT. Rate Anything requests with PROVIDE_ROUNDED_AMOUNT will be handled just like REJECT.""" insufficientBalanceEventHandling: InsufficientBalanceEventHandling! """AWS External ID used for cross-account role assumption. Only visible to Tenant_Admin users.""" externalID: String """Tenant-defined custom property schema for Accounts. Empty or unset when no custom Account properties are declared.""" customAccountProperties: [CustomProperty!] """Tenant-defined custom property schema for Devices. Empty or unset when no custom Device properties are declared.""" customDeviceProperties: [CustomProperty!] } """Providers possible Lifecycle stages""" enum ProviderLifecycleStage { """Provider is in the process of being created but cannot be used for any live operations / traffic.""" CREATING """Provider has reference data (plan, accounts devices) loaded, is connected to receive charging events and is ready for User Acceptance Testing.""" UAT_READY """Provider is fully operational.""" ACTIVE """Provider is suspended and no usage of the system is possible. Requests via any API will be rejected with an error code indicating the suspended state.""" SUSPENDED """Provider is fully terminated. No data is deleted from the system.""" TERMINATED """All customer data, except for EDRs, is removed from the system with the exception of any data that must be maintained / archived for regulatory reasons. Customers may also ask for 'proof' of data destruction.""" DELETED } """Result containing a list of providers the user belongs to.""" type ProviderListResult { providers: [Provider!]! } """An error type to be thrown if tenant was not found for given ID.""" type ProviderNotFound implements Error { """Service provider ID with problem.""" providerId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Quality of Service parameters.""" type QoS { """List of allowed 5QI values""" allowed5QI: [Int!]! """Minimum ARP priority level (1-15)""" minArpPriorityLevel: Int! """ARP preemption capability""" arpPreemptionCapability: PreemptionCapability! """ARP preemption vulnerability""" arpPreemptionVulnerability: PreemptionVulnerability! """Minimum 5QI priority level""" min5QIPriorityLevel: Int """Averaging window in milliseconds""" averagingWindow: Int """Maximum data burst volume in bytes""" maxDataBurstVol: Int """Maximum uplink bit rate""" maxBitRateUL: String """Maximum downlink bit rate""" maxBitRateDL: String """Maximum guaranteed uplink bit rate""" maxGuaranteedBitRateUL: String """Maximum guaranteed downlink bit rate""" maxGuaranteedBitRateDL: String """Extended maximum data burst volume in bytes""" extMaxDataBurstVol: Int } """Input for Quality of Service parameters.""" input QoSInput { """List of allowed 5QI values""" allowed5QI: [Int!]! """Minimum ARP priority level (1-15)""" minArpPriorityLevel: Int! """ARP preemption capability""" arpPreemptionCapability: PreemptionCapability! """ARP preemption vulnerability""" arpPreemptionVulnerability: PreemptionVulnerability! """Minimum 5QI priority level""" min5QIPriorityLevel: Int """Averaging window in milliseconds""" averagingWindow: Int """Maximum data burst volume in bytes""" maxDataBurstVol: Int """Maximum uplink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxBitRateUL: String """Maximum downlink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxBitRateDL: String """Maximum guaranteed uplink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxGuaranteedBitRateUL: String """Maximum guaranteed downlink bit rate (format: ' ' where unit is bps, Kbps, Mbps, Gbps, or Tbps)""" maxGuaranteedBitRateDL: String """Extended maximum data burst volume in bytes""" extMaxDataBurstVol: Int } """QoS Profile for PCF policy negotiation.""" type QoSProfile implements Node { """The unique identifier of the QoS profile""" id: ID! """The provider ID this profile belongs to""" providerId: ID! """A descriptive name for the QoS profile""" name: String! """Priority for selecting this profile when multiple profiles are applicable (lower value = higher priority)""" priority: Int! """Quality of Service parameters""" qos: QoS """Aggregate Maximum Bit Rate parameters""" ambr: Ambr """The timestamp when the profile was created""" createdAt: String! """The timestamp when the profile was last modified""" modifiedAt: String! } """The connection type for QoSProfile.""" type QoSProfileConnection { """List of nodes in the connection.""" edges: [QoSProfileEdge!]! """Information about pagination in the connection.""" pageInfo: PageInfo! } """An edge in a connection.""" type QoSProfileEdge { """The item at the end of the edge.""" node: QoSProfile! """A cursor for use in pagination.""" cursor: String! } """Error type for when a QoS Profile is still in use and cannot be deleted.""" type QoSProfileInUse implements Error { """The provider ID""" providerId: ID! """The QoS profile ID that is in use""" qosProfileId: ID! """List of plan version IDs that reference this profile""" referencingPlanVersions: [ID!]! """The error code""" errorCode: String! """The error message""" errorMessage: String } """Input for QoS Profile creation and update.""" input QoSProfileInput { """A descriptive name for the QoS profile""" name: String! """Priority for selecting this profile when multiple profiles are applicable (lower value = higher priority)""" priority: Int! """Quality of Service parameters""" qos: QoSInput """Aggregate Maximum Bit Rate parameters""" ambr: AmbrInput } """Error type for when a QoS Profile is not found.""" type QoSProfileNotFound implements Error { """The provider ID""" providerId: ID! """The QoS profile ID that was not found""" qosProfileId: ID! """The error code""" errorCode: String! """The error message""" errorMessage: String } """An error type to be thrown when RAR is triggered for a provider with disabled RAR feature.""" type RarNotEnabled implements Error { """The provider ID.""" providerId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Rate configuration.""" type Rate { """Particular rate in unit rounding to be applied.""" ratePerRounding: String """A tax rate to be applied. It is a percentage and expressed as a fraction. For example, 0.15 stands for 15% tax rate.""" taxRate: Float! """Minimum number of rounding units to charge. To determine the total minimum units, the value specified is multiplied by perUnitRounding defined for the rating group. If not specified, it defaults to 0.""" rateMinUnits: Int """The initial monetary charge/flag fall fee if premium numbers are specified. If not specified, it will default to 0.""" initialCharge: String } """Rate configuration for monetary balance.""" type RateBalance { """Rate configuration. If not specified then monetary usage is denied (except roaming and long distance which are configured independently).""" rate: Rate """Roaming configuration. If not specified then roaming will be denied.""" roaming: [ExtendedRate!] """Long distance configuration. If not specified then long distance will be denied.""" longDistance: [ExtendedRate!] } """Input type for rate based balances.""" input RateBalanceInput { """Rate configuration. If not specified then monetary usage is denied (except roaming and long distance which are configured independently).""" rate: RateInput """Roaming configuration. If not specified then roaming will be denied.""" roaming: [ExtendedRateInput!] """Long distance configuration. If not specified then long distance will be denied.""" longDistance: [ExtendedRateInput!] } """Rate configuration.""" input RateInput { """Particular rate in unit rounding to be applied.""" ratePerRounding: String """A tax rate to be applied. It is a percentage and expressed as a fraction. For example, 0.15 stands for 15% tax rate.""" taxRate: Float! """Minimum number of rounding units to charge. To determine the total minimum units, the value specified is multiplied by perUnitRounding defined for the rating group. If not specified, it defaults to 0.""" rateMinUnits: Int """The initial monetary charge/flag fall fee if premium numbers are specified. If not specified, it will default to 0.""" initialCharge: String } """An error type to be thrown if a provider crossed the rate limit and request will be rejected""" type RateLimitExceeded implements Error { """Service provider ID with problem.""" providerId: ID! """Date when the rate limit should be restored and request should be retried""" retryAfter: AWSDateTime! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Rate configuration.""" type RateOption { """Particular rate in unit rounding to be applied.""" ratePerRounding: String! """A tax rate to be applied. It is a percentage and expressed as a fraction. For example, 0.15 stands for 15% tax rate.""" taxRate: String """Minimum number of units to use when premium numbers are specified. Numbers specified are a multiple of perUnitRounding defined in the rating group hierarchy for that rating group. If not specified, it will default to 0.""" rateMinUnits: Int """The initial monetary charge/flag fall fee if premium numbers are specified. If not specified, it will default to 0.""" initialCharge: String """Restriction expressions of the Rate. All of them must evaluate to true for the rate to apply.""" restrictions: [String!] } """Rate configuration.""" input RateOptionInput { """Particular rate in unit rounding to be applied.""" ratePerRounding: String! """A tax rate to be applied. It is a percentage and expressed as a fraction. For example, 0.15 stands for 15% tax rate.""" taxRate: String """Minimum number of units to use when premium numbers are specified. Numbers specified are a multiple of perUnitRounding defined in the rating group hierarchy for that rating group. If not specified, it will default to 0.""" rateMinUnits: Int """The initial monetary charge/flag fall fee if premium numbers are specified. If not specified, it will default to 0.""" initialCharge: String """Restriction expressions of the Rate. All of them must evaluate to true for the rate to apply.""" restrictions: [String!] } """Type definition for a rate plan service. This type is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" type RatePlanService implements Node & PlanService { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan service.""" id: ID! """The name of the plan service.""" name: String! """The rating groups supported by the service.""" ratingGroups: [Int!]! """The priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed.""" denyOtherServices: Boolean """Rate configurations. If not specified then monetary usage is denied.""" rateOptions: [RateOption!] } """Input to define a rate plan service.""" input RatePlanServiceInput { """Name of the plan service. Generated if not provided.""" name: String """The rating groups supported by the service.""" ratingGroups: [Int!]! """Defines the priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. By default it is false.""" denyOtherServices: Boolean """Rate configuration. If not specified then monetary usage is denied.""" rateOptions: [RateOptionInput!] } """Rating group.""" type RatingGroup { """A unique identifier of a service provider.""" providerId: ID! """Rating Group ID.""" id: Int! """Name of the rating group.""" name: String! """Unit rounding.""" perUnitRounding: Int """Minimum total resevation that can be held for this rating group. If empty then there is no minimum.""" minReservation: Float """Maximum total resevation that can be held for this rating group. If empty then there is no maximum.""" maxReservation: Float """Unit type that is used for this rating group.""" unitType: UnitType! """Validity type which is returned in responses.""" quotaValidityTime: Int """Holding time which is returned in responses.""" quotaHoldingTime: Int """Whether dynamic quotas will be used or not.""" enableDynamicQuotaAllocation: Boolean """Configuration for condition-specific announcement codes.""" announcementMapping: AnnouncementMapping """Final unit handling configuration applied when this rating group's balance is depleted.""" finalUnitHandling: FinalUnitHandling """When true, the MSCC-level Result-Code is mirrored to the command-level Result-Code in Diameter responses.""" commandLevelResultCode: Boolean! """Default groups are determined by names, not by IDs, ID of default group can be changed.""" isDefault: Boolean! """List of nested rating groups.""" children: [RatingGroup] } """An error type to be thrown if there is a rating group which is not provided in the input but used by some plan.""" type RatingGroupHierarchyHasReferences implements Error { """A list of rating groups that have references to plans.""" ratingGroup: [RatingGroup!]! errorCode: String! errorMessage: String } """Rating group parameters.""" input RatingGroupInput { """Rating group ID.""" id: Int! """Unique name for this Rating Group. Must be between 1 and 50 characters and consist of letters, digits or special characters.""" name: String! """Unit rounding. If not provided then unit rounding is used from parents RGs.""" perUnitRounding: Int """Minimum total reservation that can be held for this rating group. If not provided then there is no minimum.""" minReservation: Float """Maximum total reservation that can be held for this rating group. If not provided then there is no maximum.""" maxReservation: Float """Unit type that is used for this rating group. Service specific units used by default.""" unitType: UnitType """Validity type which is returned in responses.""" quotaValidityTime: Int """Holding time which is returned in responses.""" quotaHoldingTime: Int """Whether dynamic quotas will be used or not.""" enableDynamicQuotaAllocation: Boolean """Configuration for condition-specific announcement codes.""" announcementMapping: AnnouncementMappingInput """Final unit handling configuration applied when this rating group's balance is depleted.""" finalUnitHandling: FinalUnitHandlingInput """When true, the MSCC-level Result-Code is mirrored to the command-level Result-Code in Diameter responses.""" commandLevelResultCode: Boolean """List of nested rating groups.""" children: [RatingGroupInput] } """Return type of RatingGroup including all possible errors.""" union RatingGroupResult = RatingGroup | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """An error type to be thrown if rating group hierarchy validation failed.""" type RatingGroupValidationFailed implements Error { """A list of default rating groups if default rating groups were not provided.""" root: RatingGroup! errorCode: String! errorMessage: String } """A recurring first usage plan version charges a fee on first usage within each recurring period.""" type RecurringFirstUsagePlanVersion implements Node & PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """The list of plan services of the plan version.""" services: [PlanService!] """Any custom details.""" custom: AWSJSON """A fee charged on first usage of each recurring period.""" firstUsageFee: Float """The period type for recurring first usage fee (HOUR, DAY, WEEK, MONTH).""" periodType: PeriodType! """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] } """Input to define a recurring first usage plan.""" input RecurringFirstUsagePlanVersionInput { """String representation of the version.""" version: String! """The services included in the plan.""" services: [PlanServiceInput!]! """Any custom details of the plan version.""" custom: AWSJSON """Plan version priority.""" priority: Float """PCF policies to apply for this plan version""" policies: [PolicyInput!] """Policy counters to attach to account when subscribing""" policyCounters: [ID!] """A fee charged on first usage of each recurring period. Required.""" firstUsageFee: Float! """The period type for recurring first usage fee (HOUR, DAY, WEEK, MONTH). Required.""" periodType: PeriodType! } """Resolved override for a recurring-first-usage plan.""" type RecurringFirstUsagePlanVersionOverride implements PlanVersionOverride { """Plan version priority.""" priority: Float """The period type for recurring first usage.""" periodType: PeriodType """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] } """Override for plan-level properties of a recurring-first-usage plan.""" input RecurringFirstUsagePlanVersionOverrideInput { """Plan version priority.""" priority: Float """The period type for recurring first usage.""" periodType: PeriodType """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] } """Information about the plan recurring period""" type RecurringPeriod { """Determines a period when counter value must be reset.""" periodType: PeriodType! """The number of period types that will be used to reset or expire the plan.""" numberOfPeriods: Int! """Determines if the plan is recurring or expires after the period.""" recurring: Boolean! } """Parameters for recurring period.""" input RecurringPeriodInput { """Determines a period when counter value must be reset.""" periodType: PeriodType! """The number of period types that will be used to reset or expire the plan.""" numberOfPeriods: Int! """Determines if the plan is recurring or expires after the period.""" recurring: Boolean! } type RecurringPlanVersion implements Node & PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """The list of plan services of the plan version. This attribute is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" services: [PlanService!] """Any custom details.""" custom: AWSJSON """A fee that will be charged just once right after the subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee that will be charged just once on first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """A duration when specified renewalFee will be charged.""" renewal: Duration """A fee that will be charged per specified renewal duration. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. If not provided then no such fee is charged.""" renewalFee: Float """Put a plan on hold for a limited grace period while waiting for a successful renewal. Must be a valid ISO 8601 duration string (e.g., "P1W1D", "PT30M").""" gracePeriod: String """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeRenewal: [Int] """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] } """Input to define a recurring plan.""" input RecurringPlanVersionInput { """String representation of the version.""" version: String! """The services included in the plan.""" services: [PlanServiceInput!]! """Any custom details of the plan version.""" custom: AWSJSON """Plan version priority.""" priority: Float """A fee charged once immediately after subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee charged once upon the first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """A duration when specified renewalFee will be charged.""" renewal: DurationInput! """A fee that will be charged per specified renewal duration. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. If not provided then no such fee is charged.""" renewalFee: Float """Put a plan on hold for a limited grace period while waiting for a successful renewal. Must be a valid ISO 8601 duration string (e.g., "P1W1D", "PT30M").""" gracePeriod: String """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeRenewal: [Int] """PCF policies to apply for this plan version""" policies: [PolicyInput!] """Policy counters to attach to account when subscribing""" policyCounters: [ID!] } """Resolved override for a recurring plan.""" type RecurringPlanVersionOverride implements PlanVersionOverride { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """A duration when specified renewalFee will be charged.""" renewal: Duration """A fee that will be charged per specified renewal duration.""" renewalFee: Float """Put a plan on hold for a limited grace period while waiting for a successful renewal. Must be a valid ISO 8601 duration string (e.g., "P1W1D", "PT30M").""" gracePeriod: String """Defines the seconds before renewal to send notifications.""" notificationSecondsBeforeRenewal: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverride!] } """Override for plan-level properties of a recurring plan.""" input RecurringPlanVersionOverrideInput { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """A duration when specified renewalFee will be charged.""" renewal: DurationInput """A fee that will be charged per specified renewal duration.""" renewalFee: Float """Put a plan on hold for a limited grace period while waiting for a successful renewal. Must be a valid ISO 8601 duration string (e.g., "P1W1D", "PT30M").""" gracePeriod: String """Defines the seconds before renewal to send notifications.""" notificationSecondsBeforeRenewal: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverrideInput!] } """A redirect target and the restrictions that must all hold for it to be selected.""" type RedirectServer { """Redirect server address. May contain context property placeholders that are resolved at depletion time.""" redirectServerAddress: String! """Restriction expressions. All must evaluate to true for this redirect server to be selected.""" restrictions: [String!] } """A redirect target and the restrictions that must all hold for it to be selected.""" input RedirectServerInput { """Redirect server address. May contain context property placeholders that are resolved at depletion time.""" redirectServerAddress: String! """Restriction expressions. All must evaluate to true for this redirect server to be selected.""" restrictions: [String!] } """The possible values of prorating for the accounts on cancellation of subscriptions.""" enum RefundPolicy { """No refund for for any remaining time in the cycle.""" NONE """The recurring offer charge is refunded in full.""" FULL_REFUND """The recurring offer charge is refunded relative to the point in the bill cycle that the offer was canceled.""" TIME_BASED } """Input type of ResetUserPassword.""" input ResetUserPasswordInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of the user.""" userId: ID! } """Return type of ResetUserPassword Mutation""" type ResetUserPasswordPayload { """Service provider ID. This is retrieved from cognito group named Provider_{providerId}""" providerId: ID! """Cognito User ID""" userId: ID! } """Return type of ResetUserPassword including all possible errors. UserNotFound - Given user ID does not exist in the tenant, even if user ID exists in Cognito UserIncorrectStatus - Given user is not in a state where the password can be reset InvalidField (InvalidEmailDomain) - Unable to call the API for the user in this domain""" union ResetUserPasswordResult = ResetUserPasswordPayload | UserNotFound | UserIncorrectStatus | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Type for restore job.""" type RestoreJob { """ID for the restore job.""" id: ID! """Provider ID.""" providerId: ID! """Status of the job.""" status: RestoreJobStatus! """The creation time of the job.""" createdAt: AWSDateTime! """The email of the person who triggered the restore job.""" createdBy: AWSEmail! """Time of the last update of the record. Will be the same as the creation date when record is created.""" modifiedAt: AWSDateTime! """Date/time in UTC to restore the data to.""" timestamp: AWSDateTime! } """Status of a restore job.""" enum RestoreJobStatus { """Status when the job is first created.""" CREATED """Status to state that the job is in progress.""" IN_PROGRESS """Status after job is complete.""" COMPLETE """Status after job is canceled.""" CANCELED } """Cognito role groups""" enum RoleGroup { """Role to allow user to query accounts/devices""" Account_Query """Role to allow user to manipulate accounts/devices""" Account_Admin """Role to allow user to query/manipulate accounts/devices and query EDRs""" Data_Admin """Role to allow user to query plan related data""" Plan_Query """Role to allow user to query/manipulate plan related data""" Plan_Designer """Role to allow user to query/manipulate plan related data and to publish plans""" Plan_Publisher """Role to allow user to administer users of his/her own tenant""" Tenant_Admin """Role to allow user to query/deploy field mappings and update rating groups of his/her own tenant""" Network_Admin """Role to allow user to query/manipulate field mappings and SGSN table of his/her own tenant""" Network_Operator """Role to allow user to query/manipulate plan design settings of his/her own tenant""" Plan_Admin """Allows access to engine APIs""" Infrastructure """Role to allow user to read provider dashboards""" Dashboard_Reader } """Information about the SGSN table""" type SGSNTable { """SGSN table rows""" rows: [SGSNTableItem]! } """Information about the SGSN table""" input SGSNTableInput { """SGSN table rows""" rows: [SGSNTableItemInput]! } """Information about the SGSN table row""" type SGSNTableItem { """SGSN IP range of the telco""" sgsnIPCIDR: String! """Country code of the telco in ISO3166-alpha-2 format""" countryCode: String! } """Information about the SGSN table row""" input SGSNTableItemInput { """SGSN IP range of the telco""" sgsnIPCIDR: String! """Country code of the telco in ISO3166-alpha-2 format""" countryCode: String! } """Return type of getSGSNTable.""" union SGSNTableResult = SGSNTable | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Return type of a User for mutations creating/updating""" type SaveUserPayload { """Service provider ID. This is retrieved from cognito group named Provider_{providerId}""" providerId: ID! """Cognito User ID""" userId: ID! """User email""" email: AWSEmail! """The name of the user""" name: String! """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! """The user's profile picture. If profile picture exists, it will always contain a pre-signed URL to download profile picture. It will contain pre-signed URL to upload picture only for the updateUserProfile mutation""" profilePicture: ProfilePhoto @deprecated(reason: "User profile pictures are no longer supported. Deprecated date is 2026-04-13. Expiration date is 2026-06-13.") """The user's phone number""" phoneNumber: AWSPhone """The user's job title""" jobTitle: String """The time when the user should expire. Used for temporary access.""" expiry: AWSDateTime """The alarm interval in minutes when an email should be send to the user that access expires. Only used when expiry is specified. Can be 0 or not specified when expiry is specified which means no email is send.""" alertInterval: Int """Indicates whether a new Cognito user was created. False when an existing user was added to a new tenant.""" newUser: Boolean! } input SearchableQueryMap { search: String } """Possible restrictions for plan service usage.""" enum ServiceConstraint { """A flag indicating on-net calls. On-net means that the A-number is in the home network and the B-number belongs to the same service provider. Only supported if the provider carrier code/homeNetworks is set.""" IS_ON_NET """A flag indicating off-net calls. If a call is not on-net it is off-net. Only supported if the provider carrier code/homeNetworks is set.""" IS_OFF_NET """A flag indicating whether roaming services are only applicable if the A-number and B-number are in the same country. For example, when roaming in the US and calling a number in the US.""" IS_SAME_COUNTRY } """An error type to be thrown if a new version of a plan is created based on the old format while a version with the new format exists.""" type ServiceFormatError implements Error { """The provider for which the balance type ID wasn't found.""" providerId: ID! """The balance type ID that wasn't found.""" versionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """Settings for providers.""" type Settings { """A unique identifier of a service provider.""" providerId: ID! """All settings formatted in JSON.""" json: AWSJSON """Status of the Dynamic Quota Allocation test mode. When enabled additional data is saved in EDRs for analysis of DQ feature.""" enableDynamicQuotaTestMode: Boolean } """Return type of Settings including all possible errors.""" union SettingsResult = Settings | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Versioned part of the planVersion.""" type SimplePlanVersion implements Node & PlanVersionInterface { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan version.""" id: ID! """String representation of the version.""" version: String! """If the current version is based on another version.""" basedOn: PlanVersion """Plan of the plan version.""" plan: Plan! """Each version has its own state.""" state: PlanState! """The number of assignments to Accounts this version has.""" refCount: Int! """When it was created.""" createdAt: AWSDateTime! """By whom it was created.""" createdBy: String! """When it was last modified.""" modifiedAt: AWSDateTime! """By whom it was modified.""" modifiedBy: String! """When it was deployed.""" deployedAt: AWSDateTime """By whom it was deployed.""" deployedBy: String """If the plan version was created by using template this attribute contains all the parameters with which it was created.""" template: TemplateInstance """List of counters defined in the plan.""" counters: [Counter] """Plan version priority that determines the execution order for charging and rating.""" priority: Float """The list of plan services of the plan version. This attribute is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" services: [PlanService!] """Any custom details.""" custom: AWSJSON """A fee that will be charged just once right after the subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee that will be charged just once on first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """Defines the period the plan is available.""" expiration: Duration """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeExpiration: [Int!] """PCF policies associated with this plan version.""" policies: [Policy!] """Policy counters to attach to account when subscribing.""" policyCounters: [PolicyCounter!] } """Input to define a simple (non-recurring) plan.""" input SimplePlanVersionInput { """String representation of the version.""" version: String! """The services included in the plan.""" services: [PlanServiceInput!]! """Any custom details of the plan version.""" custom: AWSJSON """Plan version priority.""" priority: Float """A fee charged once immediately after subscription. If not provided, no fee is charged.""" purchaseFee: Float """A fee charged once upon the first usage of the plan. If not provided, no fee is charged.""" firstUsageFee: Float """Defines the period the plan is available.""" expiration: DurationInput """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeExpiration: [Int!] """PCF policies to apply for this plan version""" policies: [PolicyInput!] """Policy counters to attach to account when subscribing""" policyCounters: [ID!] } """Resolved override for a simple (non-recurring) plan.""" type SimplePlanVersionOverride implements PlanVersionOverride { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """Defines the period the plan is available.""" expiration: Duration """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeExpiration: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverride!] } """Override for plan-level properties of a simple (non-recurring) plan.""" input SimplePlanVersionOverrideInput { """Plan version priority.""" priority: Float """A fee charged once immediately after subscription.""" purchaseFee: Float """A fee charged once upon the first usage of the plan.""" firstUsageFee: Float """Defines the period the plan is available.""" expiration: DurationInput """Defines the seconds before expiration to send notifications.""" notificationSecondsBeforeExpiration: [Int!] """Policy counters to attach to account when subscribing. REPLACES the plan's policy counters entirely.""" policyCounters: [ID!] """Overrides for individual services within the plan.""" services: [PlanServiceOverrideInput!] } """Input type of SubscribeToPlanVersion.""" input SubscribeToPlanVersionInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """Unique identifier of a plan version to subscribe to. You should provide only one of the following: planVersionId or planId . When using planVersionId , the specified version of the plan is applied directly to the subscriber. Opt for planVersionId when a specific plan version must be enforced without automatic updates to newer versions. This approach ensures that the subscriber remains on the selected plan version without transitioning to newer versions unless explicitly migrated.""" planVersionId: ID """Additional Information : If there is no active version of the plan at the time of the API call, SubscribeToPlan will raise an error even if the subscription is for a future date. The active plan version is the one with the most recent effectiveDateTime that is not in the future, and it is included in the aliases array returned by the getPlan query.""" planId: ID """The start time of the subscription. Set to now if not provided.""" from: AWSDateTime """The end time of the subscription. If not provided, it defaults to "3000-01-01T00:00:00.000Z" to indicate an indefinite end date for recurring plans and set to start time ( from ) plus the plan period for non-recurring ones.""" to: AWSDateTime """List of fields with values that override values from a plan.""" overrides: [KeyValueInput] @deprecated(reason: "Only valid for Template-based plans") """Structured override for Rate Anything plans. Mutually exclusive with 'overrides'.""" override: PlanVersionOverrideInput } """Return type of SubscribeToPlanVersion.""" type SubscribeToPlanVersionPayload { """The subscribed plan version in question.""" subscribedPlanVersion: SubscribedPlanVersion! """The account in question.""" account: Account! } """Return type of SubscribeToPlan including all possible errors. SubscribeToPlanVersionValidationFailed (SubscriptionDateCannotExceedPlanPeriod) - should be returned when the plan is non recurring and the subscription exceeds the plan period length. SubscribeToPlanVersionValidationFailed (ActiveSubscriptionFromDateIsReadOnly) - The “from” date of an active subscription cannot be changed. SubscribeToPlanVersionValidationFailed (PrepaidAccountCannotSubscribeToPostpaidPlan) - A prepaid account cannot subscribe to a postpaid plan. SubscribeToPlanVersionValidationFailed (PurchaseFeeCannotBeCharged) - There is not enough balance to charge a purchase fee, plan subscription has been expired immediately. SubscribeToPlanVersionValidationFailed (PostpaidBillingDayOfMonthRequired) - Postpaid account must have billingDayOfMonth when subscribing to a plan with renewalCount. The account must have billingDayOfMonth configured. PlanVersionNotFound (PlanVersionNotFound) - The requested plan version with the provided ID cannot be found. PlanNotFound (PlanNotFound) - The requested plan with the provided ID cannot be found. PlanAliasNotFound (PlanAliasNotFound) - The requested plan alias with the provided ID cannot be found. PlanAliasNotActive (PlanAliasNotActive) - The requested plan alias with the provided ID does not have an active version. PlanVersionIsNotAssignable (PlanVersionIsNotAssignable) - The requested plan version is marked as not assignable. Please, make it assignable first. AccountNotFound (AccountNotFound) - The requested account with the provided ID cannot be found. SubscriptionNotFound (SubscriptionNotFound) - The plan subscription with the provided ID was not found. InvalidField (OnlyOnePlanToBeProvided) - You cannot provide both planId and planVersionId. InvalidField (PlanMustBeProvided) - Either planId or planVersionId must be provided. InvalidField (InvalidFutureDate) - The provided date cannot be in the past. InvalidField (InvalidDatesRange) - The provided "to" date cannot be earlier than the provided "from" date. InvalidField (InvalidPostpaidToDate) - Custom subscription end date (to) does not match the calculated end date when renewalCount is defined on a postpaid plan. InternalServerError (ChargeEngineNotAvailable) - The charge engine is not available at this time. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union SubscribeToPlanVersionResult = SubscribeToPlanVersionPayload | PlanVersionNotFound | PlanVersionIsNotAssignable | AccountNotFound | SubscriptionNotFound | InvalidField | SubscribeToPlanVersionValidationFailed | InternalServerError | InvalidProviderLifecycleStage | RateLimitExceeded | PlanNotFound | PlanAliasNotFound | PlanAliasNotActive | FeatureNotEnabled """An error type to be thrown if a plan cannot be assigned or reassigned to provided dates.""" type SubscribeToPlanVersionValidationFailed implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An instance of a plan version that belongs to an account.""" type SubscribedPlanVersion { """The ID of the subscription.""" planSubscriptionId: ID! """The start time of the subscription.""" from: AWSDateTime """The end time of the subscription.""" to: AWSDateTime """The time of the next renewal of the subscription if it is a recurring plan.""" renewal: AWSDateTime """The plan version of the subscription.""" planVersion: PlanVersionInterface! """Whether or not this is a referenced plan version defined through the deploy API.""" aliasEnabled: Boolean! """List of fields with values that override values from a plan.""" overrides: [KeyValue] @deprecated(reason: "Only valid for Template-based plans") """Structured override for Rate Anything plans.""" override: PlanVersionOverride } """An error type to be thrown if a subscription for provided dates cannot be found. If "to" was empty in input, it will be empty in error. If "from" was empty in input, it will be "now" in error.""" type SubscriptionNotFound implements Error { """The ID of the subscription.""" planSubscriptionId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The possible values of prorating for the postpaid accounts on subscription.""" enum SubscriptionPolicy { """Recurring offers (charge or allowance) are applied in full, independent of when the offer is purchased related to the bill cycle date.""" NONE """Recurring offers (charge or allowance) are prorated based on when the offer is purchased relative to the bill cycle.""" TIME_BASED } """A union to define all possible parameters for templates.""" union TemplateInstance = InitialTemplateInstance | InitialRecurringFirstUsageTemplateInstance """Type of tenant specific alarms that tenants can subscribe to.""" enum TenantAlarmType { """When tenant subscribes to this, they will be notified whenever they try to charge an account that does not exist.""" ACCOUNT_NOT_FOUND """When tenant subscribes to this, they will be notified whenever they try to charge a device that does not exist.""" DEVICE_NOT_FOUND """When tenant subscribes to this, they will be notified whenever rating plan cannot be found when processing a charge request.""" NO_RATING_PLAN """When tenant subscribes to this, they will be notified whenever they try to update or terminate a session that does not exist.""" SESSION_NOT_FOUND """When tenant subscribes to this, they will be notified whenever they try to update or terminate a session that is closed.""" STALE_SESSION_CLOSED """When tenant subscribes to this, they will be notified whenever they are trying to use a rate anything plan that contains invalid expression(s).""" EXPRESSION_COMPILATION_ERROR } type Termination { """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA)""" aNumberHomeCountryExpr: String! """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA) Only bNumberCurrentCountryExpr or currentOperatorExpr can be specified but not both, they are exclusive.""" bNumberCurrentCountryExpr: String """An MCC/MNC expression that allows for wildcards, conjunction, and negation and identifies the operator network. For example, specifying: 505/* - All of Australia and its territories. 31*/* - All of the US. 310/(350,012) - Two specific Verizon networks in the US. This uses an OR. {31*, !310/(350,012)} - All of the US except two specific Verizon networks. This is an outer AND and an inner OR. Only currentOperatorExpr or bNumberCurrentCountryExpr can be specified but not both, they are exclusive.""" currentOperatorExpr: String } """Information about A and B parties for MT calls.""" input TerminationInput { """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA)""" aNumberHomeCountryExpr: String! """ISO 3166-1 alpha-2 country code. For example, US. The list can be found here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Negation can be used. For example, !US. Conjunction can be used. For example, (US,CA). This means US OR CA. Other valid examples are (US,!CA) , !(US,!CA) Only bNumberCurrentCountryExpr or currentOperatorExpr can be specified but not both, they are exclusive.""" bNumberCurrentCountryExpr: String """An MCC/MNC expression that allows for wildcards, conjunction, and negation and identifies the operator network. For example, specifying: 505/* - All of Australia and its territories. 31*/* - All of the US. 310/(350,012) - Two specific Verizon networks in the US. This uses an OR. {31*, !310/(350,012)} - All of the US except two specific Verizon networks. This is an outer AND and an inner OR. Only currentOperatorExpr or bNumberCurrentCountryExpr can be specified but not both, they are exclusive.""" currentOperatorExpr: String } """Consists of times and days to make an overall period (e.g. Mon-Fri 09:00-18:00 as working hours period). It should have times specified or days specified or both.""" type TimePeriod { """A list of time intervals in a format of HH:mm-HH:mm (10:32-15:43) or hh24:mm-hh24:mm (10:32am-3:43pm).""" times: [String!] """A list of week days.""" days: [WeekDay!] } """Input type of TimePeriod. It should have times specified or days specified or both.""" input TimePeriodInput { """A list of time intervals in a format of HH:mm-HH:mm (10:32-15:43) or hh24:mm-hh24:mm (10:32am-3:43pm).""" times: [String!] """A list of week days.""" days: [WeekDay!] } input TimestampConfiguration { createdAt: String updatedAt: String } """An error type to be thrown if the transaction has been processed.""" type TransactionHasBeenProcessed implements Error { """Service provider ID.""" providerId: ID! """Transaction ID.""" transactionId: ID! errorCode: String! errorMessage: String } """Input type for triggering a RAR request.""" input TriggerRarInput { """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! } """Return type when triggering a RAR.""" type TriggerRarPayload { """The provider ID.""" providerId: ID! """The account ID.""" accountId: ID! } """Return type of TriggerRar including all possible errors. AccountNotFound (AccountNotFound) - The specified account does not exist. RarNotEnabled (RarNotEnabled) - The RAR feature is not enabled for the provider.""" union TriggerRarResult = TriggerRarPayload | AccountNotFound | RarNotEnabled | RateLimitExceeded | InternalServerError """Type definition for a unit plan service with allowances and rollover. This type is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" type UnitPlanService implements Node & PlanService { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan service.""" id: ID! """The name of the plan service.""" name: String! """The rating groups supported by the service.""" ratingGroups: [Int!]! """The priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed.""" denyOtherServices: Boolean """The balance types that can be charged by the service.""" balanceTypes: [ID!]! """Configuration for managed balance with allowances and rollover.""" managedBalance: ManagedBalance } """Input to define a unit plan service with allowances and rollover.""" input UnitPlanServiceInput { """Name of the plan service. Generated if not provided.""" name: String """The rating groups supported by the service.""" ratingGroups: [Int!]! """Defines the priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """If provided and current service can serve a request (even if it does not have enough balance to do that), then no other services next in the order will be executed. By default it is false.""" denyOtherServices: Boolean """The balance types that can be charged by the service.""" balanceTypes: [ID!]! """Configuration for managed balance with allowances and rollover.""" managedBalance: ManagedBalanceInput } """Resolved override for a unit service.""" type UnitServiceOverride implements PlanServiceOverride { """The name of the service that was overridden.""" name: String! """The allowance for each period.""" periodAllowance: Float """Whether unused allowance rolls over to the next period.""" rollover: Boolean """Maximum number of periods that unused allowance can roll over.""" maxRolloverPeriods: Int """Maximum allowance that can roll over per period.""" rolloverAllowance: Float """Maximum accumulated rollover allowance.""" rolloverMaxAllowance: Float """Whether to charge the new balance first.""" chargeNewBalanceFirst: Boolean } """Override for a unit service's properties.""" input UnitServiceOverrideInput { """The name of the service to override, as defined in the plan.""" name: String! """The allowance for each period.""" periodAllowance: Float """Whether unused allowance rolls over to the next period.""" rollover: Boolean """Maximum number of periods that unused allowance can roll over.""" maxRolloverPeriods: Int """Maximum allowance that can roll over per period.""" rolloverAllowance: Float """Maximum accumulated rollover allowance.""" rolloverMaxAllowance: Float """Whether to charge the new balance first.""" chargeNewBalanceFirst: Boolean } """Possible types of units that will be granted.""" enum UnitType { """Time type of units. Seconds for example.""" TIME """Volume type of units. Bytes for example.""" VOLUME """Any service specific types of units. SMS for example.""" SERVICE_SPECIFIC_UNITS } """Type definition for an unlimited plan service. This type is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out.""" type UnlimitedPlanService implements Node & PlanService { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of a plan service.""" id: ID! """The name of the plan service.""" name: String! """The rating groups supported by the service.""" ratingGroups: [Int!]! """The priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """The balance type consumed by the service.""" balanceType: ID! } """Input to define an unlimited plan service.""" input UnlimitedPlanServiceInput { """Name of the plan service. Generated if not provided.""" name: String """The rating groups supported by the service.""" ratingGroups: [Int!]! """Defines the priority of the service compared to others.""" priority: Float """Restriction expressions of the Service. All of them must evaluate to true for the service to apply.""" restrictions: [String!] """The balance type consumed by the service.""" balanceType: ID! } """Input parameters for updating Balance Type Counter settings for an account. Updates an AccountBalanceCounter record.""" input UpdateAccountBalanceTypeCounterInput { """Provider ID.""" providerId: ID! """The balanceType ID for which to update a Counter in the Account.""" balanceTypeId: ID! """ID of the Accout whose Balance Type Counter will be modified.""" accountId: ID! """The information about the counter.""" counter: BalanceTypeCounterInput! } """Input type of UpdateAccount.""" input UpdateAccountInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """Any custom data required by the account.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write — rejected as InvalidField ( errorCode: UndeclaredCustomProperty for unknown keys, errorCode: CustomPropertyTypeMismatch for type mismatches). When no schema is declared, any value is rejected.""" customProperties: AWSJSON """List of friends and family.""" friendsAndFamily: [String] @deprecated(reason: "This field is deprecated in favor of custom fields. Deprecated date is 2025-02-14. Expiration date is 2025-04-13.") """The limit an account can be credited to. It should be negative/zero for prepaid accounts and positive for postpaid accounts.""" creditLimit: Float """Thresholds of the default monetary balance on the account. Whenever the account balance goes lower than any of the values in the set a notification is sent.""" notificationCreditLimitThresholds: [Float] """If account is a postpaid account, i.e. creditLimit is greater than zero, this holds the postpaid properties""" postpaid: UpdateAccountPostpaidPropertiesInput """Initial Lifecycle and state to assign to the new account""" accountLifecycle: AccountLifecycleInput """The timezone of the account in +/-hh:mm or Country/City format.""" timezone: String } """Input type of UpdateAccountParent.""" input UpdateAccountParentInput { """A unique identifier of an account.""" accountId: ID! """The new parent account ID. Null to remove parent.""" parentAccountId: ID } """Return type of UpdateAccountParent.""" type UpdateAccountParentPayload { """The updated account.""" account: Account! } """Return type of UpdateAccountParent including all possible errors.""" union UpdateAccountParentResult = UpdateAccountParentPayload | AccountNotFound | CircularReference | ChildLimitExceeded | RateLimitExceeded | InternalServerError | InvalidProviderLifecycleStage """Return type of UpdateAccount.""" type UpdateAccountPayload { """The updated account.""" account: Account! } """An input type to hold the postpaid properties of accounts""" input UpdateAccountPostpaidPropertiesInput { """The timezone of the user in +/-hh:mm or Country/City format. This is a property for postpaid accounts only.""" timezone: String @deprecated(reason: "This field is deprecated in favor of the top-level timezone field. Use UpdateAccountInput.timezone instead. Deprecated date is 2025-11-18. Expiration date is 2026-01-18.") """The day of month for resetting balance and units for account. Value is between 1 and 31 inclusive. This is a property for postpaid accounts only.""" billingDayOfMonth: Int """Whether the new billing cycle is a long one, e.g. if current date is the 1st and the account was updated to use the 16th. If this value is true, it means that the next bill will be for 45 days, while if false, bill will be for 15 days only. If not provided then used already existing value for this account.""" longFirstBillingCycle: Boolean } """Return type of UpdateAccount including all possible errors. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist. InvalidField (InvalidLifecycleState) - The state for the lifecycle is invalid. InvalidField (InvalidFriendsAndFamilyList) - Friends and family list can consist of 20 numbers maximum. InvalidField (InvalidFriendsAndFamilyNumber) - Friends and family list consists of invalid number. The only allowed format is E.164. InvalidField (InvalidJsonCreditLimit) - Cannot set credit limit from json.creditLimit. Must use creditLimit directly. InvalidField (InvalidJsonCustomData) - The provided customData is an invalid JSON. InvalidField (InvalidTimezone) - Timezone format is wrong. It should be between -12:00 and +14:00 or use a Country/City format. InvalidField (InvalidDayOfMonth) - Billing day of month should be between 1 and 31 inclusive. InvalidField (UndeclaredCustomProperty) - A submitted customProperties key is not declared in the provider's customAccountProperties schema (also raised when the schema is empty / undeclared). InvalidField (CustomPropertyTypeMismatch) - A submitted customProperties value's runtime type does not match its declared CustomPropertyType.""" union UpdateAccountResult = UpdateAccountPayload | AccountNotFound | InvalidField | CannotChangeAccountType | PostpaidFieldInPrepaidAccount | CannotSetLongFirstBillingCycle | DayOfMonthAlreadySet | LifecycleNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """An error type to be thrown if updating archive policy fails.""" type UpdateArchivingPolicyFailed implements Error { """Service provider ID.""" providerId: ID! """The current value for archiving threshold if it exists.""" archiveThreshold: Int errorCode: String! errorMessage: String } """Input type of UpdateArchivingPolicy.""" input UpdateArchivingPolicyInput { """A unique identifier of a service provider.""" providerId: ID! """The number of days after which objects should be moved to Glacier storage.""" archiveThreshold: Int! } """Return type of UpdateArchivingPolicy.""" type UpdateArchivingPolicyPayload { """Service provider ID.""" providerId: ID! """Old value for archiving threshold if it exists.""" oldArchiveThreshold: Int """New value of archiving threshold, which should be equal to that of one defined in input.""" newArchiveThreshold: Int! } """Return type of updateArchivingPolicy and all possible errors. UpdateArchivingPolicyFailed (ErrorSavingArchivingPolicy) - The propagated error message coming from S3. UpdateArchivingPolicyFailed (InvalidArchivingThreshold) - The provided archiveThreshold is invalid. Value should be greater than 0.""" union UpdateArchivingPolicyResult = UpdateArchivingPolicyPayload | UpdateArchivingPolicyFailed | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type for updating a balance details.""" input UpdateBalanceInfoInput { """Balance ID. Required when using balanceInfos.""" balanceId: ID """Balance type ID.""" balanceTypeId: ID @deprecated(reason: "Balance type ID is no longer required for balance updates") """Priority of the balance. If there are multiple balances of the same type, the one with the highest priority will be used first.""" priority: Float """Value of the balance.""" balanceValue: Float """Value of the adjustment to the current balance. The default value is NONE.""" adjustment: AdjustmentType """Limit for the balance.""" limit: Float """Start date of the balance.""" from: AWSDateTime """End date of the balance.""" to: AWSDateTime """Policy counter IDs to associate with this balance instance. Null means no change; empty list removes all.""" policyCounters: [ID!] } """Input type for updating a balance.""" input UpdateBalanceInput { """ID for the balance.""" balanceId: ID @deprecated(reason: "Use balanceId in balanceInfos instead") """Provider ID.""" providerId: ID! """Account ID.""" accountId: ID! """Balance info.""" balanceInfo: UpdateBalanceInfoInput @deprecated(reason: "Use balanceInfos instead") """Balance infos for batch updates. Each item must include balanceId.""" balanceInfos: [UpdateBalanceInfoInput!] """An optional transaction ID to ensure idempotency of the API call if required.""" transactionId: ID } """Return type of UpdateBalance including all possible errors. TransactionHasBeenProcessed (TransactionHasBeenProcessed) - The transaction has been processed. BalanceNotFound (BalanceNotFound) - The balance ID provided does not exist. AccountNotFound (AccountNotFound) - The specified account does not exist. BalanceTypeNotFound (BalanceTypeNotFound) - None of the balance type IDs provided does exist. InvalidField (MissingBalanceInfoInput) - Either balanceInfo or balanceInfos must be provided. InvalidField (CannotProvideBothBalanceInfoAndBalanceInfos) - Cannot provide both balanceInfo and balanceInfos. Use only one. InvalidField (MissingBalanceId) - balanceId is required for balance updates. InvalidField (DuplicateBalanceIds) - Duplicate balance IDs are not allowed. Each balance ID must be unique. InvalidField (UpdatingReadonlyField) - You are updating a field that is readOnly for the default balance. InvalidField (BalanceLimitViolation) - When the balance total exceeds the balance or balance type limit or limit exceeds the limit in balance type. InvalidField (UnlimitedBalanceCannotBeChanged) - When attempting to change the balance value of an unlimited balance. PolicyCounterNotFound (PolicyCounterNotFound) - A referenced policy counter ID does not exist. InvalidField (PolicyTypeNotAllowed) - Only NOTIFICATION type policy counters can be associated with balances.""" union UpdateBalanceResult = BalancePayload | TransactionHasBeenProcessed | BalanceNotFound | BalanceTypeNotFound | AccountNotFound | InvalidField | PolicyCounterNotFound | RateLimitExceeded | InternalServerError """Input parameters for updating Balance Type Counter notifications.""" input UpdateBalanceTypeCounterInput { """Provider ID.""" providerId: ID! """The balanceType ID associated with the Balance Type Counter Creates or updates the counter for the correct Balance Type.""" balanceTypeId: ID! """The information about the counter.""" counter: BalanceTypeCounterInput! } """A representation of Balance Type Counter notifications.""" type UpdateBalanceTypeCounterPayload { """The Balance Type associated with the Balance Type Counter.""" balanceTypeId: ID! """The counter information payload.""" counter: BalanceTypeCounterPayload! } """Input type for updating a balance type.""" input UpdateBalanceTypeInput { """ID for the balance type.""" balanceTypeId: ID! """Provider ID.""" providerId: ID! """Name of the balance type. Has to be unique across a tenant.""" name: String! """Unit type of the balance type.""" unitType: UnitType! """Limit of the balance type. If the balance is rate based, it is equivalent creditLimit.""" limit: Float """List of balance type counter inputs of the balance type.""" counters: [BalanceTypeCounterInput!] } """Return type of UpdateBalanceType including all possible errors. BalanceTypeNameInUse (BalanceTypeNameInUse) - The balance type name is already in use. BalanceTypeHasReferences (BalanceTypeHasReferences) - The balance type is used in an active plan and the unit type and name can't be updated. BalanceTypeNotFound (BalanceTypeNotFound) - The balance type ID provided does not exist. BalanceTypeCounterNotFound (BalanceTypeCounterNotFound) - One of the counter IDs does not exist. InvalidField (InvalidLimit) - The limit has to be an integer value if it is not a rate based balance type. Only rate based balance types can have decimal limits. InvalidField (InvalidCounterName) - The provided counter name must be between 1 and 50 characters and consist of letters, digits or special characters. InvalidField (InvalidCounterNames) - Counter names must be unique across the balance type. InvalidField (InvalidCounterStates) - Thresholds and names of states must be unique across the counter and one of the states must not have a threshold.""" union UpdateBalanceTypeResult = BalanceTypePayload | BalanceTypeNameInUse | BalanceTypeNotFound | BalanceTypeHasReferences | BalanceTypeCounterNotFound | InvalidField | RateLimitExceeded | InternalServerError """Input type for updateClientCredentials API.""" input UpdateClientCredentialsInput { """A descriptive name for the client credentials.""" name: String! """The roles assigned to the client credentials.""" roleGroupMemberships: [RoleGroup!]! } """Return type of updateClientCredentials, including all possible errors. ProviderNotFound - The specified providerId does not exist. ClientNotFound - The specified client credentials id does not exist. InvalidField (RoleGroupMemberships) - A non-valid role group was provided""" union UpdateClientCredentialsResult = ClientCredentials | ProviderNotFound | ClientNotFound | InvalidField | InternalServerError """Input type of UpdateDevice.""" input UpdateDeviceInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """A unique identifier of a device.""" deviceId: ID! """Any custom data required by the device.""" customData: AWSJSON @deprecated(reason: "Schemaless custom data will not be supported in the future. Use customProperties with a provider level schema. Deprecated date is 2026-05-26. Expiration date is 2026-07-26.") """Tenant-defined custom properties. Validated against the provider's schema on write — rejected as InvalidField ( errorCode: UndeclaredCustomProperty for unknown keys, errorCode: CustomPropertyTypeMismatch for type mismatches). When no schema is declared, any value is rejected.""" customProperties: AWSJSON } """Return type of UpdateDevice.""" type UpdateDevicePayload { """The updated device.""" device: Device! } """Return type of UpdateDevice including all possible errors. InvalidField (InvalidJsonCustomData) - The provided customData is an invalid JSON. InvalidField (UndeclaredCustomProperty) - A submitted customProperties key is not declared in the provider's customDeviceProperties schema (also raised when the schema is empty / undeclared). InvalidField (CustomPropertyTypeMismatch) - A submitted customProperties value's runtime type does not match its declared CustomPropertyType.""" union UpdateDeviceResult = UpdateDevicePayload | DeviceNotFound | AccountNotFound | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdateFieldMapping.""" input UpdateFieldMappingInput { """A unique identifier of a service provider.""" providerId: ID! """The path to the field you want to manipulate. For example, "transformedRequest.sMSChargingInformation.numberofMessagesSent". The path must start from either "transformedRequest." or "transformedResponse." and must be an existing path. If provided path does not exist in request or response, only the last key should not exist. For example, "transformedResponse.invocationResult.message" is allowed, while "transformedResponse.invocationResult.message.text" is not allowed, because message is a new key already. It is possible to set a new field to a list. Originally SpEL does not support that, but we iterate over lists with provided [] after them. For example, "transformedRequest.multipleUnitUsage[].usedUnitContainer[].timeSpecificUnits", both multipleUnitUsage and usedUnitContainer are arrays, it means eventually field mapper will add to each item in these lists a new key "timeSpecificUnits". For the N28/SY interface, the path must start from either "transformedN28Request" or "transformedN28Response". You can then set the custom "tenantIdentifier" field by using the path "transformedN28Request.tenantIdentifier". This field can and will not be set on deleting spending limit subscriptions but the subscription ID will be used. For the N5 (Npcf_PolicyAuthorization) interface, the path must start from either "transformedN5Request" or "transformedN5Response". For the N7 (Npcf_SMPolicyControl) interface, the path must start from either "transformedN7Request" or "transformedN7Response".""" path: String! """SpEL expression to generate the value(s). It must return one value, but also it can use the same expressions as "path" with []. For example, "originalRequest.multipleUnitUsage[].usedUnitContainer[].serviceSpecificUnits * 10". It is also possible to use "originalField" as a reference to original value if field exists. For example, "originalField + 10". For the N28/SY interface, the expression must start with either "originalN28Request" or "originalN28Response". For the N5 (Npcf_PolicyAuthorization) interface, the expression must start with either "originalN5Request" or "originalN5Response". For the N7 (Npcf_SMPolicyControl) interface, the expression must start with either "originalN7Request" or "originalN7Response".""" expr: String! } """Return type of UpdateFieldMapping.""" type UpdateFieldMappingPayload { """Updated field mapping.""" fieldMapping: FieldMapping! } """Return type of UpdateFieldMapping including all possible errors. InvalidField (InvalidFieldMappingExpression) - The provided field mapping SpEL expression cannot be compiled.""" union UpdateFieldMappingResult = UpdateFieldMappingPayload | FieldMappingNotFound | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError input UpdateLifecycleInput { """Service provider ID.""" providerId: ID! """Lifecycle ID.""" lifecycleId: ID! """Descriptive name""" name: String """Any custom data; typically only used by Plan Design UI.""" customData: AWSJSON """Lifecycle Definition; first state is used as the default.""" states: [LifecycleStateInput!] } """Return type of CreateAccount including all possible errors. InvalidNumberOfStates (InvalidNumberOfStates) - The lifecycle requires at least one state. InvalidStateTransitions (InvalidStateTransitions) - Transitions need to be to a valid state. LifecycleNotFound (LifecycleNotFound) - The specified lifecycle doesn't exist. InvalidStateTransitions (InvalidExpiryState) - Transition state on expiry need to be in state's list of transitions. InvalidField (InvalidExpiryDays) - expiryDays exceed maxDays. InvalidField (InvalidCustomDataSize) - customData size exceeds max size.""" union UpdateLifecycleResult = LifecyclePayload | LifecycleNotFound | InvalidNumberOfStates | InvalidStateTransitions | ProviderNotFound | RateLimitExceeded | InternalServerError | InvalidField input UpdateMyProviderConfigInput { """The name of the tenant. Stays the same if not provided.""" name: String """The common name that will be used in the SSL certificates of the tenant. Stays the same if not provided.""" commonName: String """The home networks for the tenant. Required if onNet calls should be supported. Stays the same if not provided.""" homeNetworks: String """List of emergency numbers. Stays the same if not provided.""" emergencyNumbers: [String] """The carrier code. Stays the same if not provided.""" carrierCode: String """The ARN of the event bus that we should be sending events to.""" eventBusArn: String """The tenant specific alarms the provider is subscribed to.""" activeAlarms: [TenantAlarmType] """Failure handling strategy. Default is RETRY_AND_TERMINATE.""" failureHandling: FailureHandling """Whether RAR notifications are enabled or not. Defaults to false.""" rarEnabled: Boolean """Insufficient balance handling strategy for session-based charging. Defaults to PROVIDE_ROUNDED_AMOUNT. Rate Anything requests with PROVIDE_ROUNDED_AMOUNT will be handled just like PROVIDE_REMAINING.""" insufficientBalanceSessionHandling: InsufficientBalanceSessionHandling """Insufficient balance handling strategy for event-based charging. Defaults to PROVIDE_ROUNDED_AMOUNT. Rate Anything requests with PROVIDE_ROUNDED_AMOUNT will be handled just like REJECT.""" insufficientBalanceEventHandling: InsufficientBalanceEventHandling """Tenant-defined custom property schema for Accounts. Replace-semantics: an empty array clears all existing declarations; omit to leave existing schema unchanged.""" customAccountProperties: [CustomPropertyInput!] """Tenant-defined custom property schema for Devices. Replace-semantics: an empty array clears all existing declarations; omit to leave existing schema unchanged.""" customDeviceProperties: [CustomPropertyInput!] } """Return type of UpdateMyProviderConfig including all possible errors. InvalidField (WrongNameLength) - Name length must be between 2 and 50 characters. InvalidProviderLifecycleStage - Provider user can't call API when provider lifecycle stage is CREATING, SUSPENDED, TERMINATED or DELETED. InvalidField (CommonNameExists) - The common name exists for a non-deleted provider. InvalidField (DuplicateCustomPropertyName) - customAccountProperties / customDeviceProperties contains duplicate names within the same array.""" union UpdateMyProviderConfigResult = ProviderConfig | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdatePlan.""" input UpdatePlanInput { """A human readable name. Not unique.""" name: String } """Return type of UpdatePlan including all possible errors. InvalidField (InvalidName) - The provided name must be between 2 and 50 characters and consist of letters, digits or special characters. InvalidField (InvalidServiceName) - The provided name must be between 2 and 50 characters and consist of letters, digits or special characters. InvalidField (DuplicatedServiceName) - Service names must be unique across the plan version. InvalidField (InvalidRatingGroup) - There is no provided rating group ID in the hierarchy or provided rating group ID is the Root. InvalidField (EmptyBalanceTypes) - balanceTypes must not be empty. InvalidField (InvalidBalanceTypeIds) - Balance Type Ids in balanceTypeIds must be unique. InvalidField (InvalidBalanceTypes) - Balance Type Ids in balanceTypes must be unique. InvalidField (InvalidBalanceTypeIds) - All balance Type Ids in balanceTypeIds must be Ids of either rate based balance types or not rate based balance types. Mixing is not allowed. InvalidField (InvalidBalanceTypes) - UnitPlanService only supports non-rate based balance types. InvalidField (InvalidManagedBalanceTypeId) - balanceTypeIds does not include 'managedBalanceTypeId'. InvalidField (InvalidManagedBalanceTypes) - balanceTypes does not include 'managedBalanceTypeId'. InvalidField (MissingField) - The periodAllowance must be provided and must be greater than zero when managedBalance is used for unit plan services. InvalidField (InvalidRolloverSettings) - The fields maxRolloverPeriods, rolloverAllowance, rolloverMaxAllowance must not be provided if rollover is set to false. InvalidField (InvalidRolloverSettings) - Rollover, maxRolloverPeriods, rolloverAllowance, rolloverMaxAllowance must not be provided if periodAllowance is not provided or 0 (unlimited). InvalidField (InvalidInteger) - The provided number can be only an integer. InvalidField (ExpressionValidationFailed) - Invalid expression in service restrictions or rateOptions.restrictions.""" union UpdatePlanResult = PlanPayload | PlanNotFound | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdatePlanSubscription.""" input UpdatePlanSubscriptionInput { """A unique identifier of a service provider.""" providerId: ID! """A unique identifier of an account.""" accountId: ID! """A unique identifier of a plan subscription to use.""" planSubscriptionId: ID! """The unique identifier of a specific plan version to which the subscription will be switched. When switching to a new plan, provide only one of the following: planVersionId or planId . If planVersionId is provided, the subscription will be updated to the specified version of the plan. Opt for planVersionId when you need to enforce a specific plan version for the subscription without automatically transitioning to newer versions. This ensures that the subscriber remains on the chosen version unless explicitly migrated.""" planVersionId: ID """A unique identifier of a plan reference to subscribe to. When switching a subscription to a new plan or version, provide only one of the following: planId or planVersionId . If planId is provided, the currently active version of the plan is automatically applied and continuously evaluated with each operation, ensuring that the most recent version is always enforced. If there is no active version of the plan at the time of the API call, SubscribeToPlan will raise an error even if the subscription is for a future date.""" planId: ID """List of fields with values that override values from a plan.""" overrides: [KeyValueInput] @deprecated(reason: "Only valid for Template-based plans") """The start time of the subscription. Set to now if not provided.""" from: AWSDateTime """The end time of the subscription. Set to a far time into the future if not provided.""" to: AWSDateTime } """Input type of UpdatePlanVersionFromInitialRecurringFirstUsageTemplate.""" input UpdatePlanVersionFromInitialRecurringFirstUsageTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID to be updated.""" planVersionId: ID! """The name of the version to be updated. Remains not changed if not provided.""" version: String """A fee that will be charged every time after the recurringFirstUsagePeriod expires. Currently, this is at the next hour for hourly plans, at next midnight of the account timezone for daily plans, at next Saturday midnight of the account timezone for weekly plans, and at the last day of the month midnight of the account timezone for monthly plans.""" recurringFirstUsageFee: Float! """The period type at which the recurringFirstUsageFee is charged, hourly, daily, weekly, monthly.""" recurringFirstUsagePeriodType: PeriodType! """List of plan services. Remains not changed if not provided.""" services: [InitialRecurringFirstUsageTemplateServiceInput!] """Custom data in JSON format to be able to save and retrieve some configurations. Remains not changed if not provided.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. Remains not changed if not provided.""" priority: Float """Policies to attach to the plan version. When provided, replaces all existing policies. Pass an empty list to clear all policies. Omit to keep existing policies unchanged.""" policies: [PolicyInput!] } """Input type of UpdatePlanVersionFromInitialTemplate.""" input UpdatePlanVersionFromInitialTemplateInput { """A unique identifier of a service provider.""" providerId: ID! """An existing plan version ID to be updated.""" planVersionId: ID! """The name of the version to be updated. Remains not changed if not provided.""" version: String """A fee that will be charged per specified recurring period. Recurring fee is charged first time after the first period. If you need to charge some fee on subscription you need to use purchaseFee. Remains not changed if not provided.""" fee: Float """A fee that will be charged just once on first usage of the plan. Remains not changed if not provided.""" firstUsageFee: Float """A fee that will be charged just once right after the subscription. Remains not changed if not provided.""" purchaseFee: Float """A period when specified fee will be charged. Remains not changed if not provided.""" period: RecurringPeriodInput """List of plan services. Remains not changed if not provided. A plan service can only specify a monetary or unit rate but not both, they are exclusive.""" services: [InitialTemplateServiceInput!] """A set of periods in seconds when to send multiple notifications before the plan expires. Remains unchanged if not provided.""" notificationPeriodsBeforeExpiration: [Int] """Put a plan on hold for a limited grace period while waiting for a successful renewal. It is a sum of provided duration inputs.""" renewalGracePeriod: [DurationInput] """Custom data in JSON format to be able to save and retrieve some configurations. Remains not changed if not provided.""" json: AWSJSON """Plan priority that determines the execution order for charging and rating. Remains not changed if not provided.""" priority: Float """The prorating options for the plan""" proratingOptions: ProratingOptionsInput """Policies to attach to the plan version. When provided, replaces all existing policies. Pass an empty list to clear all policies. Omit to keep existing policies unchanged.""" policies: [PolicyInput!] } """Return type of UpdatePlanVersionFromInitialTemplate including all possible errors. InvalidField (InvalidExtendedRate) - In the roaming or long distance one of the inputs (origination or termination) must be provided. InvalidField (InvalidRatingGroup) - There is no provided rating group ID in the hierarchy or provided rating group ID is the Root. InvalidField (SubscriptionPolicy) - If "alignBillingToDoM" is set to false and "subscriptionPolicy" was anything other than NONE or empty InvalidField (RefundPolicy) - If "alignBillingToDoM" is set to false and "refundPolicy" was anything other than NONE or empty InvalidField (ProratingOptionsSetForNonMonthlyPlan) - If "alignBillingToDoM" is set to true for a non monthly plan BalanceTypeNotFound (BalanceTypeNotFound) - One of the provided balance type IDs does not exist. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. CreatePlanValidationFailed (FeeIsNotRequired) - Fee is provided for a non recurring plan. Recurring plan must have a period specified and this period must be marked as recurring. CreatePlanValidationFailed (BaseVersionIsNotTemplate) - The specified planVersionId is not a template version. ServiceFormatError (ServiceFormatError) - A new version of a plan is created based on the old format while a version with the new format exists. As soon as a plan uses the new balance format, all versions of the plan must use the new format.""" union UpdatePlanVersionFromInitialTemplateResult = PlanVersionPayload | InvalidField | BalanceTypeReferencesNotFound | PlanVersionNotFound | BalanceTypeNotFound | CreatePlanValidationFailed | PolicyCounterNotFound | PlanVersionIsReadOnly | PlanVersionAlreadyExists | InvalidProviderLifecycleStage | ServiceFormatError | RateLimitExceeded | PlanVersionUpdateAlreadyInProgress | InternalServerError """Return type of UpdatePlanSubscription including all possible errors. SubscribeToPlanVersionValidationFailed (SubscriptionDateCannotExceedPlanPeriod) - should be returned when the plan is non recurring and the subscription exceeds the plan period length. SubscribeToPlanVersionValidationFailed (ActiveSubscriptionFromDateIsReadOnly) - The “from” date of an active subscription cannot be changed. SubscribeToPlanVersionValidationFailed (PrepaidAccountCannotSubscribeToPostpaidPlan) - A prepaid account cannot subscribe to a postpaid plan. SubscribeToPlanVersionValidationFailed (PostpaidBillingDayOfMonthRequired) - Postpaid account must have billingDayOfMonth when subscribing to a plan with renewalCount. The account must have billingDayOfMonth configured. PlanVersionNotFound (PlanVersionNotFound) - The requested plan version with the provided ID cannot be found. PlanNotFound (PlanNotFound) - The requested plan with the provided ID cannot be found. PlanAliasNotFound (PlanAliasNotFound) - The requested plan alias with the provided ID cannot be found. PlanAliasNotActive (PlanAliasNotActive) - The requested plan alias with the provided ID does not have an active version. PlanVersionIsNotAssignable (PlanVersionIsNotAssignable) - The requested plan version is marked as not assignable. Please, make it assignable first. AccountNotFound (AccountNotFound) - The requested account with the provided ID cannot be found. SubscriptionNotFound (SubscriptionNotFound) - The plan subscription with the provided ID was not found. InvalidField (OnlyOnePlanToBeProvided) - You cannot provide both planId and planVersionId. InvalidField (PlanMustBeProvided) - Either planId or planVersionId must be provided. InvalidField (InvalidFutureDate) - The provided date cannot be in the past. InvalidField (InvalidDatesRange) - The provided "to" date cannot be earlier than the provided "from" date. InvalidField (InvalidPostpaidToDate) - Custom subscription end date (to) does not match the calculated end date when renewalCount is defined on a postpaid plan. InternalServerError (ChargeEngineNotAvailable) - The charge engine is not available at this time. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union UpdatePlanVersionSubscriptionResult = SubscribeToPlanVersionPayload | PlanVersionNotFound | PlanVersionIsNotAssignable | AccountNotFound | SubscriptionNotFound | InvalidField | SubscribeToPlanVersionValidationFailed | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | PlanNotFound | PlanAliasNotFound | PlanAliasNotActive | FeatureNotEnabled """Return type of updatePolicyCounter including all possible errors. BalanceTypeReferencesNotFound (BalanceTypeReferencesNotFound) - Balance type references in expressions do not exist in the provider's catalog. FeatureNotEnabled (FeatureNotEnabled) - The requested feature is not enabled for the provider.""" union UpdatePolicyCounterResult = PolicyCounter | PolicyCounterNotFound | InvalidField | BalanceTypeReferencesNotFound | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError | FeatureNotEnabled | PolicyCounterInUse """Payload for successful QoS Profile update.""" type UpdateQoSProfilePayload { """The updated QoS profile""" qosProfile: QoSProfile! } """Result type for updateQoSProfile mutation.""" union UpdateQoSProfileResult = UpdateQoSProfilePayload | QoSProfileNotFound | InvalidField | InternalServerError """Input type of UpdateRatingGroupHierarchy.""" input UpdateRatingGroupHierarchyInput { """A unique identifier of a service provider.""" providerId: ID! """Root rating group where the whole hierarchy starts.""" root: RatingGroupInput! } """Return type of UpdateRatingGroupHierarchy.""" type UpdateRatingGroupHierarchyPayload { """Root rating group where the whole hierarchy starts.""" root: RatingGroup! } """Return type of UpdateRatingGroupHierarchy including all possible errors. RatingGroupValidationFailed (DefaultRatingGroupIsNotProvided) - Mandatory default rating group(s) were not provided with a new hierarchy. RatingGroupValidationFailed (RatingGroupIsDuplicated) - Each rating group ID must be unique. RatingGroupValidationFailed (UnitRoundingInvalidLevel) - Unit rounding can be set only on the second level of hierarchy (the next after Root). RatingGroupValidationFailed (MissingMinReservationForDynamicQuota) - The minReservations should be defined on the same or upper level of the rating group hierarchy when Dynamic Quota Allocation is enabled. RatingGroupValidationFailed (MissingQuotaValidityTimeForDynamicQuota) - The quotaValidityTime should be defined on the same or upper level of the rating group hierarchy when Dynamic Quota Allocation is enabled. RatingGroupHierarchyHasReferences (RatingGroupHierarchyHasReferences) - A node in the hierarchy can not be removed or changed if there are any active Plans referring to it. InvalidField (InvalidReservations) - The max reservation must be greater than the min reservation. InvalidField (InvalidPositiveNumber) - The provided number can be only a positive number. InvalidField (InvalidQuotaHoldingTime) - The provided number cannot be a negative number.""" union UpdateRatingGroupHierarchyResult = UpdateRatingGroupHierarchyPayload | RatingGroupHierarchyHasReferences | RatingGroupValidationFailed | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdateSGSNTable.""" input UpdateSGSNTableInput { """Service provider ID.""" providerId: ID! """A unique identifier of a service provider.""" sgsnTable: SGSNTableInput! } """Return type of UpdateSGSNTable.""" type UpdateSGSNTablePayload { """Updated table.""" sgsnTable: SGSNTable! } """Return type of UpdateSGSNTableResult including all possible errors. InvalidField (InvalidISO3166CountryCode) - The provided string must be a country code and must be in ISO 3166-1 alpha-2 format. InvalidField (InvalidIPCIDR) - The IP CIDR provided is not valid.""" union UpdateSGSNTableResult = UpdateSGSNTablePayload | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdateSettings.""" input UpdateSettingsInput { """A unique identifier of a service provider.""" providerId: ID! """All settings formatted in JSON.""" json: AWSJSON """Status of the Dynamic Quota Allocation test mode. When enabled additional data is saved in EDRs for analysis of DQ feature.""" enableDynamicQuotaTestMode: Boolean } """Return type of UpdateSettings.""" type UpdateSettingsPayload { """The updated settings.""" settings: Settings! } """Return type of UpdateSettings including all possible errors.""" union UpdateSettingsResult = UpdateSettingsPayload | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Input type of UpdateUser""" input UpdateUserInput { """Service provider ID""" providerId: ID! """Cognito User ID""" userId: ID! """Email""" email: AWSEmail! """The name of the user. Should be between 2 and 75 characters""" name: String! """The roles this user belong to""" roleGroupMemberships: [RoleGroup!]! """The user's phone number""" phoneNumber: AWSPhone """The user's job title. If present, it should be between 2 and 50 characters""" jobTitle: String """The time when the user should expire. Used for temporary access.""" expiry: AWSDateTime """The alarm interval in minutes when an email should be send to the user that access expires. Only used when expiry is specified. Can be 0 or not specified when expiry is specified which means no email is send.""" alertInterval: Int } """Input type of UpdateUserProfile""" input UpdateUserProfileInput { """The name of the user. Should be between 2 and 75 characters""" name: String! """The user's phone number""" phoneNumber: AWSPhone """The user's job title. If present, it should be between 2 and 50 characters""" jobTitle: String } """Return type of UpdateUser including all possible errors. InvalidField (name) - Name should be at least two characters long and a maximum of seventy five InvalidField (jobTitle) - Job title should be at least two characters long and a maximum of fifty InvalidField (InvalidEmailDomain) - Unable to call the API for the user in this domain""" union UpdateUserProfileResult = SaveUserPayload | InvalidField | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """Return type of UpdateUser including all possible errors. UserNotFound - Given user ID does not exist in the tenant, even if user ID exists in Cognito InvalidField (name) - Name should be at least two characters long and a maximum of seventy five InvalidField (jobTitle) - Job title should be at least two characters long and a maximum of fifty UserIsReadOnly(UsersCanNotUpdateThemselves) - Updating own record should be done via update profile InvalidField (expiry) - Expiry needs to be in the future and needs to be a valid datetime string InvalidField (alertInterval) - The alert interval can't be negative InvalidField (InvalidEmailDomain) - Unable to call the API for the user in this domain""" union UpdateUserResult = SaveUserPayload | UserNotFound | InvalidField | UserIsReadOnly | InvalidProviderLifecycleStage | RateLimitExceeded | InternalServerError """An error type to be thrown if a user with the same email exists in the user pool. Provider ID and user ID are not returned to not expose them in case user exists for a different provider""" type UserAlreadyExists implements Error { """The email of the user that already exists""" email: AWSEmail! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if user was not verified yet. This is returned whether the user does not exist, or if the provider does not exist.""" type UserIncorrectStatus implements Error { """Service provider ID with problem.""" providerId: ID! """User ID""" userId: ID! """State of the user""" state: String! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if a user tries to update his/her own user record using the admin API instead of the update user profile API, or if they try to delete their own user record""" type UserIsReadOnly implements Error { """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """An error type to be thrown if user was not found for given provider. This is returned whether the user does not exist, or if the provider does not exist.""" type UserNotFound implements Error { """Service provider ID with problem.""" providerId: ID! """User ID""" userId: ID! """The error code in question.""" errorCode: String! """The error message in question.""" errorMessage: String } """The possible values for week days.""" enum WeekDay { """Monday.""" MONDAY """Tuesday.""" TUESDAY """Wednesday.""" WEDNESDAY """Thursday.""" THURSDAY """Friday.""" FRIDAY """Saturday.""" SATURDAY """Sunday.""" SUNDAY } type Query { """Returns an account for a provider by an account ID. Authorized Roles: Account_Query, Account_Admin, Data_Admin.""" getAccount(providerId: ID!, accountId: ID!, balanceTypeIds: [ID!]): AccountResult """Retrieve Balance Type Counters configured for an account. Authorized Roles: Account_Admin, Account_Query, Data_Admin.""" getAccountBalanceTypeCounters(input: GetAccountBalanceTypeCountersInput!): AccountBalanceTypeCountersResult """Gets the balance type information of a specific balance type ID. Authorized Roles: Plan_Admin, Plan_Publisher, Plan_Designer, Plan_Query.""" getBalanceType(getBalanceTypeInput: GetBalanceTypeInput!): GetBalanceTypeResult """Retrieve Balance Type Counter notifications based on the provided input parameters. At least one value must be supplied. Authorized Roles: Plan_Admin, Plan_Publisher, Plan_Designer, Plan_Query.""" getBalanceTypeCounters(input: GetBalanceTypeCountersInput!): GetBalanceTypeCountersResult """Gets the balance type information of a list or all balance type IDs. If none is provided, all are returned. If some are provided, the ones that are found are returned. Authorized Roles: Plan_Admin, Plan_Publisher, Plan_Designer, Plan_Query.""" getBalanceTypes(getBalanceTypesInput: GetBalanceTypesInput!): GetBalanceTypesResult """Gets the client credentials for a specific client. Authorized Roles: Tenant_Admin.""" getClientCredentials(providerId: ID!, clientId: ID!): GetClientCredentialsResult! """Gets info for the currently logged in User . When used in an API context, this will return the API user. Authorized Roles: All.""" getCurrentUser: GetUserPayload """Gets deployed field mappings for a provider sorted by when they will be applied. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Network_Operator, Network_Admin.""" getDeployedFieldMappings(providerId: ID!, first: Int!, after: String): DeployedFieldMappingConnection """Returns a Device for a provider by a device ID. Authorized Roles: Account_Query, Account_Admin, Data_Admin.""" getDevice(providerId: ID!, deviceId: ID!): DeviceResult """Gets a list of event data records for an Account with pagination. Authorized Roles: Data_Admin.""" getEventDataRecordsByAccount(providerId: ID!, accountId: ID!, first: Int!, after: String, filterBy: EventDataRecordFilter): EventDataRecordAccountConnectionResult """Gets a list of event data records for a Device with pagination. Authorized Roles: Data_Admin.""" getEventDataRecordsByDevice(providerId: ID!, deviceId: ID!, first: Int!, after: String, filterBy: EventDataRecordFilter): EventDataRecordDeviceConnectionResult """Gets NOT deployed field mappings for a provider. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Network_Operator, Network_Admin.""" getFieldMappings(providerId: ID!, first: Int!, after: String): FieldMappingConnection """Gets a single lifecycle. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Plan_Admin.""" getLifecycle(providerId: ID!, lifecycleId: ID!): GetLifecycleResult """Gets a list of all lifecycles. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Plan_Admin.""" getLifecycles(providerId: ID!): GetLifecyclesResult """Gets the current user’s Dashboard information Authorized Roles: Dashboard_Reader.""" getMyDashboard: GetMyDashboardResult """Gets tenant configuration of the logged in User . Authorized Roles: Tenant_Admin, Account_Admin, Account_Query, Data_Admin, Plan_Designer, Plan_Publisher, Plan_Query, Network_Admin, Network_Operator, Plan_Admin.""" getMyProviderConfig: GetMyProviderConfigResult """Returns the list of providers/tenants the authenticated user belongs to. Requires only a valid JWT (no role needed).""" getMyProviderList: GetMyProviderListResult """Gets restore jobs of the current tenant. Authorized Roles: Tenant_Admin.""" getMyRestoreJobs(getMyRestoreJobsInput: GetMyRestoreJobsInput!): GetMyRestoreJobsResult """Gets a Plan for a provider by a plan ID. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher.""" getPlan(providerId: ID!, planId: ID!): PlanResult """Gets a Plan Version for a provider by a plan version ID. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher.""" getPlanVersion(providerId: ID!, planVersionId: ID!): PlanVersionResult """Gets a list of plans for a provider with pagination. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher.""" getPlans(providerId: ID!, first: Int!, after: String, orderBy: PlanOrder): PlanConnection """Gets a Policy Counter for a provider by ID. Authorized Roles: Plan_Query, Plan_Designer, Plan_Admin, Plan_Publisher, Network_Admin.""" getPolicyCounter(providerId: ID!, id: ID!): GetPolicyCounterResult """Gets all Policy Counters for a provider with pagination support. Authorized Roles: Plan_Query, Plan_Designer, Plan_Admin, Plan_Publisher, Network_Admin.""" getPolicyCounters(providerId: ID!, first: Int!, after: String): GetPolicyCountersResult """Gets a QoS Profile for a provider by profile ID. Authorized Roles: Plan_Designer, Plan_Admin, Plan_Query, Plan_Publisher, Network_Admin.""" getQoSProfile(providerId: ID!, id: ID!): GetQoSProfileResult """Gets all QoS Profiles for a provider with pagination support. Authorized Roles: Plan_Designer, Plan_Admin, Plan_Query, Plan_Publisher, Network_Admin.""" getQoSProfiles(providerId: ID!, first: Int, after: String): GetQoSProfilesResult """Gets Rating Group hierarchy for a provider. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Network_Admin, Plan_Admin.""" getRatingGroupHierarchy(providerId: ID!): RatingGroupResult """Gets a list of all parent accounts for a provided device ID. Authorized Roles: Account_Query, Account_Admin, Data_Admin.""" getRelatedAccountsByDevice(providerId: ID!, deviceId: ID!): GetRelatedAccountsByDeviceResult """Gets the SGSN table for a provider. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Network_Operator.""" getSGSNTable(providerId: ID!): SGSNTableResult """Gets settings for a provider. Authorized Roles: Plan_Query, Plan_Designer, Plan_Publisher, Plan_Admin.""" getSettings(providerId: ID!): SettingsResult """Gets a User for a given provider ID and user ID, or returns a UserNotFound error. Authorized Roles: Tenant_Admin.""" getUser(getUserInput: GetUserInput!): GetUserResult """Gets all the client credentials for a specific provider. Authorized Roles: Tenant_Admin.""" listAllClientCredentials(providerId: ID!): ListAllClientCredentialsResult! """Lists the users for the given provider ID. Authorized Roles: Tenant_Admin.""" listUsers(providerId: ID!, first: Int!, after: String): ListUsersResult } type Mutation { """Archives a Plan Version if it is suspended with no subscribed accounts. Authorized Roles: Plan_Designer.""" archivePlanVersion(input: ArchivePlanVersionInput!): ArchivePlanVersionResult! """Cancels existing assignment of a Plan to an Account . Uses the planSubscriptionId to identify the correct plan. Balances from the Plan remain after cancellation unless cancelManagedBalances is true, in which case the managed balances associated with the subscription are also cancelled. Authorized Roles: Account_Admin.""" cancelPlanSubscription(input: CancelPlanSubscriptionInput!): CancelPlanVersionSubscriptionResult! """Creates an Account for a provider. Authorized Roles: Account_Admin.""" createAccount(input: CreateAccountInput!): CreateAccountResult! """Creates a new balance for the provider. Authorized Roles: Account_Admin.""" createBalance(input: CreateBalanceInput!): CreateBalanceResult """Creates a new balance type for the provider. Authorized Roles: Plan_Admin.""" createBalanceType(input: CreateBalanceTypeInput!): CreateBalanceTypeResult """Creates a new Client with client credentials. Authorized Roles: Tenant_Admin.""" createClientCredentials(providerId: ID!, input: CreateClientCredentialsInput!): CreateClientCredentialsResult! """Creates a Device in an Account . Authorized Roles: Account_Admin.""" createDevice(input: CreateDeviceInput!): CreateDeviceResult! """Creates a Field Mapping in draft. Draft field mappings need to be deployed using deployFieldMappings to become effective. Authorized Roles: Network_Operator.""" createFieldMapping(input: CreateFieldMappingInput!): CreateFieldMappingResult! """Creates a lifecycle. Authorized Roles: Plan_Admin.""" createLifecycle(input: CreateLifecycleInput!): CreateLifecycleResult """Creates a Plan for a provider. This mutation is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out. Authorized Roles: Plan_Designer.""" createPlan(providerId: ID!, input: PlanInput!): CreatePlanResult! """Creates a plan by using a template. Authorized Roles: Plan_Designer.""" createPlanFromInitialRecurringFirstUsageTemplate(input: CreatePlanFromInitialRecurringFirstUsageTemplateInput!): CreatePlanFromInitialTemplateResult! """Creates a Plan by using a template. Authorized Roles: Plan_Designer.""" createPlanFromInitialTemplate(input: CreatePlanFromInitialTemplateInput!): CreatePlanFromInitialTemplateResult! """Updates a plan that was created by using a template. Creates a new version of the plan. Authorized Roles: Plan_Designer.""" createPlanVersionFromInitialRecurringFirstUsageTemplate(input: CreatePlanVersionFromInitialRecurringFirstUsageTemplateInput!): CreatePlanVersionFromInitialTemplateResult! """Creates a new Plan Version of a Plan that was originally created by using createPlanFromInitialTemplate . Authorized Roles: Plan_Designer.""" createPlanVersionFromInitialTemplate(input: CreatePlanVersionFromInitialTemplateInput!): CreatePlanVersionFromInitialTemplateResult! """Creates a Policy Counter for a provider. Authorized Roles: Plan_Admin.""" createPolicyCounter(providerId: ID!, input: PolicyCounterInput!): CreatePolicyCounterResult! """Creates a QoS Profile for a provider. Authorized Roles: Network_Admin.""" createQoSProfile(providerId: ID!, input: QoSProfileInput!): CreateQoSProfileResult! """Creates a tenant User . Authorized Roles: Tenant_Admin.""" createUser(input: CreateUserInput!): CreateUserResult! """Deletes an Account if it does not have any children or devices. Authorized Roles: Account_Admin.""" deleteAccount(input: DeleteAccountInput!): DeleteAccountResult! """Delete a Balance Type Counter for an account based on the provided input parameters. Authorized Roles: Account_Admin.""" deleteAccountBalanceTypeCounter(input: DeleteAccountBalanceTypeCounterInput!): DeleteAccountBalanceTypeCounterResult """Deletes an existing balance for the provider. Authorized Roles: Account_Admin.""" deleteBalance(input: DeleteBalanceInput!): DeleteBalanceResult """Deletes an existing balance type for the provider. Authorized Roles: Plan_Admin.""" deleteBalanceType(input: DeleteBalanceTypeInput!): DeleteBalanceTypeResult """Delete a Balance Type Counter based on the provided input parameters. Authorized Roles: Plan_Admin.""" deleteBalanceTypeCounter(input: DeleteBalanceTypeCounterInput!): DeleteBalanceTypeCounterResult """Deletes a Client credentials. Authorized Roles: Tenant_Admin.""" deleteClientCredentials(providerId: ID!, clientId: ID!): DeleteClientCredentialsResult! """Deletes a Device from an Account . Authorized Roles: Account_Admin.""" deleteDevice(input: DeleteDeviceInput!): DeleteDeviceResult! """Deletes a Field Mapping in draft. Draft field mappings need to be deployed using deployFieldMappings to become effective. Authorized Roles: Network_Operator.""" deleteFieldMapping(input: DeleteFieldMappingInput!): DeleteFieldMappingResult! """Deletes a lifecycle. Authorized Roles: Plan_Admin.""" deleteLifecycle(input: DeleteLifecycleInput!): DeleteLifecycleResult """Deletes a Plan . Deployed plans cannot be deleted but its plan versions can be archived using archivePlanVersion . This mutation is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out. Authorized Roles: Plan_Designer.""" deletePlan(providerId: ID!, planId: ID!): DeletePlanResult! """Deletes a Plan Version if it was never deployed. Authorized Roles: Plan_Designer.""" deletePlanVersion(input: DeletePlanVersionInput!): DeletePlanVersionResult! """Deletes a Policy Counter for a provider. Authorized Roles: Plan_Admin.""" deletePolicyCounter(providerId: ID!, id: ID!): DeletePolicyCounterResult! """Deletes a QoS Profile for a provider. The profile cannot be deleted if it is referenced by any plan versions. Authorized Roles: Network_Admin.""" deleteQoSProfile(providerId: ID!, id: ID!): DeleteQoSProfileResult! """Deletes a tenant User . Authorized Roles: Tenant_Admin.""" deleteUser(input: DeleteUserInput!): DeleteUserResult! """Once you have defined a new Field Mapping , you can call deployFieldMappings and specify the path of the field mapping you want to deploy. By providing a from date, you can specify a point in the future when current set of field mappings will take effect, e.g. the first of the coming month for the field mapping to become active. If you omit the from date, immediate activation is performed. The process to deploy an updated field mapping is equivalent to a new one. You specify the path of the field mapping you want to deploy and this specific mapping will be updated. Any other deployed mappings remain untouched. If you provide a list of paths , this set of field mappings will be deployed. Any other deployed mappings remain unchanged. To remove a deployed Field Mapping: - Delete the Field Mapping from the draft using deleteFieldMapping . - Next invoke the deployFieldMappings without providing the paths parameter. - This operation will deploy only the field mappings that are specified in the draft. - If a from date is not provided, the current time is used as the default from date. - Any existing field mappings not in the draft will be removed with the following limitations. When existing field mappings are deleted, the system checks if the from date of the existing mapping is earlier than the from date specified for the new mapping. If it is, the deleted mapping is re-added. So to completely delete a deployed field mapping, you should provide a from date that matches or precedes the from date used in the prior deployment of the field mapping you wish to remove. Authorized Roles: Network_Admin.""" deployFieldMappings(input: DeployFieldMappingsInput!): DeployFieldMappingsResult! """Deploys a Plan so it can be subscribed by accounts. A deployed plan cannot be updated anymore. Authorized Roles: Plan_Publisher.""" deployPlan(input: DeployPlanVersionInput!): DeployPlanVersionResult! """Triggers an on-demand, admin-only, single-provider incremental customer DB export. Authorized Roles: Product_Admin, System_Admin.""" exportCustomerDB(providerId: ID!, exportTime: AWSDateTime!): ExportCustomerDBResult! """Makes a Plan assignable so it can be subscribed by accounts. Plan must be deployed to be able to make it assignable. Authorized Roles: Plan_Publisher.""" makePlanAssignable(input: AssignablePlanVersionInput!, revert: Boolean): AssignablePlanVersionResult! """Resets the password of a given User . Authorized Roles: Tenant_Admin.""" resetUserPassword(input: ResetUserPasswordInput!): ResetUserPasswordResult! """Assigns a Plan to an Account for a predefined period of time. If the from parameter is not specified, the plan starts immediately. If the to parameter is not specified, the plan continues indefinitely for recurring plans, or until the end of the plan period for non-recurring plans. When subscribing to a plan, provide one of the following identifiers: planVersionId : The unique identifier of a specific version of a plan. Use this when you need to enforce a particular plan version without automatic updates. planId : The unique identifier of a plan. This is the preferred method as it ensures that the subscription is continuously updated to the latest active version of the plan, reducing the need for manual interventions. If provided, the subscription will apply the current active version of the specified plan deployed with an alias. This means, if there is no active version of the plan at the time of the API call, SubscribeToPlan will raise an error even if the subscription is for a future date. Authorized Roles: Account_Admin.""" subscribeToPlan(input: SubscribeToPlanVersionInput!): SubscribeToPlanVersionResult! """Create RARs for all active sessions of an account. Authorized Roles: Infrastructure.""" triggerRar(input: TriggerRarInput!): TriggerRarResult """Updates Account attributes. Authorized Roles: Account_Admin.""" updateAccount(input: UpdateAccountInput!): UpdateAccountResult! """Updates or creates a Balance Type Counter for an account based on the provided input parameters. If balanceTypeCounterId is specified, the new configuration will override the settings inherited from the associated BalanceType . Note : A BalanceType Counter operates on the sum of all balances of the same BalanceType on the account, not on an individual balance. Authorized Roles: Account_Admin.""" updateAccountBalanceTypeCounter(input: UpdateAccountBalanceTypeCounterInput!): AccountBalanceTypeCounterResult """Updates the parent of an Account . Authorized Roles: Account_Admin.""" updateAccountParent(providerId: ID!, input: UpdateAccountParentInput!): UpdateAccountParentResult! """Creates a lifecycle rule on EDR S3 bucket to move objects to Glacier store after a period of time. Authorized Roles: Tenant_Admin.""" updateArchivingPolicy(input: UpdateArchivingPolicyInput!): UpdateArchivingPolicyResult! """Updates an existing balance for the provider. Authorized Roles: Account_Admin.""" updateBalance(input: UpdateBalanceInput!): UpdateBalanceResult """Updates an existing balance type for the provider. Authorized Roles: Plan_Admin.""" updateBalanceType(input: UpdateBalanceTypeInput!): UpdateBalanceTypeResult """Update or create Balance Type Counter notifications based on the provided input parameters. Creates or updates BalanceTypeCounter. Authorized Roles: Plan_Admin.""" updateBalanceTypeCounter(input: UpdateBalanceTypeCounterInput!): BalanceTypeCounterResult """Updates the Client credentials. Authorized Roles: Tenant_Admin.""" updateClientCredentials(providerId: ID!, clientId: ID!, input: UpdateClientCredentialsInput!): UpdateClientCredentialsResult! """Updates Device attributes. Authorized Roles: Account_Admin.""" updateDevice(input: UpdateDeviceInput!): UpdateDeviceResult! """Updates a Field Mapping in draft. Draft field mappings need to be deployed using deployFieldMappings to become effective. Authorized Roles: Network_Operator.""" updateFieldMapping(input: UpdateFieldMappingInput!): UpdateFieldMappingResult! """Updates a lifecycle. Authorized Roles: Plan_Admin.""" updateLifecycle(input: UpdateLifecycleInput!): UpdateLifecycleResult """Updates config of the current tenant. Authorized Roles: Tenant_Admin, Network_Admin.""" updateMyProviderConfig(input: UpdateMyProviderConfigInput!): UpdateMyProviderConfigResult! """Updates attributes of a Plan , such as name. This mutation is reserved for the upcoming Rate Anything capability, enabling customers to configure rates based on any attribute from the network message or subscriber database, such as birthday or class. Further details will be provided as the feature is rolled out. Authorized Roles: Plan_Designer.""" updatePlan(providerId: ID!, planId: ID!, input: UpdatePlanInput!): UpdatePlanResult! """Updates the properties of a Plan instance subscribed by an Account or switches the subscription to a different plan. Plan Switching: If planId or planVersionId is specified, the subscription will be switched to the corresponding plan. The switch is handled similarly to canceling the current plan and subscribing to a new one. Plan Switching: If planId or planVersionId is specified, the subscription will be switched to the corresponding plan. The switch is handled similarly to canceling the current plan and subscribing to a new one but without charging the new plan's purchase fee. Balances: Any balances associated with the current plan will remain intact after switching to a different plan. Balances of the switched plan will be created as well. When switching plans, it is recommended to use planId because it ensures that the subscription is automatically updated to the latest active version of the new plan going forward, minimizing the need for manual updates. However, if you need to enforce a specific version, you can use planVersionId . Authorized Roles: Account_Admin.""" updatePlanSubscription(input: UpdatePlanSubscriptionInput!): UpdatePlanVersionSubscriptionResult! """Updates a plan that was created by using a template. Authorized Roles: Plan_Designer.""" updatePlanVersionFromInitialRecurringFirstUsageTemplate(input: UpdatePlanVersionFromInitialRecurringFirstUsageTemplateInput!): UpdatePlanVersionFromInitialTemplateResult! """Updates Plan Version of a Plan that was originally created by using a template. Authorized Roles: Plan_Designer.""" updatePlanVersionFromInitialTemplate(input: UpdatePlanVersionFromInitialTemplateInput!): UpdatePlanVersionFromInitialTemplateResult! """Updates a Policy Counter for a provider. Authorized Roles: Plan_Admin.""" updatePolicyCounter(providerId: ID!, id: ID!, input: PolicyCounterInput!): UpdatePolicyCounterResult! """Updates a QoS Profile for a provider. Authorized Roles: Network_Admin.""" updateQoSProfile(providerId: ID!, id: ID!, input: QoSProfileInput!): UpdateQoSProfileResult! """Updates and deploys after verifying Rating Group hierarchy. Authorized Roles: Network_Admin.""" updateRatingGroupHierarchy(input: UpdateRatingGroupHierarchyInput!): UpdateRatingGroupHierarchyResult! """Update the SGSN table for a provider. Authorized Roles: Network_Operator.""" updateSGSNTable(input: UpdateSGSNTableInput!): UpdateSGSNTableResult! """Updates settings of a provider. Authorized Roles: Plan_Admin, Network_Admin.""" updateSettings(input: UpdateSettingsInput!): UpdateSettingsResult! """Updates a specific User for a given tenant. It returns the updated user or an error. Authorized Roles: Tenant_Admin.""" updateUser(input: UpdateUserInput!): UpdateUserResult! """Updates user profile for current User . Authorized Roles: All.""" updateUserProfile(input: UpdateUserProfileInput!): UpdateUserProfileResult! }