Cosuno Users API

The Users API from Cosuno — 3 operation(s) for users.

Operations 4

GET /users Get users #
POST /users Create invited user #
PUT /users/{id} Update user #
GET /users/custom-types Get custom user types #

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/cosuno:cosuno-users-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

cosuno-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cosuno Users API
  version: '1'
  description: '-'
  license:
    name: '-'
  contact:
    name: '-'
servers:
- url: https://api.cosuno.com/v1
- description: current
  url: /v1
tags:
- name: Users
paths:
  /users:
    get:
      operationId: GetUsers
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/UserResponse'
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: List users in your company.
      tags:
      - Users
      security:
      - accessKey: []
      parameters:
      - description: Number of users to skip before returning results; used together with `limit` to paginate.
        in: query
        name: offset
        required: true
        schema:
          format: int32
          type: integer
          minimum: 0
          maximum: 10000
      - description: Maximum number of users to return in a single response.
        in: query
        name: limit
        required: true
        schema:
          format: int32
          type: integer
          minimum: 1
          maximum: 10000
      summary: Get users
      x-summary-source: derived
    post:
      operationId: CreateInvitedUser
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: Invite a new user to your company. An invitation email is sent to the provided address.
      tags:
      - Users
      security:
      - accessKey: []
      parameters: []
      requestBody:
        description: Details of the user to invite, including their email, account type and (for non-administrator types) the offices they should have access to.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInvitedUserInput'
              description: Details of the user to invite, including their email, account type and (for non-administrator types) the offices they should have access to.
      summary: Create invited user
      x-summary-source: derived
  /users/{id}:
    put:
      operationId: UpdateUser
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: Update an existing user's profile fields and/or transition their status (e.g. deactivate a user or cancel a pending invite).
      tags:
      - Users
      security:
      - accessKey: []
      parameters:
      - description: The ID of the user to update.
        in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        description: Fields to update on the user. Only provided fields are modified; status changes must follow the allowed transitions.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserInput'
              description: Fields to update on the user. Only provided fields are modified; status changes must follow the allowed transitions.
      summary: Update user
      x-summary-source: derived
  /users/custom-types:
    get:
      operationId: GetCustomUserTypes
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/UserCustomTypeResponse'
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: List the custom user types configured for your company.
      tags:
      - Users
      security:
      - accessKey: []
      parameters: []
      summary: Get custom user types
      x-summary-source: derived
