Cycloid Organization members API

Operations for members of an organization.

Operations 7

GET /members/verify/{verification_token} Get pending member invitation #
GET /organizations/{organization_canonical}/members Get org members #
POST /organizations/{organization_canonical}/members Invite user to org member #
GET /organizations/{organization_canonical}/members/{member_id} Get org member #
PUT /organizations/{organization_canonical}/members/{member_id} Update org member #
DELETE /organizations/{organization_canonical}/members/{member_id} Remove org member #
PUT /organizations/{organization_canonical}/members/{member_id}/resend Resend member invitation #

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/cycloid:cycloid-organization-members-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

cycloid-organization-members-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: This is the Cycloid's API Reference. It provides descriptions, syntax, and usage examples for each of the actions and data types available within our console.
  title: Welcome! Organization members API
  termsOfService: https://console.cycloid.io/terms
  contact:
    name: The Great Owl
    url: https://www.cycloid.io
    email: contact@cycloid.io
  license:
    name: Cycloid @copyrights
    url: https://cycloid.io
  version: '0'
servers:
- url: https://http-api.cycloid.io
security:
- api_key: []
- api_key_query: []
tags:
- description: Operations for members of an organization.
  name: Organization members
paths:
  /members/verify/{verification_token}:
    parameters:
    - $ref: '#/components/parameters/verification_token'
    get:
      security: []
      description: Get the email address used for the pending member invitation
      tags:
      - Organization members
      operationId: getPendingMemberInvitation
      responses:
        '200':
          description: The email address used for the pending member invitation
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/PendingMemberInvitation'
              example:
                data:
                  email: user@user.com
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Get pending member invitation
      x-summary-source: derived
  /organizations/{organization_canonical}/members:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    get:
      description: Get the members of an organization.
      tags:
      - Organization members
      operationId: getOrgMembers
      parameters:
      - $ref: '#/components/parameters/page_index'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/invitation_state_query'
      - description: Search by the user's full name
        name: user_full_name
        in: query
        schema:
          type: string
      - description: Search by the role's name
        name: role_name
        in: query
        schema:
          type: string
      - description: Search by the user canonical
        name: user_canonical
        in: query
        schema:
          type: string
      - description: Search by user creation date
        name: user_created_at
        in: query
        schema:
          type: integer
          format: uint64
      - description: Search by member joining date
        name: member_created_at
        in: query
        schema:
          type: integer
          format: uint64
      - $ref: '#/components/parameters/order_by_query'
      responses:
        '200':
          description: List of the members of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - pagination
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/MemberOrg'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
              example:
                data:
                - created_at: 1503225026
                  email: mariano.jimenez@fakeemail.com
                  full_name: Mariano Jimenez
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  last_login_at: 1503225576
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    canonical: role-can
                    description: Organization existing role
                    id: 17
                    name: existing
                    rules:
                    - action: organization:delete
                      effect: allow
                      id: 1
                      resources:
                      - organization:org-can
                      - organization:org-can2
                    - action: organization:team:create
                      effect: allow
                      id: 20
                      resources: null
                    - action: organization:team:read
                      effect: allow
                      id: 21
                      resources:
                      - organization:org-can:team:team-can
                  username: user-1
                - created_at: 1503281026
                  email: jordi.capdevila@fakeemail.com
                  full_name: Jordi Capdevila
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  last_login_at: 1503225576
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    canonical: role-can
                    description: Organization existing role
                    id: 17
                    name: existing
                    rules:
                    - action: organization:delete
                      effect: allow
                      id: 1
                      resources:
                      - organization:org-can
                      - organization:org-can2
                    - action: organization:team:create
                      effect: allow
                      id: 20
                      resources: null
                    - action: organization:team:read
                      effect: allow
                      id: 21
                      resources:
                      - organization:org-can:team:team-can
                  username: user2
                - created_at: 1502225026
                  email: ivan.drago@fakeemail.com
                  full_name: Ivan Drago
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  last_login_at: 1503225576
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    canonical: role-can
                    description: Organization existing role
                    id: 17
                    name: existing
                    rules:
                    - action: organization:delete
                      effect: allow
                      id: 1
                      resources:
                      - organization:org-can
                      - organization:org-can2
                    - action: organization:team:create
                      effect: allow
                      id: 20
                      resources: null
                    - action: organization:team:read
                      effect: allow
                      id: 21
                      resources:
                      - organization:org-can:team:team-can
                  username: user-3
                pagination:
                  index: 1
                  size: 10
                  total: 3
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Get org members
      x-summary-source: derived
    post:
      description: Invite a user to be a member of the organization.
      tags:
      - Organization members
      operationId: inviteUserToOrgMember
      responses:
        '200':
          description: The information of the member of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/MemberOrg'
              example:
                data:
                  created_at: 1503281026
                  email: jordi.capdevila@fakeemail.com
                  full_name: Jordi Capdevila
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    description: A project manager
                    id: 2
                    name: project manager
                    policies:
                    - code: team:read
                      description: Grant the access to read the teams of an organization
                      entities: null
                      id: 21
                    - code: team:edit
                      description: Grant the access to edit teams
                      entities: null
                      id: 22
                    - code: project:read
                      description: Grant the access to projects
                      entities: null
                      id: 60
                    - code: project:create
                      description: Grant the access to create a project in the organization
                      entities: null
                      id: 61
                    - code: project:edit
                      description: Grant the access to edit projects
                      entities: null
                      id: 62
                  username: user2
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        '411':
          $ref: '#/components/responses/required_content_length_header'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        default:
          $ref: '#/components/responses/unexpected_error'
      requestBody:
        content:
          application/vnd.cycloid.io.v1+json:
            schema:
              $ref: '#/components/schemas/NewMemberInvitation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/NewMemberInvitation'
        description: The user's member invitation.
        required: true
      summary: Invite user to org member
      x-summary-source: derived
  /organizations/{organization_canonical}/members/{member_id}:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    - $ref: '#/components/parameters/member_id'
    get:
      description: Get the information of a member of the organization.
      tags:
      - Organization members
      operationId: getOrgMember
      responses:
        '200':
          description: The information of the member of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/MemberOrg'
              example:
                data:
                  created_at: 1503281026
                  email: jordi.capdevila@fakeemail.com
                  full_name: Jordi Capdevila
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    description: A project manager
                    id: 2
                    name: project manager
                    policies:
                    - code: team:read
                      description: Grant the access to read the teams of an organization
                      entities: null
                      id: 21
                    - code: team:edit
                      description: Grant the access to edit teams
                      entities: null
                      id: 22
                    - code: project:read
                      description: Grant the access to projects
                      entities: null
                      id: 60
                    - code: project:create
                      description: Grant the access to create a project in the organization
                      entities: null
                      id: 61
                    - code: project:edit
                      description: Grant the access to edit projects
                      entities: null
                      id: 62
                  username: user2
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Get org member
      x-summary-source: derived
    put:
      description: Update member of the organization.
      tags:
      - Organization members
      operationId: updateOrgMember
      responses:
        '200':
          description: The information of the member of the organization.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/MemberOrg'
              example:
                data:
                  created_at: 1503281026
                  email: jordi.capdevila@fakeemail.com
                  full_name: Jordi Capdevila
                  id: 1
                  invitation_email: jordi.capdevila@fakeemail.com
                  invitation_state: accepted
                  picture_url: https://avatars2.githubusercontent.com/u/14579210
                  role:
                    description: A project manager
                    id: 2
                    name: project manager
                    policies:
                    - code: team:read
                      description: Grant the access to read the teams of an organization
                      entities: null
                      id: 21
                    - code: team:edit
                      description: Grant the access to edit teams
                      entities: null
                      id: 22
                    - code: project:read
                      description: Grant the access to projects
                      entities: null
                      id: 60
                    - code: project:create
                      description: Grant the access to create a project in the organization
                      entities: null
                      id: 61
                    - code: project:edit
                      description: Grant the access to edit projects
                      entities: null
                      id: 62
                  username: user2
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        default:
          $ref: '#/components/responses/unexpected_error'
      requestBody:
        content:
          application/vnd.cycloid.io.v1+json:
            schema:
              $ref: '#/components/schemas/MemberAssignation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MemberAssignation'
        description: The member information to be updated.
        required: true
      summary: Update org member
      x-summary-source: derived
    delete:
      description: Remove a member of the organization.
      tags:
      - Organization members
      operationId: removeOrgMember
      responses:
        '204':
          description: Member has been removed.
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Remove org member
      x-summary-source: derived
  /organizations/{organization_canonical}/members/{member_id}/resend:
    parameters:
    - $ref: '#/components/parameters/organization_canonical'
    - $ref: '#/components/parameters/member_id'
    put:
      security: []
      description: Resend the email containing the verification token to accept the member Invitation.
      tags:
      - Organization members
      operationId: resendMemberInvitation
      responses:
        '204':
          description: The member Invitation has been resent.
        '403':
          $ref: '#/components/responses/not_enough_permissions'
        '404':
          $ref: '#/components/responses/not_found_entity_in_path'
        default:
          $ref: '#/components/responses/unexpected_error'
      summary: Resend member invitation
      x-summary-source: derived
