Amazon Selling Partner (SP-API) Connector for Azure Data Factory (SSIS)
In this article you will learn how to quickly and efficiently
integrate Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS) without coding.
We will use high-performance Amazon Selling Partner (SP-API) Connector
to easily connect to Amazon Selling Partner (SP-API) and then access the data inside Azure Data Factory (SSIS).
Amazon Selling Partner Connector (SP-API) can be used to integrated SP-API that helps Amazon sellers to programmatically exchange data on listings, orders, payments, reports, and more.
Let's follow the steps below to see how we can accomplish that!
Download
Documentation
Amazon Selling Partner (SP-API) Connector for Azure Data Factory (SSIS) is based on ZappySys API Connector Framework
which is a part of SSIS PowerPack.
It is a collection of high-performance SSIS connectors that enable you
to integrate data with virtually any data provider supported by SSIS, including SQL Server.
SSIS PowerPack supports various file formats, sources and destinations,
including REST/SOAP API, SFTP/FTP, storage services, and plain files, to mention a few
(if you are new to SSIS and SSIS PowerPack, find out more on how to use them).
|
Connect to Amazon Selling Partner (SP-API) in other apps
|
Create SSIS package
First of all, create an SSIS package, which will connect to Amazon Selling Partner (SP-API) in SSIS.
Once you do that, you are one step closer to deploying and running it in Azure-SSIS integration runtime in Azure Data Factory (ADF).
Then simply proceed to the next step - creating and configuring Azure Blob Storage Container.
Prepare custom setup files for Azure-SSIS runtime
Now it's time to start preparing custom setup files for Azure-SSIS runtime.
During Azure-SSIS runtime creation you can instruct ADF to perform a custom setup on a VM (Azure-SSIS node);
i.e. to run the custom installer, copy files, execute PowerShell scripts, etc.
In that case, your custom setup files are downloaded and run in the Azure-SSIS node (a VM) when you start the runtime.
In this section we will prepare custom setup files so that you can run SSIS packages with SSIS PowerPack connectors inside in Azure-SSIS runtime.
Trial Users
Use the step below if you are a Trial User, when you did not purchase a license key.
Proceed with these steps:
-
Download SSIS PowerPack trial installer.
Make sure you don't rename the installer and keep it named as SSISPowerPackSetup_64bit_Trial.msi.
-
Create a text file and name it main.cmd (make it all lowercase, very important).
-
Copy and paste this script into it and save it:
set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%
echo Calling Step 1 : %TIME% >> "%DIR%\steps_log.txt"
dir /s /b > "%DIR%\file_list.txt"
echo Calling Step 2 : %TIME% >> "%DIR%\steps_log.txt"
::Install SSIS PowerPack
msiexec /i "SSISPowerPackSetup_64bit_Trial.msi" ADDLOCAL=ALL /q /L*V "%DIR%\powerpack_trial_install_log.txt"
echo Calling Step 3 : %TIME% >> "%DIR%\steps_log.txt"
dir "C:\Program Files\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
dir "C:\Program Files (x86)\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
echo DONE : %TIME% >> "%DIR%\steps_log.txt"
echo complete
This is the entry-point script that is executed when Azure-SSIS runtime is started.
-
At last! You are ready to upload these two files — main.cmd & SSISPowerPackSetup_64bit_Trial.msi — into your Azure Blob Storage container's folder, which we will do in the Upload custom setup files to Azure Blob Storage container step.
Paid Customers
Use the steps below if you are a Paid Customer, when you purchased a license.
Proceed with these steps:
-
Download SSIS PowerPack paid installer.
Make sure you don't rename the installer and keep it named as SSISPowerPackSetup_64bit.msi.
-
Have your SSIS PowerPack license key handy, we will need it in the below script.
-
Create a text file and name it main.cmd (make it all lowercase, very important).
- Copy and paste the below script into it.
- Paste your license key by replacing parameter's
--register
argument with your real license key.
-
Finally, save main.cmd:
set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%
echo Calling Step 1 : %TIME% >> "%DIR%\steps_log.txt"
dir /s /b > "%DIR%\file_list.txt"
echo Calling Step 2 : %TIME% >> "%DIR%\steps_log.txt"
::Install SSIS PowerPack
msiexec /i "SSISPowerPackSetup_64bit.msi" ADDLOCAL=ALL /q /L*V "%DIR%\powerpack_install_log.txt"
echo Calling Step 3 : %TIME% >> "%DIR%\steps_log.txt"
::Activate PowerPack license (Optional)
"C:\Program Files (x86)\ZappySys\SSIS PowerPack (64 bit)\LicenseManager.exe" -p SSISPowerPack --register "lgGAAO0-----REPLACE-WITH-YOUR-LICENSE-KEY-----czM=" --logfile "%DIR%\powerpack_register_log.txt"
::Show System Info
echo Calling Step 4 : %TIME% >> "%DIR%\steps_log.txt"
"C:\Program Files (x86)\ZappySys\SSIS PowerPack (64 bit)\LicenseManager.exe" -i -l "%DIR%\sysinfo_log.txt"
echo Calling Step 5 : %TIME% >> "%DIR%\steps_log.txt"
dir "C:\Program Files\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
dir "C:\Program Files (x86)\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
echo DONE : %TIME% >> "%DIR%\steps_log.txt"
echo complete
This is the entry-point script that is executed when Azure-SSIS runtime is started.
-
At last! You are ready to upload these two files — main.cmd & SSISPowerPackSetup_64bit.msi — into your Azure Blob Storage container's folder, which we will do in the Upload custom setup files to Azure Blob Storage container step.
Upload custom setup files to Azure Blob Storage container
Within Azure Blob Storage container we will store custom setup files we prepared in the previous step so that Azure-SSIS can use them in custom setup process.
Just perform these very simple, but very important steps:
-
Create Azure Blob Storage container, if you haven't done it already
Make sure you create and use Azure Blob Storage container instead of Azure Data Lake Storage folder.
Azure Data Lake Storage won't allow creating an SAS URI for the container, which is a crucial step in the process.
-
Find Blob Containers node, right-click on it and hit Create Blob Container option:
-
Upload the two custom setup files — main.cmd & the MSI installer — into your Azure Blob Storage container's folder:
- It was easy, wasn't it? It's time we create an SAS URI in the next step.
Create SAS URI for Azure Blob Container
Once you have custom setup files prepared, it's time we generate an SAS URI.
This SAS URI will be used by a new Azure-SSIS runtime to install SSIS PowerPack inside the runtime's node, a VM.
Let's proceed together by performing the steps below:
- Install and launch Azure Storage Explorer.
-
Right-click on the Storage Accounts node and then hit Connect to Azure storage... menu item:
-
Proceed by right-clicking on that container node and select Get Shared Access Signature... option.
-
Next, set the Expiry time field to a date far in the future.
If you restart Azure-SSIS runtime and your SAS URI is expired by that time, it will not start.
-
Select Read, Create, Write, and List permissions:
We also recommend to add Delete permission too to support future functionality.
-
Copy SAS URL to the clipboard and save it for the next step:
You can also generate and copy SAS URL from within Azure Portal itself:
Create Azure-SSIS integration runtime
Once you have the SAS URL we obtained in the previous step, we are ready to move on to create an Azure-SSIS runtime in Azure Data Factory:
-
Firstly, perform the steps described in Create an Azure-SSIS integration runtime article in Azure Data Factory reference.
-
In Advanced settings page section, configure Custom setup container SAS URI you obtained in the previous step:
-
And you are done! That was quick! You can see your Azure-SSIS runtime up and running:
The custom setup script is executed only once — at the time an Azure-SSIS runtime is started.
It is also executed if you stop and start Azure-SSIS runtime again.
Deploy SSIS package in Visual Studio
We are ready to deploy the SSIS package to Azure-SSIS runtime. Once you do that, proceed to the next step for the grand finale!
Execute SSIS package in SQL Server Management Studio (SSMS)
After all hard work, we are ready to execute SSIS package in SQL Server Management Studio (SSMS):
- Connect to the SQL Server which is linked to your Azure-SSIS runtime and contains SSISDB database.
-
Navigate to Integration Services Catalog » Your Folder » Your Project » Your Package, right-click on it, and hit Execute...:
-
To view the status of the past execution, navigate to
Integration Services Catalog » Your Folder » Your Project » Your Package, right-click on it, and select Reports » Standard Reports » All Executions menu item:
Scenarios
Moving SSIS PowerPack license to another Azure-SSIS runtime
If you are a Paid Customer, there will be a time when you no longer use Azure-SSIS runtime or you need to use your license on a different ADF instance.
To transfer a license from one Azure-SSIS runtime to another, perform these steps:
-
Copy & paste this script into main.cmd we used in the previous step:
set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%
echo Calling Step 1 : %TIME% >> "%DIR%\steps_log.txt"
dir /s /b > "%DIR%\file_list.txt"
echo Calling Step 2 : %TIME% >> "%DIR%\steps_log.txt"
::Install SSIS PowerPack
msiexec /i "SSISPowerPackSetup_64bit.msi" ADDLOCAL=ALL /q /L*V "%DIR%\powerpack_install_log.txt"
echo Calling Step 3 : %TIME% >> "%DIR%\steps_log.txt"
::De-Activate same license
"C:\Program Files (x86)\ZappySys\SSIS PowerPack (64 bit)\LicenseManager.exe" -p SSISPowerPack --unregister --logfile "%DIR%\powerpack_un_register_log.txt"
::Show System Info
echo Calling Step 4 : %TIME% >> "%DIR%\steps_log.txt"
"C:\Program Files (x86)\ZappySys\SSIS PowerPack (64 bit)\LicenseManager.exe" -i -l "%DIR%\sysinfo_log.txt"
echo Calling Step 5 : %TIME% >> "%DIR%\steps_log.txt"
dir "C:\Program Files\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
dir "C:\Program Files (x86)\Microsoft SQL Server\*Zappy*.*" /s /b >> "%DIR%\installed_files.txt"
echo DONE : %TIME% >> "%DIR%\steps_log.txt"
echo complete
- Start Azure-SSIS runtime.
This will unregister your license on the original Azure-SSIS runtime.
- Stop Azure-SSIS runtime to deallocate resources in Azure.
- Now you are free to activate it on another Azure-SSIS runtime.
Advanced topics
Create Custom Stored Procedure in ZappySys Driver
You can create procedures to encapsulate custom logic and then only pass handful parameters rather than long SQL to execute your API call.
Steps to create Custom Stored Procedure in ZappySys Driver. You can insert Placeholders anywhere inside Procedure Body. Read more about placeholders here
-
Go to Custom Objects Tab and Click on Add button and Select Add Procedure:
-
Enter the desired Procedure name and click on OK:
-
Select the created Stored Procedure and write the your desired stored procedure and Save it and it will create the custom stored procedure in the ZappySys Driver:
Here is an example stored procedure for ZappySys Driver. You can insert Placeholders anywhere inside Procedure Body. Read more about placeholders here
CREATE PROCEDURE [usp_get_orders]
@fromdate = '<<yyyy-MM-dd,FUN_TODAY>>'
AS
SELECT * FROM Orders where OrderDate >= '<@fromdate>';
-
That's it now go to Preview Tab and Execute your Stored Procedure using Exec Command. In this example it will extract the orders from the date 1996-01-01:
Exec usp_get_orders '1996-01-01';
-
Let's generate the SQL Server Query Code to make the API call using stored procedure. Go to Code Generator Tab, select language as SQL Server and click on Generate button the generate the code.
As we already created the linked server for this Data Source, in that you just need to copy the Select Query and need to use the linked server name which we have apply on the place of [MY_API_SERVICE] placeholder.
SELECT * FROM OPENQUERY([LINKED_SERVER_TO_AMAZON_SELLING_PARTNER_SP_API_IN_DATA_GATEWAY], 'EXEC usp_get_orders @fromdate=''1996-07-30''')
-
Now go to SQL served and execute that query and it will make the API call using stored procedure and provide you the response.
Create Custom Virtual Table in ZappySys Driver
ZappySys API Drivers support flexible Query language so you can override Default Properties you configured on Data Source such as URL, Body. This way you don't have to create multiple Data Sources if you like to read data from multiple EndPoints. However not every application support supplying custom SQL to driver so you can only select Table from list returned from driver.
If you're dealing with Microsoft Access and need to import data from an SQL query, it's important to note that Access doesn't allow direct import of SQL queries. Instead, you can create custom objects (Virtual Tables) to handle the import process.
Many applications like MS Access, Informatica Designer wont give you option to specify custom SQL when you import Objects. In such case Virtual Table is very useful. You can create many Virtual Tables on the same Data Source (e.g. If you have 50 URLs with slight variations you can create virtual tables with just URL as Parameter setting.
-
Go to Custom Objects Tab and Click on Add button and Select Add Table:
-
Enter the desired Table name and click on OK:
-
And it will open the New Query Window Click on Cancel to close that window and go to Custom Objects Tab.
-
Select the created table, Select Text Type AS SQL and write the your desired SQL Query and Save it and it will create the custom table in the ZappySys Driver:
Here is an example SQL query for ZappySys Driver. You can insert Placeholders also. Read more about placeholders here
SELECT
"ShipCountry",
"OrderID",
"CustomerID",
"EmployeeID",
"OrderDate",
"RequiredDate",
"ShippedDate",
"ShipVia",
"Freight",
"ShipName",
"ShipAddress",
"ShipCity",
"ShipRegion",
"ShipPostalCode"
FROM "Orders"
Where "ShipCountry"='USA'
-
That's it now go to Preview Tab and Execute your custom virtual table query. In this example it will extract the orders for the USA Shipping Country only:
SELECT * FROM "vt__usa_orders_only"
-
Let's generate the SQL Server Query Code to make the API call using stored procedure. Go to Code Generator Tab, select language as SQL Server and click on Generate button the generate the code.
As we already created the linked server for this Data Source, in that you just need to copy the Select Query and need to use the linked server name which we have apply on the place of [MY_API_SERVICE] placeholder.
SELECT * FROM OPENQUERY([LINKED_SERVER_TO_AMAZON_SELLING_PARTNER_SP_API_IN_DATA_GATEWAY], 'EXEC [usp_get_orders] ''1996-01-01''')
-
Now go to SQL served and execute that query and it will make the API call using stored procedure and provide you the response.
Actions supported by Amazon Selling Partner (SP-API) Connector
Amazon Selling Partner (SP-API) Connector support following actions for REST API integration.
If some actions are not listed below then you can easily edit Connector file and enhance out of the box functionality.
Download Report File to Local Disk
Get Report Data - Tab Separated File (TSV)
Get Report Data - Comma Separated File (CSV)
Get Report Data - XML File
[
Read more...
]
Parameter |
Description |
ReportType |
|
Filter for XML File |
Option |
Value |
Example1 |
$.Result.Node[*] |
Example2 |
$.SomeNode.SomeArray[?(@SomeProperty='ABCD')] |
|
Get Report Data - JSON File
[
Read more...
]
Parameter |
Description |
ReportType |
|
Filter for JSON File |
|
Get FBA Inventory Summaries (Fulfilled By Amazon)
Returns a list of inventory summaries. The summaries returned depend on the presence or absence of the startDateTime, sellerSkus and sellerSku parameters. [
Read more...
]
Parameter |
Description |
MarketplaceIds |
Option |
Value |
United States of America |
ATVPDKIKX0DER |
Brazil |
A2Q3Y263D00KWC |
Canada |
A2EUQ1WTGCTBG2 |
Mexico |
A1AM78C64UM0Y8 |
Spain |
A1RKKUPIHCS9HS |
United Kingdom |
A1F83G8C2ARO7P |
France |
A13V1IB3VIYZZH |
Belgium |
AMEN7PMS3EDWL |
Netherlands |
A1805IZSGTT6HS |
Germany |
A1PA6795UKMFR9 |
Italy |
APJ6JRA9NG5V4 |
Sweden |
A2NODRKZP88ZB9 |
South Africa |
AE08WJ6YKNBMC |
Poland |
A1C3SOZRARQ6R3 |
Egypt |
ARBP9OOSHTCHU |
Turkey |
A33AVAJ2PDY3EV |
Saudi Arabia |
A17E79C6D8DWNP |
United Arab Emirates (U.A.E.) |
A2VIGQ35RCS4UG |
India |
A21TJRUUN4KGV |
Singapore |
A19VAU5U5O7RUS |
Australia |
A39IBJ37TRP1C6 |
Japan |
A1VC38T7YXB528 |
|
Include details |
true to return inventory summaries with additional summarized inventory details and quantities. Otherwise, returns inventory summaries only (default value false).
Option |
Value |
true |
true |
false |
false |
|
Granularity Type |
The granularity type for the inventory aggregation level.
Option |
Value |
Marketplace |
Marketplace |
|
Granularity Id |
The granularity ID for the inventory aggregation level (e.g. MarketPlaceId if granularityType is MarketPlace ID).
Option |
Value |
United States of America |
ATVPDKIKX0DER |
Brazil |
A2Q3Y263D00KWC |
Canada |
A2EUQ1WTGCTBG2 |
Mexico |
A1AM78C64UM0Y8 |
Spain |
A1RKKUPIHCS9HS |
United Kingdom |
A1F83G8C2ARO7P |
France |
A13V1IB3VIYZZH |
Belgium |
AMEN7PMS3EDWL |
Netherlands |
A1805IZSGTT6HS |
Germany |
A1PA6795UKMFR9 |
Italy |
APJ6JRA9NG5V4 |
Sweden |
A2NODRKZP88ZB9 |
South Africa |
AE08WJ6YKNBMC |
Poland |
A1C3SOZRARQ6R3 |
Egypt |
ARBP9OOSHTCHU |
Turkey |
A33AVAJ2PDY3EV |
Saudi Arabia |
A17E79C6D8DWNP |
United Arab Emirates (U.A.E.) |
A2VIGQ35RCS4UG |
India |
A21TJRUUN4KGV |
Singapore |
A19VAU5U5O7RUS |
Australia |
A39IBJ37TRP1C6 |
Japan |
A1VC38T7YXB528 |
|
Start Date |
A start date and time in ISO8601 format. If specified, all inventory summaries that have changed since then are returned. You must specify a date and time that is no earlier than 18 months prior to the date and time when you call the API. Note: Changes in inboundWorkingQuantity, inboundShippedQuantity and inboundReceivingQuantity are not detected. You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
SellerSku (Single) |
A single seller SKU used for querying the specified seller SKU inventory summaries.
|
SellerSkus (Multiple) |
A list of seller SKUs for which to return inventory summaries. You may specify up to 50 SKUs.
|
Search for and return a list of Amazon catalog items and associated information either by identifier or by keywords. [
Read more...
]
Parameter |
Description |
MarketplaceIds |
Option |
Value |
United States of America |
ATVPDKIKX0DER |
Brazil |
A2Q3Y263D00KWC |
Canada |
A2EUQ1WTGCTBG2 |
Mexico |
A1AM78C64UM0Y8 |
Spain |
A1RKKUPIHCS9HS |
United Kingdom |
A1F83G8C2ARO7P |
France |
A13V1IB3VIYZZH |
Belgium |
AMEN7PMS3EDWL |
Netherlands |
A1805IZSGTT6HS |
Germany |
A1PA6795UKMFR9 |
Italy |
APJ6JRA9NG5V4 |
Sweden |
A2NODRKZP88ZB9 |
South Africa |
AE08WJ6YKNBMC |
Poland |
A1C3SOZRARQ6R3 |
Egypt |
ARBP9OOSHTCHU |
Turkey |
A33AVAJ2PDY3EV |
Saudi Arabia |
A17E79C6D8DWNP |
United Arab Emirates (U.A.E.) |
A2VIGQ35RCS4UG |
India |
A21TJRUUN4KGV |
Singapore |
A19VAU5U5O7RUS |
Australia |
A39IBJ37TRP1C6 |
Japan |
A1VC38T7YXB528 |
|
Identifiers (comma-delimited list) |
A comma-delimited list of product identifiers to search the Amazon catalog for. Note: Cannot be used with keywords.
|
IdentifiersType |
Type of product identifiers to search the Amazon catalog for. Note: Required when identifiers are provided.
Option |
Value |
ASIN (Amazon Standard Identification Number) |
ASIN |
EAN (European Article Number) |
EAN |
GTIN (Global Trade Item Number) |
GTIN |
ISBN (International Standard Book Number) |
ISBN |
JAN (Japanese Article Number) |
JAN |
MINSAN (Minsan Code) |
MINSAN |
SKU (Stock Keeping Unit - must be used with sellerId) |
SKU |
UPC (Universal Product Code) |
UPC |
|
IncludedData |
A comma-delimited list of data sets to include in the response. Default: summaries.
Option |
Value |
attributes |
attributes |
classifications |
classifications |
dimensions |
dimensions |
identifiers |
identifiers |
images |
images |
productTypes |
productTypes |
relationships |
relationships |
salesRanks |
salesRanks |
summaries |
summaries |
|
Filter |
Option |
Value |
$.items[*] |
$.items[*] |
$.items[*].summaries[*] |
$.items[*].summaries[*] |
$.items[*].images[*].images[*] |
$.items[*].images[*].images[*] |
$.items[*].attributes[*] |
$.items[*].attributes[*] |
$.items[*].classifications[*].classifications[*] |
$.items[*].classifications[*].classifications[*] |
$.items[*].identifiers[*].identifiers[*] |
$.items[*].identifiers[*].identifiers[*] |
$.items[*].productTypes[*] |
$.items[*].productTypes[*] |
$.items[*].salesRanks[*] |
$.items[*].salesRanks[*] |
$.items[*].relationships[*].relationships[*] |
$.items[*].relationships[*].relationships[*] |
$.items[*].dimensions[*] |
$.items[*].dimensions[*] |
$.refinements[*].brands[*] |
$.refinements[*].brands[*] |
$.refinements[*].classifications[*] |
$.refinements[*].classifications[*] |
|
Locale |
Locale for retrieving localized summaries. Defaults to the primary locale of the marketplace.
|
SellerId |
A selling partner identifier, such as a seller account or vendor code. Note: Required when identifiersType is SKU.
|
Keywords (comma-delimited list) |
A comma-delimited list of words to search the Amazon catalog for. Note: Cannot be used with identifiers.
|
BrandNames (comma-delimited list) |
A comma-delimited list of brand names to limit the search for keywords-based queries. Note: Cannot be used with identifiers
|
Classification Ids (comma-delimited list) |
A comma-delimited list of classification identifiers to limit the search for keywords-based queries. Note: Cannot be used with identifiers.
|
KeywordsLocale |
The language of the keywords provided for keywords-based queries. Defaults to the primary locale of the marketplace. Note: Cannot be used with identifiers.
|
[
Read more...
]
Parameter |
Description |
Filter |
Option |
Value |
All Reports |
$.data[*] |
Tab-delimited / Flat File Reports |
$.data[?(@format=='TSV')] |
Comma-delimited Reports |
$.data[?(@format=='CSV')] |
XML Reports |
$.data[?(@format=='XML')] |
PDF Reports |
$.data[?(@format=='PDF')] |
Excel (XLSX) Reports |
$.data[?(@format=='XLSX')] |
|
Get Market Place Participations
Get Vendor PurchaseOrders
Returns a list of purchase orders created or changed during the time frame that you specify. You define the time frame using the createdAfter, createdBefore, changedAfter and changedBefore parameters. The date range to search must not be more than 7 days. You can choose to get only the purchase order numbers by setting includeDetails to false. You can then use the getPurchaseOrder operation to receive details for a specific purchase order. [
Read more...
]
Parameter |
Description |
CreatedAfter |
Purchase orders that became available after this time will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02). If LastUpdatedAfter is not specified. Specifying both CreatedAfter and LastUpdatedAfter returns an error. You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
CreatedBefore |
Purchase orders that became available before this time will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02) You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
ChangedAfter |
Purchase orders that changed after this timestamp will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02). If CreatedAfter is not specified.Specifying both CreatedAfter and LastUpdatedAfter returns an error.If LastUpdatedAfter is specified, then BuyerEmail and SellerOrderId cannot be specified. You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
ChangedBefore |
Purchase orders that changed before this timestamp will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02) You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
IncludeDetails |
When true, returns purchase orders with complete details. Otherwise, only purchase order numbers are returned. Default value is true.
Option |
Value |
true |
true |
false |
false |
|
SortOrder |
Sort in ascending or descending order by purchase order creation date.
Option |
Value |
ASC |
ASC |
DESC |
DESC |
|
PoItemState |
Current state of the purchase order item. If this value is Cancelled, this API will return purchase orders which have one or more items cancelled by Amazon with updated item quantity as zero.
Option |
Value |
ACCEPTED |
ACCEPTED |
PARTIALLY_ACCEPTED |
PARTIALLY_ACCEPTED |
REJECTED |
REJECTED |
UNCONFIRMED |
UNCONFIRMED |
|
IsPOChanged |
When true, returns purchase orders which were modified after the order was placed. Vendors are required to pull the changed purchase order and fulfill the updated purchase order and not the original one. Default value is false.
Option |
Value |
true |
true |
false |
false |
|
PurchaseOrderState |
Filters purchase orders based on the purchase order state.
Option |
Value |
New |
New |
Acknowledged |
Acknowledged |
Closed |
Closed |
|
OrderingVendorCode |
Filters purchase orders based on the specified ordering vendor code. This value should be same as 'sellingParty.partyId' in the purchase order. If not included in the filter, all purchase orders for all of the vendor codes that exist in the vendor group used to authorize the API client application are returned.
|
Get Vendor PurchaseOrder Items
Returns a list of purchase order items created or changed during the time frame that you specify. You define the time frame using the createdAfter, createdBefore, changedAfter and changedBefore parameters. The date range to search must not be more than 7 days. You can choose to get only the purchase order numbers by setting includeDetails to false. You can then use the getPurchaseOrder operation to receive details for a specific purchase order. [
Read more...
]
Parameter |
Description |
CreatedAfter |
Purchase orders that became available after this time will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02). If LastUpdatedAfter is not specified. Specifying both CreatedAfter and LastUpdatedAfter returns an error. You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
CreatedBefore |
Purchase orders that became available before this time will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02) You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
ChangedAfter |
Purchase orders that changed after this timestamp will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02). If CreatedAfter is not specified.Specifying both CreatedAfter and LastUpdatedAfter returns an error.If LastUpdatedAfter is specified, then BuyerEmail and SellerOrderId cannot be specified. You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
ChangedBefore |
Purchase orders that changed before this timestamp will be included in the result. Must be in ISO 8601 date/time format. Date format must be UTC - ISO 8601 format (e.g. short date 2017-02-10 -OR- date and time 2017-02-10T12:10:02) You can use static values or date functions. Supported functions are now|today|yesterday|weekstart|weekend|monthstart|monthend|yearstart|yearend and supported intervals for add/subtract are ms|s|sec|min|h|hour|y|year|d|day|m|month|y|year. Example monthstart-3d (subtract 3days from month start)
Option |
Value |
2023-12-31 |
2023-12-31 |
2023-12-31T00:00:00 |
2023-12-31T00:00:00 |
now |
now |
now-24h |
now-24h |
today |
today |
yesterday |
yesterday |
yearstart-10y |
yearstart-10y |
monthstart |
monthstart |
monthend |
monthend |
yearstart |
yearstart |
yearend |
yearend |
weekstart |
weekstart |
weekend |
weekend |
yearstart-1y |
yearstart-1y |
yearend-1y |
yearend-1y |
monthstart-1d |
monthstart-1d |
monthend+1d |
monthend+1d |
monthend+1d-1y |
monthend+1d-1y |
|
IncludeDetails |
When true, returns purchase orders with complete details. Otherwise, only purchase order numbers are returned. Default value is true.
Option |
Value |
true |
true |
false |
false |
|
SortOrder |
Sort in ascending or descending order by purchase order creation date.
Option |
Value |
ASC |
ASC |
DESC |
DESC |
|
PoItemState |
Current state of the purchase order item. If this value is Cancelled, this API will return purchase orders which have one or more items cancelled by Amazon with updated item quantity as zero.
Option |
Value |
ACCEPTED |
ACCEPTED |
PARTIALLY_ACCEPTED |
PARTIALLY_ACCEPTED |
REJECTED |
REJECTED |
UNCONFIRMED |
UNCONFIRMED |
|
IsPOChanged |
When true, returns purchase orders which were modified after the order was placed. Vendors are required to pull the changed purchase order and fulfill the updated purchase order and not the original one. Default value is false.
Option |
Value |
true |
true |
false |
false |
|
PurchaseOrderState |
Filters purchase orders based on the purchase order state.
Option |
Value |
New |
New |
Acknowledged |
Acknowledged |
Closed |
Closed |
|
OrderingVendorCode |
Filters purchase orders based on the specified ordering vendor code. This value should be same as 'sellingParty.partyId' in the purchase order. If not included in the filter, all purchase orders for all of the vendor codes that exist in the vendor group used to authorize the API client application are returned.
|
Returns orders created or updated during the time frame indicated by the specified parameters. You can also apply a range of filtering criteria to narrow the list of orders returned. If NextToken is present, that will be used to retrieve the orders instead of other criteria. [
Read more...
]
Returns the order information for a specified OrderId [
Read more...
]
Parameter |
Description |
AmazonOrderId |
Filters purchase orders based on the specified orderid.
|
Get Order Items (For Single Order)
Returns the order items information for a specified OrderId [
Read more...
]
Parameter |
Description |
AmazonOrderId |
Filters purchase orders based on the specified orderid.
|
Get Orders Items (For All Orders **Slow**)
Returns the order items information for a specified order search criterial (All orders by Create/Update date, status etc) [
Read more...
]
This is generic endpoint. Use this endpoint when some actions are not implemented by connector. Just enter partial URL (Required), Body, Method, Header etc. Most parameters are optional except URL. [
Read more...
]
Parameter |
Description |
Url |
API URL goes here. You can enter full URL or Partial URL relative to Base URL. If it is full URL then domain name must be part of ServiceURL or part of TrustedDomains
|
Body |
Request Body content goes here
|
IsMultiPart |
Set this option if you want to upload file(s) (i.e. POST RAW file data) or send data using Multi-Part encoding method (i.e. Content-Type: multipart/form-data). Multi-Part request allows you to mix key/value and upload files in same request. On the other hand raw upload allows only single file upload (without any key/value)
==== Raw Upload (Content-Type: application/octet-stream) =====
To upload single file in raw mode check this option and specify full file path starting with @ sign in the Body (e.g. @c:\data\myfile.zip )
==== Form-Data / Multipart Upload (Content-Type: multipart/form-data) =====
To treat your Request data as multi part fields you must specify key/value pairs separated by new lines into RequestData field (i.e. Body). Each key value pair is entered on new-line and key/value are separated using equal sign (=). Preceding and trailing spaces are ignored also blank lines are ignored.
If field value has some any special character(s) then use escape sequence (e.g. For NewLine: \r\n, For Tab: \t, For at (@): \@). When value of any field starts with at sign (@) its automatically treated as File you want to upload. By default file content type is determined based on extension however you can supply content type manually for any field using this way [ YourFileFieldName.Content-Type=some-content-type ]. By default File Upload Field always includes Content-Type in the request (non file fields do not have content-type by default unless you supply manually). For some reason if you dont want to use Content-Type header in your request then supply blank Content-Type to exclude this header altogather [e.g. SomeFieldName.Content-Type= ]. In below example we have supplied Content-Type for file2 and SomeField1, all other fields are using default content-type.
See below Example of uploading multiple files along with additional fields. If some API requires you to pass Content-Type: multipart/form-data rather than multipart/form-data then manually set Request Header => Content-Type: multipart/mixed (it must starts with multipart/ else will be ignored).
file1=@c:\data\Myfile1.txt
file2=@c:\data\Myfile2.json
file2.Content-Type=application/json
SomeField1=aaaaaaa
SomeField1.Content-Type=text/plain
SomeField2=12345
SomeFieldWithNewLineAndTab=This is line1\r\nThis is line2\r\nThis is \ttab \ttab \ttab
SomeFieldStartingWithAtSign=\@MyTwitterHandle
|
Filter |
Enter filter to extract array from response. Example: $.rows[*] --OR-- $.customers[*].orders[*]. Check your response document and find out hierarchy you like to extract
Option |
Value |
No filter |
|
Example1 |
$.store.books[*] |
Example2 (Sections Under Books) |
$.store.books[*].sections[*] |
Example3 (Equals) |
$.store.books[?(@author=='sam')] |
Example4 (Equals - Any Section) |
$..[?(@author=='sam')] |
Example5 (Not Equals - Any Section) |
$..[?(@author!='sam')] |
Example6 (Number less than) |
$.store.books[?(@.price<10)]
Example7 (Regular Expression - Contains Pattern)=$.store.books[?(@author=~ /sam|bob/ )] |
Example8 (Regular Expression - Does Not Contain Pattern) |
$.store.books[?(@author=~ /^((?!sam|bob).)*$/ )] |
Example9 (Regular Expression - Exact Pattern Match) |
$.store.books[?(@author=~ /^sam|bob$/ )] |
Example10 (Regular Expression - Starts With) |
$.store.books[?(@author=~ /^sam/ )] |
Example11 (Regular Expression - Ends With) |
$.store.books[?(@author=~ /sam$/ )] |
Example12 (Between) |
$.store.employees[?( @.hiredate>'2015-01-01' && @.hiredate<'2015-01-04' )] |
|
Headers |
Headers for Request. To enter multiple headers use double pipe or new line after each {header-name}:{value} pair
|
Generic Request (Bulk Write)
This is a generic endpoint for bulk write purpose. Use this endpoint when some actions are not implemented by connector. Just enter partial URL (Required), Body, Method, Header etc. Most parameters are optional except URL. [
Read more...
]
Parameter |
Description |
Url |
API URL goes here. You can enter full URL or Partial URL relative to Base URL. If it is full URL then domain name must be part of ServiceURL or part of TrustedDomains
|
IsMultiPart |
Set this option if you want to upload file(s) (i.e. POST RAW file data) or send data using Multi-Part encoding method (i.e. Content-Type: multipart/form-data). Multi-Part request allows you to mix key/value and upload files in same request. On the other hand raw upload allows only single file upload (without any key/value)
==== Raw Upload (Content-Type: application/octet-stream) =====
To upload single file in raw mode check this option and specify full file path starting with @ sign in the Body (e.g. @c:\data\myfile.zip )
==== Form-Data / Multipart Upload (Content-Type: multipart/form-data) =====
To treat your Request data as multi part fields you must specify key/value pairs separated by new lines into RequestData field (i.e. Body). Each key value pair is entered on new-line and key/value are separated using equal sign (=). Preceding and trailing spaces are ignored also blank lines are ignored.
If field value has some any special character(s) then use escape sequence (e.g. For NewLine: \r\n, For Tab: \t, For at (@): \@). When value of any field starts with at sign (@) its automatically treated as File you want to upload. By default file content type is determined based on extension however you can supply content type manually for any field using this way [ YourFileFieldName.Content-Type=some-content-type ]. By default File Upload Field always includes Content-Type in the request (non file fields do not have content-type by default unless you supply manually). For some reason if you dont want to use Content-Type header in your request then supply blank Content-Type to exclude this header altogather [e.g. SomeFieldName.Content-Type= ]. In below example we have supplied Content-Type for file2 and SomeField1, all other fields are using default content-type.
See below Example of uploading multiple files along with additional fields. If some API requires you to pass Content-Type: multipart/form-data rather than multipart/form-data then manually set Request Header => Content-Type: multipart/mixed (it must starts with multipart/ else will be ignored).
file1=@c:\data\Myfile1.txt
file2=@c:\data\Myfile2.json
file2.Content-Type=application/json
SomeField1=aaaaaaa
SomeField1.Content-Type=text/plain
SomeField2=12345
SomeFieldWithNewLineAndTab=This is line1\r\nThis is line2\r\nThis is \ttab \ttab \ttab
SomeFieldStartingWithAtSign=\@MyTwitterHandle
|
Filter |
Enter filter to extract array from response. Example: $.rows[*] --OR-- $.customers[*].orders[*]. Check your response document and find out hierarchy you like to extract
|
Headers |
Headers for Request. To enter multiple headers use double pipe (||) or new line after each {header-name}:{value} pair
|
Conclusion
In this article we showed you how to connect to Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS) and integrate data without any coding, saving you time and effort.
We encourage you to download Amazon Selling Partner (SP-API) Connector for Azure Data Factory (SSIS) and see how easy it is to use it for yourself or your team.
If you have any questions, feel free to contact ZappySys support team.
You can also open a live chat immediately by clicking on the chat icon below.
Download Amazon Selling Partner (SP-API) Connector for Azure Data Factory (SSIS)
Documentation
More integrations
Other connectors for Azure Data Factory (SSIS)
Other application integration scenarios for Amazon Selling Partner (SP-API)
Common Searches:
How to connect Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)?
How to get Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)?
How to read Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)?
How to load Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)?
How to import Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)?
How to pull Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)?
How to push data to Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)?
How to write data to Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)?
How to POST data to Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)?
Call Amazon Selling Partner (SP-API) API in Azure Data Factory (SSIS)
Consume Amazon Selling Partner (SP-API) API in Azure Data Factory (SSIS)
Amazon Selling Partner (SP-API) Azure Data Factory (SSIS) Automate
Amazon Selling Partner (SP-API) Azure Data Factory (SSIS) Integration
Integration Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)
Consume real-time Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)
Consume real-time Amazon Selling Partner (SP-API) API data in Azure Data Factory (SSIS)
Amazon Selling Partner (SP-API) ODBC Driver | ODBC Driver for Amazon Selling Partner (SP-API) | ODBC Amazon Selling Partner (SP-API) Driver | SSIS Amazon Selling Partner (SP-API) Source | SSIS Amazon Selling Partner (SP-API) Destination
Connect Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)
Load Amazon Selling Partner (SP-API) in Azure Data Factory (SSIS)
Load Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)
Read Amazon Selling Partner (SP-API) data in Azure Data Factory (SSIS)
Amazon Selling Partner (SP-API) API Call in Azure Data Factory (SSIS)