ThousandEyes Administrative API

Manage users, accounts, and account groups in the ThousandEyes platform using the Administrative API. This API provides the following operations to manage your organization: * `/account-groups`: Account groups are used to divide an organization into different sections. These operations can be used to create, retrieve, update and delete account groups. * `/users`: Create, retrieve, update and delete users within an organization. * `/roles`: Create, retrieve and update roles for the current user. * `/permissions`: Retrieve all assignable permissions. Used in the context of modifying roles. * `/audit-user-events`: Retrieve all activity log events. For more information about the administrative models, see Account Management.

OpenAPI Specification

thousandeyes-administrative-openapi.yml Raw ↑
openapi: 3.0.1
security:
- BearerAuth: []
servers:
- description: ThousandEyes API production URL
  url: https://api.thousandeyes.com/v7
info:
  version: 7.0.100
  title: Administrative API
  description: "Manage users, accounts, and account groups in the ThousandEyes platform using the Administrative API.\nThis\
    \ API provides the following operations to manage your organization: \n\n  * `/account-groups`: Account groups are used\
    \ to divide an organization into different sections. These operations can be used to create, retrieve, update and delete\
    \ account groups.\n  * `/users`: Create, retrieve, update and delete users within an organization. \n  * `/roles`: Create,\
    \ retrieve and update roles for the current user. \n  * `/permissions`: Retrieve all assignable permissions. Used in the\
    \ context of modifying roles. \n  * `/audit-user-events`: Retrieve all activity log events.\n\n  For more information\
    \ about the administrative models, see [Account Management](https://docs.thousandeyes.com/product-documentation/user-management)."
  x-provenance:
    method: harvested
    authored_by: Cisco ThousandEyes
    harvested_by: API Evangelist
    harvested_on: '2026-08-19'
    first_party: true
    provider_published: true
    source_host: pubhub.devnetcloud.com
    note: 27 OpenAPI 3.0 documents (26 per-area plus a unified 326-operation document) served anonymously from Cisco's DevNet
      CDN. api.thousandeyes.com itself 401s every path, so the contract is public while the API host is gated.
  x-evidence:
  - type: source
    url: https://pubhub.devnetcloud.com/media/000-v7-apis/docs/reference/
  - type: source
    url: https://developer.cisco.com/docs/thousandeyes/
externalDocs:
  description: Find out more about the administrative models
  url: https://docs.thousandeyes.com/product-documentation/user-management
tags:
- name: Account Groups
  description: Account group CRUD operations
- name: Users
  description: User CRUD operations
- name: Roles
  description: Role CRUD operations
- name: Permissions
  description: Permission GET operation
- name: User Events
  description: User events GET operation
