@envoy/envoy-integrations-sdk 2.2.1 → 2.2.3

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.
@@ -0,0 +1,31 @@
1
+ import JSONAPIModel from "../util/json-api/JSONAPIModel";
2
+ export interface ReservationAttributes {
3
+ 'is-partial-day': boolean;
4
+ 'updated-at': number;
5
+ 'is-assignable': boolean;
6
+ 'name': string;
7
+ 'assigned-to': string | null;
8
+ 'neighborhood-id': number;
9
+ 'created-at': number;
10
+ 'neighborhood': number | null;
11
+ 'parent-desk-id': string | null;
12
+ 'availability': string | null;
13
+ 'enabled': boolean;
14
+ 'x-pos': number | null;
15
+ 'y-pos': number | null;
16
+ }
17
+ export interface ReservationCreationAttributes {
18
+ userId: number;
19
+ deskId?: number | null;
20
+ locationId?: number | null;
21
+ inviteId?: number | null;
22
+ entryId?: number | null;
23
+ startTime?: number | null;
24
+ endTime?: number | null;
25
+ meta?: {
26
+ autoAssignDesk?: boolean;
27
+ };
28
+ }
29
+ export declare type ReservationRelationships = 'location' | 'desk' | 'company' | 'floor' | 'employee' | 'entry' | 'invite' | 'user';
30
+ export declare type ReservationModel = JSONAPIModel<ReservationAttributes, ReservationRelationships, 'reservations'>;
31
+ //# sourceMappingURL=ReservationResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReservationResource.d.ts","sourceRoot":"","sources":["../../src/resources/ReservationResource.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,+BAA+B,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAE5C,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,EAAE;QACL,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAED,oBAAY,wBAAwB,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5H,oBAAY,gBAAgB,GAAG,YAAY,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -11,6 +11,7 @@ import JSONAPIPaginationParams from '../util/json-api/JSONAPIPaginationParams';
11
11
  import { InviteCreationModel, InviteFilterFields, InviteModel, InviteSortFields } from '../resources/InviteResource';
12
12
  import { UserModel } from '../resources/UserResource';
13
13
  import { EnvoyMetaAuth } from './EnvoyMeta';
14
+ import { ReservationCreationAttributes, ReservationModel } from "../resources/ReservationResource";
14
15
  export declare type EnvoyUserAPIScope = 'flows.read' | 'entries.read' | 'entries.write' | 'invites.read' | 'invites.write' | 'invites.attest' | 'locations.read' | 'companies.read' | 'agreements.read' | 'agreements.write' | 'sign-in-field-pages.read' | 'sign-in-fields.read' | 'sign-in-fields.write' | 'employees.read' | 'employees.write' | 'badges.read' | 'blacklist-filters.read' | 'blacklist-filters.write' | 'tickets.read' | 'tickets.write' | 'spaces.read' | 'reservations.read' | 'reservations.write' | string;
15
16
  /**
16
17
  * API endpoints for *user-scoped* tokens.
@@ -83,6 +84,7 @@ export default class EnvoyUserAPI extends EnvoyAPI {
83
84
  * May also require `invites.attest` scope if setting `attested: true`.
84
85
  */
85
86
  createInvite(invite: InviteCreationModel): Promise<InviteModel>;
87
+ createReservation(reservationDetails: ReservationCreationAttributes): Promise<ReservationModel>;
86
88
  /**
87
89
  * Requires `invites.write` scope.
88
90
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EnvoyUserAPI.d.ts","sourceRoot":"","sources":["../../src/sdk/EnvoyUserAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvoyUserAPI.d.ts","sourceRoot":"","sources":["../../src/sdk/EnvoyUserAPI.ts"],"names":[],"mappings":"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"}
@@ -303,6 +303,44 @@ var EnvoyUserAPI = /** @class */ (function (_super) {
303
303
  });
304
304
  });
305
305
  };
