Just finished a POC where I had to pull some basic compliance reports from both Azure AD and Okta. The difference in developer experience is… notable. Azure AD’s Graph API, for all its Microsoft-ness, at least gives you a coherent data model to query. Okta’s reporting endpoints feel like they were designed by someone who’s never actually had to automate this stuff.
My main gripe: trying to get a simple list of users with their last login and enrolled MFA factors. In Azure AD, it's a somewhat sensible query. In Okta, it feels like you need to stitch together three different API calls and then join the data in your script. The "Events" API is a firehose you have to filter client-side, and the standard user list lacks crucial auth context.
Example – to get something as basic as "user, status, last auth method," you end up with something like:
```bash
# Get all users (simplified)
curl -v -X GET "https://{yourOktaDomain}/api/v1/users?limit=200" ...
# Then, for each user ID, maybe hit the logs?
curl -v -X GET "https://{yourOktaDomain}/api/v1/logs?filter=actor.id eq "00u1q2w3e4r5t6y7u8i9o0p"&limit=1" ...
```
And God help you if you want a historical trend. The built-in admin console reports aren't much better—slow to generate, cumbersome to export, and near-useless for feeding into any other system.
* Is it just me being spoiled by a (slightly) more developer-centric approach from Microsoft?
* Are people really just accepting this and building their own middleware reporting layer?
* Any workarounds or hidden endpoints I’ve missed that make this less painful?
I’m not asking for AI here—just a sane, queryable data model. Seems like a basic expectation for a platform at this scale and price point.