paths:
  /account-groups:
    get:
      tags:
      - Account Groups
      summary: List account groups
      operationId: getAccountGroups
      description: Retrieves a list of account groups available to the current user.
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroups'
            application/json:
              schema:
                $ref: '#/components/schemas/AccountGroups'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    post:
      tags:
      - Account Groups
      summary: Create account group
      operationId: createAccountGroup
      description: 'Creates a new account group. This operation requires the `Edit all account groups` permission.


        **Note:** Any user assigned to `All Account Groups` is automatically assigned to the new account group.'
      parameters:
      - $ref: '#/components/parameters/ExpandAccountGroup'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountGroupRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CreatedAccountGroup'
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedAccountGroup'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /account-groups/{id}:
    get:
      tags:
      - Account Groups
      summary: Retrieve account group
      operationId: getAccountGroup
      description: Retrieves detailed information about an account group using its ID.  This operation requires the `View
        all account groups settings` permission.
      parameters:
      - $ref: '#/components/parameters/AccountGroupIdPath'
      - $ref: '#/components/parameters/ExpandAccountGroup'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    put:
      tags:
      - Account Groups
      summary: Update account group
      operationId: updateAccountGroup
      description: Updates an account group using its ID. You can modify the account group’s name or the list of agents assigned
        to the account group.
      parameters:
      - $ref: '#/components/parameters/AccountGroupIdPath'
      - $ref: '#/components/parameters/ExpandAccountGroup'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountGroupRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    delete:
      tags:
      - Account Groups
      summary: Delete account group
      operationId: deleteAccountGroup
      description: "Deletes an account group using its ID. This operation requires the following permissions:\n\n  * Assign\
        \ management permissions\n  * Delete account\n  * Edit all account groups"
      parameters:
      - $ref: '#/components/parameters/AccountGroupIdPath'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /users:
    get:
      tags:
      - Users
      summary: List users
      operationId: getUsers
      description: Retrieves a list of users in the organization the account group ID belongs to. This operation requires
        the `API Access` and `View all users` permissions. See [Account Context](https://developer.thousandeyes.com/v7/#/accountcontext)
        for more information on changing the account group context.
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Users'
            application/json:
              schema:
                $ref: '#/components/schemas/Users'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    post:
      tags:
      - Users
      summary: Create user
      operationId: createUser
      description: "Creates a new user.\n\nThe following applies when creating a user: \n* If the user is already a member\
        \ of another ThousandEyes customer organization, the user must set their own login account group. \n* Any update that\
        \ includes `accountGroupRoles` is a replace-based update and not a delta-based update."
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CreatedUser'
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedUser'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /users/{id}:
    get:
      tags:
      - Users
      summary: Retrieve user
      operationId: getUser
      description: Retrieves detailed information about a user. This operation requires the `API Access` and `View All Users`
        permissions.
      parameters:
      - $ref: '#/components/parameters/UserIdPath'
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    put:
      tags:
      - Users
      summary: Update user
      operationId: updateUser
      description: "Updates a user using the user ID. You can update the user name, email address, account group assignments,\
        \ or roles. This operation requires the `Edit users in all account groups` or `Edit users` permission. \n\nWhen updating\
        \ a user, the following applies:\n* When updating a user's email address, the user must confirm the username change\
        \ before they can subsequently log in or perform API operations.\n* Any update that includes `accountGroupRoles` is\
        \ a replace-based update and not a delta-based update."
      parameters:
      - $ref: '#/components/parameters/UserIdPath'
      - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    delete:
      tags:
      - Users
      summary: Delete user
      operationId: deleteUser
      description: Deletes a user using the user ID. This operation requires the `Edit users in all account groups` or `Edit
        users` permission.
      parameters:
      - $ref: '#/components/parameters/UserIdPath'
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /users/current:
    get:
      tags:
      - Users
      summary: Retrieve current user
      operationId: getCurrentUser
      description: Retrieves detailed information about the current user.
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /roles:
    get:
      tags:
      - Roles
      summary: List roles
      operationId: getRoles
      description: Retrieves a list of defined roles visible to the current user.
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Roles'
            application/json:
              schema:
                $ref: '#/components/schemas/Roles'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    post:
      tags:
      - Roles
      summary: Create role
      operationId: createRole
      description: Creates a new role.
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleRequestBody'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /roles/{id}:
    get:
      tags:
      - Roles
      summary: Retrieve role
      operationId: getRole
      description: Returns detailed information about a role using its ID.
      parameters:
      - $ref: '#/components/parameters/RoleId'
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    put:
      tags:
      - Roles
      summary: Update role
      operationId: updateRole
      description: "Updates a user-defined role using its ID.\n\nWhen updating a role, the following applies: \n* The full\
        \ list of permissions must be sent, This operation does not support delta-based grant or revoking of permissions.\
        \ \n* Permission definitions and details can be obtained from the Permissions operation."
      parameters:
      - $ref: '#/components/parameters/RoleId'
      - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleRequestBody'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    delete:
      tags:
      - Roles
      summary: Delete role
      operationId: deleteRole
      description: Deletes a role using its ID. The user needs appropriate permissions to successfully call this operation.
      parameters:
      - $ref: '#/components/parameters/RoleId'
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /audit-user-events:
    get:
      tags:
      - User Events
      summary: List activity log events
      operationId: getUserEvents
      description: "Returns a list of activity log events in the current account group. \n\nIf `useAllPermittedAids=true`\
        \ query parameter is passed and the user has permission `View activity log for all users in account group` the logs\
        \ returned include events across all the account groups they belong to.\n\nFor more information about changing the\
        \ account group context, see [Account Context](https://developer.thousandeyes.com/v7/#/accountcontext)."
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/UseAllPermittedAids'
      - $ref: '#/components/parameters/Window'
      - $ref: '#/components/parameters/StartDateParameter'
      - $ref: '#/components/parameters/EndDateParameter'
      - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AuditUserEvents'
            application/json:
              schema:
                $ref: '#/components/schemas/AuditUserEvents'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /permissions:
    get:
      tags:
      - Permissions
      summary: List assignable permissions
      operationId: getPermissions
      description: Users must be in a role assigned management permissions to access this operation. Users without management
        permissions who attempt to access this operation receive an HTTP/403 response code.
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Permissions'
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer authentication token
  parameters:
    RoleId:
      name: id
      description: The ID of the desired role.
      required: true
      in: path
      schema:
        type: string
        example: '23'
    ExpandAccountGroup:
      name: expand
      in: query
      style: form
      explode: false
      description: Optional parameter that specifies whether or not account group related resources should be expanded. By
        default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource,
        pass the `?expand=user` query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandAccountGroupOptions'
        example:
        - user
    AccountGroupIdPath:
      name: id
      description: Identifier for the account group.
      required: true
      in: path
      schema:
        type: string
        example: '1234'
    AccountGroupId:
      name: aid
      in: query
      description: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the
        `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter
        without being assigned to the target account group will result in an error response.
      required: false
      schema:
        type: string
        example: '1234'
    UserIdPath:
      name: id
      description: Identifier for the user.
      required: true
      in: path
      schema:
        type: string
        example: '1234'
    UseAllPermittedAids:
      name: useAllPermittedAids
      in: query
      required: false
      description: Set to `true` to load data from all accounts the user has access to.
      schema:
        type: boolean
        example: false
        default: false
    Window:
      name: window
      in: query
      description: 'A dynamic time interval up to the current time of the request. Specify the interval as a number followed
        by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days,
        and `w` for weeks.

        For a precise date range, use `startDate` and `endDate`.'
      schema:
        type: string
        pattern: ^\d+(?:[smhdw]{1})?$
        example: 12h
    StartDateParameter:
      name: startDate
      in: query
      description: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone,
        following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used
        with `window`.
      schema:
        type: string
        format: date-time
        example: '2022-07-17T22:00:54Z'
    EndDateParameter:
      name: endDate
      in: query
      description: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete
        time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for
        reference. Please note that this parameter can't be used with `window`.
      schema:
        type: string
        format: date-time
        example: '2022-07-18T22:00:54Z'
    PaginationCursor:
      name: cursor
      in: query
      example: null
      description: (Optional) Opaque cursor used for pagination. Clients should use `next` value from `_links` instead of
        this parameter.
      schema:
        type: string
        example: null
  schemas:
    ExpandAccountGroupOptions:
      type: string
      enum:
      - user
      - agent
    AccountGroupToken:
      type: string
      description: The account group token is an alphanumeric string used to bind an Enterprise Agent to a specific account
        group. This token is not a password that must be kept secret. You can retrieve your `AccountGroupToken` from the `/account-groups/{id}`
        endpoint.
      example: 6j052y4vfgyuhefghue
    AccountGroupInfo:
      allOf:
      - $ref: '#/components/schemas/AccountGroup'
      - type: object
        properties:
          isCurrentAccountGroup:
            type: boolean
            description: Indicates whether the requested aid is the context of the current account.
            example: true
          isDefaultAccountGroup:
            type: boolean
            description: Indicates whether the aid is the default one for the requesting user.
            example: true
          organizationName:
            type: string
            description: (Optional) The name of the organization associated with the account group.
          orgId:
            type: string
            description: (Optional) The ID for the organization associated with the account group.
            example: '12345'
    CreatedAccountGroup:
      allOf:
      - $ref: '#/components/schemas/AccountGroupInfo'
      - type: object
        properties:
          users:
            type: array
            items:
              $ref: '#/components/schemas/UserAccountGroup'
          _links:
            $ref: '#/components/schemas/SelfLinks'
    AccountGroupDetail:
      allOf:
      - $ref: '#/components/schemas/CreatedAccountGroup'
      - type: object
        properties:
          agents:
            type: array
            items:
              $ref: '#/components/schemas/EnterpriseAgent'
          accountToken:
            $ref: '#/components/schemas/AccountGroupToken'
            type: string
    AccountGroupRequest:
      type: object
      properties:
        accountGroupName:
          type: string
          description: The name of the account group
          example: My testing account group
        agents:
          type: array
          description: To grant access to enterprise agents, specify the agent list. Note that this is not an additive list
            - the full list must be specified if changing access to agents.
          items:
            type: string
          example:
          - '105'
          - '719'
      required:
      - accountGroupName
    AccountGroups:
      type: object
      properties:
        accountGroups:
          type: array
          items:
            $ref: '#/components/schemas/AccountGroupInfo'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    AccountGroupRole:
      type: object
      properties:
        accountGroup:
          $ref: '#/components/schemas/AccountGroup'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/Role'
    UserAccountGroupRole:
      type: object
      properties:
        accountGroupId:
          type: string
          description: Unique ID of the account group.
          example: '315'
        roleIds:
          type: array
          description: Unique role IDs.
          items:
            type: string
            description: Unique role ID.
            example: '57'
          example:
          - '57'
          - '1140'
    UserRequest:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
        email:
          type: string
          description: User's email address.
          format: email
          example: userx@thousandeyes.com
        loginAccountGroupId:
          type: string
          description: Unique ID of the login account group.
          example: '691'
        accountGroupRoles:
          type: array
          items:
            $ref: '#/components/schemas/UserAccountGroupRole'
        allAccountGroupRoleIds:
          type: array
          description: Unique IDs representing the roles.
          items:
            type: string
            description: Unique role ID.
            example: '57'
          example:
          - '57'
          - '1140'
    User:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
        email:
          type: string
          description: User's email address.
          format: email
          example: userx@thousandeyes.com
        uid:
          type: string
          description: Unique ID of the user.
          example: '245'
        dateRegistered:
          type: string
          description: UTC date the user registered their account (ISO date-time format).
          format: date-time
          example: '2020-07-17T22:00:54Z'
        loginAccountGroup:
          $ref: '#/components/schemas/AccountGroup'
    ExtendedUser:
      allOf:
      - $ref: '#/components/schemas/User'
      - type: object
        properties:
          lastLogin:
            type: string
            description: UTC last login of the user (ISO date-time format).
            format: date-time
            example: '2022-07-17T22:00:54Z'
    Users:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedUser'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    CreatedUser:
      allOf:
      - $ref: '#/components/schemas/User'
      - type: object
        properties:
          loginAccountGroup:
            $ref: '#/components/schemas/AccountGroup'
          accountGroupRoles:
            type: array
            items:
              $ref: '#/components/schemas/AccountGroupRole'
          allAccountGroupRoles:
            type: array
            items:
              $ref: '#/components/schemas/Role'
          _links:
            $ref: '#/components/schemas/SelfLinks'
    UserDetail:
      allOf:
      - $ref: '#/components/schemas/ExtendedUser'
      - type: object
        properties:
          loginAccountGroup:
            $ref: '#/components/schemas/AccountGroup'
          accountGroupRoles:
            type: array
            items:
              $ref: '#/components/schemas/AccountGroupRole'
          allAccountGroupRoles:
            type: array
            items:
              $ref: '#/components/schemas/Role'
          _links:
            $ref: '#/components/schemas/SelfLinks'
    UserAccountGroup:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
    

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thousandeyes/refs/heads/main/openapi/thousandeyes-administrative-openapi.yml