Skip to content

Okta

Okta is an identity and access management platform for managing users, groups, applications, and authentication policies.

ingestr supports Okta as a source.

URI format

okta://<your-org>.okta.com?api_key=<api_token>

URI parameters:

  • <your-org>.okta.com: your Okta org domain (for example dev-123456.okta.com or mycompany.okta.com).
  • api_key: an Okta API token used to authenticate requests.

Create an API token in the Okta Admin Console under Security → API → Tokens → Create Token. The token inherits the permissions of the admin who creates it, so use an account that can read the resources you want to ingest.

Once you have the domain and token, here's a sample command that copies users from Okta into a DuckDB database:

sh
ingestr ingest \
  --source-uri "okta://dev-123456.okta.com?api_key=00aBcD..." \
  --source-table "users" \
  --dest-uri duckdb:///okta.duckdb \
  --dest-table "public.users"

Tables

Okta source allows ingesting the following resources into separate tables:

TablePKInc KeyInc StrategyDetails
usersidlastUpdatedmergeAll users in the org
groupsidlastUpdatedmergeAll groups in the org
group_membersgroup_id, idreplaceMembers of each group (one row per user per group); full snapshot each run
applicationsidlastUpdatedmergeAll applications configured in the org
application_usersapp_id, idreplaceUsers assigned to each application; full snapshot each run
application_groupsapp_id, idreplaceGroups assigned to each application; full snapshot each run
system_log_eventsuuidpublishedmergeSystem log events (Okta retains roughly the last 90 days)
devicesidlastUpdatedmergeDevices enrolled in the org
policiesidlastUpdatedmergePolicies across all policy types
policy_rulesidlastUpdatedmergeRules belonging to each policy
rolesidreplaceCustom admin role definitions

Nested objects (such as a user's profile and credentials) are preserved as JSON columns.

Incremental loading

Tables with an incremental key support incremental loading with the --interval-start and --interval-end flags. When no interval is provided, ingestr performs a full load. The System Log can only be backfilled as far as Okta's retention window (about 90 days).