Offers

On this page

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

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}}
}
CategorySOAPREST
PackageId filterofferPackageFilter > 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
    }
  ]
}
CategorySOAPREST
Products FilterProductIds > 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"
}
Scroll to Top