components:
  parameters:
    page_index:
      description: The page number to request. The first page is 1.
      name: page_index
      in: query
      schema:
        type: integer
        format: uint32
        default: 1
    page_size:
      description: The number of items at most which the response can have.
      name: page_size
      in: query
      schema:
        type: integer
        format: uint32
        default: 100
    organization_canonical:
      description: A canonical of an organization.
      name: organization_canonical
      in: path
      required: true
      schema:
        type: string
        maxLength: 100
        minLength: 2
        pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    verification_token:
      description: A token for verifying emails, invitations, etc.
      name: verification_token
      in: path
      required: true
      schema:
        type: string
        minLength: 5
    member_id:
      description: A member id
      name: member_id
      in: path
      required: true
      schema:
        type: integer
        format: uint32
    invitation_state_query:
      description: Search by Invitation's state
      name: invitation_state
      in: query
      schema:
        type: string
        enum:
        - accepted
        - pending
        - declined
    order_by_query:
      description: 'Allows to order the list of items. Example usage: field_name:asc. Multiple order_by parameters are allowed, applied in the order they are specified.

        '
      name: order_by
      in: query
      schema:
        type: string
  schemas:
    MemberAssignation:
      description: Member is a user who is associated to an entity of the system. The user is newly assigned or reassigned for updating is data.
      title: Member assignation
      required:
      - role_canonical
      properties:
        role_canonical:
          description: The role of the member.
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    SimpleTeam:
      description: The entity which represents the information of a team a bit simplified.
      type: object
      title: SimpleTeam
      required:
      - id
      - canonical
      - name
      - created_at
      - updated_at
      properties:
        canonical:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
        created_at:
          type: integer
          format: uint64
        id:
          type: integer
          format: uint32
          minimum: 1
        name:
          type: string
          minLength: 2
        owner:
          description: 'Organization member that owns this team. When a user is the owner of a

            team it has all the permissions on it.

            In the event where the user has been deleted this field might be empty.

            '
          $ref: '#/components/schemas/User'
        updated_at:
          type: integer
          format: uint64
    PendingMemberInvitation:
      description: Contains the email used for the member invitation
      type: object
      title: PendingMemberInvitation
      required:
      - email
      properties:
        email:
          type: string
          format: email
    Role:
      description: Role represents the authorization level that an user has to access to a specific entity of the system. A role contains a list of rules to define the access control. Note not all the entities supports roles access control; see the API endpoints to know which entities support them.
      title: Role access control
      required:
      - id
      - name
      - canonical
      - description
      - rules
      - default
      properties:
        canonical:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
        created_at:
          type: integer
          format: uint64
        default:
          type: boolean
        description:
          type: string
        id:
          type: integer
          format: uint32
          minimum: 1
        name:
          type: string
          maxLength: 100
          minLength: 2
        rules:
          type: array
          items:
            $ref: '#/components/schemas/Rule'
        updated_at:
          type: integer
          format: uint64
    MemberOrg:
      description: Member is a user who is associated to an organization.
      type: object
      title: Member of an organization
      required:
      - id
      - created_at
      - role
      properties:
        created_at:
          description: When the user became a member.
          type: integer
          format: uint64
        email:
          description: user email
          type: string
          format: email
        full_name:
          type: string
        id:
          type: integer
          format: uint32
          minimum: 1
        invitation_email:
          description: The email address to which the invitation was sent. It's used to resend the invitation.
          type: string
          format: email
        invitation_resent_at:
          type: integer
          format: uint64
        invitation_state:
          type: string
          enum:
          - pending
          - accepted
          - declined
        invited_at:
          description: When the user had been invited to join as a member. When not present, the user is already a member, so she/he has verified her/his invitation.
          type: integer
          format: uint64
        invited_by:
          description: Organization member who invited the current user.
          $ref: '#/components/schemas/SimpleMemberOrg'
        last_login_at:
          description: When the user logged in last time.
          type: integer
          format: uint64
        locale:
          description: User's preferred language
          type: string
          enum:
          - en
          - fr
          - es
        mfa_enabled:
          type: boolean
        picture_url:
          type: string
          format: uri
        role:
          $ref: '#/components/schemas/Role'
        teams:
          type: array
          items:
            $ref: '#/components/schemas/SimpleTeam'
        updated_at:
          description: When the user had the role modified.
          type: integer
          format: uint64
        username:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    User:
      description: A summary of a user to be used in places where only the basic information are need or are enough.
      type: object
      title: Basic info of a user
      required:
      - id
      - username
      - full_name
      - email
      - locale
      - created_at
      - mfa_enabled
      properties:
        country_code:
          description: Code of a country the user is from in alpha-2 format
          type: string
          pattern: ^[A-Z]{2}$
        created_at:
          description: When the user became a member.
          type: integer
          format: uint64
        email:
          description: User's primary email.
          type: string
          format: email
        full_name:
          type: string
        id:
          type: integer
          format: uint32
          minimum: 1
        last_login_at:
          description: When the user logged in last time.
          type: integer
          format: uint64
        locale:
          description: The local that the user prefer.
          type: string
          pattern: ^[a-z]{2}(?:-[a-z][a-z])?$
        mfa_enabled:
          type: boolean
        picture_url:
          type: string
          format: uri
        updated_at:
          description: When the user had the role modified.
          type: integer
          format: uint64
        username:
          type: string
          maxLength: 30
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    SimpleMemberOrg:
      description: Simplified model of a member of an organization. The member is 'accepted' and have an associated user account.
      type: object
      title: Simplified model of a member of an organization
      required:
      - id
      - email
      - created_at
      properties:
        created_at:
          description: When the user became a member.
          type: integer
          format: uint64
        email:
          description: Primary email
          type: string
          format: email
        full_name:
          type: string
        id:
          description: Member ID (different from the user ID)
          type: integer
          format: uint32
          minimum: 1
        last_login_at:
          description: When the user logged in last time.
          type: integer
          format: uint64
        picture_url:
          type: string
          format: uri
        updated_at:
          description: When the user had the role modified.
          type: integer
          format: uint64
        username:
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    Rule:
      description: Rules define the specific access to the platform
      title: Rule
      required:
      - id
      - effect
      - action
      properties:
        action:
          description: It can be the normal Policy.Code or contain globs like `*` or `**`
          type: string
        effect:
          type: string
          enum:
          - allow
        id:
          description: This is the id of the row from the database, but for blocking organizations we generate rules that are not in the database. When this happens the id is allowed to be 0.
          type: integer
          format: uint32
        resources:
          description: It is the list of resources in which this Rule applies to, the format of it is the one on the Policy.Code but with the `canonical` of the entities like `organization:org-can:team:team-can` for an action of `organization:team:read`
          type: array
          items:
            type: string
    Pagination:
      type: object
      title: Pagination
      required:
      - total
      - index
      - size
      properties:
        index:
          description: The index of the page sent (the first page is 1).
          type: integer
          format: uint64
          minimum: 1
        size:
          description: The size of the page (the number of entities per page)
          type: integer
          format: uint64
        total:
          description: The total number of items.
          type: integer
          format: uint64
    NewMemberInvitation:
      description: Send an invitation to a user to something. Something can be to create an account, to join to an organization, to join to a team, etc. API operation determines the operation to perform.
      title: Invite user
      required:
      - email
      - role_canonical
      properties:
        email:
          description: Invite user by email
          type: string
          format: email
        role_canonical:
          description: The role of the member.
          type: string
          maxLength: 100
          minLength: 2
          pattern: ^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$
    ErrorPayload:
      description: 'The payload used by the server to response to the client with an Error, those errors could be any of the ones listed [here](https://github.com/cycloidio/youdeploy-http-api/blob/develop/errors/code.go#L10), only the CODE of the error is the one that is guaranteed to not change between the same major version, the MESSAGE could change.

        '
      title: Error Payload
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailsItem'
        request_id:
          type: string
    ErrorDetailsItem:
      description: Represents an item of the list of details of an error.
      title: Error details item
      required:
      - message
      - code
      properties:
        code:
          type: string
        details:
          type: array
          items:
            type: string
        message:
          type: string
  responses:
    not_enough_permissions:
      description: The authenticated user cannot perform the operation because, it doesn't have permissions for such operation.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: Unauthorized
              message: Not enough permissions to perform the operation
    unprocessable_entity:
      description: All the custom errors that are generated from the Cycloid API
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: SomeCode
              message: some error
    not_found_entity_in_path:
      description: The response sent when any of the entities present in the path is not found.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: NotFoundEntity
              message: Entity not found
    required_content_length_header:
      description: The request has a body but it doesn't have a Content-Length header.
    unexpected_error:
      description: The response sent when an unexpected error happened, as known as an internal server error.
      headers:
        Content-Length:
          description: The length of the response body in octets (8-bit bytes).
          schema:
            type: integer
            format: uint64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorPayload'
          example:
            errors:
            - code: Unexpected
              message: Server Internal error
  securitySchemes:
    api_key:
      description: The API authorization is done with JWT tokens
      type: apiKey
      name: Authorization
      in: header
    api_key_query:
      description: The API authorization is done with JWT tokens in the query string
      type: apiKey
      name: api_key
      in: query