Diagnostics API#
Permission Service serves a diagnostics API that reports which policies would be evaluated for a given authorization request, and the evaluation priority that would apply, instead of returning a decision. It is a troubleshooting tool for policy authors: when a request is allowed or denied unexpectedly, diagnostics shows the exact candidate set and the order it would be evaluated in, without changing any state.
The API is specific to this service and is not part of the published Omniverse Storage Permission API, so it is documented in full here. It is always available — there is no switch that turns it off — and it reuses the request bodies of the authorization API, which the Omniverse Storage Permission API documentation specifies.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
Endpoints#
Method |
Path |
Purpose |
|---|---|---|
POST |
|
Report the candidate policies and evaluation priority for one authorization request. |
POST |
|
Report the same per action, for a batched authorization request. |
Error codes#
Status |
Condition |
|---|---|
|
The payload parsed, but the request is invalid — for example, a resource id that cannot be encoded. |
|
The bearer token is missing, invalid, or expired (authentication enabled). |
|
The caller is not authorized for |
|
The request payload failed validation — a missing |
|
An unexpected error occurred while reading metadata or policies. |
Error bodies are a plain JSON string, as specified for the authorization API in the Omniverse Storage Permission API documentation.
Request and response models#
Both endpoints accept the authorization request bodies — AuthorizationPayload for the single endpoint and AuthorizationBatchRequest for the batched one. Their fields are specified in the Omniverse Storage Permission API documentation and are not repeated here. The response models below are specific to this API.
DiagnosticsPolicy#
One candidate policy. The scope fields are present only when the policy pins that dimension.
Field |
Type |
Required |
Description |
|---|---|---|---|
|
integer |
yes |
Policy identifier. |
|
integer |
yes |
Evaluation order of the policy. Lower values are evaluated first. |
|
string |
yes |
Cedar policy text. |
|
object |
no |
Principal scope, as |
|
object |
no |
Group scope of a |
|
object |
no |
Action scope, as |
|
object |
no |
Resource scope, as |
DiagnosticsBatchResult#
Diagnostics for one batch entry.
Field |
Type |
Required |
Description |
|---|---|---|---|
|
object |
no |
Resource the batch entry targets, as submitted. Absent when the entry has no resource. |
|
string |
yes |
Evaluation priority for this entry’s resource type: |
|
array of DiagnosticsActionPolicies |
yes |
One entry per action in the batch, in request order. |
DiagnosticsActionPolicies#
Candidate policies for one action of a batch entry.
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Service of the action, echoing the request. |
|
string |
yes |
Action name, echoing the request. |
|
array of DiagnosticsPolicy |
yes |
Candidate policies for this action, in evaluation order. |
How the service serves these endpoints#
For each request — and, in the batched variant, for each action of each batch entry — the service:
Canonicalizes the submitted resource, applying the URL remapper when one is configured, and URL-encodes the resource id the same way a real authorization request does.
Verifies the caller holds
permissions:diagnostics, and rejects the request before reading any policy otherwise.Resolves the resource type’s evaluation priority from the metadata store, falling back to
forbidwhen the resource type is not registered. See Evaluation priority for resources.Fetches the candidate policies whose scopes match the principal, group memberships, action, and resource, using the same retrieval filter as a real authorization request.
Returns the priority and the candidate policies, sorted by
orderascending and then byidascending — the ordering the evaluation pipeline applies.
Because the lookups are the same ones a live request performs, a diagnostics call reflects the cached metadata and stored policies the next authorization request would use. It does not run Cedar, so it reports no decision, and it does not populate the evaluation cache.
For how the reported priority and ordering combine into an allow or deny decision, see How authorization requests are evaluated.
See next#
Service notifications — events published when the policies reported here change.
Related pages:
How authorization requests are evaluated — the pipeline and Cedar semantics behind every authorization call.
Managing policies through the REST API — how the reported policies are created and maintained.
Permission Web UI — the Diagnostics page that presents this API as a form.