{"id":822,"date":"2016-10-15T04:42:21","date_gmt":"2016-10-15T04:42:21","guid":{"rendered":"http:\/\/zappysys.com\/blog\/?p=822"},"modified":"2026-03-11T07:08:08","modified_gmt":"2026-03-11T07:08:08","slug":"call-amazon-mws-api-using-ssis-marketplace-web-service","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/","title":{"rendered":"How to call Amazon MWS API using SSIS"},"content":{"rendered":"<h2>Introduction<\/h2>\n<div class=\"su-note\"  style=\"border-color:#e2dec9;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fcf8e3;border-color:#ffffff;color:#8a6d3b;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<strong><span style=\"vertical-align: text-bottom;font-size: 0.86em;\">\u26a0\ufe0f<\/span> Deprecation Notice: MWS API is deprecated<\/strong><br \/>\nAmazon&#8217;s MWS (Marketplace Web Service) is being deprecated and <strong>replaced by the newer AWS Selling Partner API (SP-API).<\/strong> For a more robust and secure integration, we <strong>recommend<\/strong> using our <strong><a href=\"\/api\/integration-hub\/amazon-selling-partner-connector\/\">AWS Selling Partner (SP-API) Connector<\/a>.<\/strong> As Amazon is phasing out MWS functionality and eventually plans to fully deprecate it.<br \/>\n<\/div><\/div>\n<p><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1632\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\" alt=\"\" width=\"120\" height=\"120\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png 505w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration-150x150.png 150w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration-300x300.png 300w\" sizes=\"(max-width: 120px) 100vw, 120px\" \/><\/a>In this post you will learn how to <em>call Amazon MWS API<\/em> (<a href=\"https:\/\/developer.amazonservices.com\/\" target=\"_blank\" rel=\"noopener\">Amazon Marketplace Web Service<\/a>) or <a href=\"http:\/\/docs.aws.amazon.com\/AWSECommerceService\/latest\/GSG\/Welcome.html\" target=\"_blank\" rel=\"noopener\">Amazon Product Advertising API<\/a> using <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a>.<\/p>\n<p>Using drag and drop approach you can <em>consume data from Amazon MWS XML Web service.<\/em> In this post we will use\u00a0<a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZappySys XML Source connector<\/a> to read data from Amazon MWS API and load into SQL Server. We will also use <a href=\"\/\/zappysys.com\/blog\/call-rest-api-using-ssis-web-service-task\/\" target=\"_blank\" rel=\"noopener\">REST API Task<\/a> to call any API from Marketplace Web service and save output into Variable.<\/p>\n<h2>Prerequisites<\/h2>\n<p>This post assumes following things<\/p>\n<ol>\n<li>Basic knowledge of SSIS and XML format.<\/li>\n<li>Amazon MWS Account and and valid AWSAccessKeyId and Secret Key to call Amazon MWS API <a href=\"https:\/\/zappysys.com\/blog\/import-amazon-mws-data-power-bi\/#Obtain_MWS_API_Access_Key_Secret_and_Seller_ID\" target=\"_blank\" rel=\"noopener\">(How to obtain Key \/ Secret and SellerId ? )<\/a>.<\/li>\n<li>You have tested few API calls using <a href=\"https:\/\/mws.amazonservices.com\/scratchpad\/index.html\" target=\"_blank\" rel=\"noopener\">Amazon MWS Scratchpad<\/a>\u00a0this will give you idea about various API you can call and parameters you need to pass.<\/li>\n<\/ol>\n<h2>Testing MWS Requests using ScratchPad<\/h2>\n<p>Very first step we recommend before you call MWS API in SSIS is to get familiar with\u00a0<a href=\"https:\/\/mws.amazonservices.com\/scratchpad\/index.html\" target=\"_blank\" rel=\"noopener\">Amazon MWS Scratchpad<\/a>\u00a0tool. Check this article for <a href=\"https:\/\/zappysys.com\/blog\/import-amazon-mws-data-power-bi\/#About_Amazon_MWS_API\">detailed steps<\/a>.\u00a0 You can also use <a href=\"https:\/\/zappysys.com\/blog\/how-to-use-fiddler-to-analyze-http-web-requests\/\">Fiddler<\/a> to debug some requests.<\/p>\n<div id=\"attachment_4847\" style=\"width: 933px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/amazon-mws-api-response-scratchpad-listmatchingproducts-example.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-4847\" class=\"size-full wp-image-4847\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/amazon-mws-api-response-scratchpad-listmatchingproducts-example.png\" alt=\"Calling Amazon MWS API in Scratchpad Testing Tool (Response Details Tab) - ListMatchingProducts Example\" width=\"923\" height=\"527\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/amazon-mws-api-response-scratchpad-listmatchingproducts-example.png 923w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/amazon-mws-api-response-scratchpad-listmatchingproducts-example-300x171.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/amazon-mws-api-response-scratchpad-listmatchingproducts-example-768x439.png 768w\" sizes=\"(max-width: 923px) 100vw, 923px\" \/><\/a><p id=\"caption-attachment-4847\" class=\"wp-caption-text\">Calling Amazon MWS API in Scratchpad Testing Tool (Response Details Tab) &#8211; ListMatchingProducts Example<\/p><\/div>\n<h2>Call Amazon MWS API using SSIS<\/h2>\n<p>To consume data from any XML Source (File, SOAP Web Service or XML API) you can use \u00a0<a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZappySys XML Source<br \/>\nconnector.<\/a>\u00a0or <a href=\"\/\/zappysys.com\/blog\/call-rest-api-using-ssis-web-service-task\/\" target=\"_blank\" rel=\"noopener\">REST API Task.<\/a>\u00a0In below example you will see how to call Amazon MWS API and save output into Variable.\u00a0With this approach you can call any API\u00a0(GET \/ POST \/ DELETE \/ PUT)<\/p>\n<ol>\n<li>Download and Install SSIS PowerPack<\/li>\n<li>Create test package<\/li>\n<li>From SSIS toolbox drag <a href=\"\/\/zappysys.com\/blog\/call-rest-api-using-ssis-web-service-task\/\" target=\"_blank\" rel=\"noopener\">ZS REST API Task<\/a>\u00a0 and double click on the task to configure it<\/li>\n<li>Select Request URL Access Mode = [Url from Connection]<\/li>\n<li>Enter URL as below\n<pre class=\"lang:default decode:true\">https:\/\/mws.amazonservices.com\/Orders\/2013-09-01<\/pre>\n<p>In above URL<br \/>\n** mws.amazonservices.com =&gt; This is your endpoint. If you are not in USA then <a href=\"http:\/\/docs.developer.amazonservices.com\/en_UK\/dev_guide\/DG_Endpoints.html\" target=\"_blank\" rel=\"noopener\">Click here<\/a> to find correct endpoint<br \/>\n** \/Orders =&gt; That&#8217;s your API you want to call<br \/>\n** \/2013-09-01 =&gt; That&#8217;s your API version (You have to add this same version in your POST Body too (see next section).<\/li>\n<li>In Select Url Connection dropdown select New OAUTH connection option.<\/li>\n<li>When prompted on OAuth connection UI select Provider=Amazon MWS, Enter AWSAccessKey and Secret key and Click OK (If you have MWSAuthToken then enter in Access Token field else leave it empty). Do not test because it may not work yet.\n<div id=\"attachment_825\" style=\"width: 685px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-marketplace-web-service-connection-manager.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-825\" class=\"size-full wp-image-825\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-marketplace-web-service-connection-manager.png\" alt=\"SSIS OAuth Connection - Call Amazon MWS API (Marketplace Web service API) \" width=\"675\" height=\"475\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-marketplace-web-service-connection-manager.png 675w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-marketplace-web-service-connection-manager-300x211.png 300w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><\/a><p id=\"caption-attachment-825\" class=\"wp-caption-text\">SSIS OAuth Connection &#8211; Call Amazon MWS API (Marketplace Web service API)<\/p><\/div><\/li>\n<li>Another Setting you may turn on is Retry Handling. This allows to over come ThresholdLimitReached error when we <a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/dev_guide\/DG_Throttling.html\" target=\"_blank\" rel=\"noopener\">call API too fast<\/a>.\n<div id=\"attachment_7156\" style=\"width: 599px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/http-retry-settings-oauth-connection.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7156\" class=\"size-full wp-image-7156\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/http-retry-settings-oauth-connection.png\" alt=\"Retry Options\" width=\"589\" height=\"429\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/http-retry-settings-oauth-connection.png 589w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/http-retry-settings-oauth-connection-300x219.png 300w\" sizes=\"(max-width: 589px) 100vw, 589px\" \/><\/a><p id=\"caption-attachment-7156\" class=\"wp-caption-text\">Retry Options<\/p><\/div><\/li>\n<li>Now select Method=POST, and in the body enter following\n<pre class=\"lang:default decode:true\">Action=GetServiceStatus&amp;SellerId=A77XXXXXXX&amp;Version=2013-09-01<\/pre>\n<p>If your API requires pagination (more than 100 records from response) then refer next section (Sample Package). In the case of Pagination your second request may look like below<\/p>\n<pre class=\"lang:default decode:true\">Action=YourActionNameWithNextToken&amp;SellerId=A77XXXXXXX&amp;Version=2013-09-01&amp;NextToken={{User::vNextToken,FUN_URLENC}}<\/pre>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> Enter all required parameters in the following format, as shown below. All values need to be URL-encoded. If you use SSIS variable, use it along with <strong>FUN_URLENC<\/strong> format specifier, e.g.\u00a0<strong>{{User::myVariable,FUN_URLENC}}<\/strong>. If you use a hard-coded value, and not sure if it is URL-encoded, then encode it with the same <strong>FUN_URLENC<\/strong> format specifier\/function, e.g. <strong>&lt;&lt;myValue,FUN_URLENC&gt;&gt;<\/strong>. Always check if SSIS configuration matches the one you see in\u00a0<em>MWS ScratchPad Request<\/em> <em>Details<\/em>.<br \/>\n<strong>Format:<\/strong><br \/>\n<code>param1=value1&amp;param2=&lt;&lt;value2,FUN_URLENC&gt;&gt;&amp;param3={{User::myVar,FUN_URLENC}}<\/code><\/div><\/div><\/li>\n<li>Now click Test and see content in the Preview window.\n<div id=\"attachment_826\" style=\"width: 786px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-api-marketplace-webservice-use-rest-api-task.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-826\" class=\"size-full wp-image-826\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-api-marketplace-webservice-use-rest-api-task.png\" alt=\"SSIS REST API Task - Call Amazon MWS API - Get XML data save into SSIS variable\" width=\"776\" height=\"652\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-api-marketplace-webservice-use-rest-api-task.png 776w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-api-marketplace-webservice-use-rest-api-task-300x252.png 300w\" sizes=\"(max-width: 776px) 100vw, 776px\" \/><\/a><p id=\"caption-attachment-826\" class=\"wp-caption-text\">SSIS REST API Task &#8211; Call Amazon MWS API &#8211; Get XML data save into SSIS variable<\/p><\/div><\/li>\n<li>If you wish to save response data into SSIS variable then goto response Tab and check save option and select variable name.<\/li>\n<\/ol>\n<h2>Amazon MWS API Pagination<\/h2>\n<p>Many Amazon MWS API calls by default don&#8217;t return all records (Explained <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/dev_guide\/DG_NextToken.html\" target=\"_blank\" rel=\"noopener\">here<\/a>). Rather than returning all rows you may get partial response (e.g. Max 50\u00a0or 100 rows). If you want to\u00a0get all records then you\u00a0have to\u00a0use NextToken\u00a0\u00a0found in your XML. For API which requires pagination, in that case your POST body may be different for 2nd or higher requests. Notice how we changed Action and appended NextToken=xxxxxxxxxxx in the second request. Also notice we used encoded token (URL encoded). This is very important because as per Amazon Specs this value has to be Url Encoded.<\/p>\n<p>We also documented similar use case of <a href=\"https:\/\/zappysys.com\/blog\/import-amazon-mws-data-power-bi\/#Using_Pagination_in_Amazon_MWS_API_calls\" target=\"_blank\" rel=\"noopener\">Amazon MWS Pagination for Power BI (Check this one)<\/a> its mostly same setup except 2-3 properties might be named different way.<\/p>\n<p>Now lets look at sample request \/ response for paginated MWS requests (For clarity we have removed many common Parameters which are automatically added at runtime e.g. Signature, Timestamp). We use <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/orders-2013-09-01\/Orders_ListOrders.html\" target=\"_blank\" rel=\"noopener\">ListOrders<\/a> (First Request) and <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/orders-2013-09-01\/Orders_ListOrdersByNextToken.html\" target=\"_blank\" rel=\"noopener\">ListOrderByNextToken<\/a> (Second+ requests)<\/p>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">NOTE: Most of Amazon MWS API calls are heavily throttled means you cannot call more than X calls per minute or hour. So Refer to <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/dev_guide\/DG_Throttling.html\" target=\"_blank\" rel=\"noopener\">Throttling Limits<\/a> for each API Endpoint.<\/div><\/div>\n<p><strong>First Request<\/strong><\/p>\n<pre class=\"lang:default decode:true\">POST https:\/\/mws.amazonservices.com\/Orders\/2013-09-01\r\n\r\nAction=ListOrders&amp;SellerId=A10zzzzzzz&amp;CreatedAfter=2018-09-01T04%3A00%3A00Z<\/pre>\n<p><strong>First Response<\/strong><\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;?xml version=\"1.0\"?&gt;\r\n&lt;ListOrdersResponse xmlns=\"https:\/\/mws.amazonservices.com\/\r\n    Orders\/2013-09-01\"&gt;\r\n    &lt;ListOrdersResult&gt;\r\n        &lt;NextToken&gt;2YgYW55IxxxxxxxxxxxxVyZS4=&lt;\/NextToken&gt;\r\n        &lt;LastUpdatedBefore&gt;2017-02-25T18%3A10%3A21.687Z&lt;\/LastUpdatedBefore&gt;\r\n        &lt;Orders&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n        &lt;\/Orders&gt;\r\n    &lt;\/ListOrdersResult&gt;\r\n&lt;\/ListOrdersResponse&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Second Request or higher (MWS API with Pagination using NextToken)<\/strong><\/p>\n<pre class=\"lang:default decode:true\">POST https:\/\/mws.amazonservices.com\/Orders\/2013-09-01\r\n\r\nAction=ListOrdersByNextToken&amp;SellerId=A10zzzzzzz&amp;CreatedAfter=2018-09-01T04%3A00%3A00Z&amp;NextToken=YOUR_ENCODED_TOKEN_FROM_PREV_REQUEST<\/pre>\n<p><strong>Second or higher Response<\/strong><\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;?xml version=\"1.0\"?&gt;\r\n&lt;ListOrdersByNextTokenResponse xmlns=\"https:\/\/mws.amazonservices.com\/\r\n    Orders\/2013-09-01\"&gt;\r\n    &lt;ListOrdersByNextTokenResult&gt;\r\n        &lt;NextToken&gt;2YgYW55IxxxxxxxxxxxxVyZS4=&lt;\/NextToken&gt;\r\n        &lt;LastUpdatedBefore&gt;2017-02-25T18%3A10%3A21.687Z&lt;\/LastUpdatedBefore&gt;\r\n        &lt;Orders&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n        &lt;\/Orders&gt;\r\n    &lt;\/ListOrdersResult&gt;\r\n&lt;\/ListOrdersResponse&gt;<\/pre>\n<h3>Sample SSIS Package<\/h3>\n<p>If you want to see complete working package for pagination pattern then <a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/Amazon_MWS_API_With_LoopEasy_2012.zip\" target=\"_blank\" rel=\"noopener\">download from here<\/a>. Change AccessKey, SecretKey, SellerID and Path as needed to make this package work.<\/p>\n<p>Here is the\u00a0screenshot of example SSIS package for Amazon MWS.<\/p>\n<div id=\"attachment_7144\" style=\"width: 641px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-pagination-example-listorders-nexttoken.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7144\" class=\"size-full wp-image-7144\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-pagination-example-listorders-nexttoken.png\" alt=\"Amazon MWS APi Pagination (ListOrders , ListOrdersByNextToken Example)\" width=\"631\" height=\"761\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-pagination-example-listorders-nexttoken.png 631w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-api-pagination-example-listorders-nexttoken-249x300.png 249w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/a><p id=\"caption-attachment-7144\" class=\"wp-caption-text\">Amazon MWS APi Pagination (ListOrders , ListOrdersByNextToken Example)<\/p><\/div>\n<p>&nbsp;<\/p>\n<h3>Copy\/Paste Properties<\/h3>\n<p>Here is copy\/paste values for properties listed above.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">DirectPath:  https:\/\/mws.amazonservices.com\/Orders\/2013-09-01\r\nEnablePageTokenForBody: True\r\nFilter:  $.ListOrders[$tag$]Response.ListOrders[$tag$]Result.Orders.Order[*]\r\nHasDifferentNextPageInfo: True\r\nHttpRequestData:  Action=ListOrders[$tag$]&amp;SellerId=A1xxxxxxxx&amp;CreatedAfter=2018-09-01T04%3A00%3A00Z&amp;MarketplaceId.Id.1=ATVPDKIKX0DER\r\nHttpRequestMethod:  POST\r\nNextUrlAttribute: $.ListOrders[$tag$]Response.ListOrders[$tag$]Result.NextToken\r\nNextUrlSuffix: &amp;NextToken=&lt;%nextlink_encoded%&gt;\r\nNetUrlWait: 10000 (ms) -- slow down to avoid throttling ... Max 6 requests per minute, increase if you get API Limit Error\r\nPagePlaceholders:  body=|ByNextToken;filter=|ByNextToken\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>Understanding Pagination Properties<\/h3>\n<p>Here are various properties you have to set for Pagination.<\/p>\n<div class=\"su-table su-table-alternate\">\n<table style=\"border-collapse: collapse;width: 100%;height: 154px\" border=\"1\">\n<tbody>\n<tr style=\"height: 22px\">\n<td style=\"width: 14.5161%;height: 22px\">Property<\/td>\n<td style=\"width: 85.4839%;height: 22px\">Description<\/td>\n<\/tr>\n<tr style=\"height: 66px\">\n<td style=\"width: 14.5161%;height: 66px\">Src<\/td>\n<td style=\"width: 85.4839%;height: 66px\">Change this to correct URL. Look at Scratchpad Response Details Tab and Findout first line after POST and before &#8220;?&#8221; . e.g.\u00a0\/Orders\/2013-09-01\u00a0 this will be used in your URL.<br \/>\n<strong>Example:\u00a0<\/strong><br \/>\nhttps:\/\/mws.amazonservices.com\/Orders\/2013-09-01<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 14.5161%;height: 22px\">Body (i.e. RequestData)<\/td>\n<td style=\"width: 85.4839%;height: 22px\">Scratchpad shows HTTP POST section. You can copy that and remove\u00a0 System supplied parameters and then arrange all in one line to form your Body for request.<\/p>\n<p><strong>Example:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">POST \/Orders\/2013-09-01?AWSAccessKeyId=AKxxxxxxxxxx\r\n  &amp;Action=ListOrders\r\n  &amp;SellerId=A10zzzzzzz\r\n  &amp;SignatureVersion=2\r\n  &amp;Timestamp=2018-09-17T21%3A35%3A57Z\r\n  &amp;Version=2013-09-01\r\n  &amp;Signature=3GigipfRsQgzzzzzzzzzzzzzs%3D\r\n  &amp;SignatureMethod=HmacSHA256<\/pre>\n<p>Above HTTP POST can be used as below for your Body in ZappySys Driver. Rest of the parameters are automatically supplied by system. See special placeholder named [$tag$] this gets replaced at runtime when you set\u00a0<strong>EnablePageTokenForBody=True<\/strong> and <strong>HasDifferentNextPageInfo=True<\/strong><\/p>\n<pre class=\"lang:default decode:true\">Action=ListOrders[$tag$]&amp;SellerId=A10zzzzzzz&amp;CreatedAfter=2018-09-01T04%3A00%3A00Z<\/pre>\n<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 14.5161%;height: 22px\">Filter<\/td>\n<td style=\"width: 85.4839%;height: 22px\">Change this parameter according to XML structure in the response.<br \/>\nFor example: If you see below response (first xml) in Scratchpad then your Filter will be<br \/>\n<strong>$.ListOrdersResponse.ListOrdersResult.Orders.Order[*]<\/strong><br \/>\nto enable pagination refer to <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/orders-2013-09-01\/Orders_ListOrdersByNextToken.html\" target=\"_blank\" rel=\"noopener\">Sample listed here<\/a> (click Example response at the bottom of that page). In second response and onwards your Filter should be below (See Bold Part).<br \/>\n$ListOrders<strong>ByNextToken<\/strong>Response.ListOrders<strong>ByNextToken<\/strong>Result.Orders.Order[*]However in Driver we <strong>replace ByNextToken<\/strong> with <strong>[$tag$]<\/strong>. Like below. Using [$tag$] will automatically pick up the correct filter based on page number. You must set HasDifferentNextPageInfo=True to use [$tag$] feature.<strong>$.ListOrders[$tag$]Response.ListOrders[$tag$]Result.Orders.Order[*]<\/strong>Example of <strong>first page response<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\"?&gt;\r\n&lt;ListOrdersResponse xmlns=\"https:\/\/mws.amazonservices.com\/\r\n    Orders\/2013-09-01\"&gt;\r\n    &lt;ListOrdersResult&gt;\r\n        &lt;NextToken&gt;2YgYW55IxxxxxxxxxxxxVyZS4=&lt;\/NextToken&gt;\r\n        &lt;LastUpdatedBefore&gt;2017-02-25T18%3A10%3A21.687Z&lt;\/LastUpdatedBefore&gt;\r\n        &lt;Orders&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n        &lt;\/Orders&gt;\r\n    &lt;\/ListOrdersResult&gt;\r\n&lt;\/ListOrdersResponse&gt;<\/pre>\n<p>Example of <strong>next page response<\/strong><\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\"?&gt;\r\n&lt;ListOrdersByNextTokenResponse xmlns=\"https:\/\/mws.amazonservices.com\/\r\n    Orders\/2013-09-01\"&gt;\r\n    &lt;ListOrdersByNextTokenResult&gt;\r\n        &lt;NextToken&gt;2YgYW55IxxxxxxxxxxxxVyZS4=&lt;\/NextToken&gt;\r\n        &lt;LastUpdatedBefore&gt;2017-02-25T18%3A10%3A21.687Z&lt;\/LastUpdatedBefore&gt;\r\n        &lt;Orders&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n            &lt;Order&gt; ....... &lt;\/Order&gt;\r\n        &lt;\/Orders&gt;\r\n    &lt;\/ListOrdersResult&gt;\r\n&lt;\/ListOrdersResponse&gt;<\/pre>\n<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 14.5161%;height: 22px\">NextUrlAttribute<\/td>\n<td style=\"width: 85.4839%;height: 22px\">This property defines which attributes indicate Token for next page. You can use this token in Body of next request (see\u00a0NextUrlSuffix and\u00a0EnablePageTokenForBody). You must set\u00a0<strong>EnablePageTokenForBody=true<\/strong> to use Extracted token in Body.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 14.5161%\">StopIndicatorAttribute<\/td>\n<td style=\"width: 85.4839%\">Some APIs like\u00a0 <a href=\"https:\/\/docs.developer.amazonservices.com\/en_US\/reports\/Reports_GetReportRequestList.html\">GetReportRequestList<\/a>\u00a0stop pagination based on <strong>HasNext<\/strong> attribute value. (ListOrders doesnt need this property to be set). Use this property to extract HasNext from response by supplying correct Filter expression. You also need to set\u00a0NextUrlEndIndicator property which defines static value which indicates the last page. Example properties as below.<\/p>\n<pre class=\"lang:default decode:true\">NextUrlEndIndicator=false\r\nStopIndicatorAttributeOrExpr= $.GetReportRequestList[$tag$]Response.GetReportRequestList[$tag$]Result.HasNext<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 14.5161%\">NextUrlSuffix<\/td>\n<td style=\"width: 85.4839%\">This is used to create a string for NextToken attribute for next page request. If you want to just append extracted token to Body then you dont have to set this but in our case, we have to use &amp;NextToken=EncodedValueOfExtractedToken so we have used\u00a0<strong>&amp;NextToken=&lt;%nextlink_encoded%&gt;<\/strong> expression.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 14.5161%\">PagePlaceholders<\/td>\n<td style=\"width: 85.4839%\">This property contains [$tag$] values for first page and next pages. You can define tags for filter, body or header. Each pair must be pipe delimited. First value or pair is [$tag$]\u00a0 for first request and second value of the pair is [$tag$] for any next request afterwards. Our first request use blank value for [$tag$].<br \/>\nExample:\u00a0\u00a0<strong>PagePlaceholders=&#8217;body=|ByNextToken;filter=|ByNextToken&#8217;<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 14.5161%\">HasDifferentNextPageInfo<\/td>\n<td style=\"width: 85.4839%\">Set to True &#8211; This enables use of [$tag$] inside body, filter, headers to use different values of first request and second onwards requests.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 14.5161%\">EnablePageTokenForBody<\/td>\n<td style=\"width: 85.4839%\">Set to True &#8211; This appends value extracted from\u00a0<strong>NextUrlSuffix<\/strong>\u00a0inside body (e.g. NextToken).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Amazon MWS API Pagination (For Old Version)<\/h2>\n<p>So in previous section we saw how to achieve pagination in one step (for newer version of SSIS PowerPack). But there will be a case you cannot use latest SSIS PowerPack or you want to take complete control on each aspect of pagination. In such case use below method (Depreciated).\u00a0 In newer version we added many new properties so you dont have to do Loop pattern like below.<\/p>\n<h3>Sample SSIS Package<\/h3>\n<p>If you want to see complete working package for pagination pattern then <a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/11\/SSIS_Amazon_MWS_API_With_Loop_Example.zip\" target=\"_blank\" rel=\"noopener\">download from here<\/a>. Change AccessKey, SecretKey, SellerID and Path as needed to make this package work.<\/p>\n<p>Here is the\u00a0screenshot of example SSIS package for Amazon MWS.<\/p>\n<div id=\"attachment_893\" style=\"width: 730px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/read-amazon-mws-web-api-paginate-nexttoken-load-to-sql-server.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-893\" class=\"wp-image-893 size-large\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/read-amazon-mws-web-api-paginate-nexttoken-load-to-sql-server-1024x671.png\" alt=\"SSIS Example Package - Read data from Amazon MWS Web service (API Call). Paginate API calls using NextToken\" width=\"720\" height=\"472\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/read-amazon-mws-web-api-paginate-nexttoken-load-to-sql-server-1024x671.png 1024w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/read-amazon-mws-web-api-paginate-nexttoken-load-to-sql-server-300x196.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/read-amazon-mws-web-api-paginate-nexttoken-load-to-sql-server.png 1040w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><p id=\"caption-attachment-893\" class=\"wp-caption-text\">SSIS Example Package &#8211; Read data from Amazon MWS Web service (API Call). Paginate API calls using NextToken<\/p><\/div>\n<h2>Load Amazon MWS API data into SQL Server using SSIS<\/h2>\n<p>In this section we will see how to use <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZappySys XML Source connector<\/a>\u00a0to read data from Amazon MWS Web Service and load into SQL Server<\/p>\n<p>For making things simple we are calling<\/p>\n<ol>\n<li>Download and Install SSIS PowerPack<\/li>\n<li>Create test package<\/li>\n<li>From SSIS toolbox drag Data Flow task and double click task to go to Data Flow designer<\/li>\n<li>Drag <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZS XML Source<\/a> from SSIS Toolbox<\/li>\n<li>Configure XML Source as below\n<div id=\"attachment_827\" style=\"width: 704px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-xml-source-read-from-amazon-mws-api.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-827\" class=\"size-full wp-image-827\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-xml-source-read-from-amazon-mws-api.png\" alt=\"SSIS XML Source - Read data from Amazon MWS API (Amazon Marketplace Web service call)\" width=\"694\" height=\"683\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-xml-source-read-from-amazon-mws-api.png 694w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-xml-source-read-from-amazon-mws-api-300x295.png 300w\" sizes=\"(max-width: 694px) 100vw, 694px\" \/><\/a><p id=\"caption-attachment-827\" class=\"wp-caption-text\">SSIS XML Source &#8211; Read data from Amazon MWS API (Amazon Marketplace Web service call)<\/p><\/div><\/li>\n<li>Drag OLEDB destination from SSIS Toolbox.<\/li>\n<li>Connect XML Source to OLEDB Destination and map input column to target table<\/li>\n<li>Execute dataflow\n<div id=\"attachment_828\" style=\"width: 791px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-get-data-from-amazon-mws-web-service-call.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-828\" class=\"size-full wp-image-828\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-get-data-from-amazon-mws-web-service-call.png\" alt=\"Get data from Amazon MWS API - Save to File or SQL Server using SSIS\" width=\"781\" height=\"314\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-get-data-from-amazon-mws-web-service-call.png 781w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-get-data-from-amazon-mws-web-service-call-300x121.png 300w\" sizes=\"(max-width: 781px) 100vw, 781px\" \/><\/a><p id=\"caption-attachment-828\" class=\"wp-caption-text\">Get data from Amazon MWS API &#8211; Save to File or SQL Server using SSIS<\/p><\/div><\/li>\n<\/ol>\n<h2>Working with Amazon MWS Feed API (e.g. Upload file)<\/h2>\n<p>Amazon MWS Provides Feed APIs which has slight different requirements. Important requirement in Feed file upload is you have to supply Content MD5 Hash. If you use SSIS PowerPack then you don&#8217;t have to worry about that complexity because calculating MD5 Hash is automatically done.<\/p>\n<h3>Upload Amazon MWS Feed File in TSV \/ CSV\u00a0format (Tab separated)<\/h3>\n<p>Here is the screenshot for how to upload Tab separated values in CSV file. You can specify body from Variable or Read from file. If you read from file then must check File Upload\/Multi-Part option and start path with @ symbol as below.<\/p>\n<div id=\"attachment_975\" style=\"width: 965px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-feed-api-submitfeed-upload-file-csv-tab-format.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-975\" class=\"size-full wp-image-975\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-feed-api-submitfeed-upload-file-csv-tab-format.png\" alt=\"Call Amazon MWS Feed API - Upload CSV file format (Tab separated values - TSV) - XML\" width=\"955\" height=\"623\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-feed-api-submitfeed-upload-file-csv-tab-format.png 955w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-call-amazon-mws-feed-api-submitfeed-upload-file-csv-tab-format-300x196.png 300w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/a><p id=\"caption-attachment-975\" class=\"wp-caption-text\">Call Amazon MWS Feed API &#8211; Upload CSV file format (Tab separated values &#8211; TSV)<\/p><\/div>\n<h3>Upload Amazon MWS Feed File in XML format<\/h3>\n<p>To upload feed file in XML format use same settings as above except Content Type should be XML (text\/xml) (Select in the dropdown)<\/p>\n<h2>Calling Amazon Product Advertising API<\/h2>\n<p>If you have need to call <a href=\"http:\/\/docs.aws.amazon.com\/AWSECommerceService\/latest\/GSG\/Welcome.html\" target=\"_blank\" rel=\"noopener\">Amazon Product Advertising API<\/a> then also you can use above techniques (Use MWS Provider on OAuth connection) to call Product Advertise API. Both API (MWS API and Product Advertise API) use same signature hashing algorithm so its possible to use MWS Provider for Hashing. You may have to change your API URL parameters as needed when you call Amazon Product Advertising API. Basically when you call any MWS or Product Advertising API using GET method then OAuth connection manager automatically appends Signature to URL at runtime.<\/p>\n<h2>Import data from MWS Custom Reports (Inventory Report Example)<\/h2>\n<p>Now lets look at how to extract data from <a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/reports\/Reports_ReportType.html\" target=\"_blank\" rel=\"noopener\">Custom Report API<\/a>\u00a0. Reading data from Custom Reports not single step process because report generation is Job style API. Which means you send report request and wait\u00a0 until its done. Once Report ready you have to read in CSV format or XML. Some Reports only available in CSV format.\u00a0<a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/reports\/Reports_Overview.html\" target=\"_blank\" rel=\"noopener\">Check this post<\/a> to understand how complex it can be to get data. We will make it simple for you to understand this in 3 steps. Basically calling reports requires minimum 3 API calls (see below)<\/p>\n<ol>\n<li>Create a new report request &#8211; Cal\u00a0<a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/reports\/Reports_RequestReport.html\" target=\"_blank\" rel=\"noopener\">RequestReport<\/a>\u00a0API . It returns <strong>ReportRequestId<\/strong> (You can use it in the next step)<\/li>\n<li>Check Report Status see its done &#8211; Call <a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/reports\/Reports_GetReportRequestList.html\" target=\"_blank\" rel=\"noopener\">GetReportRequestList<\/a>\u00a0API (Pass <strong>ReportRequestId<\/strong> got in the previous step to get data for only one Report request we care). Keep checking Report Status every few seconds until you get <strong>_DONE_<\/strong> status in response.<\/li>\n<li>Read Report Data &#8211; Call <a href=\"https:\/\/docs.developer.amazonservices.com\/en_UK\/reports\/Reports_GetReport.html\" target=\"_blank\" rel=\"noopener\">GetReport<\/a>. This API call returns CSV or XML data. So use correct component for this step. If CSV data is returned then we must use <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-csv-file-source-flat-file-web-api\/\" target=\"_blank\" rel=\"noopener\">CSV Source<\/a> rather than <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">XML Driver<\/a>.<\/li>\n<\/ol>\n<p>Now lets see how to read Amazon MWS custom report in SSIS. In this example, We will get Inventory by calling\u00a0<strong>_GET_MERCHANT_LISTINGS_DATA_<\/strong> report type.<\/p>\n<h3>Download Sample Package for MWS Report<\/h3>\n<p>To make things simple we have created a demo package &#8211; ready to go.<br \/>\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/Amazon_MWS_API_GetReport_2012.zip\">Download SSIS 2012 Demo &#8211; Amazon_MWS_API_GetReport_2012<\/a>.<\/p>\n<h3>Prepare demo package for first run<\/h3>\n<p>Once you download and extract above sample package. Import to your existing SSIS Solution. Its SSIS 2012 format so it may upgrade to higher version if you using SSIS 2014, 2016 or 2017.<\/p>\n<p>Once package is opened perform following steps in before you can execute the package.<\/p>\n<ol>\n<li>Enter MarketplaceId, SellerId in Variables. Double click OAuth Connection and enter your MWS Account Key and Secret.<\/li>\n<li>Create c:\\temp directory (This is where we will save final report file)<\/li>\n<li>Run this package<\/li>\n<li>Go to Execution log and Find ReportId (This you can hardcode in Variables for Design time Preview \/ Metadata changes etc)<\/li>\n<\/ol>\n<p>See below package screenshot<\/p>\n<div id=\"attachment_7128\" style=\"width: 794px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-report-csv-xml-format.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7128\" class=\"size-full wp-image-7128\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-report-csv-xml-format.png\" alt=\"Read data from Amazon MWS Report in SSIS (Get Inventory Listing Example)\" width=\"784\" height=\"752\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-report-csv-xml-format.png 784w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-report-csv-xml-format-300x288.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-report-csv-xml-format-768x737.png 768w\" sizes=\"(max-width: 784px) 100vw, 784px\" \/><\/a><p id=\"caption-attachment-7128\" class=\"wp-caption-text\">Read data from Amazon MWS Report in SSIS (Get Inventory Listing Example)<\/p><\/div>\n<h3>Steps Explained<\/h3>\n<p>Now lets see each steps in depth. We broken whole process in 3 groups.<\/p>\n<h4>Create Report Request (Step1)<\/h4>\n<p>This is the first step how you initiate report request.\u00a0 Use <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-rest-api-web-service-task\/\">REST API Task<\/a> to call this step. Here is raw request. Many items in body added at runtime (e.g. Signature, Timestamp).<\/p>\n<ul>\n<li>On Request tab see how we used SSIS Variables to get many values at runtime dynamically.<\/li>\n<li>On Response Tab we have to extract RequestId and save into variable.<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">POST \r\nhttps:\/\/mws.amazonservices.com\/Reports\/2009-01-01\r\n\r\nAWSAccessKeyId=Axxxxxxxxx&amp;Action=RequestReport&amp;MarketplaceId=ATVPDKIKX0DER&amp;ReportType=_GET_MERCHANT_LISTINGS_DATA_&amp;SellerId=Axxxxxxxxx&amp;SignatureMethod=HmacSHA256&amp;SignatureVersion=2&amp;Timestamp=2019-06-05T21%3A23%3A31.090Z&amp;Signature=2AbGQQ4xxxxxxxxxxxxxxxxxxxxjJzox%2FU%3D<\/pre>\n<div id=\"attachment_7129\" style=\"width: 869px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-call-report-request.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7129\" class=\"size-full wp-image-7129\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-call-report-request.png\" alt=\"RequestReport Action - Generate Amazon MWS Custom Report\" width=\"859\" height=\"628\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-call-report-request.png 859w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-call-report-request-300x219.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-amazon-mws-call-report-request-768x561.png 768w\" sizes=\"(max-width: 859px) 100vw, 859px\" \/><\/a><p id=\"caption-attachment-7129\" class=\"wp-caption-text\">RequestReport Action &#8211; Generate Amazon MWS Custom Report<\/p><\/div>\n<div id=\"attachment_7130\" style=\"width: 681px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-response-extract-xml-value-xpath-expression.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7130\" class=\"size-full wp-image-7130\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-response-extract-xml-value-xpath-expression.png\" alt=\"Extract value from XML response using XPATH and save to Variable (Get RequestId Example)\" width=\"671\" height=\"389\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-response-extract-xml-value-xpath-expression.png 671w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-response-extract-xml-value-xpath-expression-300x174.png 300w\" sizes=\"(max-width: 671px) 100vw, 671px\" \/><\/a><p id=\"caption-attachment-7130\" class=\"wp-caption-text\">Extract value from XML response using XPATH and save to Variable (Get RequestId Example)<\/p><\/div>\n<p>Here is how to configure above task<\/p>\n<ol>\n<li><\/li>\n<\/ol>\n<h4>Wait until data is ready (Step2)<\/h4>\n<p>Once we send RepotRequest and we have RequestId we can call step2 using REST API Task. In this Task we can use Status Check Feature. This is pretty handy feature because we dont have to implement Loop in SSIS. Basically we have to keep checking report until we get _DONE_ status in the response (ReportProcessingStatus node in XML)<\/p>\n<p>Here is how to configure the task.<\/p>\n<ol>\n<li>Request Tab Configuration.<br \/>\n<strong>URL:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">https:\/\/mws.amazonservices.com\/Reports\/2009-01-01<\/span><br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Body:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">Action=GetReportRequestList&amp;ReportRequestIdList.Id.1={{User::ReportRequestId}}&amp;MarketplaceId={{User::MarketplaceId}}&amp;SellerId={{User::SellerId}}<\/span><\/li>\n<li>Response Setting Tab Configuration<br \/>\n<strong>Response content type:<\/strong> Xml<br \/>\n<strong>Filter Expression:<\/strong>\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline\">\/\/*[local-name() = &#8216;ReportProcessingStatus&#8217;]\u00a0\u00a0<\/span><\/li>\n<li>Status Check Tab<br \/>\n<strong>Check Enable Status<\/strong><br \/>\n<strong>Success Value:<\/strong>\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline\">_DONE_<\/span><br \/>\nCheck Every <strong>5<\/strong> Seconds<\/li>\n<\/ol>\n<div id=\"attachment_7131\" style=\"width: 678px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-task-status-check-wait-until-ready-loop.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7131\" class=\"size-full wp-image-7131\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-task-status-check-wait-until-ready-loop.png\" alt=\"REST API Task - Status Check Feature (Wait until data is ready loop)\" width=\"668\" height=\"610\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-task-status-check-wait-until-ready-loop.png 668w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/ssis-rest-api-task-status-check-wait-until-ready-loop-300x274.png 300w\" sizes=\"(max-width: 668px) 100vw, 668px\" \/><\/a><p id=\"caption-attachment-7131\" class=\"wp-caption-text\">REST API Task &#8211; Status Check Feature (Wait until data is ready loop)<\/p><\/div>\n<h4>GetReportId (Step3)<\/h4>\n<p>Once above task finished we can call same request again but this time we have to configure slightly different way.<\/p>\n<p>Here is how to configure the task.<\/p>\n<ol>\n<li>Request Tab Configuration.<br \/>\n<strong>URL:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">https:\/\/mws.amazonservices.com\/Reports\/2009-01-01<\/span><br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Body:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">Action=GetReportRequestList&amp;ReportRequestIdList.Id.1={{User::ReportRequestId}}&amp;MarketplaceId={{User::MarketplaceId}}&amp;SellerId={{User::SellerId}}<\/span><\/li>\n<li>Response Setting Tab Configuration<br \/>\n<strong>Response content type:<\/strong> Xml<br \/>\n<strong>Filter Expression:<\/strong>\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline\">\/\/*[local-name() = &#8216;GeneratedReportId&#8217;]\u00a0\u00a0<\/span><br \/>\n<strong>Check Save to Variable:\u00a0<\/strong>Save to <strong>User::ReportId<\/strong><\/li>\n<li>Status Check Tab<br \/>\n<strong>Make Enable Status is unchecked<\/strong><\/li>\n<\/ol>\n<h4>Get Report Data\u00a0 (Step4,Step5 or Step6)<\/h4>\n<p>Now we are ready to ready our report. There are two ways we can do in SSIS.<\/p>\n<ul>\n<li>First approach (step 4,5) is download the report and save to local disk and then in the next step we can use data flow (CSV Source) to parse the saved file.<\/li>\n<li>Second approach (step6) is rather than saving to disk we can directly call API using CSV File source and parse content that way. Lets talk each approach briefly.<\/li>\n<\/ul>\n<h5>Step4,5 &#8211; Load Report From File<\/h5>\n<p>If you wish to save Report on disk then you can use REST API Task and call request like below.<\/p>\n<p>Here is how to configure the task to download the file.<\/p>\n<ol>\n<li>Request Tab Configuration.<br \/>\n<strong>URL:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline\">https:\/\/mws.amazonservices.com\/Reports\/2009-01-01<\/span><br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Body:<\/strong> Action=GetReport&amp;ReportId={{User::ReportId}}&amp;MarketplaceId={{User::MarketplaceId}}&amp;SellerId={{User::SellerId}}<\/li>\n<li>Response Setting Tab Configuration<br \/>\n<strong>Response content type:<\/strong> Xml<br \/>\n<strong>Filter Expression:<\/strong>\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline\">\/\/*[local-name() = &#8216;GeneratedReportId&#8217;]\u00a0\u00a0<\/span><br \/>\n<strong>Check Save to Variable:\u00a0<\/strong>Save to <strong>User::ReportId<br \/>\n<\/strong><\/li>\n<li>On Response Settings Tab : Set Response charset to <strong>Western European [Windows 1252]<\/strong>\u00a0 (or directly set via Properties Grid to\u00a0<strong>Windows-1252<\/strong> under ResponseCharset Property)<strong><br \/>\n<\/strong><\/li>\n<li>Status Check Tab<br \/>\n<strong>Make Enable Status is unchecked<\/strong><\/li>\n<\/ol>\n<p>To read download CSV file use settings described in below section except URL change it with local file path.<\/p>\n<h5>Step6 &#8211; Load report from URL<\/h5>\n<p>If you wish to load directly from URL then use same setting as above but in CSV Source inside data flow.<\/p>\n<p>Here is how to configure CSV Source.<\/p>\n<ol>\n<li>Request Tab Configuration.<br \/>\n<strong>URL:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline\">https:\/\/mws.amazonservices.com\/Reports\/2009-01-01<\/span><br \/>\n<strong>Method:<\/strong> POST<br \/>\n<strong>Body:<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">Action=GetReport&amp;ReportId={{User::ReportId}}&amp;MarketplaceId={{User::MarketplaceId}}&amp;SellerId={{User::SellerId}}\u00a0<\/span><\/li>\n<li>General Tab<br \/>\n<strong>Column Delimiter:<\/strong> {TAB}<\/li>\n<li>On Encoding Tab : Set to Western European [Windows 1252]\u00a0 (or directly set via Properties Grid to\u00a0<strong>Windows-1252<\/strong> under CharacterSet Property)<\/li>\n<\/ol>\n<h2>Conclusion<\/h2>\n<p>Amazon Marketplace Web service (MWS) provides great way to automate many functionality for Marketplace Seller. Using ZappySys <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a> you con consume data\u00a0from any REST API or Web service without replying on SDK \/ coding approach (e.g. C#, Java, Python, Ruby).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this post you will learn how to call Amazon MWS API (Amazon Marketplace Web Service) or Amazon Product Advertising API using SSIS PowerPack. Using drag and drop approach you can consume data from Amazon MWS XML Web service. In this post we will use\u00a0ZappySys XML Source connector to read data from Amazon MWS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1632,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[225,447,62],"tags":[151,215,24,27,3,12,4,140,7],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>How to call Amazon MWS API using SSIS | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"How to call Amazon MWS API using SSIS | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2016-10-15T04:42:21+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-03-11T07:08:08+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"505\" \/>\r\n\t<meta property=\"og:image:height\" content=\"505\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/\",\"url\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/\",\"name\":\"How to call Amazon MWS API using SSIS | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\",\"datePublished\":\"2016-10-15T04:42:21+00:00\",\"dateModified\":\"2026-03-11T07:08:08+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png\",\"width\":505,\"height\":505},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to call Amazon MWS API using SSIS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to call Amazon MWS API using SSIS | ZappySys Blog","description":"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/","og_locale":"en_US","og_type":"article","og_title":"How to call Amazon MWS API using SSIS | ZappySys Blog","og_description":"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.","og_url":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2016-10-15T04:42:21+00:00","article_modified_time":"2026-03-11T07:08:08+00:00","og_image":[{"width":505,"height":505,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/","url":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/","name":"How to call Amazon MWS API using SSIS | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png","datePublished":"2016-10-15T04:42:21+00:00","dateModified":"2026-03-11T07:08:08+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Learn how to call Amazon MWS API in SSIS using drag and drop XML Source connector. Parse XML into columns and save to file or SQL Server in a few clicks.","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/10\/amazon-mws-api-integration.png","width":505,"height":505},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/call-amazon-mws-api-using-ssis-marketplace-web-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to call Amazon MWS API using SSIS"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/822"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=822"}],"version-history":[{"count":40,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions"}],"predecessor-version":[{"id":11866,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions\/11866"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/1632"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}