# Booking

## GET /api/events/list-events

>

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/events/list-events":{"get":{"tags":["Booking"],"operationId":"Events_List","parameters":[{"schema":{"type":"string"},"name":"date","in":"query","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}}}}}}
```

## POST /api/events/{event}

> Add a new event.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/events/{event}":{"post":{"tags":["Booking"],"summary":"Add a new event.","operationId":"Events_PostEvent","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"event","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddEvent"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddEvent"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddEvent"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddEvent"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AddEvent"}},"text/html":{"schema":{"$ref":"#/components/schemas/AddEvent"}}},"required":true}}}},"components":{"schemas":{"AddEvent":{"type":"object","properties":{"EventVenue":{"format":"uuid","type":"string"},"EventStart":{"format":"date-time","type":"string"},"EventExamType":{"type":"string"},"EventExamFormat":{"type":"string"},"EventBillingCode":{"type":"string"},"RegistrationLimit":{"format":"int32","type":"integer"}}}}}}
```

## POST /api/events/{event}/cancel

>

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/events/{event}/cancel":{"post":{"tags":["Booking"],"operationId":"Events_PostEvent","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"event","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelEvent"}},"text/json":{"schema":{"$ref":"#/components/schemas/CancelEvent"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CancelEvent"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CancelEvent"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CancelEvent"}},"text/html":{"schema":{"$ref":"#/components/schemas/CancelEvent"}}},"required":true}}}},"components":{"schemas":{"CancelEvent":{"type":"object","properties":{"Reason":{"type":"string"}}}}}}
```

## GET /api/events/classes

>

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/events/classes":{"get":{"tags":["Booking"],"operationId":"Events_Sessions","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"organization","in":"query","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}}}}}}
```

## GET /api/events/scrap-paper

>

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/events/scrap-paper":{"get":{"tags":["Booking"],"operationId":"Events_CreateExamScrapPaper","parameters":[{"schema":{"type":"string"},"name":"id","in":"query","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}}}}}}
```

## Count registrations

> Count the number of event registration attendance records that match your search criteria.&#x20;> \\
>
> \
> Please note the date and time parameter assumes the \<see href="[https://en.wikipedia.org/wiki/ISO\\\_8601">ISO](https://en.wikipedia.org/wiki/ISO\\_8601">ISO) 8601\</see>&#x20;> \
> standard format. For example, "2002-09-01T23:10:50+00:00" means "Sep 1, 2002 at 11:10:50 PM UTC"

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/count":{"post":{"tags":["Booking"],"summary":"Count registrations","description":"Count the number of event registration attendance records that match your search criteria. \r\n\r\nPlease note the date and time parameter assumes the <see href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO 8601</see> \r\nstandard format. For example, \"2002-09-01T23:10:50+00:00\" means \"Sep 1, 2002 at 11:10:50 PM UTC\"","operationId":"Registrations_Count","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/json":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/html":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}}},"required":true}}}},"components":{"schemas":{"AttendanceCriteria":{"type":"object","properties":{"Name":{"type":"string"},"Email":{"type":"string"},"Code":{"type":"string"},"LastChangeTimeSince":{"format":"date-time","type":"string"},"LastChangeTimeBefore":{"format":"date-time","type":"string"}}}}}}
```

## Search registrations

> Find registration attendance information that matches your search criteria.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/search":{"post":{"tags":["Booking"],"summary":"Search registrations","description":"Find registration attendance information that matches your search criteria.","operationId":"Registrations_Search","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/json":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}},"text/html":{"schema":{"$ref":"#/components/schemas/AttendanceCriteria"}}},"required":true}}}},"components":{"schemas":{"AttendanceCriteria":{"type":"object","properties":{"Name":{"type":"string"},"Email":{"type":"string"},"Code":{"type":"string"},"LastChangeTimeSince":{"format":"date-time","type":"string"},"LastChangeTimeBefore":{"format":"date-time","type":"string"}}}}}}
```

## GET /api/registrations/{registration}

> Retrieve a registration

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}":{"get":{"tags":["Booking"],"summary":"Retrieve a registration","operationId":"Registrations_GetRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a registration

> The registration identifier must be provided as part of the request URL.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}":{"delete":{"tags":["Booking"],"summary":"Delete a registration","description":"The registration identifier must be provided as part of the request URL.","operationId":"Registrations_DeleteRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}}}}}}
```

## Create a registration

