Rotageek Locations API
The Locations API from Rotageek — 3 operation(s) for locations.
The Locations API from Rotageek — 3 operation(s) for locations.
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-locations-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 Locations API
description: Hello World!
contact:
name: Rotageek
email: office@rotageek.com
version: '1.0'
security:
- Bearer: []
tags:
- name: Locations
paths:
/api/v1/locations:
get:
tags:
- Locations
summary: Retrieve locations list
description: Retrieves a paginated locations list of all locations in the system
operationId: Locations_ListLocations
parameters:
- name: Sort
in: query
description: 'Sorting field for pages sorting. Default: Location name'
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationSortField'
- name: Page
in: query
description: 'Zero based page number. Default: 0'
schema:
maximum: 32767
minimum: 0
type: integer
format: int32
- name: PageSize
in: query
description: 'Number of records per page (1-50). Default: 30'
schema:
maximum: 50
minimum: 1
type: integer
format: int32
- name: Order
in: query
description: 'Sorting order. Default: Ascending'
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.SortOrder'
responses:
'200':
description: Paginated locations list
content:
text/plain:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.LocationItemListModel__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.LocationItemListModel__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.LocationItemListModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null'
'400':
description: Request parameters are invalid
'500':
description: Internal Server Error
post:
tags:
- Locations
summary: Create a new location
description: Creates a new location in the system
operationId: Locations_CreateLocation
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.CreateLocationModel'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.CreateLocationModel'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.CreateLocationModel'
application/*+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.CreateLocationModel'
responses:
'200':
description: Created location model
content:
text/plain:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationResponseModel'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationResponseModel'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationResponseModel'
'400':
description: Request parameters are invalid
'401':
description: Access denied to create a resource
'409':
description: Conflicting model values
'500':
description: Internal Server Error
/api/v1/locations/{locationId}/users:
post:
tags:
- Locations
summary: Assign number of users to the location
description: Assign any number of users to the specified location
operationId: Locations_AddUsers
parameters:
- name: locationId
in: path
description: Target location id
required: true
schema:
type: string
requestBody:
description: Users to add
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AddUsersModel'
application/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AddUsersModel'
text/json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AddUsersModel'
application/*+json:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.AddUsersModel'
responses:
'200':
description: List of users added to the location
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.v1.UserListItemModel'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.v1.UserListItemModel'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.v1.UserListItemModel'
'400':
description: Request parameters are invalid
'404':
description: Resource not found
'500':
description: Internal Server Error
get:
tags:
- Locations
summary: List users in the location
description: List all users in the specified location
operationId: Locations_ListUsers
parameters:
- name: locationId
in: path
description: Target location id
required: true
schema:
type: string
- name: page
in: query
description: 'Zero based page number. Default: 0'
schema:
type: integer
format: int32
default: 0
- name: pageSize
in: query
description: 'Number of records per page (1-50). Default: 30'
schema:
type: integer
format: int32
default: 30
responses:
'200':
description: Paginated users list
content:
text/plain:
schema:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.UserIdResponseModel__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.UserIdResponseModel__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.UserIdResponseModel__Rotageek.AspNetCore.PublicApi__Version_2026.10.9.7962__Culture_neutral__PublicKeyToken_null'
'400':
description: Request parameters are invalid
'404':
description: Location not found
'500':
description: Internal Server Error
/api/v1/locations/{locationId}/users/{userId}:
delete:
tags:
- Locations
summary: Remove a user from the location
description: Removes a user from the location
operationId: Locations_RemoveUser
parameters:
- name: locationId
in: path
description: Target location id
required: true
schema:
type: string
- name: userId
in: path
description: User id to remove
required: true
schema:
type: string
responses:
'200':
description: User removed
'400':
description: Request parameters are invalid
'401':
description: Access denied to delete a resource
'500':
description: Internal Server Error
components:
schemas:
? Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.LocationItemListModel__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.LocationItemListModel'
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.CreateLocationModel:
required:
- id
- name
- region
type: object
properties:
id:
minLength: 1
type: string
description: 'New unique location id (max length: 250)'
name:
maxLength: 200
minLength: 1
type: string
description: 'Name of the new location (max length: 200)'
region:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationRegion'
addressLine1:
maxLength: 200
type:
- string
- 'null'
description: 'Address line 1 of the new location (max length: 200)'
addressLine2:
maxLength: 200
type:
- string
- 'null'
description: 'Address line 2 of the new location (max length: 200)'
town:
maxLength: 200
type:
- string
- 'null'
description: 'Town of the new location (max length: 200)'
country:
maxLength: 200
type:
- string
- 'null'
description: 'Country of the new location (max length: 200)'
postcode:
maxLength: 10
type:
- string
- 'null'
description: 'Post code of the new location (max length: 10)'
hierarchy:
type:
- object
- 'null'
additionalProperties:
type:
- string
- 'null'
description: "A sequence (non-ordered) of cluster item specified as \"tier-name\": \"cluster-name\"\nExample:\n{\n \"Country\": \"England\",\n \"City\": \"London\",\n \"Area\": \"West End\"\n}"
coordinates:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationCoordinates'
additionalProperties: false
description: Object container for location creation
Rotageek.AspNetCore.PublicApi.Models.LocationResponseModel:
required:
- id
- name
- region
type: object
properties:
id:
minLength: 1
type: string
description: Location id
name:
minLength: 1
type: string
description: Location name
region:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationRegion'
addressLine1:
type:
- string
- 'null'
description: Location first address line
addressLine2:
type:
- string
- 'null'
description: Location second address line
town:
type:
- string
- 'null'
description: Location town
country:
type:
- string
- 'null'
description: Location country
postcode:
type:
- string
- 'null'
description: Location post code
hierarchy:
type:
- object
- 'null'
additionalProperties:
type:
- string
- 'null'
description: "A sequence (non-ordered) of cluster item specified as \"tier-name\": \"cluster-name\"\nExample:\n{\n \"Country\": \"England\",\n \"City\": \"London\",\n \"Area\": \"West End\"\n}"
coordinates:
$ref: '#/components/schemas/Rotageek.AspNetCore.PublicApi.Models.LocationCoordinates'
additionalProperties: false
description: Container for location response object
Rotageek.AspNetCore.PublicApi.Models.UserIdResponseModel:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique user id
additionalProperties: false
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.v1.UserListItemModel:
type: object
properties:
id:
type:
- string
- 'null'
description: User unique id
username:
type:
- string
- 'null'
description: Username
firstName:
type:
- string
- 'null'
description: User first name
surname:
type:
- string
- 'null'
description: User surname
email:
type:
- string
- 'null'
description: User email
isActive:
type: boolean
description: User Status
skillIds:
type:
- array
- 'null'
items:
type: string
description: Skills
positionIds:
type:
- array
- 'null'
items:
type: string
description: Positions
primaryLocation:
type:
- string
- 'null'
description: Primary location
additionalProperties: false
description: Object container for compact user information
Rotageek.AspNetCore.PublicApi.Models.SortOrder:
enum:
- Ascending
- Descending
type: string
description: Describes items sort order
Rotageek.AspNetCore.PublicApi.Models.LocationRegion:
enum:
- England
- Scotland
- NorthernIreland
- Wales
- AustraliaMelbourne
- Ireland
- Germany
- Netherlands
- HongKong
type: string
description: Describes available regions for the location
Rotageek.AspNetCore.PublicApi.Models.LocationItemListModel:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique location id
name:
type:
- string
- 'null'
description: Location name
postcode:
type:
- string
- 'null'
description: Location post code
costCentre:
type:
- string
- 'null'
description: Cost centre associated with the location. May be null or empty when no cost centre is set.
hierarchy:
type:
- object
- 'null'
additionalProperties:
type:
- string
- 'null'
description: "A sequence (non-ordered) of cluster item specified as \"tier-name\": \"cluster-name\"\nExample:\n{\n \"Country\": \"England\",\n \"City\": \"London\",\n \"Area\": \"West End\"\n}"
additionalProperties: false
description: Location object container
Rotageek.AspNetCore.PublicApi.Models.AddUsersModel:
type: object
properties:
userIds:
type:
- array
- 'null'
items:
type: string
description: Collection of user id's to add
additionalProperties: false
description: Object container for user id's to add
Rotageek.AspNetCore.PublicApi.Models.LocationCoordinates:
type: object
properties:
latitude:
maximum: 90
minimum: -90
type: number
description: Location latitude. Valid range -90 to 90.
format: double
longitude:
maximum: 180
minimum: -180
type: number
description: Location longitude. Valid range -180 to 180.
format: double
additionalProperties: false
Rotageek.AspNetCore.PublicApi.Models.LocationSortField:
enum:
- Name
- Id
- Postcode
type: string
description: Describes possible fields for location list ordering
? Rotageek.AspNetCore.PublicApi.Models.ListWrapperModel_1__Rotageek.AspNetCore.PublicApi.Models.UserIdResponseModel__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.UserIdResponseModel'
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
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: {}