reach-api-sdk 1.0.0

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 (238) hide show
  1. package/.eslintrc copy.json +13 -0
  2. package/.eslintrc.json +23 -0
  3. package/.prettierrc.json +7 -0
  4. package/README.md +2 -0
  5. package/dist/reach-sdk.d.ts +24450 -0
  6. package/dist/reach-sdk.js +20631 -0
  7. package/package.json +46 -0
  8. package/rollup.config.mjs +30 -0
  9. package/src/ApiClient.ts +239 -0
  10. package/src/core/ApiError.ts +24 -0
  11. package/src/core/ApiRequestOptions.ts +16 -0
  12. package/src/core/ApiResult.ts +10 -0
  13. package/src/core/AxiosHttpRequest.ts +24 -0
  14. package/src/core/BaseHttpRequest.ts +12 -0
  15. package/src/core/CancelablePromise.ts +129 -0
  16. package/src/core/OpenAPI.ts +31 -0
  17. package/src/core/request.ts +328 -0
  18. package/src/definition/swagger.yaml +58566 -0
  19. package/src/index.ts +230 -0
  20. package/src/models/Activity.ts +51 -0
  21. package/src/models/ActivityType.ts +12 -0
  22. package/src/models/AdvanceBooking.ts +12 -0
  23. package/src/models/Amenity.ts +21 -0
  24. package/src/models/AppUserRole.ts +13 -0
  25. package/src/models/ApplicationRole.ts +14 -0
  26. package/src/models/AutoCompleteResponseModel.ts +15 -0
  27. package/src/models/BookingStatus.ts +11 -0
  28. package/src/models/ContactOnConfirmation.ts +11 -0
  29. package/src/models/Country.ts +43 -0
  30. package/src/models/Course.ts +252 -0
  31. package/src/models/CourseBookingCutoff.ts +11 -0
  32. package/src/models/CoursePage.ts +13 -0
  33. package/src/models/CourseSearchSortBy.ts +11 -0
  34. package/src/models/CourseSession.ts +88 -0
  35. package/src/models/CourseSessionPage.ts +13 -0
  36. package/src/models/CourseSessionSchedule.ts +85 -0
  37. package/src/models/CourseSessionSchedulePage.ts +13 -0
  38. package/src/models/Customer.ts +88 -0
  39. package/src/models/CustomerCancellationOption.ts +12 -0
  40. package/src/models/CustomerPage.ts +13 -0
  41. package/src/models/CustomerType.ts +11 -0
  42. package/src/models/DayOfWeek.ts +13 -0
  43. package/src/models/EmailReminderSchedule.ts +49 -0
  44. package/src/models/EmailReminderSchedulePage.ts +13 -0
  45. package/src/models/EmailSetting.ts +61 -0
  46. package/src/models/EmailSettingPage.ts +13 -0
  47. package/src/models/Facility.ts +105 -0
  48. package/src/models/FacilityIndividual.ts +67 -0
  49. package/src/models/FacilityIndividualPage.ts +13 -0
  50. package/src/models/FacilityIndividualsType.ts +19 -0
  51. package/src/models/FacilityPage.ts +13 -0
  52. package/src/models/GenericActivity.ts +112 -0
  53. package/src/models/GenericActivityPage.ts +13 -0
  54. package/src/models/GeocodeResponseModel.ts +18 -0
  55. package/src/models/GooglePrediction.ts +32 -0
  56. package/src/models/HttpStatusCode.ts +67 -0
  57. package/src/models/IOpportunity.ts +55 -0
  58. package/src/models/Image.ts +78 -0
  59. package/src/models/ImagePage.ts +13 -0
  60. package/src/models/InviteStatus.ts +11 -0
  61. package/src/models/LoqateGeocode.ts +21 -0
  62. package/src/models/LoqatePlaceResult.ts +48 -0
  63. package/src/models/LoqatePrediction.ts +21 -0
  64. package/src/models/Northeast.ts +17 -0
  65. package/src/models/NotificationQueue.ts +50 -0
  66. package/src/models/NotificationQueuePage.ts +13 -0
  67. package/src/models/NotificationSetting.ts +89 -0
  68. package/src/models/NotificationSettingPage.ts +13 -0
  69. package/src/models/NotificationType.ts +22 -0
  70. package/src/models/Offer.ts +100 -0
  71. package/src/models/OfferPage.ts +13 -0
  72. package/src/models/OpenactiveFeedIntermediate.ts +50 -0
  73. package/src/models/OpenactiveFeedIntermediatePage.ts +13 -0
  74. package/src/models/OpenactiveFeedItem.ts +56 -0
  75. package/src/models/OpenactiveFeedItemPage.ts +13 -0
  76. package/src/models/OpportunityType.ts +12 -0
  77. package/src/models/Order.ts +212 -0
  78. package/src/models/OrderItem.ts +98 -0
  79. package/src/models/OrderItemPage.ts +13 -0
  80. package/src/models/OrderItemStatus.ts +16 -0
  81. package/src/models/OrderPage.ts +13 -0
  82. package/src/models/OrderSource.ts +11 -0
  83. package/src/models/OrderStage.ts +12 -0
  84. package/src/models/OrderToken.ts +41 -0
  85. package/src/models/OrderTokenPage.ts +13 -0
  86. package/src/models/OrgCourseUtilisation.ts +81 -0
  87. package/src/models/OrgCourseUtilisationPage.ts +13 -0
  88. package/src/models/OrganisationApplicationFeeHandling.ts +11 -0
  89. package/src/models/OrganisationAvailableChannel.ts +11 -0
  90. package/src/models/OrganisationRefundPolicy.ts +12 -0
  91. package/src/models/OrganisationTaxMode.ts +11 -0
  92. package/src/models/OrganisationType.ts +11 -0
  93. package/src/models/Payment.ts +65 -0
  94. package/src/models/PaymentMethod.ts +13 -0
  95. package/src/models/PaymentPage.ts +13 -0
  96. package/src/models/Permission.ts +77 -0
  97. package/src/models/PermissionPage.ts +13 -0
  98. package/src/models/PlaceDetailsResponseModel.ts +12 -0
  99. package/src/models/PlaceGeometry.ts +14 -0
  100. package/src/models/PlaceLocation.ts +17 -0
  101. package/src/models/PlaceResult.ts +20 -0
  102. package/src/models/PlaceViewport.ts +14 -0
  103. package/src/models/PlusCode.ts +17 -0
  104. package/src/models/Prepayment.ts +12 -0
  105. package/src/models/Programme.ts +71 -0
  106. package/src/models/ProgrammePage.ts +13 -0
  107. package/src/models/ReachEntity.ts +18 -0
  108. package/src/models/ReachError.ts +17 -0
  109. package/src/models/ReachOperation.ts +11 -0
  110. package/src/models/RecentOrderActivityReport.ts +81 -0
  111. package/src/models/RecentOrderActivityReportPage.ts +13 -0
  112. package/src/models/ScheduleStatus.ts +13 -0
  113. package/src/models/ScheduledSession.ts +139 -0
  114. package/src/models/ScheduledSessionPage.ts +13 -0
  115. package/src/models/ScheduledSessionSchedule.ts +85 -0
  116. package/src/models/ScheduledSessionSchedulePage.ts +13 -0
  117. package/src/models/ScheduledSessionSearchSortBy.ts +10 -0
  118. package/src/models/SearchSortOrderDirection.ts +11 -0
  119. package/src/models/Session.ts +191 -0
  120. package/src/models/SessionGender.ts +12 -0
  121. package/src/models/SessionPage.ts +13 -0
  122. package/src/models/SessionType.ts +12 -0
  123. package/src/models/Slot.ts +142 -0
  124. package/src/models/SlotAvailabilityStatus.ts +17 -0
  125. package/src/models/SlotOffer.ts +41 -0
  126. package/src/models/SlotOfferPage.ts +13 -0
  127. package/src/models/SlotPage.ts +13 -0
  128. package/src/models/SlotSchedule.ts +107 -0
  129. package/src/models/SlotScheduleOffer.ts +42 -0
  130. package/src/models/SlotScheduleOfferPage.ts +13 -0
  131. package/src/models/SlotSchedulePage.ts +13 -0
  132. package/src/models/SlotStatus.ts +18 -0
  133. package/src/models/Southwest.ts +17 -0
  134. package/src/models/StripeAccount.ts +69 -0
  135. package/src/models/StripeAccountPage.ts +13 -0
  136. package/src/models/StructuredFormatting.ts +17 -0
  137. package/src/models/Surface.ts +24 -0
  138. package/src/models/Survey.ts +51 -0
  139. package/src/models/SurveyAnswer.ts +58 -0
  140. package/src/models/SurveyAnswerPage.ts +13 -0
  141. package/src/models/SurveyPage.ts +13 -0
  142. package/src/models/SurveyQuestion.ts +69 -0
  143. package/src/models/SurveyQuestionOption.ts +45 -0
  144. package/src/models/SurveyQuestionPage.ts +13 -0
  145. package/src/models/SurveyQuestionType.ts +13 -0
  146. package/src/models/SurveyQuestionsTarget.ts +11 -0
  147. package/src/models/SurveySubmissionModel.ts +33 -0
  148. package/src/models/SurveyType.ts +11 -0
  149. package/src/models/Tax.ts +37 -0
  150. package/src/models/Tenant.ts +242 -0
  151. package/src/models/TenantPage.ts +13 -0
  152. package/src/models/TenantWebsiteSetting.ts +89 -0
  153. package/src/models/TenantWebsiteSettingPage.ts +13 -0
  154. package/src/models/Timezone.ts +21 -0
  155. package/src/models/TotalRevenueReport.ts +68 -0
  156. package/src/models/TotalRevenueReportPage.ts +13 -0
  157. package/src/models/User.ts +65 -0
  158. package/src/models/UserPage.ts +13 -0
  159. package/src/models/UserRole.ts +28 -0
  160. package/src/models/Venue.ts +187 -0
  161. package/src/models/VenueOpeningHours.ts +52 -0
  162. package/src/models/VenuePage.ts +13 -0
  163. package/src/models/VenuesReport.ts +81 -0
  164. package/src/models/VenuesReportPage.ts +13 -0
  165. package/src/models/WaitlistActivity.ts +58 -0
  166. package/src/models/WaitlistActivityPage.ts +13 -0
  167. package/src/models/WaitlistOpportunity.ts +68 -0
  168. package/src/models/WaitlistOpportunityPage.ts +13 -0
  169. package/src/services/ActivityService.ts +118 -0
  170. package/src/services/AmenityService.ts +118 -0
  171. package/src/services/BookingService.ts +1037 -0
  172. package/src/services/CountryService.ts +118 -0
  173. package/src/services/CourseSessionSchedulesService.ts +589 -0
  174. package/src/services/CourseSessionsService.ts +715 -0
  175. package/src/services/CoursesService.ts +930 -0
  176. package/src/services/CustomersService.ts +726 -0
  177. package/src/services/EmailReminderSchedulesService.ts +526 -0
  178. package/src/services/EmailSettingsService.ts +528 -0
  179. package/src/services/FacilitiesService.ts +634 -0
  180. package/src/services/FacilityIndividualsService.ts +526 -0
  181. package/src/services/GenericActivityService.ts +564 -0
  182. package/src/services/GeocodeService.ts +43 -0
  183. package/src/services/ImagesService.ts +661 -0
  184. package/src/services/LeasingService.ts +739 -0
  185. package/src/services/LoqatePlacesService.ts +76 -0
  186. package/src/services/NotificationQueueService.ts +508 -0
  187. package/src/services/NotificationSettingsService.ts +708 -0
  188. package/src/services/OffersService.ts +636 -0
  189. package/src/services/OpenactiveFeedIntermediateService.ts +490 -0
  190. package/src/services/OpenactiveFeedItemService.ts +493 -0
  191. package/src/services/OrderItemsService.ts +474 -0
  192. package/src/services/OrdersService.ts +862 -0
  193. package/src/services/OrgCourseUtilisationService.ts +762 -0
  194. package/src/services/PaymentsService.ts +474 -0
  195. package/src/services/PermissionsService.ts +456 -0
  196. package/src/services/PlacesService.ts +70 -0
  197. package/src/services/ProgrammesService.ts +528 -0
  198. package/src/services/PublicBookingService.ts +528 -0
  199. package/src/services/PublicCoursesService.ts +632 -0
  200. package/src/services/PublicFacilitiesService.ts +462 -0
  201. package/src/services/PublicHealthCheckService.ts +25 -0
  202. package/src/services/PublicLeasingService.ts +602 -0
  203. package/src/services/PublicOrderTokensService.ts +468 -0
  204. package/src/services/PublicOrdersService.ts +527 -0
  205. package/src/services/PublicProgrammesService.ts +426 -0
  206. package/src/services/PublicScheduledSessionsService.ts +621 -0
  207. package/src/services/PublicSessionsService.ts +697 -0
  208. package/src/services/PublicSlotsService.ts +810 -0
  209. package/src/services/PublicStripeWebhookService.ts +35 -0
  210. package/src/services/PublicSurveyQuestionsService.ts +424 -0
  211. package/src/services/PublicSurveysService.ts +378 -0
  212. package/src/services/PublicTenantsService.ts +427 -0
  213. package/src/services/PublicVenuesService.ts +522 -0
  214. package/src/services/PublicWaitlistActivityService.ts +442 -0
  215. package/src/services/PublicWaitlistOpportunityService.ts +430 -0
  216. package/src/services/RecentOrderActivityReportService.ts +546 -0
  217. package/src/services/ScheduledSessionsSchedulesService.ts +605 -0
  218. package/src/services/ScheduledSessionsService.ts +903 -0
  219. package/src/services/SessionsService.ts +670 -0
  220. package/src/services/SlotOffersService.ts +492 -0
  221. package/src/services/SlotScheduleOffersService.ts +492 -0
  222. package/src/services/SlotSchedulesService.ts +641 -0
  223. package/src/services/SlotsService.ts +842 -0
  224. package/src/services/StripeAccountService.ts +552 -0
  225. package/src/services/SurfacesService.ts +124 -0
  226. package/src/services/SurveyAnswersService.ts +726 -0
  227. package/src/services/SurveyQuestionsService.ts +474 -0
  228. package/src/services/SurveysService.ts +456 -0
  229. package/src/services/TenantWebsiteSettingsService.ts +456 -0
  230. package/src/services/TenantsService.ts +801 -0
  231. package/src/services/TimezoneService.ts +124 -0
  232. package/src/services/TotalRevenueReportService.ts +528 -0
  233. package/src/services/UsersService.ts +543 -0
  234. package/src/services/VenuesReportService.ts +666 -0
  235. package/src/services/VenuesService.ts +724 -0
  236. package/src/services/WaitlistActivityService.ts +546 -0
  237. package/src/services/WaitlistOpportunityService.ts +528 -0
  238. package/tsconfig.json +11 -0
