Drata · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Drata Personnel API

12 actions 12 updates phrasing extends openapi/drata-personnel-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Drata's API. It is a proposal applied on top of the contract, not a document Drata publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 12

$.info
$.paths['/personnel'].get
$.paths['/personnel-search'].get
$.paths['/workspaces/{workspaceId}/personnel-search'].get
$.paths['/personnel/{personnelId}'].get
$.paths['/personnel/{personnelId}'].put
$.paths['/personnel/actions'].post
$.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].get
$.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].put
$.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].post
$.paths['/workspaces/{workspaceId}/scoped-personnel-groups/{groupId}'].delete
$.paths['/workspaces/{workspaceId}/scoped-personnel-counts'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Drata Personnel API
  version: 1.0.0
extends: openapi/drata-personnel-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 11
- target: $.paths['/personnel'].get
  update:
    x-apievangelist-phrasing:
      intent: List personnel records
      effect: read
      questions:
      - Which employees on our personnel roster are out of compliance right now?
      - Can I page through the full personnel list filtered by employment status?
      instructions:
      - text: List all personnel records with employment status {employmentStatus}.
        slots:
          employmentStatus: query.employmentStatus[]
      - text: Page through the personnel roster where overall compliance status is {complianceStatus}.
        slots:
          complianceStatus: query.complianceStatus[]
      method: generated
      generated: '2026-09-26'
- target: $.paths['/personnel-search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search personnel across all workspaces
      effect: read
      questions:
      - How do I find a person by name or email across every workspace I can access?
      - Which people in any workspace are missing MFA or security training?
      - Can a search across all workspaces return facet counts by compliance status?
      instructions:
      - text: Search every workspace for personnel matching {q}.
        slots:
          q: query.q
      - text: Find personnel in all workspaces whose disk encryption status is {diskEncryptionStatus}.
        slots:
          diskEncryptionStatus: query.diskEncryptionStatus[]
      - text: Across all workspaces, find people whose last name starts with {lastName}.
        slots:
          lastName: query.lastName
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/personnel-search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search personnel within one workspace
      effect: read
      questions:
      - Can I search the people in a single workspace by first name prefix?
      - Which people in one specific workspace haven't completed HIPAA training?
      instructions:
      - text: Search workspace {workspaceId} for personnel matching {q}.
        slots:
          workspaceId: path.workspaceId
          q: query.q
      - text: In workspace {workspaceId}, find people whose background check status is {bgCheckStatus}.
        slots:
          workspaceId: path.workspaceId
          bgCheckStatus: query.bgCheckStatus[]
      method: generated
      generated: '2026-09-26'
- target: $.paths['/personnel/{personnelId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one person's personnel record
      effect: read
      questions:
      - How do I pull up a single employee's personnel record using their email?
      - What does Drata hold on file for one specific person?
      instructions:
      - text: Get the personnel record for {personnelId}.
        slots:
          personnelId: path.personnelId
      - text: Show personnel {personnelId} with {expand} expanded.
        slots:
          personnelId: path.personnelId
          expand: query.expand[]
      method: generated
      generated: '2026-09-26'
- target: $.paths['/personnel/{personnelId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a person's employment details
      effect: write
      questions:
      - How do I record the separation date for someone who left the company?
      - Will editing a person's start date by hand stop HRIS sync from overwriting it?
      - Can I note why a personnel record is marked as not a real person?
      instructions:
      - text: Set the separation date of personnel {personnelId} to {separatedAt}.
        slots:
          personnelId: path.personnelId
          separatedAt: requestBody.separatedAt
      - text: Change the employment status of {personnelId} to {employmentStatus}.
        slots:
          personnelId: path.personnelId
          employmentStatus: requestBody.employmentStatus
      - text: Update the start date for personnel {personnelId} to {startedAt}.
        slots:
          personnelId: path.personnelId
          startedAt: requestBody.startedAt
      method: generated
      generated: '2026-09-26'
- target: $.paths['/personnel/actions'].post
  update:
    x-apievangelist-phrasing:
      intent: Reset personnel IdP/HRIS sync
      effect: write
      questions:
      - How can I restore automatic identity provider updates after editing people manually?
      - Is it possible to reset HRIS sync for every person at once?
      instructions:
      - text: Run the {action} action on personnel {personnelIds}.
        slots:
          action: requestBody.action
          personnelIds: requestBody.personnelIds
      - text: Reset IdP and HRIS sync for all personnel.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].get
  update:
    x-apievangelist-phrasing:
      intent: List groups in a workspace's personnel scope
      effect: read
      questions:
      - Which personnel groups are currently in scope for a workspace?
      - What teams decide who counts as personnel in a given workspace?
      instructions:
      - text: List the personnel groups scoped to workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
      - text: Show the scoped groups for workspace {workspaceId}, {size} per page.
        slots:
          workspaceId: path.workspaceId
          size: query.size
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a workspace's scoped personnel groups
      effect: write
      questions:
      - Can I set the exact list of groups in a workspace's personnel scope in one call?
      - What happens to scoped groups I leave out when I overwrite the whole scope?
      instructions:
      - text: Replace the personnel scope of workspace {workspaceId} with groups {groupIds}.
        slots:
          workspaceId: path.workspaceId
          groupIds: requestBody.groupIds
      - text: Make {groupIds} the only groups in scope for workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
          groupIds: requestBody.groupIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/scoped-personnel-groups'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a group to a workspace's personnel scope
      effect: write
      questions:
      - How do I add one more team to a workspace's personnel scope?
      - What error comes back if the group I'm adding to the scope is already assigned?
      instructions:
      - text: Add group {groupId} to the personnel scope of workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
          groupId: requestBody.groupId
      - text: Bring personnel group {groupId} into scope for workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
          groupId: requestBody.groupId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/scoped-personnel-groups/{groupId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a group from a workspace's personnel scope
      effect: destructive
      questions:
      - Can I take a single department out of a workspace's scope without resending the full list?
      - Which call drops just one group from a workspace's personnel scope?
      instructions:
      - text: Remove group {groupId} from workspace {workspaceId}'s personnel scope.
        slots:
          workspaceId: path.workspaceId
          groupId: path.groupId
      - text: Take personnel group {groupId} out of scope for workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
          groupId: path.groupId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/workspaces/{workspaceId}/scoped-personnel-counts'].get
  update:
    x-apievangelist-phrasing:
      intent: Count personnel in a workspace's scope
      effect: read
      questions:
      - How many people are reachable through a workspace's scoped groups?
      - Can I compare a workspace's scoped headcount with the total IdP-connected personnel?
      instructions:
      - text: Count the scoped personnel for workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
      - text: Get scoped versus IdP-connected personnel totals for workspace {workspaceId}.
        slots:
          workspaceId: path.workspaceId
      method: generated
      generated: '2026-09-26'