{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"1c38e55e-088c-4240-8f8d-3213f831d8c7","name":"SPOT Public API","description":"The SPOT API allows dry cleaners to create custom sites or applications that interface with the XplorSPOT POS system.\n\nThe CustomerConnect API (\"q\" endpoint) offers a variety of operations on a single user at a time, allowing for the creation of applications or sites that offer account management features to customers.\n\nThe External Order Data API (\"r\" endpoint) offers bulk entry of new invoices and customers for use with external systems (like locker services).\n\nAll requests are able to be written in any language that supports HTTP Post. We are unable to provide extensive support for how to build requests in your chosen language. But we can provide support on the request itself if it has the correct data and structure.\n\n### Notices\n\n- Effective August 1, 2018 requests that need parameters can have the parameters passed as members of a Parameters (or Params) object, rather than being passed as a base64 encoded string in the Body memeber of the request object.\n    \n\n### Cost\n\nSPOT API is a service provided by XplorSPOT. The cost of the API may be obtained by contacting SPOT Sales at 801-208-2212 or [spot_sales@xplortechnologies.com](https://mailto:spot_sales@xplortechnologies.com).\n\n### Development/Testing\n\nSPOT API credentials can be obtained with a subscription of the API service by contacting sales at 801-208-2212 or [spot_sales@xplortechnologies.com](https://mailto:spot_sales@xplortechnologies.com). You will be provided 30 days of free API service during your development and testing. Support for the API is provided via email. Questions and feedback can be addressed to [APISupport@spotpos.com](https://mailto:APISupport@spotpos.com)\n\nSome features depend upon choices made by the management of the enterprise subscribing to the XplorSPOT system (referred to in shorthand as \"the enterprise\" in this documentation). These features will be noted when they appear. The choices are made by the enterprise through the Program Configuration menu of the XplorSPOT system.\n\nTake time to review the requests in the Settings category! Many of the per-enterprise configurable data can be retrieved programatically using these requests.\n\n### Endpoints\n\n| API | Endpoint |\n| --- | --- |\n| Franchise API | [https://api.mydrycleaner.com/f](https://api.mydrycleaner.com/f) |\n| CustomerConnect | [https://api.mydrycleaner.com/q](https://api.mydrycleaner.com/q) |\n| CustomerConnect GET Actions | [https://api.mydrycleaner.com/g](https://api.mydrycleaner.com/g) |\n| External Order Data | [https://api.mydrycleaner.com/r](https://api.mydrycleaner.com/r) |\n| 24 hour Kiosk Operations | [https://api.mydrycleaner.com/k](https://api.mydrycleaner.com/k%5C%5D) |\n\n### Making A Request\n\n- Any language capable of making HTTP Posts can be used. The API supports JSON requests. (Older calls may also support XML but this is deprecated.)\n    \n- Sessions expire after 20 minutes of inactivity. Each request will reset the expiration timer for the session id provided.\n    \n- For an example of a basic request, see the GetToken member of this collection.\n    \n- **DO NOT** place the security ID in any browser-side code. If it is exposed your API account could be abused.\n    \n\nThere are two ways to pass extra parameters when needed:\n\n1. Include an object named Parameters (or Params) in the request, which contains the members needed for the specific request.\n    \n2. Include a member named Body in the request, which is a Base64 encoded JSON string of an object with the members needed for the specific request. This Base64 approach is maintained for backwards compatibility, it is recommended that new development not use it.\n    \n\nSee the descriptions of the individual requests for examples.\n\n| Name | Type | Description |\n| --- | --- | --- |\n| RequestType | string | (Required) This is the type of request being sent. For example GetToken, Login, GetCustomer, etc. |\n| AccountKey | string | (Required) This is the account key provided by your client. This determines who the client is. This must be provided on all requests. This can be visible to anyone. |\n| SecurityID | string | (Required only on GetToken and CloseInvoice) This is the unique identifier that was provided by your client. This must be protected and should never be exposed. Once you have retrieved a SessionID from GetToken, do not include this field. |\n| Parameters | object | Optional, can be omitted if the request does not require additional parameters. |\n| Body | string | This is the older method of passing parameters. It is the same contents as the Parameters memeber, but it a JSON string that has been encoded in Base64. |\n| SessionID | string | This is the unique identifier provided by GetToken or Login. Once the user performs a login, replace the SessionID with the new one returned from login. |\n| UserAgent | string | (Required) If this is a browser based app, you can provide the browser user agent string. For mobile apps you can specify IOS, or Android. This information can be used by the enterprise to determine how frequently a specific client or version of the client is used. Examples: IOS 8 (App v1.3), Android Kit-Kat (App v0.9), Windows PC (App v1.1). |\n\n### Common Response Object\n\nAll requests send a corresponding HTTP status code with it.\n\n- 200 - OK\n    \n- 400 - Bad Request - Invalid request or request body\n    \n- 401 - Unauthorized - Attempting to use a function that requires a logged in customer\n    \n- 500 - Internal Server Error - Unexpected error\n    \n\nAll methods return a common response object.\n\n| Name | Type | Description |\n| --- | --- | --- |\n| Failed | boolean | Successful requests will be false. If true, error message must be handled. |\n| Message | string | If failed, message will contain a user friendly error message. |\n| MessageDetails | string | Advanced message details. This will only populate if there is a server side error. |\n| ReturnObject | object | The object containing all returned data. See specific methods for their corresponding structures. |\n\n### Common Error Messages\n\n| HTTP Code | Failed | Message | Cause |\n| --- | --- | --- | --- |\n| 400 | true | Missing ID | Attempting to use a GET request for certain anonymous functions but the ID parameter (account specific) was not provided. |\n| 400 | true | Content-Type is invalid | Attempting a POST but Content-Type header is not set. Supported content-types are: application/json and text/json |\n| 400 | true | Body is missing | Attempting a POST with an empty body. |\n| 500 | true | Unable to locate API Version: VERSION | Account was located but the corresonding version of the API was not found. Contact [APISupport@spotpos.com](https://mailto:APISupport@spotpos.com). |\n| 500 | true | Unable to load account. | The account key is invalid or an unknown error loading the account has occurred. Make sure you are using the correct account key then contact [APISupport@spotpos.com](https://mailto:APISupport@spotpos.com). |\n| 500 | true | Invalid http method. | Only POST and GET methods are allowed. |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"4544805","team":113215,"collectionId":"1c38e55e-088c-4240-8f8d-3213f831d8c7","publishedId":"2s93JzL1Gj","public":true,"publicUrl":"https://apidocs.mydrycleaner.com","privateUrl":"https://go.postman.co/documentation/4544805-1c38e55e-088c-4240-8f8d-3213f831d8c7","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.0","publishDate":"2023-03-18T06:16:24.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"Example","id":"d96182c6-b5f9-40f3-93f5-f609ae9c2ba8","owner":"4544805","values":[{"key":"GatewayURL","value":"https://api.mydrycleaner.com","enabled":true,"type":"default"},{"key":"AccountKey","value":"ABCD1234","enabled":true,"type":"default"},{"key":"SessionID","value":"71432c48-d7ed-4d5c-98e6-4f31f74c4588","enabled":true,"type":"default"},{"key":"UserName","value":"example@example.com","enabled":true,"type":"default"},{"key":"Password","value":"g653chj76j","enabled":true,"type":"default"},{"key":"SecurityID","value":"6AA3154B-7A6D-4BD4-865A-20EFC9EBC5BB","enabled":true,"type":"default"},{"key":"Body","value":"eyJMb2NrZXJJRCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCIsIkludm9pY2VJRExpc3QiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJFdmVudFR5cGUiOiJQIiwiQ29tbWVudHMiOiIifQ==","enabled":true,"type":"default"},{"key":"PublishableID","value":"C2182AFD-8C48-41BD-A329-FD48F86F0C11","enabled":true,"type":"default"},{"key":"RequestType","value":"","enabled":true,"type":"any"},{"key":"ServiceID_Marketing","value":"","enabled":true,"type":"default"}],"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/f501b6df4ec1b780500f437485a1ae56f7b296e58dbbc8c17ccacac1ba7939df","favicon":"https://mydrycleaner.com/favicon.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":"Example","value":"4544805-d96182c6-b5f9-40f3-93f5-f609ae9c2ba8"}],"canonicalUrl":"https://apidocs.mydrycleaner.com/view/metadata/2s93JzL1Gj"}