{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"a0125bbe-cfec-4030-9446-7f45fbc048b0","name":"GoDataFeed API v1 Reference","description":"\r\n\r\nWelcome to the GoDataFeed API! You can use our API to access various data endpoints.\r\n\r\n**API Status** for the API can be found at https://status.godatafeed.com/\r\n\r\nYou can view examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.\r\n\r\nAll API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.\r\n\r\nYou can change the environment from the dropdown at the top. **Public** contains sample data, **No Environment** will replace all sample data with placeholders. Click the run in postman button to import the entire Api documentation into your local postman app to quickly make calls against the API.\r\n\r\n<br />\r\n\r\n_________\r\n\r\n\r\n# Best Practices\r\n\r\n## 1. Generate 'tokens' once or as often as desired\r\n\r\nConsumer keys can be set to expire tokens (lifespan) with the following options: “Never Expires”, “7 Days”, “14 Days” and “30 Days”.\r\n\r\nIt’s important to note that the developer of the consuming application has the option of generating access tokens as frequently as needed (once an hour, once a day, etc.); the more frequent a token is refreshed the more secure the consuming application will be.\r\n\r\nYou can set the tokens to never expire and generate the token manually once to be used for your application. Or, you can set the expiration to \"7 days\" use the authorization request regularly in your application, like everytime a request is made.\r\n\r\n## 2. Retrieve 'NEW' orders regularly and often\r\n\r\nGet new orders to insert into the order management platform from which orders are fulfilled.\r\n\r\nOur system runs sync cycles in which new marketplace orders are imported into our app every 15-30 minutes. You do not need to query for new orders more often than every few minutes.\r\n\r\n## 3. Acknowledge 'NEW' orders after insertng them into the destination\r\n\r\nThe most important reasons to acknowledge orders is because marketplaces may not update available quantity until you have acknowledge an order to be fulfilled. Before acknowledging an order, the seller has an opportunity to cancel the order because it is not available or for other reasons. Then the item available quantity will be adjusted by the marketplace so that it may be purchased by another buyer.\r\n\r\nAs long as you acknowledge orders which have been successfully inserted into the destination order management platform, then you can confidently query for only new orders that have not been inserted using the status=NEW filter parameter.\r\n\r\nInclude the destination (seller's) order number in the acknowledgement. This tells our system, \"yes, we got the order and our system has assigned this order an id from the seller's fulfillment system\". Our system will then acknowledge the order and send the seller order number back to the marketplace. \r\n\r\n## 4. Update orders as 'SHIPPED' regularly and often with specific date time\r\n\r\nOnce an order is shipped, update the status of the order to shipped, include the tracking number and be sure to use the date AND time the order was shipped. If you do not know the ship date, then you could use current dateTime. If you only include the date, then our system defaults the time to midnight. This can cause errors if an order was purchased and shipped the same day. \r\n\r\n## 5. 'CANCEL' orders as needed using the Update Order Status request\r\n\r\nIf an order cannot be fulfilled because it is out of stock or for other reasons, then update the order as cancelled. \r\n\r\nSome marketplaces accept a reason for cancelling an order, but our system only supports hard coded reasons which are set within the system and cannot be set by the Update Order Status request.\r\n\r\n\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Authorization\r\n\r\nGoDataFeed uses Tokens to allow access to the API. In order to obtain authorization to use the GoDataFeed API, you need to first setup a Consumer Key in the GoDataFeed App. The Consumer Key is used to generate Access Tokens that are then used in all subsequent API calls.\r\n\r\nTo create a token, make a call to the get authorization endpoint with your consumer key\r\n\r\n`https://api.godatafeed.com/v1/authorization`\r\n\r\n\r\n## Access Token Lifespan\r\n\r\nFor additional security, Access Tokens can be configured to expire after a pre-determined duration from the time they are generated, this is referred to as the Access Token Lifespan. Setting the Access Token Lifespan is done through the GoDataFeed App with the following options: “Never Expires”, “7 Days”, “14 Days” and “30 Days”.  \r\n\r\nIt’s important to note that the developer of the consuming application has the option of generating access tokens as frequently as needed (once an hour, once a day, etc.); the more frequent a token is refreshed the more secure the consuming application will be.\r\n\r\nMake sure to regenerate your  `Token`  using your Consumer Key in the Authorization request.\r\n<br />\r\n\r\n_________\r\n# Scope and permissions\r\n\r\nPart of the authorization process requires specifying to which parts of a store's data the client would like access. A client consumer key can be granted access for any of the permissions scopes listed below.\r\n\r\nYou can check your granted access scopes for an app consumer key in the app store settings. \r\n\r\n |Scope|Description            |\r\n|-----|-----------------------------|\r\n|`Feeds Read`|Allows feeds to be retrieved and downloaded |\r\n|`Orders Create`|Allows orders to be created in order sync   |\r\n|`Orders Read`|Allows orders to be retrieved |\r\n|`Orders Update`|Allows orders to be updated, like updating an order as shipped or acknowledged |\r\n\r\n## Missing permissions\r\n\r\nIf a consumer key does not have the required permissions for a given request, then the response will contain a 401 with the message below.\r\n\r\nYou can udpate your granted access scopes for an app consumer key in the app store settings > GoDataFeed API. \r\n\r\n\t\t{\r\n\t\t\t\t\"Message\": \"Authorization has been denied for this request.\"\r\n\t\t}\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Date/Time Format\r\nGoDataFeed date/times are stored in UTC. When querying use [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) format for queries.\r\nAn example of a DateTime response value is \"2018-10-24T15:37:27.04Z\". Also, some API's use nullable DateTime values indicated by DateTime? which may return the value null\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# API Call Limits\r\n\r\nThe GoDataFeed API call uses the “leaky bucket” algorithm for call throttling. This allows you to make an unlimited number of calls over time, as long as you don’t exceed the bucket size. The bucket size defaults to 50 calls, with a leak rate of 2 calls per second. Therefore, you can make 2 calls per second with occasional burst of 50 calls at once. If you overflow the bucket, you’ll get a 429 response.\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Request Parameters and Objects\r\nThe v1 API uses url route path parameters and query parameters. In the documentation, path parameters are shown as a variable in the url with the following syntax \":variable\". Required path/query parameters and request objects will be indicated in the docs for each api. Query parameters are not case sensitive.\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Response Object\r\n\r\nAll API endpoints will return the following default response fields along with endpoint specific response objects and a 200 status code.\r\n\r\n |Property|Description            |\r\n|-----|-----------------------------|\r\n|`Success`|Indicates whether the requested endpoint has successfully processed the request. |\r\n|`Message`|Returns any generated error messages when success is false.   |\r\n|`Paging`|Returned by endpoints that support paging |\r\n|`Sorting`|Returned by endpoints that support sorting            |\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Pagination and Sorting\r\n\r\nThe response body will always provide containers with details about paging and sorting for those endpoints which allow paging and sorting. Paging and sorting parameters are optional on these endpoints. When not provided, default values will be used.\r\n\r\n## Paging Response\r\n\r\nFor endpoints which allow paging, several properties are returned in the `Paging`  container to provide additional information about the pagination.\r\n\r\n**Paging object**\r\n\r\n|Property          |Type  |Details                |\r\n|------------------|------|-----------------------|\r\n|`Page`        |Integer|The specific page of objects to return|\r\n|`PageSize`        |Integer|Number of objects to return per page; max. 100 typically|\r\n|`MaxPageSize`        |Integer| The endpoint-specific maximum number of records our system will return|\r\n\r\n> **Pagination Example:** `GET https://api.godatafeed.com/v1/feeds?page=1&pageSize=50`\r\n\r\n<br />\r\n\r\n_________\r\n\r\n# Errors Codes\r\n\r\nThe GoDataFeed API uses the following error codes:\r\n\r\n |Error Code|Description            |\r\n|-----|-----------------------------|\r\n|`400`|Bad Request – Your request is invalid.            |\r\n|`401`|Unauthorized – Your API key is not authorized. Verify both the token is valid and the consumer key has the required scoped permissions configured in the app under Store settings > GoDataFeed PI.   |\r\n|`403`|Forbidden – The endpoint requested is hidden for administrators only.|\r\n|`404`|Not Found – The specified endpoint could not be found.            |\r\n|`405`|Method Not Allowed – You tried to access an endpoint with an invalid method.            |\r\n|`406`|Not Acceptable – You requested a format that isn’t json.|\r\n|`410`|Gone – The endpoint requested has been removed from our servers.            |\r\n|`429`|Too Many Requests – Slow down!           |\r\n|`500`|Internal Server Error – We had a problem with our server. Try again later.|\r\n|`503`|Service Unavailable – We’re temporarily offline for maintenance. Please try again later.|\r\n\r\n<br />\r\n\r\n_________\r\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"624879","team":20725,"collectionId":"a0125bbe-cfec-4030-9446-7f45fbc048b0","publishedId":"TVemCA6z","public":true,"publicUrl":"https://developer.godatafeed.com","privateUrl":"https://go.postman.co/documentation/624879-a0125bbe-cfec-4030-9446-7f45fbc048b0","customColor":{"top-bar":"FFFFFF","right-sidebar":"262626","highlight":"184eff"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2021-07-02T21:39:31.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"Public - API Reference","id":"ede501b3-5464-4f53-b3c4-b9329218cb46","owner":"624879","values":[{"key":"base_url","value":"https://api.godatafeed.io","enabled":true},{"key":"base_pagesize","value":"50","enabled":true},{"key":"base_pagenumber","value":"1","enabled":true},{"key":"base_sortby","value":"Name","enabled":true},{"key":"base_sortorder","value":"Asc","enabled":true},{"key":"store_number","value":"Store_1","enabled":true},{"key":"store_numbers","value":"Store_1,Store_2,Store_3","enabled":true},{"key":"store_plancode","value":"Plan_1","enabled":true},{"key":"store_planfreq","value":"Monthly","enabled":true},{"key":"store_name","value":"Test Store","enabled":true},{"key":"store_email","value":"Hello@TestStore.com","enabled":true},{"key":"store_domain","value":"teststore.com","enabled":true},{"key":"store_timezonetype","value":"EST","enabled":true},{"key":"store_firstname","value":"John","enabled":true},{"key":"store_lastname","value":"Smith","enabled":true},{"key":"store_emails","value":"Hello@TestStore.com;Goodbye@TestStore.com","enabled":true},{"key":"store_changeplantype","value":"Upgrade","enabled":true},{"key":"base_token","value":"fakeToken123","enabled":true},{"key":"feed_number","value":"Feed_1","enabled":true},{"key":"feed_numbers","value":"Feed_1,Feed_2","enabled":true},{"key":"feed_name","value":"Test Feed","enabled":true},{"key":"store_sortby","value":"Name","enabled":true},{"key":"feed_sortby","value":"Name","enabled":true},{"key":"validation_sortby","value":"Sku","enabled":true},{"key":"store_planname","value":"Test Plan","enabled":true},{"key":"fromDate","value":"2020-12-02T00:00:00Z","enabled":true},{"key":"toDate","value":"2020-13-02T23:59:59Z","enabled":true},{"key":"fromGDFImportDate","value":"2020-12-02T00:00:00Z","enabled":true},{"key":"toGDFImportDate","value":"2020-13-02T23:59:59Z","enabled":true},{"key":"page","value":"1","enabled":true},{"key":"pageSize","value":"100","enabled":true},{"key":"status","value":"NEW","enabled":true},{"key":"storeOrderNumber","value":"123456789","enabled":true},{"key":"includeDisabled","value":"true","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/d19fe6e065ef2960ce3ada9a68f553d9e1a383cb3e3d8794ec052a05f9761648","favicon":"https://res.cloudinary.com/postman/image/upload/v1628624456/team/lxomth7iiog6hhemn83p.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Public - API Reference","value":"624879-ede501b3-5464-4f53-b3c4-b9329218cb46"}],"canonicalUrl":"https://developer.godatafeed.com/view/metadata/TVemCA6z"}