components:
  schemas:
    ErrorResponse:
      properties:
        message:
          type: string
        meta:
          properties:
            fieldErrors:
              $ref: '#/components/schemas/FieldErrors'
          required:
          - fieldErrors
          type: object
      required:
      - message
      type: object
      additionalProperties: false
    UserBase:
      properties:
        email:
          type: string
          description: Email address of the user. Also used as their login identifier.
          format: email
          maxLength: 200
        firstName:
          type: string
          description: Given name of the user.
          maxLength: 100
        lastName:
          type: string
          description: Family name of the user.
          maxLength: 100
      required:
      - email
      type: object
      additionalProperties: false
    PRINCIPAL_USER_TYPE.administrator:
      enum:
      - administrator
      type: string
    CreateInvitedUserInput:
      allOf:
      - $ref: '#/components/schemas/UserBase'
      - anyOf:
        - properties:
            officeIds:
              items:
                type: string
              type: array
              description: IDs of the offices the new user should have access to. If omitted, the user gets access to all offices.
            type:
              $ref: '#/components/schemas/PRINCIPAL_USER_TYPE.administrator'
              description: Built-in administrator account type. Administrators have access to all offices, so `officeIds` is optional.
          required:
          - type
          type: object
        - properties:
            officeIds:
              items:
                type: string
              type: array
              description: IDs of the offices the new user should have access to.
              minItems: 1
            type:
              anyOf:
              - $ref: '#/components/schemas/PRINCIPAL_USER_TYPE.guest'
              - $ref: '#/components/schemas/PRINCIPAL_USER_TYPE.manager'
              - $ref: '#/components/schemas/PRINCIPAL_USER_TYPE.collaborator'
              description: Built-in non-administrator account type. Requires at least one office assignment via `officeIds`.
          required:
          - officeIds
          - type
          type: object
        - properties:
            officeIds:
              items:
                type: string
              type: array
              description: IDs of the offices the new user should have access to.
              minItems: 1
            customUserRoleId:
              type: string
              description: ID of the custom user role to assign. Obtainable via `GET /users/custom-types`.
            type:
              $ref: '#/components/schemas/CUSTOM_USER_TYPE'
              description: Indicates that a custom account type is being assigned; `customUserRoleId` must also be provided.
          required:
          - officeIds
          - customUserRoleId
          - type
          type: object
    PRINCIPAL_USER_TYPE.manager:
      enum:
      - manager
      type: string
    Partial_UserBase_:
      properties:
        email:
          type: string
          description: Email address of the user. Also used as their login identifier.
          format: email
          maxLength: 200
        firstName:
          type: string
          description: Given name of the user.
          maxLength: 100
        lastName:
          type: string
          description: Family name of the user.
          maxLength: 100
      type: object
      description: Make all properties in T optional
    UserCustomTypeResponse:
      properties:
        id:
          type: string
          description: ID of the custom user role.
        name:
          type: string
          description: Display name of the custom user role.
      required:
      - id
      - name
      type: object
      additionalProperties: false
    USER_TYPE:
      type: string
      enum:
      - custom
      - administrator
      - employee
      - guest
      - collaborator
      - manager
    UpdateUserInput:
      allOf:
      - $ref: '#/components/schemas/Partial_UserBase_'
      - properties:
          status:
            $ref: '#/components/schemas/Extract_USER_STATUS.active-or-inactive-or-invited-or-inviteCanceled_'
            description: 'New status for the user. Only the following transitions are allowed:

              - `active` → `inactive` (deactivate an active user)

              - `inactive` → `active` (reactivate a deactivated user)

              - `invited` → `inviteCanceled` (cancel a pending invitation)

              - `inviteCanceled` → `invited` (restore a cancelled invitation)'
        type: object
      - anyOf:
        - properties:
            type:
              $ref: '#/components/schemas/PRINCIPAL_USER_TYPE'
              description: Built-in account type to assign to the user.
          type: object
        - properties:
            customUserRoleId:
              type: string
              description: ID of the custom user role to assign. Obtainable via `GET /users/custom-types`.
            type:
              $ref: '#/components/schemas/CUSTOM_USER_TYPE'
              description: Indicates that a custom account type is being assigned; `customUserRoleId` must also be provided.
          required:
          - customUserRoleId
          - type
          type: object
    Extract_USER_STATUS.active-or-inactive-or-invited-or-inviteCanceled_:
      type: string
      enum:
      - invited
      - inviteCanceled
      - active
      - inactive
      description: Extract from T those types that are assignable to U
    USER_STATUS:
      type: string
      enum:
      - approvalPending
      - adminApprovalPending
      - invited
      - inviteCanceled
      - inviteFailed
      - inviteRequested
      - active
      - inactive
    UserResponse:
      properties:
        id:
          type: string
          description: ID of the user.
        email:
          type: string
          description: Email address of the user. Also used as their login identifier.
        status:
          $ref: '#/components/schemas/USER_STATUS'
          description: Current status of the user.
        firstName:
          type: string
          description: Given name of the user.
        lastName:
          type: string
          description: Family name of the user.
        type:
          $ref: '#/components/schemas/USER_TYPE'
          description: Account type of the user. Values starting with `custom` indicate a custom user role (see `customUserRoleId`).
        customUserRoleId:
          type: string
          description: ID of the custom user role assigned to the user. Present only when `type` refers to a custom user role.
      required:
      - id
      - email
      - status
      - type
      type: object
      additionalProperties: false
    PRINCIPAL_USER_TYPE.collaborator:
      enum:
      - collaborator
      type: string
    PRINCIPAL_USER_TYPE.guest:
      enum:
      - guest
      type: string
    FieldErrors:
      properties: {}
      type: object
      additionalProperties:
        properties:
          value: {}
          message:
            type: string
        required:
        - message
        type: object
    PRINCIPAL_USER_TYPE:
      enum:
      - administrator
      - guest
      - collaborator
      - manager
      type: string
    CUSTOM_USER_TYPE:
      type: string
      enum:
      - custom
  securitySchemes:
    accessKey:
      type: http
      scheme: bearer
      bearerFormat: JWT