Skip to content
Docs
Groups

Create group

Create group

client.zones.groups.create(stringzoneID, GroupCreateParams { name, identifier } body, RequestOptionsoptions?): Group { id, created_at, external, 7 more }
POST/zones/{zoneId}/groups

Creates a group in the zone (managed in Keycard). Groups synced from an external directory are created by that directory, not here.

ParametersExpand Collapse
zoneID: string
body: GroupCreateParams { name, identifier }
name: string

Human-readable group name

minLength1
maxLength255
formatsafe-text
identifier?: string

User-specified identifier, unique within the zone. Derived from the name when omitted (a suffix is appended if it collides).

minLength1
maxLength2048
formatsafe-text
ReturnsExpand Collapse
Group { id, created_at, external, 7 more }

A zone-scoped group of users, assignable to roles and usable in policies. Roles assigned to a group are inherited by its members. external is false for groups managed in Keycard and true for groups synced from an external directory.

id: string

Unique identifier of the group

created_at: string

Entity creation timestamp

formatdate-time
external: boolean

Whether the group is synced from an external directory. When true the group is directory-owned and its membership is read-only; when false it is managed in Keycard. Read-only: set by external sync, never by the caller.

identifier: string

User-specified identifier, unique within the zone. Automatically assigned for groups from an external directory.

name: string

Human-readable group name

organization_id: string

Organization this group belongs to

updated_at: string

Entity update timestamp

formatdate-time
zone_id: string

Zone this group belongs to

member_count?: number

Number of users in the group. Included only when requested via expand[]=member_count (group get or list).

roles?: Array<string>

Identifiers of the roles assigned to the group; members inherit them. Deduped across scopes. Included only when requested via expand[]=roles (group get or list).

Create group

import KeycardAPI from '@keycardai/api';

const client = new KeycardAPI({
  apiKey: process.env['KEYCARD_API_API_KEY'], // This is the default and can be omitted
});

const group = await client.zones.groups.create('zoneId', { name: 'x' });

console.log(group.id);
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "external": true,
  "identifier": "identifier",
  "name": "name",
  "organization_id": "organization_id",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "zone_id": "zone_id",
  "member_count": 0,
  "roles": [
    "string"
  ]
}
Returns Examples
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "external": true,
  "identifier": "identifier",
  "name": "name",
  "organization_id": "organization_id",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "zone_id": "zone_id",
  "member_count": 0,
  "roles": [
    "string"
  ]
}