Wherobots service API

The service API from Wherobots — 3 operation(s) for service.

Operations 5

GET /service List service principals #
GET /service/{service_id} Get a service principal #
PATCH /service/{service_id} Update a service principal #
DELETE /service/{service_id} Delete a service principal #
POST /service/register Register a new service principal #

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/wherobots-service-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wherobots-service-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wherobots Cloud apikey Service API
  description: "Wherobots Cloud API OpenAPI specification.\n\n    These are the API docs for the Wherobots API. You can use this to test out the API and see what it does.\n    The underlying OPENAPI spec can be found at /openapi.json. This can be used to generate clients for the API.\n\n    The Authorize button below will allow you to input an access token to authenticate to our API.\n    Then all of the requests on the page should work.\n    "
  version: 0.0.1
servers:
- url: https://api.cloud.wherobots.com
  description: Wherobots Cloud API
tags:
- name: service
paths:
  /service:
    get:
      tags:
      - service
      summary: List service principals
      operationId: listServicePrincipals
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ServicePrincipal'
                type: array
                title: Response Listserviceprincipals
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - bearerToken: []
      - wherobotsApiKey: []
      x-excluded: true
  /service/{service_id}:
    get:
      tags:
      - service
      summary: Get a service principal
      operationId: getServicePrincipal
      security:
      - bearerToken: []
      - wherobotsApiKey: []
      parameters:
      - name: service_id
        in: path
        required: true
        schema:
          type: string
          title: Service Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServicePrincipal'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      x-excluded: true
    patch:
      tags:
      - service
      summary: Update a service principal
      operationId: updateServicePrincipal
      security:
      - bearerToken: []
      - wherobotsApiKey: []
      parameters:
      - name: service_id
        in: path
        required: true
        schema:
          type: string
          title: Service Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServicePrincipalUpdateInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServicePrincipal'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      x-excluded: true
    delete:
      tags:
      - service
      summary: Delete a service principal
      operationId: deleteServicePrincipal
      security:
      - bearerToken: []
      - wherobotsApiKey: []
      parameters:
      - name: service_id
        in: path
        required: true
        schema:
          type: string
          title: Service Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      x-excluded: true
  /service/register:
    post:
      tags:
      - service
      summary: Register a new service principal
      operationId: registerServicePrincipal
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServicePrincipalRegisterInput'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServicePrincipal'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
      security:
      - bearerToken: []
      - wherobotsApiKey: []
      x-excluded: true
components:
  schemas:
    ErrorInfo:
      properties:
        code:
          $ref: '#/components/schemas/ErrorClass'
          description: The error code
        message:
          type: string
          title: Message
          description: A human-readable message describing the error
        details:
          type: string
          title: Details
          description: Details about the error
        path:
          type: string
          title: Path
          description: The path to the field that caused the error
        suggestion:
          type: string
          title: Suggestion
          description: Suggested action to resolve the error
          default: Contact us at support@wherobots.com to get help with resolving your error.
        documentation_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Documentation Url
          description: URL to related documentation
        field:
          anyOf:
          - type: string
          - type: 'null'
          title: Field
          description: The field that caused the error if applicable
      type: object
      required:
      - code
      - message
      - details
      - path
      title: ErrorInfo
    ErrorBody:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorInfo'
          type: array
          title: Errors
          description: A list of errors that occurred
        requestId:
          type: string
          title: Requestid
          description: A unique identifier for the request that caused the error
      type: object
      required:
      - errors
      - requestId
      title: ErrorBody
    Role-Output:
      properties:
        id:
          type: string
          title: Id
        createTime:
          type: string
          format: date-time
          title: Createtime
        updateTime:
          type: string
          format: date-time
          title: Updatetime
        name:
          type: string
          title: Name
        organizationId:
          type: string
          title: Organizationid
        policies:
          items:
            $ref: '#/components/schemas/Policy'
          type: array
          title: Policies
      type: object
      required:
      - id
      - createTime
      - updateTime
      - name
      - organizationId
      - policies
      title: Role
    Effect:
      type: string
      enum:
      - ALLOW
      - DENY
      title: Effect
    ErrorClass:
      type: string
      enum:
      - BAD_REQUEST_ERROR
      - CONFLICT_ERROR
      - INVALID_INPUT_ERROR
      - INTERNAL_SERVER_ERROR
      - UNAUTHORIZED_ERROR
      - INSUFFICIENT_PERMISSIONS_ERROR
      - THIRD_PARTY_PERMISSIONS_ERROR
      - NOT_FOUND_ERROR
      - INSUFFICIENT_QUOTA_ERROR
      - REQUEST_ENTITY_TOO_LARGE
      - FOREIGN_CATALOG_CONNECTION_FAILED
      - RATE_LIMIT_ERROR
      - TIMEOUT_ERROR
      - ACCOUNT_NOT_PROVISIONED
      - BAD_GATEWAY_ERROR
      - GATEWAY_TIMEOUT_ERROR
      title: ErrorClass
    ServicePrincipalUpdateInput:
      properties:
        id:
          type: string
          title: Id
        createTime:
          type: string
          format: date-time
          title: Createtime
        updateTime:
          type: string
          format: date-time
          title: Updatetime
        organizationId:
          type: string
          title: Organizationid
        roles:
          items:
            $ref: '#/components/schemas/Role-Input'
          type: array
          title: Roles
        policies:
          items:
            $ref: '#/components/schemas/Policy'
          type: array
          title: Policies
        deletedAt:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Deletedat
        name:
          type: string
          title: Name
      type: object
      title: ServicePrincipalUpdateInput
    Provider:
      type: string
      enum:
      - WHEROBOTS
      - AWS
      title: Provider
    Role-Input:
      properties:
        id:
          type: string
          title: Id
        createTime:
          type: string
          format: date-time
          title: Createtime
        updateTime:
          type: string
          format: date-time
          title: Updatetime
        name:
          type: string
          title: Name
        organizationId:
          type: string
          title: Organizationid
        policies:
          items:
            $ref: '#/components/schemas/Policy'
          type: array
          title: Policies
      type: object
      required:
      - id
      - createTime
      - updateTime
      - name
      - organizationId
      - policies
      title: Role
    ServicePrincipal:
      properties:
        id:
          type: string
          title: Id
        createTime:
          type: string
          format: date-time
          title: Createtime
        updateTime:
          type: string
          format: date-time
          title: Updatetime
        organizationId:
          type: string
          title: Organizationid
        roles:
          items:
            $ref: '#/components/schemas/Role-Output'
          type: array
          title: Roles
        policies:
          items:
            $ref: '#/components/schemas/Policy'
          type: array
          title: Policies
        deletedAt:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Deletedat
        name:
          type: string
          title: Name
      type: object
      required:
      - id
      - createTime
      - updateTime
      - organizationId
      - roles
      - policies
      - name
      title: ServicePrincipal
    Policy:
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          title: Id
        createTime:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Createtime
        updateTime:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Updatetime
        provider:
          $ref: '#/components/schemas/Provider'
        locator:
          type: string
          title: Locator
        action:
          type: string
          title: Action
        effect:
          $ref: '#/components/schemas/Effect'
      type: object
      required:
      - provider
      - locator
      - action
      - effect
      title: Policy
    ServicePrincipalRegisterInput:
      properties:
        name:
          type: string
          maxLength: 200
          minLength: 3
          title: Name
      type: object
      required:
      - name
      title: ServicePrincipalRegisterInput
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
    wherobotsApiKey:
      type: apiKey
      description: A Wherobots-generated API key
      in: header
      name: X-API-Key