curl --request POST \
--url https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"decision": "keep",
"notes": "We have nobody else for the morning. Can you come for two hours?"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
decision: 'keep',
notes: 'We have nobody else for the morning. Can you come for two hours?'
})
};
fetch('https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision"
payload = {
"decision": "keep",
"notes": "We have nobody else for the morning. Can you come for two hours?"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"window_role_id": "<string>",
"person_id": "<string>",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"status": "booked",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"message": "<string>",
"tenant_id": "<string>",
"hours_logged": 1,
"signed_off_by": "<string>",
"signed_off_at": "2023-11-07T05:31:56Z",
"notes": "<string>",
"cancellation_requested_at": "2023-11-07T05:31:56Z",
"cancellation_reason": "<string>",
"cancellation_decision": "released",
"cancellation_decided_by": "<string>",
"cancellation_decided_at": "2023-11-07T05:31:56Z",
"cancellation_decision_notes": "<string>",
"custom_fields": "<string>"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Answer a cancellation request
Answers a volunteer’s request to be let off a shift. release gives the sign-up up and frees the time. keep puts it back to booked and records that they asked and were told no. The answer is recorded as given by the person who created the key. Only a sign-up in cancellation_requested can be answered. Needs write on Shifts.
A coordinator’s: needs write on Shifts AND read on People. A key without read on People is refused (403) with “Only a coordinator can do this: it needs permission to see People.”
curl --request POST \
--url https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"decision": "keep",
"notes": "We have nobody else for the morning. Can you come for two hours?"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
decision: 'keep',
notes: 'We have nobody else for the morning. Can you come for two hours?'
})
};
fetch('https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/shifts/bookings/{id}/decision"
payload = {
"decision": "keep",
"notes": "We have nobody else for the morning. Can you come for two hours?"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"window_role_id": "<string>",
"person_id": "<string>",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"status": "booked",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"message": "<string>",
"tenant_id": "<string>",
"hours_logged": 1,
"signed_off_by": "<string>",
"signed_off_at": "2023-11-07T05:31:56Z",
"notes": "<string>",
"cancellation_requested_at": "2023-11-07T05:31:56Z",
"cancellation_reason": "<string>",
"cancellation_decision": "released",
"cancellation_decided_by": "<string>",
"cancellation_decided_at": "2023-11-07T05:31:56Z",
"cancellation_decision_notes": "<string>",
"custom_fields": "<string>"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Path Parameters
The sign-up's ID.
Body
Response
The sign-up, as it now is.
The role on the shift this sign-up is for.
Who signed up.
The stretch of the shift they took.
booked: signed up. cancellation_requested: asked to be let off inside the notice period, waiting for a coordinator. cancelled: given up. attended and no_show: what happened on the day.
booked, cancellation_requested, cancelled, attended, no_show What was done, in words you can show.
Your organization's ID.
The hours worked, once recorded.
x >= 0Who signed off the hours: a person's record ID.
When the hours were signed off. Null until they are.
When they asked to be let off inside the notice period.
The reason they gave for giving it up, if any.
A coordinator's answer to the latest request: released (let off) or kept (still expected).
released, kept, null Who answered: a person's record ID.
What the coordinator wrote with the answer.
Your own sign-up fields, as JSON text.