@@ -0,0 +1,328 @@
1
+ /* istanbul ignore file */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import axios from 'axios';
5
+ import type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';
6
+ import FormData from 'form-data';
7
+
8
+ import { ApiError } from './ApiError';
9
+ import type { ApiRequestOptions } from './ApiRequestOptions';
10
+ import type { ApiResult } from './ApiResult';
11
+ import { CancelablePromise } from './CancelablePromise';
12
+ import type { OnCancel } from './CancelablePromise';
13
+ import type { OpenAPIConfig } from './OpenAPI';
14
+
15
+ const isDefined = <T>(value: T | null | undefined): value is Exclude<T, null | undefined> => {
16
+ return value !== undefined && value !== null;
17
+ };
18
+
19
+ const isString = (value: any): value is string => {
20
+ return typeof value === 'string';
21
+ };
22
+
23
+ const isStringWithValue = (value: any): value is string => {
24
+ return isString(value) && value !== '';
25
+ };
26
+
27
+ const isBlob = (value: any): value is Blob => {
28
+ return (
29
+ typeof value === 'object' &&
30
+ typeof value.type === 'string' &&
31
+ typeof value.stream === 'function' &&
32
+ typeof value.arrayBuffer === 'function' &&
33
+ typeof value.constructor === 'function' &&
34
+ typeof value.constructor.name === 'string' &&
35
+ /^(Blob|File)$/.test(value.constructor.name) &&
36
+ /^(Blob|File)$/.test(value[Symbol.toStringTag])
37
+ );
38
+ };
39
+
40
+ const isFormData = (value: any): value is FormData => {
41
+ return value instanceof FormData;
42
+ };
43
+
44
+ const isSuccess = (status: number): boolean => {
45
+ return status >= 200 && status < 300;
46
+ };
47
+
48
+ const base64 = (str: string): string => {
49
+ try {
50
+ return btoa(str);
51
+ } catch (err) {
52
+ // @ts-ignore
53
+ return Buffer.from(str).toString('base64');
54
+ }
55
+ };
56
+
57
+ const getQueryString = (params: Record<string, any>): string => {
58
+ const qs: string[] = [];
59
+
60
+ const append = (key: string, value: any) => {
61
+ qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
62
+ };
63
+
64
+ const process = (key: string, value: any) => {
65
+ if (isDefined(value)) {
66
+ if (Array.isArray(value)) {
67
+ value.forEach((v) => {
68
+ process(key, v);
69
+ });
70
+ } else if (typeof value === 'object') {
71
+ Object.entries(value).forEach(([k, v]) => {
72
+ process(`${key}[${k}]`, v);
73
+ });
74
+ } else {
75
+ append(key, value);
76
+ }
77
+ }
78
+ };
79
+
80
+ Object.entries(params).forEach(([key, value]) => {
81
+ process(key, value);
82
+ });
83
+
84
+ if (qs.length > 0) {
85
+ return `?${qs.join('&')}`;
86
+ }
87
+
88
+ return '';
89
+ };
90
+
91
+ const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {
92
+ const encoder = config.ENCODE_PATH || encodeURI;
93
+
94
+ const path = options.url
95
+ .replace('{api-version}', config.VERSION)
96
+ .replace(/{(.*?)}/g, (substring: string, group: string) => {
97
+ if (options.path?.hasOwnProperty(group)) {
98
+ return encoder(String(options.path[group]));
99
+ }
100
+ return substring;
101
+ });
102
+
103
+ const url = `${config.BASE}${path}`;
104
+ if (options.query) {
105
+ return `${url}${getQueryString(options.query)}`;
106
+ }
107
+ return url;
108
+ };
109
+
110
+ const getFormData = (options: ApiRequestOptions): FormData | undefined => {
111
+ if (options.formData) {
112
+ const formData = new FormData();
113
+
114
+ const process = (key: string, value: any) => {
115
+ if (isString(value) || isBlob(value)) {
116
+ formData.append(key, value);
117
+ } else {
118
+ formData.append(key, JSON.stringify(value));
119
+ }
120
+ };
121
+
122
+ Object.entries(options.formData)
123
+ .filter(([_, value]) => isDefined(value))
124
+ .forEach(([key, value]) => {
125
+ if (Array.isArray(value)) {
126
+ value.forEach((v) => process(key, v));
127
+ } else {
128
+ process(key, value);
129
+ }
130
+ });
131
+
132
+ return formData;
133
+ }
134
+ return undefined;
135
+ };
136
+
137
+ type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
138
+
139
+ const resolve = async <T>(
140
+ options: ApiRequestOptions,
141
+ resolver?: T | Resolver<T>
142
+ ): Promise<T | undefined> => {
143
+ if (typeof resolver === 'function') {
144
+ return (resolver as Resolver<T>)(options);
145
+ }
146
+ return resolver;
147
+ };
148
+
149
+ const getHeaders = async (
150
+ config: OpenAPIConfig,
151
+ options: ApiRequestOptions,
152
+ formData?: FormData
153
+ ): Promise<Record<string, string>> => {
154
+ const token = await resolve(options, config.TOKEN);
155
+ const username = await resolve(options, config.USERNAME);
156
+ const password = await resolve(options, config.PASSWORD);
157
+ const additionalHeaders = await resolve(options, config.HEADERS);
158
+ const formHeaders = (typeof formData?.getHeaders === 'function' && formData?.getHeaders()) || {};
159
+
160
+ const headers = Object.entries({
161
+ Accept: 'application/json',
162
+ ...additionalHeaders,
163
+ ...options.headers,
164
+ ...formHeaders,
165
+ })
166
+ .filter(([_, value]) => isDefined(value))
167
+ .reduce(
168
+ (headers, [key, value]) => ({
169
+ ...headers,
170
+ [key]: String(value),
171
+ }),
172
+ {} as Record<string, string>
173
+ );
174
+
175
+ if (isStringWithValue(token)) {
176
+ headers['Authorization'] = `Bearer ${token}`;
177
+ }
178
+
179
+ if (isStringWithValue(username) && isStringWithValue(password)) {
180
+ const credentials = base64(`${username}:${password}`);
181
+ headers['Authorization'] = `Basic ${credentials}`;
182
+ }
183
+
184
+ if (options.body) {
185
+ if (options.mediaType) {
186
+ headers['Content-Type'] = options.mediaType;
187
+ } else if (isBlob(options.body)) {
188
+ headers['Content-Type'] = options.body.type || 'application/octet-stream';
189
+ } else if (isString(options.body)) {
190
+ headers['Content-Type'] = 'text/plain';
191
+ } else if (!isFormData(options.body)) {
192
+ headers['Content-Type'] = 'application/json';
193
+ }
194
+ }
195
+
196
+ return headers;
197
+ };
198
+
199
+ const getRequestBody = (options: ApiRequestOptions): any => {
200
+ if (options.body) {
201
+ return options.body;
202
+ }
203
+ return undefined;
204
+ };
205
+
206
+ const sendRequest = async <T>(
207
+ config: OpenAPIConfig,
208
+ options: ApiRequestOptions,
209
+ url: string,
210
+ body: any,
211
+ formData: FormData | undefined,
212
+ headers: Record<string, string>,
213
+ onCancel: OnCancel
214
+ ): Promise<AxiosResponse<T>> => {
215
+ const source = axios.CancelToken.source();
216
+
217
+ const requestConfig: AxiosRequestConfig = {
218
+ url,
219
+ headers,
220
+ data: body ?? formData,
221
+ method: options.method,
222
+ withCredentials: config.WITH_CREDENTIALS,
223
+ cancelToken: source.token,
224
+ };
225
+
226
+ onCancel(() => source.cancel('The user aborted a request.'));
227
+
228
+ try {
229
+ return await axios.request(requestConfig);
230
+ } catch (error) {
231
+ const axiosError = error as AxiosError<T>;
232
+ if (axiosError.response) {
233
+ return axiosError.response;
234
+ }
235
+ throw error;
236
+ }
237
+ };
238
+
239
+ const getResponseHeader = (
240
+ response: AxiosResponse<any>,
241
+ responseHeader?: string
242
+ ): string | undefined => {
243
+ if (responseHeader) {
244
+ const content = response.headers[responseHeader];
245
+ if (isString(content)) {
246
+ return content;
247
+ }
248
+ }
249
+ return undefined;
250
+ };
251
+
252
+ const getResponseBody = (response: AxiosResponse<any>): any => {
253
+ if (response.status !== 204) {
254
+ return response.data;
255
+ }
256
+ return undefined;
257
+ };
258
+
259
+ const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {
260
+ const errors: Record<number, string> = {
261
+ 400: 'Bad Request',
262
+ 401: 'Unauthorized',
263
+ 403: 'Forbidden',
264
+ 404: 'Not Found',
265
+ 500: 'Internal Server Error',
266
+ 502: 'Bad Gateway',
267
+ 503: 'Service Unavailable',
268
+ ...options.errors,
269
+ };
270
+
271
+ const error = errors[result.status];
272
+ if (error) {
273
+ throw new ApiError(options, result, error);
274
+ }
275
+
276
+ if (!result.ok) {
277
+ throw new ApiError(options, result, 'Generic Error');
278
+ }
279
+ };
280
+
281
+ /**
282
+ * Request method
283
+ * @param config The OpenAPI configuration object
284
+ * @param options The request options from the service
285
+ * @returns CancelablePromise<T>
286
+ * @throws ApiError
287
+ */
288
+ export const request = <T>(
289
+ config: OpenAPIConfig,
290
+ options: ApiRequestOptions
291
+ ): CancelablePromise<T> => {
292
+ return new CancelablePromise(async (resolve, reject, onCancel) => {
293
+ try {
294
+ const url = getUrl(config, options);
295
+ const formData = getFormData(options);
296
+ const body = getRequestBody(options);
297
+ const headers = await getHeaders(config, options, formData);
298
+
299
+ if (!onCancel.isCancelled) {
300
+ const response = await sendRequest<T>(
301
+ config,
302
+ options,
303
+ url,
304
+ body,
305
+ formData,
306
+ headers,
307
+ onCancel
308
+ );
309
+ const responseBody = getResponseBody(response);
310
+ const responseHeader = getResponseHeader(response, options.responseHeader);
311
+
312
+ const result: ApiResult = {
313
+ url,
314
+ ok: isSuccess(response.status),
315
+ status: response.status,
316
+ statusText: response.statusText,
317
+ body: responseHeader ?? responseBody,
318
+ };
319
+
320
+ catchErrorCodes(options, result);
321
+
322
+ resolve(result.body);
323
+ }
324
+ } catch (error) {
325
+ reject(error);
326
+ }
327
+ });
328
+ };