UNPKG

@scaleleap/amazon-marketplaces

Version:

A collection of Amazon Marketplace data objects.

355 lines (321 loc) 8.22 kB
import { AmazonMarketplaceAdvertisingRegion } from './amazon-marketplace-advertising-region' import { AmazonSellingPartnerApiRegion } from './amazon-selling-partner-api-region' /** * Amazon Marketplace country code enum. */ export enum AmazonMarketplaceCountryCode { AE = 'AE', AU = 'AU', BE = 'BE', BR = 'BR', CA = 'CA', CN = 'CN', DE = 'DE', EG = 'EG', ES = 'ES', FR = 'FR', GB = 'GB', IN = 'IN', IT = 'IT', JP = 'JP', MX = 'MX', NL = 'NL', PL = 'PL', SA = 'SA', SE = 'SE', SG = 'SG', TR = 'TR', US = 'US', ZA = 'ZA', } /** * Currency enum. */ export enum AmazonMarketplaceAdvertisingCurrency { AED = 'AED', AUD = 'AUD', BRL = 'BRL', CAD = 'CAD', CNY = 'CNY', EGP = 'EGP', EUR = 'EUR', GBP = 'GBP', INR = 'INR', JPY = 'JPY', MXN = 'MXN', PLN = 'PLN', SAR = 'SAR', SEK = 'SEK', SGD = 'SGD', TRY = 'TRY', USD = 'USD', ZAR = 'ZAR', } /** * Amazon Marketplace Advertising country code enum. * * The country code identifying the publisher(s) on which ads will run. */ export enum AmazonMarketplaceAdvertisingCountryCode { AE = 'AE', AU = 'AU', BE = 'BE', BR = 'BR', CA = 'CA', DE = 'DE', EG = 'EG', ES = 'ES', FR = 'FR', IN = 'IN', IT = 'IT', JP = 'JP', MX = 'MX', NL = 'NL', PL = 'PL', SA = 'SA', SE = 'SE', SG = 'SG', TR = 'TR', UK = 'UK', // Not a real country code, but such is life. See https://github.com/ScaleLeap/amazon-marketplaces/issues/122 US = 'US', } /** * Time Zone enum. */ export enum AmazonMarketplaceAdvertisingTimeZone { AFRICA_CAIRO = 'Africa/Cairo', AMERICA_LOS_ANGELES = 'America/Los_Angeles', AMERICA_SAO_PAULO = 'America/Sao_Paulo', ASIA_DUBAI = 'Asia/Dubai', ASIA_INDIA = 'Asia/Kolkata', ASIA_RIYADH = 'Asia/Riyadh', ASIA_SINGAPORE = 'Asia/Singapore', ASIA_TOKYO = 'Asia/Tokyo', AUSTRALIA_SYDNEY = 'Australia/Sydney', EUROPE_AMSTERDAM = 'Europe/Amsterdam', EUROPE_BRUSSELS = 'Europe/Brussels', EUROPE_ISTANBUL = 'Europe/Istanbul', EUROPE_LONDON = 'Europe/London', EUROPE_PARIS = 'Europe/Paris', EUROPE_STOCKHOLM = 'Europe/Stockholm', EUROPE_WARSAW = 'Europe/Warsaw', } export enum AmazonMarketplaceTimeZone { AFRICA_CAIRO = 'Africa/Cairo', AFRICA_JOHANNESBURG = 'Africa/Johannesburg', AMERICA_LOS_ANGELES = 'America/Los_Angeles', AMERICA_SAO_PAULO = 'America/Sao_Paulo', ASIA_DUBAI = 'Asia/Dubai', ASIA_INDIA = 'Asia/Kolkata', ASIA_RIYADH = 'Asia/Riyadh', ASIA_SHANGHAI = 'Asia/Shanghai', ASIA_SINGAPORE = 'Asia/Singapore', ASIA_TOKYO = 'Asia/Tokyo', AUSTRALIA_SYDNEY = 'Australia/Sydney', EUROPE_AMSTERDAM = 'Europe/Amsterdam', EUROPE_BRUSSELS = 'Europe/Brussels', EUROPE_ISTANBUL = 'Europe/Istanbul', EUROPE_LONDON = 'Europe/London', EUROPE_PARIS = 'Europe/Paris', EUROPE_STOCKHOLM = 'Europe/Stockholm', EUROPE_WARSAW = 'Europe/Warsaw', } export interface AmazonMarketplaceAdvertising { /** * Amazon Advertising account time zone. * * @example * * "America/Los_Angeles" */ readonly timeZone: AmazonMarketplaceAdvertisingTimeZone /** * The country code identifying the publisher(s) on which ads will run. * * [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) with the exception of UK, which uses * `UK` instead of `GB`. * * @example * * AmazonMarketplaceAdvertisingCountryCode.CA */ readonly countryCode: AmazonMarketplaceAdvertisingCountryCode /** * Amazon Advertising API Regions */ readonly region: AmazonMarketplaceAdvertisingRegion /** * Minimum and maximum bids for each advertising type. */ readonly bids: { /** * Sponsored Products (SP) */ readonly sponsoredProducts: AmazonAdvertisingBidLimits /** * Sponsored Brands (SB) */ readonly sponsoredBrands: AmazonAdvertisingBidLimits } } export interface AmazonAdvertisingBidLimits { /** * Minimum bid in account currency in **smallest units** (e.g. cents). * * @example * * 2 */ readonly min: number /** * Maximum bid in account currency in **smallest units** (e.g. cents). * * @example * * 100000 */ readonly max: number } export interface AmazonSellingPartner { /** * Amazon Selling Partner API Region */ readonly region: AmazonSellingPartnerApiRegion /** * Amazon Selling Partner API Auth URL * * @see [OAuth authorization URIs](https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#constructing-an-oauth-authorization-uri) */ readonly sellerCentralAuthUri: string /** * Amazon Selling Partner API Auth URL * * @see [OAuth authorization URIs](https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#constructing-an-oauth-authorization-uri) */ readonly vendorCentralAuthUri: string } type AmazonSellingPartnerParameters = Omit< AmazonSellingPartner, 'sellerCentralAuthUri' | 'vendorCentralAuthUri' > export interface AmazonMarketplace { /** * Amazon Marketplace ID. * * @example * * 'A2EUQ1WTGCTBG2' */ readonly id: string /** * Amazon Marketplace Name. * * @example * * 'Canada' */ readonly name: string /** * Country code for the given marketplace. * * [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) * * @example * * AmazonMarketplaceCountryCode.CA */ readonly countryCode: AmazonMarketplaceCountryCode /** * Time zone for the given marketplace. * * @example * * "America/Los_Angeles" */ readonly timeZone: AmazonMarketplaceTimeZone /** * Currency code for the given marketplace. * * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#X_currencies) * * @example * * AmazonMarketplaceAdvertisingCurrency.CAD */ readonly currency: AmazonMarketplaceAdvertisingCurrency /** * Amazon Marketplace URI. * * @example * * 'https://www.amazon.ca' */ readonly uri: string /** * Amazon Seller Central URI. * * @example * * 'https://sellercentral.amazon.ca' */ readonly sellerCentralUri?: string /** * Amazon Vendor Central URI. * * @example * * 'https://vendorcentral.amazon.ca' */ readonly vendorCentralUri?: string /** * [Amazon Marketplace Web Service](https://developer.amazonservices.com/gp/mws/docs.html) (Amazon MWS) Endpoint URI. * * @example * * 'https://mws.amazonservices.ca' */ readonly webServiceUri: string /** * Date when the marketplace launched in UTC. * * Because we only know which monthly the marketplaces were launched. * So, we suppose that they were launched on the first day of the month. * @see https://en.wikipedia.org/wiki/Amazon_(company)#Amazon.com * * @example * '2023-05-01' */ readonly launchDate: string /** * [Amazon Advertising](https://advertising.amazon.com/API/docs/v2/guides/supported_features). */ readonly advertising?: AmazonMarketplaceAdvertising /** * [Amazon Selling Partner API](https://developer.amazonservices.com/). */ readonly sellingPartner?: AmazonSellingPartner } interface AmazonMarketplaceParameters extends Omit<AmazonMarketplace, 'sellingPartner'> { sellingPartner?: AmazonSellingPartnerParameters } export class AmazonMarketplace implements AmazonMarketplace { public constructor(amazonMarketplace: AmazonMarketplaceParameters) { Object.assign(this, amazonMarketplace) if (this.sellingPartner) { /** * https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#constructing-an-oauth-authorization-uri */ if (amazonMarketplace.sellerCentralUri) { Object.assign(this.sellingPartner, { sellerCentralAuthUri: `${amazonMarketplace.sellerCentralUri}/apps/authorize/consent`, }) } if (amazonMarketplace.vendorCentralUri) { Object.assign(this.sellingPartner, { vendorCentralAuthUri: `${amazonMarketplace.vendorCentralUri}/apps/authorize/consent`, }) } } Object.freeze(this) } }