Skip to main content

What is a Unified API?

A unified API provides a single, standardized interface to interact with multiple third-party providers. Instead of learning each provider’s unique API format, authentication scheme, and data model, you write code once, and StackOne handles the differences. What StackOne normalizes:
  • Data models – Consistent field names and structures across providers (e.g., files in Google Drive, SharePoint, and Dropbox all return the same schema; users in Google Workspace, Okta, and 1Password all return the same schema)
  • Authentication – OAuth, API keys, and tokens are managed per-provider; you just pass an x-account-id header
  • Pagination – Cursor-based pagination works the same regardless of whether the provider uses offsets, pages, or cursors
  • Error formats – Standardized error responses with provider-specific details when available
Building AI agents? Use MCP Servers or AI Toolset SDKs instead. Same underlying data, optimized for LLM tool calling with built-in context management.
The Policies API has moved to Legacy Unified APIs.

Entity Model

The IAM API is built around six core entities.
IamCredentials is not included in the diagram above. It represents the authenticated connection context returned by GET /unified/iam/me — not a stored identity object with relationships to users, roles, or groups.
EntityDescription
IamUserAn individual with access to the provider. Carries profile fields, activity timestamps, MFA status, and expandable collections of roles, groups, and direct permissions.
IamRoleA named set of permissions. Roles can be scoped to a specific resource type and ID (scope), making them applicable to a particular group, organization, or resource.
IamGroupA collection of users. Groups can nest via parent_id and child_group_ids, belong to an organization, and carry their own role assignments. Expand users to get group members.
IamOrganizationA top-level tenant or workspace. Groups and users are linked to an organization via organization_id and filter parameters.
IamPermissionA specific action type (read, write, comment, create, edit, delete) scoped to one or more resource types and optional resource IDs.
IamCredentialsThe authenticated connection making the request. Returned by GET /unified/iam/me — includes auth type, granted scopes, effective permissions, and last-used timestamp.

Permission and scope model

IamPermission has a type (the action) and a scopes array. Each scope entry has a resource_type (e.g. file, channel, user) and an optional resource_id. When resource_id is absent, the permission applies to all resources of that type. Roles carry the same scoping via IamRoleScope on the role itself, allowing a role to be valid only within a specific organizational context.

Endpoints

MethodPathOperationDescription
GET/unified/iam/usersiam_list_usersList users — filter by email, group, role, organization, updated_after
GET/unified/iam/users/{id}iam_get_userGet user by ID
PATCH/unified/iam/users/{id}iam_update_userUpdate user
DELETE/unified/iam/users/{id}iam_delete_userDelete user
GET/unified/iam/rolesiam_list_rolesList roles
GET/unified/iam/roles/{id}iam_get_roleGet role by ID
GET/unified/iam/groupsiam_list_groupsList groups
GET/unified/iam/groups/{id}iam_get_groupGet group by ID
GET/unified/iam/organizationsiam_list_organizationsList organizations
GET/unified/iam/organizations/{id}iam_get_organizationGet organization by ID
GET/unified/iam/meiam_get_meGet current connection credentials
GET/unified/iam/resource_typesiam_list_resource_typesList resource types supported by this provider
GET/unified/iam/resource_usersiam_list_resource_usersList users with access to a specific resource

StackOne SDKs & OpenAPI Specification

Use our official SDKs for faster integration. Build with language-native libraries. Full list here.

OpenAPI Specification