> ## 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. # List Policy Dependencies > Returns an aggregated, deduplicated index of configuration objects required to promote or partially export the given policies. Supply policy **IDs** in the request body; the response lists dependency IDs grouped by object type so automation can call existing per-type Management API export endpoints without loading full policy payloads.

PermissionspolicyIds in the response is the subset of input IDs the caller may access in the environment. Unknown or inaccessible policy IDs are omitted silently (no error).

Limits — max 100 policy IDs per request. There is no cap on the number of identifiers returned per dependency group. For larger promotion batches, send multiple requests (e.g. 50–100 policies each) and merge dependencies per key on the client.

Filtering — optional dependencyTypes limits which dependency groups are resolved and returned (e.g. ["applications"]). When omitted, all nine groups are collected. Unknown type values return 422.

Identifiers — values are resource IDs (same identifier strings as other Management API export/import calls) for all groups except pipViewNames, which lists PIP view names. Scope values are scope IDs. Empty groups are omitted from dependencies.

Notice

Accessing the Policy Management APIs is through a dedicated domain/URL, according to your PlainID Tenant Location
  • United States (US) - `https://api.us1.plainid.io`
  • Canada (CA) - `https://api.ca1.plainid.io`
  • Europe (EU) - `https://api.eu1.plainid.io`

  • Using HTML Encoded Special Characters

    Use HTML encoded patterns when working with values that contain special characters like spaces, dashes, etc. Refer to this HTML URL Encoding Reference for a full list.


    Important note about headers

    Refer to the headers below to modify your cURL sample. Check if the following headers are in the sample, if not, ensure you add it to your cURL sample before pasting into your API tool.

    Headers

    *Required
    Header Value cURL Line
    Content-Type * `application/json` `-H "Content-Type:application/json"`
    Accept `application/json` `-H "Accept:application/json"`

    cURL Sample Guidelines

    In order for the relevant parameters to appear in the cURL sample, you can input the values in the interactive API console on the right in the Try It or Code Sample tabs. You can then copy the cURL sample from the Code Sample tab in the correct format.

    ## OpenAPI ````json POST /api/2.0/policies/{envId}/dependencies { "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:
    RegionBase URL
    United States (US)https://api.us1.plainid.io
    Canada (CA)https://api.ca1.plainid.io
    Europe (EU)https://api.eu1.plainid.io
    Local PAAhttps://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/2.0/policies/{envId}/dependencies": { "post": { "tags": [ "Policy Management APIs 2.0" ], "summary": "List Policy Dependencies", "description": "Returns an aggregated, deduplicated index of configuration objects required to promote or\npartially export the given policies. Supply policy **IDs** in the request body; the\nresponse lists dependency IDs grouped by object type so automation can call\nexisting per-type Management API export endpoints without loading full policy payloads.\n

    \n\nPermissionspolicyIds in the response is the subset of input IDs the caller\nmay access in the environment. Unknown or inaccessible policy IDs are omitted silently (no error).\n

    \nLimits — max 100 policy IDs per request. There is no cap on the number of\nidentifiers returned per dependency group. For larger promotion batches, send multiple requests\n(e.g. 50–100 policies each) and merge dependencies per key on the client.\n

    \nFiltering — optional dependencyTypes limits which dependency groups are\nresolved and returned (e.g. [\"applications\"]). When omitted, all nine groups are\ncollected. Unknown type values return 422.\n

    \nIdentifiers — values are resource IDs (same identifier strings as other Management API\nexport/import calls) for all groups except pipViewNames, which lists PIP view\nnames. Scope values are scope IDs. Empty groups are omitted from dependencies.\n

    \n

    Notice

    Accessing the Policy Management APIs is through a dedicated domain/URL, according to your\nPlainID Tenant Location
  • United States (US) -\n`https://api.us1.plainid.io`
  • Canada (CA) -\n`https://api.ca1.plainid.io`
  • Europe (EU) -\n`https://api.eu1.plainid.io`
  • \n
    \n

    Using HTML Encoded Special Characters

    \n

    Use HTML encoded patterns when working with values that contain special characters like spaces, dashes, etc. Refer to this HTML URL Encoding Reference for a full list.

    \n
    \n

    Important note about headers

    \n

    Refer to the headers below to modify your cURL sample. Check if the following headers are in the sample, if not, ensure you add it to your cURL sample before pasting into your API tool.

    \n

    Headers

    \n*Required\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    HeaderValuecURL Line
    Content-Type *`application/json``-H \"Content-Type:application/json\"`
    Accept`application/json``-H \"Accept:application/json\"`
    \n
    \n

    cURL Sample Guidelines

    \n

    In order for the relevant parameters to appear in the cURL sample, you can input the values in the interactive API console on the right in the Try It or Code Sample tabs. You can then copy the cURL sample from the Code Sample tab in the correct format.

    \n", "operationId": "listPolicyDependencies", "parameters": [ { "in": "path", "name": "envId", "required": "true", "schema": { "type": "string", "format": "uuid" }, "description": "The Environment ID can be found under the Details tab in the Environment Settings.", "example": "2d4a0591-dfe4-45fb-8a69-d183f5c75c0d" } ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": "true", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyDependenciesRequest" }, "examples": { "Single policy": { "value": { "policyIds": [ "policy-alpha" ] } }, "Multiple policies": { "value": { "policyIds": [ "policy-alpha", "policy-beta", "snowflake-policy-1" ] } }, "Applications only": { "value": { "policyIds": [ "policy-alpha", "policy-beta" ], "dependencyTypes": [ "applications" ] } } } } } }, "responses": { "200": { "description": "Successful operation", "headers": { "x-request-id": { "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyDependenciesResponse" }, "examples": { "Full dependency groups": { "summary": "All supported dependency types (deduped across policies in the request)", "value": { "policyIds": [ "policy-alpha", "policy-beta" ], "dependencies": { "applications": [ "crm-app", "billing-app" ], "assetTemplates": [ "accounts", "loans" ], "identityTemplates": [ "employees", "contractors" ], "scopes": [ "finance-scope", "hr-scope" ], "requestAttributes": [ "country-code", "client-ip" ], "customAttributes": [ "risk-tier", "env-attr-1" ], "apiMapperSets": [ "crm-api-mappers" ], "paaGroups": [ "paa-group-sales" ], "pipViewNames": [ "v_users", "v_accounts" ] } } }, "Unknown policy ID omitted": { "summary": "Mix of known and unknown IDs — unknown omitted from policyIds; dependencies from permitted policies only", "value": { "policyIds": [ "policy-alpha" ], "dependencies": { "applications": [ "crm-app" ], "assetTemplates": [ "accounts" ], "identityTemplates": [ "employees" ], "scopes": [ "finance-scope" ], "requestAttributes": [ "country-code" ], "customAttributes": [ "risk-tier" ], "apiMapperSets": [ "crm-api-mappers" ], "paaGroups": [ "paa-group-sales" ], "pipViewNames": [ "v_accounts" ] } } }, "No permitted policies": { "value": { "policyIds": [], "dependencies": {} } } } } } }, "401": { "description": "Unauthorized", "headers": { "x-request-id": { "schema": { "type": "string" } } } }, "403": { "description": "Forbidden — caller has no access to the environment", "headers": { "x-request-id": { "schema": { "type": "string" } } } }, "422": { "description": "Validation failed — invalid request body or path parameters", "headers": { "x-request-id": { "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Errors" }, "examples": { "Invalid envId format": { "value": { "errors": [ { "code": "V-032", "args": { "0": "ed252aa5-9d0c-4193-838-60bf20b13109", "1": "uuid" }, "id": "EEJQMA", "status": "422", "name": "UnprocessableEntityError", "message": "$: test is an invalid uuid" } ] } }, "Empty policyIds": { "value": { "errors": [ { "code": "V-010", "args": { "0": "1", "path": "$.policyIds" }, "id": "E7WJBB", "status": "422", "name": "UnprocessableEntityError", "message": "$.policyIds: there must be a minimum of 1 items in the array" } ] } }, "Too many policy IDs": { "value": { "errors": [ { "code": "V-011", "args": { "0": "100", "path": "$.policyIds" }, "id": "E7WJBB", "status": "422", "name": "UnprocessableEntityError", "message": "$.policyIds: there must be a maximum of 100 items in the array" } ] } } } } } } } } } }, "components": { "schemas": { "PolicyDependenciesRequest": { "type": "object", "required": [ "policyIds" ], "additionalProperties": "false", "properties": { "policyIds": { "type": "array", "minItems": "1", "maxItems": "100", "description": "Policy IDs to resolve dependencies for", "items": { "type": "string", "pattern": "^[a-zA-Z0-9_:.-]+$", "maxLength": "128" } }, "dependencyTypes": { "type": "array", "minItems": "1", "uniqueItems": "true", "description": "Optional subset of dependency groups to resolve. When omitted, all supported groups are returned.", "items": { "type": "string", "enum": [ "applications", "assetTemplates", "identityTemplates", "scopes", "requestAttributes", "customAttributes", "apiMapperSets", "paaGroups", "pipViewNames" ] } } } }, "PolicyDependenciesResponse": { "type": "object", "required": [ "policyIds", "dependencies" ], "properties": { "policyIds": { "type": "array", "description": "Policy IDs from the request that the caller may access and that exist in the environment.", "items": { "type": "string", "pattern": "^[a-zA-Z0-9_:.-]+$", "maxLength": "128" } }, "dependencies": { "$ref": "#/components/schemas/PolicyDependenciesGrouped" } } }, "Errors": { "type": "object", "properties": { "errors": { "type": "array", "items": { "$ref": "#/components/schemas/Error" } } } }, "PolicyDependenciesGrouped": { "type": "object", "description": "Dependency identifiers grouped by object type.", "additionalProperties": "false", "properties": { "applications": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "assetTemplates": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "identityTemplates": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "scopes": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "requestAttributes": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "customAttributes": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "apiMapperSets": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "paaGroups": { "$ref": "#/components/schemas/PolicyDependencyIds" }, "pipViewNames": { "$ref": "#/components/schemas/PolicyDependencyIds" } } }, "Error": { "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" } } } } }, "PolicyDependencyIds": { "type": "array", "description": "IDs for dependency type (for pipViewNames, view names).", "items": { "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`" } } } } ````