---
title: "Create a policy"
method: POST
path: "/api/v1/iga/policies"
tags: ["accessManagement"]
---

# Create a policy

`POST /api/v1/iga/policies`

Create a new identity policy. Requires name, type, and status.
Policies define access rules and can be associated with entitlements.

## Headers

- `X-Api-Key` string, required
- `X-Workspace-Id` string

## Request body

- object
  - `name` string, required — Name of the policy
  - `description` string — Description of the policy
  - `type` 'BIRTH_RIGHT' | 'SELF_SERVICE', required
  - `condition` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaCondition
    - `type` string, required
    - `values` integer[]
  - `approvals` union
    - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovals0
      - `type` string, required
    - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovals1
      - `type` string, required
      - `steps` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovalsOneOf1StepsItems[]
        - union
          - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovalsOneOf1StepsItems0
            - `type` string, required
            - `criteria` 'FIRST_DECISION' | 'EVERYONE'
            - `approvers_data` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovalsOneOf1StepsItemsOneOf0ApproversDataItems[]
              - …
          - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaApprovalsOneOf1StepsItems1
            - `type` string, required
            - `policy_id` integer
  - `lifecycle` union
    - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycle0
      - `type` string, required
    - ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycle1
      - `type` string, required
      - `allowed_access_durations` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1AllowedAccessDurationsItems[] — List of allowed access duration options. Each can have its own notification settings.
        - `duration` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1AllowedAccessDurationsItemsDuration, required — Represents a duration with a value and time unit. Includes ID field for AI-agent friendly selection.
          - `id` string — Unique identifier in format: {value}_{unit}
          - `value` integer, required — The numeric value of the duration
          - `unit` 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS', required — Time unit for duration specifications
        - `notification_settings` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1AllowedAccessDurationsItemsNotificationSettings — Notification settings for time-based access policies. Can be used globally or per-duration.
          - `enable_expiry_notifications` boolean — Whether expiry notifications are enabled
          - `notification_timings` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1AllowedAccessDurationsItemsNotificationSettingsNotificationTimingsItems[] — List of notification timings specifying when to send notifications before expiry
            - `id` string — Unique identifier in format: {value}_{unit}
            - `value` integer, required — The numeric value of the duration
            - `unit` unknown, required
      - `global_notification_settings` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1GlobalNotificationSettings — Notification settings for time-based access policies. Can be used globally or per-duration.
        - `enable_expiry_notifications` boolean — Whether expiry notifications are enabled
        - `notification_timings` ApiV1IgaPoliciesPostRequestBodyContentApplicationJsonSchemaLifecycleOneOf1GlobalNotificationSettingsNotificationTimingsItems[] — List of notification timings specifying when to send notifications before expiry
          - `id` string — Unique identifier in format: {value}_{unit}
          - `value` integer, required — The numeric value of the duration
          - `unit` 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS', required — Time unit for duration specifications
      - `allow_user_to_extend` boolean — Whether users can request an extension to their access
  - `status` 'DRAFT' | 'PUBLISHED' | 'ARCHIVED' | 'UNPUBLISHED', required
  - `is_active` boolean — Whether the policy is active
  - `entitlements` integer[] — List of entitlement IDs to associate with this policy
  - `app_id` integer, required — ID of the identity resource app this policy belongs to
  - `is_business_justification_required` boolean — Whether business justification is required for requests under this policy

## Response `200`

Successful response

- AccessManagementPostapiV1IgaPoliciesResponse200 — Empty response body

---

[API](https://skmtc.net/atomicwork/apis/atomicwork-public-api.md) · [All operations](https://skmtc.net/atomicwork/apis/atomicwork-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/atomicwork/atomicwork-public-api/versions/2e7047b35062/schema)