> Add a new registration based on a lookup of the event using its venue and start date/time rather than its identifier, and based on a&#x20;> \
> lookup of the assessment form based on its code rather than its identifier.&#x20;> \\
>
> \
> This method for adding a new registration is lax (as opposed to strict) in that it does not specify a unique identifier for the event or&#x20;> \
> the assessment. Instead, it allows the caller to assume a matching event may or may not exist.If no matching event is found then a new&#x20;> \
> event is created automatically. Similarly, it allows the caller to assume at least one published, non-bilingual assessment form exists&#x20;> \
> with a matching assessment form code. If no matching assessment is found, then it returns 400 Bad Request with an error message to&#x20;> \
> indicate the failed match.&#x20;> \\
>
> \
> The registration ID is provided as part of the request URL.&#x20;> \\
>
> \
> The following parameters must be provided in the request body:> \
> \- \*\*EventVenue\*\*: The venue ID.> \
> \- \*\*EventStart\*\*: The date when the event starts.> \
> \- \*\*EventExamType\*\*: The exam type, it is required if the exam does not exist and a new one should be created.> \
> \- \*\*EventExamFormat\*\*: The exam format, it is required if the exam does not exist and a new one should be created> \
> \- \*\*EventBillingCode\*\*: the exam billing code, it is required if the exam does not exist and a new one should be created.> \
> \- \*\*Learner\*\*: ID of the learner that will be registered.> \
> \- \*\*Assessment\*\*: Assessment form code identifying the assessment to be assigned to the registration> \
> \- \*\*Accommodations\*\*: (Optional) An array of accommodations for the new registration> \\
>
> \
> The date and time parameter uses ISO 8601 standard to specify format.&#x20;> \
> For example "2002-09-01T23:10:50+00:00" means "Sep 1, 2002 at 11:10:50 PM UTC"> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Accommodation type cannot be empty.> \
> \- Learner not found.> \
> \- Assessment form not found.> \
> \- Registration already exists. You cannot add a new registration with the same identifier.\*\*> \
> \- EventExamType not specified.> \
> \- Invalid EventExamType value.> \
> \- EventBillingCode not specified.> \
> \- Invalid EventBillingCode value.> \
> \- EventExamFormat not specified.> \
> \- Invalid EventExamFormat value.> \
> \- Invalid EventStartTime value.> \
> \- Venue not found.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/register-lax":{"post":{"tags":["Booking"],"summary":"Create a registration","description":"Add a new registration based on a lookup of the event using its venue and start date/time rather than its identifier, and based on a \r\nlookup of the assessment form based on its code rather than its identifier. \r\n\r\nThis method for adding a new registration is lax (as opposed to strict) in that it does not specify a unique identifier for the event or \r\nthe assessment. Instead, it allows the caller to assume a matching event may or may not exist.If no matching event is found then a new \r\nevent is created automatically. Similarly, it allows the caller to assume at least one published, non-bilingual assessment form exists \r\nwith a matching assessment form code. If no matching assessment is found, then it returns 400 Bad Request with an error message to \r\nindicate the failed match. \r\n\r\nThe registration ID is provided as part of the request URL. \r\n\r\nThe following parameters must be provided in the request body:\r\n- **EventVenue**: The venue ID.\r\n- **EventStart**: The date when the event starts.\r\n- **EventExamType**: The exam type, it is required if the exam does not exist and a new one should be created.\r\n- **EventExamFormat**: The exam format, it is required if the exam does not exist and a new one should be created\r\n- **EventBillingCode**: the exam billing code, it is required if the exam does not exist and a new one should be created.\r\n- **Learner**: ID of the learner that will be registered.\r\n- **Assessment**: Assessment form code identifying the assessment to be assigned to the registration\r\n- **Accommodations**: (Optional) An array of accommodations for the new registration\r\n\r\nThe date and time parameter uses ISO 8601 standard to specify format. \r\nFor example \"2002-09-01T23:10:50+00:00\" means \"Sep 1, 2002 at 11:10:50 PM UTC\"\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Accommodation type cannot be empty.\r\n- Learner not found.\r\n- Assessment form not found.\r\n- Registration already exists. You cannot add a new registration with the same identifier.**\r\n- EventExamType not specified.\r\n- Invalid EventExamType value.\r\n- EventBillingCode not specified.\r\n- Invalid EventBillingCode value.\r\n- EventExamFormat not specified.\r\n- Invalid EventExamFormat value.\r\n- Invalid EventStartTime value.\r\n- Venue not found.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}},"text/html":{"schema":{"$ref":"#/components/schemas/AddRegistrationLax"}}},"required":true}}}},"components":{"schemas":{"AddRegistrationLax":{"type":"object","properties":{"EventVenue":{"format":"uuid","type":"string"},"EventStart":{"format":"date-time","type":"string"},"EventExamType":{"type":"string"},"EventExamFormat":{"type":"string"},"EventBillingCode":{"type":"string"},"Learner":{"format":"uuid","type":"string"},"LearnerRegistrantType":{"type":"string"},"Assessment":{"type":"string"},"Accommodations":{"type":"array","items":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}}}},"GrantRegistrationAccommodation":{"type":"object","properties":{"Type":{"type":"string"},"Name":{"type":"string"},"TimeExtension":{"format":"int32","type":"integer"}}}}}}
```

## Transfer a registration

> Transfer an existing registration from one event to another event based on a lookup of the event using its venue and start date/time&#x20;> \
> rather than its identifier. This method for transferring a registration is lax(as opposed to strict) in that it does not specify a unique&#x20;> \
> identifier for the event. Instead, it allows the caller to assume a matching event may or may not exist.If no match is found then a new&#x20;> \
> event is created automatically. Note the assessment form can NOT be modified in a transfer. The registration ID is provided as part of&#x20;> \
> the request URL.The following parameters must be provided in the request body:> \
> \<para>EventVenue. The venue ID.\</para>\<para>EventStart. The date when the event starts.\</para>\<para>EventExamType.The exam type, it is required if the exam does not exist and a new one should be created.\</para>\<para>Learner.ID of the learner that will be registered.\</para>\<para>Reason.The reason for the transfer.\</para>> \
> The date and time parameter uses ISO 8601 standard to specify format.&#x20;> \
> For example "2002-09-01T23:10:50+00:00" means "Sep 1, 2002 at 11:10:50 PM UTC"> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Registration not found.> \
> \- Registration has no assessment form.> \
> \- Learner does not belong to registration.> \
> \- Registration already assigned to event.> \
> \- Learner not found.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/transfer-lax":{"post":{"tags":["Booking"],"summary":"Transfer a registration","description":"Transfer an existing registration from one event to another event based on a lookup of the event using its venue and start date/time \r\nrather than its identifier. This method for transferring a registration is lax(as opposed to strict) in that it does not specify a unique \r\nidentifier for the event. Instead, it allows the caller to assume a matching event may or may not exist.If no match is found then a new \r\nevent is created automatically. Note the assessment form can NOT be modified in a transfer. The registration ID is provided as part of \r\nthe request URL.The following parameters must be provided in the request body:\r\n<para>EventVenue. The venue ID.</para><para>EventStart. The date when the event starts.</para><para>EventExamType.The exam type, it is required if the exam does not exist and a new one should be created.</para><para>Learner.ID of the learner that will be registered.</para><para>Reason.The reason for the transfer.</para>\r\nThe date and time parameter uses ISO 8601 standard to specify format. \r\nFor example \"2002-09-01T23:10:50+00:00\" means \"Sep 1, 2002 at 11:10:50 PM UTC\"\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Registration not found.\r\n- Registration has no assessment form.\r\n- Learner does not belong to registration.\r\n- Registration already assigned to event.\r\n- Learner not found.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}},"text/json":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}},"application/xml":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}},"text/xml":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}},"text/html":{"schema":{"$ref":"#/components/schemas/TransferRegistrationLax"}}},"required":true}}}},"components":{"schemas":{"TransferRegistrationLax":{"type":"object","properties":{"EventVenue":{"format":"uuid","type":"string"},"EventStart":{"format":"date-time","type":"string"},"EventExamType":{"type":"string"},"Learner":{"format":"uuid","type":"string"},"Reason":{"type":"string"},"Accommodations":{"type":"array","items":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}}}},"GrantRegistrationAccommodation":{"type":"object","properties":{"Type":{"type":"string"},"Name":{"type":"string"},"TimeExtension":{"format":"int32","type":"integer"}}}}}}
```

