generated: '2026-07-15' method: generated source: openapi/particle-health-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 59 by_action_class: connected: 42 acting: 17 by_consequence: read: 42 write: 17 human_in_the_loop_required: 0 operations: - path: /auth method: get operationId: getAuthToken x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients method: get operationId: listPatients x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients method: post operationId: submitPatient x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v2/patients/{id} method: get operationId: getPatient x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients/{id} method: delete operationId: deletePatient x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v2/patients/search method: post operationId: searchPatient x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v2/patients/{particle_patient_id}/query method: get operationId: getPatientQueryStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients/{particle_patient_id}/query method: post operationId: createPatientQuery x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/queries method: get operationId: listQueries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/queries method: post operationId: createQuery x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/queries/{id} method: get operationId: getQuery x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas method: post operationId: submitDeltasQuery x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /deltas/{particle_patient_id} method: get operationId: getDeltasQueryStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas/r4/Patient/{particle_patient_id}/$everything method: get operationId: collectDeltasFhirEverything x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas/r4/{resource_type} method: get operationId: searchDeltasFhirResources x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas/r4/{resource_type}/{resource_id} method: get operationId: readDeltasFhirResource x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas/flat/{particle_patient_id} method: get operationId: collectDeltasFlatDatasets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deltas/flat/{particle_patient_id}/{resource_type}/{resource_id} method: get operationId: getDeltasFlatResource x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /r4/Patient method: post operationId: createFhirPatient x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /r4/Patient/{patient_id}/$everything method: get operationId: getFhirPatientEverything x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /r4/Patient/{patient_id}/query method: get operationId: getFhirPatientQueryStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /r4/Patient/{patient_id}/query method: post operationId: createFhirPatientQuery x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /r4/{resource_type} method: get operationId: searchFhirResources x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /r4/{resource_type}/{resource_id} method: get operationId: readFhirResource x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /flat method: post operationId: submitFlatPatient x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /flat/{id} method: get operationId: getFlatPatient x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /flat/{id}/collect-data method: get operationId: collectFlatDatasets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /flat/{patient_id}/{resource_type}/{resource_id} method: get operationId: getFlatResource x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients/{particle_patient_id}/ccda method: get operationId: getCcdaFiles x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients/{particle_patient_id}/fhir method: get operationId: getFhirDatasets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/patients/{particle_patient_id}/flat method: get operationId: collectV2FlatDatasets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/documents method: post operationId: submitDocument x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/documents/{id} method: get operationId: getDocument x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/documents/{id} method: delete operationId: deleteDocument x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/documents/patient/{id} method: get operationId: getPatientDocuments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/batches method: get operationId: listBatches x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/batches/{batch_type} method: post operationId: createBatch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/batches/{batch_id} method: get operationId: getBatch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /hl7v2/message/{id} method: get operationId: getHl7v2Message x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /hl7v2/patient/{particle_patient_id} method: get operationId: getHl7v2Messages x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/alerts/network method: get operationId: getNetworkAlerts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/alerts/network/{id} method: get operationId: getNetworkAlert x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/patients/{id}/signals method: get operationId: getPatientSignals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/patients/signalscohort method: get operationId: getPatientSignalsCohort x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/patients/{particle_patient_id}/subscriptions method: get operationId: listPatientSubscriptions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/patients/{particle_patient_id}/subscriptions method: post operationId: createPatientSubscriptions x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/patients/{particle_patient_id}/subscriptions method: delete operationId: deletePatientSubscriptions x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/patients/subscriptions method: post operationId: createCohortSubscriptions x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/patients/{particle_patient_id}/subscriptions/trigger-sandbox-workflow method: post operationId: triggerSandboxWorkflow x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/networkparticipants method: get operationId: searchNetworkParticipants x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/networkparticipants/state/{state} method: get operationId: searchNetworkParticipantsByState x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/networkparticipants/zipcode/{zip} method: get operationId: searchNetworkParticipantsByZipcode x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/patients/{particle_patient_id}/provider-map method: get operationId: getPatientProviderMap x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/files/{query_id}/{file_id} method: get operationId: downloadFile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/files/{query_id}/zip method: get operationId: downloadQueryZip x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /projects method: get operationId: searchProjects x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /projects/{project_id}/notifications method: get operationId: listProjectNotifications x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /projects/{project_id}/notifications method: post operationId: createProjectNotification x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /service-accounts method: get operationId: searchServiceAccounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none