Drata Personnel API

Personnel are people who work for your organization. The [help docs](https://help.drata.com/en/collections/2653981) have more information.

Operations 11

GET /personnel List Personnel #
GET /personnel-search Search Personnel across all workspaces #
GET /workspaces/{workspaceId}/personnel-search Search Personnel within a workspace #
GET /personnel/{personnelId} Get Personnel #
PUT /personnel/{personnelId} Update Personnel #
POST /personnel/actions Reset Personnel Sync #
GET /workspaces/{workspaceId}/scoped-personnel-groups List Workspace Scoped Personnel Groups 🧪 #
POST /workspaces/{workspaceId}/scoped-personnel-groups Add Personnel Group To Workspace Scope 🧪 #
PUT /workspaces/{workspaceId}/scoped-personnel-groups Replace Workspace Scoped Personnel Groups 🧪 #
DELETE /workspaces/{workspaceId}/scoped-personnel-groups/{groupId} Remove Personnel Group From Workspace Scope 🧪 #
GET /workspaces/{workspaceId}/scoped-personnel-counts Get Workspace Scoped Personnel Counts 🧪 #

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/drata-personnel-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 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

drata-personnel-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Drata Personnel API
  version: V2
  contact: {}
  description: 'Operations tagged Personnel across 2 of this provider''s published API definitions: drata-api-v2-openapi.json, drata-api-v2-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://public-api.drata.com/public/v2
- url: https://public-api.eu.drata.com/public/v2
- url: https://public-api.apac.drata.com/public/v2
tags:
- name: Personnel
  description: Personnel are people who work for your organization. The [help docs](https://help.drata.com/en/collections/2653981) have more information.
paths:
  /personnel:
    get:
      description: 'Get a paginated list of Personnel records.


        🔒 Requires **Personnel: List Personnel** permission.'
      operationId: PersonnelPublicV2Controller_listPersonnel
      parameters:
      - name: cursor
        required: false
        in: query
        description: This parameter is used to paginate through results. No value is needed for the first request. If there are additional results, the response will contain a `pagination.cursor` value that can be used in the subsequent request to retrieve the next page of results
        schema:
          type: string
      - name: size
        required: false
        in: query
        description: Number of results to return
        schema:
          minimum: 1
          maximum: 500
          default: 50
          type: number
      - name: sort
        required: false
        in: query
        description: Which field to sort by
        schema:
          $ref: '#/components/schemas/SortTypeLimitedEnum'
      - name: sortDir
        required: false
        in: query
        description: The direction to sort the data
        schema:
          $ref: '#/components/schemas/SortDirectionEnum'
      - name: includeTotalCount
        required: false
        in: query
        description: Include total count of all matching records in response. Only honored on first page (when cursor is null).
        schema:
          default: false
          example: false
          type: boolean
      - name: expand[]
        required: false
        in: query
        description: List of subcollections and sub-objects to expand
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelExpandEnum'
      - name: employmentStatus[]
        required: false
        in: query
        description: Personnel by employment statuses
        schema:
          type: array
          items:
            $ref: '#/components/schemas/EmploymentStatusEnum'
      - name: complianceStatus[]
        required: false
        in: query
        description: Filter Personnel by overall compliance status
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusEnum'
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonnelResponsePublicV2Dto'
        '400':
          description: Malformed data and/or validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponsePublicV2Dto'
        '401':
          description: Invalid Authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '403':
          description: You are not allowed to perform this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '412':
          description: You must accept the Drata terms and conditions to use the API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
      security:
      - bearer: []
      summary: List Personnel
      tags:
      - Personnel
      x-drata-permissions:
      - personnel-get
      x-product-area:
      - PERSONNEL_PAGE
    servers:
    - url: https://public-api.drata.com/public/v2
    - url: https://public-api.eu.drata.com/public/v2
    - url: https://public-api.apac.drata.com/public/v2
  /personnel-search:
    get:
      description: 'Personnel listing across all accessible workspaces, backed by OpenSearch. Supports full-text search via `q`, prefix matching on `firstName`/`lastName`, and a richer filter / sort surface than `GET /personnel`. Results are eventually consistent: use `GET /personnel` if read-your-writes freshness is required.


        🔒 Requires **Personnel: List Personnel** permission.'
      operationId: PersonnelPublicV2Controller_searchPersonnelAcrossWorkspaces
      parameters:
      - name: cursor
        required: false
        in: query
        description: This parameter is used to paginate through results. No value is needed for the first request. If there are additional results, the response will contain a `pagination.cursor` value that can be used in the subsequent request to retrieve the next page of results
        schema:
          type: string
      - name: size
        required: false
        in: query
        description: Number of results to return
        schema:
          minimum: 1
          maximum: 500
          default: 50
          type: number
      - name: sort
        required: false
        in: query
        description: Which field to sort by
        schema:
          $ref: '#/components/schemas/PersonnelSortEnum'
      - name: sortDir
        required: false
        in: query
        description: The direction to sort the data
        schema:
          $ref: '#/components/schemas/SortDirectionEnum'
      - name: includeTotalCount
        required: false
        in: query
        description: Include total count of all matching records in response. Only honored on first page (when cursor is null).
        schema:
          default: false
          example: false
          type: boolean
      - name: expand[]
        required: false
        in: query
        description: List of subcollections and sub-objects to expand
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelSearchExpandEnum'
      - name: facets[]
        required: false
        in: query
        description: Filter dimensions for which to return value counts in the response. Only honored on the first page (when `cursor` is null). Each requested facet adds one terms aggregation to the OpenSearch query. Bounded enum facets are enriched with zero-count entries; unbounded facets (like `groupIds`) return only values present in the result set.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelSearchFacetEnum'
      - name: q
        required: false
        in: query
        description: Free-text search across `firstName`, `lastName`, `fullName`, `email`, and `jobTitle`. Fuzzy, prefix-aware, and relevance-ranked.
        schema:
          maxLength: 191
          example: Smith
          type: string
      - name: firstName
        required: false
        in: query
        description: Filter Personnel whose first name starts with the provided value (prefix match, case-insensitive). For example, `firstName=John` matches Personnel named John, Johnathan, Johnny, etc.
        schema:
          maxLength: 191
          example: John
          type: string
      - name: lastName
        required: false
        in: query
        description: Filter Personnel whose last name starts with the provided value (prefix match, case-insensitive). For example, `lastName=Sm` matches Personnel named Smith, Smithson, etc.
        schema:
          maxLength: 191
          example: Sm
          type: string
      - name: employmentStatus[]
        required: false
        in: query
        description: Filter Personnel by one or more employment statuses.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/EmploymentStatusEnum'
      - name: complianceStatus[]
        required: false
        in: query
        description: Filter Personnel by overall compliance status. `OUT_OF_SCOPE` matches personnel whose compliance status is suppressed (out-of-scope contractors, future hires, etc.).
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: acceptedPoliciesStatus[]
        required: false
        in: query
        description: Filter Personnel by accepted-policies compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: bgCheckStatus[]
        required: false
        in: query
        description: Filter Personnel by background-check compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: identityMfaStatus[]
        required: false
        in: query
        description: Filter Personnel by identity MFA compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: securityTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by security training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: hipaaTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by HIPAA training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: aiAwarenessTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by AI awareness training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: offboardingStatus[]
        required: false
        in: query
        description: Filter Personnel by offboarding compliance status. Only matches personnel who have started or completed offboarding (i.e. have a separation date); currently-active personnel are not in scope for this filter.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: agentInstalledStatus[]
        required: false
        in: query
        description: Filter Personnel by whether the Drata Agent compliance check passes on their devices.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: passwordManagerStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup password-manager compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: diskEncryptionStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup disk-encryption compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: antivirusStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup antivirus compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: autoUpdatesStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup auto-updates compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: lockScreenStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup lock-screen compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: groupIds[]
        required: false
        in: query
        description: Filter Personnel by membership in any of the supplied group IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: syncStatus
        required: false
        in: query
        description: Filter Personnel by whether they have any identity (HRIS/IDP) connection. `SYNCED` returns Personnel with at least one identity connection; `NOT_SYNCED` returns Personnel with none.
        schema:
          $ref: '#/components/schemas/PersonnelSyncStatusPublicV2Enum'
      - name: idpConnectionIds[]
        required: false
        in: query
        description: Filter Personnel by their identity provider connection IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: hrisConnectionIds[]
        required: false
        in: query
        description: Filter Personnel by their HRIS provider connection IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: customFields
        required: false
        in: query
        description: Filter Personnel by Custom Field equality. Repeat the parameter with bracketed indices, e.g. `customFields[0][customFieldId]=42&customFields[0][value]=Engineering` (or `customFields[0][name]=Department` in place of `customFieldId`). Multiple entries are AND-ed.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldFilterPublicV2Dto'
      - name: customRangeFields
        required: false
        in: query
        description: Filter Personnel by Custom Field range. Repeat the parameter with bracketed indices, e.g. `customRangeFields[0][customFieldId]=99&customRangeFields[0][gte]=5&customRangeFields[0][lte]=10` (or `customRangeFields[0][name]=Score` in place of `customFieldId`). At least one of `gte` / `lte` must be supplied per entry. Multiple entries are AND-ed.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomRangeFieldFilterPublicV2Dto'
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonnelSearchResponsePublicV2Dto'
        '400':
          description: Malformed data and/or validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponsePublicV2Dto'
        '401':
          description: Invalid Authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '403':
          description: You are not allowed to perform this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '412':
          description: You must accept the Drata terms and conditions to use the API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
      security:
      - bearer: []
      summary: Search Personnel across all workspaces
      tags:
      - Personnel
      x-drata-permissions:
      - personnel-get
      x-product-area:
      - PERSONNEL_PAGE
    servers:
    - url: https://public-api.drata.com/public/v2
    - url: https://public-api.eu.drata.com/public/v2
    - url: https://public-api.apac.drata.com/public/v2
  /workspaces/{workspaceId}/personnel-search:
    get:
      description: 'Workspace-scoped Personnel listing backed by OpenSearch. Supports full-text search via `q`, prefix matching on `firstName`/`lastName`, and a richer filter / sort surface than `GET /personnel`. Results are eventually consistent; use `GET /personnel` if read-your-writes freshness is required.


        🔒 Requires **Personnel: List Personnel** permission.'
      operationId: PersonnelPublicV2Controller_searchPersonnel
      parameters:
      - name: workspaceId
        required: true
        in: path
        description: The Workspace ID associated to the Account
        schema:
          type: number
      - name: cursor
        required: false
        in: query
        description: This parameter is used to paginate through results. No value is needed for the first request. If there are additional results, the response will contain a `pagination.cursor` value that can be used in the subsequent request to retrieve the next page of results
        schema:
          type: string
      - name: size
        required: false
        in: query
        description: Number of results to return
        schema:
          minimum: 1
          maximum: 500
          default: 50
          type: number
      - name: sort
        required: false
        in: query
        description: Which field to sort by
        schema:
          $ref: '#/components/schemas/PersonnelSortEnum'
      - name: sortDir
        required: false
        in: query
        description: The direction to sort the data
        schema:
          $ref: '#/components/schemas/SortDirectionEnum'
      - name: includeTotalCount
        required: false
        in: query
        description: Include total count of all matching records in response. Only honored on first page (when cursor is null).
        schema:
          default: false
          example: false
          type: boolean
      - name: expand[]
        required: false
        in: query
        description: List of subcollections and sub-objects to expand
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelSearchExpandEnum'
      - name: facets[]
        required: false
        in: query
        description: Filter dimensions for which to return value counts in the response. Only honored on the first page (when `cursor` is null). Each requested facet adds one terms aggregation to the OpenSearch query. Bounded enum facets are enriched with zero-count entries; unbounded facets (like `groupIds`) return only values present in the result set.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelSearchFacetEnum'
      - name: q
        required: false
        in: query
        description: Free-text search across `firstName`, `lastName`, `fullName`, `email`, and `jobTitle`. Fuzzy, prefix-aware, and relevance-ranked.
        schema:
          maxLength: 191
          example: Smith
          type: string
      - name: firstName
        required: false
        in: query
        description: Filter Personnel whose first name starts with the provided value (prefix match, case-insensitive). For example, `firstName=John` matches Personnel named John, Johnathan, Johnny, etc.
        schema:
          maxLength: 191
          example: John
          type: string
      - name: lastName
        required: false
        in: query
        description: Filter Personnel whose last name starts with the provided value (prefix match, case-insensitive). For example, `lastName=Sm` matches Personnel named Smith, Smithson, etc.
        schema:
          maxLength: 191
          example: Sm
          type: string
      - name: employmentStatus[]
        required: false
        in: query
        description: Filter Personnel by one or more employment statuses.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/EmploymentStatusEnum'
      - name: complianceStatus[]
        required: false
        in: query
        description: Filter Personnel by overall compliance status. `OUT_OF_SCOPE` matches personnel whose compliance status is suppressed (out-of-scope contractors, future hires, etc.).
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: acceptedPoliciesStatus[]
        required: false
        in: query
        description: Filter Personnel by accepted-policies compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: bgCheckStatus[]
        required: false
        in: query
        description: Filter Personnel by background-check compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: identityMfaStatus[]
        required: false
        in: query
        description: Filter Personnel by identity MFA compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: securityTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by security training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: hipaaTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by HIPAA training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: aiAwarenessTrainingStatus[]
        required: false
        in: query
        description: Filter Personnel by AI awareness training compliance status.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: offboardingStatus[]
        required: false
        in: query
        description: Filter Personnel by offboarding compliance status. Only matches personnel who have started or completed offboarding (i.e. have a separation date); currently-active personnel are not in scope for this filter.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: agentInstalledStatus[]
        required: false
        in: query
        description: Filter Personnel by whether the Drata Agent compliance check passes on their devices.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: passwordManagerStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup password-manager compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: diskEncryptionStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup disk-encryption compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: antivirusStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup antivirus compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: autoUpdatesStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup auto-updates compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: lockScreenStatus[]
        required: false
        in: query
        description: 'Filter Personnel by the device-rollup lock-screen compliance status (worst-of-N across their devices). ⚠️ Coverage limitation: this filter excludes personnel without applicable device compliance data. This includes out-of-scope employment statuses, personnel with no devices, and personnel whose only device has an unknown management source. Filtering by `OUT_OF_SCOPE` returns no results for this filter.'
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceCheckStatusPublicV2Enum'
      - name: groupIds[]
        required: false
        in: query
        description: Filter Personnel by membership in any of the supplied group IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: syncStatus
        required: false
        in: query
        description: Filter Personnel by whether they have any identity (HRIS/IDP) connection. `SYNCED` returns Personnel with at least one identity connection; `NOT_SYNCED` returns Personnel with none.
        schema:
          $ref: '#/components/schemas/PersonnelSyncStatusPublicV2Enum'
      - name: idpConnectionIds[]
        required: false
        in: query
        description: Filter Personnel by their identity provider connection IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: hrisConnectionIds[]
        required: false
        in: query
        description: Filter Personnel by their HRIS provider connection IDs.
        schema:
          type: array
          items:
            type: number
            minimum: 1
      - name: customFields
        required: false
        in: query
        description: Filter Personnel by Custom Field equality. Repeat the parameter with bracketed indices, e.g. `customFields[0][customFieldId]=42&customFields[0][value]=Engineering` (or `customFields[0][name]=Department` in place of `customFieldId`). Multiple entries are AND-ed.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldFilterPublicV2Dto'
      - name: customRangeFields
        required: false
        in: query
        description: Filter Personnel by Custom Field range. Repeat the parameter with bracketed indices, e.g. `customRangeFields[0][customFieldId]=99&customRangeFields[0][gte]=5&customRangeFields[0][lte]=10` (or `customRangeFields[0][name]=Score` in place of `customFieldId`). At least one of `gte` / `lte` must be supplied per entry. Multiple entries are AND-ed.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomRangeFieldFilterPublicV2Dto'
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonnelSearchResponsePublicV2Dto'
        '400':
          description: Malformed data and/or validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponsePublicV2Dto'
        '401':
          description: Invalid Authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '403':
          description: You are not allowed to perform this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '412':
          description: You must accept the Drata terms and conditions to use the API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseDto'
      security:
      - bearer: []
      summary: Search Personnel within a workspace
      tags:
      - Personnel
      x-drata-permissions:
      - personnel-get
      x-product-area:
      - PERSONNEL_PAGE
    servers:
    - url: https://public-api.drata.com/public/v2
    - url: https://public-api.eu.drata.com/public/v2
    - url: https://public-api.apac.drata.com/public/v2
  /personnel/{personnelId}:
    get:
      description: 'Get a single Personnel record.


        🔒 Requires **Personnel: Get Personnel** permission.'
      operationId: PersonnelPublicV2Controller_getPerson
      parameters:
      - name: expand[]
        required: false
        in: query
        description: List of subcollections and sub-objects to expand
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PersonnelExpandEnum'
      - name: personnelId
        required: true
        in: path
        descr

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