Offers
On this page
- Submits an offer package : from SubmitOfferPackage to POST /offer-integration-packages
- Retrieve offer package logs : from GetOfferPackageSubmissionResult to GET /offer-integration-packages/{packageId}
- Retrieves offers matching the query from the offer referential : from GetOfferListPaginated to GET /offers
- To get competing offers : from GetCompetingOffers to GET /competing-offers
- To get competing offers changes : from GetCompetingOfferChanges to GET /competing-offer-changes
Method :
SubmitOfferPackage
To import offers.
This operation makes it possible to import offers of seller within the Cdiscount marketplace starting from a file package.
It at the same time makes it possible to the seller to create offers or to modify /update offers already existing.
The seller proposes a list of offers to the importation. This method makes it possible to import offers massively.
Request URL
POST https://wsvc.cdiscount.com/MarketplaceAPIService.svc
Body
<Envelope xmlns:s="[...]">
<Body>
<SubmitOfferPackage xmlns="[...]">
<headerMessage xmlns:a="[...]" xmlns:i="[...]">
<Context>
<CatalogID>1<CatalogID>
<CustomerPoolID>1<CustomerPoolID>
<SiteID>100<SiteID>
<Context>
<Localization>
<Country>Fr<Country>
<Currency>Eur<Currency>
<DecimalPosition>2<DecimalPosition>
<Language>Fr<Language>
<Localization>
<Security>
<DomainRightsList i:nil="true" />
<IssuerID i:nil="true" />
<SessionID i:nil="true" />
<SubjectLocality i:nil="true" />
<TokenId>${#Project#token}<TokenId>
<UserName i:nil="true" />
<Security>
<Version>1.0<Version>
</headerMessage>
<offerPackageRequest xmlns:i="[...]">
<ZipFileFullPath>{{ZipFileFullPath}}</ZipFileFullPath>
</offerPackageRequest>
</SubmitOfferPackage>
<Body>
<Envelope>
Route :
POST /offer-integration-packages
Submits an zip package to update your offers (stock, prices, delivery costs…).
Example of zip package
- Full package
- Full package (With Sales Channel filter)
- Stock & Price (Only for Cdiscount sale channel)
More information here
Request URL
POST "/offer-integration-packages"
Sample Response
{{PackageId}}
An example of Offers.xml file content from the zip file
Submission of Full type package
<OfferPackage Name="Nom fichier offres" PurgeAndReplace="false" xmlns="clr-namespace:Cdiscount.Service.OfferIntegration.Pivot;assembly=Cdiscount.Service.OfferIntegration" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<OfferPackage.Offers>
<OfferCollection Capacity="1">
<Offer SellerProductId="{{SellerProductId}}" ProductEan="{{ProductEan}}" ProductCondition="{{ProductCondition}}" Price="{{Price}}" EcoPart="{{EcoPart}}" DeaTax="{{DeaTax}}" Vat="{{Vat}}" Stock="{{Stock}}" StrikedPrice="{{StrikedPrice}}" Comment="{{Comment}}" PreparationTime="{{PreparationTime}}">
<Offer.ShippingInformationList>
<ShippingInformationList Capacity="3">
<ShippingInformation AdditionalShippingCharges="{{AdditionalShippingCharges}}" DeliveryMode="{{DeliveryMode}}" ShippingCharges="1.0" />
<ShippingInformation AdditionalShippingCharges="{{AdditionalShippingCharges}}" DeliveryMode="{{DeliveryMode}}" ShippingCharges="2.0" />
<ShippingInformation AdditionalShippingCharges="{{AdditionalShippingCharges}}" DeliveryMode="{{DeliveryMode}}" ShippingCharges="3.0" />
</ShippingInformationList>
</Offer.ShippingInformationList>
</Offer>
</OfferCollection>
</OfferPackage.Offers>
</OfferPackage>
Submission of StockAndPrice type package
<OfferPackage Name="{{Name}}" PackageType="StockAndPrice">
<OfferPackage.Offers>
<OfferCollection Capacity="1">
<Offer SellerProductId="{{SellerProductId}}" ProductEan="{{ProductEan}}" Price="{{Price}}" Stock="{{Stock}}" />
</OfferCollection>
</OfferPackage.Offers>
</OfferPackage>
Submission of a package to a sales channel
<OfferPackage Name="{{Name}}" PackageType="Full">
<OfferPackage.Offers>
<OfferCollection Capacity="1">
<Offer ProductEan="{{ProductEan}}" SellerProductId="{{SellerProductId}}" ProductCondition="{{ProductCondition}}" Price="{{Price}}" EcoPart="{{EcoPart}}" Vat="{{Vat}}" DeaTax="{{DeaTax}}" Stock="{{Stock}}" PreparationTime="{{PreparationTime}}">
<Offer.ShippingInformationList>
<ShippingInformationList Capacity="3">
<ShippingInformation DeliveryMode="Standard" ShippingCharges="{{ShippingCharges}}" AdditionalShippingCharges="{{AdditionalShippingCharges}}"/>
<ShippingInformation DeliveryMode="Tracked" ShippingCharges="{{ShippingCharges}}" AdditionalShippingCharges="{{AdditionalShippingCharges}}"/>
<ShippingInformation DeliveryMode="Registered" ShippingCharges="{{ShippingCharges}}" AdditionalShippingCharges="{{AdditionalShippingCharges}}"/>
</ShippingInformationList>
</Offer.ShippingInformationList>
</Offer>
</OfferCollection>
</OfferPackage.Offers>
<OfferPackage.OfferPublicationList>
<OfferPublicationList Capacity="1">
<PublicationPool SalesChannelId="{{SalesChannelId}}"/>
<PublicationPool Id="{{Id}}"/>
</OfferPublicationList>
</OfferPackage.OfferPublicationList>
</OfferPackage>
Method :
GetOfferPackageSubmissionResult
To get the integration report of the offer package.
This operation makes it possible to know the progress report of the offers import.
The process of offer import generates for each offer in error a log of error.
Thus, if the offers import is in progress, it turns over the state of importation for already imported offers.
If the importation is finished, it turns over the state of importation for the whole of the offers proposed by the seller.
Request URL
POST https://wsvc.cdiscount.com/MarketplaceAPIService.svc
Body
<Envelope xmlns:s="[...]">
<Body>
<GetOfferPackageSubmissionResult xmlns="[...]">
<headerMessage xmlns:a="[...]" xmlns:i="[...]">
<Context>
<CatalogID>1<CatalogID>
<CustomerPoolID>1<CustomerPoolID>
<SiteID>100<SiteID>
<Context>
<Localization>
<Country>Fr<Country>
<Currency>Eur<Currency>
<DecimalPosition>2<DecimalPosition>
<Language>Fr<Language>
<Localization>
<Security>
<DomainRightsList i:nil="true" />
<IssuerID i:nil="true" />
<SessionID i:nil="true" />
<SubjectLocality i:nil="true" />
<TokenId>${#Project#token}<TokenId>
<UserName i:nil="true" />
<Security>
<Version>1.0<Version>
</headerMessage>
<offerPackageFilter xmlns:i="[...]">
<PackageID>{{PackageId}</PackageID>
</offerPackageFilter>
</GetOfferPackageSubmissionResult>
<Body>
<Envelope>
Route :
GET /offer-integration-packages
Retrieve offer package logs.
Request URL
GET "/offer-integration-packages/{{packageId}}"
Sample Response
{
"count_by_page": {{count_by_page}},
"integration_state": "{{integration_state}}",
"number_of_errors": {{number_of_errors}},
"package_id": {{package_id}},
"offer_log_paged_list": [
{
"property_list": [],
"log_date": "{{log_date}}",
"offer_integration_status": "{{offer_integration_status}}",
"product_ean": "{{product_ean}}",
"seller_product_id": "{{seller_product_id}}"
}
],
"page": 1,
"total_logs_count": {{total_logs_count}},
"seller_id": {{seller_id}}
}
Category | SOAP | REST |
---|---|---|
PackageId filter | offerPackageFilter > PackageId [unique] | packageId |
Method :
GetOfferListPaginated
Recovery of the offers page by page.
This operation seeks offers according to the following obligatory criteria:
- For the seller (the seller id is automatically defined when the seller authenticates and is not to be explicitly defined by the seller)
- For a given page
- For a distribution website
Optionally, it is possible to:
- To filter the offers in order to recover only the offers in the state “New (NewOffersOnly)” or “used / second hand (UsedOffersOnly)”
- To sort the offers (under subsection OfferListPaginatedMessage)
- To filter the offers with a given product list: only the products sold by the seller are used in this search
- To include obsolete offers (IncludeObsoleteOffers)
- To retreive only the offers changed between two dates (OfferLastUpdateDateFilter)
Request URL
POST https://wsvc.cdiscount.com/MarketplaceAPIService.svc
Body
<Envelope xmlns:s="[...]" xmlns:arr="[...]" >
<Body>
<GetOfferListPaginated xmlns="[...]">
<headerMessage xmlns:a="[...]" xmlns:i="[...]">
<Context>
<CatalogID>1<CatalogID>
<CustomerPoolID>1<CustomerPoolID>
<SiteID>100<SiteID>
<Context>
<Localization>
<Country>Fr<Country>
<Currency>Eur<Currency>
<DecimalPosition>2<DecimalPosition>
<Language>Fr<Language>
<Localization>
<Security>
<DomainRightsList i:nil="true" />
<IssuerID i:nil="true" />
<SessionID i:nil="true" />
<SubjectLocality i:nil="true" />
<TokenId>${#Project#token}<TokenId>
<UserName i:nil="true" />
<Security>
<Version>1.0<Version>
</headerMessage>
<offerFilter>
<IncludeObsoleteOffers>false</IncludeObsoleteOffers>
<OfferFilterCriterion>NewOffersOnly</OfferFilterCriterion>
<OfferLastUpdateDateFilter>
<00:00</BeginLastUpdateDate>
<30:00</EndLastUpdateDate>
</OfferLastUpdateDateFilter>
<OfferPoolId>1</OfferPoolId>
<OfferSortOrder>BySoldQuantityDescending</OfferSortOrder>
<PageNumber>1</PageNumber>
<SellerProductIdList>
<string>{{SellerProductIdList}}<string>
</SellerProductIdList>
</offerFilter>
</GetOfferListPaginated>
<Body>
<Envelope>
Route :
GET /offers
Retrieves offers matching the query from the offer referential.
Request URL
GET "/offers?salesChannelId={{salesChannelId}}"
Sample Response
{
"items": [
{
"sellerId": 1234,
"sellerExternalReference": "REF001",
"condition": "New",
"salesChannelId": "SCID",
"offerId": "1234_BIG3499550358636_6_SCIDFR",
"offerState": "Active",
"salesChannelAcceptanceStatus": "Accepted",
"product": {
"reference": "BIG3499550358636",
"gtin": "3499550358636"
},
"integrationPrice": {
"price": 51.6,
"currencyCode": "EUR",
"taxes": [
{
"value": 0,
"code": "deaTax",
"type": "Amount"
}
]
},
"isBestOffer": false,
"deliveryOffers": [
{
"preparationTime": 2,
"supplyMode": "Fulfillment",
"quantity": 6,
"isBestDelivery": true,
"deliveryModes": [
{
"code": "THD",
"legacyDeliveryModeId": "Tracked",
"minDeliveryTime": 2,
"maxDeliveryTime": 4,
"cost": 0,
"additionalCost": 0
}
]
}
],
"createdAt": "2023-04-26T01:28:53Z",
"updatedAt": "2023-05-31T02:37:26Z",
"conversionDate": "2023-05-31T02:37:25Z"
}
],
"itemsPerPage": 1
}
Method :
GetCompetingOffers
To get the competing offer changes.
This operation gets every changes on offers on the same products than yours since your last call.
Request URL
POST https://wsvc.cdiscount.com/MarketplaceAPIService.svc
Body
<Envelope xmlns:soapenv="[...]" xmlns:com="[...]" xmlns:cdis="[...]" xmlns:cdis1="[...]" xmlns:sys="[...]" xmlns:arr="[...]">
<Header/>
<Body>
<GetCompetingOffers>
<headerMessage xmlns:i="[...]">
<Context>
<CatalogID>1<CatalogID>
<CustomerPoolID>1<CustomerPoolID>
<SiteID>100<SiteID>
<Context>
<Localization>
<Country>Fr<Country>
<Currency>Eur<Currency>
<DecimalPosition>2<DecimalPosition>
<Language>Fr<Language>
<Localization>
<Security>
<DomainRightsList i:nil="true"/>
<IssuerID i:nil="true"/>
<SessionID i:nil="true"/>
<SubjectLocality i:nil="true"/>
<TokenId>${#Project#token}<TokenId>
<UserName i:nil="true"/>
<Security>
<Version>1.0<Version>
<headerMessage>
<request>
<ProductIds>
<string>{{ProductIds}}<string>
<ProductIds>
<request>
<GetCompetingOffers>
<Body>
<Envelope>
Route :
GET /competing-offers
To get competing offers.
This operation gets, for a specified list of products, competing offers with price informations.
Important : This endpoint is subject to a specific opening.
The seller must request access by opening an API ticket from his seller zone.
Request URL
GET "/competing-offers?products={{products}}"
Sample Response
{
"count": 1,
"items": [
{
"last_change_date": null,
"product": {
"product_id": "{{product_id}}",
"product_ean": null,
"title": null,
"brand_name": null
},
"offers": null
}
]
}
Category | SOAP | REST |
---|---|---|
Products Filter | ProductIds > string [multi] | products & separated values |
Method :
GetCompetingOffersChanges
To get the competing offer changes.
This operation gets every changes on offers on the same products than yours since your last call.
Request URL
POST https://wsvc.cdiscount.com/MarketplaceAPIService.svc
Body
<Envelope xmlns:arr="[...]" xmlns:s="[...]">
<Header/>
<Body>
<GetCompetingOfferChanges xmlns="[...]">
<headerMessage xmlns:a="[...]" xmlns:i="[...]">
<Context>
<CatalogID>1<CatalogID>
<CustomerPoolID>1<CustomerPoolID>
<SiteID>100<SiteID>
<Context>
<Localization>
<Country>Fr<Country>
<Currency>Eur<Currency>
<DecimalPosition>2<DecimalPosition>
<Language>Fr<Language>
<Localization>
<Security>
<DomainRightsList i:nil="true" />
<IssuerID i:nil="true" />
<SessionID i:nil="true" />
<SubjectLocality i:nil="true" />
<TokenId>${#Project#token}<TokenId>
<UserName i:nil="true" />
<Security>
<Version>1.0<Version>
</headerMessage>
</GetCompetingOfferChanges>
<Body>
<Envelope>
Route : GET /competing-offer-changes
To get competing offers.
This operation makes it possible to obtain competing offers as soon as a price change has taken place.
Important : This endpoint is subject to a specific opening.
The seller must request access by opening an API ticket from his seller zone.
Request URL
GET "/competing-offer-changes"
Sample Response
{
"product": {
"product_id": "484464",
"product_ean": "4897017950551",
"title": "tiroir DVD gate vert Wii",
"brand_name": "TALISMON"
},
"offers": [
{
"is_available": true,
"is_best_offer": true,
"is_with_commercial_operation": true,
"product_condition_id": 6,
"product_state_id": 6,
"price": 27.5,
"seller": {
"name": "Myboutik",
"rating": 4.8,
"rating_count": 23,
"sales_count": 1230,
"shipment_country": "FR"
},
"shipping": {
"shipping_price": 2.3
}
}
],
"last_change_date": "2021-03-31T10:00:00Z"
}