Rotageek Gaps API
The Gaps API from Rotageek — 3 operation(s) for gaps.
The Gaps API from Rotageek — 3 operation(s) for gaps.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/rotageek:rotageek-gaps-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Rotageek API v1 Gaps API
description: Hello World!
contact:
name: Rotageek
email: office@rotageek.com
version: '1.0'
security:
- Bearer: []
tags:
- name: Gaps
paths:
/api/v1/gaps/assign:
post:
tags:
- Gaps
summary: Assign an existing gap to a user.
operationId: Gaps_AssignGap
requestBody:
description: AssignGapModel
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AssignGapModel'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AssignGapModel'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AssignGapModel'
application/*+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AssignGapModel'
responses:
'200':
description: OK
/api/v1/gaps/unassign:
post:
tags:
- Gaps
summary: Unassign a user from a Gap, given the gap's external id and the user's external…
operationId: Gaps_UnassignGap
requestBody:
description: UnassignGapModel
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.UnassignGapModel'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.UnassignGapModel'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.UnassignGapModel'
application/*+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.UnassignGapModel'
responses:
'200':
description: OK
/api/v1/gaps/locations:
get:
tags:
- Gaps
summary: Retrieve a paginated list of gap records for the given location
description: Retrieves a paginated list of gap records for the location filtered by parameters
operationId: Gaps_ListLocationRecords
parameters:
- name: locationIds
in: query
description: Target location ids
schema:
type: array
items:
type: string
- name: Sort
in: query
description: 'Sorting field for pages sorting. Default: Scheduler record start time'
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.GapRecordSortField'
- name: PageSize
in: query
description: Number of records per page (1-5000).
schema:
maximum: 5000
minimum: 1
type: integer
format: int32
- name: Page
in: query
description: 'Zero based page number. Default: 0'
schema:
maximum: 32767
minimum: 0
type: integer
format: int32
- name: Order
in: query
description: 'Sorting order. Default: Ascending'
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.SortOrder'
- name: from
in: query
description: 'Start date from which records be fetched. Default: no start date filtering'
schema:
type: string
format: date-time
- name: to
in: query
description: 'End date until which record will be fetched. Default: no end date filtering'
schema:
type: string
format: date-time
- name: addTasks
in: query
description: 'Load tasks for gaps. Default: false'
schema:
type: boolean
default: false
responses:
'200':
description: Paginated schedule records
content:
text/plain:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null'
'400':
description: Request parameters are invalid
'401':
description: Access to resource denied
'404':
description: Location was not found
'500':
description: Internal Server Error
components:
schemas:
Rotageek.AspNetCore.PublicApi.Models.UnassignGapModel:
type: object
properties:
gapId:
type:
- string
- 'null'
description: External ID of the gap we want to unassign the user from
userId:
type:
- string
- 'null'
description: External ID of the user we want to unassign from the gap
additionalProperties: false
description: Object container for the unassign gap action
Rotageek.AspNetCore.PublicApi.Models.GapRecordSortField:
enum:
- LocationId
- StartTime
type: string
description: Describes possible fields for location list ordering
Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique ID for this gap record
lastUpdated:
type: string
description: Date when this record was created
format: date-time
start:
type: string
description: Start date on the record
format: date-time
end:
type: string
description: End date on the record
format: date-time
locationId:
type:
- string
- 'null'
description: Unique location id associated with the record
notes:
type:
- string
- 'null'
description: Any notes associated with this gap
quantity:
type: integer
description: The number of gaps needed for this record
format: int32
isCritical:
type: boolean
description: Is this gap shift marked as critical?
tasks:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ScheduleTaskResponseModel'
description: Tasks that are associated with this record
passiveTasks:
type:
- array
- 'null'
items:
type: string
description: Passive tasks that are associated with this record
additionalProperties: false
description: Container object for gap record
Rotageek.AspNetCore.PublicApi.Models.PaginationModel:
type: object
properties:
pageNumber:
type: integer
description: Current number of the requested page (zero based)
format: int32
pageSizeRequested:
type: integer
description: Number of items that were requested
format: int32
itemsCount:
type: integer
description: Number of items fetched
format: int32
hasMore:
type: boolean
description: Flag informing that there are more records then was fetched with this request
additionalProperties: false
description: Container object for pagination information
Rotageek.AspNetCore.PublicApi.Models.GapUserModel:
type: object
properties:
userId:
type:
- string
- 'null'
description: Unique identifier for the user
locationId:
type:
- string
- 'null'
description: Unique identifier for the user's primary location
firstName:
type:
- string
- 'null'
description: User first name
surname:
type:
- string
- 'null'
description: User surname
additionalProperties: false
description: Object container for the user to assign the gap to
Rotageek.AspNetCore.PublicApi.Models.SortOrder:
enum:
- Ascending
- Descending
type: string
description: Describes items sort order
RotaGeek.Core.Enums.WorkerType:
enum:
- Substantive
- Bank
- Agency
type: string
? Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null
: type: object
properties:
items:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.GapRecordResponseModel'
description: Collection of items returned from the request
pagination:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.PaginationModel'
additionalProperties: false
description: Container for pagination information and items collection
Rotageek.AspNetCore.PublicApi.Models.AssignGapModel:
type: object
properties:
gapId:
type:
- string
- 'null'
description: Unique identifier for the gap to fill
cost:
type:
- number
- 'null'
description: Cost of the shift (in monetary terms)
format: double
workerType:
$ref: '#/components/schemas/RotaGeek.Core.Enums.WorkerType'
user:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.GapUserModel'
additionalProperties: false
description: Object container for a gap assignment action
Rotageek.AspNetCore.PublicApi.Models.ScheduleTaskResponseModel:
type: object
properties:
name:
type:
- string
- 'null'
description: Name of the task
start:
type: string
description: Task start
format: date-time
end:
type: string
description: Task end
format: date-time
locationId:
type:
- string
- 'null'
description: Unique location id associated with this task
room:
type:
- string
- 'null'
description: Name of room this task is to be performed in (if applicable)
additionalProperties: false
description: Container object for a task record
securitySchemes:
Bearer:
type: http
description: Paste the JWT access token returned by POST /api/v1/auth. Swagger adds the 'Bearer ' prefix automatically.
scheme: bearer
bearerFormat: JWT
oauth2:
type: oauth2
description: OAuth2 Password Grant
flows:
password:
tokenUrl: /api/v1/auth
scopes: {}