@open-tender/cloud 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/app/hooks.d.ts +50 -0
  4. package/dist/cjs/app/hooks.js +8 -0
  5. package/dist/cjs/app/index.d.ts +1 -0
  6. package/dist/cjs/app/index.js +4 -0
  7. package/dist/cjs/app/store.d.ts +146 -0
  8. package/dist/cjs/app/store.js +51 -0
  9. package/dist/cjs/index.d.ts +3 -0
  10. package/dist/cjs/index.js +7 -0
  11. package/dist/cjs/services/api.d.ts +162 -0
  12. package/dist/cjs/services/api.js +691 -0
  13. package/dist/cjs/services/errors.d.ts +50 -0
  14. package/dist/cjs/services/errors.js +53 -0
  15. package/dist/cjs/services/index.d.ts +2 -0
  16. package/dist/cjs/services/index.js +6 -0
  17. package/dist/cjs/slices/alerts.d.ts +5 -0
  18. package/dist/cjs/slices/alerts.js +28 -0
  19. package/dist/cjs/slices/allergens.d.ts +19 -0
  20. package/dist/cjs/slices/allergens.js +66 -0
  21. package/dist/cjs/slices/announcements.d.ts +28 -0
  22. package/dist/cjs/slices/announcements.js +77 -0
  23. package/dist/cjs/slices/checkout.d.ts +38 -0
  24. package/dist/cjs/slices/checkout.js +276 -0
  25. package/dist/cjs/slices/completedOrders.d.ts +25 -0
  26. package/dist/cjs/slices/completedOrders.js +61 -0
  27. package/dist/cjs/slices/config.d.ts +87 -0
  28. package/dist/cjs/slices/config.js +121 -0
  29. package/dist/cjs/slices/confirmation.d.ts +8 -0
  30. package/dist/cjs/slices/confirmation.js +22 -0
  31. package/dist/cjs/slices/customer/account.d.ts +59 -0
  32. package/dist/cjs/slices/customer/account.js +288 -0
  33. package/dist/cjs/slices/customer/addresses.d.ts +37 -0
  34. package/dist/cjs/slices/customer/addresses.js +134 -0
  35. package/dist/cjs/slices/customer/allergens.d.ts +25 -0
  36. package/dist/cjs/slices/customer/allergens.js +94 -0
  37. package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
  38. package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
  39. package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
  40. package/dist/cjs/slices/customer/creditCards.js +172 -0
  41. package/dist/cjs/slices/customer/favorites.d.ts +45 -0
  42. package/dist/cjs/slices/customer/favorites.js +176 -0
  43. package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
  44. package/dist/cjs/slices/customer/fcmToken.js +110 -0
  45. package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
  46. package/dist/cjs/slices/customer/giftCards.js +196 -0
  47. package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
  48. package/dist/cjs/slices/customer/groupOrders.js +148 -0
  49. package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
  50. package/dist/cjs/slices/customer/houseAccounts.js +67 -0
  51. package/dist/cjs/slices/customer/index.d.ts +29 -0
  52. package/dist/cjs/slices/customer/index.js +52 -0
  53. package/dist/cjs/slices/customer/levelup.d.ts +36 -0
  54. package/dist/cjs/slices/customer/levelup.js +128 -0
  55. package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
  56. package/dist/cjs/slices/customer/loyalty.js +87 -0
  57. package/dist/cjs/slices/customer/order.d.ts +25 -0
  58. package/dist/cjs/slices/customer/order.js +84 -0
  59. package/dist/cjs/slices/customer/orders.d.ts +20 -0
  60. package/dist/cjs/slices/customer/orders.js +67 -0
  61. package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
  62. package/dist/cjs/slices/customer/qrCode.js +57 -0
  63. package/dist/cjs/slices/customer/rewards.d.ts +20 -0
  64. package/dist/cjs/slices/customer/rewards.js +67 -0
  65. package/dist/cjs/slices/customer/thanx.d.ts +17 -0
  66. package/dist/cjs/slices/customer/thanx.js +57 -0
  67. package/dist/cjs/slices/deals.d.ts +19 -0
  68. package/dist/cjs/slices/deals.js +97 -0
  69. package/dist/cjs/slices/donations.d.ts +26 -0
  70. package/dist/cjs/slices/donations.js +62 -0
  71. package/dist/cjs/slices/giftCards.d.ts +26 -0
  72. package/dist/cjs/slices/giftCards.js +63 -0
  73. package/dist/cjs/slices/groupOrder.d.ts +80 -0
  74. package/dist/cjs/slices/groupOrder.js +226 -0
  75. package/dist/cjs/slices/guest.d.ts +38 -0
  76. package/dist/cjs/slices/guest.js +101 -0
  77. package/dist/cjs/slices/index.d.ts +27 -0
  78. package/dist/cjs/slices/index.js +30 -0
  79. package/dist/cjs/slices/levelup.d.ts +18 -0
  80. package/dist/cjs/slices/levelup.js +51 -0
  81. package/dist/cjs/slices/menu.d.ts +22 -0
  82. package/dist/cjs/slices/menu.js +86 -0
  83. package/dist/cjs/slices/menuDisplay.d.ts +26 -0
  84. package/dist/cjs/slices/menuDisplay.js +59 -0
  85. package/dist/cjs/slices/menuItems.d.ts +20 -0
  86. package/dist/cjs/slices/menuItems.js +57 -0
  87. package/dist/cjs/slices/notifications.d.ts +5 -0
  88. package/dist/cjs/slices/notifications.js +27 -0
  89. package/dist/cjs/slices/order.d.ts +77 -0
  90. package/dist/cjs/slices/order.js +426 -0
  91. package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
  92. package/dist/cjs/slices/orderFulfillment.js +83 -0
  93. package/dist/cjs/slices/orderRating.d.ts +34 -0
  94. package/dist/cjs/slices/orderRating.js +108 -0
  95. package/dist/cjs/slices/orders.d.ts +86 -0
  96. package/dist/cjs/slices/orders.js +311 -0
  97. package/dist/cjs/slices/resetPassword.d.ts +29 -0
  98. package/dist/cjs/slices/resetPassword.js +83 -0
  99. package/dist/cjs/slices/revenueCenters.d.ts +35 -0
  100. package/dist/cjs/slices/revenueCenters.js +95 -0
  101. package/dist/cjs/slices/signUp.d.ts +19 -0
  102. package/dist/cjs/slices/signUp.js +52 -0
  103. package/dist/cjs/slices/types.d.ts +43 -0
  104. package/dist/cjs/slices/types.js +47 -0
  105. package/dist/cjs/slices/validTimes.d.ts +17 -0
  106. package/dist/cjs/slices/validTimes.js +57 -0
  107. package/dist/cjs/slices/verifyAccount.d.ts +17 -0
  108. package/dist/cjs/slices/verifyAccount.js +54 -0
  109. package/dist/esm/app/hooks.d.ts +50 -0
  110. package/dist/esm/app/hooks.js +4 -0
  111. package/dist/esm/app/index.d.ts +1 -0
  112. package/dist/esm/app/index.js +1 -0
  113. package/dist/esm/app/store.d.ts +146 -0
  114. package/dist/esm/app/store.js +48 -0
  115. package/dist/esm/index.d.ts +3 -0
  116. package/dist/esm/index.js +3 -0
  117. package/dist/esm/services/api.d.ts +162 -0
  118. package/dist/esm/services/api.js +689 -0
  119. package/dist/esm/services/errors.d.ts +50 -0
  120. package/dist/esm/services/errors.js +50 -0
  121. package/dist/esm/services/index.d.ts +2 -0
  122. package/dist/esm/services/index.js +2 -0
  123. package/dist/esm/slices/alerts.d.ts +5 -0
  124. package/dist/esm/slices/alerts.js +23 -0
  125. package/dist/esm/slices/allergens.d.ts +19 -0
  126. package/dist/esm/slices/allergens.js +60 -0
  127. package/dist/esm/slices/announcements.d.ts +28 -0
  128. package/dist/esm/slices/announcements.js +71 -0
  129. package/dist/esm/slices/checkout.d.ts +38 -0
  130. package/dist/esm/slices/checkout.js +268 -0
  131. package/dist/esm/slices/completedOrders.d.ts +25 -0
  132. package/dist/esm/slices/completedOrders.js +57 -0
  133. package/dist/esm/slices/config.d.ts +87 -0
  134. package/dist/esm/slices/config.js +102 -0
  135. package/dist/esm/slices/confirmation.d.ts +8 -0
  136. package/dist/esm/slices/confirmation.js +18 -0
  137. package/dist/esm/slices/customer/account.d.ts +59 -0
  138. package/dist/esm/slices/customer/account.js +282 -0
  139. package/dist/esm/slices/customer/addresses.d.ts +37 -0
  140. package/dist/esm/slices/customer/addresses.js +129 -0
  141. package/dist/esm/slices/customer/allergens.d.ts +25 -0
  142. package/dist/esm/slices/customer/allergens.js +89 -0
  143. package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
  144. package/dist/esm/slices/customer/communicationPreferences.js +161 -0
  145. package/dist/esm/slices/customer/creditCards.d.ts +46 -0
  146. package/dist/esm/slices/customer/creditCards.js +166 -0
  147. package/dist/esm/slices/customer/favorites.d.ts +45 -0
  148. package/dist/esm/slices/customer/favorites.js +171 -0
  149. package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
  150. package/dist/esm/slices/customer/fcmToken.js +106 -0
  151. package/dist/esm/slices/customer/giftCards.d.ts +62 -0
  152. package/dist/esm/slices/customer/giftCards.js +191 -0
  153. package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
  154. package/dist/esm/slices/customer/groupOrders.js +143 -0
  155. package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
  156. package/dist/esm/slices/customer/houseAccounts.js +62 -0
  157. package/dist/esm/slices/customer/index.d.ts +29 -0
  158. package/dist/esm/slices/customer/index.js +48 -0
  159. package/dist/esm/slices/customer/levelup.d.ts +36 -0
  160. package/dist/esm/slices/customer/levelup.js +123 -0
  161. package/dist/esm/slices/customer/loyalty.d.ts +27 -0
  162. package/dist/esm/slices/customer/loyalty.js +79 -0
  163. package/dist/esm/slices/customer/order.d.ts +25 -0
  164. package/dist/esm/slices/customer/order.js +79 -0
  165. package/dist/esm/slices/customer/orders.d.ts +20 -0
  166. package/dist/esm/slices/customer/orders.js +62 -0
  167. package/dist/esm/slices/customer/qrCode.d.ts +17 -0
  168. package/dist/esm/slices/customer/qrCode.js +53 -0
  169. package/dist/esm/slices/customer/rewards.d.ts +20 -0
  170. package/dist/esm/slices/customer/rewards.js +62 -0
  171. package/dist/esm/slices/customer/thanx.d.ts +17 -0
  172. package/dist/esm/slices/customer/thanx.js +53 -0
  173. package/dist/esm/slices/deals.d.ts +19 -0
  174. package/dist/esm/slices/deals.js +91 -0
  175. package/dist/esm/slices/donations.d.ts +26 -0
  176. package/dist/esm/slices/donations.js +58 -0
  177. package/dist/esm/slices/giftCards.d.ts +26 -0
  178. package/dist/esm/slices/giftCards.js +59 -0
  179. package/dist/esm/slices/groupOrder.d.ts +80 -0
  180. package/dist/esm/slices/groupOrder.js +216 -0
  181. package/dist/esm/slices/guest.d.ts +38 -0
  182. package/dist/esm/slices/guest.js +97 -0
  183. package/dist/esm/slices/index.d.ts +27 -0
  184. package/dist/esm/slices/index.js +27 -0
  185. package/dist/esm/slices/levelup.d.ts +18 -0
  186. package/dist/esm/slices/levelup.js +48 -0
  187. package/dist/esm/slices/menu.d.ts +22 -0
  188. package/dist/esm/slices/menu.js +81 -0
  189. package/dist/esm/slices/menuDisplay.d.ts +26 -0
  190. package/dist/esm/slices/menuDisplay.js +55 -0
  191. package/dist/esm/slices/menuItems.d.ts +20 -0
  192. package/dist/esm/slices/menuItems.js +52 -0
  193. package/dist/esm/slices/notifications.d.ts +5 -0
  194. package/dist/esm/slices/notifications.js +22 -0
  195. package/dist/esm/slices/order.d.ts +77 -0
  196. package/dist/esm/slices/order.js +423 -0
  197. package/dist/esm/slices/orderFulfillment.d.ts +29 -0
  198. package/dist/esm/slices/orderFulfillment.js +79 -0
  199. package/dist/esm/slices/orderRating.d.ts +34 -0
  200. package/dist/esm/slices/orderRating.js +104 -0
  201. package/dist/esm/slices/orders.d.ts +86 -0
  202. package/dist/esm/slices/orders.js +302 -0
  203. package/dist/esm/slices/resetPassword.d.ts +29 -0
  204. package/dist/esm/slices/resetPassword.js +79 -0
  205. package/dist/esm/slices/revenueCenters.d.ts +35 -0
  206. package/dist/esm/slices/revenueCenters.js +89 -0
  207. package/dist/esm/slices/signUp.d.ts +19 -0
  208. package/dist/esm/slices/signUp.js +48 -0
  209. package/dist/esm/slices/types.d.ts +43 -0
  210. package/dist/esm/slices/types.js +44 -0
  211. package/dist/esm/slices/validTimes.d.ts +17 -0
  212. package/dist/esm/slices/validTimes.js +52 -0
  213. package/dist/esm/slices/verifyAccount.d.ts +17 -0
  214. package/dist/esm/slices/verifyAccount.js +50 -0
  215. package/package.json +61 -0