## Cancel a registration

> The registration ID is provided as part of the request URL. The following parameters must be provided in the request body:> \
> \<para>Reason - Short description of the reason for the cancellation.\</para>> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Registration not found.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/cancel":{"post":{"tags":["Booking"],"summary":"Cancel a registration","description":"The registration ID is provided as part of the request URL. The following parameters must be provided in the request body:\r\n<para>Reason - Short description of the reason for the cancellation.</para>\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Registration not found.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}},"text/json":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}},"text/html":{"schema":{"$ref":"#/components/schemas/CancelRegistration"}}},"required":true}}}},"components":{"schemas":{"CancelRegistration":{"type":"object","properties":{"Reason":{"type":"string"}}}}}}
```

## Assign an assessment to a registration

> Change the assessment form assigned to an existing event registration. If the registration does not exist, then return a 404 Not Found&#x20;> \
> error. Allow the caller to assume at least one published, non-bilingual match for the assessment form code in the request.If no matching&#x20;> \
> assessment is found, then return 400 Bad Request with an error message to indicate the failed match. The registration ID is provided as&#x20;> \
> part of the request URL. The following parameters must be provided in the request body:> \
> \<para>Assessment - Form code identifying the assessment to be assigned to the registration.\</para>> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Registration not found.> \
> \- Assessment form not found.> \
> \- Assessment already assigned to registration.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/change-assessment":{"post":{"tags":["Booking"],"summary":"Assign an assessment to a registration","description":"Change the assessment form assigned to an existing event registration. If the registration does not exist, then return a 404 Not Found \r\nerror. Allow the caller to assume at least one published, non-bilingual match for the assessment form code in the request.If no matching \r\nassessment is found, then return 400 Bad Request with an error message to indicate the failed match. The registration ID is provided as \r\npart of the request URL. The following parameters must be provided in the request body:\r\n<para>Assessment - Form code identifying the assessment to be assigned to the registration.</para>\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Registration not found.\r\n- Assessment form not found.\r\n- Assessment already assigned to registration.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}},"text/json":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}},"text/xml":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}},"text/html":{"schema":{"$ref":"#/components/schemas/ChangeAssessment"}}},"required":true}}}},"components":{"schemas":{"ChangeAssessment":{"type":"object","properties":{"Assessment":{"type":"string"}}}}}}
```

