Article API - Apigee (1.3.0)
Download OpenAPI specification:Download
Article API documentation
Authentication & Authorization
You will need to be identified before calling any endpoints.
In order to be recognized and authorized to access our Sale API, we put in place 2 mechanisms:
- Authentication mechanism is done with a client id dedicated to you.
Remember that the client id provided should be shared with care.
The client id must be inserted in the header of the request in the appropriate field - Authorization mechanism is done by a well-known authorization flow for REST Web API: Basic auth flow.
Get article data
Get articles data filtered by parameters
Authorizations:
query Parameters
| pageNumber | integer <int32> (PageNumberParam) [ 1 .. 1000 ] Default: 1 Example: pageNumber=2 The page number |
| pageSize | integer <int32> (PageSizeParam) [ 1 .. 1000 ] Default: 1000 Example: pageSize=2 The page size |
| lastModifiedDateFrom | string <date-time> (lastModifiedDateFromParam) Example: lastModifiedDateFrom=2024-05-02T10:00:00 Date from for last update date of data |
| lastModifiedDateTo | string <date-time> (lastModifiedDateToParam) Example: lastModifiedDateTo=2024-05-02T10:00:00 Date to for last update date of data |
| externalRef | string (ExternalRefQueryParam) <= 255 characters Example: externalRef=1000045 Article reference code of the source |
| source | string (SourceQueryParam) <= 255 characters Example: source=GENES Source application and instance |
| codes | Array of integers <int64> (CodeListQueryParameter) [ 1 .. 100 ] items [ items <int64 > ] Example: codes=123,234 List of article code |
| ean | Array of strings (EanListQueryParameter) [ 1 .. 100 ] items [ items <= 255 characters ] Example: ean=32974327943,789456 List of ean |
| withExternalRef | boolean (WithExternalRefQueryParam) Default: false Example: withExternalRef=true Return the external reference if set to true |
| type | string (TypeQueryParam) [ 1 .. 255 ] characters Example: type=PRODUCT The type of the article |
| category | string (CategoryQueryParam) [ 1 .. 255 ] characters Example: category=TYRE The category of the article |
| withAbbreviations | boolean (WithAbbreviationsQueryParam) Default: false Example: withAbbreviations=true Return two additional fields with brand abbreviation and model abbreviation. |
Responses
Response samples
- 200
- 400
- 500
{- "pagination": {
- "next": "/article-erm/v1/articles?pageNumber=3&pageSize=50",
- "previous": "/article-erm/v1/articles?pageNumber=1&pageSize=50",
- "pageTotal": "3",
- "totalElements": "125"
}, - "articles": [
- {
- "code": "1000001",
- "name": "MICHELIN CROSSCLIMATE 2 205/55 R16 94 V",
- "brandAbbreviation": "MICH",
- "modelAbbreviation": "X LINE ENERGY D",
- "brand": "Michelin",
- "ean": "32974327943",
- "type": "PRODUCT",
- "category": "TYRE",
- "clearClassCode": "LTA11124",
- "lastModifiedDate": "2024-12-27T12:23:23",
- "references": [
- {
- "source": "ES_EQUITY",
- "externalRef": "12345",
- "countryCode": "ES",
- "lastModifiedDate": "2024-12-27T12:23:23"
}
]
}
]
}Create an article or batch create articles
Create a single article using JSON payload or create multiple articles using CSV file upload.
Authorizations:
Request Body schema: application/json
| active | boolean (ArticleActive) Default: true Indicates if the article is active |
| name required | string (ArticleName) <= 255 characters Article name |
| ean | string (ArticleEan) <= 255 characters Article ean |
| brand | string (ArticleBrand) <= 255 characters Article brand |
| model | string (ArticleModel) <= 255 characters Model of the article |
| type | string (ArticleTypeEnum) Enum: "PRODUCT" "PACKAGE" "SERVICE" Type of the article |
| category | string (ArticleCategoryEnum) Enum: "TYRE" "OIL" "WIPER" "PADS" "DISK" "VALVE" "TPMS" Category of the article |
| clearClassCode | string (ArticleClearClassCode) <= 255 characters Article clear class code |
| manufacturerCode | string (TyreManufacturerCode) <= 255 characters Unique code of a manufacturer |
| manufacturerArticleCode | string (TyreManufacturerArticleCode) <= 255 characters Unique code of an article into the manufacturer articles referential |
Responses
Request samples
- Payload
Create an article with the given informations
{- "active": "true",
- "name": "Michelin CrossClimate 2 205/55R16 91V",
- "ean": "3528702522950",
- "brand": "MICHELIN",
- "model": "CROSS CONTROL S2",
- "type": "PRODUCT",
- "category": "TYRE",
- "clearClassCode": "LTA11124",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295"
}Response samples
- 201
- 400
- 401
- 500
{- "code": "100001",
- "active": true,
- "name": "Michelin CrossClimate 2 205/55R16 91V",
- "ean": "3528702522950",
- "brand": "MICHELIN",
- "model": "CROSS CONTROL S2",
- "type": "PRODUCT",
- "category": "TYRE",
- "clearClassCode": "LTA11124",
- "lastModifiedDate": "2025-07-10T14:30:00Z",
- "lastModifiedBy": "user1",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295"
}Create article data
Create article
Authorizations:
Request Body schema: application/json
| externalRef required | string (ExternalRef) <= 255 characters Article reference code of the source |
| name | string (ArticleName) <= 255 characters Article name |
| brand | string (ArticleBrand) <= 255 characters Article brand |
| ean | string (ArticleEan) <= 255 characters Article ean |
| clearClassCode | string (ArticleClearClassCode) <= 255 characters Article clear class code |
| manufacturerCode | string (TyreManufacturerCode) <= 255 characters Unique code of a manufacturer |
| manufacturerArticleCode | string (TyreManufacturerArticleCode) <= 255 characters Unique code of an article into the manufacturer articles referential |
Responses
Request samples
- Payload
Create an article with the given informations
{- "externalRef": "12345",
- "name": "Michelin CrossClimate 2 205/55R16 91V",
- "ean": "3528702522950",
- "brand": "MICHELIN",
- "clearClassCode": "LTA11124",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295"
}Response samples
- 200
- 400
- 500
{- "code": "1000293"
}Quick search articles data
Quick search articles data (name and code) filtered by parameters
Authorizations:
query Parameters
| value required | string (ValueQueryParam) [ 1 .. 255 ] characters Example: value=MIC%20205%20CROSS The value contained in the article's name |
| category required | string (CategoryQueryParam) [ 1 .. 255 ] characters Example: category=TYRE The category of the article |
| type required | string (TypeQueryParam) [ 1 .. 255 ] characters Example: type=PRODUCT The type of the article |
| limit | integer <int32> (LimitQueryParam) [ 1 .. 1000 ] Default: 100 Example: limit=2 The limit size |
Responses
Response samples
- 200
- 400
- 401
- 500
[- {
- "code": 100001,
- "name": "MICHELIN CROSSCLIMATE 2 205/55 R16 91W"
}, - {
- "code": 100002,
- "name": "MICHELIN CROSSCLIMATE 2 225/55 R17 91W"
}
]Get an article
Retrieve an article by its code
Authorizations:
path Parameters
| articleCode required | integer <int64> (ArticleCodeParam) Example: 100000 Targeted article code |
query Parameters
| withAbbreviations | boolean (WithAbbreviationsQueryParam) Default: false Example: withAbbreviations=true Return two additional fields with brand abbreviation and model abbreviation. |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "code": "1000001",
- "active": true,
- "name": "MICHELIN X LINE ENERGY D 315/80 R22.5 156L",
- "brandAbbreviation": "MICH",
- "modelAbbreviation": "X LINE ENERGY D",
- "brand": "MICHELIN",
- "ean": "3528701653389",
- "type": "PRODUCT",
- "category": "TYRE",
- "clearClassCode": "LTA11124",
- "lastModifiedDate": "2024-12-27:12:23:23",
- "lastModifiedBy": "user1"
}Quick search tyre dimensions data
Quick search tyre dimensions data
Authorizations:
query Parameters
| value required | string (SearchTyreDimensionQueryParam) <= 255 characters Example: value=315 80 22 The tyre dimension to search for |
| limit | integer <int32> (LimitQueryParam) [ 1 .. 1000 ] Default: 100 Example: limit=2 The limit size |
Responses
Response samples
- 200
- 400
- 401
- 500
[- {
- "dimension": "315/80 R22.5"
}, - {
- "dimension": "315/90 R22.5"
}
]Get tyres data
Get tyres data, filtered by parameters, including or excluding extensions.
Authorizations:
query Parameters
| pageNumber | integer <int32> (PageNumberParam) [ 1 .. 1000 ] Default: 1 Example: pageNumber=2 The page number |
| pageSize | integer <int32> (PageSizeParam) [ 1 .. 1000 ] Default: 1000 Example: pageSize=2 The page size |
| lastModifiedDateFrom | string <date-time> (lastModifiedDateFromParam) Example: lastModifiedDateFrom=2024-05-02T10:00:00 Date from for last update date of data |
| lastModifiedDateTo | string <date-time> (lastModifiedDateToParam) Example: lastModifiedDateTo=2024-05-02T10:00:00 Date to for last update date of data |
| code | integer (CodeQueryParameter) Example: code=123456 Article code |
| withExternalRef | boolean (WithExternalRefQueryParam) Default: false Example: withExternalRef=true Return the external reference if set to true |
| name | string (ArticleNameMax100) <= 100 characters Example: name=MICHELIN CROSSCLIMATE 2 205/55 R16 94 V shearch the tyre by the name |
Responses
Response samples
- 200
- 400
- 401
- 500
{- "pagination": {
- "next": "/article-erm/v1/tyres?pageNumber=3&pageSize=50",
- "previous": "/article-erm/v1/tyres?pageNumber=1&pageSize=50",
- "pageTotal": "3",
- "totalElements": "125"
}, - "tyres": [
- {
- "code": "1000001",
- "name": "MICHELIN CROSSCLIMATE 2 205/55 R16 94 V",
- "brandAbbreviation": "MICH",
- "modelAbbreviation": "X LINE ENERGY D",
- "brand": "Michelin",
- "ean": "32974327943",
- "clearClassCode": "LTA11124",
- "lastModifiedDate": "2024-12-27T12:23:23",
- "lastModifiedBy": "user1",
- "references": [
- {
- "source": "ES_EQUITY",
- "externalRef": "12345",
- "countryCode": "ES",
- "lastModifiedDate": "2024-12-27T12:23:23"
}
], - "tyreAttributes": {
- "season": "ALL_SEASON",
- "mudSnow": true,
- "threePeakMountainSnowFlake": true,
- "weight": 8.5,
- "widthMm": 205,
- "widthInch": null,
- "aspectRatio": 55,
- "construction1": "R",
- "construction2": null,
- "rimDiameterInch": 16,
- "originalTreadDepth": 7,
- "loadIndex1": 94,
- "loadIndex2": null,
- "loadIndex3": null,
- "loadIndex4": null,
- "speedIndex1": "V",
- "speedIndex2": null,
- "runFlat": false,
- "tubeCharacteristic": "TL",
- "noisePerformance": 69,
- "noiseClassType": "B",
- "rollingResistance": "B",
- "wetGrip": "A",
}
}
]
}Create a Tyre
Create a Tyre with deduplication on ean and updating the oldest one
Authorizations:
Request Body schema: application/json
| active required | boolean (ArticleActive) Default: true Indicates if the article is active |
| name required | string (ArticleName) <= 255 characters Article name |
| ean required | string (ArticleEan) <= 255 characters Article ean |
| manufacturerCode | string (TyreManufacturerCode) <= 255 characters Unique code of a manufacturer |
| manufacturerArticleCode | string (TyreManufacturerArticleCode) <= 255 characters Unique code of an article into the manufacturer articles referential |
| brand | string (ArticleBrand) <= 255 characters Article brand |
| model | string (ArticleModel) <= 255 characters Model of the article |
| clearClassCode | string (ArticleClearClassCode) <= 255 characters Article clear class code |
object (tyreAttributesDTO) |
Responses
Request samples
- Payload
Create a single tyre with all its attributes
{- "active": true,
- "name": "MICHELIN CROSSCLIMATE 2 205/55 R16 94 V",
- "brand": "Michelin",
- "model": "CROSS CONTROL S2",
- "ean": "32974327943",
- "clearClassCode": "LTA11124",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295",
- "tyreAttributes": {
- "season": "ALL_SEASON",
- "mudSnow": true,
- "threePeakMountainSnowFlake": true,
- "weight": 8.5,
- "widthMm": 205,
- "widthInch": null,
- "aspectRatio": 55,
- "construction1": "R",
- "construction2": null,
- "rimDiameterInch": 16,
- "originalTreadDepth": 7,
- "loadIndex1": 94,
- "loadIndex2": null,
- "loadIndex3": null,
- "loadIndex4": null,
- "speedIndex1": "V",
- "speedIndex2": null,
- "runFlat": false,
- "tubeCharacteristic": "TL",
- "noisePerformance": 69,
- "noiseClassType": "B",
- "rollingResistance": "B",
- "wetGrip": "A",
}
}Response samples
- 201
- 400
- 401
- 500
{- "code": "1000293"
}Upsert a Tyre
Upsert a Tyre from an external source
Authorizations:
Request Body schema: application/json
| externalRef required | string (ExternalRef) <= 255 characters Article reference code of the source |
| name required | string (ArticleName) <= 255 characters Article name |
| ean required | string (ArticleEan) <= 255 characters Article ean |
| manufacturerCode | string (TyreManufacturerCode) <= 255 characters Unique code of a manufacturer |
| manufacturerArticleCode | string (TyreManufacturerArticleCode) <= 255 characters Unique code of an article into the manufacturer articles referential |
| brand | string (ArticleBrand) <= 255 characters Article brand |
| model | string (ArticleModel) <= 255 characters Model of the article |
| clearClassCode | string (ArticleClearClassCode) <= 255 characters Article clear class code |
object (tyreAttributesDTO) |
Responses
Request samples
- Payload
Create a single tyre with all its attributes
{- "externalRef": "8976479",
- "name": "MICHELIN CROSSCLIMATE 2 205/55 R16 94 V",
- "brand": "Michelin",
- "model": "CROSS CONTROL S2",
- "ean": "32974327943",
- "clearClassCode": "LTA11124",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295",
- "tyreAttributes": {
- "season": "ALL_SEASON",
- "mudSnow": true,
- "threePeakMountainSnowFlake": true,
- "weight": 8.5,
- "widthMm": 205,
- "widthInch": null,
- "aspectRatio": 55,
- "construction1": "R",
- "construction2": null,
- "rimDiameterInch": 16,
- "originalTreadDepth": 7,
- "loadIndex1": 94,
- "loadIndex2": null,
- "loadIndex3": null,
- "loadIndex4": null,
- "speedIndex1": "V",
- "speedIndex2": null,
- "runFlat": false,
- "tubeCharacteristic": "TL",
- "noisePerformance": 69,
- "noiseClassType": "B",
- "rollingResistance": "B",
- "wetGrip": "A",
}
}Response samples
- 201
- 400
- 401
- 422
- 500
{- "code": "1000293"
}add article to catalog
Add a new article to an article's catalog from an external source
Authorizations:
Request Body schema: application/json
| importExternalRef | string (ImportExternalRef) <= 255 characters The reference of import for the line |
| active required | boolean (ArticleCatalogActive) Default: true A flag indicating the operational status of the article within the catalog . hen set to true, the article is considered current, available for sale, visible in listings, and usable in new transactions. When set to false, the article is typically retired, discontinued, or temporarily suspended, and should not be used in new orders |
| phaseOutDate | string <date> (PhaseOutDate) Date from which the article does not appear anymore in the manufacturer's catalog, must have the format yyyy-MM-dd |
| articleExternalRef required | string (ExternalRef) <= 255 characters Article reference code of the source |
| articleName | string (ArticleName) <= 255 characters Article name |
| currency | string (Currency) Enum: "EUR" "GBP" "CHF" "SEK" "DKK" "CZK" "HUF" "PLN" "RON" "BGN" The currency for the article, based on the ISO 4217 standard |
| isInherited | boolean (IsInherited) Default: true Indicates if the article is inherited from a master catalog or not |
Array of objects (PriceList) Create or update the record based on grossPriceValidDateFrom |
Responses
Request samples
- Payload
body for the request
{- "importExternalRef": "1092729_12000010122025",
- "active": true,
- "phaseOutDate": "2025-01-01",
- "articleExternalRef": "ART001",
- "articleName": "Filtre à huile Bosch",
- "currency": "EUR",
- "isInherited": true,
- "prices": [
- {
- "grossPrice": 119.9,
- "grossPriceValidDateFrom": "2025-01-01"
}, - {
- "grossPrice": 125.5,
- "grossPriceValidDateFrom": "2025-04-01"
}
]
}Response samples
- 201
- 400
- 401
- 422
- 500
{- "active": true,
- "phaseOutDate": "2025-01-01",
- "articleCode": "1000017",
- "articleName": "Filtre à huile Bosch",
- "currency": "EUR",
- "isInherited": true,
- "prices": [
- {
- "grossPrice": 119.9,
- "grossPriceValidDateFrom": "2025-01-01"
}, - {
- "grossPrice": 125.5,
- "grossPriceValidDateFrom": "2025-04-01"
}
]
}add article to catalog
Add a new article to an article's catalog from article code
Authorizations:
Request Body schema: application/json
| active required | boolean (ArticleCatalogActive) Default: true A flag indicating the operational status of the article within the catalog . hen set to true, the article is considered current, available for sale, visible in listings, and usable in new transactions. When set to false, the article is typically retired, discontinued, or temporarily suspended, and should not be used in new orders |
| phaseOutDate | string <date> (PhaseOutDate) Date from which the article does not appear anymore in the manufacturer's catalog, must have the format yyyy-MM-dd |
| articleCode required | integer <int64> (ArticleCode) Article identifier |
| articleName | string (ArticleName) <= 255 characters Article name |
| currency | string (Currency) Enum: "EUR" "GBP" "CHF" "SEK" "DKK" "CZK" "HUF" "PLN" "RON" "BGN" The currency for the article, based on the ISO 4217 standard |
| isInherited | boolean (IsInherited) Default: true Indicates if the article is inherited from a master catalog or not |
Array of objects (PriceList) Create or update the record based on grossPriceValidDateFrom |
Responses
Request samples
- Payload
body for the request
{- "active": true,
- "phaseOutDate": "2025-01-01",
- "articleCode": "100736",
- "articleName": "Filtre à huile Bosch",
- "currency": "EUR",
- "isInherited": true,
- "prices": [
- {
- "grossPrice": 119.9,
- "grossPriceValidDateFrom": "2025-01-01"
}, - {
- "grossPrice": 125.5,
- "grossPriceValidDateFrom": "2025-04-01"
}
]
}Response samples
- 201
- 400
- 401
- 422
- 500
{- "active": true,
- "phaseOutDate": "2025-01-01",
- "articleCode": "1000017",
- "articleName": "Filtre à huile Bosch",
- "currency": "EUR",
- "isInherited": true,
- "prices": [
- {
- "grossPrice": 119.9,
- "grossPriceValidDateFrom": "2025-01-01"
}, - {
- "grossPrice": 125.5,
- "grossPriceValidDateFrom": "2025-04-01"
}
]
}inactivate entry from export catalog ref
Inactivate all entries regarding the last export in an article's catalog
Authorizations:
query Parameters
| keepOnly required | string (KeepOnly) <= 255 characters Example: keepOnly=1092729_12000010122025 The catalog external reference after the one the clean needs to be done |
Responses
Response samples
- 400
- 401
- 500
{- "errors": [
- {
- "error": "The field 'externalRef' is mandatory",
- "property": "externalRef"
}
]
}Get items from a seller's catalog
Get items from a seller's catalog, filtered by parameters and paginated
Authorizations:
path Parameters
| sellerCode required | number (SellerCode) Example: 1000001 Seller code of the catalog |
query Parameters
| pageNumber | integer <int32> (PageNumberParam) [ 1 .. 1000 ] Default: 1 Example: pageNumber=2 The page number |
| pageSize | integer <int32> (PageSizeParam) [ 1 .. 1000 ] Default: 1000 Example: pageSize=2 The page size |
| lastModifiedDateFrom | string <date-time> (lastModifiedDateFromParam) Example: lastModifiedDateFrom=2024-05-02T10:00:00 Date from for last update date of data |
| lastModifiedDateTo | string <date-time> (lastModifiedDateToParam) Example: lastModifiedDateTo=2024-05-02T10:00:00 Date to for last update date of data |
| category | string (CategoryQueryParam) [ 1 .. 255 ] characters Example: category=TYRE Article category |
| articleName | string (ArticleNameMax100) <= 100 characters Example: articleName=MICHELIN CROSSCLIMATE 2 205/55 R16 94 V shearch the tyre by the name |
| type | string (ArticleType) <= 255 characters Example: type=PRODUCT Type of the article |
| subCategory | string (ArticleSubCategoryEnum) Enum: "MOUNTING" "FITTING" "WHEEL_ON_OFF" "TURN_ON_RIM" "SWAPPING" "ALIGNMENT" "BALANCING" "REGROOVING" "TYRE_REPAIR" "VALVE" "SPARE_WHEEL" "STUDDING" "PRESSURE" "RETIGHTENING" "TRIP" "STORAGE_FEE" "BREAKDOWN" "CLEANING" "TPMS_SENSOR" "USED_PRODUCT_DISPOSAL" Example: subCategory=MOUNTING Sub-category of the article (Specific for services) |
| vehicleCategoryCode | string (VehicleCategoryCodeQueryParam) [ 1 .. 255 ] characters Example: vehicleCategoryCode=TRUCK Category of the vehicle (code of the category into the Category repository) |
| withInactive | boolean (WithInactiveQueryParam) Default: false Example: withInactive=false Set to true to include inactive articles in the results |
Responses
Response samples
- 200
- 400
- 401
- 500
{- "pagination": {
- "next": "/article-erm/v1/catalog-entries/sellers/100001?pageNumber=3&pageSize=50",
- "previous": "/article-erm/v1/catalog-entries/sellers/100001?pageNumber=1&pageSize=50",
- "pageTotal": "3",
- "totalElements": "125"
}, - "articlesCatalog": [
- {
- "active": true,
- "phaseOutDate": "2025-01-01",
- "articleCode": "1000017",
- "articleName": "Filtre à huile Bosch",
- "currency": "EUR",
- "isInherited": true,
- "prices": [
- {
- "grossPrice": 119.9,
- "grossPriceValidDateFrom": "2025-01-01"
}, - {
- "grossPrice": 125.5,
- "grossPriceValidDateFrom": "2025-04-01"
}
], - "lastModifiedDate": "2024-12-27T12:23:23",
- "lastModifiedBy": "user1"
}
]
}Get service
Get a service by code
Authorizations:
path Parameters
| serviceCode required | integer <int64> (ArticleCodeParam) Example: 100000 Targeted service code |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "code": 100001,
- "active": false,
- "name": "Michelin CrossClimate 2 205/55R16 91V",
- "ean": "3528702522950",
- "manufacturerCode": "Michelin",
- "manufacturerArticleCode": "252295",
- "brand": "MICHELIN",
- "model": "CROSS CONTROL S2",
- "category": "TYRE",
- "clearClassCode": "LTA11124",
- "brandAbbreviation": "MICH",
- "modelAbbreviation": "X LINE ENERGY D",
- "references": [
- {
- "source": "ES_EQUITY",
- "externalRef": "12345",
- "countryCode": "ES",
- "lastModifiedDate": "2024-12-27T12:23:23"
}
], - "lastModifiedDate": "2025-07-10T14:30:00",
- "lastModifiedBy": "user1",
- "serviceExtension": {
- "subCategory": "TURN_ON_RIM",
- "vehicleCategoryCode": "TRUCK"
}
}