TABLE OF CONTENTS

Introduction

DerbySoft GO has designed a new ARI Sharing function within Go Supply. This function enables DerbySoft GO to fetch ARI from the supplier system once, compute it for different distributors, and deliver it to them. This helps suppliers reduce their server pressure and connect with more distributors.


Design

DerbySoft GO doesn't pull ARI directly to suppliers' systems for each real distributor. Instead, it pulls ARI to the supplier system through a virtual distributor. This virtual distributor requires the supplier's system to respond to all hotels/products in the Hotel API and all ARI in the ARI API. DerbySoft GO then calculates and distributes ARI to each real distributor based on ARI sharing.

  • Total Rate Plan (Only Filter) - DerbySoft GO will filter ARI based on products of real distributors from the Hotel API response.

Use Case

Total Rate Plan (Only Filter)

Assume there are two distributors are connected. For distributor A, the supplier offers two rate plans R1 and R2. For distributor B, the supplier offers another two rate plans R2 and R3. The virtual distributor is GO101. Hotel H1 is connecting with A, and Hotel H2 is connecting with B.


How to return hotels & products in Hotel API?

DerbySoft GO calls the hotel API to retrieve the list of hotels and products for distributors A, B, and GO101 from suppliers system.

  • Distributor A:

GET /hotels

[
  {
    "hotelId": "H1",
    "hotelName": "This is a test hotel H1",
    "distributorId": "A",
    "status": "Actived"
  }
]

GET /hotel/H1

{
  "hotelId": "H1",
  "hotelName": "This is a test hotel H1",
  "distributorId": "A",
  "status": "Actived",
  "products": [
    {
      "roomId": "King",
      "rateId": "R1",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R2",
      "status": "Actived"
    }
  ]
}
  • Distributor B:

GET /hotels

[
  {
    "hotelId": "H2",
    "hotelName": "This is a test hotel H2",
    "distributorId": "B",
    "status": "Actived"
  }
]

GET /hotel/H2

{
  "hotelId": "H2",
  "hotelName": "This is a test hotel H2",
  "distributorId": "B",
  "status": "Actived",
  "products": [
    {
      "roomId": "King",
      "rateId": "R2",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R3",
      "status": "Actived"
    }
  ]
}
  • Distributor GO101(the virtual distributor)

Supplier system should return ALL hotels and ALL products in Hotel API


GET /hotels

[
  {
    "hotelId": "H1",
    "hotelName": "This is a test hotel H1",
    "distributorId": "GO101",
    "status": "Actived"
  },
 {
    "hotelId": "H2",
    "hotelName": "This is a test hotel H2",
    "distributorId": "GO101",
    "status": "Actived"
  }
]

GET /hotel/H1

{
  "hotelId": "H1",
  "hotelName": "This is a test hotel H1",
  "distributorId": "GO101",
  "status": "Actived",
  "products": [
    {
      "roomId": "King",
      "rateId": "R1",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R2",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R3",
      "status": "Actived"
    }
  ]
}

GET /hotel/H2

{
  "hotelId": "H2",
  "hotelName": "This is a test hotel H2",
  "distributorId": "GO101",
  "status": "Actived",
  "products": [
    {
      "roomId": "King",
      "rateId": "R1",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R2",
      "status": "Actived"
    },
    {
      "roomId": "King",
      "rateId": "R3",
      "status": "Actived"
    }
  ]
}

How to reponse ARI in ARI API?

DerbySoft GO uses ARI API to request ARI from suppliers' systems for distributor GO101 instead of distributors A and B. The suppliers' system should respond with ALL ARI for distributors A and B in distributor GO101.


POST /ari/daily/details

{
  "header": {
    "sourceId": "XXXX",
    "distributorId": "GO101",
    "version": "v4",
    "token": "18393849028490234"
  },
  "hotelId": "H1",
  "dateRange": {
    "startDate": "2018-01-01",
    "endDate": "2018-01-04"
  },
  "currency": "USD",
  "dailyAris": [
    {
      "roomId": "King",
      "rateId": "R1",
      "inventories": [
        9,
        0,
        9,
        9
      ],
      "rates": {
        "type": "OccupancyRate",
        "rates": [
          {
            "adultCount": 2,
            "childCount": 0,
            "amountBeforeTax": [
              502.19,
              502.19,
              502.19,
              502.19
            ],
            "amountAfterTax": [
              623.23,
              623.23,
              623.23,
              623.23
            ]
          }
        ]
      }
    },
    {
      "roomId": "King",
      "rateId": "R2",
      "inventories": [
        9,
        0,
        9,
        9
      ],
      "rates": {
        "type": "OccupancyRate",
        "rates": [
          {
            "adultCount": 2,
            "childCount": 0,
            "amountBeforeTax": [
              602.19,
              602.19,
              602.19,
              602.19
            ],
            "amountAfterTax": [
              723.23,
              723.23,
              723.23,
              723.23
            ]
          }
        ]
      }
    },
    {
      "roomId": "King",
      "rateId": "R3",
      "inventories": [
        9,
        0,
        9,
        9
      ],
      "rates": {
        "type": "OccupancyRate",
        "rates": [
          {
            "adultCount": 2,
            "childCount": 0,
            "amountBeforeTax": [
              702.19,
              702.19,
              702.19,
              702.19
            ],
            "amountAfterTax": [
              823.23,
              823.23,
              823.23,
              823.23
            ]
          }
        ]
      }
    }
  ]
}

While converting ARI for distributors A and B, DerbySoft GO will filter R3 and keep R1 & R2 for distributor A, and filter R1 and keep R2 & R3 for distributor B.


Summary

Suppliers manage rates for each real distributor, then combine them to respond to DerbySoft GO as a virtual distributor. DerbySoft GO filters products and delivers ARI to each real distributor.


You can refer to the ARI Sharing FAQ for further details.