## Add an accommodation to a registration

> Grant an accommodation to an existing event registration. If the registration does not exist, then return a 404 Not Found error. The&#x20;> \
> registration ID is provided as part of the request URL. The following parameters must be provided in the request body:> \
> \<para>Type - Uniquly identifies the type of accommodation\</para>\<para>Name - (optional) Short clarifying description\</para>\<para>TimeExtension - (optional) Time extension in minutes\</para>> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Registration not found.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/grant-accommodation":{"post":{"tags":["Booking"],"summary":"Add an accommodation to a registration","description":"Grant an accommodation to an existing event registration. If the registration does not exist, then return a 404 Not Found error. The \r\nregistration ID is provided as part of the request URL. The following parameters must be provided in the request body:\r\n<para>Type - Uniquly identifies the type of accommodation</para><para>Name - (optional) Short clarifying description</para><para>TimeExtension - (optional) Time extension in minutes</para>\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Registration not found.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}},"text/json":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}},"application/xml":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}},"text/xml":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}},"text/html":{"schema":{"$ref":"#/components/schemas/GrantRegistrationAccommodation"}}},"required":true}}}},"components":{"schemas":{"GrantRegistrationAccommodation":{"type":"object","properties":{"Type":{"type":"string"},"Name":{"type":"string"},"TimeExtension":{"format":"int32","type":"integer"}}}}}}
```

## Remove an accommodation from a registration

> Revoke an existing accommodation from an existing event registration. If the registration does not exist, then return a 404 Not Found&#x20;> \
> error. The registration ID is provided as part of the request URL. The request body MUST include the Type parameter, which identifies the> \
> type of accommodation.> \\
>
> \
> \*\*Potential Error Messages:\*\*> \\
>
> \
> Here are some of the errors that can be returned by this method when there is a problem with your request:> \\
>
> \
> \- Registration not found.

```json
{"openapi":"3.1.1","info":{"title":"API Version 1","version":"v1"},"servers":[{"url":"https://dev-demo.shiftiq.com"}],"paths":{"/api/registrations/{registration}/commands/revoke-accommodation":{"post":{"tags":["Booking"],"summary":"Remove an accommodation from a registration","description":"Revoke an existing accommodation from an existing event registration. If the registration does not exist, then return a 404 Not Found \r\nerror. The registration ID is provided as part of the request URL. The request body MUST include the Type parameter, which identifies the\r\ntype of accommodation.\r\n\r\n**Potential Error Messages:**\r\n\r\nHere are some of the errors that can be returned by this method when there is a problem with your request:\r\n\r\n- Registration not found.","operationId":"Registrations_PostRegistration","parameters":[{"schema":{"type":"string","format":"uuid"},"name":"registration","in":"path","required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}},"text/json":{"schema":{"type":"object"}},"application/xml":{"schema":{"type":"object"}},"text/xml":{"schema":{"type":"object"}},"text/html":{"schema":{"type":"object"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}},"text/json":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}},"application/xml":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}},"text/xml":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}},"text/html":{"schema":{"$ref":"#/components/schemas/RevokeRegistrationAccommodation"}}},"required":true}}}},"components":{"schemas":{"RevokeRegistrationAccommodation":{"type":"object","properties":{"Type":{"type":"string"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shiftiq.com/developers/api-v1/api-reference/booking.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
