Skip to content
Docs
Groups

List groups

List groups

client.Zones.Groups.List(ctx, zoneID, query) (*ZoneGroupListResponse, error)
GET/zones/{zoneId}/groups

Returns a paginated list of the groups in the specified zone. Use cursor pagination via after/before. Sort: comma-separated field list; prefix with - for descending (allowed: created_at, name, identifier). Pass expand[]=member_count to include each group's member count, expand[]=roles to include the identifiers of the roles assigned to each group, and expand[]=total_count to include the matching row count. Filter by exact identifier via filter[identifier] (repeatable, OR'd across values). Search via query[] (case-insensitive substring match, OR'd across repeated values); it matches the group's name and identifier. Pass filter[id] (repeatable, max 100) to restrict results to a known set of groups — mutually exclusive with after/before (returns 400 if combined). When filter[id] is set, limit is ignored and the response contains every requested group that exists in the zone, in a single page. IDs not in the zone are silently omitted.

ParametersExpand Collapse
zoneID string
query ZoneGroupListParams
After param.Field[string]optional

Cursor for forward pagination

minLength1
maxLength255
Before param.Field[string]optional

Cursor for backward pagination

minLength1
maxLength255
Expand param.Field[ZoneGroupListParamsExpandUnion]optional
type ZoneGroupListParamsExpandString string
Accepts one of the following:
const ZoneGroupListParamsExpandStringTotalCount ZoneGroupListParamsExpandString = "total_count"
const ZoneGroupListParamsExpandStringMemberCount ZoneGroupListParamsExpandString = "member_count"
const ZoneGroupListParamsExpandStringRoles ZoneGroupListParamsExpandString = "roles"
type ZoneGroupListParamsExpandArray []string
Accepts one of the following:
const ZoneGroupListParamsExpandArrayItemTotalCount ZoneGroupListParamsExpandArrayItem = "total_count"
const ZoneGroupListParamsExpandArrayItemMemberCount ZoneGroupListParamsExpandArrayItem = "member_count"
const ZoneGroupListParamsExpandArrayItemRoles ZoneGroupListParamsExpandArrayItem = "roles"
FilterID param.Field[ZoneGroupListParamsFilterIDUnion]optional

Restrict results to groups with this ID. Repeatable, max 100. Mutually exclusive with after/before.

string
type ZoneGroupListParamsFilterIDArray []string
FilterIdentifier param.Field[ZoneGroupListParamsFilterIdentifierUnion]optional

Filter by exact group identifier

string
type ZoneGroupListParamsFilterIdentifierArray []string
Limit param.Field[int64]optional

Maximum number of items to return

minimum1
maximum100
Query param.Field[ZoneGroupListParamsQueryUnion]optional

Search across name and identifier (substring match)

string
type ZoneGroupListParamsQueryArray []string
Sort param.Field[string]optional

Comma-separated sort fields. Prefix with - for descending. Allowed: created_at, name, identifier

ReturnsExpand Collapse
type ZoneGroupListResponse struct{…}
Items []Group
ID string

Unique identifier of the group

CreatedAt Time

Entity creation timestamp

formatdate-time
External bool

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

OrganizationID string

Organization this group belongs to

UpdatedAt Time

Entity update timestamp

formatdate-time
ZoneID string

Zone this group belongs to

MemberCount int64optional

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

Roles []stringoptional

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).

List groups

package main

import (
  "context"
  "fmt"

  "github.com/keycardai/keycard-go"
  "github.com/keycardai/keycard-go/option"
)

func main() {
  client := keycard.NewClient(
    option.WithAPIKey("My API Key"),
  )
  groups, err := client.Zones.Groups.List(
    context.TODO(),
    "zoneId",
    keycard.ZoneGroupListParams{

    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", groups.Items)
}
{
  "items": [
    {
      "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"
      ]
    }
  ],
  "pagination": {
    "after_cursor": "x",
    "before_cursor": "x",
    "total_count": 0
  }
}
Returns Examples
{
  "items": [
    {
      "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"
      ]
    }
  ],
  "pagination": {
    "after_cursor": "x",
    "before_cursor": "x",
    "total_count": 0
  }
}