Skip to content

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