Supplier Rates Import API

1. Introduction

The Supplier Rates Import API can be used to programmatically create and activate a Supplier Price List Range for an existing Supplier Price List with a collection of the Price List Items describing the Price for a certain Country & Operator combination.

This API belongs to the Bulk Price List domain. The subject domain of an endpoint URL is:

https://api.horisen.pro/bulk/pricelists

The API uses the HORISEN implementation of the OAuth 2.0 protocol. For more information refer to the OAuth2 Authentication Guidelines page.

2. Methods Overview

POST/sms/buying/{plId}/ranges-import
This Method is used to add Gate Price List Range and Items.Read More
POST/v2/sms/buying/{plid}/ranges/{rngid}/activate
This Method is used to activate a Date Range.Read More

3. Methods Details

POST/sms/buying/{plId}/ranges-import
This Method is used to add Gate Price List Range and Items.Up
Method Overview

This Method is used to add Gate Price List Range and Items.

A fully valid request will create a new Date Range with given status if all Price List items are valid. A reason for non-valid items can be, that a country/operator combination is not valid. In that case, the endpoint returns a 409 Status Code with a full object including error message for invalid items.

To create a Date Range even with not having 100% valid items, but at least one, you can add a query parameter importOnlyIfAllValid=false (default for an omitted parameter is true). In that case, the endpoint returns a 201 Status Code with a full object, including error message for invalid (not created) items.

URL Parameters
Name Type Description
plid (required) string (path) Gate Price List ID to get.
importOnlyIfAllValid stringĀ (query) Only when all items are valid, a new range will be created. If there is one not valid item, no new range will be created and 409 status will be returned with input object enriched with comments about items (warnings and errors).
If set to false, all valid items (at least one) will be imported and new range created. 201 status will be returned with input object enriched with comments about items (warnings and errors). Those items with errors are not imported! If there are no valid items, no new range will be created. And 409 status will be returned with input object enriched with comments about items (warnings and errors).
Default value: true.
post data (required) object The status can be either imported or omitted. The 'startDate' variable has the following format: YYYY-MM-DDTHH:MM:SSZ and 'endDate' is set automatically to unlimited. 'comment' and 'importReport' can be omitted.
Data Parameters

Example JSON body parameters:

  {
    "startDate": "2050-01-01T00:00:00Z",
    "comment": "comment x",
    "importReport": "abc",
    "items": [
      {
        "status": "active",
        "price": 1.1,
        "comment": "comment 1",
        "country": {
          "countryIsoCode": 756,
          "mcc": "228"
        },
        "operator": {
          "mcc": "228",
          "mnc": "12"
        }
      },
      {
        "status": "active",
        "price": 1.1,
        "comment": "comment 2",
        "country": {
          "countryName": "All Countries"
        },
        "operator": {
          "operatorName": "All Networks"
        }
      },
      {
        "status": "active",
        "price": 1.1,
        "comment": "comment 3",
          "country": {
            "countryCode3": "ZWE"
          },
        "operator": {
          "mcc": "648",
          "mnc": "04"
        }
      }
    ]
  }

Items-list: status, price, country, operator. Country and Operator are separated objects in the list and has their own fields that are described in the tables below.

Name Type Description
GateImportItemsWO object Gate import object.
Status string Can be either in import or active. Default value 'R' = draft will be used.
Price number($float) Price.
Country object The object must have at least one parameter out of countryName, countryCode2, countryCode3 or countryIsoCode.
operator object Object must have at least - (mcc and mnc) or operator name. For further information check the table below.

Gate Import country WO object is related to the country of the Operator.

Name Type Description
GateImportCountryWO object Gate import object for the country.
countryIsoCode integer Country code.
mcc string Mobile country code.
countryCode2 string Country code 2.
countryCode3 string Country code 3.
countryName string Name of the country.

The object must have at least one parameter out of countryName,countryCode2, countryCode3 or countryIsoCode. We recommend using only one of the possible parameters for country and operator and omit the unused (see the example).

Gate Import operator WO: This object is related to the operator and it's country code and network code.

Name Type Description
GateImportOperatorWO object Gate import object for the operator.
mcc string Mobile country code.
mnc string Mobile network code.
operatorName string Name of the operator.
Success Response: 200 Gate Price List Range added

Example

{
  "startDate": "string",
  "endDate": "string",
  "comment": "string",
  "status": "string",
  "importReport": "string",
  "items": [
    {
      "status": "string",
      "price": 0,
      "country": {
        "countryIsoCode": 0,
        "mcc": "string",
        "countryCode2": "string",
        "countryCode3": "string",
        "countryName": "string"
      },
      "operator": {
        "mcc": "string",
        "mnc": "string",
        "operatorName": "string"
      }
    }
  ],
  "operatorJoin": "off"
}
Error Response 409: Gate Price List Range not added as there are wrong input parameters

