diff --git a/OPENAPI_DOC.yml b/OPENAPI_DOC.yml index 71742332..20032bfe 100644 --- a/OPENAPI_DOC.yml +++ b/OPENAPI_DOC.yml @@ -20,7 +20,6 @@ paths: in: query description: booking period start as a unix epoch example: "1661725146" - required: false schema: type: integer format: Int64 @@ -28,7 +27,6 @@ paths: in: query description: booking period end as a unix epoch example: "1661743123" - required: false schema: type: integer format: Int64 @@ -36,7 +34,6 @@ paths: in: query description: the generic name of the asset whose bookings you wish to view example: desk - required: false schema: type: string nullable: true @@ -44,21 +41,18 @@ paths: in: query description: when true, it returns deleted bookings example: "true" - required: false schema: type: boolean - name: include_checked_out in: query description: when true, returns all bookings including checked out ones example: "true" - required: false schema: type: boolean - name: checked_out in: query description: when true, only returns checked out bookings, unless `include_checked_out=true` example: "true" - required: false schema: type: boolean - name: zones @@ -66,7 +60,6 @@ paths: description: this filters only bookings in the zones provided, multiple zones can be provided comma seperated example: zone-123,zone-456 - required: false schema: type: string nullable: true @@ -74,7 +67,6 @@ paths: in: query description: filters bookings owned by this user email example: user@org.com - required: false schema: type: string nullable: true @@ -82,7 +74,6 @@ paths: in: query description: filters bookings owned by this user id example: user-1234 - required: false schema: type: string nullable: true @@ -91,7 +82,6 @@ paths: description: if `email` or `user` parameters are set, this includes bookings that user booked on behalf of others example: "true" - required: false schema: type: boolean nullable: true @@ -99,7 +89,6 @@ paths: in: query description: filters bookings that have been checked in or not example: "true" - required: false schema: type: boolean nullable: true @@ -107,7 +96,6 @@ paths: in: query description: filters bookings that were created before the unix epoch specified example: "1661743123" - required: false schema: type: integer format: Int64 @@ -116,7 +104,6 @@ paths: in: query description: filters bookings that were created after the unix epoch specified example: "1661743123" - required: false schema: type: integer format: Int64 @@ -125,7 +112,6 @@ paths: in: query description: filters bookings that are approved or not example: "true" - required: false schema: type: boolean nullable: true @@ -133,7 +119,6 @@ paths: in: query description: filters bookings that are rejected or not example: "true" - required: false schema: type: boolean nullable: true @@ -141,7 +126,6 @@ paths: in: query description: filters bookings with matching extension data entries example: '{"entry1":"value to match","entry2":1234}' - required: false schema: type: string nullable: true @@ -149,7 +133,6 @@ paths: in: query description: filters on the booking process state, a user defined value example: pending-approval - required: false schema: type: string nullable: true @@ -157,7 +140,6 @@ paths: in: query description: filters bookings owned by a department, a user defined value example: accounting - required: false schema: type: string nullable: true @@ -166,7 +148,6 @@ paths: description: filters bookings associated with an event, such as an Office365 Calendar event id example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false schema: type: string nullable: true @@ -175,7 +156,6 @@ paths: description: filters bookings associated with an event, such as an Office365 Calendar event ical_uid example: 19rh93h5t893h5v@calendar.iCloud.com - required: false schema: type: string nullable: true @@ -183,14 +163,12 @@ paths: in: query description: the maximum number of results to return example: "10000" - required: false schema: type: integer format: Int32 - name: offset in: query description: the starting offset of the result set. Used to implement pagination - required: false schema: type: integer format: Int32 @@ -198,7 +176,6 @@ paths: in: query description: the recurring bookings index of the result set. Used to implement pagination with recurring bookings - required: false schema: type: integer format: Int32 @@ -207,16 +184,21 @@ paths: description: 'filters bookings based on the permission level. Options: PRIVATE, OPEN, PUBLIC' example: PUBLIC - required: false schema: type: string nullable: true - name: link_ext in: query - required: false schema: type: string nullable: true + - name: include_parent_bookings + in: query + description: include parent bookings + example: "true" + schema: + type: boolean + nullable: true responses: 200: description: OK @@ -316,7 +298,6 @@ paths: in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -324,7 +305,6 @@ paths: in: query description: allows a client to override any limits imposed on bookings example: "3" - required: false schema: type: integer format: Int32 @@ -334,7 +314,6 @@ paths: description: links booking with an event, such as an Office365 Calendar event id example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false schema: type: string nullable: true @@ -343,7 +322,6 @@ paths: description: links booking with an event, such as an Office365 Calendar event ical_uid example: 19rh93h5t893h5v@calendar.iCloud.com - required: false schema: type: string nullable: true @@ -443,7 +421,6 @@ paths: in: query description: booking period start as a unix epoch example: "1661725146" - required: false schema: type: integer format: Int64 @@ -451,7 +428,6 @@ paths: in: query description: booking period end as a unix epoch example: "1661743123" - required: false schema: type: integer format: Int64 @@ -459,7 +435,6 @@ paths: in: query description: the generic name of the asset whose bookings you wish to view example: desk - required: false schema: type: string nullable: true @@ -468,7 +443,6 @@ paths: description: this filters only bookings in the zones provided, multiple zones can be provided comma seperated example: zone-123,zone-456 - required: false schema: type: string nullable: true @@ -476,7 +450,6 @@ paths: in: query description: filters bookings owned by this user email example: user@org.com - required: false schema: type: string nullable: true @@ -484,7 +457,6 @@ paths: in: query description: filters bookings owned by this user id example: user-1234 - required: false schema: type: string nullable: true @@ -493,7 +465,6 @@ paths: description: if `email` or `user` parameters are set, this includes bookings that user booked on behalf of others example: "true" - required: false schema: type: boolean nullable: true @@ -501,7 +472,6 @@ paths: in: query description: filters bookings that have been checked in or not example: "true" - required: false schema: type: boolean nullable: true @@ -509,7 +479,6 @@ paths: in: query description: filters bookings that were created before the unix epoch specified example: "1661743123" - required: false schema: type: integer format: Int64 @@ -518,7 +487,6 @@ paths: in: query description: filters bookings that were created after the unix epoch specified example: "1661743123" - required: false schema: type: integer format: Int64 @@ -527,7 +495,6 @@ paths: in: query description: filters bookings that are approved or not example: "true" - required: false schema: type: boolean nullable: true @@ -535,7 +502,6 @@ paths: in: query description: filters bookings with matching extension data entries example: '{"entry1":"value to match","entry2":1234}' - required: false schema: type: string nullable: true @@ -543,7 +509,6 @@ paths: in: query description: filters on the booking process state, a user defined value example: pending-approval - required: false schema: type: string nullable: true @@ -551,7 +516,6 @@ paths: in: query description: filters bookings owned by a department, a user defined value example: accounting - required: false schema: type: string nullable: true @@ -560,7 +524,6 @@ paths: description: filters bookings associated with an event, such as an Office365 Calendar event id example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false schema: type: string nullable: true @@ -569,7 +532,6 @@ paths: description: filters bookings associated with an event, such as an Office365 Calendar event ical_uid example: 19rh93h5t893h5v@calendar.iCloud.com - required: false schema: type: string nullable: true @@ -577,14 +539,12 @@ paths: in: query description: the maximum number of results to return example: "100000" - required: false schema: type: integer format: Int32 - name: offset in: query description: the starting offset of the result set. Used to implement pagination - required: false schema: type: integer format: Int32 @@ -593,7 +553,6 @@ paths: description: 'filters bookings based on the permission level. Options: PRIVATE, OPEN, PUBLIC' example: PUBLIC - required: false schema: type: string nullable: true @@ -697,7 +656,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -805,7 +763,6 @@ paths: in: query description: allows a client to override any limits imposed on bookings example: "3" - required: false schema: type: integer format: Int32 @@ -814,7 +771,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -916,7 +872,6 @@ paths: in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -924,7 +879,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -1028,7 +982,6 @@ paths: in: query description: allows a client to override any limits imposed on bookings example: "3" - required: false schema: type: integer format: Int32 @@ -1037,7 +990,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -1257,7 +1209,6 @@ paths: in: query description: allows a client to override any limits imposed on bookings example: "3" - required: false schema: type: integer format: Int32 @@ -1368,7 +1319,6 @@ paths: in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -1480,7 +1430,6 @@ paths: in: query description: allows a client to override any limits imposed on bookings example: "3" - required: false schema: type: integer format: Int32 @@ -1566,12 +1515,18 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/approve: - post: - summary: approves a booking (if booking approval is required in an organisation) + /api/staff/v1/bookings/{id}/ext_data: + patch: + summary: patches an existing booking extension data with the changes provided tags: - Bookings - operationId: Bookings_approve + operationId: Bookings_patch_extdata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__JSON__Any_' + required: true parameters: - name: id in: path @@ -1579,19 +1534,16 @@ paths: schema: type: integer format: Int64 - - name: utm_source + - name: signal_changes in: query - description: provided for use with analytics - example: mobile - required: false + description: signal changes to the booking + example: "true" schema: - type: string - nullable: true + type: boolean - name: instance in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -1677,12 +1629,18 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/approve/{instance}: - post: - summary: approves a booking (if booking approval is required in an organisation) + /api/staff/v1/bookings/{id}/ext_data/{instance}: + patch: + summary: patches an existing booking extension data with the changes provided tags: - Bookings - operationId: Bookings_approve{2} + operationId: Bookings_patch_extdata{2} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__JSON__Any_' + required: true parameters: - name: id in: path @@ -1699,14 +1657,12 @@ paths: type: integer format: Int64 nullable: true - - name: utm_source + - name: signal_changes in: query - description: provided for use with analytics - example: mobile - required: false + description: signal changes to the booking + example: "true" schema: - type: string - nullable: true + type: boolean responses: 200: description: OK @@ -1788,12 +1744,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/reject: + /api/staff/v1/bookings/{id}/approve: post: - summary: rejects a booking + summary: approves a booking (if booking approval is required in an organisation) tags: - Bookings - operationId: Bookings_reject + operationId: Bookings_approve parameters: - name: id in: path @@ -1805,7 +1761,6 @@ paths: in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -1813,7 +1768,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -1899,12 +1853,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/reject/{instance}: + /api/staff/v1/bookings/{id}/approve/{instance}: post: - summary: rejects a booking + summary: approves a booking (if booking approval is required in an organisation) tags: - Bookings - operationId: Bookings_reject{2} + operationId: Bookings_approve{2} parameters: - name: id in: path @@ -1925,7 +1879,6 @@ paths: in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -2010,12 +1963,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/check_in: + /api/staff/v1/bookings/{id}/reject: post: - summary: indicates that a booking has commenced + summary: rejects a booking tags: - Bookings - operationId: Bookings_check_in + operationId: Bookings_reject parameters: - name: id in: path @@ -2023,18 +1976,10 @@ paths: schema: type: integer format: Int64 - - name: state - in: query - description: the desired value of the booking checked-in flag - example: "false" - required: false - schema: - type: boolean - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true @@ -2042,7 +1987,6 @@ paths: in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -2128,12 +2072,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/checkin: + /api/staff/v1/bookings/{id}/reject/{instance}: post: - summary: indicates that a booking has commenced + summary: rejects a booking tags: - Bookings - operationId: Bookings_check_in{2} + operationId: Bookings_reject{2} parameters: - name: id in: path @@ -2141,30 +2085,22 @@ paths: schema: type: integer format: Int64 - - name: state - in: query - description: the desired value of the booking checked-in flag - example: "false" - required: false + - name: instance + in: path + description: a recurring instance id + example: "1234567" + required: true schema: - type: boolean + type: integer + format: Int64 + nullable: true - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true - - name: instance - in: query - description: a recurring instance id - example: "1234567" - required: false - schema: - type: integer - format: Int64 - nullable: true responses: 200: description: OK @@ -2246,12 +2182,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/check_in/{instance}: + /api/staff/v1/bookings/{id}/check_in: post: summary: indicates that a booking has commenced tags: - Bookings - operationId: Bookings_check_in{3} + operationId: Bookings_check_in parameters: - name: id in: path @@ -2259,30 +2195,27 @@ paths: schema: type: integer format: Int64 - - name: instance - in: path - description: a recurring instance id - example: "1234567" - required: true - schema: - type: integer - format: Int64 - nullable: true - name: state in: query description: the desired value of the booking checked-in flag example: "false" - required: false schema: type: boolean - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true + - name: instance + in: query + description: a recurring instance id + example: "1234567" + schema: + type: integer + format: Int64 + nullable: true responses: 200: description: OK @@ -2364,12 +2297,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/checkin/{instance}: + /api/staff/v1/bookings/{id}/checkin: post: summary: indicates that a booking has commenced tags: - Bookings - operationId: Bookings_check_in{4} + operationId: Bookings_check_in{2} parameters: - name: id in: path @@ -2377,30 +2310,27 @@ paths: schema: type: integer format: Int64 - - name: instance - in: path - description: a recurring instance id - example: "1234567" - required: true - schema: - type: integer - format: Int64 - nullable: true - name: state in: query description: the desired value of the booking checked-in flag example: "false" - required: false schema: type: boolean - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true + - name: instance + in: query + description: a recurring instance id + example: "1234567" + schema: + type: integer + format: Int64 + nullable: true responses: 200: description: OK @@ -2482,13 +2412,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/update_state: + /api/staff/v1/bookings/{id}/check_in/{instance}: post: - summary: the current state of a booking, if a custom state machine is being - used + summary: indicates that a booking has commenced tags: - Bookings - operationId: Bookings_update_state + operationId: Bookings_check_in{3} parameters: - name: id in: path @@ -2496,30 +2425,28 @@ paths: schema: type: integer format: Int64 + - name: instance + in: path + description: a recurring instance id + example: "1234567" + required: true + schema: + type: integer + format: Int64 + nullable: true - name: state in: query - description: the user defined process state of the booking - example: pending_approval - required: true + description: the desired value of the booking checked-in flag + example: "false" schema: - type: string + type: boolean - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true - - name: instance - in: query - description: a recurring instance id - example: "1234567" - required: false - schema: - type: integer - format: Int64 - nullable: true responses: 200: description: OK @@ -2601,12 +2528,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/update_induction: + /api/staff/v1/bookings/{id}/checkin/{instance}: post: - summary: update the induction status + summary: indicates that a booking has commenced tags: - Bookings - operationId: Bookings_update_induction + operationId: Bookings_check_in{4} parameters: - name: id in: path @@ -2614,34 +2541,28 @@ paths: schema: type: integer format: Int64 - - name: induction - in: query - description: the induction status of the booking - example: accepted + - name: instance + in: path + description: a recurring instance id + example: "1234567" required: true schema: - type: string - enum: - - tentative - - accepted - - declined + type: integer + format: Int64 + nullable: true + - name: state + in: query + description: the desired value of the booking checked-in flag + example: "false" + schema: + type: boolean - name: utm_source in: query description: provided for use with analytics example: mobile - required: false schema: type: string nullable: true - - name: instance - in: query - description: a recurring instance id - example: "1234567" - required: false - schema: - type: integer - format: Int64 - nullable: true responses: 200: description: OK @@ -2723,12 +2644,13 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/guests: - get: - summary: returns a list of guests associated with a booking + /api/staff/v1/bookings/{id}/update_state: + post: + summary: the current state of a booking, if a custom state machine is being + used tags: - Bookings - operationId: Bookings_guest_list + operationId: Bookings_update_state parameters: - name: id in: path @@ -2736,11 +2658,24 @@ paths: schema: type: integer format: Int64 + - name: state + in: query + description: the user defined process state of the booking + example: pending_approval + required: true + schema: + type: string + - name: utm_source + in: query + description: provided for use with analytics + example: mobile + schema: + type: string + nullable: true - name: instance in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -2751,9 +2686,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + $ref: '#/components/schemas/PlaceOS__Model__Booking' 429: description: Too Many Requests content: @@ -2828,13 +2761,13 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/guests/{guest_id}/check_in: + /api/staff/v1/bookings/{id}/update_state/{instance}: post: - summary: marks the standalone visitor as checked-in or checked-out based on - the state param + summary: the current state of a booking, if a custom state machine is being + used tags: - Bookings - operationId: Bookings_guest_checkin + operationId: Bookings_update_state{2} parameters: - name: id in: path @@ -2842,28 +2775,28 @@ paths: schema: type: integer format: Int64 - - name: guest_id + - name: instance in: path - description: the email of the guest we want to checkin - example: person@external.com + description: a recurring instance id + example: "1234567" required: true schema: - type: string + type: integer + format: Int64 + nullable: true - name: state in: query - description: the checkin state, defaults to `true` - example: "false" - required: false + description: the user defined process state of the booking + example: pending_approval + required: true schema: - type: boolean - - name: instance + type: string + - name: utm_source in: query - description: a recurring instance id - example: "1234567" - required: false + description: provided for use with analytics + example: mobile schema: - type: integer - format: Int64 + type: string nullable: true responses: 200: @@ -2871,7 +2804,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + $ref: '#/components/schemas/PlaceOS__Model__Booking' 429: description: Too Many Requests content: @@ -2946,13 +2879,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/guests/{guest_id}/checkin: + /api/staff/v1/bookings/{id}/update_induction: post: - summary: marks the standalone visitor as checked-in or checked-out based on - the state param + summary: update the induction status tags: - Bookings - operationId: Bookings_guest_checkin{2} + operationId: Bookings_update_induction parameters: - name: id in: path @@ -2960,25 +2892,28 @@ paths: schema: type: integer format: Int64 - - name: guest_id - in: path - description: the email of the guest we want to checkin - example: person@external.com + - name: induction + in: query + description: the induction status of the booking + example: accepted required: true schema: type: string - - name: state + enum: + - tentative + - accepted + - declined + - name: utm_source in: query - description: the checkin state, defaults to `true` - example: "false" - required: false + description: provided for use with analytics + example: mobile schema: - type: boolean + type: string + nullable: true - name: instance in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 @@ -2989,7 +2924,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + $ref: '#/components/schemas/PlaceOS__Model__Booking' 429: description: Too Many Requests content: @@ -3064,18 +2999,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/attendee: + /api/staff/v1/bookings/{id}/update_induction/{instance}: post: - summary: Adds a single attendee to an existing booking + summary: update the induction status tags: - Bookings - operationId: Bookings_add_attendee - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Event__Attendee' - required: true + operationId: Bookings_update_induction{2} parameters: - name: id in: path @@ -3084,21 +3013,39 @@ paths: type: integer format: Int64 - name: instance - in: query + in: path description: a recurring instance id example: "1234567" - required: false + required: true schema: type: integer format: Int64 nullable: true + - name: induction + in: query + description: the induction status of the booking + example: accepted + required: true + schema: + type: string + enum: + - tentative + - accepted + - declined + - name: utm_source + in: query + description: provided for use with analytics + example: mobile + schema: + type: string + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Attendee' + $ref: '#/components/schemas/PlaceOS__Model__Booking' 429: description: Too Many Requests content: @@ -3173,11 +3120,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/bookings/{id}/attendee/{attendee_id}: - delete: + /api/staff/v1/bookings/{id}/guests: + get: + summary: returns a list of guests associated with a booking tags: - Bookings - operationId: Bookings_destroy_attendee + operationId: Bookings_guest_list parameters: - name: id in: path @@ -3185,25 +3133,23 @@ paths: schema: type: integer format: Int64 - - name: attendee_id - in: path - description: the email of the attendee we want to remove - example: person@example.com - required: true - schema: - type: string - name: instance in: query description: a recurring instance id example: "1234567" - required: false schema: type: integer format: Int64 nullable: true responses: - 202: - description: Accepted + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -3278,22 +3224,48 @@ paths: application/json: schema: $ref: '#/components/schemas/Bookings__BookingError' - /api/staff/v1/calendars: - get: - summary: lists the users default calendars + /api/staff/v1/bookings/{id}/guests/{guest_id}/check_in: + post: + summary: marks the standalone visitor as checked-in or checked-out based on + the state param tags: - - Calendars - operationId: Calendars_index - parameters: [] + - Bookings + operationId: Bookings_guest_checkin + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + - name: guest_id + in: path + description: the email of the guest we want to checkin + example: person@external.com + required: true + schema: + type: string + - name: state + in: query + description: the checkin state, defaults to `true` + example: "false" + schema: + type: boolean + - name: instance + in: query + description: a recurring instance id + example: "1234567" + schema: + type: integer + format: Int64 + nullable: true responses: 200: description: OK content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Calendar' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -3356,78 +3328,52 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/calendars/availability: - get: - summary: checks for availability of matched calendars, returns a list of calendars - with availability + 409: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + 410: + description: Gone + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + /api/staff/v1/bookings/{id}/guests/{guest_id}/checkin: + post: + summary: marks the standalone visitor as checked-in or checked-out based on + the state param tags: - - Calendars - operationId: Calendars_availability + - Bookings + operationId: Bookings_guest_checkin{2} parameters: - - name: period_start - in: query - description: search period start as a unix epoch - example: "1661725146" + - name: id + in: path required: true schema: type: integer format: Int64 - - name: period_end - in: query - description: search period end as a unix epoch - example: "1661743123" + - name: guest_id + in: path + description: the email of the guest we want to checkin + example: person@external.com required: true - schema: - type: integer - format: Int64 - - name: calendars - in: query - description: a comma seperated list of calendar ids, recommend using `system_id` - for resource calendars - example: user@org.com,room2@resource.org.com - required: false - schema: - type: string - nullable: true - - name: zone_ids - in: query - description: a comma seperated list of zone ids - example: zone-123,zone-456 - required: false - schema: - type: string - nullable: true - - name: system_ids - in: query - description: a comma seperated list of event spaces - example: sys-1234,sys-5678 - required: false schema: type: string - nullable: true - - name: features + - name: state in: query - description: a comma seperated list of room features - example: whiteboard,vidconf - required: false + description: the checkin state, defaults to `true` + example: "false" schema: - type: string - nullable: true - - name: capacity + type: boolean + - name: instance in: query - example: "8" - required: false + description: a recurring instance id + example: "1234567" schema: type: integer - format: Int32 - nullable: true - - name: bookable - in: query - description: only search for bookable or non-bookable rooms - example: "true" - required: false - schema: - type: boolean + format: Int64 nullable: true responses: 200: @@ -3435,9 +3381,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/Calendars__Availability' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -3500,80 +3444,44 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/calendars/free_busy: - get: - summary: Finds the busy times in the period provided on the selected calendars. - description: 'Finds the busy times in the period provided on the selected calendars. - - Returns the calendars that have meetings overlapping provided period' + 409: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + 410: + description: Gone + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + /api/staff/v1/bookings/{id}/attendee: + post: + summary: Adds a single attendee to an existing booking tags: - - Calendars - operationId: Calendars_free_busy + - Bookings + operationId: Bookings_add_attendee + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceCalendar__Event__Attendee' + required: true parameters: - - name: period_start - in: query - description: search period start as a unix epoch - example: "1661725146" + - name: id + in: path required: true schema: type: integer format: Int64 - - name: period_end + - name: instance in: query - description: search period end as a unix epoch - example: "1661743123" - required: true + description: a recurring instance id + example: "1234567" schema: type: integer format: Int64 - - name: calendars - in: query - description: a comma seperated list of calendar ids, recommend using `system_id` - for resource calendars - example: user@org.com,room2@resource.org.com - required: false - schema: - type: string - nullable: true - - name: zone_ids - in: query - description: a comma seperated list of zone ids - example: zone-123,zone-456 - required: false - schema: - type: string - nullable: true - - name: system_ids - in: query - description: a comma seperated list of event spaces - example: sys-1234,sys-5678 - required: false - schema: - type: string - nullable: true - - name: features - in: query - description: a comma seperated list of room features - example: whiteboard,vidconf - required: false - schema: - type: string - nullable: true - - name: capacity - in: query - example: "8" - required: false - schema: - type: integer - format: Int32 - nullable: true - - name: bookable - in: query - description: only search for bookable or non-bookable rooms - example: "true" - required: false - schema: - type: boolean nullable: true responses: 200: @@ -3581,9 +3489,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/Calendars__Availability' + $ref: '#/components/schemas/PlaceOS__Model__Attendee' 429: description: Too Many Requests content: @@ -3646,100 +3552,48 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events: - get: - summary: lists events occuring in the period provided, by default on the current - users calendar + 409: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + 410: + description: Gone + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + /api/staff/v1/bookings/{id}/attendee/{attendee_id}: + delete: tags: - - Events - operationId: Events_index + - Bookings + operationId: Bookings_destroy_attendee parameters: - - name: period_start - in: query - description: event period start as a unix epoch - example: "1661725146" + - name: id + in: path required: true schema: type: integer format: Int64 - - name: period_end - in: query - description: event period end as a unix epoch - example: "1661743123" + - name: attendee_id + in: path + description: the email of the attendee we want to remove + example: person@example.com required: true - schema: - type: integer - format: Int64 - - name: calendars - in: query - description: a comma seperated list of calendar ids, recommend using `system_id` - for resource calendars - example: user@org.com,room2@resource.org.com - required: false - schema: - type: string - nullable: true - - name: zone_ids - in: query - description: a comma seperated list of zone ids - example: zone-123,zone-456 - required: false - schema: - type: string - nullable: true - - name: system_ids - in: query - description: a comma seperated list of event spaces - example: sys-1234,sys-5678 - required: false - schema: - type: string - nullable: true - - name: include_cancelled - in: query - description: includes events that have been marked as cancelled - example: "true" - required: false - schema: - type: boolean - - name: ical_uid - in: query - description: the ical uid of the event you are looking for - example: sqvitruh3ho3mrq896tplad4v8 - required: false schema: type: string - nullable: true - - name: filter + - name: instance in: query - description: An optional advanced search filter using Azure AD filter syntax - example: "" - required: false + description: a recurring instance id + example: "1234567" schema: - type: string + type: integer + format: Int64 nullable: true - - name: strict - in: query - description: how to respond when there are calendar errors. Notify sets X-Calendar-Errors, - limit returns a 429 error when rate limiting occured, any will 500 if there - are any calendar errors - example: notify - required: false - schema: - type: string - enum: - - notify - - limit - - all responses: - 200: - description: OK - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Event' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -3802,25 +3656,34 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: creates a new calendar event + 409: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + 410: + description: Gone + content: + application/json: + schema: + $ref: '#/components/schemas/Bookings__BookingError' + /api/staff/v1/calendars: + get: + summary: lists the users default calendars tags: - - Events - operationId: Events_create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Event' - required: true + - Calendars + operationId: Calendars_index parameters: [] responses: - 201: - description: Created + 200: + description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceCalendar__Event' + type: array + items: + $ref: '#/components/schemas/PlaceCalendar__Calendar' 429: description: Too Many Requests content: @@ -3883,51 +3746,83 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}: + /api/staff/v1/calendars/availability: get: - summary: returns the event requested. - description: 'returns the event requested. - - by default it assumes the event exists on the users calendar. - - you can provide a calendar param to override this default - - or you can provide a system id if the event exists on a resource calendar' + summary: checks for availability of matched calendars, returns a list of calendars + with availability tags: - - Events - operationId: Events_show + - Calendars + operationId: Calendars_availability parameters: - - name: id - in: path - description: the event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + - name: period_start + in: query + description: search period start as a unix epoch + example: "1661725146" + required: true + schema: + type: integer + format: Int64 + - name: period_end + in: query + description: search period end as a unix epoch + example: "1661743123" required: true + schema: + type: integer + format: Int64 + - name: calendars + in: query + description: a comma seperated list of calendar ids, recommend using `system_id` + for resource calendars + example: user@org.com,room2@resource.org.com schema: type: string - - name: system_id + nullable: true + - name: zone_ids in: query - description: the event space associated with this event - example: sys-1234 - required: false + description: a comma seperated list of zone ids + example: zone-123,zone-456 schema: type: string nullable: true - - name: calendar + - name: system_ids in: query - description: the users calendar associated with this event - example: user@org.com - required: false + description: a comma seperated list of event spaces + example: sys-1234,sys-5678 schema: type: string nullable: true - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Event' - 429: + - name: features + in: query + description: a comma seperated list of room features + example: whiteboard,vidconf + schema: + type: string + nullable: true + - name: capacity + in: query + example: "8" + schema: + type: integer + format: Int32 + nullable: true + - name: bookable + in: query + description: only search for bookable or non-bookable rooms + example: "true" + schema: + type: boolean + nullable: true + responses: + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Calendars__Availability' + 429: description: Too Many Requests content: application/json: @@ -3989,72 +3884,84 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - put: - summary: patches an existing booking with the changes provided - description: 'patches an existing booking with the changes provided - - by default it assumes the event exists on the users calendar. - - you can provide a calendar param to override this default - - or you can provide a system id if the event exists on a resource calendar - - - Note: event metadata is associated with a resource calendar, not the hosts - event. - - so if you want to update an event and the metadata then you need to provide - both - - the `calendar` param and the `system_id` param - - - when moving a room from one system to another, the `system_id` param should - be - - set to the current rooms associated system. + /api/staff/v1/calendars/free_busy: + get: + summary: Finds the busy times in the period provided on the selected calendars. + description: 'Finds the busy times in the period provided on the selected calendars. - Then in the event body, the `system_id` field should be the new system.' + Returns the calendars that have meetings overlapping provided period' tags: - - Events - operationId: Events_update - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Event' - required: true + - Calendars + operationId: Calendars_free_busy parameters: - - name: id - in: path - description: the event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + - name: period_start + in: query + description: search period start as a unix epoch + example: "1661725146" + required: true + schema: + type: integer + format: Int64 + - name: period_end + in: query + description: search period end as a unix epoch + example: "1661743123" required: true + schema: + type: integer + format: Int64 + - name: calendars + in: query + description: a comma seperated list of calendar ids, recommend using `system_id` + for resource calendars + example: user@org.com,room2@resource.org.com schema: type: string - - name: system_id + nullable: true + - name: zone_ids in: query - description: the event space associated with this event - example: sys-1234 - required: false + description: a comma seperated list of zone ids + example: zone-123,zone-456 schema: type: string nullable: true - - name: calendar + - name: system_ids in: query - description: the calendar associated with this event id - example: user@org.com - required: false + description: a comma seperated list of event spaces + example: sys-1234,sys-5678 + schema: + type: string + nullable: true + - name: features + in: query + description: a comma seperated list of room features + example: whiteboard,vidconf schema: type: string nullable: true + - name: capacity + in: query + example: "8" + schema: + type: integer + format: Int32 + nullable: true + - name: bookable + in: query + description: only search for bookable or non-bookable rooms + example: "true" + schema: + type: boolean + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceCalendar__Event' + type: array + items: + $ref: '#/components/schemas/Calendars__Availability' 429: description: Too Many Requests content: @@ -4117,57 +4024,93 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - delete: - summary: deletes the event from the calendar, it will not appear as cancelled, - it will be gone - description: 'deletes the event from the calendar, it will not appear as cancelled, - it will be gone - - - by default it assumes the event id exists on the users calendar - - you can clarify the calendar that the event belongs to by using the calendar - param - - and specify a system id if there is event metadata or linked booking associated - with the event' + /api/staff/v1/events: + get: + summary: lists events occuring in the period provided, by default on the current + users calendar tags: - Events - operationId: Events_destroy + operationId: Events_index parameters: - - name: id - in: path - description: the event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + - name: period_start + in: query + description: event period start as a unix epoch + example: "1661725146" + required: true + schema: + type: integer + format: Int64 + - name: period_end + in: query + description: event period end as a unix epoch + example: "1661743123" required: true + schema: + type: integer + format: Int64 + - name: calendars + in: query + description: a comma seperated list of calendar ids, recommend using `system_id` + for resource calendars + example: user@org.com,room2@resource.org.com schema: type: string - - name: system_id + nullable: true + - name: zone_ids in: query - description: the event space associated with this event - example: sys-1234 - required: false + description: a comma seperated list of zone ids + example: zone-123,zone-456 schema: type: string nullable: true - - name: calendar + - name: system_ids in: query - description: the users calendar associated with this event - example: user@org.com - required: false + description: a comma seperated list of event spaces + example: sys-1234,sys-5678 schema: type: string nullable: true - - name: notify + - name: include_cancelled in: query - description: set to `false` to prevent attendees being notified of the change - example: "false" - required: false + description: includes events that have been marked as cancelled + example: "true" schema: type: boolean + - name: ical_uid + in: query + description: the ical uid of the event you are looking for + example: sqvitruh3ho3mrq896tplad4v8 + schema: + type: string + nullable: true + - name: filter + in: query + description: An optional advanced search filter using Azure AD filter syntax + example: "" + schema: + type: string + nullable: true + - name: strict + in: query + description: how to respond when there are calendar errors. Notify sets X-Calendar-Errors, + limit returns a 429 error when rate limiting occured, any will 500 if there + are any calendar errors + example: notify + schema: + type: string + enum: + - notify + - limit + - all responses: - 202: - description: Accepted + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PlaceCalendar__Event' 429: description: Too Many Requests content: @@ -4230,68 +4173,21 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: patches an existing booking with the changes provided - description: 'patches an existing booking with the changes provided - - by default it assumes the event exists on the users calendar. - - you can provide a calendar param to override this default - - or you can provide a system id if the event exists on a resource calendar - - - Note: event metadata is associated with a resource calendar, not the hosts - event. - - so if you want to update an event and the metadata then you need to provide - both - - the `calendar` param and the `system_id` param - - - when moving a room from one system to another, the `system_id` param should - be - - set to the current rooms associated system. - - Then in the event body, the `system_id` field should be the new system.' + post: + summary: creates a new calendar event tags: - Events - operationId: Events_update{2} + operationId: Events_create requestBody: content: application/json: schema: $ref: '#/components/schemas/PlaceCalendar__Event' required: true - parameters: - - name: id - in: path - description: the event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: true - schema: - type: string - - name: system_id - in: query - description: the event space associated with this event - example: sys-1234 - required: false - schema: - type: string - nullable: true - - name: calendar - in: query - description: the calendar associated with this event id - example: user@org.com - required: false - schema: - type: string - nullable: true + parameters: [] responses: - 200: - description: OK + 201: + description: Created content: application/json: schema: @@ -4358,18 +4254,19 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/attendee: - post: - summary: Adds a single attendee to an existing event + /api/staff/v1/events/{id}: + get: + summary: returns the event requested. + description: 'returns the event requested. + + by default it assumes the event exists on the users calendar. + + you can provide a calendar param to override this default + + or you can provide a system id if the event exists on a resource calendar' tags: - Events - operationId: Events_add_attendee - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Event__Attendee' - required: true + operationId: Events_show parameters: - name: id in: path @@ -4382,15 +4279,13 @@ paths: in: query description: the event space associated with this event example: sys-1234 - required: false schema: type: string nullable: true - name: calendar in: query - description: the calendar associated with this event id + description: the users calendar associated with this event example: user@org.com - required: false schema: type: string nullable: true @@ -4400,7 +4295,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/_PlaceCalendar__Event__Attendee___PlaceOS__Model__Attendee_' + $ref: '#/components/schemas/PlaceCalendar__Event' 429: description: Too Many Requests content: @@ -4463,37 +4358,70 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/metadata/{system_id}/link/{ical_uid}: - post: - summary: used to link resource recurring master ids to metadata + put: + summary: patches an existing booking with the changes provided + description: 'patches an existing booking with the changes provided + + by default it assumes the event exists on the users calendar. + + you can provide a calendar param to override this default + + or you can provide a system id if the event exists on a resource calendar + + + Note: event metadata is associated with a resource calendar, not the hosts + event. + + so if you want to update an event and the metadata then you need to provide + both + + the `calendar` param and the `system_id` param + + + when moving a room from one system to another, the `system_id` param should + be + + set to the current rooms associated system. + + Then in the event body, the `system_id` field should be the new system.' tags: - Events - operationId: Events_link_master_metadata + operationId: Events_update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceCalendar__Event' + required: true parameters: - name: id in: path - description: the event id to link + description: the event id example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe required: true schema: type: string - name: system_id - in: path + in: query description: the event space associated with this event example: sys-1234 - required: true schema: type: string - - name: ical_uid - in: path - description: the ical_uid of the event - example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 - required: true + nullable: true + - name: calendar + in: query + description: the calendar associated with this event id + example: user@org.com schema: type: string + nullable: true responses: - 202: - description: Accepted + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceCalendar__Event' 429: description: Too Many Requests content: @@ -4556,18 +4484,23 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/metadata/{system_id}: - get: - summary: '# returns the event metadata requested.' - description: '# returns the event metadata requested. + delete: + summary: deletes the event from the calendar, it will not appear as cancelled, + it will be gone + description: 'deletes the event from the calendar, it will not appear as cancelled, + it will be gone - by default it assumes the event exists on the resource calendar. + by default it assumes the event id exists on the users calendar - you can provide a calendar param to override this default' + you can clarify the calendar that the event belongs to by using the calendar + param + + and specify a system id if there is event metadata or linked booking associated + with the event' tags: - Events - operationId: Events_get_metadata + operationId: Events_destroy parameters: - name: id in: path @@ -4577,35 +4510,28 @@ paths: schema: type: string - name: system_id - in: path + in: query description: the event space associated with this event example: sys-1234 - required: true schema: type: string + nullable: true - name: calendar in: query - description: the calendar associated with this event id + description: the users calendar associated with this event example: user@org.com - required: false schema: type: string nullable: true - - name: ical_uid + - name: notify in: query - description: an alternative lookup for finding event-metadata - example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 - required: false + description: set to `false` to prevent attendees being notified of the change + example: "false" schema: - type: string - nullable: true + type: boolean responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/JSON__Any' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -4668,22 +4594,40 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - put: - summary: Replaces the metadata on a booking without touching the calendar event - description: 'Replaces the metadata on a booking without touching the calendar - event + patch: + summary: patches an existing booking with the changes provided + description: 'patches an existing booking with the changes provided - by default it assumes the event exists on the resource calendar. + by default it assumes the event exists on the users calendar. - you can provide a calendar param to override this default' + you can provide a calendar param to override this default + + or you can provide a system id if the event exists on a resource calendar + + + Note: event metadata is associated with a resource calendar, not the hosts + event. + + so if you want to update an event and the metadata then you need to provide + both + + the `calendar` param and the `system_id` param + + + when moving a room from one system to another, the `system_id` param should + be + + set to the current rooms associated system. + + Then in the event body, the `system_id` field should be the new system.' tags: - Events - operationId: Events_replace_metadata + operationId: Events_update{2} requestBody: content: application/json: schema: - $ref: '#/components/schemas/JSON__Any' + $ref: '#/components/schemas/PlaceCalendar__Event' required: true parameters: - name: id @@ -4694,59 +4638,16 @@ paths: schema: type: string - name: system_id - in: path + in: query description: the event space associated with this event example: sys-1234 - required: true schema: type: string + nullable: true - name: calendar in: query description: the calendar associated with this event id example: user@org.com - required: false - schema: - type: string - nullable: true - - name: ical_uid - in: query - description: an alternative lookup for finding event-metadata - example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 - required: false - schema: - type: string - nullable: true - - name: setup_time - in: query - description: update event setup time - example: "10" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: breakdown_time - in: query - description: update event breakdown time - example: "10" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: setup_event_id - in: query - description: update setup event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false - schema: - type: string - nullable: true - - name: breakdown_event_id - in: query - description: update breakdown event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false schema: type: string nullable: true @@ -4756,7 +4657,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSON__Any' + $ref: '#/components/schemas/PlaceCalendar__Event' 429: description: Too Many Requests content: @@ -4819,25 +4720,17 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: Patches the metadata on a booking without touching the calendar event - description: 'Patches the metadata on a booking without touching the calendar - event - - only updates the keys provided in the request - - - by default it assumes the event exists on the resource calendar. - - you can provide a calendar param to override this default' + /api/staff/v1/events/{id}/attendee: + post: + summary: Adds a single attendee to an existing event tags: - Events - operationId: Events_patch_metadata + operationId: Events_add_attendee requestBody: content: application/json: schema: - $ref: '#/components/schemas/JSON__Any' + $ref: '#/components/schemas/PlaceCalendar__Event__Attendee' required: true parameters: - name: id @@ -4848,59 +4741,16 @@ paths: schema: type: string - name: system_id - in: path + in: query description: the event space associated with this event example: sys-1234 - required: true schema: type: string + nullable: true - name: calendar in: query description: the calendar associated with this event id example: user@org.com - required: false - schema: - type: string - nullable: true - - name: ical_uid - in: query - description: an alternative lookup for finding event-metadata - example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 - required: false - schema: - type: string - nullable: true - - name: setup_time - in: query - description: update event setup time - example: "10" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: breakdown_time - in: query - description: update event breakdown time - example: "10" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: setup_event_id - in: query - description: update setup event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false - schema: - type: string - nullable: true - - name: breakdown_event_id - in: query - description: update breakdown event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe - required: false schema: type: string nullable: true @@ -4910,7 +4760,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSON__Any' + $ref: '#/components/schemas/_PlaceCalendar__Event__Attendee___PlaceOS__Model__Attendee_' 429: description: Too Many Requests content: @@ -4973,46 +4823,43 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/notify/{change}/{system_id}/{event_id}: - post: + /api/staff/v1/events/{id}/attendee/{email}: + delete: tags: - Events - operationId: Events_notify_change - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/_PlaceCalendar__Event___Nil_' - required: true + operationId: Events_delete_attendee parameters: - - name: change + - name: id in: path - description: the type of change that has occured - example: created + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe required: true schema: type: string - enum: - - created - - updated - - deleted - - name: system_id + - name: email in: path - description: the event space associated with this event - example: sys-1234 + description: the email of the attendee to delete + example: user@example.com required: true schema: type: string - - name: event_id - in: path + - name: system_id + in: query description: the event space associated with this event example: sys-1234 - required: true schema: type: string + nullable: true + - name: calendar + in: query + description: the calendar associated with this event id + example: user@org.com + schema: + type: string + nullable: true responses: - 202: - description: Accepted + 200: + description: OK 429: description: Too Many Requests content: @@ -5075,50 +4922,34 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/decline: + /api/staff/v1/events/{id}/metadata/{system_id}/link/{ical_uid}: post: - summary: cancels the meeting without deleting it - description: 'cancels the meeting without deleting it - - - visually the event will remain on the calendar with a line through it - - NOTE:: any body data you post will be used as the message body in the declined - message' + summary: used to link resource recurring master ids to metadata tags: - Events - operationId: Events_decline + operationId: Events_link_master_metadata parameters: - name: id in: path - description: the event id + description: the event id to link example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe required: true schema: type: string - name: system_id - in: query + in: path description: the event space associated with this event example: sys-1234 - required: false + required: true schema: type: string - nullable: true - - name: calendar - in: query - description: the users calendar associated with this event - example: user@org.com - required: false + - name: ical_uid + in: path + description: the ical_uid of the event + example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 + required: true schema: type: string - nullable: true - - name: notify - in: query - description: set to `false` to prevent attendees being notified of the change - example: "false" - required: false - schema: - type: boolean responses: 202: description: Accepted @@ -5184,12 +5015,18 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/approve: - post: - summary: approves / accepts the meeting on behalf of the event space + /api/staff/v1/events/{id}/metadata/{system_id}: + get: + summary: '# returns the event metadata requested.' + description: '# returns the event metadata requested. + + + by default it assumes the event exists on the resource calendar. + + you can provide a calendar param to override this default' tags: - Events - operationId: Events_approve + operationId: Events_get_metadata parameters: - name: id in: path @@ -5199,19 +5036,26 @@ paths: schema: type: string - name: system_id - in: query + in: path description: the event space associated with this event example: sys-1234 required: true schema: type: string + - name: ical_uid + in: query + description: an alternative lookup for finding event-metadata + example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 + schema: + type: string + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/Bool' + $ref: '#/components/schemas/JSON__Any' 429: description: Too Many Requests content: @@ -5274,12 +5118,23 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/reject: - post: - summary: rejects / declines the meeting on behalf of the event space + put: + summary: Replaces the metadata on a booking without touching the calendar event + description: 'Replaces the metadata on a booking without touching the calendar + event + + by default it assumes the event exists on the resource calendar. + + you can provide a calendar param to override this default' tags: - Events - operationId: Events_reject + operationId: Events_replace_metadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__JSON__Any_' + required: true parameters: - name: id in: path @@ -5289,19 +5144,63 @@ paths: schema: type: string - name: system_id - in: query + in: path description: the event space associated with this event example: sys-1234 required: true schema: type: string + - name: calendar + in: query + description: the calendar associated with this event id + example: user@org.com + schema: + type: string + nullable: true + - name: ical_uid + in: query + description: an alternative lookup for finding event-metadata + example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 + schema: + type: string + nullable: true + - name: setup_time + in: query + description: update event setup time + example: "10" + schema: + type: integer + format: Int64 + nullable: true + - name: breakdown_time + in: query + description: update event breakdown time + example: "10" + schema: + type: integer + format: Int64 + nullable: true + - name: setup_event_id + in: query + description: update setup event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + schema: + type: string + nullable: true + - name: breakdown_event_id + in: query + description: update breakdown event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + schema: + type: string + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/Bool' + $ref: '#/components/schemas/JSON__Any' 429: description: Too Many Requests content: @@ -5364,12 +5263,26 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/guests: - get: - summary: Event Guest management + patch: + summary: Patches the metadata on a booking without touching the calendar event + description: 'Patches the metadata on a booking without touching the calendar + event + + only updates the keys provided in the request + + + by default it assumes the event exists on the resource calendar. + + you can provide a calendar param to override this default' tags: - Events - operationId: Events_guest_list + operationId: Events_patch_metadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__JSON__Any_' + required: true parameters: - name: id in: path @@ -5379,151 +5292,55 @@ paths: schema: type: string - name: system_id - in: query + in: path description: the event space associated with this event example: sys-1234 required: true schema: type: string - responses: - 200: - description: OK - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/PlaceOS__Model__Guest' - 429: - description: Too Many Requests - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 400: - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 401: - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 403: - description: Forbidden - 404: - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 511: - description: Network Authentication Required - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 406: - description: Not Acceptable - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ContentError' - 415: - description: Unsupported Media Type - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ContentError' - 422: - description: Unprocessable Entity - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ValidationError' - 500: - description: Internal Server Error - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 405: - description: Method Not Allowed - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/extension_metadata/{system_id}: - get: - summary: This exists to obtain events that have some condition that requires - action. - description: 'This exists to obtain events that have some condition that requires - action. - - i.e. you might have a flag that indicates if an action has taken place and - can use this to - - look up events in certain states. - - example route: /extension_metadata?field_name=colour&value=blue' - tags: - - Events - operationId: Events_extension_metadata - parameters: - - name: system_id - in: path - description: the event space associated with this event - example: sys-1234 - required: false - schema: - type: string - nullable: true - - name: field_name + - name: calendar in: query - description: the field we want to query - example: status - required: false + description: the calendar associated with this event id + example: user@org.com schema: type: string nullable: true - - name: value + - name: ical_uid in: query - description: value we want to match - example: approved - required: false + description: an alternative lookup for finding event-metadata + example: 5FC53010-1267-4F8E-BC28-1D7AE55A7C99 schema: type: string nullable: true - - name: period_start + - name: setup_time in: query - description: event period start as a unix epoch - example: "1661725146" - required: false + description: update event setup time + example: "10" schema: type: integer format: Int64 nullable: true - - name: period_end + - name: breakdown_time in: query - description: event period end as a unix epoch - example: "1661743123" - required: false + description: update event breakdown time + example: "10" schema: type: integer format: Int64 nullable: true - - name: event_ref + - name: setup_event_id in: query - description: list of event ids that we're potentially - example: event_id,recurring_event_id,ical_uid - required: false + description: update setup event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe schema: - type: array - items: - type: string + type: string + nullable: true + - name: breakdown_event_id + in: query + description: update breakdown event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + schema: + type: string nullable: true responses: 200: @@ -5531,9 +5348,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceOS__Model__EventMetadata' + $ref: '#/components/schemas/JSON__Any' 429: description: Too Many Requests content: @@ -5596,60 +5411,46 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/guests/{guest_id}/check_in: + /api/staff/v1/events/notify/{change}/{system_id}/{event_id}: post: - summary: a guest has arrived for a meeting in person. - description: 'a guest has arrived for a meeting in person. - - This route can be used to notify hosts' tags: - Events - operationId: Events_guest_checkin + operationId: Events_notify_change + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/_PlaceCalendar__Event___Nil_' + required: true parameters: - - name: id + - name: change in: path - description: the event id - example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + description: the type of change that has occured + example: created required: true schema: type: string - - name: guest_id + enum: + - created + - updated + - deleted + - name: system_id in: path - description: the email of the guest we want to checkin - example: person@external.com + description: the event space associated with this event + example: sys-1234 required: true schema: type: string - - name: system_id - in: query + - name: event_id + in: path description: the event space associated with this event example: sys-1234 - required: false - schema: - type: string - nullable: true - - name: calendar - in: query - description: the users calendar associated with this event - example: user@org.com - required: false + required: true schema: type: string - nullable: true - - name: state - in: query - description: the checkin state, defaults to `true` - example: "false" - required: false - schema: - type: boolean responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -5712,15 +5513,19 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/events/{id}/guests/{guest_id}/checkin: + /api/staff/v1/events/{id}/decline: post: - summary: a guest has arrived for a meeting in person. - description: 'a guest has arrived for a meeting in person. + summary: cancels the meeting without deleting it + description: 'cancels the meeting without deleting it - This route can be used to notify hosts' + + visually the event will remain on the calendar with a line through it + + NOTE:: any body data you post will be used as the message body in the declined + message' tags: - Events - operationId: Events_guest_checkin{2} + operationId: Events_decline parameters: - name: id in: path @@ -5729,18 +5534,10 @@ paths: required: true schema: type: string - - name: guest_id - in: path - description: the email of the guest we want to checkin - example: person@external.com - required: true - schema: - type: string - name: system_id in: query description: the event space associated with this event example: sys-1234 - required: false schema: type: string nullable: true @@ -5748,24 +5545,18 @@ paths: in: query description: the users calendar associated with this event example: user@org.com - required: false schema: type: string nullable: true - - name: state + - name: notify in: query - description: the checkin state, defaults to `true` + description: set to `false` to prevent attendees being notified of the change example: "false" - required: false schema: type: boolean responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -5828,30 +5619,34 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/groups: - get: - summary: returns a list of user groups in the orgainisations directory + /api/staff/v1/events/{id}/approve: + post: + summary: approves / accepts the meeting on behalf of the event space tags: - - Groups - operationId: Groups_index + - Events + operationId: Events_approve parameters: - - name: q + - name: id + in: path + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + required: true + schema: + type: string + - name: system_id in: query - description: optional search query - example: accounting - required: false + description: the event space associated with this event + example: sys-1234 + required: true schema: type: string - nullable: true responses: 200: description: OK content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Group' + $ref: '#/components/schemas/Bool' 429: description: Too Many Requests content: @@ -5914,26 +5709,67 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/groups/{id}: - get: - summary: returns the details of the provided group id + /api/staff/v1/events/approve_all: + post: tags: - - Groups - operationId: Groups_show + - Events + operationId: Events_approve_all parameters: - - name: id - in: path + - name: period_start + in: query + description: event period start as a unix epoch + example: "1661725146" required: true schema: - type: string - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceCalendar__Group' - 429: + type: integer + format: Int64 + - name: period_end + in: query + description: event period end as a unix epoch + example: "1661743123" + required: true + schema: + type: integer + format: Int64 + - name: calendars + in: query + description: a comma seperated list of calendar ids, recommend using `system_id` + for resource calendars + example: user@org.com,room2@resource.org.com + schema: + type: string + nullable: true + - name: zone_ids + in: query + description: a comma seperated list of zone ids + example: zone-123,zone-456 + schema: + type: string + nullable: true + - name: system_ids + in: query + description: a comma seperated list of event spaces + example: sys-1234,sys-5678 + schema: + type: string + nullable: true + - name: ical_uid + in: query + description: the ical uid of the event you are looking for + example: sqvitruh3ho3mrq896tplad4v8 + schema: + type: string + nullable: true + responses: + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/String' + 429: description: Too Many Requests content: application/json: @@ -5995,15 +5831,24 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/groups/{id}/members: - get: - summary: returns the list of staff memebers in a particular user group + /api/staff/v1/events/{id}/reject: + post: + summary: rejects / declines the meeting on behalf of the event space tags: - - Groups - operationId: Groups_members + - Events + operationId: Events_reject parameters: - name: id in: path + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + required: true + schema: + type: string + - name: system_id + in: query + description: the event space associated with this event + example: sys-1234 required: true schema: type: string @@ -6013,9 +5858,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Member' + $ref: '#/components/schemas/Bool' 429: description: Too Many Requests content: @@ -6078,75 +5921,27 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/guests: + /api/staff/v1/events/{id}/guests: get: - summary: lists known guests (which can be queried) OR locates visitors via meeting - start and end times (can be filtered by calendars, zone_ids and system_ids) + summary: Event Guest management tags: - - Guests - operationId: Guests_index + - Events + operationId: Events_guest_list parameters: - - name: q - in: query - description: space seperated search query for guests - example: steve von - required: false - schema: - type: string - - name: period_start - in: query - description: event period start as a unix epoch - example: "1661725146" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: period_end - in: query - description: event period end as a unix epoch - example: "1661743123" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: calendars - in: query - description: '[deprecated] a comma seperated list of calendar ids, recommend - using `system_id` for resource calendars' - example: user@org.com,room2@resource.org.com - required: false - schema: - type: string - nullable: true - - name: zone_ids - in: query - description: '[deprecated] a comma seperated list of zone ids used for events - or bookings' - example: zone-123,zone-456 - required: false + - name: id + in: path + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe + required: true schema: type: string - nullable: true - - name: system_ids + - name: system_id in: query - description: '[deprecated] a comma seperated list of event spaces' - example: sys-1234,sys-5678 - required: false + description: the event space associated with this event + example: sys-1234 + required: true schema: type: string - nullable: true - - name: zones - in: query - description: a comma seperated list of zone ids for bookings - example: zone-123,zone-456 - required: false - schema: - type: array - items: - type: string - nullable: true responses: 200: description: OK @@ -6218,25 +6013,78 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: creates a new guest record + /api/staff/v1/events/extension_metadata/{system_id}: + get: + summary: This exists to obtain events that have some condition that requires + action. + description: 'This exists to obtain events that have some condition that requires + action. + + i.e. you might have a flag that indicates if an action has taken place and + can use this to + + look up events in certain states. + + example route: /extension_metadata?field_name=colour&value=blue' tags: - - Guests - operationId: Guests_create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' - required: true - parameters: [] + - Events + operationId: Events_extension_metadata + parameters: + - name: system_id + in: path + description: the event space associated with this event + example: sys-1234 + schema: + type: string + nullable: true + - name: field_name + in: query + description: the field we want to query + example: status + schema: + type: string + nullable: true + - name: value + in: query + description: value we want to match + example: approved + schema: + type: string + nullable: true + - name: period_start + in: query + description: event period start as a unix epoch + example: "1661725146" + schema: + type: integer + format: Int64 + nullable: true + - name: period_end + in: query + description: event period end as a unix epoch + example: "1661743123" + schema: + type: integer + format: Int64 + nullable: true + - name: event_ref + in: query + description: list of event ids that we're potentially + example: event_id,recurring_event_id,ical_uid + schema: + type: array + items: + type: string + nullable: true responses: - 201: - description: Created + 200: + description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__EventMetadata' 429: description: Too Many Requests content: @@ -6299,115 +6147,50 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/guests/{id}: - get: - summary: returns the details of a particular guest and if they are expected - to attend in person today + /api/staff/v1/events/{id}/guests/{guest_id}/check_in: + post: + summary: a guest has arrived for a meeting in person. + description: 'a guest has arrived for a meeting in person. + + This route can be used to notify hosts' tags: - - Guests - operationId: Guests_show + - Events + operationId: Events_guest_checkin parameters: - name: id in: path - description: looks up a guest using either their id or email - example: external@org.com + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe required: true schema: - anyOf: - - type: integer - format: Int64 - - type: string - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' - 429: - description: Too Many Requests - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 400: - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 401: - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 403: - description: Forbidden - 404: - description: Not Found - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 511: - description: Network Authentication Required - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 406: - description: Not Acceptable - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ContentError' - 415: - description: Unsupported Media Type - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ContentError' - 422: - description: Unprocessable Entity - content: - application/json: - schema: - $ref: '#/components/schemas/Application__ValidationError' - 500: - description: Internal Server Error - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - 405: - description: Method Not Allowed - content: - application/json: - schema: - $ref: '#/components/schemas/Application__CommonError' - put: - summary: patches a guest record with the changes provided - tags: - - Guests - operationId: Guests_update - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' - required: true - parameters: - - name: id + type: string + - name: guest_id in: path - description: looks up a guest using either their id or email - example: external@org.com + description: the email of the guest we want to checkin + example: person@external.com required: true schema: - anyOf: - - type: integer - format: Int64 - - type: string + type: string + - name: system_id + in: query + description: the event space associated with this event + example: sys-1234 + schema: + type: string + nullable: true + - name: calendar + in: query + description: the users calendar associated with this event + example: user@org.com + schema: + type: string + nullable: true + - name: state + in: query + description: the checkin state, defaults to `true` + example: "false" + schema: + type: boolean responses: 200: description: OK @@ -6477,25 +6260,57 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - delete: - summary: removes the guest record from the database + /api/staff/v1/events/{id}/guests/{guest_id}/checkin: + post: + summary: a guest has arrived for a meeting in person. + description: 'a guest has arrived for a meeting in person. + + This route can be used to notify hosts' tags: - - Guests - operationId: Guests_destroy + - Events + operationId: Events_guest_checkin{2} parameters: - name: id in: path - description: looks up a guest using either their id or email - example: external@org.com + description: the event id + example: AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZe required: true schema: - anyOf: - - type: integer - format: Int64 - - type: string + type: string + - name: guest_id + in: path + description: the email of the guest we want to checkin + example: person@external.com + required: true + schema: + type: string + - name: system_id + in: query + description: the event space associated with this event + example: sys-1234 + schema: + type: string + nullable: true + - name: calendar + in: query + description: the users calendar associated with this event + example: user@org.com + schema: + type: string + nullable: true + - name: state + in: query + description: the checkin state, defaults to `true` + example: "false" + schema: + type: boolean responses: - 202: - description: Accepted + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -6558,35 +6373,29 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: patches a guest record with the changes provided + /api/staff/v1/groups: + get: + summary: returns a list of user groups in the orgainisations directory tags: - - Guests - operationId: Guests_update{2} - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' - required: true + - Groups + operationId: Groups_index parameters: - - name: id - in: path - description: looks up a guest using either their id or email - example: external@org.com - required: true + - name: q + in: query + description: optional search query + example: accounting schema: - anyOf: - - type: integer - format: Int64 - - type: string + type: string + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Guest' + type: array + items: + $ref: '#/components/schemas/PlaceCalendar__Group' 429: description: Too Many Requests content: @@ -6649,48 +6458,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/guests/{id}/meetings: + /api/staff/v1/groups/{id}: get: - summary: returns the meetings that the provided guest is attending today (approximation - based on internal records) + summary: returns the details of the provided group id tags: - - Guests - operationId: Guests_meetings + - Groups + operationId: Groups_show parameters: - name: id in: path - description: looks up a guest using either their id or email - example: external@org.com required: true schema: - anyOf: - - type: integer - format: Int64 - - type: string - - name: include_past - in: query - description: shoule we include past events they have visited - example: "true" - required: false - schema: - type: boolean - - name: limit - in: query - description: how many results to return - example: "10" - required: false - schema: - type: integer - format: Int32 + type: string responses: 200: description: OK content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Event' + $ref: '#/components/schemas/PlaceCalendar__Group' 429: description: Too Many Requests content: @@ -6753,39 +6539,18 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/guests/{id}/bookings: + /api/staff/v1/groups/{id}/members: get: - summary: returns the list of bookings a guest is expected to or has attended - in person + summary: returns the list of staff memebers in a particular user group tags: - - Guests - operationId: Guests_bookings + - Groups + operationId: Groups_members parameters: - name: id in: path - description: looks up a guest using either their id or email - example: external@org.com required: true schema: - anyOf: - - type: integer - format: Int64 - - type: string - - name: include_past - in: query - description: shoule we include past bookings - example: "true" - required: false - schema: - type: boolean - - name: limit - in: query - description: how many results to return - example: "10" - required: false - schema: - type: integer - format: Int32 + type: string responses: 200: description: OK @@ -6794,7 +6559,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlaceOS__Model__Booking' + $ref: '#/components/schemas/PlaceCalendar__Member' 429: description: Too Many Requests content: @@ -6857,72 +6622,67 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1: + /api/staff/v1/guests: get: - summary: returns the service build details - tags: - - HealthCheck - operationId: HealthCheck_index - parameters: [] - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/HealthCheck__BuildInfo' - /api/staff/v1/place: - get: - summary: Retrieves a list of rooms from the tenant place object - description: 'Retrieves a list of rooms from the tenant place object - - This function supports advanced filtering using Azure AD filter syntax. - - For more information on Azure AD filter syntax, visit: - - https://learn.microsoft.com/en-us/graph/filter-query-parameter?tabs=http' + summary: lists known guests (which can be queried) OR locates visitors via meeting + start and end times (can be filtered by calendars, zone_ids and system_ids) tags: - - Place - operationId: Place_index + - Guests + operationId: Guests_index parameters: - - name: match + - name: q in: query - description: An optional query parameter to return a subset of properties - for a resource. With match, you can specify a subset or a superset of the - default properties. - example: id,displayName - required: false + description: space seperated search query for guests + example: steve von schema: type: string + - name: period_start + in: query + description: event period start as a unix epoch + example: "1661725146" + schema: + type: integer + format: Int64 nullable: true - - name: filter + - name: period_end in: query - description: An optional advanced search filter using Azure AD filter syntax - to query parameter to retrieve a subset of a collection.. - example: startsWith(givenName,'ben') or startsWith(surname,'ben') - required: false + description: event period end as a unix epoch + example: "1661743123" + schema: + type: integer + format: Int64 + nullable: true + - name: calendars + in: query + description: '[deprecated] a comma seperated list of calendar ids, recommend + using `system_id` for resource calendars' + example: user@org.com,room2@resource.org.com schema: type: string nullable: true - - name: top + - name: zone_ids in: query - description: 'Optional: Use the top query parameter to specify the number - of items to be included in the result. Default value is 100' - example: "100" - required: false + description: '[deprecated] a comma seperated list of zone ids used for events + or bookings' + example: zone-123,zone-456 schema: - type: integer - format: Int32 + type: string nullable: true - - name: skip + - name: system_ids in: query - description: 'Optional: Use skip query parameter to set the number of items - to skip at the start of a collection.' - example: 21 to retrieve search results from 21st record - required: false + description: '[deprecated] a comma seperated list of event spaces' + example: sys-1234,sys-5678 schema: - type: integer - format: Int32 + type: string + nullable: true + - name: zones + in: query + description: a comma seperated list of zone ids for bookings + example: zone-123,zone-456 + schema: + type: array + items: + type: string nullable: true responses: 200: @@ -6932,7 +6692,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/Office365__Room' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -6995,56 +6755,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people: - get: - summary: Retrieves a list of users from the organization directory - description: 'Retrieves a list of users from the organization directory - - This function supports advanced filtering using Azure AD filter syntax. - - For more information on Azure AD filter syntax, visit: - - https://learn.microsoft.com/en-us/graph/filter-query-parameter?tabs=http' + post: + summary: creates a new guest record tags: - - Staff - operationId: Staff_index - parameters: - - name: q - in: query - description: An optional search query to filter users by name or email. If - both 'q' and 'filter' parameters are provided, 'filter' takes precedence. - example: steve - required: false - schema: - type: string - nullable: true - - name: filter - in: query - description: An optional advanced search filter using Azure AD filter syntax. - Provides more control over the search criteria and takes precedence over - the 'q' parameter. Supports both Azure AD and Google providers. - example: startsWith(givenName,'ben') or startsWith(surname,'ben') - required: false - schema: - type: string - nullable: true - - name: next_page - in: query - description: a google token or graph api URI representing the next page of - results - required: false - schema: - type: string - nullable: true + - Guests + operationId: Guests_create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Guest' + required: true + parameters: [] responses: - 200: - description: OK + 201: + description: Created content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__User' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -7107,27 +6836,31 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people/{id}: + /api/staff/v1/guests/{id}: get: - summary: returns user details for the id provided + summary: returns the details of a particular guest and if they are expected + to attend in person today tags: - - Staff - operationId: Staff_show + - Guests + operationId: Guests_show parameters: - name: id in: path - description: a user id OR user email address - example: user@org.com + description: looks up a guest using either their id or email + example: external@org.com required: true schema: - type: string + anyOf: + - type: integer + format: Int64 + - type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceCalendar__User' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -7190,23 +6923,35 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people/{id}/photo: - get: - summary: returns user photo + put: + summary: patches a guest record with the changes provided tags: - - Staff - operationId: Staff_photo + - Guests + operationId: Guests_update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Guest' + required: true parameters: - name: id in: path - description: a user id OR user email address - example: user@org.com + description: looks up a guest using either their id or email + example: external@org.com required: true schema: - type: string + anyOf: + - type: integer + format: Int64 + - type: string responses: 200: description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -7269,27 +7014,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people/{id}/groups: - get: - summary: returns the list of groups the user is a member + delete: + summary: removes the guest record from the database tags: - - Staff - operationId: Staff_groups + - Guests + operationId: Guests_destroy parameters: - name: id in: path + description: looks up a guest using either their id or email + example: external@org.com required: true schema: - type: string + anyOf: + - type: integer + format: Int64 + - type: string responses: - 200: - description: OK - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/PlaceCalendar__Group' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -7352,25 +7095,35 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people/{id}/manager: - get: - summary: returns the users manager + patch: + summary: patches a guest record with the changes provided tags: - - Staff - operationId: Staff_manager + - Guests + operationId: Guests_update{2} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Guest' + required: true parameters: - name: id in: path + description: looks up a guest using either their id or email + example: external@org.com required: true schema: - type: string + anyOf: + - type: integer + format: Int64 + - type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceCalendar__User' + $ref: '#/components/schemas/PlaceOS__Model__Guest' 429: description: Too Many Requests content: @@ -7433,18 +7186,37 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/people/{id}/calendars: + /api/staff/v1/guests/{id}/meetings: get: - summary: returns the list of public calendars + summary: returns the meetings that the provided guest is attending today (approximation + based on internal records) tags: - - Staff - operationId: Staff_calendars + - Guests + operationId: Guests_meetings parameters: - name: id in: path + description: looks up a guest using either their id or email + example: external@org.com required: true schema: - type: string + anyOf: + - type: integer + format: Int64 + - type: string + - name: include_past + in: query + description: shoule we include past events they have visited + example: "true" + schema: + type: boolean + - name: limit + in: query + description: how many results to return + example: "10" + schema: + type: integer + format: Int32 responses: 200: description: OK @@ -7453,7 +7225,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlaceCalendar__Calendar' + $ref: '#/components/schemas/PlaceCalendar__Event' 429: description: Too Many Requests content: @@ -7516,29 +7288,37 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys: + /api/staff/v1/guests/{id}/bookings: get: - summary: returns a list of surveys + summary: returns the list of bookings a guest is expected to or has attended + in person tags: - - Surveys - operationId: Surveys_index + - Guests + operationId: Guests_bookings parameters: - - name: zone_id + - name: id + in: path + description: looks up a guest using either their id or email + example: external@org.com + required: true + schema: + anyOf: + - type: integer + format: Int64 + - type: string + - name: include_past in: query - description: filters surveys by zone_id - example: zone1234 - required: false + description: shoule we include past bookings + example: "true" schema: - type: string - nullable: true - - name: building_id + type: boolean + - name: limit in: query - description: filters surveys by building_id - example: building1234 - required: false + description: how many results to return + example: "10" schema: - type: string - nullable: true + type: integer + format: Int32 responses: 200: description: OK @@ -7547,7 +7327,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlaceOS__Model__Survey' + $ref: '#/components/schemas/PlaceOS__Model__Booking' 429: description: Too Many Requests content: @@ -7610,25 +7390,78 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: creates a new survey + /api/staff/v1: + get: + summary: returns the service build details tags: - - Surveys - operationId: Surveys_create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' - required: true + - HealthCheck + operationId: HealthCheck_index parameters: [] responses: - 201: - description: Created + 200: + description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' + $ref: '#/components/schemas/HealthCheck__BuildInfo' + /api/staff/v1/place: + get: + summary: Retrieves a list of rooms from the tenant place object + description: 'Retrieves a list of rooms from the tenant place object + + This function supports advanced filtering using Azure AD filter syntax. + + For more information on Azure AD filter syntax, visit: + + https://learn.microsoft.com/en-us/graph/filter-query-parameter?tabs=http' + tags: + - Place + operationId: Place_index + parameters: + - name: match + in: query + description: An optional query parameter to return a subset of properties + for a resource. With match, you can specify a subset or a superset of the + default properties. + example: id,displayName + schema: + type: string + nullable: true + - name: filter + in: query + description: An optional advanced search filter using Azure AD filter syntax + to query parameter to retrieve a subset of a collection.. + example: startsWith(givenName,'ben') or startsWith(surname,'ben') + schema: + type: string + nullable: true + - name: top + in: query + description: 'Optional: Use the top query parameter to specify the number + of items to be included in the result. Default value is 100' + example: "100" + schema: + type: integer + format: Int32 + nullable: true + - name: skip + in: query + description: 'Optional: Use skip query parameter to set the number of items + to skip at the start of a collection.' + example: 21 to retrieve search results from 21st record + schema: + type: integer + format: Int32 + nullable: true + responses: + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Office365__Room' 429: description: Too Many Requests content: @@ -7691,28 +7524,53 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/{id}: + /api/staff/v1/people: get: - summary: show a survey + summary: Retrieves a list of users from the organization directory + description: 'Retrieves a list of users from the organization directory + + This function supports advanced filtering using Azure AD filter syntax. + + For more information on Azure AD filter syntax, visit: + + https://learn.microsoft.com/en-us/graph/filter-query-parameter?tabs=http' tags: - - Surveys - operationId: Surveys_show + - Staff + operationId: Staff_index parameters: - - name: id - in: path - description: the survey id - example: "1234" - required: true + - name: q + in: query + description: An optional search query to filter users by name or email. If + both 'q' and 'filter' parameters are provided, 'filter' takes precedence. + example: steve schema: - type: integer - format: Int64 + type: string + nullable: true + - name: filter + in: query + description: An optional advanced search filter using Azure AD filter syntax. + Provides more control over the search criteria and takes precedence over + the 'q' parameter. Supports both Azure AD and Google providers. + example: startsWith(givenName,'ben') or startsWith(surname,'ben') + schema: + type: string + nullable: true + - name: next_page + in: query + description: a google token or graph api URI representing the next page of + results + schema: + type: string + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' + type: array + items: + $ref: '#/components/schemas/PlaceCalendar__User' 429: description: Too Many Requests content: @@ -7775,31 +7633,27 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - put: - summary: patches an existing survey + /api/staff/v1/people/{id}: + get: + summary: returns user details for the id provided tags: - - Surveys - operationId: Surveys_update - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' - required: true + - Staff + operationId: Staff_show parameters: - name: id in: path + description: a user id OR user email address + example: user@org.com required: true schema: - type: integer - format: Int64 + type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' + $ref: '#/components/schemas/PlaceCalendar__User' 429: description: Too Many Requests content: @@ -7862,21 +7716,23 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - delete: - summary: deletes the survey + /api/staff/v1/people/{id}/photo: + get: + summary: returns user photo tags: - - Surveys - operationId: Surveys_destroy + - Staff + operationId: Staff_photo parameters: - name: id in: path + description: a user id OR user email address + example: user@org.com required: true schema: - type: integer - format: Int64 + type: string responses: - 202: - description: Accepted + 200: + description: OK 429: description: Too Many Requests content: @@ -7939,31 +7795,27 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: patches an existing survey + /api/staff/v1/people/{id}/groups: + get: + summary: returns the list of groups the user is a member tags: - - Surveys - operationId: Surveys_update{2} - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' - required: true + - Staff + operationId: Staff_groups parameters: - name: id in: path required: true schema: - type: integer - format: Int64 + type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey' + type: array + items: + $ref: '#/components/schemas/PlaceCalendar__Group' 429: description: Too Many Requests content: @@ -8026,49 +7878,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/answers: + /api/staff/v1/people/{id}/manager: get: - summary: returns a list of answers + summary: returns the users manager tags: - - Answers - operationId: Surveys::Answers_index - parameters: - - name: survey_id - in: query - description: the survey id to get answers for - example: "1234" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: created_after - in: query - description: filters answers that were created after the unix epoch specified - example: "1661743123" - required: false - schema: - type: integer - format: Int64 - nullable: true - - name: created_before - in: query - description: filters answers that were created before the unix epoch specified - example: "1661743123" - required: false + - Staff + operationId: Staff_manager + parameters: + - name: id + in: path + required: true schema: - type: integer - format: Int64 - nullable: true + type: string responses: 200: description: OK content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Answer' + $ref: '#/components/schemas/PlaceCalendar__User' 429: description: Too Many Requests content: @@ -8131,27 +7959,27 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: creates a new survey answer + /api/staff/v1/people/{id}/calendars: + get: + summary: returns the list of public calendars tags: - - Answers - operationId: Surveys::Answers_create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Array_PlaceOS__Model__Survey__Answer_' + - Staff + operationId: Staff_calendars + parameters: + - name: id + in: path required: true - parameters: [] + schema: + type: string responses: - 201: - description: Created + 200: + description: OK content: application/json: schema: type: array items: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Answer' + $ref: '#/components/schemas/PlaceCalendar__Calendar' 429: description: Too Many Requests content: @@ -8214,29 +8042,26 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/invitations: + /api/staff/v1/surveys: get: - summary: returns a list of invitations + summary: returns a list of surveys tags: - - Invitations - operationId: Surveys::Invitations_index + - Surveys + operationId: Surveys_index parameters: - - name: survey_id + - name: zone_id in: query - description: the survey id to get invitations for - example: "1234" - required: false + description: filters surveys by zone_id + example: zone1234 schema: - type: integer - format: Int64 + type: string nullable: true - - name: sent + - name: building_id in: query - description: filter by sent status - example: "false" - required: false + description: filters surveys by building_id + example: building1234 schema: - type: boolean + type: string nullable: true responses: 200: @@ -8246,7 +8071,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' 429: description: Too Many Requests content: @@ -8310,15 +8135,15 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' post: - summary: creates a new invitation + summary: creates a new survey tags: - - Invitations - operationId: Surveys::Invitations_create + - Surveys + operationId: Surveys_create requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' required: true parameters: [] responses: @@ -8327,7 +8152,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' 429: description: Too Many Requests content: @@ -8390,27 +8215,28 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/invitations/{token}: + /api/staff/v1/surveys/{id}: get: - summary: show an invitation + summary: show a survey tags: - - Invitations - operationId: Surveys::Invitations_show + - Surveys + operationId: Surveys_show parameters: - - name: token + - name: id in: path - description: the invitation token - example: ABCDEF + description: the survey id + example: "1234" required: true schema: - type: string + type: integer + format: Int64 responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' 429: description: Too Many Requests content: @@ -8474,29 +8300,30 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' put: - summary: patches an existing survey invitation + summary: patches an existing survey tags: - - Invitations - operationId: Surveys::Invitations_update + - Surveys + operationId: Surveys_update requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' required: true parameters: - - name: token + - name: id in: path required: true schema: - type: string + type: integer + format: Int64 responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' 429: description: Too Many Requests content: @@ -8560,18 +8387,17 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' delete: - summary: deletes the invitation + summary: deletes the survey tags: - - Invitations - operationId: Surveys::Invitations_destroy + - Surveys + operationId: Surveys_destroy parameters: - - name: token + - name: id in: path - description: the invitation token - example: ABCDEF required: true schema: - type: string + type: integer + format: Int64 responses: 202: description: Accepted @@ -8638,29 +8464,30 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' patch: - summary: patches an existing survey invitation + summary: patches an existing survey tags: - - Invitations - operationId: Surveys::Invitations_update{2} + - Surveys + operationId: Surveys_update{2} requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' required: true parameters: - - name: token + - name: id in: path required: true schema: - type: string + type: integer + format: Int64 responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' + $ref: '#/components/schemas/PlaceOS__Model__Survey' 429: description: Too Many Requests content: @@ -8723,29 +8550,36 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/questions: + /api/staff/v1/surveys/answers: get: - summary: returns a list of questions + summary: returns a list of answers tags: - - Questions - operationId: Surveys::Questions_index + - Answers + operationId: Surveys::Answers_index parameters: - name: survey_id in: query - description: the survey id to get questions for + description: the survey id to get answers for example: "1234" - required: false schema: type: integer format: Int64 nullable: true - - name: deleted + - name: created_after in: query - description: filter by soft-deleted - example: "true" - required: false + description: filters answers that were created after the unix epoch specified + example: "1661743123" schema: - type: boolean + type: integer + format: Int64 + nullable: true + - name: created_before + in: query + description: filters answers that were created before the unix epoch specified + example: "1661743123" + schema: + type: integer + format: Int64 nullable: true responses: 200: @@ -8755,7 +8589,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Answer' 429: description: Too Many Requests content: @@ -8819,15 +8653,15 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' post: - summary: creates a new question + summary: creates a new survey answer tags: - - Questions - operationId: Surveys::Questions_create + - Answers + operationId: Surveys::Answers_create requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + $ref: '#/components/schemas/Array_PlaceOS__Model__Survey__Answer_' required: true parameters: [] responses: @@ -8836,7 +8670,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Answer' 429: description: Too Many Requests content: @@ -8899,28 +8735,37 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/surveys/questions/{id}: + /api/staff/v1/surveys/invitations: get: - summary: show a question + summary: returns a list of invitations tags: - - Questions - operationId: Surveys::Questions_show + - Invitations + operationId: Surveys::Invitations_index parameters: - - name: id - in: path - description: the question id + - name: survey_id + in: query + description: the survey id to get invitations for example: "1234" - required: true schema: type: integer format: Int64 + nullable: true + - name: sent + in: query + description: filter by sent status + example: "false" + schema: + type: boolean + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' 429: description: Too Many Requests content: @@ -8983,35 +8828,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - put: - summary: patches an existing question - description: 'patches an existing question - - This will create a new version of the question if there are any linked answers, - and then soft delete the old version.' + post: + summary: creates a new invitation tags: - - Questions - operationId: Surveys::Questions_update + - Invitations + operationId: Surveys::Invitations_create requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' - required: true - parameters: - - name: id - in: path + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' required: true - schema: - type: integer - format: Int64 + parameters: [] responses: - 200: - description: OK + 201: + description: Created content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' 429: description: Too Many Requests content: @@ -9074,25 +8909,27 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - delete: - summary: deletes the question - description: 'deletes the question - - This will soft delete the question if there are any linked answers or if the - question is in any surveys.' + /api/staff/v1/surveys/invitations/{token}: + get: + summary: show an invitation tags: - - Questions - operationId: Surveys::Questions_destroy + - Invitations + operationId: Surveys::Invitations_show parameters: - - name: id + - name: token in: path + description: the invitation token + example: ABCDEF required: true schema: - type: integer - format: Int64 + type: string responses: - 202: - description: Accepted + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' 429: description: Too Many Requests content: @@ -9155,35 +8992,30 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: patches an existing question - description: 'patches an existing question - - This will create a new version of the question if there are any linked answers, - and then soft delete the old version.' + put: + summary: patches an existing survey invitation tags: - - Questions - operationId: Surveys::Questions_update{2} + - Invitations + operationId: Surveys::Invitations_update requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' required: true parameters: - - name: id + - name: token in: path required: true schema: - type: integer - format: Int64 + type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' 429: description: Too Many Requests content: @@ -9246,22 +9078,22 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants: - get: - summary: lists the configured tenants + delete: + summary: deletes the invitation tags: - - Tenants - operationId: Tenants_index - parameters: [] + - Invitations + operationId: Surveys::Invitations_destroy + parameters: + - name: token + in: path + description: the invitation token + example: ABCDEF + required: true + schema: + type: string responses: - 200: - description: OK - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -9324,25 +9156,30 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: creates a new tenant + patch: + summary: patches an existing survey invitation tags: - - Tenants - operationId: Tenants_create + - Invitations + operationId: Surveys::Invitations_update{2} requestBody: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' required: true - parameters: [] + parameters: + - name: token + in: path + required: true + schema: + type: string responses: - 201: - description: Created + 200: + description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Invitation' 429: description: Too Many Requests content: @@ -9405,32 +9242,37 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants/{id}: - put: - summary: patches an existing booking with the changes provided + /api/staff/v1/surveys/questions: + get: + summary: returns a list of questions tags: - - Tenants - operationId: Tenants_update - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' - required: true + - Questions + operationId: Surveys::Questions_index parameters: - - name: id - in: path - required: true + - name: survey_id + in: query + description: the survey id to get questions for + example: "1234" schema: type: integer format: Int64 + nullable: true + - name: deleted + in: query + description: filter by soft-deleted + example: "true" + schema: + type: boolean + nullable: true responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' 429: description: Too Many Requests content: @@ -9493,21 +9335,25 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - delete: - summary: removes the selected tenant from the system + post: + summary: creates a new question tags: - - Tenants - operationId: Tenants_destroy - parameters: - - name: id - in: path + - Questions + operationId: Surveys::Questions_create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' required: true - schema: - type: integer - format: Int64 + parameters: [] responses: - 202: - description: Accepted + 201: + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' 429: description: Too Many Requests content: @@ -9570,20 +9416,17 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - patch: - summary: patches an existing booking with the changes provided + /api/staff/v1/surveys/questions/{id}: + get: + summary: show a question tags: - - Tenants - operationId: Tenants_update{2} - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' - required: true + - Questions + operationId: Surveys::Questions_show parameters: - name: id in: path + description: the question id + example: "1234" required: true schema: type: integer @@ -9594,7 +9437,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' 429: description: Too Many Requests content: @@ -9657,20 +9500,35 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants/current_limits: - get: - summary: returns the limits for the current domain (Host header) + put: + summary: patches an existing question + description: 'patches an existing question + + This will create a new version of the question if there are any linked answers, + and then soft delete the old version.' tags: - - Tenants - operationId: Tenants_current_limits - parameters: [] + - Questions + operationId: Surveys::Questions_update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' + required: true + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/Hash_String__Int32_' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' 429: description: Too Many Requests content: @@ -9733,12 +9591,15 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants/{id}/limits: - get: - summary: returns the limits for the selected tenant + delete: + summary: deletes the question + description: 'deletes the question + + This will soft delete the question if there are any linked answers or if the + question is in any surveys.' tags: - - Tenants - operationId: Tenants_show_limits + - Questions + operationId: Surveys::Questions_destroy parameters: - name: id in: path @@ -9747,12 +9608,8 @@ paths: type: integer format: Int64 responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Hash_String__Int32_' + 202: + description: Accepted 429: description: Too Many Requests content: @@ -9815,16 +9672,20 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - post: - summary: updates the limits for the tenant provided + patch: + summary: patches an existing question + description: 'patches an existing question + + This will create a new version of the question if there are any linked answers, + and then soft delete the old version.' tags: - - Tenants - operationId: Tenants_update_limits + - Questions + operationId: Surveys::Questions_update{2} requestBody: content: application/json: schema: - $ref: '#/components/schemas/Hash_String__Int32_' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' required: true parameters: - name: id @@ -9839,7 +9700,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Hash_String__Int32_' + $ref: '#/components/schemas/PlaceOS__Model__Survey__Question' 429: description: Too Many Requests content: @@ -9902,20 +9763,40 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants/current_early_checkin: + /api/staff/v1/teams/{teams_id}/{channel_id}: get: - summary: returns the early checkin limit for the current domain (Host header) + summary: returns the list of messages (without the replies) in a channel of + a team. tags: - - Tenants - operationId: Tenants_current_early_checkin - parameters: [] - responses: - 200: - description: OK - content: + - Teams + operationId: Teams_index + parameters: + - name: teams_id + in: path + required: true + schema: + type: string + - name: channel_id + in: path + required: true + schema: + type: string + - name: top + in: query + description: optional number of channel messages to returned, default page + size is 20 + example: "20" + schema: + type: integer + format: Int32 + nullable: true + responses: + 200: + description: OK + content: application/json: schema: - $ref: '#/components/schemas/Int64' + $ref: '#/components/schemas/Office365__ChatMessageList' 429: description: Too Many Requests content: @@ -9978,26 +9859,206 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' - /api/staff/v1/tenants/{id}/early_checkin: + post: + summary: Send a new chatMessage in the specified channel or a chat. + tags: + - Teams + operationId: Teams_send_channel_message + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/String' + required: true + parameters: + - name: teams_id + in: path + required: true + schema: + type: string + - name: channel_id + in: path + required: true + schema: + type: string + - name: type + in: query + description: optional message content type, default to TEXT + example: HTML + schema: + type: string + responses: + 201: + description: Created + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/teams/{teams_id}/{channel_id}/{message_id}: get: - summary: returns the early checkin limit for the selected tenant + summary: returns a single message or a message reply in a channel or a chat. tags: - - Tenants - operationId: Tenants_show_early_checkin + - Teams + operationId: Teams_show parameters: - - name: id + - name: teams_id in: path required: true schema: - type: integer - format: Int64 + type: string + - name: channel_id + in: path + required: true + schema: + type: string + - name: message_id + in: path + required: true + schema: + type: string responses: 200: description: OK content: application/json: schema: - $ref: '#/components/schemas/Int64' + $ref: '#/components/schemas/Office365__ChatMessage' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/tenants: + get: + summary: lists the configured tenants + tags: + - Tenants + operationId: Tenants_index + parameters: [] + responses: + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' 429: description: Too Many Requests content: @@ -10061,30 +10122,24 @@ paths: schema: $ref: '#/components/schemas/Application__CommonError' post: - summary: updates the early checkin limit for the tenant provided + summary: creates a new tenant tags: - Tenants - operationId: Tenants_update_early_checkin + operationId: Tenants_create requestBody: content: application/json: schema: - $ref: '#/components/schemas/Int64' - required: true - parameters: - - name: id - in: path + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' required: true - schema: - type: integer - format: Int64 + parameters: [] responses: - 200: - description: OK + 201: + description: Created content: application/json: schema: - $ref: '#/components/schemas/Int64' + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' 429: description: Too Many Requests content: @@ -10147,28 +10202,770 @@ paths: application/json: schema: $ref: '#/components/schemas/Application__CommonError' -components: - schemas: - PlaceOS__Model__Booking: - type: object - properties: - booking_type: - type: string - nullable: true - booking_start: - type: integer - format: Int64 - nullable: true - booking_end: + /api/staff/v1/tenants/{id}: + put: + summary: patches an existing booking with the changes provided + tags: + - Tenants + operationId: Tenants_update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + required: true + parameters: + - name: id + in: path + required: true + schema: type: integer format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + delete: + summary: removes the selected tenant from the system + tags: + - Tenants + operationId: Tenants_destroy + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 202: + description: Accepted + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + patch: + summary: patches an existing booking with the changes provided + tags: + - Tenants + operationId: Tenants_update{2} + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + required: true + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/PlaceOS__Model__Tenant__Responder' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/tenants/current_limits: + get: + summary: returns the limits for the current domain (Host header) + tags: + - Tenants + operationId: Tenants_current_limits + parameters: [] + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__Int32_' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/tenants/{id}/limits: + get: + summary: returns the limits for the selected tenant + tags: + - Tenants + operationId: Tenants_show_limits + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__Int32_' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + post: + summary: updates the limits for the tenant provided + tags: + - Tenants + operationId: Tenants_update_limits + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__Int32_' + required: true + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Hash_String__Int32_' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/tenants/current_early_checkin: + get: + summary: returns the early checkin limit for the current domain (Host header) + tags: + - Tenants + operationId: Tenants_current_early_checkin + parameters: [] + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Int64' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + /api/staff/v1/tenants/{id}/early_checkin: + get: + summary: returns the early checkin limit for the selected tenant + tags: + - Tenants + operationId: Tenants_show_early_checkin + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Int64' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + post: + summary: updates the early checkin limit for the tenant provided + tags: + - Tenants + operationId: Tenants_update_early_checkin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Int64' + required: true + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: Int64 + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Int64' + 429: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 400: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 403: + description: Forbidden + 404: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 511: + description: Network Authentication Required + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 406: + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 415: + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ContentError' + 422: + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Application__ValidationError' + 500: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' + 405: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/Application__CommonError' +components: + schemas: + PlaceOS__Model__Booking: + type: object + properties: + booking_type: + type: string + nullable: true + booking_start: + type: integer + format: Int64 + nullable: true + booking_end: + type: integer + format: Int64 + nullable: true + timezone: + type: string + nullable: true + asset_id: + type: string nullable: true - timezone: - type: string - nullable: true - asset_id: - type: string - nullable: true user_id: type: string nullable: true @@ -10407,7 +11204,10 @@ components: recurrence_end: type: integer format: Int64 - description: an optional end date for booking recurrances + description: an optional end date for booking recurrences + nullable: true + all_day: + type: boolean nullable: true tenant_id: type: integer @@ -10427,6 +11227,10 @@ components: nullable: true String: type: string + Hash_String__JSON__Any_: + type: object + additionalProperties: + type: object PlaceOS__Model__Guest: type: object properties: @@ -10756,6 +11560,15 @@ components: type: string nullable: true nullable: true + visibility: + type: string + enum: + - normal + - personal + - public + - private + - confidential + nullable: true mailbox: type: string nullable: true @@ -10853,1297 +11666,1657 @@ components: - installed_ui_devices - version nullable: true - extension_data: - type: object + extension_data: + type: object + nullable: true + recurring_master_id: + type: string + nullable: true + setup_time: + type: integer + format: Int64 + nullable: true + breakdown_time: + type: integer + format: Int64 + nullable: true + setup_event_id: + type: string + nullable: true + breakdown_event_id: + type: string + nullable: true + permission: + type: string + enum: + - private + - open + - public + nullable: true + required: + - event_start + - attendees + - hide_attendees + - private + - all_day + - attachments + nullable: true + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + PlaceCalendar__Calendar: + type: object + properties: + id: + type: string + nullable: true + ref: + type: string + nullable: true + summary: + type: string + primary: + type: boolean + can_edit: + type: boolean + nullable: true + required: + - summary + - primary + Calendars__Availability: + type: object + properties: + id: + type: string + system: + type: object + properties: + created_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + id: + type: string + name: + type: string + zones: + type: array + items: + type: string + modules: + type: array + items: + type: string + description: + type: string + nullable: true + email: + type: string nullable: true - recurring_master_id: + display_name: type: string nullable: true - setup_time: + timezone: + type: string + nullable: true + code: + type: string + nullable: true + type: + type: string + nullable: true + map_id: + type: string + nullable: true + images: + type: array + items: + type: string + nullable: true + capacity: type: integer - format: Int64 + format: Int32 + features: + type: array + items: + type: string + bookable: + type: boolean + public: + type: boolean nullable: true - breakdown_time: + installed_ui_devices: + type: integer + format: Int32 + support_url: + type: string + nullable: true + version: + type: integer + format: Int32 + required: + - created_at + - updated_at + - id + - name + - zones + - modules + - capacity + - features + - bookable + - installed_ui_devices + - version + nullable: true + availability: + type: array + items: + type: object + properties: + status: + type: string + enum: + - busy + - free + starts_at: + type: integer + format: Int64 + ends_at: + type: integer + format: Int64 + timezone: + type: string + required: + - status + - starts_at + - ends_at + - timezone + nullable: true + required: + - id + PlaceCalendar__Event: + type: object + properties: + event_start: + type: integer + format: Int64 + event_end: + type: integer + format: Int64 + nullable: true + id: + type: string + nullable: true + recurring_event_id: + type: string + nullable: true + host: + type: string + nullable: true + title: + type: string + nullable: true + body: + type: string + nullable: true + attendees: + type: array + items: + type: object + properties: + name: + type: string + email: + type: string + response_status: + type: string + nullable: true + resource: + type: boolean + nullable: true + organizer: + type: boolean + nullable: true + checked_in: + type: boolean + nullable: true + visit_expected: + type: boolean + nullable: true + extension_data: + type: object + nullable: true + preferred_name: + type: string + nullable: true + phone: + type: string + nullable: true + organisation: + type: string + nullable: true + photo: + type: string + nullable: true + notes: + type: string + nullable: true + banned: + type: boolean + nullable: true + dangerous: + type: boolean + nullable: true + required: + - name + - email + hide_attendees: + type: boolean + location: + type: string + nullable: true + private: + type: boolean + all_day: + type: boolean + timezone: + type: string + nullable: true + recurring: + type: boolean + nullable: true + created: + type: string + format: date-time + nullable: true + updated: + type: string + format: date-time + nullable: true + attachments: + type: array + items: + type: object + properties: + id: + type: string + nullable: true + name: + type: string + content_type: + type: string + nullable: true + content_bytes: + type: string + size: + type: integer + format: Int32 + nullable: true + required: + - name + - content_bytes + recurrence: + type: object + properties: + range_start: + type: integer + format: Int64 + range_end: + type: integer + format: Int64 + interval: type: integer - format: Int64 - nullable: true - setup_event_id: - type: string - nullable: true - breakdown_event_id: - type: string - nullable: true - permission: + format: Int32 + pattern: type: string - enum: - - private - - open - - public + days_of_week: + type: array + items: + type: string nullable: true required: - - event_start - - attendees - - hide_attendees - - private - - all_day - - attachments + - range_start + - range_end + - interval + - pattern nullable: true - id: - type: integer - format: Int64 + status: + type: string nullable: true - created_at: - type: integer - format: Int64 + creator: + type: string nullable: true - updated_at: - type: integer - format: Int64 + ical_uid: + type: string nullable: true - PlaceCalendar__Calendar: - type: object - properties: - id: + online_meeting_provider: type: string nullable: true - ref: + online_meeting_phones: + type: array + items: + type: string + nullable: true + online_meeting_url: type: string nullable: true - summary: + online_meeting_sip: type: string - primary: - type: boolean - can_edit: - type: boolean nullable: true - required: - - summary - - primary - Calendars__Availability: - type: object - properties: - id: + online_meeting_pin: type: string - system: + nullable: true + online_meeting_id: + type: string + nullable: true + extended_properties: type: object - properties: - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - id: - type: string - name: - type: string - zones: - type: array - items: + additionalProperties: + type: string + nullable: true + nullable: true + visibility: + type: string + enum: + - normal + - personal + - public + - private + - confidential + nullable: true + mailbox: + type: string + nullable: true + calendar: + type: string + nullable: true + system_id: + type: string + nullable: true + system: + anyOf: + - type: object + properties: + id: type: string - modules: - type: array - items: + required: + - id + - type: object + properties: + created_at: type: string - description: - type: string - nullable: true - email: - type: string - nullable: true - display_name: - type: string - nullable: true - timezone: - type: string - nullable: true - code: - type: string - nullable: true - type: - type: string - nullable: true - map_id: - type: string - nullable: true - images: - type: array - items: + format: date-time + updated_at: type: string - nullable: true - capacity: - type: integer - format: Int32 - features: - type: array - items: + format: date-time + id: type: string - bookable: - type: boolean - public: - type: boolean - nullable: true - installed_ui_devices: - type: integer - format: Int32 - support_url: - type: string - nullable: true - version: - type: integer - format: Int32 - required: - - created_at - - updated_at - - id - - name - - zones - - modules - - capacity - - features - - bookable - - installed_ui_devices - - version - nullable: true - availability: - type: array - items: - type: object - properties: - status: + name: type: string - enum: - - busy - - free - starts_at: + zones: + type: array + items: + type: string + modules: + type: array + items: + type: string + description: + type: string + nullable: true + email: + type: string + nullable: true + display_name: + type: string + nullable: true + timezone: + type: string + nullable: true + code: + type: string + nullable: true + type: + type: string + nullable: true + map_id: + type: string + nullable: true + images: + type: array + items: + type: string + nullable: true + capacity: type: integer - format: Int64 - ends_at: + format: Int32 + features: + type: array + items: + type: string + bookable: + type: boolean + public: + type: boolean + nullable: true + installed_ui_devices: type: integer - format: Int64 - timezone: + format: Int32 + support_url: type: string + nullable: true + version: + type: integer + format: Int32 required: - - status - - starts_at - - ends_at - - timezone + - created_at + - updated_at + - id + - name + - zones + - modules + - capacity + - features + - bookable + - installed_ui_devices + - version nullable: true - required: - - id - PlaceCalendar__Event: - type: object - properties: - event_start: + extension_data: + type: object + nullable: true + recurring_master_id: + type: string + nullable: true + setup_time: type: integer format: Int64 - event_end: + nullable: true + breakdown_time: type: integer format: Int64 nullable: true - id: - type: string - nullable: true - recurring_event_id: - type: string - nullable: true - host: + setup_event_id: type: string nullable: true - title: + breakdown_event_id: type: string nullable: true - body: + permission: type: string + enum: + - private + - open + - public nullable: true - attendees: - type: array - items: + required: + - event_start + - attendees + - hide_attendees + - private + - all_day + - attachments + _PlaceCalendar__Event__Attendee___PlaceOS__Model__Attendee_: + anyOf: + - type: object + properties: + name: + type: string + email: + type: string + response_status: + type: string + nullable: true + resource: + type: boolean + nullable: true + organizer: + type: boolean + nullable: true + checked_in: + type: boolean + nullable: true + visit_expected: + type: boolean + nullable: true + extension_data: + type: object + nullable: true + preferred_name: + type: string + nullable: true + phone: + type: string + nullable: true + organisation: + type: string + nullable: true + photo: + type: string + nullable: true + notes: + type: string + nullable: true + banned: + type: boolean + nullable: true + dangerous: + type: boolean + nullable: true + required: + - name + - email + - type: object + properties: + checked_in: + type: boolean + nullable: true + visit_expected: + type: boolean + nullable: true + guest_id: + type: integer + format: Int64 + nullable: true + tenant_id: + type: integer + format: Int64 + nullable: true + event_id: + type: integer + format: Int64 + nullable: true + booking_id: + type: integer + format: Int64 + nullable: true + email: + type: string + nullable: true + name: + type: string + nullable: true + preferred_name: + type: string + nullable: true + phone: + type: string + nullable: true + organisation: + type: string + nullable: true + notes: + type: string + nullable: true + photo: + type: string + nullable: true + event: type: object properties: - name: + event_start: + type: integer + format: Int64 + event_end: + type: integer + format: Int64 + nullable: true + id: type: string - email: + nullable: true + recurring_event_id: type: string - response_status: + nullable: true + host: type: string nullable: true - resource: - type: boolean + title: + type: string nullable: true - organizer: + body: + type: string + nullable: true + attendees: + type: array + items: + type: object + properties: + name: + type: string + email: + type: string + response_status: + type: string + nullable: true + resource: + type: boolean + nullable: true + organizer: + type: boolean + nullable: true + checked_in: + type: boolean + nullable: true + visit_expected: + type: boolean + nullable: true + extension_data: + type: object + nullable: true + preferred_name: + type: string + nullable: true + phone: + type: string + nullable: true + organisation: + type: string + nullable: true + photo: + type: string + nullable: true + notes: + type: string + nullable: true + banned: + type: boolean + nullable: true + dangerous: + type: boolean + nullable: true + required: + - name + - email + hide_attendees: type: boolean + location: + type: string nullable: true - checked_in: + private: + type: boolean + all_day: type: boolean + timezone: + type: string nullable: true - visit_expected: + recurring: type: boolean nullable: true - extension_data: + created: + type: string + format: date-time + nullable: true + updated: + type: string + format: date-time + nullable: true + attachments: + type: array + items: + type: object + properties: + id: + type: string + nullable: true + name: + type: string + content_type: + type: string + nullable: true + content_bytes: + type: string + size: + type: integer + format: Int32 + nullable: true + required: + - name + - content_bytes + recurrence: type: object + properties: + range_start: + type: integer + format: Int64 + range_end: + type: integer + format: Int64 + interval: + type: integer + format: Int32 + pattern: + type: string + days_of_week: + type: array + items: + type: string + nullable: true + required: + - range_start + - range_end + - interval + - pattern nullable: true - preferred_name: - type: string - nullable: true - phone: + status: type: string nullable: true - organisation: + creator: type: string nullable: true - photo: + ical_uid: type: string nullable: true - notes: + online_meeting_provider: type: string nullable: true - banned: - type: boolean - nullable: true - dangerous: - type: boolean + online_meeting_phones: + type: array + items: + type: string nullable: true - required: - - name - - email - hide_attendees: - type: boolean - location: - type: string - nullable: true - private: - type: boolean - all_day: - type: boolean - timezone: - type: string - nullable: true - recurring: - type: boolean - nullable: true - created: - type: string - format: date-time - nullable: true - updated: - type: string - format: date-time - nullable: true - attachments: - type: array - items: - type: object - properties: - id: + online_meeting_url: type: string nullable: true - name: - type: string - content_type: + online_meeting_sip: type: string nullable: true - content_bytes: + online_meeting_pin: type: string - size: - type: integer - format: Int32 nullable: true - required: - - name - - content_bytes - recurrence: - type: object - properties: - range_start: - type: integer - format: Int64 - range_end: - type: integer - format: Int64 - interval: - type: integer - format: Int32 - pattern: - type: string - days_of_week: - type: array - items: - type: string - nullable: true - required: - - range_start - - range_end - - interval - - pattern - nullable: true - status: - type: string - nullable: true - creator: - type: string - nullable: true - ical_uid: - type: string - nullable: true - online_meeting_provider: - type: string - nullable: true - online_meeting_phones: - type: array - items: - type: string - nullable: true - online_meeting_url: - type: string - nullable: true - online_meeting_sip: - type: string - nullable: true - online_meeting_pin: - type: string - nullable: true - online_meeting_id: - type: string - nullable: true - extended_properties: - type: object - additionalProperties: - type: string - nullable: true - nullable: true - mailbox: - type: string - nullable: true - calendar: - type: string - nullable: true - system_id: - type: string - nullable: true - system: - anyOf: - - type: object - properties: - id: - type: string - required: - - id - - type: object - properties: - created_at: + online_meeting_id: type: string - format: date-time - updated_at: + nullable: true + extended_properties: + type: object + additionalProperties: + type: string + nullable: true + nullable: true + visibility: type: string - format: date-time - id: + enum: + - normal + - personal + - public + - private + - confidential + nullable: true + mailbox: type: string - name: + nullable: true + calendar: type: string - zones: - type: array - items: - type: string - modules: - type: array - items: - type: string - description: + nullable: true + system_id: type: string nullable: true - email: - type: string + system: + anyOf: + - type: object + properties: + id: + type: string + required: + - id + - type: object + properties: + created_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + id: + type: string + name: + type: string + zones: + type: array + items: + type: string + modules: + type: array + items: + type: string + description: + type: string + nullable: true + email: + type: string + nullable: true + display_name: + type: string + nullable: true + timezone: + type: string + nullable: true + code: + type: string + nullable: true + type: + type: string + nullable: true + map_id: + type: string + nullable: true + images: + type: array + items: + type: string + nullable: true + capacity: + type: integer + format: Int32 + features: + type: array + items: + type: string + bookable: + type: boolean + public: + type: boolean + nullable: true + installed_ui_devices: + type: integer + format: Int32 + support_url: + type: string + nullable: true + version: + type: integer + format: Int32 + required: + - created_at + - updated_at + - id + - name + - zones + - modules + - capacity + - features + - bookable + - installed_ui_devices + - version + nullable: true + extension_data: + type: object nullable: true - display_name: + recurring_master_id: type: string nullable: true - timezone: - type: string + setup_time: + type: integer + format: Int64 nullable: true - code: - type: string + breakdown_time: + type: integer + format: Int64 nullable: true - type: + setup_event_id: type: string nullable: true - map_id: + breakdown_event_id: type: string nullable: true - images: - type: array - items: - type: string - nullable: true - capacity: - type: integer - format: Int32 - features: - type: array - items: - type: string - bookable: - type: boolean - public: - type: boolean - nullable: true - installed_ui_devices: - type: integer - format: Int32 - support_url: + permission: type: string + enum: + - private + - open + - public nullable: true - version: - type: integer - format: Int32 required: - - created_at - - updated_at - - id - - name - - zones - - modules - - capacity - - features - - bookable - - installed_ui_devices - - version - nullable: true - extension_data: - type: object - nullable: true - recurring_master_id: - type: string - nullable: true - setup_time: + - event_start + - attendees + - hide_attendees + - private + - all_day + - attachments + nullable: true + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + JSON__Any: + type: object + _PlaceCalendar__Event___Nil_: + type: object + properties: + event_start: type: integer format: Int64 - nullable: true - breakdown_time: + event_end: type: integer format: Int64 nullable: true - setup_event_id: + id: type: string nullable: true - breakdown_event_id: + recurring_event_id: type: string nullable: true - permission: + host: type: string - enum: - - private - - open - - public nullable: true - required: - - event_start - - attendees - - hide_attendees - - private - - all_day - - attachments - _PlaceCalendar__Event__Attendee___PlaceOS__Model__Attendee_: - anyOf: - - type: object - properties: - name: - type: string - email: - type: string - response_status: - type: string - nullable: true - resource: - type: boolean - nullable: true - organizer: - type: boolean - nullable: true - checked_in: - type: boolean - nullable: true - visit_expected: - type: boolean - nullable: true - extension_data: - type: object - nullable: true - preferred_name: - type: string - nullable: true - phone: - type: string - nullable: true - organisation: - type: string - nullable: true - photo: - type: string - nullable: true - notes: - type: string - nullable: true - banned: - type: boolean - nullable: true - dangerous: - type: boolean - nullable: true - required: - - name - - email - - type: object - properties: - checked_in: - type: boolean - nullable: true - visit_expected: - type: boolean - nullable: true - guest_id: - type: integer - format: Int64 - nullable: true - tenant_id: - type: integer - format: Int64 - nullable: true - event_id: - type: integer - format: Int64 - nullable: true - booking_id: - type: integer - format: Int64 - nullable: true - email: - type: string - nullable: true - name: - type: string - nullable: true - preferred_name: - type: string - nullable: true - phone: - type: string - nullable: true - organisation: - type: string - nullable: true - notes: - type: string - nullable: true - photo: - type: string - nullable: true - event: + title: + type: string + nullable: true + body: + type: string + nullable: true + attendees: + type: array + items: type: object properties: - event_start: - type: integer - format: Int64 - event_end: - type: integer - format: Int64 - nullable: true - id: + name: + type: string + email: + type: string + response_status: type: string nullable: true - recurring_event_id: + resource: + type: boolean + nullable: true + organizer: + type: boolean + nullable: true + checked_in: + type: boolean + nullable: true + visit_expected: + type: boolean + nullable: true + extension_data: + type: object + nullable: true + preferred_name: type: string nullable: true - host: + phone: type: string nullable: true - title: + organisation: type: string nullable: true - body: + photo: type: string nullable: true - attendees: - type: array - items: - type: object - properties: - name: - type: string - email: - type: string - response_status: - type: string - nullable: true - resource: - type: boolean - nullable: true - organizer: - type: boolean - nullable: true - checked_in: - type: boolean - nullable: true - visit_expected: - type: boolean - nullable: true - extension_data: - type: object - nullable: true - preferred_name: - type: string - nullable: true - phone: - type: string - nullable: true - organisation: - type: string - nullable: true - photo: - type: string - nullable: true - notes: - type: string - nullable: true - banned: - type: boolean - nullable: true - dangerous: - type: boolean - nullable: true - required: - - name - - email - hide_attendees: - type: boolean - location: + notes: type: string nullable: true - private: - type: boolean - all_day: + banned: type: boolean - timezone: - type: string nullable: true - recurring: + dangerous: type: boolean nullable: true - created: + required: + - name + - email + hide_attendees: + type: boolean + location: + type: string + nullable: true + private: + type: boolean + all_day: + type: boolean + timezone: + type: string + nullable: true + recurring: + type: boolean + nullable: true + created: + type: string + format: date-time + nullable: true + updated: + type: string + format: date-time + nullable: true + attachments: + type: array + items: + type: object + properties: + id: type: string - format: date-time nullable: true - updated: + name: + type: string + content_type: type: string - format: date-time nullable: true - attachments: - type: array - items: - type: object - properties: - id: - type: string - nullable: true - name: - type: string - content_type: - type: string - nullable: true - content_bytes: - type: string - size: - type: integer - format: Int32 - nullable: true - required: - - name - - content_bytes - recurrence: - type: object - properties: - range_start: - type: integer - format: Int64 - range_end: - type: integer - format: Int64 - interval: - type: integer - format: Int32 - pattern: - type: string - days_of_week: - type: array - items: - type: string - nullable: true - required: - - range_start - - range_end - - interval - - pattern + content_bytes: + type: string + size: + type: integer + format: Int32 nullable: true - status: + required: + - name + - content_bytes + recurrence: + type: object + properties: + range_start: + type: integer + format: Int64 + range_end: + type: integer + format: Int64 + interval: + type: integer + format: Int32 + pattern: + type: string + days_of_week: + type: array + items: + type: string + nullable: true + required: + - range_start + - range_end + - interval + - pattern + nullable: true + status: + type: string + nullable: true + creator: + type: string + nullable: true + ical_uid: + type: string + nullable: true + online_meeting_provider: + type: string + nullable: true + online_meeting_phones: + type: array + items: + type: string + nullable: true + online_meeting_url: + type: string + nullable: true + online_meeting_sip: + type: string + nullable: true + online_meeting_pin: + type: string + nullable: true + online_meeting_id: + type: string + nullable: true + extended_properties: + type: object + additionalProperties: + type: string + nullable: true + nullable: true + visibility: + type: string + enum: + - normal + - personal + - public + - private + - confidential + nullable: true + mailbox: + type: string + nullable: true + calendar: + type: string + nullable: true + system_id: + type: string + nullable: true + system: + anyOf: + - type: object + properties: + id: type: string - nullable: true - creator: + required: + - id + - type: object + properties: + created_at: type: string - nullable: true - ical_uid: + format: date-time + updated_at: type: string - nullable: true - online_meeting_provider: + format: date-time + id: type: string - nullable: true - online_meeting_phones: + name: + type: string + zones: type: array items: type: string - nullable: true - online_meeting_url: + modules: + type: array + items: + type: string + description: type: string nullable: true - online_meeting_sip: + email: type: string nullable: true - online_meeting_pin: + display_name: type: string nullable: true - online_meeting_id: + timezone: type: string nullable: true - extended_properties: - type: object - additionalProperties: - type: string - nullable: true - nullable: true - mailbox: + code: type: string nullable: true - calendar: + type: type: string nullable: true - system_id: + map_id: type: string nullable: true - system: - anyOf: - - type: object - properties: - id: - type: string - required: - - id - - type: object - properties: - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - id: - type: string - name: - type: string - zones: - type: array - items: - type: string - modules: - type: array - items: - type: string - description: - type: string - nullable: true - email: - type: string - nullable: true - display_name: - type: string - nullable: true - timezone: - type: string - nullable: true - code: - type: string - nullable: true - type: - type: string - nullable: true - map_id: - type: string - nullable: true - images: - type: array - items: - type: string - nullable: true - capacity: - type: integer - format: Int32 - features: - type: array - items: - type: string - bookable: - type: boolean - public: - type: boolean - nullable: true - installed_ui_devices: - type: integer - format: Int32 - support_url: - type: string - nullable: true - version: - type: integer - format: Int32 - required: - - created_at - - updated_at - - id - - name - - zones - - modules - - capacity - - features - - bookable - - installed_ui_devices - - version - nullable: true - extension_data: - type: object - nullable: true - recurring_master_id: - type: string + images: + type: array + items: + type: string nullable: true - setup_time: + capacity: type: integer - format: Int64 + format: Int32 + features: + type: array + items: + type: string + bookable: + type: boolean + public: + type: boolean nullable: true - breakdown_time: + installed_ui_devices: type: integer - format: Int64 - nullable: true - setup_event_id: - type: string - nullable: true - breakdown_event_id: - type: string - nullable: true - permission: + format: Int32 + support_url: type: string - enum: - - private - - open - - public nullable: true + version: + type: integer + format: Int32 required: - - event_start - - attendees - - hide_attendees - - private - - all_day - - attachments - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 - nullable: true - JSON__Any: - type: object - _PlaceCalendar__Event___Nil_: + - created_at + - updated_at + - id + - name + - zones + - modules + - capacity + - features + - bookable + - installed_ui_devices + - version + nullable: true + extension_data: + type: object + nullable: true + recurring_master_id: + type: string + nullable: true + setup_time: + type: integer + format: Int64 + nullable: true + breakdown_time: + type: integer + format: Int64 + nullable: true + setup_event_id: + type: string + nullable: true + breakdown_event_id: + type: string + nullable: true + permission: + type: string + enum: + - private + - open + - public + nullable: true + required: + - event_start + - attendees + - hide_attendees + - private + - all_day + - attachments + nullable: true + Bool: + type: boolean + PlaceOS__Model__EventMetadata: type: object properties: + system_id: + type: string + nullable: true + event_id: + type: string + nullable: true + recurring_master_id: + type: string + nullable: true + ical_uid: + type: string + nullable: true + resource_master_id: + type: string + nullable: true + host_email: + type: string + nullable: true + resource_calendar: + type: string + nullable: true event_start: type: integer format: Int64 + nullable: true event_end: type: integer format: Int64 nullable: true - id: + cancelled: + type: boolean + nullable: true + ext_data: + type: object + nullable: true + setup_time: + type: integer + format: Int64 + nullable: true + breakdown_time: + type: integer + format: Int64 + nullable: true + setup_event_id: type: string nullable: true - recurring_event_id: + breakdown_event_id: type: string nullable: true - host: + permission: type: string + enum: + - private + - open + - public + description: The permission level for the event. Defaults to private. If + set to private, attendees must be invited.If set to open, users in the + same tenant can join. If set to public, the event is open for everyone + to join. nullable: true - title: + tenant_id: + type: integer + format: Int64 + nullable: true + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + PlaceCalendar__Group: + type: object + properties: + id: + type: string + name: + type: string + email: type: string nullable: true - body: + description: type: string nullable: true - attendees: - type: array - items: - type: object - properties: - name: - type: string - email: - type: string - response_status: - type: string - nullable: true - resource: - type: boolean - nullable: true - organizer: - type: boolean - nullable: true - checked_in: - type: boolean - nullable: true - visit_expected: - type: boolean - nullable: true - extension_data: - type: object - nullable: true - preferred_name: - type: string - nullable: true - phone: - type: string - nullable: true - organisation: - type: string - nullable: true - photo: - type: string - nullable: true - notes: - type: string - nullable: true - banned: - type: boolean - nullable: true - dangerous: - type: boolean - nullable: true - required: - - name - - email - hide_attendees: - type: boolean - location: + required: + - id + - name + PlaceCalendar__Member: + type: object + properties: + id: + type: string + name: type: string nullable: true - private: - type: boolean - all_day: - type: boolean - timezone: + email: + type: string + phone: type: string nullable: true - recurring: + username: + type: string + suspended: type: boolean nullable: true - created: + required: + - id + - email + - username + HealthCheck__BuildInfo: + type: object + properties: + commit: type: string - format: date-time - nullable: true - updated: + build_time: type: string - format: date-time - nullable: true - attachments: - type: array - items: - type: object - properties: - id: - type: string - nullable: true - name: - type: string - content_type: - type: string - nullable: true - content_bytes: - type: string - size: - type: integer - format: Int32 - nullable: true - required: - - name - - content_bytes - recurrence: + required: + - commit + - build_time + Office365__Room: + type: object + properties: + address: type: object properties: - range_start: - type: integer - format: Int64 - range_end: - type: integer - format: Int64 - interval: - type: integer - format: Int32 - pattern: + city: type: string - days_of_week: - type: array - items: - type: string nullable: true - required: - - range_start - - range_end - - interval - - pattern + state: + type: string + nullable: true + street: + type: string + nullable: true + countryOrRegion: + type: string + nullable: true + postalCode: + type: string + nullable: true + nullable: true + displayName: + type: string + geoCoordinates: + type: object + properties: + altitudeAccuracy: + type: number + format: Float64 + nullable: true + accuracy: + type: number + format: Float64 + nullable: true + altitude: + type: number + format: Float64 + nullable: true + latitude: + type: number + format: Float64 + nullable: true + longitude: + type: number + format: Float64 + nullable: true nullable: true - status: + id: + type: string + phone: type: string nullable: true - creator: + audioDeviceName: type: string nullable: true - ical_uid: + bookingType: type: string + enum: + - reserved + - standard nullable: true - online_meeting_provider: + building: type: string nullable: true - online_meeting_phones: - type: array - items: - type: string + capacity: + type: integer + format: Int32 nullable: true - online_meeting_url: + displayDeviceName: type: string nullable: true - online_meeting_sip: + emailAddress: type: string nullable: true - online_meeting_pin: + floorLabel: type: string nullable: true - online_meeting_id: + floorNumber: + type: integer + format: Int32 + nullable: true + isWheelChairAccessible: + type: boolean + nullable: true + label: type: string nullable: true - extended_properties: - type: object - additionalProperties: + nickname: + type: string + nullable: true + tags: + type: array + items: type: string - nullable: true nullable: true - mailbox: + videoDeviceName: type: string nullable: true - calendar: + required: + - displayName + - id + PlaceCalendar__User: + type: object + properties: + id: type: string nullable: true - system_id: + name: type: string nullable: true - system: - anyOf: - - type: object - properties: - id: - type: string - required: - - id - - type: object - properties: - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - id: - type: string - name: - type: string - zones: - type: array - items: - type: string - modules: - type: array - items: - type: string - description: - type: string - nullable: true - email: - type: string - nullable: true - display_name: - type: string - nullable: true - timezone: - type: string - nullable: true - code: - type: string - nullable: true - type: - type: string - nullable: true - map_id: - type: string - nullable: true - images: - type: array - items: - type: string - nullable: true - capacity: - type: integer - format: Int32 - features: - type: array - items: - type: string - bookable: - type: boolean - public: - type: boolean - nullable: true - installed_ui_devices: - type: integer - format: Int32 - support_url: - type: string - nullable: true - version: - type: integer - format: Int32 - required: - - created_at - - updated_at - - id - - name - - zones - - modules - - capacity - - features - - bookable - - installed_ui_devices - - version - nullable: true - extension_data: - type: object + email: + type: string nullable: true - recurring_master_id: + phone: type: string nullable: true - setup_time: - type: integer - format: Int64 + department: + type: string nullable: true - breakdown_time: - type: integer - format: Int64 + title: + type: string nullable: true - setup_event_id: + photo: type: string nullable: true - breakdown_event_id: + username: type: string nullable: true - permission: + office_location: type: string - enum: - - private - - open - - public nullable: true - required: - - event_start - - attendees - - hide_attendees - - private - - all_day - - attachments - nullable: true - Bool: - type: boolean - PlaceOS__Model__EventMetadata: + suspended: + type: boolean + nullable: true + PlaceOS__Model__Survey: type: object properties: - system_id: + title: type: string nullable: true - event_id: + description: type: string nullable: true - recurring_master_id: + trigger: type: string + enum: + - none + - reserved + - checkedin + - checkedout + - noshow + - rejected + - cancelled + - ended + - visitor_checkedin + - visitor_checkedout + description: 'Triggers on booking states: RESERVED, CHECKEDIN, CHECKEDOUT, + REJECTED, CANCELLED, VISITOR_CHECKEDIN, VISITOR_CHECKEDOUT' nullable: true - ical_uid: + zone_id: type: string nullable: true - resource_master_id: + building_id: type: string nullable: true - host_email: - type: string + pages: + type: array + items: + type: object + properties: + title: + type: string + description: + type: string + nullable: true + question_order: + type: array + items: + type: integer + format: Int64 + required: + - title + - question_order nullable: true - resource_calendar: + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + PlaceOS__Model__Survey__Answer: + type: object + properties: + type: type: string nullable: true - event_start: + answer_json: + type: object + nullable: true + question_id: type: integer format: Int64 nullable: true - event_end: + survey_id: type: integer format: Int64 nullable: true - cancelled: - type: boolean - nullable: true - ext_data: - type: object + id: + type: integer + format: Int64 nullable: true - setup_time: + created_at: type: integer format: Int64 nullable: true - breakdown_time: + updated_at: type: integer format: Int64 nullable: true - setup_event_id: + Array_PlaceOS__Model__Survey__Answer_: + type: array + items: + type: object + properties: + type: + type: string + nullable: true + answer_json: + type: object + nullable: true + question_id: + type: integer + format: Int64 + nullable: true + survey_id: + type: integer + format: Int64 + nullable: true + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + PlaceOS__Model__Survey__Invitation: + type: object + properties: + token: type: string nullable: true - breakdown_event_id: + email: type: string nullable: true - permission: - type: string - enum: - - private - - open - - public - description: The permission level for the event. Defaults to private. If - set to private, attendees must be invited.If set to open, users in the - same tenant can join. If set to public, the event is open for everyone - to join. + sent: + type: boolean nullable: true - tenant_id: + survey_id: type: integer format: Int64 nullable: true @@ -12159,385 +13332,2907 @@ components: type: integer format: Int64 nullable: true - PlaceCalendar__Group: + PlaceOS__Model__Survey__Question: type: object properties: - id: - type: string - name: - type: string - email: + title: type: string nullable: true description: type: string nullable: true - required: - - id - - name - PlaceCalendar__Member: - type: object - properties: - id: - type: string - name: + type: type: string nullable: true - email: - type: string - phone: - type: string + options: + type: object nullable: true - username: - type: string - suspended: + required: type: boolean nullable: true - required: - - id - - email - - username - HealthCheck__BuildInfo: + choices: + type: object + nullable: true + max_rating: + type: integer + format: Int32 + nullable: true + tags: + type: array + items: + type: string + nullable: true + deleted_at: + type: integer + format: Int64 + nullable: true + id: + type: integer + format: Int64 + nullable: true + created_at: + type: integer + format: Int64 + nullable: true + updated_at: + type: integer + format: Int64 + nullable: true + Office365__ChatMessageList: type: object properties: - commit: + '@odata.context': type: string - build_time: + '@odata.count': + type: integer + format: Int32 + '@odata.nextLink': type: string + nullable: true + value: + type: array + items: + type: object + properties: + attachments: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + nullable: true + content: + type: string + nullable: true + contentType: + type: string + nullable: true + contentUrl: + type: string + nullable: true + teamsAppId: + type: string + nullable: true + thumbnailUrl: + type: string + nullable: true + required: + - id + nullable: true + body: + type: object + properties: + content: + type: string + nullable: true + contentType: + type: string + nullable: true + chatId: + type: string + nullable: true + channelIdentity: + type: object + properties: + channelId: + type: string + teamId: + type: string + required: + - channelId + - teamId + nullable: true + createdDateTime: + type: string + format: date-time + nullable: true + deletedDateTime: + type: string + format: date-time + nullable: true + etag: + type: string + nullable: true + from: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + userIdentityType: + type: string + nullable: true + required: + - id + nullable: true + nullable: true + id: + type: string + nullable: true + importance: + type: string + nullable: true + lastModifiedDateTime: + type: string + format: date-time + nullable: true + lastEditedDateTime: + type: string + format: date-time + nullable: true + locale: + type: string + nullable: true + mentions: + type: array + items: + type: object + properties: + id: + type: integer + format: Int32 + nullable: true + mentioned: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + conversation: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + conversationIdentityType: + type: string + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true + mentionText: + type: string + nullable: true + nullable: true + messageHistory: + type: array + items: + type: object + properties: + actions: + type: string + enum: + - reaction_added + - reaction_removed + - action_undefined + - unknown_future_value + modifiedDateTime: + type: string + format: date-time + nullable: true + reaction: + type: object + properties: + createdDateTime: + type: string + nullable: true + displayName: + type: string + nullable: true + reactionContentUrl: + type: string + nullable: true + reactionType: + type: string + nullable: true + user: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true + nullable: true + required: + - actions + nullable: true + messageType: + type: string + enum: + - message + - chat_event + - typing + - unknown_future_value + - system_event_message + nullable: true + policyViolation: + type: object + properties: + dlpAction: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true + justificationText: + type: string + nullable: true + policyTip: + type: object + properties: + complianceUrl: + type: string + nullable: true + generalText: + type: string + nullable: true + matchedConditionDescriptions: + type: array + items: + type: string + nullable: true + nullable: true + userAction: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true + verdictDetails: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true + nullable: true + reactions: + type: array + items: + type: object + properties: + createdDateTime: + type: string + nullable: true + displayName: + type: string + nullable: true + reactionContentUrl: + type: string + nullable: true + reactionType: + type: string + nullable: true + user: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true + nullable: true + replyToId: + type: string + nullable: true + subject: + type: string + nullable: true + summary: + type: string + nullable: true + webUrl: + type: string + nullable: true + required: + - body required: - - commit - - build_time - Office365__Room: + - '@odata.context' + - '@odata.count' + - value + Office365__ChatMessage: type: object properties: - address: + attachments: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + nullable: true + content: + type: string + nullable: true + contentType: + type: string + nullable: true + contentUrl: + type: string + nullable: true + teamsAppId: + type: string + nullable: true + thumbnailUrl: + type: string + nullable: true + required: + - id + nullable: true + body: type: object properties: - city: - type: string - nullable: true - state: - type: string - nullable: true - street: - type: string - nullable: true - countryOrRegion: + content: type: string nullable: true - postalCode: + contentType: type: string nullable: true - nullable: true - displayName: + chatId: type: string - geoCoordinates: + nullable: true + channelIdentity: type: object properties: - altitudeAccuracy: - type: number - format: Float64 - nullable: true - accuracy: - type: number - format: Float64 - nullable: true - altitude: - type: number - format: Float64 - nullable: true - latitude: - type: number - format: Float64 - nullable: true - longitude: - type: number - format: Float64 - nullable: true - nullable: true - id: - type: string - phone: - type: string - nullable: true - audioDeviceName: - type: string - nullable: true - bookingType: - type: string - enum: - - reserved - - standard - nullable: true - building: - type: string - nullable: true - capacity: - type: integer - format: Int32 - nullable: true - displayDeviceName: - type: string - nullable: true - emailAddress: - type: string + channelId: + type: string + teamId: + type: string + required: + - channelId + - teamId nullable: true - floorLabel: + createdDateTime: type: string + format: date-time nullable: true - floorNumber: - type: integer - format: Int32 - nullable: true - isWheelChairAccessible: - type: boolean - nullable: true - label: + deletedDateTime: type: string + format: date-time nullable: true - nickname: + etag: type: string nullable: true - tags: - type: array - items: - type: string - nullable: true - videoDeviceName: - type: string + from: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + userIdentityType: + type: string + nullable: true + required: + - id + nullable: true nullable: true - required: - - displayName - - id - PlaceCalendar__User: - type: object - properties: id: type: string nullable: true - name: - type: string - nullable: true - email: - type: string - nullable: true - phone: - type: string - nullable: true - department: - type: string - nullable: true - title: - type: string - nullable: true - photo: - type: string - nullable: true - username: - type: string - nullable: true - office_location: - type: string - nullable: true - suspended: - type: boolean - nullable: true - PlaceOS__Model__Survey: - type: object - properties: - title: - type: string - nullable: true - description: - type: string - nullable: true - trigger: - type: string - enum: - - none - - reserved - - checkedin - - checkedout - - noshow - - rejected - - cancelled - - ended - - visitor_checkedin - - visitor_checkedout - description: 'Triggers on booking states: RESERVED, CHECKEDIN, CHECKEDOUT, - REJECTED, CANCELLED, VISITOR_CHECKEDIN, VISITOR_CHECKEDOUT' + importance: + type: string nullable: true - zone_id: + lastModifiedDateTime: type: string + format: date-time nullable: true - building_id: + lastEditedDateTime: type: string + format: date-time nullable: true - pages: + locale: + type: string + nullable: true + mentions: type: array items: type: object properties: - title: + id: + type: integer + format: Int32 + nullable: true + mentioned: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + conversation: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + conversationIdentityType: + type: string + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true + mentionText: type: string - description: + nullable: true + nullable: true + messageHistory: + type: array + items: + type: object + properties: + actions: + type: string + enum: + - reaction_added + - reaction_removed + - action_undefined + - unknown_future_value + modifiedDateTime: type: string + format: date-time + nullable: true + reaction: + type: object + properties: + createdDateTime: + type: string + nullable: true + displayName: + type: string + nullable: true + reactionContentUrl: + type: string + nullable: true + reactionType: + type: string + nullable: true + user: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true nullable: true - question_order: - type: array - items: - type: integer - format: Int64 required: - - title - - question_order - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 + - actions nullable: true - PlaceOS__Model__Survey__Answer: - type: object - properties: - type: + messageType: type: string + enum: + - message + - chat_event + - typing + - unknown_future_value + - system_event_message nullable: true - answer_json: + policyViolation: type: object + properties: + dlpAction: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true + justificationText: + type: string + nullable: true + policyTip: + type: object + properties: + complianceUrl: + type: string + nullable: true + generalText: + type: string + nullable: true + matchedConditionDescriptions: + type: array + items: + type: string + nullable: true + nullable: true + userAction: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true + verdictDetails: + type: string + enum: + - none + - notify_sender + - block_access + - block_access_external + nullable: true nullable: true - question_id: - type: integer - format: Int64 - nullable: true - survey_id: - type: integer - format: Int64 - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 - nullable: true - Array_PlaceOS__Model__Survey__Answer_: - type: array - items: - type: object - properties: - type: - type: string - nullable: true - answer_json: + reactions: + type: array + items: type: object - nullable: true - question_id: - type: integer - format: Int64 - nullable: true - survey_id: - type: integer - format: Int64 - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 - nullable: true - PlaceOS__Model__Survey__Invitation: - type: object - properties: - token: - type: string + properties: + createdDateTime: + type: string + nullable: true + displayName: + type: string + nullable: true + reactionContentUrl: + type: string + nullable: true + reactionType: + type: string + nullable: true + user: + type: object + properties: + application: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + device: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + user: + type: object + properties: + id: + type: string + displayName: + type: string + nullable: true + tenantId: + type: string + nullable: true + thumbnails: + type: object + properties: + id: + type: string + nullable: true + large: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + medium: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + small: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + source: + type: object + properties: + height: + type: integer + format: Int32 + nullable: true + width: + type: integer + format: Int32 + nullable: true + content: + type: string + nullable: true + url: + type: string + nullable: true + sourceItemId: + type: string + nullable: true + nullable: true + nullable: true + required: + - id + nullable: true + nullable: true nullable: true - email: + replyToId: type: string nullable: true - sent: - type: boolean - nullable: true - survey_id: - type: integer - format: Int64 - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 - nullable: true - PlaceOS__Model__Survey__Question: - type: object - properties: - title: + subject: type: string nullable: true - description: + summary: type: string nullable: true - type: + webUrl: type: string nullable: true - options: - type: object - nullable: true - required: - type: boolean - nullable: true - choices: - type: object - nullable: true - max_rating: - type: integer - format: Int32 - nullable: true - tags: - type: array - items: - type: string - nullable: true - deleted_at: - type: integer - format: Int64 - nullable: true - id: - type: integer - format: Int64 - nullable: true - created_at: - type: integer - format: Int64 - nullable: true - updated_at: - type: integer - format: Int64 - nullable: true + required: + - body PlaceOS__Model__Tenant__Responder: type: object properties: @@ -12937,7 +16632,10 @@ components: recurrence_end: type: integer format: Int64 - description: an optional end date for booking recurrances + description: an optional end date for booking recurrences + nullable: true + all_day: + type: boolean nullable: true tenant_id: type: integer diff --git a/spec/controllers/events_spec.cr b/spec/controllers/events_spec.cr index 294bb91e..2e7b9dfd 100644 --- a/spec/controllers/events_spec.cr +++ b/spec/controllers/events_spec.cr @@ -4,7 +4,7 @@ require "./helpers/guest_helper" EVENTS_BASE = Events.base_route -describe Events do +describe Events, tags: ["event"] do before_each do EventMetadata.truncate Guest.truncate @@ -1143,4 +1143,46 @@ describe Events do request_body[0]["extension_data"]["magic_number"].should eq(77) end end + + describe "#approve_all" do + it "approves all events" do + EventsHelper.stub_create_endpoints + + WebMock.stub(:get, "https://graph.microsoft.com/v1.0/users/room1%40example.com/calendar/events/AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ_xSJHh14kbXHWhBwB08dwEuoS_QYSBDzuv558sAAAAAAENAAB08dwEuoS_QYSBDzuv558sAACGVOwUAAA%3D") + .to_return(body: File.read("./spec/fixtures/events/o365/create.json")) + + WebMock.stub(:get, "https://graph.microsoft.com/v1.0/users/dev%40acaprojects.com/calendars") + .to_return(body: File.read("./spec/fixtures/calendars/o365/show.json")) + + # Create event + + req_body = EventsHelper.create_event_input + + created_event = JSON.parse(client.post(EVENTS_BASE, headers: headers, body: req_body).body) + created_event_id = created_event["id"].to_s + WebMock.stub(:get, /^https:\/\/graph\.microsoft\.com\/v1\.0\/users\/[^\/]*\/calendar\/calendarView\?.*/) + .to_return(EventsHelper.event_query_response(created_event_id)) + + WebMock.stub(:patch, "https://graph.microsoft.com/v1.0/users/room1%40example.com/calendar/events/AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ_xSJHh14kbXHWhBwB08dwEuoS_QYSBDzuv558sAAAAAAENAAB08dwEuoS_QYSBDzuv558sAAB8_ORMAAA%3D").to_return(body: File.read("./spec/fixtures/events/o365/update_with_accepted.json")) + + WebMock.stub(:post, "https://graph.microsoft.com/v1.0/%24batch") + .to_return(body: File.read("./spec/fixtures/events/o365/batch_index.json")) + + # ensure the user has permissions to update the event + system_id = "sys-rJQQlR4Cn7" + EventsHelper.stub_permissions_check(system_id) + + # approve + WebMock.stub(:post, "https://graph.microsoft.com/v1.0/users/room1%40example.com/calendar/events/#{URI.encode_path(created_event_id)}/accept") + .to_return({sucess: true}.to_json) + + starting = (Time.unix(created_event["event_start"].as_i) - 20.minutes).to_unix + ending = (Time.unix(created_event["event_end"].as_i) + 20.minutes).to_unix + + request = client.post("#{EVENTS_BASE}/approve_all?system_ids=#{system_id}&period_start=#{starting}&period_end=#{ending}", headers: headers) + request.status_code.should eq(200) + request_body = Array(String).from_json(request.body) + request_body[0].should eq(created_event_id) + end + end end diff --git a/spec/fixtures/events/o365/batch_index.json b/spec/fixtures/events/o365/batch_index.json index 915b8686..3726f30b 100644 --- a/spec/fixtures/events/o365/batch_index.json +++ b/spec/fixtures/events/o365/batch_index.json @@ -1,94 +1,99 @@ { - "responses": [{ - "id": 0, - "status": 200, - "body": { - "value": [{ - "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('dev%40acaprojects.com')/calendar/events/$entity", - "@odata.etag": "W/\"dPHcBLqEvkGEgQ87r+efLAAAfPJXoQ==\"", - "id": "AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ_xSJHh14kbXHWhBwB08dwEuoS_QYSBDzuv558sAAAAAAENAAB08dwEuoS_QYSBDzuv558sAAB8_ORMAAA=", - "createdDateTime": "2020-08-31T04:20:56.2768516Z", - "lastModifiedDateTime": "2020-08-31T04:20:56.7915535Z", - "changeKey": "dPHcBLqEvkGEgQ87r+efLAAAfPJXoQ==", - "categories": [], - "originalStartTimeZone": "Australia/Sydney", - "originalEndTimeZone": "Australia/Sydney", - "iCalUId": "040000008200E00074C5B7101A82E008000000008CD0441F4E7FD60100000000000000001000000087A54520ECE5BD4AA552D826F3718E7F", - "reminderMinutesBeforeStart": 15, - "isReminderOn": true, - "hasAttachments": false, - "subject": "My new meeting", - "bodyPreview": "The quick brown fox jumps over the lazy dog", - "importance": "normal", - "sensitivity": "private", - "isAllDay": false, - "isCancelled": false, - "isOrganizer": true, - "responseRequested": true, - "seriesMasterId": null, - "showAs": "busy", - "type": "singleInstance", - "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ%2BxSJHh14kbXHWhBwB08dwEuoS%2BQYSBDzuv558sAAAAAAENAAB08dwEuoS%2BQYSBDzuv558sAAB8%2BORMAAA%3D&exvsurl=1&path=/calendar/item", - "onlineMeetingUrl": null, - "isOnlineMeeting": false, - "onlineMeetingProvider": "unknown", - "allowNewTimeProposals": true, - "recurrence": null, - "onlineMeeting": null, - "responseStatus": { - "response": "organizer", - "time": "0001-01-01T00:00:00Z" + "responses": [ + { + "id": 0, + "status": 200, + "body": { + "value": [ + { + "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('dev%40acaprojects.com')/calendar/events/$entity", + "@odata.etag": "W/\"dPHcBLqEvkGEgQ87r+efLAAAfPJXoQ==\"", + "id": "AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ_xSJHh14kbXHWhBwB08dwEuoS_QYSBDzuv558sAAAAAAENAAB08dwEuoS_QYSBDzuv558sAACGVOwUAAA=", + "createdDateTime": "2020-08-31T04:20:56.2768516Z", + "lastModifiedDateTime": "2020-08-31T04:20:56.7915535Z", + "changeKey": "dPHcBLqEvkGEgQ87r+efLAAAfPJXoQ==", + "categories": [], + "originalStartTimeZone": "Australia/Sydney", + "originalEndTimeZone": "Australia/Sydney", + "iCalUId": "040000008200E00074C5B7101A82E008000000008CD0441F4E7FD60100000000000000001000000087A54520ECE5BD4AA552D826F3718E7F", + "reminderMinutesBeforeStart": 15, + "isReminderOn": true, + "hasAttachments": false, + "subject": "My new meeting", + "bodyPreview": "The quick brown fox jumps over the lazy dog", + "importance": "normal", + "sensitivity": "private", + "isAllDay": false, + "isCancelled": false, + "isOrganizer": true, + "responseRequested": true, + "seriesMasterId": null, + "showAs": "busy", + "type": "singleInstance", + "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADE3YmQxMGQ2LTRmZDgtNDljYy1hNDg1LWM0NzFmMGI0ZTQ3YgBGAAAAAADFYQb3DJ%2BxSJHh14kbXHWhBwB08dwEuoS%2BQYSBDzuv558sAAAAAAENAAB08dwEuoS%2BQYSBDzuv558sAAB8%2BORMAAA%3D&exvsurl=1&path=/calendar/item", + "onlineMeetingUrl": null, + "isOnlineMeeting": false, + "onlineMeetingProvider": "unknown", + "allowNewTimeProposals": true, + "recurrence": null, + "onlineMeeting": null, + "responseStatus": { + "response": "organizer", + "time": "0001-01-01T00:00:00Z" + }, + "body": { + "contentType": "text", + "content": "The quick brown fox jumps over the lazy dog" + }, + "start": { + "dateTime": "2020-08-31T10:00:00.0000000", + "timeZone": "Australia/Sydney" + }, + "end": { + "dateTime": "2020-08-31T10:30:00.0000000", + "timeZone": "Australia/Sydney" + }, + "location": { + "displayName": "", + "locationType": "default", + "uniqueIdType": "unknown", + "address": {}, + "coordinates": {} + }, + "locations": [], + "attendees": [ + { + "type": "required", + "status": { + "response": "none", + "time": "0001-01-01T00:00:00Z" }, - "body": { - "contentType": "text", - "content": "The quick brown fox jumps over the lazy dog" - }, - "start": { - "dateTime": "2020-08-31T10:00:00.0000000", - "timeZone": "Australia/Sydney" - }, - "end": { - "dateTime": "2020-08-31T10:30:00.0000000", - "timeZone": "Australia/Sydney" - }, - "location": { - "displayName": "", - "locationType": "default", - "uniqueIdType": "unknown", - "address": {}, - "coordinates": {} + "emailAddress": { + "name": "Toby Carvan", + "address": "testing@redant.com.au" + } + }, + { + "type": "required", + "status": { + "response": "none", + "time": "0001-01-01T00:00:00Z" }, - "locations": [], - "attendees": [{ - "type": "required", - "status": { - "response": "none", - "time": "0001-01-01T00:00:00Z" - }, - "emailAddress": { - "name": "Toby Carvan", - "address": "testing@redant.com.au" - } - }, - { - "type": "required", - "status": { - "response": "none", - "time": "0001-01-01T00:00:00Z" - }, - "emailAddress": { - "name": "Amit Gaur", - "address": "amit@redant.com.au" - } - } - ], - "organizer": { - "emailAddress": { - "name": "Developer", - "address": "dev@acaprojects.onmicrosoft.com" - } + "emailAddress": { + "name": "Amit Gaur", + "address": "amit@redant.com.au" } - }] - } - }] + } + ], + "organizer": { + "emailAddress": { + "name": "Developer", + "address": "dev@acaprojects.onmicrosoft.com" + } + } + } + ] + } + } + ] } diff --git a/src/controllers/events.cr b/src/controllers/events.cr index 6cf84c94..2f97a574 100644 --- a/src/controllers/events.cr +++ b/src/controllers/events.cr @@ -1520,6 +1520,74 @@ class Events < Application client.accept_event(cal_id, id: event_id, calendar_id: cal_id) end + @[AC::Route::POST("/approve_all")] + def approve_all( + @[AC::Param::Info(name: "period_start", description: "event period start as a unix epoch", example: "1661725146")] + starting : Int64, + @[AC::Param::Info(name: "period_end", description: "event period end as a unix epoch", example: "1661743123")] + ending : Int64, + @[AC::Param::Info(description: "a comma seperated list of calendar ids, recommend using `system_id` for resource calendars", example: "user@org.com,room2@resource.org.com")] + calendars : String? = nil, + @[AC::Param::Info(description: "a comma seperated list of zone ids", example: "zone-123,zone-456")] + zone_ids : String? = nil, + @[AC::Param::Info(description: "a comma seperated list of event spaces", example: "sys-1234,sys-5678")] + system_ids : String? = nil, + @[AC::Param::Info(name: "ical_uid", description: "the ical uid of the event you are looking for", example: "sqvitruh3ho3mrq896tplad4v8")] + icaluid : String? = nil, + ) : Array(String) + period_start = Time.unix(starting) + period_end = Time.unix(ending) + + # Get matching calendar IDs - only systems with emails, not user calendars + calendars = matching_calendar_ids(calendars, zone_ids, system_ids, allow_default: false) + + # Filter to only systems (calendars that have associated system objects) + system_calendars = calendars.select { |calendar_id, system| system } + + return [] of String if system_calendars.empty? + + Log.context.set(calendar_size: system_calendars.size.to_s) + + # Grab events in batches + requests = [] of HTTP::Request + mappings = system_calendars.map { |calendar_id, system| + request = client.list_events_request( + user.email, + calendar_id, + period_start: period_start, + period_end: period_end, + showDeleted: false, + ical_uid: icaluid, + ) + Log.debug { "requesting events from: #{request.path}" } + requests << request + {request, calendar_id, system.not_nil!} + } + + responses = client.batch(user.email, requests) + + approved_event_ids = [] of String + + # Process the response (map requests back to responses) + mappings.each do |(request, calendar_id, system)| + begin + events = client.list_events(user.email, responses[request]) + events.each do |event| + next unless event_id = event.id + + # TODO: This should be a batch request. + # TODO: Find out if using the ical UID is better than the event ID for recurring events. + client.accept_event(calendar_id, id: event_id, calendar_id: calendar_id) + approved_event_ids << event_id + end + rescue error + Log.warn(exception: error) { "error fetching/approving events for #{calendar_id}" } + end + end + + approved_event_ids + end + # rejects / declines the meeting on behalf of the event space @[AC::Route::POST("/:id/reject")] def reject(