## TL;DR
E0000001 means Okta rejected the request body: a field failed schema validation. This almost always happens on user update when the payload includes read-only or wrongly-typed attributes. Trim the payload to writable fields and resend.

```text
"E0000001 API validation failed" on Okta user update
```

## Use this when
- A PUT or POST to the Okta Users API returns 400 with errorCode E0000001.
- The response includes errorCauses naming a specific field.
- The update worked before and broke after a payload change.

## Not for this skill when
- The status is 401. That is an auth problem, covered by the token skills.
- The error is E0000115. That is a server-side exception, a different fix.
- The failure is on app provisioning rather than the Users API itself.

## Steps
1. Capture the exact request body that failed. Verify: you can reproduce the 400 on demand.
2. Open the Okta System Log around the failure time and read the errorCauses entries. Verify: you know which field Okta complains about.
3. Remove read-only attributes from the payload: id, status, created, lastUpdated, passwordChanged, and any links object. Verify: the body contains only the profile fields you intend to change.
4. Check types: arrays must be arrays, strings must be strings, and custom profile attributes must match their schema type. Verify: every errorCauses entry is addressed.
5. Resend the minimal payload. Verify: the API returns 200 and a follow-up GET shows the updated values.

## Variant phrasings
### E0000001 on user create
Same fix path; the offending field is usually inside the initial profile object.
### errorCauses profile update
The search phrasing admins use when the field name is all they have.
### "API validation failed" Okta
The generic phrasing; the steps are identical.

Compatibility: Okta Users API v1, Classic and Okta Identity Engine. Applies to user create, update, and partial update calls.

## Why it happens
Okta validates every write against the user schema strictly. Client code often reads a user, modifies one field, and writes the whole object back, including computed fields Okta will not accept on write. The API answers with E0000001 instead of silently dropping the bad fields.

## Edge cases / pitfalls
- Custom profile attributes added after the client was written: the schema changed under you, so re-read the schema.
- Attributes mastered by provisioning (from HR or AD): Okta rejects direct writes to them, so change them at the source.
- The credentials object has its own shape; stuffing a plain password string into profile fails validation.
- A 400 with empty errorCauses usually means malformed JSON. Validate that the body parses before debugging fields.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Xbckg2pbhW-kvuo37y3SdQ