Example

{
  "startDate": "string",
  "endDate": "string",
  "comment": "string",
  "status": "string",
  "importReport": "string",
  "items": [
    {
      "status": "string",
      "price": 0,
      "country": {
        "countryIsoCode": 0,
        "mcc": "string",
        "countryCode2": "string",
        "countryCode3": "string",
        "countryName": "string"
      },
      "operator": {
        "mcc": "string",
        "mnc": "string",
        "operatorName": "string"
      }
    }
  ],
  "operatorJoin": "off"
}

The available error codes are listed below:

  • "PRICELIST_RANGE_ITEM_IMPORT_COUNTRY_IS_MISSING"
  • "PRICELIST_RANGE_IMPORT_COUNTRY_IS_WRONG"
  • "PRICELIST_RANGE_IMPORT_COUNTRY_NOT_FOUND"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_IS_MISSING"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_IS_AMBIGIOUS"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_MCC_IS_MISSING"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_MNC_IS_MISSING"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_MCC_IS_WRONG"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_IS_WRONG"
  • "PRICELIST_RANGE_ITEM_IMPORT_ALLCOUNTRY_IS_ALREADY_IN_USE"
  • "PRICELIST_RANGE_ITEM_IMPORT_OPERATOR_IS_AMBIGIOUS"
  • "PRICELIST_RANGE_ITEM_STATUS_IS_WRONG"
  • "PRICELIST_RANGE_ITEM_IMPORT_STATUS_IS_MISSING"
  • "PRICELIST_RANGE_ITEM_PRICE_IS_MISSING"
  • "PRICELIST_RANGE_ITEM_IMPORT_PRICE_IS_WRONG"
  • "PRICELIST_RANGE_ITEM_IMPORT_SAME_OPERATOR_IN_MULTIPLE_ITEMS"
  • "PRICELIST_RANGE_ITEM_IMPORT_SAME_OPERATOR_DIFFERENT_PRICE"
Error Response Unexpected Error: Default

Example

{
  "Code": 0,
  "Message": "string"
}
POST/sms/buying/{plid}/ranges/{rngid}/activate
This Method is used to activate a Date Range.Up
Method Overview

This Method can be used to activate previously created Supplier Price List Data Range.

Authorization privilege needed for this endpoint: bulk-supplier-pricelist.

Manage Ranges in draft mode that have startDate in future will be activated.
EndDate of the actual active range will be set to be endDate of the new range.
StartDate of new range will be set to be EndDate of actual active range.Ranges in Draft and Imported status can be activated.
When activating range, approval_status will be set to 'manually_approved' and approval_status_dt will be set to the time of change.

URL Parameters
Name Type Description
plid string Gate Price List ID.
rngid string Gate Price List range ID.
Success Response: 200 Gate Price List Range found

Example

{
  "id": "string",
  "gatePriceListId": "string",
  "startDate": "string",
  "endDate": "string",
  "currencyId": 0,
  "currencyCode": "string",
  "baseCurrency": 0,
  "baseCurrencyCode": "string",
  "status": "string",
  "comment": "string",
  "importReport": "string",
  "isOverlaping": true,
  "overlaping": [
    {
      "startDate": "string",
      "endDate": "string"
    }
  ],
  "input": {
    "startDate": "string",
    "endDate": "string",
    "comment": "string",
    "status": "string",
    "importReport": "string",
    "items": [
      {
        "status": "string",
        "price": 0,
        "country": {
          "countryIsoCode": 0,
          "mcc": "string",
          "countryCode2": "string",
          "countryCode3": "string",
          "countryName": "string"
        },
        "operator": {
          "mcc": "string",
          "mnc": "string",
          "operatorName": "string"
        }
      }
    ],
    "operatorJoin": "off"
  }
}
Error Response Unexpected Error: Default

Example

{
  "Code": 0,
  "Message": "string"
}

4. Questions and Answers

Q: "...As I understand this API should be used to upload rates per supplier. I don't see option to specify the supplier ID / Name that should match suppliers already in your platform. There is also no place for currency of the rate. "

A: You don't need to specify both parameters, as the import is done in a previously via UI created Supplier Price List (in Bulk App, under Rates Manager/Suppliers/SMS Gate Price List).
This defines Supplier and Currency of Price List, you then can import rates and create a new date range from them.
(Explications on how Rates Manager and Date Ranges Management in Application work are available in our User Guides).

You can get the needed PLID (Price List Id) you need by going to Rates Manager/Suppliers/SMS Gate Price List in your Bulk SMS Application.

Once there you need to open the price list column link. You will see an URL like this:

/en/rates-manager/suppliers/pricelist/XXXXX/range?main:paging=1,10

Where XXXX is the PLID.