Rotageek Locations API

The Locations API from Rotageek — 3 operation(s) for locations.

Operations 5

GET /api/v1/locations Retrieve locations list #
POST /api/v1/locations Create a new location #
POST /api/v1/locations/{locationId}/users Assign number of users to the location #
GET /api/v1/locations/{locationId}/users List users in the location #
DELETE /api/v1/locations/{locationId}/users/{userId} Remove a user from the location #

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rotageek:rotageek-locations-api"
All apis
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.

Get an API 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 Specification

rotageek-locations-api-openapi.yml Raw ↑
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: {}