A 400 Bad Request from an Oracle Fusion REST API is one of the least informative failures you'll hit — the error body is often just "Invalid operation create for the specified resource.", with no field name and no hint what part of the request was wrong. Here are the six real causes, in the order worth checking, with the actual fix for each. Examples use an anonymized pod (acme.fa.us2.oraclecloud.com).
First, rule out the other 4xx codes
| Code | Means |
|---|---|
| 401 | Not authenticated |
| 403 | Authenticated, missing role/privilege |
| 404 | Resource/record doesn't exist at that path |
| 412 | ETag mismatch on PATCH |
| 429 | Rate limited |
| 400 | The request itself is malformed or invalid |
1. Malformed or unsupported q syntax
The most common cause, two failure modes. Wrong syntax for the framework version:
# Fails with 400 on REST-Framework-Version 2+
q=DepartmentId=300;LocationCode=NY
# Works
q=DepartmentId=300 and LocationCode=NY
And filtering on an operator a field doesn't support — this returns 400, not an empty result set, which throws people off because the field name in the error is correct.
2. Missing required fields on POST
Fusion resources need far fewer fields than their full schema suggests, but the required ones are non-negotiable. workers needs names plus a correctly-shaped workRelationships array, not flat top-level name fields. Check what's actually mandatory with:
GET .../workers/describe?metadataMode=minimal
"Required in the UI" and "required by the REST payload" are frequently different sets.
3. "Invalid operation <X> for the specified resource"
This exact text appears across multiple Oracle support KB articles. It means the HTTP method you sent isn't a supported operation on that resource or resource state — POSTing to a GET-only resource, PATCHing an already-submitted transaction, or calling an action (;action=terminate) with the wrong verb (actions are POST, not PATCH).
4. Malformed JSON or wrong Content-Type
A trailing comma, an unescaped quote, or sending Content-Type: application/json when an operation specifically expects application/vnd.oracle.adf.resourceitem+json (some batch/action operations do) all surface as 400.
5. DFF/EFF context or segment mismatches
If a payload includes a flexfield segment, it has to match a context actually configured for that record. The same payload can work for one business unit and fail for another because flexfield contexts are usually configured per that dimension.
Read the detail field
{
"title": "Bad Request",
"status": 400,
"detail": "The value US_LEGAL_EMPLOYER for attribute LegislationCode is invalid.",
"o:errorCode": "FND_CMN_VALIDATION_ERROR"
}
detail is usually more specific than the status line — log it in full, not just the code.
Originally published on the OPAL blog — the full version covers the diagnostic checklist and cross-links to the q-parameter, describe-endpoint, and DFF guides. OPAL is a free offline desktop explorer for 59,000+ Oracle Fusion REST endpoints: opalapi.dev.
Top comments (0)