Domain model
Sales Domain model - Explained
Schema
type Account {
isModular: Boolean
serviceAccountNumber: String
}
input AccountInput {
billingArrangementIds: [String]
customerRelationshipId: String
serviceAccountNumber: String
}
enum ActionType {
ADD
PATCH
REMOVE
RETAIN
}
type ActivationUrls {
ottservices: [OttService]
}
type Addon {
offerId: String
catalogId: String
action: String
price: Float
currency: String
commitments: [String]
lineOfService: [String]
presentationContents: [PresentationContent]
childOffers: [ConsentOffer]
metadata: [NameValuePair]
}
type Cart {
sessionId: String
cartItems: [CartItem]
}
type CartItem {
cartItemType: String
cartItemId: String
latestUpdate: Boolean
business: String
catalogId: String
chargeDetails: [ChargeDetails]
status: String
action: String
cartItemCount: Int
}
type ChargeDetail {
currency: String
monthlyCharges: Float
oneTimeCharges: Float
promotionalMonths: Int
installment: Installment
hasInstallment: Boolean
startMonth: Int
endMonth: Int
seq: Int
}
type ChargeDetails {
currency: String
monthlyCharges: Float
monthlyRecurringTax: Float
oneTimeDeferredCharge: Float
oneTimeDeferredTax: Float
oneTimeDeferredTotal: Float
oneTimeTax: Float
paymentPlanType: PaymentPlanType
promotionalCharge: Float
promotionalMonths: Int
savings: Float
oneTimeCharges: Float
hasInstallment: Boolean
startMonth: Int
endMonth: Int
seq: Int
installment: Installment
}
type ConsentChargeDetail {
currency: String
monthlyCharges: Float
startMonth: Int
endMonth: Int
promotionalMonths: Int
oneTimeCharges: Float
savings: Float
hasInstallment: Boolean
}
type ConsentInfo {
status: String
consentId: String
partnerId: String
hash: String
createdTime: String
updatedTime: String
presentedTime: String
acceptedTime: String
acceptanceChannel: String
acceptanceIpAddress: String
}
input ConsentInput {
acceptanceChannel: String
clientIpAddress: String
}
type ConsentItem {
offerId: String
action: String
itemType: String
lineOfService: [String]
chargeDetails: [ConsentChargeDetail]
metadata: [NameValuePair]
presentationContents: [PresentationContent]
childOffers: [ConsentOffer]
}
type ConsentOffer {
offerId: String
lineOfService: [String]
metadata: [NameValuePair]
presentationContents: [PresentationContent]
}
input FilterInput {
lineOfBusiness: [String]
}
type Installment {
amount: Float
numberOfInstallments: Int
}
input ItemInput {
itemType: ItemType!
quantity: Int!
actionType: ActionType!
catalogId: String!
}
enum ItemType {
ADDON
BUNDLE
DEVICE
DISCOUNT
FEES
INSTALL
MERCHANDISE
SERVICE_PLAN
SMART_WATCH
TABLET
TAXES
}
type Location {
locationId: String
geoCode: String
marketHierarchy: [MarketHierarchy]
}
type MarketHierarchy {
marketId: String!
marketName: String!
level: String!
}
type MonthlyCharges {
addons: [Addon]
}
type NameValuePair {
name: String
value: String
}
type Offer {
offerId: String
catalogId: String
alternateId: String
qtyInAccount: Int
qtyInCart: Int
availToBuy: Int
availToRemove: Int
isIncluded: Boolean
chargeDetails: [ChargeDetail]
allowedActions: [ActionType]
modifiers: [String]
lineOfService: [String]
metadata: [NameValuePair]
minLimit: Int
maxLimit: Int
childOffers: [Offer]
presentationContents: [PresentationContent]
}
input OfferInput {
filter: FilterInput
}
type Order {
orderId: String
}
type OttService {
appId: String
appName: String
durableAppId: String
status: String
activationUrl: String
expires: String
}
enum PaymentPlanType {
ONETIME
ONETIME_DEFERRED
RECURRING
}
type PresentationContent {
name: String
content: String
}
type Sales {
salesJourneyId: String
offers: [Offer]
cart: Cart
order: Order
consentId: String
consent: SalesConsent
account: Account
location: Location
source: Source
}
type SalesConsent {
consentInfo: ConsentInfo
items: [ConsentItem]
monthlyCharges: MonthlyCharges
termsOfServices: TermsOfServices
}
input SalesContextInput {
source: SourceInput
account: AccountInput
products: [String]
consent: ConsentInput
offer: OfferInput
}
type Source {
affiliate: String
channel: String
flow: String
}
input SourceInput {
affiliate: String
channel: String
salesChannel: String
flow: String
partner: String
}
type TermsOfService {
id: String
description: String
longDescription: String
}
type TermsOfServices {
label: String
items: [TermsOfService]
}
type Query {
sales(salesJourneyId: String): Sales
activationUrls(appIds: [String], lineOfService: [String]): ActivationUrls
}
type Mutation {
submitCart(salesJourneyId: String): Sales
upsertItem(salesJourneyId: String, items: [ItemInput]): Sales
createConsent(salesJourneyId: String, partnerId: String): Sales
presentConsent(salesJourneyId: String, consentId: String): Sales
acceptConsent(salesJourneyId: String, consentId: String, acceptanceChannel: String, clientIpAddress: String): Sales
createAndAcceptConsent(salesJourneyId: String, acceptanceChannel: String, clientIpAddress: String, partnerId: String): Sales
createSalesContext(salesContext: SalesContextInput): Sales
}
Type | Nullable | Comments | |
---|---|---|---|
SourceInput | input | ||
affiliate | String | yes | Source affiliate |
channel | String | yes | Source channel |
salesChannel | String | yes | Source sales channel |
flow | String | yes | Source flow |
partner | String | yes | Source parter |
AccountInput | input | ||
billingArrangementIds | [String] | yes | Billing arrangement ids |
customerRelationshipId | String | yes | Customer relationship id |
serviceAccountNumber | String | yes | Service account number |
ConsentInput | input | ||
acceptanceChannel | String | yes | Consent acceptance channel. It can be WEB |
clientIpAddress | String | yes | Client IP address |
FilterInput | input | ||
lineOfBusiness | [String] | yes | Line of business filter |
OfferInput | input | ||
filter | FilterInput | yes | Offer filter input |
SalesContextInput | input | ||
source | SourceInput | yes | Source for which sales context to be created |
account | AccountInput | yes | Account for which sales context to be created |
products | [String] | yes | Products for which sales context to be created |
consent | ConsentInput | yes | Consent for which sales context to be created |
offer | OfferInput | yes | Offer for which sales context to be created |
Sales | |||
salesJourneyId | String | Sales journey id | |
offers | [Offer] | Offer details | |
cart | Cart | Cart details | |
order | Order | Order details | |
consentId | String | Consent id | |
consent | SalesConsent | Consent details | |
account | Account | Account details of the customer | |
location | Location | Location details | |
source | Source | Details of the source system | |
OttService | |||
appId | String | OTT app id | |
appName | String | OTT app name | |
durableAppId | String | OTT durable app id | |
status | String | OTT status. It can be Pending/Inactive | |
activationUrl | String | OTT activation url | |
expires | String | OTT activation url expiry | |
ActivationUrls | |||
ottservices | [OttService] | OTT service details | |
Installment | |||
amount | Float | Installment amount | |
numberOfInstallments | Int | Number of installment | |
PaymentPlanType | enum | It can be ONETIME, ONETIME_DEFERRED, RECURRING | |
ChargeDetails | |||
currency | String | Charge currency. It can be USD | |
monthlyCharges | Float | Monthly charges | |
monthlyRecurringTax | Float | Monthly recurring tax | |
oneTimeDeferredCharge | Float | One time deferred charge | |
oneTimeDeferredTax | Float | One time deferred tax | |
oneTimeDeferredTotal | Float | One time deferred total | |
oneTimeTax | Float | One time tax | |
paymentPlanType | PaymentPlanType | Payment plan tupe | |
promotionalCharge | Float | Promotional charge | |
promotionalMonths | Int | Promotional months | |
savings | Float | Discounts applied to charge | |
oneTimeCharges | Float | One time charges | |
hasInstallment | Boolean | Charge has any installment | |
startMonth | Int | Installment start month | |
endMonth | Int | Installment end month | |
seq | Int | Sequence | |
installment | Installment | Installment details | |
CartItem | |||
cartItemType | String | Cart item type. It can be DEVICE, SERVICE_PLAN, INSTALL, DISCOUNT, FEES, ADDON | |
cartItemId | String | Unique cart identifier | |
latestUpdate | Boolean | Cart latest update | |
business | String | Cart item business. It can be INTERNET, VIDEO, MOBILE, HOME, VOICE | |
catalogId | String | Catalog id. It can be offerId, priceRef id and etc | |
chargeDetails | [ChargeDetails] | Charge details | |
status | String | Status. It can be NEW | |
action | String | Cart action. It can be ADD, REMOVE | |
cartItemCount | Int | Item count | |
Cart | |||
sessionId | String | Cart session id | |
cartItems | [CartItem] | Cart items | |
Order | |||
orderId | String | ||
ItemType | enum | It can be ADDON, BUNDLE, DEVICE, DISCOUNT, FEES, INSTALL, MERCHANDISE, SERVICE_PLAN, SMART_WATCH, TABLET, TAXES | |
ItemInput | input | ||
itemType | ItemType | no | Item type. It can be DEVICE, SERVICE_PLAN, INSTALL, DISCOUNT, FEES, ADDON |
quantity | Int | no | Item quantity |
actionType | ActionType | no | Action type. It can be ADD, REMOVE |
catalogId | String | no | Catalog id. It can be offerId, priceRef id and etc |
ChargeDetail | |||
currency | String | Charge currency. It can be USD | |
monthlyCharges | Float | Monthly charges | |
oneTimeCharges | Float | One time charges | |
promotionalMonths | Int | Promotional months | |
installment | Installment | Installment details | |
hasInstallment | Boolean | Charge has any installment | |
startMonth | Int | Installment start month | |
endMonth | Int | Installment end month | |
seq | Int | Sequence | |
ActionType | enum | It can be ADD, PATCH, REMOVE, RETAIN | |
Offer | |||
offerId | String | Offer id | |
catalogId | String | Catalog id. It can be offerId, priceRef id and etc | |
alternateId | String | Alternate id | |
qtyInAccount | Int | Quantity in account | |
qtyInCart | Int | Quantity in cart | |
availToBuy | Int | Available to buy | |
availToRemove | Int | Available to remove | |
isIncluded | Boolean | Is included | |
chargeDetails | [ChargeDetail] | Charge details | |
allowedActions | [ActionType] | Allowed Actions. It can be ADD, PATCH, REMOVE, RETAIN | |
modifiers | [String] | Offer modifiers | |
lineOfService | [String] | Offer line of services | |
metadata | [NameValuePair] | Offer meta data | |
minLimit | Int | Offer minimum limit | |
maxLimit | Int | Offer maximum limit | |
childOffers | [Offer] | Child offers | |
presentationContents | [PresentationContent] | Offer presentation contents | |
MarketHierarchy | |||
marketId | String | no | Market id |
marketName | String | no | Market name |
level | String | no | Market level |
Location | |||
locationId | String | Location id | |
geoCode | String | Geo location code | |
marketHierarchy | [MarketHierarchy] | Market hierarchy. Leve 0 to 5 | |
Source | |||
affiliate | Affiliate id of the source system integrating with XCP | ||
channel | Channel id of the source system integrating with XCP | ||
flow | flow | ||
Account | |||
isModular | Boolean | Is modular | |
serviceAccountNumber | String | Service account number, must be provide for existing customer | |
TermsOfService | |||
id | String | Id of the term item | |
description | String | Description of the term id | |
longDescription | String | Long description of the term id | |
TermsOfServices | |||
label | String | Textual description of the terms of services | |
items | [TermsOfService] | List of terms of service | |
MonthlyCharges | |||
addons | [Addon] | List of add-on | |
****NameValuePair | |||
name | String | Name of the presentation | |
value | String | Value of the presentation, could be string or html | |
PresentationContent | |||
name | String | Name of the presentation | |
content | String | Value of the presentation, could be string or html | |
ConsentOffer | |||
offerId | String | Offer id | |
lineOfService | [String] | List of line of service | |
metadata | [NameValuePair] | List of offer meta data | |
presentationContents | [PresentationContent] | List of offer presentation content | |
Addon | |||
offerId | String | Offer id | |
catalogId | String | Offer id | |
action | String | If the add on is being 'added' or 'removed' from services. Valid values it can take are 'ADD' 'REMOVE' | |
price | Float | Monthly price for the addon | |
currency | String | Price currency. Value values "USD" | |
commitments | [String] | List of Strings explaining the commitments of the addon | |
lineOfService | [String] | List of line of service | |
presentationContents | [PresentationContent] | List of presentation content | |
childOffers | [ConsentOffer] | List of child offer | |
metadata | [NameValuePair] | List of offer meta data | |
ConsentInfo | |||
status | String | Status of the consent, it can be 'PENDING' 'PRESENTED' 'ACCEPTED' 'OVERRIDE' | |
consentId | String | Unique identifier for the consent | |
partnerId | String | Partner id, it can be comcast, xglobal | |
hash | String | cart hash value | |
createdTime | String | Timestamp of creation | |
updatedTime | String | Timestamp when the consent was last updated | |
presentedTime | String | Timestamp when it was presented to customer | |
acceptedTime | String | Timestamp when it was accepted by customer | |
acceptanceChannel | String | The channel through which the consent was presented and accepted. Enum: Web, SMS, Agent Override, email |
|
acceptanceIpAddress | String | The IP Address of the customer from where the consent was accepted | |
ConsentChargeDetail | |||
currency | String | Charge currency. It can be USD | |
monthlyCharges | Float | Monthly charges | |
startMonth | Int | Installment start month | |
endMonth | Int | Installment end month | |
promotionalMonths | Int | Promotional months | |
oneTimeCharges | Float | One time charges | |
savings | Float | Discounts applied to charge | |
hasInstallment | Boolean | Charge has any installment | |
ConsentItem | |||
offerId | String | Offer id | |
action | String | If the add on is being 'added' or 'removed' from services. Valid values it can take are 'ADD' 'REMOVE' | |
itemType | String | Item type. It can be DEVICE, SERVICE_PLAN, INSTALL, DISCOUNT, FEES, ADDON | |
lineOfService | [String] | Line of service | |
chargeDetails | [ConsentChargeDetail] | Charge details | |
metadata | [NameValuePair] | List of offer meta data | |
presentationContents | [PresentationContent] | List of presentation content | |
childOffers | [ConsentOffer] | Child offers | |
SalesConsent | |||
consentInfo | ConsentInfo | Consent type as explained above. | |
items | [ConsentItem] | List of consent item | |
monthlyCharges | MonthlyCharges | Type as explained above | |
termsOfServices | TermsOfServices | Type as explained above |