Skip to content
Docs
Policy Sets

Create a new policy set

Create a new policy set

client.zones.policySets.create(stringzoneID, PolicySetCreateParams { name, scope_type, xAPIVersion, xClientRequestID } params, RequestOptionsoptions?): PolicySetWithBinding { active, active_version, active_version_id, 4 more }
POST/zones/{zone_id}/policy-sets

Creates an unbound policy set. Use updatePolicySet to bind after creating a version.

ParametersExpand Collapse
zoneID: string
params: PolicySetCreateParams { name, scope_type, xAPIVersion, xClientRequestID }
name: string

Body param

scope_type?: "zone" | "resource" | "user" | "session"

Body param: The scope at which this policy set applies:

  • "zone" — applies to all requests in the zone.
  • "resource" — scoped to a specific resource.
  • "user" — scoped to a specific user.
  • "session" — scoped to a specific session.
Accepts one of the following:
"zone"
"resource"
"user"
"session"
xAPIVersion?: string

Header param: API version header (date-based, e.g. 2026-02-01)

xClientRequestID?: string

Header param: Unique request identifier specified by the originating caller and passed along by proxies.

formatuuid
ReturnsExpand Collapse
PolicySetWithBinding extends PolicySet { id, created_at, created_by, 9 more } { active, active_version, active_version_id, 4 more }
active?: boolean

Whether this policy set is currently bound to a scope

active_version?: number | null

Human-readable version number of the active version (e.g., 1, 2, 3)

active_version_id?: string | null

Public ID of the currently active (bound) version

mode?: "active" | "shadow" | null
Accepts one of the following:
"active"
"shadow"
scope_target_id?: string | null
shadow_version?: number | null

Human-readable version number of the shadow version

shadow_version_id?: string | null

Public ID of the shadow (observed) version, if any

Create a new policy set

import KeycardAPI from '@keycardai/api';

const client = new KeycardAPI();

const policySetWithBinding = await client.zones.policySets.create('zone_id', { name: 'name' });

console.log(policySetWithBinding);
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": "created_by",
  "name": "name",
  "owner_type": "platform",
  "scope_type": "zone",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "zone_id": "zone_id",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "latest_version": 0,
  "latest_version_id": "latest_version_id",
  "updated_by": "updated_by",
  "active": true,
  "active_version": 0,
  "active_version_id": "active_version_id",
  "mode": "active",
  "scope_target_id": "scope_target_id",
  "shadow_version": 0,
  "shadow_version_id": "shadow_version_id"
}
Returns Examples
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": "created_by",
  "name": "name",
  "owner_type": "platform",
  "scope_type": "zone",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "zone_id": "zone_id",
  "archived_at": "2019-12-27T18:11:19.117Z",
  "latest_version": 0,
  "latest_version_id": "latest_version_id",
  "updated_by": "updated_by",
  "active": true,
  "active_version": 0,
  "active_version_id": "active_version_id",
  "mode": "active",
  "scope_target_id": "scope_target_id",
  "shadow_version": 0,
  "shadow_version_id": "shadow_version_id"
}