WSAPI – Web services API

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:

WSAPI

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):

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:

  1. Commitment type : requires credit score check (DBA Plus,etc.)
  2. 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-

  1. Recommended
  2. Alternate
  3. 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:

  1. ONC – Open New Connect
  2. Voluntary disconnect – Customer itself disconnects
  3. Hard Disconnect – If bill not paid after a certain threshold period, subscription is cut off.
  4.  Soft disconnect – If bill not paid for 15 days
  5. 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)