@@ -0,0 +1,691 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@open-tender/utils");
4
+ class requestException extends Error {
5
+ constructor(message, response, exception, extracted) {
6
+ super(message, { cause: exception });
7
+ this.message = `${message || 'An unknown exception was triggered.'}`;
8
+ this.stack = new Error().stack;
9
+ this.response = response;
10
+ this.exception = exception;
11
+ this.extracted = extracted;
12
+ }
13
+ }
14
+ const fiveHundredError = (status = 500, statusText = 'Unknown 500 error') => ({
15
+ status: status,
16
+ code: 'errors.server.internal',
17
+ title: 'Internal Server Error',
18
+ detail: statusText,
19
+ });
20
+ const unauthorizedError = {
21
+ status: 401,
22
+ code: 'errors.unauthorized',
23
+ title: 'Unauthorized',
24
+ detail: 'Provided token is not valid',
25
+ };
26
+ const handleResponse = (response) => {
27
+ const { status, statusText } = response;
28
+ if (status >= 500)
29
+ throw fiveHundredError(status, statusText);
30
+ if (status === 401)
31
+ throw unauthorizedError;
32
+ if (statusText === 'NO CONTENT' || status === 204) {
33
+ return true;
34
+ }
35
+ if (status === 202) {
36
+ try {
37
+ return response.body;
38
+ }
39
+ catch (err) {
40
+ throw new requestException('Response could not be parsed', response, err);
41
+ }
42
+ }
43
+ const requestWasSuccessful = status >= 200 && status < 300;
44
+ try {
45
+ return response.json().then(parsed => {
46
+ if (requestWasSuccessful)
47
+ return parsed;
48
+ throw parsed;
49
+ });
50
+ }
51
+ catch (err) {
52
+ throw new requestException('Response could not be parsed', response, err);
53
+ }
54
+ };
55
+ class OpenTenderAPI {
56
+ constructor(config) {
57
+ this.brandId = config === null || config === void 0 ? void 0 : config.brandId;
58
+ this.clientId = config === null || config === void 0 ? void 0 : config.clientId;
59
+ this.baseUrl = config === null || config === void 0 ? void 0 : config.baseUrl;
60
+ this.authUrl = config === null || config === void 0 ? void 0 : config.authUrl;
61
+ }
62
+ request(endpoint, method = 'GET', data = null, timeout = null, token = null) {
63
+ let didTimeOut = false;
64
+ return new Promise((resolve, reject) => {
65
+ let timer;
66
+ if (timeout) {
67
+ timer = setTimeout(() => {
68
+ didTimeOut = true;
69
+ reject(new Error('Request timed out'));
70
+ }, timeout);
71
+ }
72
+ const headers = {
73
+ Accept: 'application/json',
74
+ 'Content-Type': 'application/json',
75
+ };
76
+ if (this.clientId)
77
+ headers['client-id'] = `${this.clientId}`;
78
+ if (this.brandId)
79
+ headers['brand-id'] = `${this.brandId}`;
80
+ if (token)
81
+ headers.Authorization = `Bearer ${token}`;
82
+ const options = {
83
+ method: method,
84
+ headers: headers,
85
+ };
86
+ if (data)
87
+ options.body = JSON.stringify(data);
88
+ fetch(`${this.baseUrl}${endpoint}`, options)
89
+ .then(handleResponse)
90
+ .then(json => {
91
+ if (didTimeOut)
92
+ return;
93
+ resolve(json);
94
+ })
95
+ .catch(err => {
96
+ if (didTimeOut)
97
+ return;
98
+ err.code ? reject(err) : reject(fiveHundredError());
99
+ })
100
+ .finally(() => {
101
+ if (timeout)
102
+ clearTimeout(timer);
103
+ });
104
+ });
105
+ }
106
+ authRequest(endpoint, data) {
107
+ return new Promise((resolve, reject) => {
108
+ data.client_id = this.clientId;
109
+ const options = {
110
+ method: 'POST',
111
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
112
+ body: (0, utils_1.serialize)(data),
113
+ };
114
+ fetch(`${this.authUrl}/oauth2${endpoint}`, options)
115
+ .then(res => res.json())
116
+ .then(json => {
117
+ if (json.error)
118
+ throw new Error(json.error_description);
119
+ resolve(json);
120
+ })
121
+ .catch(err => {
122
+ reject(err);
123
+ });
124
+ });
125
+ }
126
+ post(endpoint, data) {
127
+ return this.request(`/${endpoint}`, 'POST', data);
128
+ }
129
+ getHttpResponse(code) {
130
+ return this.request(`/${code}/cors`);
131
+ }
132
+ postSettings(entityType) {
133
+ const params = entityType ? `&entity_type=${entityType}` : '';
134
+ return this.request(`/settings/pull?force=true${params}`, 'POST', {});
135
+ }
136
+ getConfig() {
137
+ return this.request(`/config`);
138
+ }
139
+ getLevelUpSettings() {
140
+ return this.request(`/levelup`);
141
+ }
142
+ postChipDNATender(orderId, data) {
143
+ return this.request(`/orders/${orderId}/tenders/chipdna`, 'POST', data);
144
+ }
145
+ postChipDNACancel() {
146
+ return this.request(`/chipdna/cancel`, 'POST', {});
147
+ }
148
+ postChipDNATmsUpdate() {
149
+ return this.request(`/chipdna/tms-update`, 'POST', {});
150
+ }
151
+ getBarcodeRead() {
152
+ return this.request(`/devices/qrcode/read`);
153
+ }
154
+ postBarcodeCancel() {
155
+ return this.request(`/devices/qrcode/cancel`, 'POST', {});
156
+ }
157
+ getCardRead() {
158
+ return this.request(`/devices/card/read`);
159
+ }
160
+ postCardCancel() {
161
+ return this.request(`/devices/card/cancel`, 'POST', {});
162
+ }
163
+ postCardAssign(employeeId, code) {
164
+ const data = { employee_id: employeeId, code };
165
+ return this.request(`/employee-cards/assign`, 'POST', data);
166
+ }
167
+ postCardUnassign(code) {
168
+ return this.request(`/employee-cards/unassign`, 'POST', { code });
169
+ }
170
+ // identifier can be either a timeclock ID as an integer
171
+ // or a swipe card code as a string
172
+ getEmployee(identifier) {
173
+ return this.request(`/employees/${identifier}`);
174
+ }
175
+ postTimePunch(data) {
176
+ return this.request(`/time-punches`, 'POST', data);
177
+ }
178
+ getTimePunchesReport(businessDate, employeeId) {
179
+ let params = [];
180
+ if (businessDate)
181
+ params.push(`business_date=${businessDate}`);
182
+ if (employeeId)
183
+ params.push(`employee_id=${employeeId}`);
184
+ params = params.length ? `?${params.join('&')}` : '';
185
+ return this.request(`/time-punches-report${params}`);
186
+ }
187
+ postPrintShiftSummary(employeeId) {
188
+ return this.request(`/shift-summary/${employeeId}/print`, 'POST', {});
189
+ }
190
+ postCashEvent(data) {
191
+ return this.request(`/cash-events`, 'POST', data);
192
+ }
193
+ getCashier() {
194
+ return this.request(`/cashier`);
195
+ }
196
+ getCashSummary(employeeId) {
197
+ return this.request(`/cash-summary/${employeeId}`);
198
+ }
199
+ postPrintCashSummary(employeeId) {
200
+ return this.request(`/cash-summary/${employeeId}/print`, 'POST', {});
201
+ }
202
+ getAlerts() {
203
+ return this.request(`/alerts`);
204
+ }
205
+ getAlert(alertId) {
206
+ return this.request(`/alerts/${alertId}`);
207
+ }
208
+ putAlert(alertId, data) {
209
+ return this.request(`/alerts/${alertId}`, 'PUT', data);
210
+ }
211
+ deleteAlert(alertId) {
212
+ return this.request(`/alerts/${alertId}`, 'DELETE');
213
+ }
214
+ getOfflineTransactions() {
215
+ return this.request(`/credit/offline-transactions`);
216
+ }
217
+ postOfflineTransactions() {
218
+ return this.request(`/credit/offline-transactions/process`, 'POST', {});
219
+ }
220
+ getSurcharges(serviceType) {
221
+ const params = serviceType ? `?service_type=${serviceType}` : '';
222
+ return this.request(`/surcharges${params}`);
223
+ }
224
+ getDiscounts(serviceType, orderType) {
225
+ let params = [];
226
+ if (serviceType)
227
+ params.push(`service_type=${serviceType}`);
228
+ if (orderType)
229
+ params.push(`order_type=${orderType}`);
230
+ params = params.length ? `?${params.join('&')}` : '';
231
+ return this.request(`/discounts${params}`);
232
+ }
233
+ getDiscount(name) {
234
+ return this.request(`/discounts/${name}`);
235
+ }
236
+ getDiscountViaQRCode(code) {
237
+ return this.request(`/qrcodes/${code}`);
238
+ }
239
+ getTaxes(serviceType, orderType) {
240
+ let params = [];
241
+ if (serviceType)
242
+ params.push(`service_type=${serviceType}`);
243
+ if (orderType)
244
+ params.push(`order_type=${orderType}`);
245
+ params = params.length ? `?${params.join('&')}` : '';
246
+ return this.request(`/taxes${params}`);
247
+ }
248
+ getItemTypes() {
249
+ return this.request(`/item-types`);
250
+ }
251
+ getSelectOptions() {
252
+ return this.request(`/select-options`);
253
+ }
254
+ postOpenCashDrawer() {
255
+ return this.request(`/devices/drawer/open`, 'POST', {});
256
+ }
257
+ postTicketPrint(orderUuid, ticketNo, data) {
258
+ const endpoint = `/orders/${orderUuid}/tickets/${ticketNo}/print`;
259
+ return this.request(endpoint, 'POST', data);
260
+ }
261
+ postTicketStatus(orderUuid, ticketNo, status) {
262
+ const endpoint = `/orders/${orderUuid}/tickets/${ticketNo}/${status}`;
263
+ return this.request(endpoint, 'POST', {});
264
+ }
265
+ postTicketsPrint(orderUuid, data) {
266
+ const endpoint = `/orders/${orderUuid}/tickets/print`;
267
+ return this.request(endpoint, 'POST', data);
268
+ }
269
+ postTicketsReset(orderUuid) {
270
+ const endpoint = `/orders/${orderUuid}/tickets/reset`;
271
+ return this.request(endpoint, 'POST', {});
272
+ }
273
+ getArrivals() {
274
+ return this.request(`/arrivals`);
275
+ }
276
+ postAcknowledgeArrival(orderUuid) {
277
+ return this.request(`/orders/${orderUuid}/ack-arrival`, 'POST', {});
278
+ }
279
+ patchOrder(orderUuid, data) {
280
+ return this.request(`/orders/${orderUuid}`, 'PATCH', data);
281
+ }
282
+ postReceipt(orderUuid) {
283
+ const endpoint = `/orders/${orderUuid}/print`;
284
+ return this.request(endpoint, 'POST', {});
285
+ }
286
+ postGiftCardCredit(data, checkOnly) {
287
+ const params = checkOnly ? '?check_only=true' : '';
288
+ return this.request(`/gift-cards/credit${params}`, 'POST', data);
289
+ }
290
+ getGiftCardBalance(code, cardNumber) {
291
+ const params = code ? `code=${code}` : `card_number=${cardNumber || ''}`;
292
+ return this.request(`/gift-cards/balance?${params}`);
293
+ }
294
+ getInternalSettings() {
295
+ return this.request(`/internal-settings`);
296
+ }
297
+ postInternalSettings(data) {
298
+ return this.request(`/internal-settings`, 'POST', data);
299
+ }
300
+ getStore() {
301
+ return this.request(`/store`);
302
+ }
303
+ getRevenueCenters(revenue_center_type, is_outpost, lat, lng, requestedAt) {
304
+ let params = '';
305
+ if (revenue_center_type)
306
+ params += `revenue_center_type=${revenue_center_type}`;
307
+ if (is_outpost)
308
+ params += '&is_outpost=true';
309
+ if (lat && lng)
310
+ params += `&lat=${lat}&lng=${lng}`;
311
+ if (requestedAt)
312
+ params += `&requested_at=${requestedAt}`;
313
+ return this.request(`/revenue-centers?${params}`);
314
+ }
315
+ getRevenueCenter(revenue_center_id, requestedAt) {
316
+ const params = requestedAt ? `?requested_at=${requestedAt}` : '';
317
+ return this.request(`/revenue-centers/${revenue_center_id}${params}`);
318
+ }
319
+ getLocations(revenue_center_type, is_outpost, lat, lng, requestedAt) {
320
+ let params = '';
321
+ if (revenue_center_type)
322
+ params += `revenue_center_type=${revenue_center_type}`;
323
+ if (is_outpost)
324
+ params += '&is_outpost=true';
325
+ if (lat && lng)
326
+ params += `&lat=${lat}&lng=${lng}`;
327
+ if (requestedAt)
328
+ params += `&requested_at=${requestedAt}`;
329
+ return this.request(`/locations?${params}`);
330
+ }
331
+ getLocation(revenue_center_id) {
332
+ return this.request(`/locations/${revenue_center_id}`);
333
+ }
334
+ getValidTimes(revenueCenterType) {
335
+ const params = `revenue_center_type=${revenueCenterType}`;
336
+ return this.request(`/valid-times?${params}`);
337
+ }
338
+ getAllergens() {
339
+ return this.request(`/allergens?with_related=true`);
340
+ }
341
+ getMenu(revenueCenterId, serviceType, requestedAt) {
342
+ const params = `revenue_center_id=${revenueCenterId}&service_type=${serviceType}&requested_at=${requestedAt}`;
343
+ return this.request(`/menus?${params}`);
344
+ }
345
+ getMenuItems(revenueCenterId, serviceType) {
346
+ const params = `revenue_center_id=${revenueCenterId}&service_type=${serviceType}`;
347
+ return this.request(`/menu-items?${params}`);
348
+ }
349
+ getMenuDisplay(revenueCenterId, serviceType, weekday, minutes) {
350
+ const params = `service_type=${serviceType}&weekday=${weekday}&minutes=${minutes}`;
351
+ return this.request(`/menus/${revenueCenterId}/display?${params}`);
352
+ }
353
+ getMenuPages() {
354
+ return this.request(`/menu-pages`);
355
+ }
356
+ getDeals(customerId) {
357
+ const params = customerId ? `&customer_id=${customerId}` : '';
358
+ return this.request(`/deals?with_related=true${params}`);
359
+ }
360
+ getAnnouncements(page) {
361
+ return this.request(`/announcements?announcement_page=${page}&with_related=true`);
362
+ }
363
+ getAnnouncementPage(page) {
364
+ return this.request(`/announcement-pages/${page}`);
365
+ }
366
+ getPages() {
367
+ return this.request(`/pages`);
368
+ }
369
+ getPage(slug) {
370
+ return this.request(`/pages/${slug}`);
371
+ }
372
+ getPosts(slug) {
373
+ const params = slug ? `?post_category_slug=${slug}` : '';
374
+ return this.request(`/posts${params}`);
375
+ }
376
+ getPost(slug) {
377
+ return this.request(`/posts/${slug}`);
378
+ }
379
+ getDiscountQRCode(discountId, customerId) {
380
+ const params = customerId ? `?customer_id=${customerId}` : '';
381
+ return this.request(`/discounts/${discountId}/qrcode${params}`);
382
+ }
383
+ postTender(orderId, tender) {
384
+ return this.request(`/orders/${orderId}/tenders`, 'POST', tender);
385
+ }
386
+ patchTender(orderId, index, data) {
387
+ return this.request(`/orders/${orderId}/tenders/${index}`, 'PATCH', data);
388
+ }
389
+ postTenderVoid(orderId, index) {
390
+ return this.request(`/orders/${orderId}/tenders/${index}/void`, 'POST', {});
391
+ }
392
+ postIdentifyCustomer(data) {
393
+ return this.request(`/identify-customer`, 'POST', data);
394
+ }
395
+ postApplePayValidate(host, validationURL) {
396
+ const data = { host, validationURL };
397
+ return this.request(`/apple-pay/validate`, 'POST', data);
398
+ }
399
+ postApplePayPayment(token, amount, customerId) {
400
+ let data = { token, amount };
401
+ if (customerId) {
402
+ data = Object.assign(Object.assign({}, data), { customer_id: customerId });
403
+ }
404
+ return this.request(`/apple-pay/payment`, 'POST', data);
405
+ }
406
+ postOrderValidate(order) {
407
+ return this.request(`/orders/validate`, 'POST', order);
408
+ }
409
+ postOrder(order) {
410
+ return this.request(`/orders`, 'POST', order);
411
+ }
412
+ deleteOrder(order) {
413
+ return this.request(`/orders`, 'DELETE', order);
414
+ }
415
+ getOrders(args) {
416
+ let params = [];
417
+ if (!args) {
418
+ params = [
419
+ `prep_status=TODO,IN_PROGRESS,DONE`,
420
+ `sort_by=fire_at`,
421
+ `sort_direction=ASC`,
422
+ ];
423
+ }
424
+ else {
425
+ const { business_date, channel_type, prep_status, receipt_type, parent_receipt_uuid, search, sort_by, sort_direction, } = args;
426
+ if (business_date)
427
+ params.push(`business_date=${business_date}`);
428
+ if (channel_type)
429
+ params.push(`channel_type=${channel_type}`);
430
+ if (prep_status)
431
+ params.push(`prep_status=${prep_status}`);
432
+ if (receipt_type)
433
+ params.push(`receipt_type=${receipt_type}`);
434
+ if (parent_receipt_uuid)
435
+ params.push(`parent_receipt_uuid=${parent_receipt_uuid}`);
436
+ if (search)
437
+ params.push(`search=${search}`);
438
+ if (sort_by)
439
+ params.push(`sort_by=${sort_by}`);
440
+ if (sort_direction)
441
+ params.push(`sort_direction=${sort_direction}`);
442
+ }
443
+ params = params.length ? `?${params.join('&')}` : '';
444
+ return this.request(`/orders${params}`);
445
+ }
446
+ postRefundValidate(orderId, refund) {
447
+ return this.request(`/orders/${orderId}/refund/validate`, 'POST', refund);
448
+ }
449
+ postRefund(orderId, refund) {
450
+ return this.request(`/orders/${orderId}/refund`, 'POST', refund);
451
+ }
452
+ getOrderFulfillment(orderId) {
453
+ return this.request(`/orders/${orderId}/fulfillment`);
454
+ }
455
+ putOrderFulfillment(orderId, data) {
456
+ return this.request(`/orders/${orderId}/fulfillment`, 'PUT', data);
457
+ }
458
+ getOrderRating(ratingUuid) {
459
+ return this.request(`/ratings/${ratingUuid}`);
460
+ }
461
+ putOrderRating(ratingUuid, data) {
462
+ return this.request(`/ratings/${ratingUuid}`, 'PUT', data);
463
+ }
464
+ postOrderRatingUnsubscribe(ratingUuid) {
465
+ return this.request(`/ratings/${ratingUuid}/unsubscribe`, 'POST', {});
466
+ }
467
+ postPurchaseGiftCards(data) {
468
+ return this.request(`/gift-cards-purchase`, 'POST', data);
469
+ }
470
+ postPurchaseDonation(data) {
471
+ return this.request(`/donation-purchase`, 'POST', data);
472
+ }
473
+ postCart(data) {
474
+ return this.request(`/carts`, 'POST', data);
475
+ }
476
+ getCart(cartId) {
477
+ return this.request(`/carts/${cartId}`);
478
+ }
479
+ putCart(cartId, data) {
480
+ return this.request(`/carts/${cartId}`, 'PUT', data);
481
+ }
482
+ deleteCart(cartId) {
483
+ return this.request(`/carts/${cartId}`, 'DELETE');
484
+ }
485
+ postCartGuest(data) {
486
+ return this.request(`/cart-guests`, 'POST', data);
487
+ }
488
+ getGuest(email) {
489
+ return this.request(`/guest?email=${encodeURIComponent(email)}`);
490
+ }
491
+ getSubscriber(email) {
492
+ return this.request(`/subscribers/${encodeURIComponent(email)}`);
493
+ }
494
+ postSubscriber(email) {
495
+ return this.request(`/subscribers`, 'POST', { email });
496
+ }
497
+ postSignUp(data) {
498
+ return this.request(`/customer`, 'POST', data);
499
+ }
500
+ postLevelUp(data) {
501
+ return this.request(`/levelup`, 'POST', data);
502
+ }
503
+ postThanxLogin(email) {
504
+ return this.request('/thanx-login', 'POST', { email });
505
+ }
506
+ postThanxAuth(code, path) {
507
+ const data = path ? { code, path } : { code };
508
+ return this.request('/thanx-auth', 'POST', data);
509
+ }
510
+ postLogin(email, password) {
511
+ const data = {
512
+ grant_type: 'password',
513
+ username: email,
514
+ password: password,
515
+ };
516
+ return this.authRequest('/token', data);
517
+ }
518
+ postLogout(token) {
519
+ return this.authRequest('/revoke', { token });
520
+ }
521
+ postSendPasswordResetEmail(email, link_url) {
522
+ const data = { email, link_url };
523
+ return this.request(`/customer/password/send-email`, 'POST', data);
524
+ }
525
+ postResetPassword(new_password, token) {
526
+ const data = { new_password, token };
527
+ return this.request(`/customer/password/set-new-password`, 'POST', data);
528
+ }
529
+ getCustomer(token) {
530
+ return this.request(`/customer?with_related=true`, 'GET', null, null, token);
531
+ }
532
+ putCustomer(token, data) {
533
+ return this.request(`/customer`, 'PUT', data, null, token);
534
+ }
535
+ postCustomerPosToken(token, posToken) {
536
+ const data = { pos_token: posToken };
537
+ return this.request(`/customer/pos-token`, 'POST', data, null, token);
538
+ }
539
+ postSendVerificationEmail(token, linkUrl) {
540
+ const data = { link_url: linkUrl };
541
+ return this.request(`/customer/send-verification-email`, 'POST', data, null, token);
542
+ }
543
+ postVerifyAccount(verifyToken) {
544
+ const data = { token: verifyToken };
545
+ return this.request(`/verify-account`, 'POST', data);
546
+ }
547
+ getCustomerQRCode(token) {
548
+ return this.request(`/customer/qrcode`, 'GET', null, null, token);
549
+ }
550
+ getCustomerRewards(token) {
551
+ return this.request(`/customer/rewards?with_related=true`, 'GET', null, null, token);
552
+ }
553
+ getCustomerOrders(token, limit, timing) {
554
+ let params = [];
555
+ if (limit)
556
+ params.push(`limit=${limit}`);
557
+ if (timing)
558
+ params.push(`requested_type=${timing}`);
559
+ params = params.length ? `?${params.join('&')}` : '';
560
+ return this.request(`/customer/orders${params}`, 'GET', null, null, token);
561
+ }
562
+ getCustomerOrder(token, orderId) {
563
+ return this.request(`/customer/orders/${orderId}`, 'GET', null, null, token);
564
+ }
565
+ postCustomerGroupOrder(token, data) {
566
+ return this.request(`/customer/carts`, 'POST', data, null, token);
567
+ }
568
+ getCustomerGroupOrders(token) {
569
+ return this.request(`/customer/carts?expand=true`, 'GET', null, null, token);
570
+ }
571
+ getCustomerGroupOrder(token, cartId) {
572
+ return this.request(`/customer/carts/${cartId}?expand=customer&with_related=true`, 'GET', null, null, token);
573
+ }
574
+ putCustomerGroupOrder(token, cartId, data) {
575
+ return this.request(`/customer/carts/${cartId}`, 'PUT', data, null, token);
576
+ }
577
+ putCustomerGroupOrderStatus(token, cartId, data) {
578
+ return this.request(`/customer/carts/${cartId}/status`, 'PUT', data, null, token);
579
+ }
580
+ deleteCustomerGroupOrder(token, cartId) {
581
+ return this.request(`/customer/carts/${cartId}`, 'DELETE', null, null, token);
582
+ }
583
+ getCustomerAllergens(token) {
584
+ return this.request(`/customer/allergens`, 'GET', null, null, token);
585
+ }
586
+ // replace all existing allergens with a new list of allergens
587
+ putCustomerAllergens(token, data) {
588
+ return this.request(`/customer/allergens`, 'PUT', data, null, token);
589
+ }
590
+ // add new allergens incrementally without affecting existing allergens
591
+ postCustomerAllergens(token, data) {
592
+ return this.request(`/customer/allergens`, 'POST', data, null, token);
593
+ }
594
+ getCustomerAddresses(token, limit = 10) {
595
+ const params = limit ? `?limit=${limit}` : '';
596
+ return this.request(`/customer/addresses${params}`, 'GET', null, null, token);
597
+ }
598
+ putCustomerAddress(token, addressId, data) {
599
+ return this.request(`/customer/addresses/${addressId}`, 'PUT', data, null, token);
600
+ }
601
+ deleteCustomerAddress(token, addressId) {
602
+ return this.request(`/customer/addresses/${addressId}`, 'DELETE', null, null, token);
603
+ }
604
+ getCustomerCreditCards(token, includeLinked = false) {
605
+ const params = includeLinked ? `?include_linked=true` : '';
606
+ return this.request(`/customer/credit-cards${params}`, 'GET', null, null, token);
607
+ }
608
+ postCustomerCreditCard(token, data) {
609
+ return this.request(`/customer/credit-cards`, 'POST', data, null, token);
610
+ }
611
+ putCustomerCreditCard(token, cardId, data) {
612
+ return this.request(`/customer/credit-cards/${cardId}`, 'PUT', data, null, token);
613
+ }
614
+ deleteCustomerCreditCard(token, cardId) {
615
+ return this.request(`/customer/credit-cards/${cardId}`, 'DELETE', null, null, token);
616
+ }
617
+ getCustomerGiftCards(token) {
618
+ return this.request(`/customer/gift-cards`, 'GET', null, null, token);
619
+ }
620
+ postCustomerGiftCard(token, data) {
621
+ return this.request(`/customer/gift-cards`, 'POST', data, null, token);
622
+ }
623
+ postCustomerGiftCardAssign(token, card_number) {
624
+ return this.request(`/customer/gift-cards/assign`, 'POST', { card_number }, null, token);
625
+ }
626
+ postCustomerGiftCardAssignOther(token, giftCardId, email) {
627
+ return this.request(`/customer/gift-cards/${giftCardId}/assign`, 'POST', { email }, null, token);
628
+ }
629
+ putCustomerGiftCard(token, giftCardId, data) {
630
+ return this.request(`/customer/gift-cards/${giftCardId}`, 'PUT', data, null, token);
631
+ }
632
+ deleteCustomerGiftCard(token, giftCardId) {
633
+ return this.request(`/customer/gift-cards/${giftCardId}`, 'DELETE', null, null, token);
634
+ }
635
+ getCustomerFavorites(token, limit) {
636
+ const params = limit ? `?limit=${limit}` : '';
637
+ return this.request(`/customer/favorites${params}`, 'GET', null, null, token);
638
+ }
639
+ postCustomerFavorite(token, data) {
640
+ return this.request(`/customer/favorites`, 'POST', data, null, token);
641
+ }
642
+ deleteCustomerFavorite(token, favoriteId) {
643
+ return this.request(`/customer/favorites/${favoriteId}`, 'DELETE', null, null, token);
644
+ }
645
+ getCustomerCommunicationPreferences(token) {
646
+ return this.request(`/customer/notification-preferences`, 'GET', null, null, token);
647
+ }
648
+ postCustomerCommunicationPreference(token, data) {
649
+ return this.request(`/customer/notification-preferences`, 'POST', data, null, token);
650
+ }
651
+ putCustomerCommunicationPreference(token, data) {
652
+ return this.request(`/customer/notification-preferences`, 'PUT', data, null, token);
653
+ }
654
+ deleteCustomerCommunicationPreference(token, communicationPreferenceId) {
655
+ return this.request(`/customer/notification-preferences/${communicationPreferenceId}`, 'DELETE', null, null, token);
656
+ }
657
+ postCustomerFcmToken(token, fcmToken) {
658
+ return this.request(`/customer/fcm-tokens`, 'POST', { fcm_token: fcmToken }, null, token);
659
+ }
660
+ getCustomerFcmToken(token) {
661
+ return this.request(`/customer/fcm-tokens`, 'GET', null, null, token);
662
+ }
663
+ deleteCustomerFcmToken(token) {
664
+ return this.request(`/customer/fcm-tokens`, 'DELETE', null, null, token);
665
+ }
666
+ getCustomerLoyalty(token) {
667
+ return this.request(`/customer/loyalty`, 'GET', null, null, token);
668
+ }
669
+ getCustomerLevelUp(token) {
670
+ return this.request(`/customer/levelup`, 'GET', null, null, token);
671
+ }
672
+ getCustomerThanx(token) {
673
+ return this.request(`/customer/thanx`, 'GET', null, null, token);
674
+ }
675
+ getThanxCardSignature(token, acct) {
676
+ return this.request(`/customer/thanx-card-signature?acct=${acct}`, 'GET', null, null, token);
677
+ }
678
+ postCustomerLevelUp(token, data) {
679
+ return this.request(`/customer/levelup`, 'POST', data, null, token);
680
+ }
681
+ deleteCustomerLevelUp(token, levelupConnectId) {
682
+ return this.request(`/customer/levelup/${levelupConnectId}`, 'DELETE', null, null, token);
683
+ }
684
+ getCustomerHouseAccounts(token) {
685
+ return this.request(`/customer/house-accounts`, 'GET', null, null, token);
686
+ }
687
+ putCustomerOrderRating(token, orderId, data) {
688
+ return this.request(`/customer/orders/${orderId}/rating`, 'PUT', data, null, token);
689
+ }
690
+ }
691
+ exports.default = OpenTenderAPI;