CPGs API Inventory

These are the specifications for the Rappi Inventory API. This REST API enables you to efficiently update your stores in the Rappi apps with the latest price, promotion, and product-availability data. If you haven't reviewed the Inventory Integration Guide section, please do so before exploring this document.

ATTENTION TO API SPECS

Rappi Inventory API has not yet been migrated to the same gateway that includes our order and payment APIs. It uses a different authentication schema, and it's served from a different base URI.

Rappi Inventory API v2 OAS3 file

Authentication

  • API Key (api_key)
    • Parameter Name: api_key, in: header.

Inventory Update

POST /datasets

This endpoint syncs your product feeds with Rappi. It initiates the import process and returns the import job identifier.

Request Example

# You can also use wget
curl -X POST https://services.grability.rappi.com/api/cpgs-integration/datasets \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'api_key: string' \
-H 'api_key: API_KEY' \
-d '{"store_id":"string","id":"string","gtin":"string","name":"string","category_first_level":"string","category_second_level":"string","price":0,"discount_price":0,"discount_start_at":"2019-08-24","discount_end_at":"2019-08-24","stock":0,"is_available":true,"sale_type":"U","image_url":"string"}'

Request Parameters

ParameterTypeInDescription
api_key requiredstringheaderUnlike our other APIs, this service uses an API key-based authorization. This key is provided by your Rappi technical account manager (TAM).
body requiredobjectbody
» store_id requiredstringbody
  • Retailer-generated identifier for the store having its inventory updated
  • If you have multiple stores, apply a unique identifier to each of them
  • Our data ingestion engine maps your store_id to the ones Rappi handles internally. If you wish to add a new store, first contact your account manager, so all internal provisions are handled to enable the new store to be listed in our app
» id requiredstringbody
  • The product's unique identifier (often the SKU) managed internally by retailers
  • SKUs not previously included in your master catalog might be ignored by our data ingestion engine. Always contact your account manager whenever you need to add new products to your master catalog
» gtin requiredstringbody
  • The EAN (or UPC) of a product; commonly known as the product barcode
» name requiredstringbody
  • Name of the product
» category_first_levelstringbody
  • Main category for listing the product
» category_second_levelstringbody
  • Secondary category listing for the product
» price requirednumberbody
  • The regular price for a product
  • Use discount_price for passing a temporary markeddown price
» discount_pricenumberbody
  • Discounts (markdowns) are controlled by three optional columns. However, if you want to markdown a product, then all three columns must be populated
  • This is the product's temporary sale price
» discount_start_atstring(date)body
  • The discount start date; always use the ISO 8601 date format YYYY-MM-DD
» discount_end_atstring(date)body
  • The discount end date. The same convention for date string format applies
» stock requiredintegerbody
  • The quantity of the product available for sale
» is_availablebooleanbody
  • A switch that indicates whether the product should be published on the app irrespective of its stock
» sale_type requiredstringbody
  • Indicates how the product is sold
  • Use "U" for products sold by units or "WW" for those sold by weight in kilograms (Kg)


Accepts: U, WW
» image_urlstringbody
  • A publicly-accessible URL for the product image

Responses

StatusDescription
201 CreatedSuccess–import initiated; details returned.
400 Bad RequestBad Request
500 Internal Server ErrorThis is an issue with the server, not the request.

Status Code 201
NameDescription
» job_id string
The unique inventory sync job identifier created by Rappi.
» status string
POST "created" status, demonstrating that the import has initiated. NB there isn't a method to verify the state of an import job.
» created_at string(date-time)
UTC timestamp when the import job started.

Status Code 400
NameDescription
» message string

» field string

» description string

» internal string

undefined