> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plainid.io/llms.txt
> Use this file to discover all available pages before exploring further.
# Get Policy Report
> This API call retrieves the Policy Report download link and relevant metadata.
## OpenAPI
````json GET /api/1.0/reports/{envId}/{reportId}
{
"openapi": "3.0.3",
"info": {
"title": "Management APIs",
"version": "1.0.0",
"contact": {
"name": "PlainID",
"url": "https://plainid.com",
"email": "contact@plainid.com"
},
"license": {
"name": "Commercial",
"url": "https://plainid.com/license"
},
"termsOfService": "https://www.plainid.com/terms/",
"description": "
The PlainID Authorization Platform provides Management capabilities through the APIs below.
To access the Management APIs, make sure to enter your dedicated domain according to your PlainID Tenant Location:
| Region | Base URL |
|---|
| United States (US) | https://api.us1.plainid.io |
| Canada (CA) | https://api.ca1.plainid.io |
| Europe (EU) | https://api.eu1.plainid.io |
| Local PAA | https://api.plainid.local |
"
},
"servers": [
{
"description": "United States",
"url": "https://api.us1.plainid.io"
},
{
"description": "Europe",
"url": "https://api.eu1.plainid.io"
},
{
"description": "Canada",
"url": "https://api.ca1.plainid.io"
},
{
"description": "Local PAA",
"url": "https://api.plainid.local"
}
],
"tags": [
{
"name": "access-file-authorizer-oas",
"description": "access-file-authorizer-oas"
},
{
"name": "authz-packager-oas",
"description": "authz-packager-oas"
},
{
"name": "SQL Database Authorizer",
"description": "API for modifying SQL queries based on authorization policies"
},
{
"name": "delegated-admin-oas",
"description": "delegated-admin-oas"
},
{
"name": "Discovery",
"description": "Discovery APIs"
},
{
"name": "Enrichment",
"description": "Enrichment APIs"
},
{
"name": "env-mgmt-oas",
"description": "env-mgmt-oas"
},
{
"name": "hybrid-commander-oas",
"description": "hybrid-commander-oas"
},
{
"name": "auth-keys",
"description": "Auth key operations"
},
{
"name": "components",
"description": "Component operations"
},
{
"name": "paas",
"description": "PAA operations"
},
{
"name": "paa-groups",
"description": "PAA group operations"
},
{
"name": "packages",
"description": "Package configuration operations"
},
{
"name": "secret-stores",
"description": "Secret store operations"
},
{
"name": "Table Mapping",
"description": "Table Mapping"
},
{
"name": "Column Mapping",
"description": "Column Mapping"
},
{
"name": "Api Mapping",
"description": "Api Mapping"
},
{
"name": "notifier-oas",
"description": "notifier-oas"
},
{
"name": "shadow-tracker",
"description": "Shadow tracker SSE stream"
},
{
"name": "orchestrator-oas",
"description": "orchestrator-oas"
},
{
"name": "POP",
"description": "pop operations"
},
{
"name": "org-mgmt-oas",
"description": "org-mgmt-oas"
},
{
"name": "pip-mgmt-oas",
"description": "pip-mgmt-oas"
},
{
"name": "monitor-loggers",
"description": "monitor-loggers"
},
{
"name": "Policy Management APIs",
"description": "Policy Management APIs"
},
{
"name": "Policy Management APIs 1.0",
"description": "Policy Management APIs 1.0"
},
{
"name": "Policy Management APIs 2.0",
"description": "Policy Management APIs 2.0"
},
{
"name": "Policy Building Blocks Management APIs 2.0",
"description": "Policy Building Blocks Management APIs 2.0"
},
{
"name": "Audit",
"description": "Audit"
},
{
"name": "Asset Template",
"description": "Asset Template"
},
{
"name": "Application",
"description": "Application"
},
{
"name": "Api Mapper",
"description": "Api Mapper"
},
{
"name": "Identity Template",
"description": "Identity Template"
},
{
"name": "Identity Sources",
"description": "Identity Sources"
},
{
"name": "Mapper Sets",
"description": "Mapper Sets"
},
{
"name": "Identity Template V2",
"description": "Identity Template V2"
},
{
"name": "PAA Sources",
"description": "PAA Sources"
},
{
"name": "PAA Views",
"description": "PAA Views"
},
{
"name": "PAA Groups",
"description": "PAA Groups"
},
{
"name": "Scope",
"description": "Managed Scope APIs"
},
{
"name": "Authentication for Management APIs",
"description": "Authentication for Management APIs"
},
{
"name": "runtime",
"description": "runtime"
},
{
"name": "Cache Management",
"description": "Cache invalidation operations for Runtime service"
}
],
"externalDocs": {
"url": "https://docs.plainid.io/apidocs/policy-management-apis"
},
"paths": {
"/api/1.0/reports/{envId}/{reportId}": {
"get": {
"tags": [
"env-mgmt-oas"
],
"summary": "Get Policy Report",
"security": [
{
"bearerAuth": []
}
],
"operationId": "getPlatformReport",
"description": "This API call retrieves the Policy Report download link and relevant metadata.",
"parameters": [
{
"name": "envId",
"in": "path",
"description": "The Environment ID can be found under the Details Tab in the Environment Settings. If your PAA is installed on the Tenant level, input `-` as your `envId`.",
"required": "true",
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "reportId",
"in": "path",
"description": "Unique identifier for the report request. You can retrieve it by sending a POST request to the Create a Policy Report API call.",
"required": "true",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "Report metadata and download link (only when status is ready)",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Report metadata. When status is \"ready\", includes a time-limited presigned download URL.",
"properties": {
"reportId": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the report job."
},
"reportName": {
"type": "string",
"description": "Auto-generated report file name, derived from the report type, environment ID, and creation timestamp."
},
"reportType": {
"type": "string",
"description": "The type of report that was generated (e.g. policies_by_attribute)."
},
"status": {
"type": "string",
"enum": [
"processing",
"ready",
"failed"
],
"description": "Current generation status. Poll until \"ready\" to obtain the download URL."
},
"dateTime": {
"type": "string",
"description": "Date and time the report job was created (UTC, format \"YYYY-MM-DD HH:mm\")."
},
"anchor": {
"type": "object",
"description": "Context anchor for the report, identifying the environment it belongs to.",
"properties": {
"envId": {
"type": "string",
"format": "uuid",
"description": "The environment ID the report was generated for."
}
}
},
"downloadUrl": {
"type": "string",
"description": "Presigned URL to download the report PDF. Present only when status is \"ready\". Expires at urlExpiresAt."
},
"urlExpiresAt": {
"type": "string",
"description": "Date and time when the presigned download URL expires (typically 24 hours after generation, UTC)."
},
"reportExpiresAt": {
"type": "string",
"description": "Date and time when the report PDF will be permanently deleted from storage (30 days after creation, UTC)."
}
}
}
}
},
"examples": {
"Ready (downloadUrl available)": {
"summary": "PDF generated; urlExpiresAt is when the presigned downloadUrl expires, reportExpiresAt is when the report is deleted from storage (30 days from creation).",
"value": {
"data": {
"reportId": "c3100ddd-e77d-4bb3-8704-d03e01f36443",
"reportName": "policies_by_attribute_7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38_2026-05-11_13-15",
"reportType": "policies_by_attribute",
"status": "ready",
"dateTime": "2026-05-11 13:15",
"anchor": {
"envId": "7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38"
},
"downloadUrl": "https://download.plainid.io/reports/staging/TNT3P2R3SN6VRPC/7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38/reports/c3100ddd-e77d-4bb3-8704-d03e01f36443.pdf?Expires=1778675230&Signature=...&Key-Pair-Id=K142RUNA675OHA",
"urlExpiresAt": "2026-05-12 13:16",
"reportExpiresAt": "2026-06-10 13:15"
}
}
},
"Still processing (no downloadUrl yet)": {
"summary": "Report PDF is still being generated; downloadUrl is not available until status displays \"ready\"",
"value": {
"data": {
"reportId": "c3100ddd-e77d-4bb3-8704-d03e01f36443",
"reportName": "policies_by_attribute_7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38_2026-05-11_13-15",
"reportType": "policies_by_attribute",
"status": "processing",
"dateTime": "2026-05-11 13:15",
"anchor": {
"envId": "7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38"
}
}
}
}
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/emptyError"
},
"examples": {
"Feature disabled for tenant": {
"summary": "platform.reports.use feature toggle is off for this tenant",
"value": {
"id": "EW76XA",
"code": "C-011",
"status": "403",
"name": "featureNotAllowedError",
"message": "Platform reports are not enabled for this tenant"
}
},
"Insufficient permissions on environment": {
"summary": "The current user lacks get permission on the target environment",
"value": {
"id": "EW77XA",
"status": "403",
"name": "forbiddenEnvironment",
"message": "operation get for resource Environment 7c04f99f-ddf4-4425-97c0-8fd9d2f9ea38 isn't allowed due to: the current user has no appropriate permissions"
}
}
}
}
}
},
"404": {
"description": "Report not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/emptyError"
},
"examples": {
"Report not found": {
"summary": "reportId does not exist, or belongs to a different envId / tenant",
"value": {
"id": "EW78XA",
"status": "404",
"name": "notFoundError",
"message": "report not found: c3100ddd-e77d-4bb3-8704-d03e01f36443"
}
}
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"emptyError": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"type": "integer"
},
"name": {
"type": "string"
},
"message": {
"type": "string"
},
"args": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
}
}
}
},
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"description": " For more details about Administration API Authentication, check out the Authentication APIs documentation
Provide your bearer token in the Authorization header when making requests to protected resources.
Example: `Authorization: Bearer 123`"
}
}
}
}
````