| POST | /v3.5/product/search |
|---|
"use strict";
export class ProductIdentifiers {
/** @param {{productGuid?:string,gtins?:string[],mpns?:string[],ean8?:string[],ean13?:string[],isbn9?:string[],isbn10?:string[],isbn13?:string[],itf14?:string[],upc12?:string[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
productGuid;
/** @type {string[]} */
gtins;
/** @type {string[]} */
mpns;
/** @type {string[]} */
ean8;
/** @type {string[]} */
ean13;
/** @type {string[]} */
isbn9;
/** @type {string[]} */
isbn10;
/** @type {string[]} */
isbn13;
/** @type {string[]} */
itf14;
/** @type {string[]} */
upc12;
}
export class BookAttributes {
/** @param {{authors?:string[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string[]} */
authors;
}
export class AudiobookAttributes extends BookAttributes {
/** @param {{authors?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class EBookAttributes extends BookAttributes {
/** @param {{authors?:string[]}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class ItemAttributes {
/** @param {{book?:BookAttributes,audiobook?:AudiobookAttributes,ebook?:EBookAttributes}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {BookAttributes} */
book;
/** @type {AudiobookAttributes} */
audiobook;
/** @type {EBookAttributes} */
ebook;
}
export class ProductAttributes {
/** @param {{retailer?:string,retailerGuid?:string,storefront?:string,storefrontIso2?:string,storefrontGuid?:string,category?:string,categoryGuid?:string,brand?:string,brandGuid?:string,manufacturer?:string,manufacturerGuid?:string,identifiers?:ProductIdentifiers,itemAttributes?:ItemAttributes}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
retailer;
/** @type {string} */
retailerGuid;
/** @type {string} */
storefront;
/** @type {string} */
storefrontIso2;
/** @type {string} */
storefrontGuid;
/** @type {string} */
category;
/** @type {string} */
categoryGuid;
/** @type {string} */
brand;
/** @type {string} */
brandGuid;
/** @type {string} */
manufacturer;
/** @type {string} */
manufacturerGuid;
/** @type {ProductIdentifiers} */
identifiers;
/** @type {ItemAttributes} */
itemAttributes;
}
export class RetailerSpecificAttributes {
/** @param {{name?:string,description?:string,skus?:string[],asin?:string,url?:string,productImages?:{ [index:string]: string; },additionalData?:{ [index:string]: string; }}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
/** @type {string} */
description;
/** @type {string[]} */
skus;
/** @type {string} */
asin;
/** @type {string} */
url;
/** @type {{ [index:string]: string; }} */
productImages;
/** @type {{ [index:string]: string; }} */
additionalData;
}
export class ProductData {
/** @param {{attributes?:ProductAttributes,retailerSpecificAttributes?:RetailerSpecificAttributes,rawSourceData?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {ProductAttributes} */
attributes;
/** @type {RetailerSpecificAttributes} */
retailerSpecificAttributes;
/** @type {string} */
rawSourceData;
}
export class MatchCriteria {
/** @param {{retailerGuid?:string,timeoutMs?:number,countryIso2s?:string[],maxStalenessMs?:number,targetProductCategories?:string[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
retailerGuid;
/** @type {number} */
timeoutMs;
/** @type {string[]} */
countryIso2s;
/** @type {number} */
maxStalenessMs;
/** @type {string[]} */
targetProductCategories;
}
export class GetProductMatchesByCriteriaRequest {
/** @param {{data?:ProductData[],matchCriteria?:MatchCriteria[],maxTimeoutMs?:number,skipCriteriaCheck?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {ProductData[]} */
data;
/** @type {MatchCriteria[]} */
matchCriteria;
/** @type {number} */
maxTimeoutMs;
/** @type {boolean} */
skipCriteriaCheck;
}
JavaScript GetProductMatchesByCriteriaRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v3.5/product/search HTTP/1.1
Host: geniuslink-api-zane.dev.platform.georiot.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<GetProductMatchesByCriteriaRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Products.Requests">
<Data xmlns:d2p1="http://schemas.datacontract.org/2004/07/Geniuslink.Products.QueuedService.Contracts.V1.DTOs" i:nil="true" />
<MatchCriteria xmlns:d2p1="http://schemas.datacontract.org/2004/07/Geniuslink.Products.QueuedService.Contracts.V1.DTOs" i:nil="true" />
<MaxTimeoutMs>0</MaxTimeoutMs>
<SkipCriteriaCheck>false</SkipCriteriaCheck>
</GetProductMatchesByCriteriaRequest>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <GetProductMatchesByCriteriaRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/GeniuslinkAPI.ServiceModel.V4.Products.Requests"> <Data xmlns:d2p1="http://schemas.datacontract.org/2004/07/Geniuslink.Products.QueuedService.Contracts.V1.DTOs" i:nil="true" /> <MatchCriteria xmlns:d2p1="http://schemas.datacontract.org/2004/07/Geniuslink.Products.QueuedService.Contracts.V1.DTOs" i:nil="true" /> <MaxTimeoutMs>0</MaxTimeoutMs> <SkipCriteriaCheck>false</SkipCriteriaCheck> </GetProductMatchesByCriteriaRequest>