Documentation
REST API reference (v1)
Generated from the shared contract route table. Agent protocol: datanivra.agent/v1.
| Method | Path | Operation | Auth | Permission | Request → response |
|---|---|---|---|---|---|
GET | /v1/health | getHealth | Public | — | — → HealthStatus |
GET | /v1/health/live | getLiveness | Public | — | — → HealthStatus |
POST | /v1/auth/dev-login | devLogin | Public | — | DevLogin → SessionToken |
GET | /v1/auth/oidc/config | getOidcConfig | Public | — | — → OidcConfig |
POST | /v1/auth/oidc/start | startOidcLogin | Public | — | OidcLoginStart → OidcAuthorization |
POST | /v1/auth/oidc/callback | completeOidcLogin | Public | — | OidcCallback → SessionToken |
POST | /v1/auth/oidc/exchange | exchangeOidcToken | Public | — | OidcTokenExchange → SessionToken |
GET | /v1/auth/signup/config | getSignupConfig | Public | — | — → SignupConfig |
POST | /v1/auth/signup/start | startSignup | Public | — | SignupStart → SignupAccepted |
POST | /v1/auth/signup/verify | verifySignup | Public | — | SignupVerify → SignupTicket |
POST | /v1/auth/signup/slug | suggestTenantSlug | Public | — | SlugRequest → SlugSuggestion |
POST | /v1/auth/signup/complete | completeSignup | Public | — | SignupComplete → SessionToken |
POST | /v1/auth/email/start | startEmailLogin | Public | — | EmailLoginStart → SignupAccepted |
POST | /v1/auth/email/complete | completeEmailLogin | Public | — | EmailLoginComplete → SessionToken |
POST | /v1/auth/session/refresh | refreshSession | User | — | — → SessionToken |
POST | /v1/auth/logout | logout | User | — | — → LogoutResult |
GET | /v1/me | getMe | User | — | — → User |
GET | /v1/tenant | getTenant | User | — | — → Tenant |
GET | /v1/organization | getOrganization | User | — | — → Organization |
PATCH | /v1/organization | updateOrganization | User | org.admin | OrganizationUpdate → Organization |
GET | /v1/organization/separation-of-duties | getSeparationOfDuties | User | org.admin | — → SeparationOfDutiesSettings |
PATCH | /v1/organization/separation-of-duties | updateSeparationOfDuties | User | org.admin | SeparationOfDutiesSettings → SeparationOfDutiesSettings |
GET | /v1/roles | listRoles | User | — | — → RoleDefinition[] |
GET | /v1/users | listUsers | User | user.manage | — → User[] |
POST | /v1/users | inviteUser | User | user.manage | UserInvite → User |
PATCH | /v1/users/{user_id}/roles | updateUserRoles | User | user.manage | RoleAssignmentUpdate → User |
POST | /v1/users/{user_id}/disable | disableUser | User | user.manage | — → User |
POST | /v1/users/{user_id}/enable | enableUser | User | user.manage | — → User |
GET | /v1/agents | listAgents | User | agent.read | — → AgentRegistration[] |
GET | /v1/agents/{agent_id} | getAgent | User | agent.read | — → AgentRegistration |
POST | /v1/agents/enrollment-tokens | createEnrollmentToken | User | agent.manage | AgentEnrollmentTokenRequest → EnrollmentTokenIssued |
POST | /v1/agents/{agent_id}/revoke | revokeAgent | User | agent.manage | — → AgentRegistration |
POST | /v1/agent/enroll | agentEnroll | Enrollment token | — | AgentEnvelope → ControlPlaneEnvelope |
POST | /v1/agent/token | agentToken | Agent | — | — → AgentAccessToken |
POST | /v1/agent/heartbeat | agentHeartbeat | Agent | — | AgentEnvelope → ControlPlaneEnvelope |
POST | /v1/agent/leases | agentLease | Agent | — | AgentEnvelope → ControlPlaneEnvelope |
POST | /v1/agent/leases/{lease_id}/ack | agentLeaseAck | Agent | — | AgentEnvelope → ControlPlaneEnvelope |
POST | /v1/agent/leases/{lease_id}/renew | agentLeaseRenew | Agent | — | AgentEnvelope → ControlPlaneEnvelope |
POST | /v1/agent/reports | agentReport | Agent | — | AgentEnvelope → ControlPlaneEnvelope |
GET | /v1/sources | listSources | User | source.read | — → DataSourceDescriptor[] |
POST | /v1/sources | createSource | User | source.register | DataSourceCreate → DataSourceDescriptor |
GET | /v1/sources/{source_id} | getSource | User | source.read | — → DataSourceDescriptor |
POST | /v1/sources/{source_id}/sensitivity-attestation | attestSourceSensitivity | User | source.attest | SourceSensitivityAttestation → DataSourceDescriptor |
POST | /v1/sources/{source_id}/discover | discoverSource idempotent | User | discovery.run | — → Job |
GET | /v1/sources/{source_id}/schema | getSourceSchema | User | source.read | — → SchemaMetadata |
GET | /v1/findings | listFindings | User | source.read | — → SensitiveFieldFinding[] |
POST | /v1/findings/{finding_id}/review | reviewFinding | User | finding.review | FindingReview → SensitiveFieldFinding |
GET | /v1/policies | listPolicies | User | policy.read | — → Policy[] |
POST | /v1/policies | createPolicy | User | policy.edit | PolicyCreate → Policy |
GET | /v1/policies/{policy_id} | getPolicy | User | policy.read | — → Policy |
GET | /v1/policies/{policy_id}/versions | listPolicyVersions | User | policy.read | — → PolicyVersion[] |
POST | /v1/policies/{policy_id}/versions | createPolicyVersion | User | policy.edit | PolicyVersionCreate → PolicyVersion |
POST | /v1/policies/{policy_id}/versions/{version}/submit | submitPolicyVersion | User | policy.edit | — → PolicyVersion |
POST | /v1/policies/{policy_id}/versions/{version}/approve | approvePolicyVersion | User | policy.approve | PolicyApproval → PolicyVersion |
POST | /v1/policies/{policy_id}/versions/{version}/deprecate | deprecatePolicyVersion | User | policy.approve | — → PolicyVersion |
POST | /v1/policies/{policy_id}/versions/{version}/revoke | revokePolicyVersion | User | policy.approve | PolicyRevocation → PolicyVersion |
GET | /v1/environments | listEnvironments | User | dataset.read | — → Environment[] |
POST | /v1/environments | createEnvironment | User | environment.manage | EnvironmentCreate → Environment |
GET | /v1/dataset-requests | listDatasetRequests | User | dataset.read | — → DatasetRequest[] |
POST | /v1/dataset-requests | createDatasetRequest idempotent | User | dataset.request | DatasetRequestCreate → DatasetRequest |
GET | /v1/dataset-requests/{request_id} | getDatasetRequest | User | dataset.read | — → DatasetRequest |
POST | /v1/dataset-requests/{request_id}/cancel | cancelDatasetRequest | User | dataset.request | — → DatasetRequest |
POST | /v1/dataset-requests/{request_id}/approve | approveDatasetRequest | User | dataset.approve | DatasetRequestDecision → DatasetRequest |
POST | /v1/dataset-requests/{request_id}/reject | rejectDatasetRequest | User | dataset.approve | DatasetRequestDecision → DatasetRequest |
GET | /v1/datasets | listDatasets | User | dataset.read | — → Dataset[] |
GET | /v1/datasets/{dataset_id} | getDataset | User | dataset.read | — → Dataset |
GET | /v1/datasets/{dataset_id}/versions | listDatasetVersions | User | dataset.read | — → DatasetVersion[] |
GET | /v1/datasets/{dataset_id}/versions/{version}/manifest | getDatasetManifest | User | dataset.read | — → DatasetManifest |
GET | /v1/datasets/{dataset_id}/lineage | getDatasetLineage | User | dataset.read | — → LineageGraph |
POST | /v1/datasets/{dataset_id}/refresh | refreshDataset idempotent | User | dataset.request | RefreshRequest → Job |
POST | /v1/datasets/{dataset_id}/versions/{version}/provision | provisionDataset idempotent | User | dataset.provision | ProvisionRequest → Job |
POST | /v1/datasets/{dataset_id}/revoke | revokeDataset | User | dataset.revoke | DatasetRevocation → Dataset |
POST | /v1/datasets/{dataset_id}/versions/{version}/certification-review | reviewDatasetCertification | User | certification.review | CertificationReviewDecision → DatasetVersion |
POST | /v1/datasets/{dataset_id}/rollback | rollbackDataset idempotent | User | dataset.provision | RollbackRequest → Job |
GET | /v1/refresh-calendar | getRefreshCalendar | User | dataset.read | — → RefreshCalendarEntry[] |
GET | /v1/jobs | listJobs | User | job.read | — → Job[] |
GET | /v1/jobs/{job_id} | getJob | User | job.read | — → Job |
GET | /v1/jobs/{job_id}/steps | listJobSteps | User | job.read | — → JobStep[] |
GET | /v1/jobs/{job_id}/events | listJobEvents | User | job.read | — → JobEvent[] |
POST | /v1/jobs/{job_id}/cancel | cancelJob | User | job.cancel | — → Job |
GET | /v1/certification-reports | listCertificationReports | User | dataset.read | — → CertificationReport[] |
GET | /v1/certification-reports/{report_id} | getCertificationReport | User | dataset.read | — → CertificationReport |
GET | /v1/evidence | listEvidence | User | dataset.read | — → EvidenceReference[] |
GET | /v1/audit-events | listAuditEvents | User | audit.read | — → AuditEvent[] |
GET | /v1/audit-events/verify | verifyAuditChain | User | audit.read | — → AuditChainVerification |
GET | /v1/industry-packs | listIndustryPacks | User | — | — → IndustryPack[] |
POST | /v1/industry-packs/{pack_id}/enable | enableIndustryPack | User | pack.manage | — → IndustryPack |
POST | /v1/industry-packs/{pack_id}/disable | disableIndustryPack | User | pack.manage | — → IndustryPack |
GET | /v1/entitlements/current | getCurrentEntitlement | User | billing.read | — → Entitlement |
GET | /v1/usage | listUsage | User | billing.read | — → UsageMeter[] |
POST | /v1/billing/webhooks/{provider} | receiveBillingWebhook | provider | — | — → WebhookAck |
GET | /v1/billing/subscription | getBillingSubscription | User | billing.read | — → SubscriptionView |
POST | /v1/billing/checkout | createBillingCheckout idempotent | User | billing.manage | CheckoutRequest → CheckoutResponse |
POST | /v1/billing/subscription/cancel | cancelBillingSubscription | User | billing.manage | — → SubscriptionView |
GET | /v1/billing/overview | getBillingOverview | User | billing.read | — → BillingOverview |
POST | /v1/billing/portal | createBillingPortalSession | User | billing.manage | — → BillingPortalSession |
POST | /v1/billing/subscription/change | changeBillingPlan idempotent | User | billing.manage | PlanChangeRequest → SubscriptionView |
POST | /v1/capacity/estimate | estimateCapacity | User | — | CapacityEstimateRequest → CapacityEstimate |
GET | /v1/sandbox | getSandbox | User | — | — → SandboxView |
POST | /v1/sandbox | createSandbox | User | agent.manage | SandboxCreate → SandboxView |
POST | /v1/sandbox/reset | resetSandbox | User | agent.manage | — → SandboxView |
POST | /v1/sandbox/progress | updateSandboxProgress | User | — | SandboxProgressUpdate → SandboxView |
POST | /v1/sandbox-runner/claims | claimSandboxWork | runner | — | — → SandboxClaims |
POST | /v1/sandbox-runner/sandboxes/{sandbox_id}/report | reportSandboxStatus | runner | — | SandboxRunnerReport → SandboxRunnerAck |
GET | /v1/reservations | listReservations | User | dataset.read | — → DatasetReservation[] |
POST | /v1/reservations | createReservation | User | dataset.provision | DatasetReservationCreate → DatasetReservation |
GET | /v1/reservations/{reservation_id} | getReservation | User | dataset.read | — → DatasetReservation |
POST | /v1/reservations/{reservation_id}/renew | renewReservation | User | dataset.provision | DatasetReservationRenew → DatasetReservation |
POST | /v1/reservations/{reservation_id}/release | releaseReservation | User | dataset.provision | DatasetReservationRelease → DatasetReservation |
GET | /v1/public/plans | listPlans | Public | — | — → PlanOffer[] |
POST | /v1/public/leads | submitLead | Public | — | LeadSubmission → ReportAck |
POST | /v1/public/leads/form-tokens | issueLeadFormToken | Public | — | — → LeadFormToken |
POST | /v1/public/connector-interest | submitConnectorInterest | Public | — | ConnectorInterest → ReportAck |
Read the API overview for authentication, errors, pagination and idempotency.