Avnology ID
SDKsTypeScript SDKAdmin API

Organization Management

Create, manage, and configure organizations with members, invitations, domains, and branding using the TypeScript SDK.

Organization Management

Organizations are the multi-tenancy primitive in Avnology ID. Each organization has members, roles, SSO connections, branding, and policies.

listOrganizations()

List organizations with pagination and filtering.

client.admin.listOrganizations(params?: ListOrganizationsParams): Promise<OrganizationList>

Parameters

NameTypeRequiredDescription
pageSizenumbernoOrgs per page (default: 25, max: 100)
pageTokenstringnoPagination token
filterstringnoFilter expression

Basic usage

const result = await client.admin.listOrganizations({ pageSize: 25 });

for (const org of result.organizations) {
  console.log(org.id, org.name, org.slug, org.memberCount);
}

createOrganization()

Create a new organization.

client.admin.createOrganization(params: CreateOrganizationParams): Promise<Organization>

Parameters

NameTypeRequiredDescription
namestringyesDisplay name
slugstringnoURL-safe slug (auto-generated from name if omitted)
domainsstring[]noEmail domains for this org (e.g., ["acme.com"])
registrationMode"open" | "invite_only" | "sso_only" | "disabled"noHow users can join (default: "invite_only")
metadataRecord<string, unknown>noCustom metadata

Basic usage

const org = await client.admin.createOrganization({
  name: "Acme Corporation",
  slug: "acme",
  domains: ["acme.com"],
  registrationMode: "invite_only",
  metadata: { industry: "Technology", plan: "enterprise" },
});

console.log(org.id);   // "org_abc123"
console.log(org.slug); // "acme"

updateOrganization()

Update organization settings.

client.admin.updateOrganization(params: UpdateOrganizationParams): Promise<Organization>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
namestringnoUpdated display name
registrationModestringnoUpdated registration mode
metadataRecord<string, unknown>noUpdated metadata

Basic usage

await client.admin.updateOrganization({
  organizationId: "org_abc123",
  name: "Acme Corp (renamed)",
  registrationMode: "sso_only",
});

deleteOrganization()

Delete an organization and remove all member associations. User accounts are NOT deleted -- they remain as standalone accounts.

client.admin.deleteOrganization(params: { organizationId: string }): Promise<void>

addMember()

Add a user to an organization with a specific role.

client.admin.addOrganizationMember(params: AddMemberParams): Promise<Member>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
userIdstringyesUser to add
role"owner" | "admin" | "member" | "viewer" | "billing"yesRole in the organization

Basic usage

await client.admin.addOrganizationMember({
  organizationId: "org_abc123",
  userId: "usr_jane123",
  role: "admin",
});

listMembers()

List members of an organization.

client.admin.listOrganizationMembers(params: ListMembersParams): Promise<MemberList>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
pageSizenumbernoMembers per page (default: 25)
pageTokenstringnoPagination token
rolestringnoFilter by role

Basic usage

const result = await client.admin.listOrganizationMembers({
  organizationId: "org_abc123",
  pageSize: 50,
});

for (const member of result.members) {
  console.log(member.userId, member.email, member.role, member.joinedAt);
}

removeMember()

Remove a user from an organization.

client.admin.removeOrganizationMember(params: RemoveMemberParams): Promise<void>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
userIdstringyesUser to remove

createInvitation()

Invite a user to join an organization by email.

client.admin.createInvitation(params: CreateInvitationParams): Promise<Invitation>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
emailstringyesEmail address to invite
rolestringyesRole the user will have when they accept
expiresInnumbernoInvitation TTL in seconds (default: 7 days)

Basic usage

const invitation = await client.admin.createInvitation({
  organizationId: "org_abc123",
  email: "[email protected]",
  role: "member",
  expiresIn: 72 * 3600, // 3 days
});

console.log(invitation.id);        // "inv_abc123"
console.log(invitation.status);    // "pending"
console.log(invitation.expiresAt); // "2026-04-11T12:00:00Z"

verifyDomain()

Initiate domain verification for an organization. Returns a DNS TXT record that must be added to the domain.

client.admin.verifyDomain(params: VerifyDomainParams): Promise<DomainVerification>

Parameters

NameTypeRequiredDescription
organizationIdstringyesOrganization ID
domainstringyesDomain to verify (e.g., "acme.com")

Basic usage

const verification = await client.admin.verifyDomain({
  organizationId: "org_abc123",
  domain: "acme.com",
});

console.log("Add this DNS TXT record:");
console.log(`  Host: _avnology-verify.acme.com`);
console.log(`  Value: ${verification.txtRecord}`);
console.log(`  Status: ${verification.status}`); // "pending"

Common errors

Error classHTTP statusWhen
NotFoundError404Organization not found
DuplicateError409Slug already taken
ForbiddenError403Insufficient permissions
ValidationError422Invalid input
MemberAlreadyExistsError409User is already a member

See also

On this page