RotaCloud MCP by usefulapi
Read RotaCloud shifts, attendance, leave, availability and payroll; create shifts and handle leave.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (2)
- LOWen rotacloud_list_holiday_allowances
- LOWen rotacloud_approve_leave_request
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"rotacloud": {
"url": "https://rotacloud.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://rotacloud.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (26)
🟢rotacloud_list_accounts(limit, offset)
The RotaCloud account(s) this API key belongs to: name, plan, time zone, employee count. GET /accounts.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_users(ids, locations, include_deleted, limit, offset)
List employees (users) with their level, roles, locations, contact details and pay settings. Use it to map user ids in shifts, leave and attendance to names. GET /users.
Esquema de entrada
{
"type": "object",
"properties": {
"ids": {
"description": "Only these user ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"locations": {
"description": "Only users in these location ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"include_deleted": {
"description": "Include deleted (former) users.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_get_user(user_id)
One employee by id. GET /users/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "RotaCloud user id."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_locations(ids, include_deleted, limit, offset)
List locations (sites/branches) with address, time zone and managers. GET /locations.
Esquema de entrada
{
"type": "object",
"properties": {
"ids": {
"description": "Only these location ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"include_deleted": {
"description": "Include deleted locations.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_roles(ids, include_deleted, limit, offset)
List job roles (positions) with colour, default break and pay rate. GET /roles.
Esquema de entrada
{
"type": "object",
"properties": {
"ids": {
"description": "Only these role ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"include_deleted": {
"description": "Include deleted roles.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_shifts(start, end, users, locations, roles, ...)
List rota shifts in a time range: start/end times (Unix seconds), break, assigned user (null = open shift), location, role, notes, published and acknowledged state. Filter by users, locations, roles, open or published. GET /shifts.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"end": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"users": {
"description": "Only shifts of these user ids (add 0 to include open shifts).",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"locations": {
"description": "Only shifts at these location ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"roles": {
"description": "Only shifts with these role ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"open": {
"description": "true = only open (unassigned) shifts, false = only assigned shifts.",
"type": "boolean"
},
"published": {
"description": "true = only published shifts, false = only unpublished (draft) shifts.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted shifts.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_get_shift(shift_id)
One shift by id. GET /shifts/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "RotaCloud shift id."
}
},
"required": [
"shift_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_swap_requests(include_deleted, limit, offset)
List shift swap requests with their status, the shifts and the users involved. GET /swap_requests.
Esquema de entrada
{
"type": "object",
"properties": {
"include_deleted": {
"description": "Include deleted swap requests.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_day_notes(start, end, location, limit, offset)
List day notes (notices pinned to rota dates, e.g. events or deliveries), optionally for one location. GET /day_notes.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"description": "First date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end": {
"description": "Last date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"location": {
"description": "Only notes for this location id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_attendance(start, end, users, locations, roles, ...)
List time & attendance records (clock-in/out times, breaks, minutes late, hours, approval state) in a time range. GET /attendance.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"end": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"users": {
"description": "Only these user ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"locations": {
"description": "Only these location ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"roles": {
"description": "Only these role ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"approved": {
"description": "true = only approved records, false = only unapproved.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted records.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_clocked_in(limit, offset)
Who is clocked in right now: user, location, role, clock-in time, minutes late and break state. GET /users_clocked_in.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_leave(start, end, year, users, types, ...)
List booked leave (holiday, sickness, etc.) with type, user, dates, hours and status. Filter by date range or leave year, users and leave types; pending/denied/expired requests are excluded unless asked for. GET /leave.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"description": "First date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end": {
"description": "Last date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"year": {
"description": "Leave year instead of a date range.",
"type": "integer",
"minimum": 2000,
"maximum": 2100
},
"users": {
"description": "Only these user ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"types": {
"description": "Only these leave type ids (see rotacloud_list_leave_types).",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"include_requested": {
"description": "Include pending leave requests.",
"type": "boolean"
},
"include_denied": {
"description": "Include denied leave requests.",
"type": "boolean"
},
"include_expired": {
"description": "Include expired leave requests.",
"type": "boolean"
},
"include_deleted": {
"description": "Include deleted leave.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_leave_requests(include_deleted, limit, offset)
List leave requests awaiting a decision (and past ones): user, leave type, dates, half days, the employee's message. GET /leave_requests.
Esquema de entrada
{
"type": "object",
"properties": {
"include_deleted": {
"description": "Include deleted requests.",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_get_leave_request(request_id)
One leave request by id, with the per-day breakdown. GET /leave_requests/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"request_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Leave request id."
}
},
"required": [
"request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_leave_types(limit, offset)
List leave types (Holiday, Sickness, Unpaid, ...) with id, short name and whether employees can request them. GET /leave_types.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_holiday_allowances(year, limit, offset)
Every employee's holiday allowance for a leave year (default and custom allowance, unit, carried over). GET /holiday_allowances/{year}.
Esquema de entrada
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 2000,
"maximum": 2100,
"description": "Leave year, e.g. 2026."
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"year"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_get_availability(start, end, users, limit, offset)
Employees' availability per date in a range (available / unavailable times). GET /availability.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date (yyyy-mm-dd)."
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date (yyyy-mm-dd)."
},
"users": {
"description": "Only these user ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_days_off(start, end, users, limit, offset)
Employees' scheduled days off per date in a range. GET /days_off.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date (yyyy-mm-dd)."
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date (yyyy-mm-dd)."
},
"users": {
"description": "Only these user ids.",
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_list_pay_periods(start, end, limit, offset)
List pay periods overlapping a date range (id, name, start/end date, locked). GET /pay_periods.
Esquema de entrada
{
"type": "object",
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date (yyyy-mm-dd)."
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date (yyyy-mm-dd)."
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rotacloud_get_payroll(pay_period_id, limit, offset)
Payroll for one pay period, per employee: pay settings, attendance worked, paid/unpaid leave, overtime and pay totals. Contains pay data. GET /pay_periods/{id}/payroll.
Esquema de entrada
{
"type": "object",
"properties": {
"pay_period_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Pay period id (from rotacloud_list_pay_periods)."
},
"limit": {
"description": "Results per page, 1-500 (RotaCloud may cap it lower; the reply's total and next_offset show what is left).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"offset": {
"description": "Index of the first result; pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"required": [
"pay_period_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_create_shift(start_time, end_time, location_id, user_id, role_id, ...)
WRITE: create a shift on the rota. Leave user_id out for an open shift. Unpublished by default (employees see it once published). POST /shifts.
Esquema de entrada
{
"type": "object",
"properties": {
"start_time": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"end_time": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"location_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Location id."
},
"user_id": {
"description": "Assigned user id; omit for an open shift.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"role_id": {
"description": "Role id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"minutes_break": {
"description": "Unpaid break in minutes.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"notes": {
"description": "Shift notes shown to the employee.",
"type": "string",
"maxLength": 2000
},
"published": {
"description": "Publish immediately (default false).",
"type": "boolean"
}
},
"required": [
"start_time",
"end_time",
"location_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_update_shift(shift_id, start_time, end_time, user_id, location_id, ...)
WRITE: change a shift's times, assignee, location, role, break, notes or published state. Only the fields you pass change. POST /shifts/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"shift_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Shift id."
},
"start_time": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"end_time": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
],
"description": "Unix timestamp (seconds), an ISO 8601 date (2026-10-12 = 00:00 UTC) or an ISO 8601 date-time with a time zone (2026-10-12T09:00:00+01:00 or ...Z)."
},
"user_id": {
"description": "New assignee; null makes it an open shift.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"location_id": {
"description": "New location id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"role_id": {
"description": "New role id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"minutes_break": {
"description": "Unpaid break in minutes.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"notes": {
"description": "Shift notes.",
"type": "string",
"maxLength": 2000
},
"published": {
"description": "Published state.",
"type": "boolean"
}
},
"required": [
"shift_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_publish_shifts(shift_ids)
WRITE: publish shifts so the assigned employees see them (and get notified). POST /shifts_published.
Esquema de entrada
{
"type": "object",
"properties": {
"shift_ids": {
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "Ids of the shifts to publish."
}
},
"required": [
"shift_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_create_leave_request(user_id, leave_type_id, start_date, end_date, start_am_pm, ...)
WRITE: submit a leave request on behalf of an employee (sent as that user, for a manager to approve). POST /leave_requests with the User header.
Esquema de entrada
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The employee requesting leave (the request is made as this user)."
},
"leave_type_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Leave type id (see rotacloud_list_leave_types; must be requestable)."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day (yyyy-mm-dd)."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day (yyyy-mm-dd)."
},
"start_am_pm": {
"description": "'pm' starts at midday (half day); default 'am'.",
"type": "string",
"enum": [
"am",
"pm"
]
},
"end_am_pm": {
"description": "'am' ends at midday (half day); default 'pm'.",
"type": "string",
"enum": [
"am",
"pm"
]
},
"message": {
"description": "Message from the employee to the manager.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"user_id",
"leave_type_id",
"start_date",
"end_date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_approve_leave_request(request_id, admin_message)
WRITE: approve a pending leave request (it becomes booked leave and the employee is notified). POST /leave_requests/{id}/approve.
Esquema de entrada
{
"type": "object",
"properties": {
"request_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Leave request id."
},
"admin_message": {
"description": "Message to the employee.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rotacloud_deny_leave_request(request_id, admin_message)
WRITE: deny a pending leave request (the employee is notified). POST /leave_requests/{id}/deny.
Esquema de entrada
{
"type": "object",
"properties": {
"request_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Leave request id."
},
"admin_message": {
"description": "Reason shown to the employee.",
"type": "string",
"maxLength": 2000
}
},
"required": [
"request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia