Table of Contents
WSAPI
WSAPI – Web services API is a non-UI based web app which provides SOAP messages which are consumed by the Partners/ Retailers. It enables the third party developers to create their own app which will consume these web services and place an order for Dish programming.
The web app will have a Request-Response framework wherein a client will raise a service request (SOAP-based) and will get a proper response for that.
Following shows a very high level diagram:
Dish Network Corporation is the United States’ direct broadcast satellite service provider. It provides both data and video. DISH Network split from EchoStar on January 2008, with each entity becoming a separate company. EchoStar is the key technology partner to DISH Network, which focuses only on marketing and providing satellite television service. EchoStar mainly focuses on providing equipments services and Dish focuses on providing data and video services.
Dish Network has its business model divided into the following categories:
- Direct
- Partners
- Retailers
Partners / retailers will send service requests through WSAPI. These requests are SOAP messages. These requests can be “AuthenticateCustomer” or “CreateCustomer” when Create Customer service is invoked.
WSAPI itself sends services requests (also SOAP messages) to third-party from where it retrieves all the information that is needed for account creation. Whatever response that WSAPI receives, it gives the clients response accordingly.
Following shows how the data flows through WSAPI (Architecture):
Lines of Business & Types of customers of Dish Network
Dish network has the following three types of flows through which it does its business:
- Video only
- Data only
- Hybrid (both data and video)
There are three types of customers according to which promotions are allocated or subscribed. Services vary as per the type of customers.
- Residential (Family based users)
- Commercial (society based users)
- Public (hospitals)
- Private (gym)
- SDS (Shared Dwelling service)
WSAPI Services
The services provided by the WSAPI are:
- New Customer Service
- Add Data Services Service
- Existing Customer Service
- Reference service
- Account Creation Service
- Work Order Modifications Service
Business flow in detail
As mentioned earlier, Dish does its business through 3 LOBs: video, data and hybrid.
The following steps are for Video only flow:
Create Customer
ScrubAddress – To create a new customer, firstly the address is verified, validated and formatted properly, even before authenticating the customer. This step is called scrubAddress. It is called even before networkQualification.
The scrubAddress request is used to properly format an address for submission. The request should be used to validate and format all service and billing addresses, before submission through other requests.
This request is used to create a “standard” form of addresses and to ensure that the address can be located.
Running scrub address will give a random valid address as output.
Network Qualification – The networkQualificationDetails request can be used to obtain the customer’s regional programming without previously authenticating the customer. This request is sent only after scrubAddress request. The response identifies the regional programming that the customer is eligible for based upon their service address.
GetConversationId
This request is used to start the customer creation process. WSAPI returns a conversationId that is passed in subsequent requests in the Create Customer flow.
Inputs : Type of customer (residential, etc.)
Output : ConversationId (valid for 2 hours)
DB affected : OE_API_FLOW_CONTROL
AuthenticateCustomer
This request is used to determine if the customer is an existing DISH customer or if they are a new customer. It makes use of scrub address and Network Qualification. The response includes the programming channels available to a customer based on their service address. A customer is determined to be existing or not by the address and phone that are provided. InstallationType is provided here. If it is provided as Dish then we need to call getInstallationDates operation.
Note : For SDS account, we cannot provide InstallationType as Dish.
Input : Address, name, Ph. no.
Output : Address valid Flag, Promotions available
Authenticate entry in DB – Yes
QualifyCustomer
This request is used to determine whether a customer qualifies for a given promotion or not. The qualification is based on the credit card and credit score validation.
The name details provided in authenticate customer must match with the name details provided in qualify. Also the SSN credit score and date of birth for a particular user is unique. Hence, these should match too with the appropriate values.
E.g: Name – BobbyP DavisP
SSN – 289582176
DOB – 12/03/1974 (MM/DD/YYYY)
If the authenticate customer is run for BobbyP DavisP then in qualify customer, we must provide this particular user’s SSN and DOB.
Also, qualify customer depends on credit score match. Higher the credit score, higher is promotion it can qualify for.
Input : ConversationId, PromotionID, LOB, SSN (Social Security Number), Date of Birth
Output : Checks in DB whether customer is validated or not.
Promotions are applicable according to credit score. Credit score id for every promotion must match with that of the customers’.
Based on the credit score check, sometimes the promotion provided for the user gets switched to higher or lower promotion. isPromotionSwitched flag gets true incase promotion is switched.
Promotions are of:
- Commitment type : requires credit score check (DBA Plus,etc.)
- Non- commitment type : prepaid type (FlexTV promotions)
The Flex promotion does not need credit score check hence for any ssn it gets qualified. Hence, isPromotionSwitched flag is not needed in this case.
ValidateProgramming
This request is used to submit the customer’s programming selections and determine whether the selected programming is valid. If successful, this response contains a flag indicating success.
Programs that the customers are eligible for are validated by a third-party, named EPC (EchoData Product Catalog).
Also, each program has certain specific channels. It validates the mapping of each channel with the promotion.
Output : TV configurations
- 01 – Living
- 02 – Bedroom
- 08 – Others
The promotionID in qualify customer and validate programming need to be same otherwise getInstallationDates (the operation to get available dates) will fail.
GetEquipment Selection
This request takes in a list of room selections and equipment configuration options which were returned from the validateProgramming call. If valid, a list of one or more equipment configurations is returned. We need not call this operation for data only flow.
Input : TV Configurations
Output : Bundles-
- Recommended
- Alternate
- Customized (only Retailers can provide this service)
We get different equipment solution types eg: Hopper, NonHopper. According to these solution type we have various types of receivers like customized, recommended.
ValidateEquipment Selection
This request takes in the chosen equipment configuration returned from the getEquipmentSelections call. The response is a confirmation of the pricing and equipment information chosen. It validates the type of equipments chosen by the customer and customer is eligible for it or not. We need not call this operation for data only flow.
Input :– We provide the solution type i.e. Hopper or NonHopper and the type of receivers customers want (Recommended / Alternate / Customized).
Output :– Details of the equipment solution selected or validated.
Price Selection
This request is used to determine the price of this flow’s set of selections. The returned pricing includes any one-time fees, one-time equipment fees, monthly programming fees, monthly equipment fees, and monthly programming credits.
Input : ConversationID, 2-digit service code maintained by EPC
Output : WSAPI contacts Pricer (third-party) which calculates the price
If payment made immediately, then customer is taken off on-hold condition.
Get Installation dates
This request is used to query for available dates and times for installation of the customer’s DISH equipment. The available time slots for any given day are 8 a.m. to 12 p.m. (MORNING) or 12 p.m. to 5 p.m. (AFTERNOON). This operation need not be called for Retailer because retailers themselves provide installation of equipments. But for partners we need to call this operation.
Input : Dates chosen by customers
Output : All the available dates (same or later than the current date)
Create customer
This request is used to place an order for a new customer. When the order is placed, a DISH account is created, an account number is assigned, and the installation date is reserved. However, the account is not activated until the installation is complete and the work order is closed. We can modify the services or add data services (to video only account) that have been chosen by the customer after this stage.
Input : Date, Credit Card information
Output : 16-digit Subscription Id, Work Order No.
For Data Only flow, GetEquipment and ValidateEquipment services are modified from TV configuration selection to Modem selection. Rest of the processes is same.
Work Order Modification
Work order modification is possible only for accounts which are on-hold condition i.e., payment is not made or installation is not completed. If the installations are made then active customer cannot go for WOM. It has to go for Add Order services.
States of customer:
- ONC – Open New Connect
- Voluntary disconnect – Customer itself disconnects
- Hard Disconnect – If bill not paid after a certain threshold period, subscription is cut off.
- Soft disconnect – If bill not paid for 15 days
- Active Customers – Existing customers
Restart – To recover from soft disconnect
Reactivate – To recover from hard disconnect
Process flow:
- Get Conversation Id
- Get Work order details
This request supplies a DISH subscriber number and work order number and retrieves details on the work order.
Input : Subscription Id, last name
Output : Whatever programmes / equipments that were selected by the customer
Modify Work Order
This request supplies payment information needed to modify the work order and any desired changes. The response includes the status of the request and an optional customer agreement.
Rest of the flow remains same as Create Customer, only the last process is named as MODIFY ORDER instead of CREATE CUSTOMER.
What can be modified:
- Bill cycle day / frequency
- Equipments selected
What cannot be modified:
- Promotions (we can add new promotions but cannot change what were already selected)