# apply-policy-to-api-instance Apply a policy to an existing API Manager instance. Use when the user wants to add a policy, enforce security, configure rate limiting, apply OAuth2, set up IP allowlisting, or protect an API with any policy template from the catalog. - **APIs:** [access-management](https://dev-portal.mulesoft.com/apis/access-management.md), [api-manager](https://dev-portal.mulesoft.com/apis/api-manager.md)- **Skill Source:** [SKILL.md](https://dev-portal.mulesoft.com/skills/apply-policy-to-api-instance/SKILL.md) ## Steps ### Step 1: Step 1: Get Current Organization **API:** `urn:api:access-management`**Operation:** `listMe` **Outputs:** - `organizationId` (`$.user.organization.id`) — Root organization Business Group GUID - `organizationName` (`$.user.organization.name`) — Organization display name ### Step 2: Step 2: List Environments **API:** `urn:api:access-management`**Operation:** `listEnvironments` **Inputs:** - `organizationId` — Organization ID from Step 1 **Outputs:** - `environmentId` (`$.data[*].id`) — Selected environment ID ### Step 3: Step 3: List API Instances **API:** `urn:api:api-manager`**Operation:** `listOrganizationsEnvironmentsApis` **Inputs:** - `organizationId` — Organization ID from Step 1 - `environmentId` — Environment ID from Step 2 **Outputs:** - `environmentApiId` (`$.assets[*].apis[*].id`) — The API instance ID to apply the policy to ### Step 4: Step 4: Browse Exchange Policy Catalog **API:** `urn:api:api-portal-xapi`**Operation:** `getExchangePolicyTemplates` **Inputs:** - `organizationId` — Organization ID from Step 1 - `environmentId` — Environment ID from Step 2 - `apiInstanceId` — API instance ID from Step 3 (filters for compatible templates) - `includeConfiguration` — Include the configuration schema for each template - `latest` — Return only the latest version of each template **Outputs:** - `policyGroupId` (`$[*].groupId`) — Exchange group ID of the selected policy template - `policyAssetId` (`$[*].assetId`) — Exchange asset ID of the selected policy template - `policyAssetVersion` (`$[*].version`) — Exchange version of the selected policy template (gateway-compatible) - `policyConfiguration` (`$[*].configuration`) — Configuration schema with gateway-compatible property names and defaults ### Step 5: Step 5: Apply Policy to API Instance **API:** `urn:api:api-manager`**Operation:** `createOrganizationsEnvironmentsApisPolicies` **Inputs:** - `organizationId` — Organization ID from Step 1 - `environmentId` — Environment ID from Step 2 - `environmentApiId` — API instance ID from Step 3 - `groupId` — Policy Exchange group ID from Step 4 - `assetId` — Policy Exchange asset ID from Step 4 - `assetVersion` — Policy Exchange version from Step 4 **Outputs:** - `policyId` (`$.id`) — The ID of the applied policy instance