Functional documentation
Offer feature V2
How to manage your catalog
API product Feature
The offer feature allows you to manage your catalog. You will be able to :
- SUBMIT OFFERS with json (Not available for Cdiscount)
- SUBMIT OFFERS with xml
- GET OFFERS
What is an offer ?
In order to understand what “offer” means for Octopia you can read the help center documentation. You will find :
- The difference between product and offer
- How to create and update offers via API
- How to delete an offer (not with API)
- How to apply commercial operations (only Cdiscount)
Some definition
Glossary :
Offer: The offer data concern:
- Stock
- Price
- Taxes
- Product condition
- Delivery information (Mode ; Cost ; Time)
- Status (Active ; Inactive)
An offer is active if and only if ALL the above information are submitted by the seller.
Sales channel : Octopia allows to sell and manage offers on several marketplaces.
Currently, on the offer feature, there are differences of working between Cdiscount and other marketplaces of octopia.
SalesChannelid : This id is used to identify the targeted sales channel. It allows the seller to publish offer information on a specific sales channel.
OfferPoolId : this is a legacy id for the sales channel. It will be deprecated with the SOAP API. Octopia advise to use the sales channel id.
Submit offers : The seller can publish and/or modify the offer information through API’s.
Get offers : The seller can retrieve all the offer information from its catalog
Get offers
How to Get Offers information ?
There are currently two endpoints to get the offer information of your catalogue.
- POST Offer Search (will be deprecated)
- GET Offers (new endpoint)
POST offer search
It is a POST endpoint for legacy technical reason but it should not be.
GET Offers
This is the new endpoint for Octopia and Cdiscount
Here is an overview of the attributes available in the Get Offers :
Name | Label (Post Offer Search) will be Deprecated | Label Get Offers | Description | Format | Example |
---|---|---|---|---|---|
Seller identifier | sellerId | Seller unique identifier | Integer | 175 | |
Seller External Reference | seller_product_id | sellerExternalReference | Sellers reference indicated by the seller during the integration of an offer | String | ref_of_an_offer |
Condition of a product | product_condition_id | condition | The condition of the product is | Enum:1: Like New2: Very Good State4: Average State6: New7: Refurbished Like New8: Refurbished Very Good State9: Refurbished Correct State | 6 |
Sales channel identifier | sales_channel_id | salesChannelId | Sales channel identifier. The list of sales channel id is evolving with new sales channel. | String + CapitalFour first letters of the marketplace + Two first letter of the country code | MARJMA |
Offer identifier | offer_id | offerId | Combination of seller identifier, product, offer sub-status, and offer sales channel | String:sellerId_productReference_condition_salesChannelId | 175_PLA4008789702944_6_MARJMA |
Offer state | offer_state | offerState | Status of the offerThe “Offer Status” can have two main states: Active: The offer can be available to the marketplace Inactive: The offer cannot be available to the marketplaceActive offer:In order to activate an offer, it must meet all the following conditions:All the mandatory offer information are correctly filledThe seller is currently active on Octopia and has an active subscription on the marketplaceThe offer has a Best Logistic OfferDeactivated offer:An offer can be deactivated:Depending on the seller status: Suspended seller, forbidden to sell or in holiday modeSubscription to the marketplace suspended or terminatedDepending on the logistical information:Offer with stock zero | String:ActiveIncative | Active |
Sales channel acceptance status(ONLY AVAILABLE FOR OCTOPIA SALES CHANNEL) | – | salesChannelAcceptanceStatus | Acceptance status on the marketplaceThe “Acceptance Status” represents the decision of the marketplace to publish or not a product on its marketplace.The possible acceptance statuses are :”Pending”: A “pending” product is not published on the marketplace. It can be accepted or rejected once the marketplace has processed it.”Accepted”: An “Accepted” product can be published on the marketplace when its offer is active.”Rejected”: A “Rejected” product cannot be published on the marketplace. | String | Accepted |
Product | product_ean | “product”: {“gtin”: ” … “, “reference”: ” … “} | Product identifierGTIN/EAN code of the productReference : Octopia or Cdiscount reference generated automaticaly at the creation of the product | product: Objectgtin: Integerreference: String | 4008789702944PLA4008789702944 |
Prices | international_integration_priceinternational_facial_price | “integrationPrice”: {} …”facialPrice”: { } | integrationPrice: Is the price submitted by the seller at the integration of an offer.facialPrice: Is the price displayed on the marketplace. The difference between the integrationPrice and the facialPrice could be explained by:an automatic price alignement (only on cdiscount)the conversion into the currency of the marketpacePrice mark-up on replication mode | Object | |
price_value | price | Value of the integrationPrice and/or facialPrice | Number | 99.99 | |
Currency | currency | currencyCode | Code of the currecy in ISO 4217 format | String | EUR |
Origin price (or stricked price) | origin_price | originPrice | Value of the stricked price to be displayed on the marketplace | Number | 119.99 |
Taxes | “taxes”: [ { “value”: 0.0, “category”: “DeaTax”, “type”: “Amount” }, | “taxes”: [ { “value”: 0.0, “code”: “deaTax”, “type”: “Amount” }, | Table of different tax valuesEach objects contain:the value of the taxThe code of the taxThe type: amount or rate | taxes: Object value: Number code: String from enum type: String from enum | “taxes”: [ { “value”: 0.0, “code”: “deaTax”, “type”: “Amount” }, |
Delivery information | “shipping_information_list”: [ { shipping_charges additional_shipping_charges, min_lead_time max_lead_time delivery_mode_id code }best_shipping_charges | “deliveryOffers”: [ { supplyMode quantity isBestDelivery”deliveryModes”: [ { code legacyDeliveryModeId minDeliveryTime maxDeliveryTime cost additionalCost } ] }, | deliveryOffers: Object with a table of different delivery offers based on the supplyMode. The table can have Seller AND Fulfillment if the seller have an available stock on each supply mode. supplyMode: The two main supply modes are Seller or Fulfillment.Seller: The seller is responsible of the delivery of its productsFulfillment: The seller has a Fulfillment subscription and stockquantity: Stock available for each supplymodepreparationTime: Only for the Seller supply mode. Represent the time needed by the seller before shipmentisBestDelivery:true: If the best logistic offer is better on the concerned supplymodefalse: If it is not the best logistic offerdeliveryModes: Object with a table of the different delivery modes available for this offercode: Enum of the code of delivery modes available on the concerned marketplacelegacyDeliveryModeId: Enum of the Cdiscount delivery modes minDeliveryTime: Minimum calculated time before delivery to the customer maxDeliveryTime: Minimum calculated time before delivery to the customer cost: Delivery cost to be paid by the customer for this offer additionalCost: Additional delivery cost to be paid by the customer for each additional product on this offer | deliveryOffers: Object supplyMode: String quantity: Number isBestDelivery: StringdeliveryModes: Object code: String legacyDeliveryModeId: String minDeliveryTime: Integer maxDeliveryTime: Integer cost: Number additionalCost: Number | “deliveryOffers”: [ { “supplyMode”: “Fulfillment”, “quantity”: 25, “isBestDelivery”: true, “deliveryModes”: [ { “code”: “THD”, “legacyDeliveryModeId”: “None”, “minDeliveryTime”: 4, “maxDeliveryTime”: 8, “cost”: 3.4, “additionalCost”: 2.2 } ] }, { “preparationTime”: 2, “supplyMode”: “Seller”, “quantity”: 32, “isBestDelivery”: false, “deliveryModes”: [ { “code”: “THD”, “legacyDeliveryModeId”: “Tracked”, “minDeliveryTime”: 6, “maxDeliveryTime”: 10, “cost”: 0, “additionalCost”: 0 } ] } ], |
Best Offer(ONLY AVAILABLE FOR OCTOPIA SALES CHANNEL) | N/A | isBestOffer “bestOffer”: { currencyCode price deliveryCost }, | isBestOffer:true: If the seller has the best offer on this offerfalse: If it is not the best offerbestOffer: Object with the information of the best offer (best or not) If it is the best offer, the information will be the same as the price. If it is not, it gives the price and best logistic offer of the competitor Best offer. currencyCode: Code of the currecy in ISO 4217 format price: Value of the best offer deliveryCost: Best logistic offer associated to the best offer | isBestOffer: String bestOffer: Object currencyCode: String price: Number deliveryCost: Number | “isBestOffer”: false, “bestOffer”: { “currencyCode”: “EUR”, “price”: 32, “deliveryCost”: 0 }, |
Creation date | creation_date | createdAt | Date of the creation of the offer | Date | 2022-07-13T15:41:38.587Z |
Update date | last_update_date | updatedAt | Last modification of the offer | Date | 2023-05-10T16:52:04.984Z |
Conversion date | conversionDate | Date of the conversion of the price for the sales channel where the cirrecy is different than the integration currency. | Date | 2023-05-10T16:52:04.984Z |