Introduction
Advantages of integrating with Ounass Marketplace
Ounass Marketplace API Integration is an exclusive integration served only to Ounass Marketplace Vendors in which vendors execute their Ounass Marketplace related operations systematically and get latest updates on each product and transfer whenever they request. Using API decreases operational costs for companies and let them use their valuable workforce for more strategic actions. Our API's gives you many capalities so that you have the autonomy to operate by yourself in every step of your operation.
Product Creation
Vendors can send product information to create/update products.
- You can decide in which website to sell each SKU among your available regions initially agreed
- You can put AED prices and auto conversion & rounding will turn prices into local currencies considering VAT’s in each region and currency rates
- You can apply different price to any region if you don’t want to use conversions or can apply conversions in few and put different value to a specific region
- You can update barcode, website you will sell and retail price information any time you prefer
- You can either create product in the form for of excel by downloading template, filling it and posting or via JSON.
- You can create product in the form for of JSON. Following that option you will be able to get all available attributes and their values per each category via API.
- You can only select attribute values from available options or can map with your existing values (mapping will be release on March 2021)
Monitoring Product Statuses
We generate a catalog per each vendor that compose of successful product creations for vendors to monitor their products
- After creating products just half an hour later you can create transfer for products uploaded on the system.
- You can monitor product statuses to understand if SKU is available and processed to include inside a transfer.
- You can get all products uploaded on the system with all available information (price, status, barcode, VPN etc.) any time you want.
Transfer/PO Creation
Vendors can create a transfer/PO anytime they want by checking if products are already in Ready status.
- You can create/update a transfer in the form of excel or JSON
- You can update or delete transfer if the appointment is not requested
- You can see transfer content (SKU, quantity etc.) any time they want
- You can monitor their transfers created via API’s and see their statuses if transfers are received, if the appointment is created etc.
Appointment Creation
Vendors can request appointment automatically via API. No additional information is required.
- After creating transfer you can directly request for an appointment creation via API. There is a 1 to 1 conection between transfers and appointments
- The Appointment team sends scheduling information over email to primary contact of the vendor after receiving your appointment creation request
Shipment Information Creation/Update
Vendors can create shipment information as international or local with shipment address, shipment contact, courier information /drop by vendor.
- You can create/update shipment information for a transfer via API and our logistic team will be acknowledged automatically and will communicate with you if necessary
- Address used in shipment information is stored in the form of address id and can be used in future shipments
- You can not request pick up from Ounass via API now but it is in roadmap and can be developed sooner if requested
Sales Information
Vendors can request and get full order detail any time they want. We do record orders real time.
- Full order detail includes:
Order ID, Order Creation Date, Order Status, Status Record Date, Customer ID, Website, Shipment Country, Shipment City, SKU, Brand, VPN, Color, Size, Barcode, Gender, Category, Item Name, Pricing Type, Discount Amount, Retail Price, Retail Price AED, Gross Revenue AED, Currency Rate, SKU Quantity, Return Reason (exists if item is returned or cancelled)
Stock Information
Vendors can request and get stock detail any time they want. Stock Information can be received per different states.
- Stock states available is:
Stock on Hand, Sellable Stock, Received Stock, In Transit Stock, Out of stock. - Stock information per each state includes:
Item Name, Brand, SKU ID, Barcode, VPN, Color, Size, Gender, Season, Category, Quantity.
Availability To Use Vendor Portal
Only vendors who integrate with our API’s can fully benefit from our portal.
- marketplace.ounass.com will be available for integrated vendors to manually operate if preferred / any problem arise. Same, even more feature set is available on the portal
- Semi integration can be done (for example product creation/update integration solely) and rest of the operation can also be done via our user friendly Vendor Portal
- Vivid dashboard for you to monitor your Sales & Stock in order to create replenishment on time, see your new orders, what is top selling and how your gross revenue is growing
Faster Go Live
We give autonomy to vendors to self-serve in each process with high visibility over their actions and decrease go live durations and increase efficiency on vendor behalf.
- We process product creation/update requests in around half an hour (only price updates are processed after 07:00 PM (GMT+4)) letting you to create transfers right away without any dependency to Marketplace Team
- There is no back and forth emails between warehouse departments such as appointment team and logistic team to coordinate shipment or tramsfer. All processes are automatic which decrease operational hassle on vendor side
- We give higher visibility by using product and transfer statuses so that vendors know if their action is reflected and processed in the system
Dedicated Tech Team
As a part of Vendor Portal a fresh tech team is dedicated to serve Marketplace vendor needs.
- We do support you before and after integration
- We consider and highly value each vendor need. We put them in our roadmap, prioritize and develop accordingly; assuring vendor requirements are met during their partnership with us
Evolving API’s
Ounass Marketplace portal and it’s API’s will evolve in time giving users more functionality every month.
- We aim to serve vendor 360° in each process they undergo with our tech capabilities
- We release new features to our portal every month
How to integrate via API
For end to end integration your systems should also have services available in the form of API’s as well and should be able to call REST API's. In order to integrate via API, you should have a technical employee or a 3rd party you work with to assess your integration capabilities. If you want to discuss further, please contact with your Account Manager.
Authorization
Marketplace Vendor portal uses API Token to allow access. The identity of the vendor is determined with API Token. In this way, it is ensured that the vendor only inquires about its products and other informations. You can create an API Token from API Management page under "Settings" after login.
Get API Key
After logging into the Vendor portal once you click Settings, a sub-menu will open called “API Management”. Once you clicked API Management, you will land to a page where you can create API Token. Only Token Name is necessary to generate an API Key. Still we recommend you to fill IP Restriction field. IP restriction is a second layer of security. By not typing any IP you will make your API's public. That means everyone who has your API token will be able to reach your API's. You can type multiple IPs by separating with comma. Once you click Generate API Token button don't forget to copy your Token and share with your tech team. You won't be able to reach your token again for security purposes once it is generated. If you didn't copy the Token then we advise you to create a new one. You can create multiple API Tokens and revoke the ones you don't use. Keep in mind that only Vendor Admins can reach API Management page.
Marketplace Vendor portal expects the API Token to be included in all API requests to the server.
Integration Flow
Our integration flow and our REST API’s are as follows:
Get Required Product Fields
To sell your products at Ounass, first the products has to be added to Ounass Catalog System. Before creating a product we have an API for our vendors to see the product fields necessary to be filled per each category.
- Products in different category has different fields to fill mandatory & non mandatory.
- Vendors who prefer to upload product via Excel can download our template for all categories in the form of excel with API
[GET] /api/v1/vendors/productTemplate?empty=true
. Template includes multiple sheets/category labels and each sheet has different fields mandatory/non mandatory as data collected changes according to category. - We also have API’s in the form of JSON. Vendor can see available categories via API
[GET] /api/v1/categories
and according to category of the product they will create, they are able to get necessary attributes and their available values via API[GET] /api/v1/categories/{categoriesId}/attributes
. - Also vendors can only send products for Brands agreed with Marketplace. As it doesn’t necessarily be all brand portfolio, we have another API
[GET] /api/v1/vendors/brands
which vendors can see their available Brand agreed. If they want to add new Brand, they need to contact with their Account Executive and Account Executive will add the Brand to vendor brand portfolio and only after then this API values will include the new brand for vendor to operate.
Create Product
We have two types of API’s for our vendors to create/update product information.
- Vendors who prefer to upload product via Excel can upload product information in the form of excel with API
[POST] /api/v1/vendors/productTemplate
. - We also have another API in the form of JSON. Vendor can send product information in the form of JSON with API
[POST] /api/v1/vendors/products
. - While filling product information vendor should use available values for many fields but we also have mapping infrastructure that will be published in the beginning of March 2021 in which vendor can send the mapped values of mandatory attributes up front and then use their own values among integration. Once a new value is generated in vendor system that is not mapped yet used during product creation will cause product creation request to fail but vendors will be able to map it via our mapping API fastly and retry their requests.
- Unique Barcode - Barcode should be unique for each product
- Style - VPN (Vendor Product Number), color and size combination makes your product unique and creates the product’s unique SKU ID on our system. The VPN should remain the same for products with same style but their color or size should be different. This is important to display variants of a product grouped under single product detail page on our website
- Category And Brand Alignment Per Style - If products share the same style, their VPN’s should be the same. Hence products which has the same VPN (variants of a product) should share the same category and brand as well
- Size Of The Fields - Fields with limited freetext values are Item Name (80 characters max), VPN (30 characters max) and Barcode (25 characters max). Most of the rest of the fields should be selected from specifications which you can find in each excel template or category attributes API.
- Request Size - You can send up to 1000 products (rows) in a single request.
- Mandatory fields - Mandatory columns indicated with asterix * on excel template or “M” in JSON category attributes API need to be sent with their values to create a product
- Attribute Names - The attribute names should remain the same (case insensitive). If you are having difficulty that way you can contact with your Account Manager for mapping with your field names.
- Alignment With Specifications -
All fields listed as dropdown in excel and in JSON API
[GET] /api/v1/categories/{categoryId}/attributes?mappingType=PRODUCT_API
should have a value selected among the available values. If you are having difficulty that way you can contact with your Account Manager for mapping with your field values (on March 2021 we will start supporting this as well) - Season-Phase Of The Product - Products sent to our system should have recent season-phase values. There are 5 season-phase values available for product creation. You can not create products for old seasons. Marketplace is decisive upon active season-phases.
Update Product
Product Creation and Product Update works exactly in the same manner. For update same API’s are used for excel and JSON.
- We update the product if only vendor product exists in our system. Validation is made via VPN, Color and Size field comparison.
- Fields that vendor can update is Barcode, Retail price and Website Activation Information (in which website product will be sold) for all regions or exclusively per region.
- Attribute values such as country of origin etc. can only be updated by Account Executives on Master catalog. If you send change for attribute values your product update won’t fail but any change regarding attribute values will be overridden by catalog attribute values.
- Optional fields that are sent null during update will be replaced by the pre-recorded values.
Get Vendor Catalog
We have an API for vendors to get product information they created in our system. It brings detailed information about the products of the vendor: Including vendor product statuses, attribute values, price, stock etc.
- Vendors who prefer to get existing product via Excel can extract product information in the form of excel with API
[GET] /api/v1/vendors/productTemplate
. - We also have another API in the form of JSON. Vendor can get existing product information in the form of JSON with API
[GET] /api/v1/vendors/products
for all products or API[GET] /api/v1/vendors/products/{vendorProductId}
for a single product. - Those API's are especially important for vendors to monitor product statuses to understand if products are processed and ready to create a transfer as we share products statuses beside other fields.
Get Required Transfer/PO Fields
Purchase order means Transfer for us as in Marketplace Business Model nothing is purchased upfront. In order to send your stock to our warehouses, we have API’s which returns necessary fields to create a transfer.
- Vendors who prefer to create a transfer via Excel can download transfer template in the form of excel with API
[GET] /api/v1/vendors/transferTemplate
. - We also have another API in the form of JSON. Vendor can get necessary transfer information fields in the form of JSON with API
[GET] /api/v1/vendors/mapping?keyMappingType=TRANSFER_API
. - Only mandatory fields to create a transfer is VPN, Color, Size, Quantity and Warehouse information.
Create Transfer/PO
We expect vendors to create a transfer to send their stock to our warehouses. Vendors can create a transfer for multiple brands or categories at the same time.
- Vendors who prefer to create a transfer via Excel can upload transfer information in the form of excel with API
[POST] /api/v1/vendors/transferTemplate
. - We also have another API in the form of JSON. Vendor can send transfer information in the form of JSON with API
[POST] /api/v1/vendors/transfers
. - Once this API’s are used, in success response vendor will get transfer number.
- Once we receive vendor request of creating/updating a transfer, we process the request and change the transfer status to “OPEN” in 20 minutes. That means we created your transfer on our system. Once a transfer is processed and get the status OPEN, vendors can create appointment request.
- Transfers can only be created with mature products, meaning that the product will need to include the Ounass General Retail Price, Currency, as well as at least 1 website set as ACTIVE. Products eligible for transfers will have the statuses of Ready (ready means products processed and recorded) or Active (active means products processed, recorded and also stock exists). You can check product statuses by getting catalog information in the form of JSON Via API
[GET] /api/v1/vendors/products
or via Excel[GET] /api/v1/vendors/productTemplate
. - You can only create a transfer for products existing in your catalogue (First you should create your products in our system to create a transfer).
- The combination of VPN, Color, Size, Warehouse information and Quantity should be sent to create a transfer.
- The field names should remain the same (case insensitive). If you are having difficulty that way you can contact with your Account Manager for mapping with your field names.
- Season-Phase of the SKU’s that became a subject of a transfer should be active season-phases. You can not send stock for old season products.
- Warehouse name should be matching with available options.
Update Transfer/PO
Transfer Creation and Transfer Update works exactly in the same manner. For update same API’s are used for excel and JSON. Only difference is inclusion of existing Transfer Number.
- You can update the transfer via Excel with API
[POST] /api/v1/vendors/transferTemplate
if only transfer number field is filled with an existing value and value belongs to an open transfer number. - You can update the transfer via JSON with API
[POST] /api/v1/vendors/transfers
if only transfer number field is sent with an existing value and value belongs to an open transfer number. - Your request will override all transfer items both SKU wise and quantity wise.
- You can update single transfer per request.
- Transfers update can only take place in “OPEN” status; before appointment creation.
Create Appointment
After transfer creation vendors can request for an appointment anytime depending on their convenience and readiness to ship the stock. Appointment request means, vendor fully decided the SKU’s, Quantity and Warehouse they will transfer hence ship; there won’t be any update and want to share this information with appointment team so that appointment team can schedule earliest convenience to receive the shipment considering stock volume and warehouse operational density.
- In order to create an appointment vendor can use API
[POST] /api/v1/vendors/transfers/{transferId}/appointment
by putting transfer ID on the path upon transfer which they want to create appointment for. - Appointment can only be created for transfers with “OPEN” status.
- To receive status of the transfer that the appointment will be created for, vendor can use API
[GET] /api/v1/vendors/transfers/{transferId}
or can receive success or fail as a response to your appointment request. - Vendors should communicate the referring Appointment ID inside the shipment package or to our warehouse employees during shipment drop.
Delete Transfer/PO
Vendors can delete their existing transfers if they change their mind/stock is not available etc.
- In order to delete an existing transfer vendor can use API
[DELETE] /api/v1/vendors/transfers/{transferId}
by putting transfer ID on the path upon transfer which they want to delete and transfer status will turn to deleted. - Vendors can only delete the transfer after their initial creation/update request is processed and created. Shortly only after their transfers get the status “OPEN” and before appointment creation. If you change your mind after appointment creation, simply don’t ship the stock and ignore the transfer that you created.
Create Shipment Info
After creating an appointment and deciding shipment method (drop by vendor or courier etc.), we expect vendors to send the related shipment and contact information so that in any problem our logic team can track your shipment from the information you transmit. Even though this is not mandatory, we especially recommend vendors to send shipment information on international shipments.
- In order to create shipment information regarding a transfer vendors can use API
[POST] /api/v1/vendors/transfers/{transferId}/shipment
by putting transfer ID on the path upon transfer which they want to send shipment information for. - Regarding your request, we will create and share a Shipment ID on response body.
- After shipment information creation, typed address title creates an address id for you to use in future shipments if your FROM address is not changing. If you have multiple addresses we expect you to put different Address Titles in the body.
Update Shipment Info
Vendors can change shipment method or where the shipment is shipped from as well as courier details if typed wrong etc. To support this change, we have an API for vendors to update their existing shipment information.
- In order to update shipment information regarding a transfer, vendors can use API
[PUT] /api/v1/vendors/transfers/{transferId}/shipment/{shipmentId}
by putting transfer ID on the path upon transfer which they want to send shipment information for as well as existing Shipment ID.
Monitor Your Transfers
Vendors can track their transfer’s statuses in order to monitor the availability of the action they want to take regarding their transfer. This is mostly important if vendor would like to take further action right after transfer creation.
- Vendors can use API
[GET] /api/v1/vendors/transfers
to get information upon all their transfers and[GET] /api/v1/vendors/ transfers/{transferId}
if they want to get information upon a specific transfer. - Transfer status monitoring is important if right away vendors wants to update their transfer /delete their transfer /create an appointment for their transfer /create or update a shipment information for a transfer after the transfer is created.
- Transfers get the status OPEN when their transfer is processed and created in our system. Only in that status vendors can update their transfer /delete their transfer /create an appointment for their transfer.
- Transfers get the status WAITING FOR APPOINTMENT when they request appointment.
- Transfers get the status READY TO SHIP when appointment request is processed and an Appointment ID is received from appointment system.
- Transfers get the status SHIPPED when vendor creates a shipment information for a transfer. They can as well update their shipment information in this status.
- Transfers get the status RECEIVED once shipment is received in our Warehouse and inbounded/scanned.
Get Order Data
We do record orders received real time. In order to report how your sales are going, which SKU is selling, which category is selling the most, full price or markdown is performing well, how frequent your customers are buying, from which website you are selling the most, where your products are shipped to, what is being returned or cancelled and why etc. you can get full order detail any time you want.
- In order to get your orders with their details vie excel you can use API
[GET] /api/v1/vendors/download/returnAndCancellation
. On March 2021 we will also publish JSON API for this purpose as well. - Full order detail includes: Order ID, Order Creation Date, Order Status, Status Record Date, Customer ID, Website, Shipment Country, Shipment City, SKU, Brand, VPN, Color, Size, Barcode, Gender, Category, Item Name, Pricing Type, Discount Amount, Retail Price, Retail Price AED, Gross Revenue AED, Currency Rate, SKU Quantity, Return Reason (exists if item is returned or cancelled)
- You can login to Vendor portal and use our vivid sales dashboard at the same time if you wish.
Get Stock Data
We do record stock transactions in our system and accordingly let vendor to get information upon Stock On Hand, Sellable Stock, Received Stock, In Transit Stock and Out of stock item detail and their quantities.
- In order to get stock information you can use our JSON API
[GET] /api/v1/vendors/reports/stockDetails
. We will also publish an API to extract this data as excel if needed. - You need to filter your stock according to states.
- Stock states available is Stock on Hand, Sellable Stock, Received Stock, In Transit Stock, Out of stock.
- Stock information per each state includes Item Name, Brand, SKU ID, Barcode, VPN, Color, Size, Gender, Season, Category, Quantity
Product Integration
By making product integration with Ounass Marketplace Portal, you will be able to create your products which will form a catalog, update your existing products and list your products in your catalog to monitor their statuses in order to successfully create a transfer.
Create or Update Product
You can create a new product or update an existing product via excel or Json. Please view Excel - Product Create or Update. or JSON - Product Create or Update section according to your integration choice.
Excel - Product Create or Update
You can create a new or update an existing product by using following API's.
- GET /api/v1/vendors/productTemplate is used for downloading the product template to fill from scratch or update.
Depending on the parameters you pass, it will download a product creation template or a product update template, which are slightly different. Please see the details.
- POST /api/v1/vendors/productTemplate is used for uploading the template in order to create / update a product. If VPN, Color and Size values of a product exist, this product will be updated, otherwise a new product will be created.
Validations:
There are many validations on API level. Any data against validations will receive error.
- Unique Barcode
Barcode should be unique for each product. - Style
VPN, color and size combination makes your product unique and creates the product’s unique SKU ID. The VPN should remain the same for products with same style but their color and size should be different. VPN, color and size will not be changeable after creation, so please fill this field cautiously. If you would like to change these details in the future, you will have to create a new product that the system will register as new product. - Category And Brand Alignment Per Style
If products share the same style, their VPN’s should be the same. Hence products which has the same VPN should share the same category and brand as well. - Size Of The Fields
Fields with free-form values are Item Name (80 characters max), Description (250 characters max), VPN (30 characters max) and Barcode (25 characters max). Rest of the fields should be selected from specifications which you can find in each template with latest possible values. - Request Size
You can send up to 1,000 products (rows) in a single request. - Mandatory fields
Mandatory columns indicated with asterix * need to be sent with their values to create a product. - Attribute Names
The attribute names should remain the same (case insensitive). If you are having difficulty that way please contact your Account Manager for mapping with your column names. - Alignment With Specifications
All fields listed as dropdown should have a value selected among the specifications.
Download Vendor Product Template
This API is to download the product template that will be used to fill product information.
There are two types of templates slightly different: Product Create and Product Update
Product Creation Template vs Product Update Template
The parameter to determine to download product create or update template with the api is 'empty' parameter. If it is not passed (or passed as false
), it will download update template with existing products. Otherwise, it will download an empty create template.
Here are what differs between two:
Product Create Template | Product Update Template |
---|---|
Products for different categories are listed in different category sheets. Main category label of each product is the decisive of which information should be filled in order to create a product. Basically each main category label has different data fields mandatory / non mandatory to be captured. | Products listed in a single sheet named 'Update' |
Each sheet has its own attribute columns based on category | There are only the common category attributes as columns in the sheet |
However, the create template is also capable of updating products. If an existing product is listed in the create template, it will be treated as an update operation.
For product creation in order to download empty template with necessary fields and specifications, you can use following API's. Depending on your product portfolio, you can download a product template with single sheet by using below listed API's or can type multiple category ID's to your API request to download multiple sheets and process your upload for all.
Downloading empty product template examples
GET https://be-marketplace.ounass.com/api/v1/vendors/productTemplate?empty=true HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: example.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/productTemplate?empty=true' \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
Main Category Label (Sheets) | Category ID(S) | Path |
---|---|---|
All Main Categories | /api/v1/vendors/productTemplate?empty=true | |
Accessories | 2872&2973&3055 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=2872&categoryId[]=2973&categoryId[]=3055 |
Bags | 3145&3231&3315 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=3145&categoryId[]=3231&categoryId[]=3315 |
Beauty | 3399&3542&3690&3855 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=3399&categoryId[]=3542&categoryId[]=3690&categoryId[]=3855 |
Footwear | 4480&4504 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=4480&categoryId[]=4504 |
Jewellery | 4993&5092&5142&5273&5288&5298 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=4993&categoryId[]=5092&categoryId[]=5142&categoryId[]=5273&categoryId[]=5288&categoryId[]=5298 |
Kids | 5313&5765 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=5313&categoryId[]=5765 |
Vintage | 5904&6077&6232&6416&6520&6572 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=5904&categoryId[]=6077&categoryId[]=6232&categoryId[]=6416&categoryId[]=6520&categoryId[]=6572 |
Preowned | 5854&5868&5882&5896&5900 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=5854&categoryId[]=5868&categoryId[]=5882&categoryId[]=5896&categoryId[]=5900 |
Clothing | 4071&4197&4261 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=4071&categoryId[]=4197&categoryId[]=4261 |
Home, Tech & Equipment | 4540&4601&4653&4880 | /api/v1/vendors/productTemplate?empty=true&categoryId[]=4540&categoryId[]=4601&categoryId[]=4653&categoryId[]=4880 |
Downloading product template with existing products examples
GET https://be-marketplace.ounass.com/api/v1/vendors/productTemplate HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: example.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/productTemplate' \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
For product update, instead of filling the template from scratch, you can download all your existing product information or per main category by using following API's. Note that the products will be listed in a single sheet named 'Update'.
Download Product Template Query Parameters
In addition to above examples, Product template can be downloaded with a combination of below query parameters.
While deciding which product is available for an update, check vendor product statuses.
Vendor Product Statuses
Status | Description |
---|---|
PASSIVE | Products are added to your catalog but not open to sale as Ounass General Price Currency is not selected as AED and Ounass General Retail Price is not filled and at least one website mentioned in Is Active (Ounass Website) field is not filled. |
WAITING | Product is newly created or Product Barcode, Retail Price or Is Active information update request is sent, your product will get the status as Waiting. During this status additional product update requests will fail. |
PROCESSING | Product Barcode/Is Active (Ounass Website) information is updated but waiting for the Retail Price update, you will get the status of Processing. Product can still be updated in this status and latest price update will be processed at 7:00 PM (GMT+4). Processing status will change only when the change is reflected (next day). |
READY | Product creation/update is finalized. Transfer can be created. Right now there is no stock received & inbound yet for product to go live. |
ACTIVE | Product is live on the website. |
CLOSED | This status will be displayed if a decision is made to take down the product, where the product will no longer be displayed on the website and cannot be updated. |
Upload Vendor Product Template
POST /api/v1/vendors/productTemplate HTTP/1.1
Content-Type: multipart/form-data
Accept: application/json
Authorization: Bearer {access-token}
Content-Type: multipart/form-data; boundary=---011000010111000001101001
Host: be-marketplace.ounass.com
Content-Length: 119
-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001--
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/productTemplate \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: multipart/form-data' \
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
--form file=string
This API is to upload the filled version of the product template to create the vendor products.
You can create / update your product via excel following the validations listed below.
Http Request:
POST /api/v1/vendors/productTemplate
Parameters:
Name | Type | Description |
---|---|---|
file | string(binary) | The filled version of the product template |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"sheet": "string",
"rowNumber": 0,
"vendorProduct": {
"id": 0,
"parentId": "string",
"barcode": "string",
"vendorProductNo": "string",
"color": "string",
"size": "string",
"status": "WAITING",
"product": {
"id": 0,
"name": "string",
"sku": "string",
"status": "FAILED",
"brand": {
"id": 0,
"name": "string"
},
"categories": [
{
"id": 0,
"name": "string",
"hierarchy": "string",
"parentId": 0,
"productCategory": {
"categoryId": 0,
"productId": 0,
"categoryWithAttributes": 0
}
}
],
"productAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
]
},
"vendorProductAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
],
"vendorProductItems": [
{
"id": 0,
"vendorProductId": 0,
"platformWebsiteId": 0,
"commission": 0,
"retailPrice": 0,
"basePrice": 0,
"currencyCode": "string",
"baseCurrencyCode": "string",
"promotionPrice": 0,
"promotionStart": "2019-08-24T14:15:22Z",
"promotionEnd": "2019-08-24T14:15:22Z",
"fulfilmentLocation": "string",
"status": "ACTIVE"
}
],
"vendorProductStock": [
{
"id": 0,
"stock": 0,
"vendorProductId": 0,
"vendorsWarehouseId": 0,
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse",
"platform": {
"id": 0,
"name": "string",
"code": "string",
"logo": "string"
}
}
}
}
]
}
}
]
}
Name | Type | Description |
---|---|---|
status | integer | http status code |
» result | [object] | array of result object per row in the uploaded excel |
»» sheet | string | Template’s sheet name (Main Category Label) |
»» rowNumber | integer | The number of processed row in the sheet |
»» vendorProduct | VendorProduct | vendor product object |
»» vendorProduct.id | integer | Created product’s vendor product id |
»» vendorProduct.parentId | integer | Vendor Product’s ParentID which will be the same around the same Vendor product number |
»» vendorProduct.barcode | string | Vendor product’s barcode |
»» vendorProduct.vendorProductNo | string | Vendor product number which the vendor filled |
»» vendorProduct.color | string | Color of the product |
»» vendorProduct.size | string | Size of the product |
»» vendorProduct.status | string | Status of the vendor product |
»» vendorProduct.product | Product | Vendor product’s catalog product id and its details. Product SKU is the Id which you will see in the Ounass website |
»» vendorProduct.product.name | string | Product name |
»» vendorProduct.product.sku | string | Product sku |
»» vendorProduct.product.brand | Brand | Product brand details |
»» vendorProduct.product.categories | [ProductCategory] | Product’s category information details |
»» vendorProduct.product.productAttributeValues | [AttributeValue] | Product’s attribute and its attribute values given by vendor |
»» vendorProduct.vendorProductAttributeValues | [AttributeValue] | VendorProduct attribute and attribute values if there is any requested update |
»» vendorProduct.vendorProductItems | [VendorProductItem] | Product’s region prices and their status details. You will get one vendor product item per each Ounass region |
»» vendorProduct.vendorProductStock | [VendorProductStock] | Product’s stock in Ounass Warehouse |
»» errors | [object] | Product creation/update error details if any. There can be general format errors as well as product based errors |
JSON - Product Create or Update
You can also create or update your products via sending your request in the form of JSON payload.
[POST] /api/v1/vendors/products
is used for uploading the template in order to create / update a product. If VPN, Color and Size values of a product exist, this product will be updated, otherwise a new product will be created.
You can create / update your product via JSON payload following the steps below;
- Check validations listed below
- Get product category hierarchy id
- Get list of category attributes
- Get brand name
- Construct payload and send product creation request
Validations:
There are many validations on API level. Any data against validations will receive error.
- Unique Barcode
Barcode should be unique for each product. - Style
VPN, color and size combination makes your product unique and creates the product’s unique SKU ID. The VPN should remain the same for products with same style but their color and size should be different. VPN, color and size will not be changeable after creation, so please send this field cautiously. If you would like to change these details in the future, you will have to create a new product that the system will register as new product. - Category And Brand Alignment Per Style
If products share the same style, their VPN’s should be the same. Hence products which has the same VPN should share the same category and brand as well. - Size Of The Fields
Fields with free-form values are Item Name (80 characters max), Description (250 characters max), VPN (30 characters max) and Barcode (25 characters max). - Request Size
You can send up to 1,000 products (rows) in a single request. - Mandatory fields
Mandatory columns indicated with asterix * need to be sent with their values to create a product. - Attribute Names
The attribute names should remain the same (case insensitive). If you are having difficulty that way please contact your Account Manager for mapping with your column names. - Alignment With Attribute Keys
All fields listed as Attribute Keys should have a value matching within GET /api/v1/categories/{categoryId}/attributes per
Get product category hierarchy id
GET /api/v1/categories?level=4 HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/categories?level=4' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/categories?level=4
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"id": 2839,
"node_path": "2799.2800.2807.2839",
"name": "Caps",
"label": null,
"level": 4,
"hierarchy": "Womens > Accessories > Hats > Caps",
"isSingleHierarchy": true,
"isLeaf": true
},
.
.
.
{
"id": 2840,
"node_path": "2799.2800.2807.2840",
"name": "Cold Weather",
"label": null,
"level": 4,
"hierarchy": "Womens > Accessories > Hats > Cold Weather",
"isSingleHierarchy": true,
"isLeaf": true
},
.
.
.
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [category] | array of product category objects |
» category.id | integer | category id |
» category.name | string | category name |
» category.hierarchy | string | category hierarchy |
Please note category.id down, as it will be used in product creation json body as categoryId and used to query category attributes lists.
Get list of category attributes
GET /api/v1/categories/1670/attributes?keyMappingType=PRODUCT_API HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/categories/1670/attributes?keyMappingType=PRODUCT_API' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Basically main category label of each product is the decisive of which information should be filled in order to create / update a product. Each main category label has different data fields mandatory / non mandatory to be captured.
Http Request:
GET /api/v1/categories/1670/attributes?keyMappingType=PRODUCT_API
Path Parameters:
Name | Type | Description |
---|---|---|
categoryId | integer | product category id |
The above command returns JSON structured like this:
{
"result": {
"attributes": [
{
"key": "description",
"type": "FREE_TEXT",
"mandatory": true,
},
{
"key": "Color",
"type": "OPTION",
"mandatory": true,
"options": [
{
"id": 1584,
"value": "Bright Red",
"languageCode": "en"
},
{
"id": 1585,
"value": "Bright Yellow",
"languageCode": "en"
},
.
.
.
]
},
{
"key": "countryOfOrigin",
"type": "OPTION",
"mandatory": false,
"options": [
{
"id": 1586,
"value": "United Arab Emirates",
"languageCode": "en"
},
{
"id": 1587,
"value": "United Kingdom",
"languageCode": "en"
},
.
.
.
]
},
.
.
.
}
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | object | category object |
» attributes | [object] | array of attributes |
»» key | string | attribute key |
»» type | string | attribute type, can be one of OPTION, FREE_TEXT or IMAGE |
»» mandatory | boolean | true if attribute is mandatory |
»» options | [object] | array of attribute option values, only available if the type is OPTION |
»»» id | integer | attribute option id |
»»» value | string | attribute option value |
»»» languageCode | string | language code for attribute option value |
How to use category attributes array
sample categoryAttributes array to be used in product creation json body
{
...
"categoryAttributes": [
{ "key": "description", "value": "my product description" },
{ "key": "color", "value": "Bright Red" },
{ "key": "countryOfOrigin", "value": "United Arab Emirates" },
...
],
}
attributes array contains list of all attributes of the given category, while constructing product creation json body you MUST include all mandatory attributes.
If an attribute type is OPTION, value of the attribute MUST be one from attribute.options array.
We will use the attribute.key and attribute.options for constructing categoryAttributes array of product creation json body.
Get brand name
GET /api/v1/vendors/brands HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/brands \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/brands
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"id": 5232,
"name": "Bobbi Brown",
"rmsCode": 9682
},
{
"id": 5236,
"name": "New Brand",
"rmsCode": 9678
},
.
.
.
],
}
Please note brand.name down that you want to use for your products, as it will be used in product creation json body as brand.
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [brand] | array of brands |
» brand.id | integer | Brand id |
» brand.name | string | Brand name |
Create Vendor Product
POST /api/v1/vendors/products HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 599
{"items":[{"vpn":"vpn1234","barcodeUpc":"bardode1234","brand":"New Brand","itemName":"mp product name","ounassGeneralPriceCurrency":0,"ounassGeneralRetailPrice":0,"ounassKuwaitRetailPriceKwd":0,"ounassOmanRetailPriceOmr":0,"ounassBahrainRetailPriceBhd":0,"ounassQatarRetailPriceQar":0,"ounassSaudiRetailPriceSar":0,"ounassUaeRetailPriceAed":0,"isActiveOunassAll":"ACTIVE","isActiveOunassKuwait":"ACTIVE","isActiveOunassOman":"ACTIVE","isActiveOunassBahrain":"ACTIVE","isActiveOunassQatar":"ACTIVE","isActiveOunassSaudi":"ACTIVE","isActiveOunassUae":"ACTIVE","categoryAttributes":[{"key":"description","value":"my product description"},{ "key": "color", "value": "Bright Red" }]}]}
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/products \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{"items":[{"vpn":"vpn1234","barcodeUpc":"barcode1234","brand":"New Brand","itemName":"mp product name","ounassGeneralPriceCurrency":0,"ounassGeneralRetailPrice":0,"ounassKuwaitRetailPriceKwd":0,"ounassOmanRetailPriceOmr":0,"ounassBahrainRetailPriceBhd":0,"ounassQatarRetailPriceQar":0,"ounassSaudiRetailPriceSar":0,"ounassUaeRetailPriceAed":0,"isActiveOunassAll":"ACTIVE","isActiveOunassKuwait":"ACTIVE","isActiveOunassOman":"ACTIVE","isActiveOunassBahrain":"ACTIVE","isActiveOunassQatar":"ACTIVE","isActiveOunassSaudi":"ACTIVE","isActiveOunassUae":"ACTIVE","categoryAttributes":[{"key":"description","value":"my product description"},{ "key": "color", "value": "Bright Red" }]}]}'
This API is to send product information to create the vendor products using JSON payloads.
Http Request:
POST /api/v1/vendors/products
Body Parameters:
Sample json body
{
"items": [
{
"vpn": "vpn1234",
"barcodeUpc": "bardode1234",
"brand": "New Brand",
"itemName": "mp product name",
"ounassGeneralPriceCurrency": "AED",
"ounassGeneralRetailPrice": 0,
"ounassKuwaitRetailPriceKwd": 0,
"ounassOmanRetailPriceOmr": 0,
"ounassBahrainRetailPriceBhd": 0,
"ounassQatarRetailPriceQar": 0,
"ounassSaudiRetailPriceSar": 0,
"ounassUaeRetailPriceAed": 0,
"isActiveOunassAll": "ACTIVE",
"isActiveOunassKuwait": "ACTIVE",
"isActiveOunassOman": "ACTIVE",
"isActiveOunassBahrain": "ACTIVE",
"isActiveOunassQatar": "ACTIVE",
"isActiveOunassSaudi": "ACTIVE",
"isActiveOunassUae": "ACTIVE",
"categoryAttributes": [
{ "key": "Category1/Category2/Category3/Category4", "value": "Category1 > Category 2 > Category3 > Category4" },
{ "key": "description", "value": "my product description" },
{ "key": "mainCategory", "value": "Category1" },
{ "key": "currentGroup", "value": "2" },
{ "key": "seasonPhase", "value": "Continuity - Continuity" },
{ "key": "key1", "value": "value1" },
{ "key": "key2", "value": "value2" }
]
}
]
}
For details of fields, please see Fields and Explanations
Response:
Response has same structure as product creation with excel
Fields and Explanations
Below you can find common fields that will be filled in order to successfully record your product information. To see each field necessary mandatory /non mandatory to create a product view different category fields.
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
*Vpn | String(20) | Y | Freetext | VPN corresponds to Vendor Product Number. It should refer to the style code of the product. Variant of a product that share the same style should have the same VPN number. The products that has the same VPN should also have the same Brand and Category Hierarchy (Category1/Category2/Category3/Category4). VPN number is critical to create a unique SKU ID in Ounass system along with Color and Size and therefore VPN, Color and Size is not subject to change. |
Barcode/Upc | String(20) | N | Freetext | Barcode of the product. It should be unique for each product.It is not mandatory except Beauty products. Also it can be updated after product is created. |
*Item Name | String(80) | Y | Freetext | Name of the product. Please note that it will not exactly be the same on the website. Selected color and size will be added on top of name filled on the template. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Brand | Dropdown | Y | Dropdown | Brand name of the product. Value should be selected among the brand list that is provided at specifications. It is a mandatory field.It can only be changed by Ounass Marketplace Team afterwards. |
*Category1/Category2/Category3/Category4 | Dropdown | Y | Dropdown | Category hierarchy of the product. Value should be selected among the Category1/Category2/Category3/Category4 list that is provided at specifications. If available options on specifications does not meet your requirement please contact with your account executive. Make sure it doesn't creates conflict with the gender of the product. Also make sure products with same VPN shares the same category hierarchy. It is a mandatory field. It can only be changed by Ounass Marketplace Team afterwards. |
*Color | Dropdown | Y | Dropdown | Color of the product. Value should be selected among the color list that is provided at specifications. It is a mandatory field. It can not be changed, any change in color will lead to a new product. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatory field. It can only be changed by Ounass Marketplace Team afterwards. |
*HTS Code | String | Y | Freetext | It is used for the export process for products. It is a mandatory field. Value should be selected among the HTS Code list that is provided at specifications |
*Current Group | Dropdown | Y | Dropdown | It is used for the categorization of the product according to its gender and type. It is a mandatory field. |
*Description | String(250) | Y | Freetext | You need to fill the description of the product for our content creators to generate rich content. It is a mandatory field. It can only be changed by Ounass Marketplace Team afterwards. |
*Gender | Dropdown | Y | Dropdown | Gender of the product. Value should be selected among the Gender list that is provided at specifications. It is a mandatory field.It can only be changed by Ounass Marketplace Team afterwards. |
*Main Category | Dropdown | Y | Dropdown | Main category of the product. Value should be selected among the Main Category list that is provided at specifications. It is a mandatory field.It can only be changed by Ounass Marketplace Team afterwards. |
*Season - Phase | Dropdown | Y | Dropdown | Season-Phase combination of the product. Value should be selected among the Season - Phase list that is provided at specifications. It is a mandatory field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size | Dropdown | Y | Dropdown | Size of the product. Value should be selected among the Size list that is provided at specifications. It is a mandatory field. It can not be changed, any change in size will lead to a new product. |
Ounass General Price Currency | Dropdown | N | Dropdown | If you are filling Ounass General Retail Price make sure you fill Ounass General Price Currency as AED otherwise keep empty. |
Ounass General Retail Price | Number | N | Freetext | If you want us to process price information, it is mandatory to fill Ounass General Retail Price (tax included) in AED.If you don't fill Ounass General Retail Price at all then the products will be recorded as "Passive" products into your catalog. If you only fill Ounass General Retail Price and leave country wise Retail Prices empty, system will calculate the other regions' prices in local currencies. If you fill country wise Retail Prices as well, country wise Retail Prices will override the converted local prices. |
Ounass UAE Retail Price (AED) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into UAE retail price. If you want to put a specific retail price (tax included) in AED for UAE then you can fill value for this field and then it will override the calculated UAE Retail Price in AED. |
Ounass SAUDI Retail Price (SAR) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into SAUDI retail price but if you want to put a specific retail price (tax included) in SAR for SAUDI then you can fill value for this field and then it will override the calculated SAUDI Retail Price in SAR. |
Ounass QATAR Retail Price (QAR) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into QATAR retail price but if you want to put a specific retail price (tax included) in QAR for QATAR then you can fill value for this field and then it will override the calculated QATAR Retail Price in QAR. |
Ounass BAHRAIN Retail Price (BHD) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into BAHRAIN retail price but if you want to put a specific retail price (tax included) in BHD for BAHRAIN then you can fill value for this field and then it will override the calculated BAHRAIN Retail Price in BHD. |
Ounass OMAN Retail Price (OMR) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into OMAN retail price but if you want to put a specific retail price (tax included) in OMR for OMAN then you can fill value for this field and then it will override the calculated OMAN Retail Price in OMR. |
Ounass KUWAIT Retail Price (KWD) | Number | N | Freetext | It is not mandatory to fill this field if you want us to convert Ounass General Retail Price into KUWAIT retail price but if you want to put a specific retail price (tax included) in KWD for KUWAIT then you can fill value for this field and then it will override the calculated KUWAIT Retail Price in KWD. |
Is Active (Ounass All) | Dropdown | N | Dropdown | Is Active (Ounass All) is the Ounass General status. Selecting ACTIVE means you want item to be available in all regions. If you are planning to apply same status in each website you can fill this field and leave rest of the Is Active (Ounass Website) fields unfilled. If this field is not filled and website specific statuses are also not filled as well we will record website specific statuses as passive. Products which doesn't have at least one website as "Active" will be recorded as "Passive" products into your catalog. To create a transfer right away fill at least one website as "Active"." |
Is Active (Ounass UAE) | Dropdown | N | Dropdown | This field is to set a status for UAE. Selecting ACTIVE means you want item to be available in UAE region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in UAE but if you fill value for this field differently it overrides the general status applied for this region. |
Is Active (Ounass SAUDI) | Dropdown | N | Dropdown | This field is to set a status for SAUDI. Selecting ACTIVE means you want item to be available in SAUDI region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in SAUDI but if you fill value for this field differently it overrides the general status applied for this region. |
Is Active (Ounass QATAR) | Dropdown | N | Dropdown | This field is to set a status for QATAR. Selecting ACTIVE means you want item to be available in QATAR region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in QATAR but if you fill value for this field differently it overrides the general status applied for this region. |
Is Active (Ounass BAHRAIN) | Dropdown | N | Dropdown | This field is to set a status for BAHRAIN. Selecting ACTIVE means you want item to be available in BAHRAIN region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in BAHRAIN but if you fill value for this field differently it overrides the general status applied for this region. |
Is Active (Ounass OMAN) | Dropdown | N | Dropdown | This field is to set a status for OMAN. Selecting ACTIVE means you want item to be available in OMAN region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in OMAN but if you fill value for this field differently it overrides the general status applied for this region. |
Is Active (Ounass KUWAIT) | Dropdown | N | Dropdown | This field is to set a status for KUWAIT. Selecting ACTIVE means you want item to be available in KUWAIT region.It is not mandatory to fill this field if you already filled Is Active (Ounass All) and want us to apply the same in KUWAIT but if you fill value for this field differently it overrides the general status applied for this region. |
Accessories
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Flammable Product | Dropdown | N | Dropdown | Value should be Yes if product is flammable and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Serial Number | Dropdown | N | Dropdown | Value should be Yes if product has a serial number and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | N | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Activewear
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Bags
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Serial Number | Dropdown | N | Dropdown | Value should be Yes if product has a serial number and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Beauty
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
*Beauty Sub Grouping | Dropdown | Y | Dropdown | It corresponds to the sub category of the product. Value should be selected among the Beauty Sub Grouping list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Flammable Product | Dropdown | N | Dropdown | Value should be Yes if product is flammable and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Ingredients | Dropdown | Y | Dropdown | You need to fill the ingredients of the product for our content creators to generate rich content. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Instructions for Use | Dropdown | Y | Dropdown | You need to fill the instructions for use of the product for our content creators to generate rich content. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Korean Beauty | Dropdown | Y | Dropdown | Value should be Yes if product origin is Korea and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Skin Concern | Dropdown | N | Dropdown | Corresponds to the skin problem product helps. Value should be selected among the Skin Concern list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Skin Type | Dropdown | N | Dropdown | Corresponds to the skin type product is used for. Value should be selected among the Skin Type list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Ingredient Specifications | Dropdown | N | Dropdown | Corresponds to the ingredient characteristic that would like to be highlighted. Value should be selected among the Ingredient Preferences list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Hex Color Code | String | N | Freetext | |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Casual & Contemporary
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Designer
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Footwear
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Home
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Flammable Product | Dropdown | N | Dropdown | Value should be Yes if product is flammable and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Jewellery
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Serial Number | Dropdown | N | Dropdown | Value should be Yes if product has a serial number and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Flammable Product | Dropdown | N | Dropdown | Value should be Yes if product is flammable and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Kids
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
*Kids Size | Dropdown | N | Dropdown | Kids size of the product. Value should be selected among the Kids Size list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Bucket | Dropdown | N | Dropdown | Age bucket of the kids product. Value should be selected among the Size Bucket list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Swimwear & Basics & Intimates
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Exclusive | Dropdown | Y | Dropdown | Fill exclusive if the product is exclusive to Ounass or exclusively produced. Value should be either Yes or No. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Vintage
Field | Type | Mandatory | Content | Description |
---|---|---|---|---|
Bracelet Type | Dropdown | N | Dropdown | |
Case material | Dropdown | N | Dropdown | |
Case Shape | Dropdown | N | Dropdown | |
Dial color | Dropdown | N | Dropdown | |
Earring Type | Dropdown | N | Dropdown | |
Exotic Skin | Dropdown | N | Dropdown | Material of the product. Value should be selected among the Exotic Skin list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Flammable Product | Dropdown | N | Dropdown | Value should be Yes if product is flammable and No otherwise. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Jewellery Stone Type | Dropdown | N | Dropdown | |
Jewellery Type | Dropdown | N | Dropdown | |
Ring Type | Dropdown | N | Dropdown | |
Size Classification | Dropdown | Y | Dropdown | Corresponds to the size type of the product. Value should be selected among the Size Classification list that is provided at specifications. It is not a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Size Scale Country | Dropdown | Y | Dropdown | Size scale of the product. Value should be selected among the Size Scale list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
*Country of Origin | Dropdown | Y | Dropdown | It corresponds to manufacturing country. Value should be selected among the Country of Origin list that is provided at specifications. It is a mandatoy field. It can only be changed by Ounass Marketplace Team afterwards. |
Stone Color | Dropdown | N | Dropdown | |
Strap Material | Dropdown | N | Dropdown | |
Watch Category | Dropdown | N | Dropdown | |
Watch Type | Dropdown | N | Dropdown | |
Water resistant | Dropdown | N | Dropdown |
Vendor Catalog
Service is used to extract vendor products recorded on the system. The method brings detailed information about the products of the vendor. Including vendor product statuses, attribute values, price, stock etc.
GET vendor products
GET /api/v1/vendors/products HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/products \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/products
Parameters:
Name | Type | Description |
---|---|---|
query | string | query text for search pages. You can search through VPN, Barcode, Item Name, SKU or Parent ID fields by adding space between keys. Bulk search is also available with unified string like VPN1 SKU2 ParentID3 "Item Name 4" "Barcode 05" |
vendorProductStatus | array[string] | vendor product's status (could be used like vendorProductStatus[]=ACTIVE&vendorProductStatus[]=READY) |
productId | array[integer] | Set this if you want to filter by specific product/products (could be used like productId[]=1&productId[]=2&productId[]=3) |
brandId | array[integer] | Set this if you want to filter by specific brandId/brandIds (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
categoryId | array[integer] | Set this if you want to filter by specific category/categories (could be used like categoryId[]=1&categoryId[]=2&categoryId[]=3) |
attribute | string | Set this if you want to filter by specific attribute/attributes (could be used like attribute[Color]=1&attribute[Color]=2&attribute[Size]=3) |
createdAtFrom | string(date-time) | createdAtFrom parameter in YYYY-MM-DDTHH:mm:ssZ format |
createdAtTo | string(date-time) | createdAtTo parameter in YYYY-MM-DDTHH:mm:ssZ format |
updatedAtFrom | string(date-time) | updatedAtFrom parameter in YYYY-MM-DDTHH:mm:ssZ format |
updatedAtTo | string(date-time) | updatedAtTo parameter in YYYY-MM-DDTHH:mm:ssZ format |
page | integer | page number. Default value is 1. |
count | integer | number of items per pages. Default value is 10. |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"page": 1,
"maxPage": 9,
"count": 10,
"totalCount": 87,
"data": [
{
"id": 0,
"parentId": "string",
"barcode": "string",
"vendorProductNo": "string",
"color": "string",
"size": "string",
"status": "WAITING",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"deletedAt": "2019-08-24T14:15:22Z",
"productId": 0,
"product": {
"id": 0,
"name": "string",
"sku": "string",
"status": "FAILED",
"brand": {
"id": 0,
"name": "string"
},
"categories": [
{
"id": 0,
"name": "string",
"hierarchy": "string",
"parentId": 0,
"productCategory": {
"categoryId": 0,
"productId": 0,
"categoryWithAttributes": 0
}
}
],
"productAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
]
},
"vendorProductAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
],
"vendorProductItems": [
{
"id": 0,
"vendorProductId": 0,
"platformWebsiteId": 0,
"commission": 0,
"retailPrice": 0,
"basePrice": 0,
"currencyCode": "string",
"baseCurrencyCode": "string",
"promotionPrice": 0,
"promotionStart": "2019-08-24T14:15:22Z",
"promotionEnd": "2019-08-24T14:15:22Z",
"fulfilmentLocation": "string",
"status": "ACTIVE"
}
],
"vendorProductStock": [
{
"id": 0,
"stock": 0,
"vendorProductId": 0,
"vendorsWarehouseId": 0,
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse",
"platform": {
"id": 0,
"name": "string",
"code": "string",
"logo": "string"
}
}
}
}
]
}
]
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | object | search result |
»page | integer | current page |
»maxPage | integer | last page available for data |
»count | integer | number of data in per page |
»totalCount | integer | total count of data |
» data | [VendorProduct] | array of vendor products matching search criteria |
»» vendorProduct.id | integer | vendor product id |
»» vendorProduct.parentId | integer | Vendor Product’s ParentID which will be the same around the same Vendor product number |
»» vendorProduct.barcode | string | Vendor product’s barcode |
»» vendorProduct.vendorProductNo | string | Vendor product number which the vendor filled |
»» vendorProduct.color | string | Color of the product |
»» vendorProduct.size | string | Size of the product |
»» vendorProduct.createdAt | string(date-time) | Creation date of the vendor product |
»» vendorProduct.updatedAt | string(date-time) | Last update date of the vendor product |
»» vendorProduct.deletedAt | string(date-time) | Deleted date of the vendor product |
»» vendorProduct.status | string | Status of the vendor product |
»» vendorProduct.product | Product | Vendor product’s catalog product id and its details. Product SKU is the Id which you will see in the Ounass website |
»» vendorProduct.product.name | string | Product name |
»» vendorProduct.product.sku | string | Product sku |
»» vendorProduct.product.brand | Brand | Product brand details |
»» vendorProduct.product.categories | [ProductCategory] | Product’s category information details |
»» vendorProduct.product.productAttributeValues | [AttributeValue] | Product’s attribute and its attribute values given by vendor |
»» vendorProduct.vendorProductAttributeValues | [AttributeValue] | VendorProduct attribute and attribute values if there is any requested update |
»» vendorProduct.vendorProductItems | [VendorProductItem] | Product’s region prices and their status details. You will get one vendor product item per each Ounass region |
»» vendorProduct.vendorProductStock | [VendorProductStock] | Product’s stock in Ounass Warehouse |
GET single vendor product info
GET /api/v1/vendors/products/0 HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/products/0 \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
You can get information upon a single product as well as getting all products with filters. This API lets you extract single product information ith vendor product ID.
Http Request:
GET /api/v1/vendors/products/{vendorProductId}
Parameters:
Name | Type | Description |
---|---|---|
vendorProductId | integer | Vendor’s product Id. It will be provided right after you upload the template. |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"id": 0,
"parentId": "string",
"barcode": "string",
"vendorProductNo": "string",
"color": "string",
"size": "string",
"status": "WAITING",
"product": {
"id": 0,
"name": "string",
"sku": "string",
"status": "FAILED",
"brand": {
"id": 0,
"name": "string"
},
"categories": [
{
"id": 0,
"name": "string",
"hierarchy": "string",
"parentId": 0,
"productCategory": {
"categoryId": 0,
"productId": 0,
"categoryWithAttributes": 0
}
}
],
"productAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
]
},
"vendorProductAttributeValues": [
{
"attributeId": 0,
"key": "string",
"value": "string",
"type": "OPTION",
"group": "PRODUCT_INFORMATION",
"mandatory": true
}
],
"vendorProductItems": [
{
"id": 0,
"vendorProductId": 0,
"platformWebsiteId": 0,
"commission": 0,
"retailPrice": 0,
"basePrice": 0,
"currencyCode": "string",
"baseCurrencyCode": "string",
"promotionPrice": 0,
"promotionStart": "2019-08-24T14:15:22Z",
"promotionEnd": "2019-08-24T14:15:22Z",
"fulfilmentLocation": "string",
"status": "ACTIVE"
}
],
"vendorProductStock": [
{
"id": 0,
"stock": 0,
"vendorProductId": 0,
"vendorsWarehouseId": 0,
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse",
"platform": {
"id": 0,
"name": "string",
"code": "string",
"logo": "string"
}
}
}
}
]
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | VendorProduct | vendor product object |
» vendorProduct.id | integer | vendor product id |
» vendorProduct.parentId | integer | Vendor Product’s ParentID which will be the same around the same Vendor product number |
» vendorProduct.barcode | string | Vendor product’s barcode |
» vendorProduct.vendorProductNo | string | Vendor product number which the vendor filled |
» vendorProduct.color | string | Color of the product |
» vendorProduct.size | string | Size of the product |
» vendorProduct.status | string | Status of the vendor product |
» vendorProduct.product | Product | Vendor product’s catalog product id and its details. Product SKU is the Id which you will see in the Ounass website |
» vendorProduct.product.name | string | Product name |
» vendorProduct.product.sku | string | Product sku |
» vendorProduct.product.brand | Brand | Product brand details |
» vendorProduct.product.categories | ProductCategory | Product’s category information details |
» vendorProduct.product.productAttributeValues | AttributeValue | Product’s attribute and its attribute values given by vendor |
» vendorProduct.vendorProductAttributeValues | AttributeValue | VendorProduct attribute and attribute values if there is any requested update |
» vendorProduct.vendorProductItems | VendorProductItem | Product’s region prices and their status details. You will get one vendor product item per each Ounass region |
» vendorProduct.vendorProductStock | VendorProductStock | Product’s stock in Ounass Warehouse |
Transfer Integration
Create or Update Transfer
Once the product is created in order to transfer any stock, create or update transfer service should be called with below listed fields. API decides if this transfer creation or update via Transfer No. If Transfer No. field value is null then a new transfer will be created with a new Transfer No. Sending transfer number that belongs to one of your current open transfers will delete and re-write that transfer with the items sent, leading transfer update.
Validations:
- Transfers can only be created with mature products, meaning that the product will need to include the Ounass General Retail Price, Currency, as well as at least 1 website set as ACTIVE. Products eligible for transfers will have the statuses of Ready (for products finalized and recorded) or Active (products which we have received the stock for). You can check product statuses via GetVendorProductInfo service
- You can only create a transfer for products existing in your catalogue
- The combination of VPN, Color and Size makes a product unique. Therefore, these fields should be sent in order to recognize the product for the transfer. Also warehouse information and sales quantity should be sent. Shortly mandatory columns are indicated with
*
need to be sent to create the product - The field names should remain the same (case insensitive). If you are having difficulty that way please contact your Account Manager for custom integration
- All fields listed as dropdown should have a value selected among the specifications. Warehouse should be up to specifications
- Transfers with “OPEN” status can only be updated
transferStatus | Description |
---|---|
PROCESSING | The initial status of a transfer where we process your request |
OPEN | displays when we finalize processing and the lifecycle of transfer begins, where you can request appointment, cancel a transfer or update a transfer |
WAITING_FOR_APPOINTMENT | will be the status of a transfer once an appointment request is sent to our appointment team who sets available time |
WAITING_FOR_PICKUP | (For vendors with Inco Term: Ex works only) will be the status of a transfer once a pick-up is requested.(not available for now) |
READY_TO_SHIP | will be the status once an appointment is reserved and and ID is received from appointment team |
SHIPPED | will be the status once you add shipment info related to the transfer |
RECEIVED | will be the status once shipment is received in Ounass Warehouse |
HANDLING | will be the status once quality control is finalized and the stock is reflected on our website. This is the only status that transfer and transfer item doesn’t share at the same time. While transfers keep being received the items inside the transfer will be come handling. |
CLOSED | will be the status following 10 days after receiving. |
Excel - Create or Update Transfer
Download a Transfer Template
Download an empty transfer template
GET /api/v1/vendors/transferTemplate HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/transferTemplate \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
In order to create a transfer, you should first download the transfer template to fill and upload. This API is to get transfer template.
Http Request:
GET /api/v1/vendors/transferTemplate
Query Parameters:
Name | Type | Description |
---|---|---|
transferNo | string | RMS Transfer No, It is required only updating a transfer |
transferType | TransferTemplateDownloadTypes | Transfer template download types |
Response:
Name | Type | Description |
---|---|---|
file | string(binary) | Download vendor transfer template |
The above command downloads a file
download transfer template with a specific type
Download the transfer template with READY and ACTIVE products
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/transferTemplate?transferType=CREATE \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
GET /api/v1/vendors/transferTemplate?transferType=CREATE HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
You can download your catalog template with different option, transferType
query parameter can be one of from table below.
transferType | Description |
---|---|
CREATE | To download the transfer template with all of your "READY" and "ACTIVE" products |
UPDATE | To download a transfer template filled with the products which are in a specific transfer for updating the transfer, only applicable when rmsTransferId is provided in transferNo parameter |
EMPTY | To download an empty transfer template |
FAILED | To download the errors for your previously failed transfer template upload |
The above command downloads a file
download transfer template for updating a specific transfer no
Download the transfer template of RMS Transfer No for updating the transfer
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/transferTemplate?transferType=UPDATE&transferNo={rmsTransferId}' \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
GET /api/v1/vendors/transferTemplate?transferType=UPDATE&transferNo={rmsTransferId} HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
In order to download a template for updating a specific transfer, rmsTransferId(RMS Transfer No) of the required transfer MUST be provided in transferNo
parameter and transferType
parameter MUST be UPDATE
.
The above command downloads a file
download errors of a previous uploaded transfer template
Download the errors for your previously failed transfer template upload
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/transferTemplate?transferType=FAILED \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
GET /api/v1/vendors/transferTemplate?transferType=FAILED HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
If a previous template upload fails with reason Transfer template upload failed due to invalid content
, the errors of the upload request can be downloaded by adding query parameter type=FAILED
and the errors can be found in Errors
column in downloaded template.
The above command downloads a file
Upload Transfer Template
POST /api/v1/vendors/transferTemplate HTTP/1.1
Content-Type: multipart/form-data
Accept: application/json
Authorization: Bearer {access-token}
Content-Type: multipart/form-data; boundary=---011000010111000001101001
Host: be-marketplace.ounass.com
Content-Length: 119
-----011000010111000001101001
Content-Disposition: form-data; name="file"
string
-----011000010111000001101001--
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/transferTemplate \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: multipart/form-data' \
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
--form file=string
Downloaded template will be filled according to the products and it should be sent to Ounass Marketplace via [POST] /api/v1/vendors/transferTemplate
API. The same template can be used to update a transfer. To update a transfer, Transfer No
field should be filled in the excel.
Following columns should be send with their values. VPN, Color and Size selected should be prerecorded with Create or Update Product service up front. Transfer No should only need to be sent if an update is requested.
For Transfer Creation > Mandatory To Fill Columns – Quantity, Warehouse Specification, Barcode OR Quantity, Warehouse Specification, VPN, Color, Size
For Transfer Update > Mandatory To Fill Columns – Transfer No, Quantity, Warehouse Specification, Barcode OR Transfer No, Quantity, Warehouse Specification, VPN, Color, Size
Columns | Description |
---|---|
VPN | VPN of the product |
Color | The color of the product |
Size | The size of the product |
Barcode | Barcode of the product |
*Quantity | The quantity of the products that you will send to the warehouse |
*Warehouse Location | The location of the warehouse where the products will be shipped. Please send a value matching with from Spec: *Warehouse Location column for every product. |
Transfer No | The transfer number which will be updated and will include uploaded products with referring quantities after a successful upload |
*: mandatory
Http Request:
POST /api/v1/vendors/transferTemplate
Body Parameters:
Name | Type | Description |
---|---|---|
file | string(binary) | transfer template file |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"sheet": "string",
"rowNumber": 0,
"transferItem": {
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
}
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [object] | array of result object per row in the uploaded excel |
» sheet | string | Template’s sheet name |
» rowNumber | integer | The number of processed row in the sheet |
» transferItem | TransferItem | transfer item object |
»» transferItem.id | integer | Created transfer item id |
»» transferItem.quantityRequested | integer | To Be Defined |
»» transferItem.quantityReceived | string | To Be Defined |
»» transferItem.reason | string | To Be Defined |
»» transferItem.vendorProductId | string | Associated vendor product id |
JSON - Create or Update Transfer
You can also create or update your transfer via sending your request in the form of JSON payload. Please see the API parameters and examples below for creating or updating the transfers via JSON.
Create Transfer with Json
Create a new transfer
POST /api/v1/vendors/transfers HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 159
{"items":[{"quantity":1,"vpn":"V2000013","color":"28642/01B PINK MULTI","size":"One Size","warehouseLocation":"UAE Warehouse"}]}
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{
"items": [
{
"quantity": 1,
"barcocde": "BRCD",
"vpn": "V2000013",
"color": "28642/01B PINK MULTI",
"size": "One Size",
"warehouseLocation": "UAE Warehouse"
}
]
}'
Http Request:
POST /api/v1/vendors/transfers
Name | Type | Description |
---|---|---|
items | [object] | Array of transfer creation objects |
» transferNo | string | transfer.rmsTransferId available in the transfer detail |
» barcode | string | Barcode of existing transfer item |
» quantity | integer | requested quantity of transfer item |
» vpn | string | VendorProductNumber of product |
» color | string | Color value of product |
» size | string | Size value of product |
» warehouseLocation | string | WarehouseLocation value of transfer item |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"rowNumber": 0,
"transferItem": {
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
}
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [object] | array of result object per row in the uploaded excel |
» rowNumber | integer | The number of processed row in the sheet |
» transferItem | TransferItem | transfer item object |
»» transferItem.id | integer | Created transfer item id |
»» transferItem.quantityRequested | integer | To Be Defined |
»» transferItem.quantityReceived | string | To Be Defined |
»» transferItem.reason | string | To Be Defined |
»» transferItem.vendorProductId | string | Associated vendor product id |
Update Transfer with Json
Update an existing transfer with transfer.rmsTransferId
POST /api/v1/vendors/transfers HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 159
{"items":[{"transferNo":<rmsTransferId>,"quantity":1,"vpn":"V2000012","color":"28642/01B PINK MULTI","size":"One Size","warehouseLocation":"UAE Warehouse"}]}
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{
"items": [
{
"transferNo": <transfer.rmsTransferId>,
"quantity": 1,
"vpn": "V2000012",
"color": "28642/01B PINK MULTI",
"size": "One Size",
"barcocde": "BRCD",
"warehouseLocation": "UAE Warehouse"
}
]
}'
Parameters and response structure of update transfer with json request is identical to transfer creation with json request but includes transfer.rmsTransferId for update in the request parameters
Get Transfers
Get list of all transfers
GET /api/v1/vendors/transfers HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Transfer List service will give you all your recently created transfers.
Http Request:
GET /api/v1/vendors/transfers
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"id": 0,
"fileName": "string",
"rmsTransferId": 0,
"rmsAppointmentId": 0,
"asnTrackingNumber": 0,
"status": "OPEN",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse"
}
},
"transferItems": [
{
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
]
}
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [transfer] | array of transfers matching search criteria |
» transfer.id | integer | Transfer id |
» transfer.fileName | string | Filename of the template created the transfer |
» transfer.rmsTransferId | string | RMS Transfer No |
» transfer.rmsAppointmentId | integer | Appointment id |
» transfer.asnTrackingNumber | integer | tracking number |
» transfer.status | TransferStatusEnum | Transfer status |
» transfer.createdAt | string(date-time) | Transfer creation date |
» transfer.updatedAt | string(date-time) | Last update date of the transfer |
» transfer.vendorsWarehouse | VendorWarehouse | Vendor Warehouse object |
» transfer.transferItems | [TransferItem] | Array of transfer items |
Get a Transfer's Detail
Get transfer details of transfer with transfer id
GET /api/v1/vendors/transfers/{transferId} HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers/{transferId} \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
Transfer Detail service will give you details of a specific transfer requested. You can call this service via transfer's unique number "TransferId" to receive below listed details of the transfer.
Http Request:
GET /api/v1/vendors/transfers/{transferId}
Path Parameters:
Name | Type | Description |
---|---|---|
transferId | integer | The Transfer’s unique ID |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"id": 0,
"fileName": "string",
"rmsTransferId": 0,
"rmsAppointmentId": 0,
"asnTrackingNumber": 0,
"status": "OPEN",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse"
}
},
"transferItems": [
{
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
],
"transferShipment": {
"id": 0,
"vendorAddress": {
"id": 0,
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [transfer] | array of transfers matching search criteria |
» transfer.id | integer | Transfer id |
» transfer.fileName | string | Filename of the template created the transfer |
» transfer.rmsTransferId | string | RMS Transfer No |
» transfer.rmsAppointmentId | integer | Appointment id |
» transfer.asnTrackingNumber | integer | tracking number |
» transfer.status | TransferStatusEnum | Transfer status |
» transfer.createdAt | string(date-time) | Transfer creation date |
» transfer.updatedAt | string(date-time) | Last update date of the transfer |
» transfer.vendorsWarehouse | VendorWarehouse | Vendor Warehouse object |
» transfer.transferItems | [TransferItem] | Array of transfer items |
» transfer.transferShipment | Shipment | Shipment details |
Delete a Transfer
Delete the transfer with transfer id
DELETE /api/v1/vendors/transfers/{transferId} HTTP/1.1
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request DELETE \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers/{transferId} \
--header 'Authorization: Bearer {access-token}'
You can only delete a transfer with “OPEN” status.
Http Request:
DELETE /api/v1/vendors/transfers/{transferId}
Path Parameters:
Name | Type | Description |
---|---|---|
transferId | integer | The Transfer’s unique ID |
The above command returns JSON structured like this:
{
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
Create Appointment for a Transfer
Create an appointment for the transfer with transfer id
POST /api/v1/vendors/transfers/{transferId}/appointment HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers/{transferId}/appointment \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Once we process your request of creating transfer, we will change your transfer status to “OPEN”. In transfers with open status you will be able to Create Appointment by using unique transfer No "TransferId". To receive status of related transfer you can use TransferDetail service or can receive success or fail as a response to your appointment request.
After appointment request is successful, logistic team will send email about scheduling time to vendor's primary contact email address. To change primary contact, please contact with your Account Executive
Http Request:
POST /api/v1/vendors/transfers/{transferId}/appointment
Path Parameters:
Name | Type | Description |
---|---|---|
transferId | integer | The Transfer’s unique ID |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"id": 0,
"fileName": "string",
"rmsTransferId": 0,
"rmsAppointmentId": 0,
"asnTrackingNumber": 0,
"status": "OPEN",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse"
}
},
"transferItems": [
{
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
]
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [transfer] | array of transfers matching search criteria |
» transfer.id | integer | Transfer id |
» transfer.fileName | string | Filename of the template created the transfer |
» transfer.rmsTransferId | string | RMS Transfer No |
» transfer.rmsAppointmentId | integer | Appointment id |
» transfer.asnTrackingNumber | integer | tracking number |
» transfer.status | TransferStatusEnum | Transfer status |
» transfer.createdAt | string(date-time) | Transfer creation date |
» transfer.updatedAt | string(date-time) | Last update date of the transfer |
» transfer.vendorsWarehouse | VendorWarehouse | Vendor Warehouse object |
» transfer.transferItems | [TransferItem] | Array of transfer items |
Appointment ID Acknowledgement
Appointment Id is used to communicate warehouse which stock is coming in. Once an Appointment ID is created on the system you will receive an email for scheduling. Appointment ID is created on the system couple of hours later appointment creation. To request appointment ID created on the system you can use Transfer Detail service.
Please check Transfer Detail Service to get appointment ID
Create/Update Shipment Info
After you receive an appointment ID and plan your shipment choice, we expect you to send the related shipment information so that in any problem we track your shipment from the information you transmit. To do so, you need to send your shipment information and we will be sharing this info with our logistic team. The moment you sent below listed information, your transfer status will change to “Shipped”. If you sent this information wrongly you can also send update. If you don’t send this info you transfer status will keep being Ready to ship and will become received once warehouse issues your stock.
f
For creation of a shipment information; [POST] /api/v1/vendors/transfers/{transferId}/shipment
shipment API is used, for updating [PUT] /api/v1/vendors/transfers/{transferId}/shipment/{shipmentId}
is used.
Create Shipment for a Transfer
Create a shipment for the transfer id with a new shipment address
POST /api/v1/vendors/transfers/{transferId}/shipment HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 234
{"vendorAddress":{"title":"string","address":"string","countryCode":"string","city":"string","postalCode":"string"},"type":"LOCAL","dropByVendor":true,"courierCompany":"string","trackingNumber":"string","contactPhone":"string"}
curl --request POST \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers/{transferId}/shipment \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{
"vendorAddress": {
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}'
The API is used for creating a shipment for a transfer. Please see the details below and for detailed parameter descriptions please check Shipment Schema
Http Request:
POST /api/v1/vendors/transfers/{transferId}/shipment
Path Parameters:
Name | Type | Description |
---|---|---|
transferId | path | integer |
Body Parameters:
Name | Type | Description |
---|---|---|
body | Shipment | none |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"id": 0,
"vendorAddress": {
"id": 0,
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | shipment | shipment details |
id | integer | none |
» shipment.vendorAddress | VendorAddress | none |
» shipment.type | ShipmentTypesEnum | If you are a local vendor (from UAE), you need to send Shipment Type as «LOCAL», if not «INTERNATIONAL» |
» shipment.dropByVendor | boolean | true if If you are a local who is planning to bring the products to our warehouse, false if you send the products with a courier company |
» shipment.courierCompany | string | Courier company which the shipment will be sent via |
» shipment.trackingNumber | string | Shipment tracking number that you should receive from courier company the moment you shipped the goods |
» shipment.contactPhone | string | A cellphone of a responsible to contact with upon any problem related with this shipment |
Update Shipment for a Transfer
Update the shipment: 12 of transfer id with shipment address: 123
PUT /api/v1/vendors/transfers/{transferId}/shipment/{shipmentId} HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 234
{"vendorAddress":{"id":123},"type":"LOCAL","dropByVendor":true,"courierCompany":"string","trackingNumber":"string","contactPhone":"string"}
curl --request PUT \
--url https://be-marketplace.ounass.com/api/v1/vendors/transfers/{transferID}/shipment/{shipmentId} \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{
"vendorAddress": {
"id": 123,
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}'
You can update an existing shipment address with shipmentId
and vendorAddressId
. Both shipmentId
and vendorAddressId
is available in response of shipment creation request or can be retrieved from Transfer Detail Api with the corresponding transferId
.
The "shipment ID" will be used in the URL of the API and the vendorAddressID will be used in "id" parameter while updating the shipment address.
Http Request:
PUT /api/v1/vendors/transfers/{transferId}/shipment/{shipmentId}
Path Parameters:
Name | Type | Description |
---|---|---|
transferId | path | integer |
shipmentId | path | integer |
Body Parameters:
Name | Type | Description |
---|---|---|
body | Shipment | Shipment update object |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"id": 0,
"vendorAddress": {
"id": 0,
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | shipment | shipment details |
id | integer | none |
» shipment.vendorAddress | VendorAddress | none |
» shipment.type | ShipmentTypesEnum | If you are a local vendor (from UAE), you need to send Shipment Type as «LOCAL», if not «INTERNATIONAL» |
» shipment.dropByVendor | boolean | true if If you are a local who is planning to bring the products to our warehouse, false if you send the products with a courier company |
» shipment.courierCompany | string | Courier company which the shipment will be sent via |
» shipment.trackingNumber | string | Shipment tracking number that you should receive from courier company the moment you shipped the goods |
» shipment.contactPhone | string | A cellphone of a responsible to contact with upon any problem related with this shipment |
Reporting Integration
Order Report
Order report gives info upon orders received between any time interval requested. You will need to select start date and end date with Vendor ID to receive order item based list.
download return and cancellation statistics
GET /api/v1/vendors/download/returnAndCancellation HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/download/returnAndCancellation \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/download/returnAndCancellation
Parameters:
Name | Type | Description |
---|---|---|
brandId | array[integer] | dynamic brandId (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
dateText | string | dynamic date parameter to filter items from start of, options:(DAY,WEEK,MONTH,YEAR) |
dateFrom | string(date) | from date parameter in YYYY/MM/DD format |
dateTo | string(date) | to date parameter in YYYY/MM/DD format |
Response:
Name | Type | Description |
---|---|---|
file | string(binary) | Download vendor transfer template |
Return and Cancellation Fields
Field Name | Description |
---|---|
Vendor ID | Vendor ID registered at Ounass |
Order ID | Unique Order ID registered at Ounass |
Order Creation Date | Order Creation date at Ounass |
Status Record Date | Latest status record date of the order |
Order Status | Order status |
Customer ID | Customer ID who places order |
Website | Website product is sold |
Shipment Country | Shipment country shipment will be delivered |
Shipment City | Shipment city shipment will be delivered |
SKU | SKU ID of related VPN+Color+Size |
Brand | Brand of related SKU |
VPN | VPN of related SKU |
Color | Color of related SKU |
Size | Size of related SKU |
Barcode | Barcode of related SKU |
Gender | Gender of related SKU |
Category | Category of related SKU |
Season | Season of related SKU |
Item Name | Item name of related SKU |
Pricing Type | Markdown or Full price differentiation |
Discount Amount | Discount Amount applied in the form of Coupon or Cart Rule |
Campaign Rule ID | Applied campaign ID (if any exists inside the order) |
Retail Price | Local retail price of the product sold |
Retail Price AED | Retail price of the product sold in AED |
Gross Revenue AED | Gross Revenue of the product sold in AED |
Currency Rate | Conversion rate between local currency & AED |
SKU Quantity | Sold quantity |
Reason | Return or Cancellation reason if exists |
get return and cancellation reports
GET /api/v1/vendors/reports/returnAndCancellation HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/reports/returnAndCancellation \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/reports/returnAndCancellation
Parameters:
Name | Type | Description |
---|---|---|
brandId | array[integer] | dynamic brandId (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
date | string | dynamic date parameter to filter items by start of this WEEK/MONTH/WEEK/DAY |
dateFrom | string(date) | from date parameter in YYYY/MM/DD format |
dateTo | string(date) | to date parameter in YYYY/MM/DD format |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"vendorId": 0,
"orderId": 0,
"orderCreationDate": "string",
"statusRecordDate": "string",
"orderStatus": "string",
"customerId": "string",
"website": "string",
"shipmentCountry": "string",
"shipmentCity": "string",
"sku": "string",
"brand": "string",
"vpn": "string",
"color": "string",
"size": "string",
"barcode": "string",
"gender": "string",
"category": "string",
"season": "string",
"itemName": "string",
"pricingType": "string",
"discountAmount": "string",
"retailPrice": 0,
"retailPriceAed": 0,
"grossRevenueAed": 0,
"currencyRate": 0,
"skuQuantity": 0,
"reason": "string"
}
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [object] | array of result object per row in the uploaded excel |
» vendorId | integer | Vendor ID registered at Ounass |
» orderId | integer | Unique Order ID registered at Ounass |
» orderCreationDate | string | Order Creation date at Ounass |
» statusRecordDate | string | Latest status record date of the order |
» orderStatus | string | Order status |
» customerId | string | Customer ID who places order |
» website | string | Website product is sold |
» shipmentCountry | string | Shipment country shipment will be delivered |
» shipmentCity | string | Shipment city shipment will be delivered |
» sku | string | SKU ID of related VPN+Color+Size |
» brand | string | Brand of related SKU |
» vpn | string | VPN of related SKU |
» color | string | Color of related SKU |
» size | string | Size of related SKU |
» barcode | string | Barcode of related SKU |
» gender | string | Gender of related SKU |
» category | string | Category of related SKU |
» season | string | Season of related SKU |
» itemName | string | Item name of related SKU |
» pricingType | string | Markdown or Full price differentiation |
» discountAmount | string | Discount Amount applied in the form of Coupon or Cart Rule |
» campaignRuleId | string | Applied campaign ID (if any exists inside the order) |
» retailPrice | integer | Local retail price of the product sold |
» retailPriceAed | integer | Retail price of the product sold in AED |
» grossRevenueAed | integer | Gross Revenue of the product sold in AED |
» currencyRate | integer | Conversion rate between local currency & AED |
» skuQuantity | integer | Sold quantity |
» reason | string | Return or Cancellation reason if exists |
Stock Report
Stock report gives info upon related stock. You can select Type and can receive regarding stock information or you can send VPN+Color+Size info to learn SOH.
get stock details report
GET /api/v1/vendors/reports/stockDetails?stockFilter=STOCK_ON_HAND HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/reports/stockDetails?stockFilter=STOCK_ON_HAND' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/reports/stockDetails
Parameters:
Name | Type | Description |
---|---|---|
stockFilter | StockFilterEnum | stock filter type to get stock details |
brandId | array[integer] | dynamic brandId (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
categoryId | array[integer] | dynamic category id (could be used like categoryId[]=1&categoryId[]=2&categoryId[]=3) |
attribute | string | Set this if you want to filter by specific attribute/attributes (could be used like attribute[Color]=1&attribute[Color]=2&attribute[Size]=3) |
query | string | query text for search pages |
page | integer | page number |
count | integer | number of items per pages |
Parameter | Value | Description |
---|---|---|
stockFilter | STOCK_ON_HAND | Stock On Hand is the real time total amount of stock sitting in the warehouse. |
stockFilter | RECEIVED_STOCK | Received Stock is the total amount of stock inbounded. |
stockFilter | OUT_OF_STOCK | Out Of Stock is the list of SKUs which have 0 sellable stock. |
stockFilter | SELLABLE_STOCK | Sellable Stock is the real time total amount of stock available to sell in our websites. |
stockFilter | IN_TRANSIT_STOCK | In Transit Stock is the real time total amount of stock that is in transit between Ounass locations. |
stockFilter | RTV_STOCK | RTV Stock is the real time total amount of stock that is marked to return to vendor. |
stockFilter | EXPECTED_STOCK | Expected Stock is the total amount of the stock ready to ship or shipped. |
stockFilter | RESERVED_STOCK | Reserved Stock is the real time total amount of stock reserved before going in transit between Ounass locations. |
stockFilter | DAMAGED_STOCK | Damaged Stock is the real time total amount of stock that is not sellable. |
stockFilter | CREATIVE_STOCK | Creative Stock is the real time total amount of stock sitting in Ounass Photo Shoot UAE/ Ounass Studio UAE, Ounass Editorial Store UAE, Ounass PR UAE, Ounass Product Sample and Ounass Studio Styling locations. |
stockFilter | PERSONAL_SHOPPER_STOCK | Personal Shopper Stock is the real time stock personal shoppers virtually hold for a potential VIP transaction. |
stockFilter | ACTIVATION_STOCK | Activation stock is the stock in Maison VIP process or any other pop up store. |
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"page": 1,
"maxPage": 9,
"count": 10,
"totalCount": 87,
"data": [
{
"vendorId": 0,
"vendorName": "string",
"itemName": "string",
"brandName": "string",
"sku": "string",
"barcode": "string",
"vpn": "string",
"color": "string",
"size": "string",
"gender": "string",
"season": "string",
"category": "string",
"quantity": "string",
"threshold": 0
}
]
}
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
» result | object | search result |
»»page | integer | current page |
»»maxPage | integer | last page available for data |
»»count | integer | number of data in per page |
»»totalCount | integer | total count of data |
»» data | [object] | The stock details for every product |
»»» vendorId | integer | Vendor Id |
»»» vendorName | string | Vendor name |
»»» itemName | string | Vendor product name |
»»» brandName | string | Vendor product brand name |
»»» sku | string | Vendor product sku |
»»» barcode | string | Vendor product barcode |
»»» vpn | string | Vendor product no |
»»» color | string | Vendor product color |
»»» size | string | Vendor product size |
»»» gender | string | Vendor product gender |
»»» season | string | Vendor product season |
»»» category | string | Vendor product quantity |
»»» quantity | string | (If you set the stockFilter query parameter to SELLABLE_STOCK, threshold field is contained in the response, if you use other stockFilter options, you cannot get the threshold field) |
Stock Details Fields
Field Name | Description |
---|---|
Type | You can get stock on hand, sellable stock, received stock in transit stock and Out of Stock items |
Vendor Id | Vendor ID registered at Ounass |
Vendor Name | Vendor Name registered at Ounass |
Item Name | Item name of related SkU |
Brand | Brand of related SKU |
SKU ID | SKU ID of related SKU |
Barcode | Barcode of related SKU |
VPN | VPN of related SKU |
Color | Color of related SKU |
Size | Size of related SKU |
Gender | Gender of related SKU |
Season | Season of related SKU |
Category | Category of related SKU |
Quantity | Quantity of related SKU |
Threshold | If the product has a safe stock |
Financial Report
The Financial Report API provides in-depth financial information on orders that have been completed or returned within the specified time period highlighted by the "Order Completion Date" column/field. If no time period parameter is provided, the default period is set to month-to-date from the date of request.
Download Financial Report
GET /api/v1/vendors/download/financialReport HTTP/1.1
Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/download/financialReport \
--header 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/download/financialReport
Parameters:
Name | Type | Description |
---|---|---|
brandId | array[integer] | dynamic brandId (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
dateFrom | string(date) | from date parameter in YYYY/MM/DD format to fiter order completion or return date |
dateTo | string(date) | to date parameter in YYYY/MM/DD format to fiter order completion or return date |
Response:
Name | Type | Description |
---|---|---|
file | string(binary) | Download vendor transfer template |
Financial Report Fields
Field Name | Description |
---|---|
Order ID | Unique Order ID registered at Ounass |
Order Completion Date | Date of sale or return of an SKU |
Order Creation Date | Order Creation date at Ounass |
Vendor ID | Vendor ID registered at Ounass |
Vendor Name | Vendor Name registered at Ounass |
Invoice Currency | Currency of vendor invoice |
Invoice Type | GROSS or NET invoice type |
Website | Website of sale or return |
Brand | Brand of sale or return |
SKU ID | SKU ID of sale or return |
Barcode | Barcode associated with the SKU ID of sale or return |
VPN | Vendor Product Number associated with the SKU ID of sale or return |
Color | Color associated with the SKU ID of sale or return |
Size | Size associated with the SKU ID of sale or return |
Item Description | Item Description associated with the SKU ID of sale or return |
Sales Quantity | Quantity associated with the SKU ID of sale or return (positive values are sale and negatives are return) |
Local Sales Currency | Currency of the website of sale or return |
Currency Conversion Rate (to AED) | Convertion rate from local sales currency to AED |
Currency Conversion Rate (to SAR) | Convertion rate from local sales currency to SAR |
Original Price Incl VAT (AED) | Original price in AED including VAT associated with the SKU ID |
Original Price Incl VAT (SAR) | Original price in SAR including VAT associated with the SKU ID |
Retail Price Incl VAT (AED) | Retail price in AED including VAT associated with the SKU ID |
Retail Price Incl VAT (SAR) | Retail price in SAR including VAT associated with the SKU ID |
Retail Price Exc VAT (AED) | Retail price in AED excluding VAT associated with the SKU ID |
Retail Price Exc VAT (SAR) | Retail price in SAR excluding VAT associated with the SKU ID |
Total Retail Price Exc VAT (AED) | Brand of sale or return |
Total Retail Price Exc VAT (SAR) | Brand of sale or return |
Discount Agreed % | Percentage of discount associated with the sale or return |
Vendor Net Sale (AED) | The net sale in AED with the discount excluded associated with the sale or return |
Vendor Net Sale (SAR) | The net sale in SAR with the discount excluded associated with the sale or return |
Commission % | Commision percentage agreed upon |
Earning (AED) | The net earning in AED excluding the commission associated with the sale or return |
Earning (SAR) | The net earning in SAR excluding the commission associated with the sale or return |
Get Financial Report
GET /api/v1/vendors/reports/financialReport HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url https://be-marketplace.ounass.com/api/v1/vendors/reports/financialReport \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/reports/financialReport
Parameters:
Name | Type | Description |
---|---|---|
brandId | array[integer] | dynamic brandId (could be used like brandId[]=1&brandId[]=2&brandId[]=3) |
dateFrom | string(date) | from date parameter in YYYY/MM/DD format to fiter order completion or return date |
dateTo | string(date) | to date parameter in YYYY/MM/DD format to fiter order completion or return date |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"orderId": "11223344",
"orderCompletionDate": "2024-07-22 14:26:44",
"orderCreationDate": "2024-07-22 14:10:05",
"vendorId": 11223344,
"vendorName": "Vendor Name",
"invoiceCurrency": "AED",
"invoiceType": "GROSS",
"website": "UAE",
"brand": "name",
"sku": 11223344,
"barcode": 11223344,
"vpn": "VPN123VPN",
"color": "Black",
"size": "XL",
"itemDescription": "Stylish cotton shirt with bold prints",
"salesQuantity": 1,
"localSalesCurrency": "AED",
"currencyConversionRateAED": 1.0,
"currencyConversionRateSAR": null,
"originalPriceInclVatAED": 52.0,
"originalPriceInclVatSAR": null,
"retailPriceInclVatAED": 81.0,
"retailPriceInclVatSAR": null,
"retailPriceExcVatAED": 77.14,
"retailPriceExcVatSAR": null,
"totalRetailPriceExcVatAed": 77.14,
"totalRetailPriceExcVatSar": null,
"discountAgreedPercentage": "-",
"vendorNetSaleAed": 77.14,
"vendorNetSaleSar": null,
"commissionPercentage": 45,
"earningAED": 70.72,
"earningSAR": null
}
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [object] | array of result object per row in the uploaded excel |
» orderId | string | Unique Order ID registered at Ounass |
» orderCompletionDate | string | Date of sale or return of an SKU |
» orderCreationDate | string | Order Creation date at Ounass |
» vendorId | integer | Vendor ID registered at Ounass |
» vendorName | string | Vendor Name registered at Ounass |
» invoiceCurrency | string | Currency of vendor invoice |
» invoiceType | string | GROSS or NET invoice type |
» website | string | Website of sale or return |
» brand | string | Brand of sale or return |
» sku | integer | SKU ID of sale or return |
» barcode | string | Barcode associated with the SKU ID of sale or return |
» vpn | string | Vendor Product Number associated with the SKU ID of sale or return |
» color | string | Color associated with the SKU ID of sale or return |
» size | string | Size associated with the SKU ID of sale or return |
» itemDescription | string | Item Description associated with the SKU ID of sale or return |
» salesQuantity | integer | Quantity associated with the SKU ID of sale or return (positive values are sale and negatives are return) |
» localSalesCurrency | string | Currency of the website of sale or return |
» currencyConversionRateAED | float | Conversion rate from local sales currency to AED |
» currencyConversionRateSAR | float | Conversion rate from local sales currency to SAR |
» originalPriceInclVatAED | float | Original price in AED including VAT associated with the SKU ID |
» originalPriceInclVatSAR | float | Original price in SAR including VAT associated with the SKU ID |
» retailPriceInclVatAED | float | Retail price in AED including VAT associated with the SKU ID |
» retailPriceInclVatSAR | float | Retail price in SAR including VAT associated with the SKU ID |
» retailPriceExcVatAED | float | Retail price in AED excluding VAT associated with the SKU ID |
» retailPriceExcVatSAR | float | Retail price in SAR excluding VAT associated with the SKU ID |
» totalRetailPriceExcVatAED | float | Total retail price in AED excluding VAT associated with the SKU ID |
» totalRetailPriceExcVatSAR | float | Total retail price in SAR excluding VAT associated with the SKU ID |
» discountAgreedPercentage | string | Percentage of discount associated with the sale or return |
» vendorNetSaleAED | float | The net sale in AED with the discount excluded associated with the sale or return |
» vendorNetSaleSAR | float | The net sale in SAR with the discount excluded associated with the sale or return |
» commissionPercentage | integer | Commission percentage agreed upon |
» earningAED | float | The net earning in AED excluding the commission associated with the sale or return |
» earningSAR | float | The net earning in SAR excluding the commission associated with the sale or return |
Key & Value Mapping
Key(s) and Values(s) of product/transfer excel or json requests are customizable.
The Key
corresponds to Column Header
, and the Value
corresponds to Cell Value
for apis accepting/returning excel file;
And for JSON based apis below, the Key
corresponds to Object key
and the Value
corresponds to Object Value
.
Key Mapping
Key mapping can be applied for each endpoint separately.
- PRODUCT_EXCEL
- TRANSFER_EXCEL
- PRODUCT_API
- TRANSFER_API
In order to apply a custom key mapping, follow the steps;
- get default mapping of a mapping type
- post your custom mapping data (consecutive request will override previous mapping)
- get and verify your mapping
- delete your custom mapping if you want to reset back to default mapping
Example use case for product excel
This use case will demonstrate a simple example of applying a custom mapping for PRODUCT_EXCEL
.
Getting default product excel keys
GET /api/v1/vendors/mapping?default=true&keyMappingType=PRODUCT_EXCEL HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?default=true&keyMappingType=PRODUCT_EXCEL' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
First, we need to query default mappings with getting default mapping api, default mapping will return all mappings for the type PRODUCT_EXCEL
The above command returns JSON structured like this:
{
"status": 200,
"result": [
.
.
.
{
"marketplaceField": "Color",
"vendorField": "Color"
},
{
"marketplaceField": "Item Name",
"vendorField": "Item Name"
},
.
.
.
]
}
The api will return all default field mappings for the type PRODUCT_EXCEL
. marketplaceField
states the original field, vendorField
is custom field value and by default it is same as the marketplaceField
.
Overriding product excel keys
POST /api/v1/vendors/mapping?keyMappingType=PRODUCT_EXCEL HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 64
{"pairs":[{"marketplaceField":"Color","vendorField":"Colour"},{"marketplaceField":"Item Name","vendorField":"Product Name"}]}
curl --request POST \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?keyMappingType=PRODUCT_EXCEL' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{"pairs":[{"marketplaceField":"Color","vendorField":"Colour"},{"marketplaceField":"Item Name","vendorField":"Product Name"}]}'
Body Parameter
{
"pairs": [
{
"marketplaceField": "Color",
"vendorField": "Colour"
},
{
"marketplaceField": "Item Name",
"vendorField": "Product Name"
}
]
}
And lets assume, we would like to use Colour
instead of Color
and Product Name
instead of Item Name
in our excel files while creating or updating products via excel
Upon receiving 200 ok, we can now use our custom headers in our excel files. And the key mapping will also be applied to download product excel api
The above command returns JSON structured like this:
{
"status": 200
}
Product template before applying key mapping:
Product template after applying key mapping:
This use case can be applied to all remaining key mapping types in order to customize their input and output.
Getting default mapping for a mapping type
GET /api/v1/vendors/mapping?default=true&keyMappingType={key-mapping-type} HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?default=true&keyMappingType={key-mapping-type}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/mapping?default=true&keyMappingType={key-mapping-type}
Query Parameters:
Name | In | Type | Description |
---|---|---|---|
keyMappingType | KeyMappingTypes | key mapping type parameter |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"marketplaceField": "Field-1",
"vendorField": "Custom Mapping for Field-1"
},
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [mapping] | array of key mapping object |
» mapping.marketplaceField | string | original field value |
» mapping.vendorField | string | custom field value |
Create/update mapping for a mapping type
POST /api/v1/vendors/mapping?keyMappingType={key-mapping-type} HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 64
{"pairs":[{"marketplaceField":"string","vendorField":"string"}]}
curl --request POST \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?keyMappingType={key-mapping-type}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{"pairs":[{"marketplaceField":"string","vendorField":"string"}]}'
Http Request:
POST /api/v1/vendors/mapping?keyMappingType={key-mapping-type}
Query Parameters:
Name | Type | Description |
---|---|---|
keyMappingType | KeyMappingTypes | key mapping type parameter |
Body Parameters:
Name | Type | Description |
---|---|---|
pairs | [mapping] | none |
» mapping.marketplaceField | string | field name on Ounass side |
» mapping.vendorField | string | field name on vendor side |
The above command returns JSON structured like this:
{
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
Getting mapping for a mapping type
GET /api/v1/vendors/mapping?keyMappingType={key-mapping-type} HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?keyMappingType={key-mapping-type}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/mapping?keyMappingType={key-mapping-type}
Query Parameters:
Name | In | Type | Description |
---|---|---|---|
keyMappingType | KeyMappingTypes | key mapping type parameter |
The above command returns JSON structured like this:
{
"status": 200,
"result": [
{
"marketplaceField": "Field-1",
"vendorField": "Custom Mapping for Field-1"
},
]
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [mapping] | array of key mapping object |
» mapping.marketplaceField | string | original field value |
» mapping.vendorField | string | custom field value |
Deleting custom mapping for a mapping type
DELETE /api/v1/vendors/mapping?keyMappingType={key-mapping-type} HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request DELETE \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/mapping?keyMappingType={key-mapping-type}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
DELETE /api/v1/vendors/mapping?keyMappingType={key-mapping-type}
Query Parameters:
Name | Type | Description |
---|---|---|
keyMappingType | KeyMappingTypes | key mapping type parameter |
The above command returns JSON structured like this:
{
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
Value Mapping
Value mapping is applied to all product and transfer endpoints by mapping attribute options to custom values
In order to apply a custom value mapping, follow the steps;
- get attribute options
- post your custom value mapping data (consecutive request will override previous mapping)
- get and verify your value mapping
- delete your custom value mapping if you want not to do any value mapping
Example
This use case will demonstrate a simple example of applying a custom value mapping.
Getting attribute options
GET /api/v1/categories/1670/attributes HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/categories/1670/attributes' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
First, we need to get category attributes and their options with get attribute options, it will return category attributes and its options
The above command returns JSON structured like this:
{
"status": 200,
"result": {
"attributes": [
{
"key": "description",
"type": "FREE_TEXT",
"mandatory": true,
},
{
"key": "Color",
"type": "OPTION",
"mandatory": true,
"options": [
{
"id": 1584,
"value": "Bright Red",
"languageCode": "en"
},
{
"id": 1585,
"value": "Bright Yellow",
"languageCode": "en"
},
.
.
.
]
},
{
"key": "countryOfOrigin",
"type": "OPTION",
"mandatory": false,
"options": [
{
"id": 1586,
"value": "United Arab Emirates",
"languageCode": "en"
},
{
"id": 1587,
"value": "United Kingdom",
"languageCode": "en"
},
.
.
.
]
},
.
.
.
}
}
}
Setting value mapping
POST /api/v1/vendors/valuemapping HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 64
{"pairs":[{"attributeOptionId":1584,"vendorValue":"Pink"},{"attributeOptionId":1586,"vendorValue":"UAE"}]}
curl --request POST \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/valuemapping' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{"pairs":[{"attributeOptionId":1584,"vendorValue":"Pink"},{"attributeOptionId":1586,"vendorValue":"UAE"}]}'
Body Parameter
{
"pairs": [
{
"attributeOptionId":1584,
"vendorValue":"Pink"
},
{
"attributeOptionId":1586,
"vendorValue":"UAE"
}
]
}
And lets assume, we would like to use Pink
instead of Bright Red
and UAE
instead of United Arab Emirates
in our excel files while creating or updating products via excel
Upon receiving 200 ok, we can now use our custom attribute option values in our excel files, and JSON bodies for product/transfer APIs. And the key mapping will also be applied to download product excel api.
The above command returns JSON structured like this:
{
"result": [
{
"vendorValue": "Pink",
"marketplaceValue": "Bright Red",
"attributeId": 5,
"attributeKey": "Color"
}
],
"status": 200
}
Create/update value mapping
POST /api/v1/vendors/valuemapping HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
Content-Length: 64
{"pairs":[{"attributeOptionId":integer,"vendorValue":"string"}]}
curl --request POST \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/valuemapping' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}' \
--header 'Content-Type: application/json' \
--data '{"pairs":[{"attributeOptionId":integer,"vendorValue":"string"}]}'
Http Request:
POST /api/v1/vendors/valuemapping
Body Parameters:
Name | Type | Description |
---|---|---|
pairs | [valuemappingrequest] | none |
» valuemappingrequest.attributeOptionId | integer | attribute option id |
» valuemappingrequest.vendorValue | string | attribute option value on vendor side |
The above command returns JSON structured like this:
{
"result": [
{
"vendorValue": "Pink",
"marketplaceValue": "Bright Red",
"attributeId": 5,
"attributeKey": "Color"
}
],
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [valuemappingresponse] | array of value mapping object |
» valuemappingresponse.vendorValue | string | custom attribute option value |
» valuemappingresponse.marketplaceValue | string | original attribute option value |
» valuemappingresponse.attributeId | string | attribute option's attribute id |
» valuemappingresponse.attributeKey | string | attribute option's attribute key |
Getting value mapping
GET /api/v1/vendors/valuemapping HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request GET \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/valuemapping' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
GET /api/v1/vendors/valuemapping
The above command returns JSON structured like this:
{
"result": [
{
"vendorValue": "Pink",
"marketplaceValue": "Bright Red",
"attributeId": 5,
"attributeKey": "Color"
}
],
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
result | [valuemappingresponse] | array of value mapping object |
» valuemappingresponse.vendorValue | string | custom attribute option value |
» valuemappingresponse.marketplaceValue | string | original attribute option value |
» valuemappingresponse.attributeId | string | attribute option's attribute id |
» valuemappingresponse.attributeKey | string | attribute option's attribute key |
Deleting value mapping
DELETE /api/v1/vendors/valuemapping HTTP/1.1
Accept: application/json
Authorization: Bearer {access-token}
Host: be-marketplace.ounass.com
curl --request DELETE \
--url 'https://be-marketplace.ounass.com/api/v1/vendors/valuemapping' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
Http Request:
DELETE /api/v1/vendors/valuemapping
The above command returns JSON structured like this:
{
"status": 200
}
Response:
Name | Type | Description |
---|---|---|
status | integer | http status code |
Environments
We have test and live environment for API requests. After making integration, initially datas are sent to test environments and once validated by Ounass then Access to production environment will be given.
API request limitation: For all requests you make to the Ounass Marketplace API’s, you can get a maximum of 3000 requests within 30 seconds to the same endpoint. When you try further, you will get an error with 03 status code that says “too many requests".
Test environment endpoint information: Example API requests should be sent to https://preprod-be-marketplace.ounass.com
Production environment endpoint information: Live request should be sent to https://be-marketplace.ounass.com
Troubleshoot
For technical support you can react us via [email protected] and our developers will return during 10:00-19:00 (GMT+4) on weekdays and weekends.
Schemas
Brand
Brand example
{
"id": 4475,
"name": "Spektre",
}
Name | Type | Description |
---|---|---|
id | integer | brand id |
name | string | brand name |
ProductCategory
Product Category example
{
"id": 378,
"name": "Sleeveless",
"hierarchy": "Women's Casual & Contemporary > Jumpsuit > Sleeveless"
}
Name | Type | Description |
---|---|---|
id | string | category id |
name | string | category name |
hierarchy | string | category hierarchy |
AttributeValue
Attribute value example
{
"key": "Color",
"mandatory": true,
"type": "OPTION",
"value": "Red"
}
Name | Type | Description |
---|---|---|
key | string | attribute key |
mandatory | string | is attribute mandatory |
type | string | OPTION or FREETEXT |
value | string | attribute value |
Product
Name | Type | Description |
---|---|---|
id | integer | Product id |
name | string | Product name |
sku | string | Product sku |
status | string | Product status |
brand | Brand | Product brand details |
product.categories | [ProductCategory] | Product’s category information details |
product.productAttributeValues | [AttributeValue] | Product’s attribute and its attribute values given by vendor |
VendorProduct
Name | Type | Description |
---|---|---|
id | integer | vendor product id |
parentId | integer | Vendor Product’s ParentID which will be the same around the same Vendor product number |
barcode | string | Vendor product’s barcode |
vendorProductNo | string | Vendor product number which the vendor filled |
color | string | Color of the product |
size | string | Size of the product |
status | string | Status of the vendor product |
product | Product | Vendor product’s catalog product id and its details. Product SKU is the Id which you will see in the Ounass website |
vendorProductAttributeValues | [AttributeValue] | Product attribute and attribute values if there is any requested update |
vendorProductItems | [VendorProductItem] | Product’s region prices and their status details. You will get one vendor product item per each Ounass region |
vendorProductStock | [object] | Product’s stock in Ounass Warehouse |
VendorProductItem
{
"id": 0,
"commission": 0,
"retailPrice": 0,
"basePrice": 0,
"currencyCode": "string",
"baseCurrencyCode": "string",
"promotionPrice": 0,
"promotionStart": "2019-08-24T14:15:22Z",
"promotionEnd": "2019-08-24T14:15:22Z",
"fulfilmentLocation": "string",
"status": "ACTIVE"
}
Name | Type | Description |
---|---|---|
id | integer | Vendor product item id |
commission | number(float) | To Be Defined |
retailPrice | number(float) | To Be Defined |
basePrice | number(float) | To Be Defined |
currencyCode | string | |
baseCurrencyCode | string | To Be Defined |
promotionPrice | number(float) | To Be Defined |
promotionStart | string(date-time) | To Be Defined |
promotionEnd | string(date-time) | To Be Defined |
fulfilmentLocation | string | To Be Defined |
status | string | To Be Defined |
TransferItem
{
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
Name | Type | Description |
---|---|---|
id | integer | Created transfer item id |
quantityRequested | integer | To Be Defined |
quantityReceived | string | To Be Defined |
reason | string | To Be Defined |
vendorProductId | string | Associated vendor product id |
Warehouse
{
"id": 0,
"name": "UAE Warehouse",
"currencyCode": "string",
"address": "string",
"label": "string",
}
Name | Type | Description |
---|---|---|
id | integer | Warehouse id |
name | WarehouseNameEnum | Warehouse name |
currencyCode | string | Warehouse currency code |
address | string | Warehouse address |
label | string | Warehouse label to be displayed |
Warehouse Name Enum
"UAE Warehouse"
Value |
---|
UAE Warehouse |
KSA Warehouse |
VendorWarehouse
{
"id": 0,
"invoiceModel": "NET",
"warehouse": {
"id": 0,
"name": "UAE Warehouse"
}
}
Name | Type | Description |
---|---|---|
id | integer | Vendor warehouse id |
invoiceModel | InvoiceModelEnum | Vendor warehouse invoice model |
warehouse | Warehouse | Warehouse object |
Transfer
{
"status": 200,
"result": [
{
"id": 0,
"fileName": "string",
"rmsTransferId": 0,
"rmsAppointmentId": 0,
"asnTrackingNumber": 0,
"status": "OPEN",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"vendorsWarehouse": {
"id": 0,
"warehouse": {
"id": 0,
"name": "UAE Warehouse"
}
},
"transferItems": [
{
"id": 0,
"quantityRequested": 0,
"quantityReceived": 0,
"quantityDiscrepancy": 0,
"reason": "string",
"vendorProductId": 0
}
]
}
]
}
Name | Type | Description |
---|---|---|
id | integer | Transfer id |
fileName | string | Filename of the template created the transfer |
rmsTransferId | string | RMS Transfer No |
rmsAppointmentId | integer | Appointment id |
asnTrackingNumber | integer | tracking number |
status | TransferStatusEnum | Transfer status |
createdAt | string(date-time) | Transfer creation date |
updatedAt | string(date-time) | Last update date of the transfer |
vendorsWarehouse | VendorWarehouse | Vendor Warehouse object |
transferItems | [TransferItem] | Array of transfer items |
VendorAddress
{
"id": 0,
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
}
Name | Type | Description |
---|---|---|
id | integer | Vendor address id |
title | string | Unique title of the address |
address | string | address string |
countryCode | string | country code |
city | string | city name |
postalCode | string | postal code of the city |
Shipment Types
"LOCAL"
If you are a local vendor (from UAE), you need to send Shipment Type as «LOCAL», if not «INTERNATIONAL»
Value |
---|
LOCAL |
INTERNATIONAL |
Shipment
{
"id": 0,
"vendorAddress": {
"id": 0,
"title": "string",
"address": "string",
"countryCode": "string",
"city": "string",
"postalCode": "string"
},
"type": "LOCAL",
"dropByVendor": true,
"courierCompany": "string",
"trackingNumber": "string",
"contactPhone": "string"
}
Name | Type | Description |
---|---|---|
id | integer | none |
vendorAddress | VendorAddress | none |
type | ShipmentTypesEnum | If you are a local vendor (from UAE), you need to send Shipment Type as «LOCAL», if not «INTERNATIONAL» |
dropByVendor | boolean | true if If you are a local who is planning to bring the products to our warehouse, false if you send the products with a courier company |
courierCompany | string | Courier company which the shipment will be sent via |
trackingNumber | string | Shipment tracking number that you should receive from courier company the moment you shipped the goods |
contactPhone | string | A cellphone of a responsible to contact with upon any problem related with this shipment |
Mapping
{
"status": 200,
"result": [
{
"marketplaceField": "Field-1",
"vendorField": "Custom Mapping for Field-1"
},
]
}
Name | Type | Description |
---|---|---|
marketplaceField | string | original field value |
vendorField | string | custom field value |
Value Mapping Request
{
"pairs": [
{
"attributeOptionId":1584,
"vendorValue":"Pink"
},
]
}
Name | Type | Description |
---|---|---|
attributeOptionId | integer | attribute option id |
vendorValue | string | attribute option value on vendor side |
Value Mapping Response
{
"result": [
{
"vendorValue": "Pink",
"marketplaceValue": "Bright Red",
"attributeId": 5,
"attributeKey": "Color"
}
],
"status": 200
}
Name | Type | Description |
---|---|---|
vendorValue | string | custom attribute option value |
marketplaceValue | string | original attribute option value |
attributeId | string | attribute option's attribute id |
attributeKey | string | attribute option's attribute key |