306
+ EnvoyUserAPI.prototype.createReservation = function (reservationDetails) {
307
+ return __awaiter(this, void 0, void 0, function () {
308
+ var createReservationBody, data;
309
+ return __generator(this, function (_a) {
310
+ switch (_a.label) {
311
+ case 0:
312
+ createReservationBody = {
313
+ data: {
314
+ relationships: __assign({ user: {
315
+ data: {
316
+ type: 'users',
317
+ id: reservationDetails.userId
318
+ }
319
+ } }, (reservationDetails.locationId && {
320
+ location: {
321
+ data: {
322
+ type: 'locations',
323
+ id: reservationDetails.locationId
324
+ }
325
+ }
326
+ })),
327
+ attributes: __assign(__assign({ 'start-time': reservationDetails.startTime }, (reservationDetails.endTime && {
328
+ 'end-time': reservationDetails.endTime
329
+ })), { 'booking-source': 'EXTERNAL_API', 'booking-type': 'visitor' })
330
+ }
331
+ };
332
+ return [4 /*yield*/, this.axios({
333
+ method: 'POST',
334
+ url: '/a/rms/reservations',
335
+ data: createReservationBody,
336
+ })];
337
+ case 1:
338
+ data = (_a.sent()).data;
339
+ return [2 /*return*/, data.data];
340
+ }
341
+ });
342
+ });
343
+ };
306
344
  /**
307
345
  * Requires `invites.write` scope.
308
346
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envoy/envoy-integrations-sdk",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "SDK for building Envoy integrations.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,40 @@
1
+ import JSONAPIModel from "../util/json-api/JSONAPIModel";
2
+
3
+ export interface ReservationAttributes {
4
+ 'is-partial-day': boolean;
5
+ 'updated-at': number;
6
+ 'is-assignable': boolean;
7
+ 'name': string;
8
+ 'assigned-to': string | null;
9
+ 'neighborhood-id': number;
10
+ 'created-at': number;
11
+ 'neighborhood': number | null;
12
+ 'parent-desk-id': string | null;
13
+ 'availability': string | null;
14
+ 'enabled': boolean;
15
+ 'x-pos': number | null;
16
+ 'y-pos': number | null;
17
+ }
18
+
19
+ export interface ReservationCreationAttributes {
20
+ // Required fields
21
+ userId: number;
22
+
23
+ // Optional fields
24
+ deskId?: number | null;
25
+ locationId?: number | null;
26
+ inviteId?: number | null;
27
+ entryId?: number | null;
28
+ startTime?: number | null; // Unix timestamp
29
+ endTime?: number | null; // Unix timestamp
30
+
31
+ meta?: {
32
+ autoAssignDesk?: boolean;
33
+ };
34
+ }
35
+
36
+ export type ReservationRelationships = 'location' | 'desk' | 'company' | 'floor' | 'employee' | 'entry' | 'invite' | 'user';
37
+
38
+ export type ReservationModel = JSONAPIModel<ReservationAttributes, ReservationRelationships, 'reservations'>
39
+
40
+
@@ -17,6 +17,7 @@ import { UserModel } from '../resources/UserResource';
17
17
  import { envoyBaseURL, envoyClientId, envoyClientSecret } from '../constants';
18
18
  import { EnvoyMetaAuth } from './EnvoyMeta';
19
19
  import { sanitizeAxiosError } from '../util/axiosConstructor';
20
+ import { ReservationCreationAttributes, ReservationModel } from "../resources/ReservationResource";
20
21
 
21
22
  export type EnvoyUserAPIScope =
22
23
  'flows.read' |
@@ -195,6 +196,43 @@ export default class EnvoyUserAPI extends EnvoyAPI {
195
196
  return data.data;
196
197
  }
197
198
 
199
+ async createReservation(reservationDetails: ReservationCreationAttributes): Promise<ReservationModel> {
200
+ let createReservationBody = {
201
+ data: {
202
+ relationships: {
203
+ user: {
204
+ data: {
205
+ type: 'users',
206
+ id: reservationDetails.userId
207
+ }},
208
+ ...(reservationDetails.locationId && {
209
+ location: {
210
+ data: {
211
+ type: 'locations',
212
+ id: reservationDetails.locationId
213
+ }
214
+ }
215
+ }
216
+ )
217
+ },
218
+ attributes: {
219
+ 'start-time': reservationDetails.startTime,
220
+ ...(reservationDetails.endTime && {
221
+ 'end-time': reservationDetails.endTime
222
+ }),
223
+ 'booking-source': 'EXTERNAL_API',
224
+ 'booking-type': 'visitor'
225
+ }
226
+ }
227
+ }
228
+ const { data } = await this.axios({
229
+ method: 'POST',
230
+ url: '/a/rms/reservations',
231
+ data: createReservationBody,
232
+ });
233
+ return data.data;
234
+ }
235
+
198
236
  /**
199
237
  * Requires `invites.write` scope.
200
238
  */
@@ -305,7 +343,7 @@ export default class EnvoyUserAPI extends EnvoyAPI {
305
343
  });
306
344
  return data;
307
345
  } catch (error) {
308
- throw sanitizeAxiosError(error);
346
+ throw sanitizeAxiosError(error);
309
347
  }
310
348
  }
311
349
 
@@ -333,7 +371,7 @@ export default class EnvoyUserAPI extends EnvoyAPI {
333
371
  });
334
372
  return data;
335
373
  } catch (error) {
336
- throw sanitizeAxiosError(error);
374
+ throw sanitizeAxiosError(error);
337
375
  }
338
376
  }
339
377
  }