---
title: "Verify an Accounts-authorized native READ registration"
method: POST
path: "/v1/internal/native-enrollments/enroll"
---

# Verify an Accounts-authorized native READ registration

`POST /v1/internal/native-enrollments/enroll`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/internal/native-enrollments/enroll`
- Auth: HTTP bearer

Default off. Accounts authorizes the current owner/admin of the exact existing Commerce workspace and signs a command. Core checks current Accounts JWKS and the SYNCED human workspace projection; no org, membership, merchant ADMIN key or Marketplace purchase is created. A command lease lasts at most 30 seconds, with at most 5 seconds future clock skew. JSON only; no query, Origin or Cookie. command_id has immutable semantic content; retries may refresh only issued_at and authorization_expires_at. No route executes a commerce or payment transaction. Requires fresh Entra tenant identity plus an exact operator-managed assignment to this Accounts/Core workspace, tenant, BC environment and company. Provider proof must be verified within 10 minutes of command issue and outlive its lease. Core selects its managed application and reads only the exact company and native guardSettings. Configured/enabled guard state is observed separately from READ permission. Atomic activation records an Accounts enrollment grant with can_configure=false. Reverification pins the existing enrollment/connection/revision and increments the revision. A successful immutable retry returns the original receipt without another provider read.

## Request body

- AccountsNativeEnrollmentEnrollEnvelope
  - `payload` AccountsNativeEnrollmentEnrollCommand, required (unresolved $ref)
  - `evidence` AccountsNativeEnrollmentEvidence, required
    - `algorithm` 'Ed25519', required
    - `key_id` string, required
    - `payload_sha256` string, required
    - `signature` string, required

## Response `200`

Bounded enrollment metadata; execution_available remains false

- AccountsNativeEnrollmentEnrolled
  - `version` 'accounts-native-enrollment-v1', required
  - `account_org_id` string, required
  - `account_workspace_id` string, required
  - `product` 'commerce', required
  - `workspace_environment` 'sandbox' | 'production', required
  - `command_id` string, uuid, required
  - `enrollment_id` string, uuid, required
  - `connection_id` string, uuid, required
  - `connection_revision` integer, required
  - `platform` 'D365_BC', required
  - `tenant_id` string, uuid, required
  - `environment_name` string, required
  - `company_id` string, uuid, required
  - `execution_available` false, required
  - `status` 'enrolled', required
  - `read_granted` true, required
  - `provider_read_observed_at` string, date-time, required
  - `guard_enabled` boolean, required
  - `guard_configured` boolean, required

## Other responses

- `400`: Invalid bounded command or transport
- `401`: Dedicated Accounts service bearer required
- `403`: Current Accounts, identity or managed assignment authority denied
- `404`: Exact enrollment is not in the authorized workspace
- `409`: Command conflict, concurrent attempt or changed connection revision
- `413`: Command exceeds 8192 bytes
- `429`: Durable address or workspace request limit reached
- `503`: Enrollment disabled or required dependency unavailable

---

[API](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/revisions/357f5e459d0c?raw)
