{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"192ed455-98a2-4d2a-b59d-f77e1fea31ff","name":"Winston API","description":"> Updated on 2025-12-16 \n  \n\n# Definitions\n\n- Tenant: _An organization/venue/location/establishment which makes use of our platform. It contains the Menu, Modules, Integrations and all associated Settings. A tenant may have (multiple) sub-tenants._\n    \n- User: _An employee with access to (parts of) the platform for a specific tenant. Users are only active in one tenant at a time._\n    \n- Consumer: _A guest/customer of one or more tenants. Consumers are not directly associated with tenants, (most of) their interactions are, however._\n    \n\n# Applications\n\nThe Winston API allows you to access and configure (almost) anything inside Winston.\n\nWinston consists of [Point-of-Sale](https://pos.mrwinston.com), [backoffice](https://backoffice.mrwinston.com), [API](https://api.mrwinston.com) and [<i>consumer</i>](https://mrwinston.app) apps, with each their own task:\n\n- Consumer: _The consumer-facing part of Winston. It allows consumers to place home-orders, self-orders, reservations & receive loyalty points. It also hosts a dedicated website page for every tenant._\n    \n- Point-of-Sale: _The frontoffice Winston application. It's mostly used as a cash register, but the app also hosts the order screens and allows managing reservations._\n    \n- Backoffice: _Allows tenants to configure the entire Winston system (incl. all of our modules and integrations)._\n    \n- API: _Responsible for handling calls from and to all integrations in Winston. As the name suggests, this hosts our API._\n    \n\n# Getting started 👨‍💻\n\nTo get started developing for the the Winston API you can [sign up for a development environment](https://backoffice-test.mrwinston.com/development) in the test environment. The test environment is ideal for testing your integration since it hosts a separate instance of all Winston applications. This way you don't have to worry about messing around with live data from our/your users.\n\nAfter registering you will receive an e-mail with a password link for our Backoffice. The dashboard of the Backoffice provides easy access to the Point-of-Sale application (web-based) and the Consumer app (web-based). The same user account for the Backoffice can also be used for the Point-of-Sale application.\n\nTo enable API requests, you need to [activate the development integration](https://backoffice-test.mrwinston.com/admin/integrations/miscellaneous). After activating this page should show you your personal API_KEY. This API_KEY, along with the `api_test` APP_NAME, is used to authenticate every request. For more information see the [authentication section](#authentication).\n\nPlease keep in mind that the test environment runs the latest 'alpha channel' code. This means that it is possible that some parts, or maybe even the whole system, may not work as intended.\n\nHappy hacking!\n\n# Overview\n\nEvery API call in Winston is a `POST` request containing the request details in `JSON` form in the body. For example:\n\n``` http\nPOST /api/reservations/list HTTP/1.1\nHost: {{host}}\nUser-Agent: curl/7.68.0\nContent-Length: 49\nAccept: */*\nContent-Type: application/json\n{\n  \"sort\": { \"createdAt\": 1 },\n  \"limit\": 5\n}\n\n ```\n\nSee below for all available API-endpoints. Missing an API-endpoint? Contact us at [koen+api@mrwinston.com](https://mailto:info+api@mrwinston.com).\n\n## Endpoint hosts\n\n- Testing: [https://api-test.mrwinston.com/api/](https://api-test.mrwinston.com/api/)\n    \n- Live: [https://api.mrwinston.com/api/](https://api.mrwinston.com/api/)\n    \n\n## Example use cases\n\nTo speed up development of your custom solution, you could take a look at the following use cases to pick and match your specific needs.\n\n### Send order status updates\n\nThe `updateMethod` on a WorkOrder is used to decide how to notify the consumer of updates of their order. Allowed values are `web_push`, `sms` and `email`. If an update method fails, the system falls back to the next method in the list respectively.\n\nThe `web_push` update will definitely fail if the user did not set the subscription details. The same goes for the `sms` method, it will definitely fail if the phone number is not set in the order details. Similarly, the `email` method will fail if there is no email set in the order details.\n\n# Authentication\n\nEvery API request is authenticated with an API_KEY and APP_NAME. This means that every request must contain your API_KEY and APP_NAME in the query parameters. Like this: `https://{{host}}/api/reservations/list?app_name=api_test&api_key=...`\n\nAPP_NAME is always `api_test` in the development environment, once your integration is approved you will receive your own. API_KEY will be different per Tenant, so don't hardcode this.\n\nAll requests should be done over `HTTPS`. Requests over `HTTP` will be redirected to the `HTTPS` version instead.\n\n# Error Codes\n\nWhen an error occurs the API will send the appropriate HTTP error code back ([see all](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)). The body of the document will then explain the error in more detail. For example:\n\n``` http\nHTTP/1.1 401 Unauthorized\nUnauthorized: combination of APP_NAME and API_KEY cannot be matched to an (active) Integration!\n\n ```\n\n# Going live 🚀\n\nBefore anyone can use your integration in our live environment, you need to request the validation of your integration. This is done by sending an email to [koen+api@mrwinston.com](https://mailto:koen+api@mrwinston.com). This email should contain **a description of your integration**, **as much documentation about your integration as possible** and **instructions on how to test/validate the integration**. Please also make sure that the integration runs on the test environment as intended.\n\nOnce your integration is validated and approved, we will add the integration to our system, which will be rolled into the next release of our API.\n\n# Endpoints","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"4264516","team":2198474,"collectionId":"192ed455-98a2-4d2a-b59d-f77e1fea31ff","publishedId":"RW8Ap97p","public":true,"publicUrl":"https://documenter-api.postman.tech/view/4264516/RW8Ap97p","privateUrl":"https://go.postman.co/documentation/4264516-192ed455-98a2-4d2a-b59d-f77e1fea31ff","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"11366d"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":"https://content.pstmn.io/214fe36a-5762-4e16-bef6-2afbb9d9e4c4/bG9nb193aGl0ZS5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"0c4196"}},{"name":"light","logo":"https://content.pstmn.io/4ce9168e-8b1b-40b9-a8bc-1a507f18239a/bG9nby5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"11366d"}}]}},"version":"8.10.1","publishDate":"2024-05-14T12:17:16.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/4ce9168e-8b1b-40b9-a8bc-1a507f18239a/bG9nby5wbmc=","logoDark":"https://content.pstmn.io/214fe36a-5762-4e16-bef6-2afbb9d9e4c4/bG9nb193aGl0ZS5wbmc="}},"statusCode":200},"environments":[{"name":"Test","id":"c8cb886d-29f2-429a-9772-f7b995c56e8f","owner":"16633604","values":[{"key":"host","value":"api-test.mrwinston.com","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/a6c452bea76ce3db32f59af3ddffc84f8b93696787950ed692dedbe901d96060","favicon":"https://res.cloudinary.com/postman/image/upload/v1715688748/team/qgjg1xjvnh4rrugpmmwj.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":"Test","value":"16633604-c8cb886d-29f2-429a-9772-f7b995c56e8f"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/RW8Ap97p"}