@scaleleap/amazon-marketplaces
Version:
A collection of Amazon Marketplace data objects.
174 lines (133 loc) • 5.9 kB
Markdown

/amazon-marketplaces
=======================================
A collection of [Amazon Marketplace](https://en.wikipedia.org/wiki/Amazon_Marketplace) data objects.
This package is written in TypeScript and is fully typed.
---
This package combines data about Amazon Marketplace (the consumer side of Amazon) into
a structured class.
### Available Marketplace Data
* ID (e.g. `A2EUQ1WTGCTBG2`)
* Country code (ISO 3166-1) (e.g. `CA`)
* Amazon marketplace time zone (e.g. `America/Los_Angeles`)
* Currency code (ISO 4217) (e.g. `CAD`)
* Name (country name) (e.g. `Canada`)
* URI (e.g. `https://www.amazon.ca/`)
* Amazon Marketplace Web Service (Amazon MWS) endpoint URI
* Amazon Advertising
* API endpoint URI
* Sponsored products
* Minimum bid
* Maximum bid
* Sponsored Brands
* Minimum bid
* Maximum bid
* Account time zone
* Amazon Selling Partner API
* Selling Partner Region
* API endpoint URI
* Seller Central endpoint URI (used for SP Auth)
### Code Demo
#### Enum of Amazon Marketplace Data
```ts
import { amazonMarketplaces } from '@scaleleap/amazon-marketplaces'
const { CA } = amazonMarketplaces
console.log('Amazon Marketplace %s uses currency %s.', CA.name, CA.currency)
```
#### List of Amazon Marketplace Data
Sometimes it is more ergonomic to iterate over an array of marketplaces.
And that is where `amazonMarketplacesList` may come handy.
```ts
import { amazonMarketplacesList } from '@scaleleap/amazon-marketplaces'
const marketplaceIds = amazonMarketplacesList.map(marketplace => marketplace.id)
```
#### Utility Functions
```ts
import {
findAmazonMarketplace,
findAmazonMarketplaceOrFail,
AmazonMarketplaceCountryCode
} from '@scaleleap/amazon-marketplaces'
// Return value *can* be undefined
const CA = findAmazonMarketplace('countryCode', AmazonMarketplaceCountryCode.CA)
// Function will throw an error if marketplace is not found
// Thus return value is never undefined.
const US = findAmazonMarketplaceOrFail('countryCode', AmazonMarketplaceCountryCode.US)
// TypeScript assertion functions that ensure that the marketplace has advertising / selling partner enabled.
// Throws if not.
assertMarketplaceHasAdvertising(CA)
assertMarketplaceHasSellingPartner(CA)
// CA.advertising is now type guarded and can be safely accessed.
console.log(CA.advertising.countryCode)
```
### Full Data Object Example
```json
{
"countryCode": "CA",
"timeZone": "America/Los_Angeles",
"currency": "CAD",
"id": "A2EUQ1WTGCTBG2",
"name": "Canada",
"uri": "https://www.amazon.ca",
"webServiceUri": "https://mws.amazonservices.ca",
"advertising": {
"countryCode": "CA",
"timeZone": "America/Los_Angeles",
"region": {
"accessTokenUri": "https://api.amazon.com/auth/o2/token",
"authorizationUri": "https://www.amazon.com/ap/oa",
"code": "NA",
"endpoint": "https://advertising-api.amazon.com",
"name": "North America",
},
"bids": {
"sponsoredBrands": {
"min": 10,
"max": 4900
},
"sponsoredProducts": {
"min": 2,
"max": 100000
}
},
},
"sellingPartner": {
"region": {
"awsRegion": "us-east-1",
"code": "NA",
"endpoint": "https://sellingpartnerapi-na.amazon.com",
"name": "North America",
},
"sellerCentralAuthUri": "https://sellercentral.amazon.com"
}
}
```
You may also view the [Jest snapshot data](tests/__snapshots__/marketplaces.test.ts.snap) for the fully rendered data object examples.
### Download & Installation
```sh
$ npm i -s /amazon-marketplaces
```
### Contributing
If you find any other data that can be added, please open an issue and let us know.
Note that this repository uses [Conventional Commit](https://www.conventionalcommits.org/)
style commit messages.
If a new marketplace is added, this should be marked as breaking change and increase the major
version, because others may rely on iterating over the available marketplaces.
### Original Data Sources
* [Amazon Advertising API](https://advertising.amazon.com/API/docs/en-us/get-started/how-to-use-api)
* [Amazon Marketplace Web Service](https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html)
* [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Active_codes)
* [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes)
* [Regional profile time zone codes](https://advertising.amazon.com/API/docs/en-us/reference/2/profiles#regional-profile-time-zone-codes)
* [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
* [Selling Partner API endpoints](https://github.com/amzn/selling-partner-api-docs/blob/main/guides/developer-guide/SellingPartnerApiDeveloperGuide.md#selling-partner-api-endpoints)
### Authors or Acknowledgments
* Roman Filippov ([Scale Leap](https://www.scaleleap.com))
### License
This project is licensed under the MIT License.
[](https://app.fossa.com/projects/git%2Bgithub.com%2FScaleLeap%2Famazon-marketplaces?ref=badge_large)
### Badges
[](https://github.com/ScaleLeap/amazon-marketplaces/actions)
[](https://npm.im/@scaleleap/amazon-marketplaces)
[](./LICENSE)
[](https://app.fossa.com/projects/git%2Bgithub.com%2FScaleLeap%2Famazon-marketplaces?ref=badge_shield)