Skip to main content
Organization administrators can perform the same governance and identity tasks through the Python SDK that are available under Settings → Organizations. The calling user or service account must be an administrator of the target organization or a configured deployment-level organization provisioner. A customer-hosted deployment can also designate specific service-account IDs as organization provisioners. A provisioner can create and configure organizations without becoming a member or receiving access to their data.

Bootstrap and account ownership

Deployment-level provisioners must be service accounts, not human users:
  1. A human recovery administrator creates or selects a trusted IT automation organization, then creates a service account with the explicit admin organization role inside it. Resource permission is configured separately.
  2. Add that Docent service-account UUID to the deployment’s Terraform configuration:
    This is not the creator’s user ID, an API key, or an Entra application ID. Listing a human-user ID does not grant provisioner authority.
  3. Apply Terraform and deploy the updated API task definitions. Automation can then authenticate using the service account’s own API key, AWS federated identity, or Microsoft Entra workload identity, without a human login.
The service account remains owned by its original home organization, whose administrators can manage its credentials. The human creator is recorded for attribution; the automation does not borrow their credentials or session. Keep the home organization under trusted IT control and retain a human recovery administrator. Provisioning authority does not automatically grant collection-data access.

Create and update an organization

Creating an organization requires a human identity or a configured provisioner; an ordinary organization-admin service account cannot create organizations.
For repeatable automation, a configured organization provisioner should use a stable customer-owned ID. Repeating the call updates the same organization:

Manage members

Direct membership and Microsoft Entra group membership are independent access sources. Removing a direct grant does not remove access supplied by a mapped Entra group. Pass create_manual_grant=True only when you intentionally want a direct grant to remain after the person leaves that group.

Read and download audit events

List recent events with cursor pagination:
before must be a timezone-aware datetime. To download every event in a half-open time range—start_at is included and end_at is excluded—use:
The download is streamed to a temporary file and atomically moved to output_path after it succeeds.

Map a Microsoft Entra group

In an Entra-enabled deployment, Docent searches Microsoft Graph using the read-only GroupMember.Read.All and User.ReadBasic.All application permissions approved by the tenant administrator. Mapping by name is convenient, while Docent stores the immutable group object ID:
If no security group has that exact display name, or multiple groups share it, the method raises ValueError without changing the mapping. Call search_entra_groups and then set_entra_group_mapping when you need to select an object ID explicitly. To replace a deleted or renamed group, call either setter again. Replacing the object ID immediately removes access derived from the old mapping and records the transition in the audit log. Members of the replacement group receive access on their next Microsoft sign-in or when an administrator runs a reconciliation. Direct Docent grants remain intact.
Reconciliation asks Microsoft Graph for the mapped group’s complete transitive membership and updates Entra-managed Docent grants. Existing sessions reload organization membership on every request, so additions and removals take effect immediately without forcing a logout. Users who have never signed in are reported as unlinked and receive access after their first Microsoft sign-in. A manual Docent grant is independent and is never removed merely because the user left the Entra group. When the tenant has organization group mappings, Docent retrieves the user’s complete transitive security-group IDs from Graph during Microsoft sign-in. If Graph cannot provide the complete list, the sign-in is rejected and existing group access is not incorrectly retained. Tenants without group mappings do not depend on this Graph lookup for sign-in.

Create a service account

permission caps access to collections and other resources. The independent organization_role controls organization administration and defaults to member. Set organization_role="admin" only when the automation must manage members, identity mappings, service accounts, or audit configuration. Change the organization role later without changing resource access:

API key

Microsoft Entra workload

The enterprise application must have the deployment’s service-account app role.

AWS outbound OIDC workload

The issuer is account-specific and is required for new AWS outbound OIDC bindings. Omitting it creates a legacy signed-request binding. See Authentication for workload setup. Disabling a service account revokes all of its API keys, Entra identity, and AWS identity for subsequent requests: