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