Get a joiner case
GET /jml/onboarding/cases/{caseId}
Scope jml:read Plan Seed+
Returns one joiner case with its reconciled summary. Items are read with the case items operation. employee.employeeStatus shows the current status, for example TERMINATED when the joiner has left since.
Example
curl "https://api.autociso.io/api/v1/jml/onboarding/cases/<caseId>" \
-H "Authorization: Bearer <your-api-token>"import requests
response = requests.get(
"https://api.autociso.io/api/v1/jml/onboarding/cases/<caseId>",
headers={"Authorization": "Bearer <your-api-token>"},
)
print(response.json())const response = await fetch("https://api.autociso.io/api/v1/jml/onboarding/cases/<caseId>", {
method: "GET",
headers: { "Authorization": "Bearer <your-api-token>" },
});
console.log(await response.json());Response 200
{
"data": {
"caseId": "lfc_example000002",
"employee": {
"employeeId": "empl_example000002",
"emailMasked": "a***@example.com",
"employeeStatus": "ACTIVE"
},
"status": "COMPLETED",
"openedAt": "2026-09-25T08:00:00Z",
"dueAt": "2026-10-01T08:00:00Z",
"summary": {
"total": 1,
"granted": 1,
"pending": 0,
"attested": 0
},
"ready": true,
"overdue": false,
"generatedAt": null,
"generatedFromProfileIds": []
},
"error": null,
"meta": {
"accessDataAsOf": "2026-09-29T02:00:00Z"
}
}Path parameters
caseIdstring requiredJoiner case id (lfc_...). An unknown, foreign, leaver or malformed id returns the same 404.
Returns
The data field of the standard { data, error, meta } envelope:
caseIdstring requiredemployeeobject requiredIdentity block of a case. Only employeeId is guaranteed; the other fields are absent when unknown or not disclosed.employeeIdstring requiredInternal employee id.emailMaskedstringMasked email address, safe to display.namestringFull name. Present only for tokens holding both jml:read and pii:read; without pii:read the key is absent.emailstringEmail address. Present only for tokens holding both jml:read and pii:read; without pii:read the key is absent.departmentstringjobTitlestringemploymentTypestringemployeeStatusstringstartDatestring (date)Calendar date YYYY-MM-DD.endDatestring (date)Calendar date YYYY-MM-DD.
statusstring requiredCase status, returned as stored; it is not derived from the item statuses. Use ready and overdue for the reconciled picture."OPEN" | "IN_PROGRESS" | "COMPLETED" | "CANCELLED"openedAtstring (date-time) requireddueAtstring (date-time) or null requiredsummaryobject requiredCounts of joiner items per reconciled status. total is the sum of the three.totalinteger requiredgrantedinteger requiredpendinginteger requiredattestedinteger required
readyboolean requiredTrue when no item is pending (every item is granted or attested).overdueboolean requiredTrue when an open case that is not ready is past its due date.generatedAtstring (date-time) or null requiredWhen the items were generated from access profiles; null for cases created otherwise.generatedFromProfileIdsarray of string requiredIds of the access profiles the items were generated from (ids only). Empty, never null.
The meta field:
accessDataAsOfstring (date-time) or null requiredLatest access detection time used for this response.
Errors
| Status | Code | Retry | Meaning |
|---|---|---|---|
| 400 | VALIDATION_FAILED |
no | Invalid query parameter. code VALIDATION_FAILED; args.parameter names the parameter, args.reason the rule, args.allowed the permitted values of an enum. |
| 401 | INVALID_TOKEN |
no | Missing (UNAUTHORIZED) or invalid, expired or revoked (INVALID_TOKEN) token. |
| 402 | FEATURE_GATED |
no | The tenant plan does not include lifecycle workflows. code FEATURE_GATED; args.feature, args.minTier, args.minTierName. |
| 403 | INSUFFICIENT_SCOPE |
no | The token lacks the jml:read scope (INSUFFICIENT_SCOPE; a token holding pii:read alone reaches no endpoint here), or the request is refused (FORBIDDEN). A token holding pii:read is also refused with INSUFFICIENT_SCOPE when personal data cannot be disclosed to it (personal-data disclosure is disabled for the tenant, or the token has no creator); it is never silently downgraded to the masked shape. |
| 404 | NOT_FOUND |
no | Unknown, foreign-tenant, wrong-type or malformed case id. Always the same body. |
| 429 | RATE_LIMITED |
yes | Rate limit exceeded. code RATE_LIMITED; wait Retry-After seconds. Applies to the personal-data (pii:read) request window on case endpoints, where Retry-After is the time until the window ends. That window is shared by all calls of the token, over REST and MCP; a request that fails with 503 AUDIT_UNAVAILABLE is not refunded, so retrying spends more of it. Do not build a design that depends on an exact number of requests. It also applies to concurrent feed requests on the items feeds, where Retry-After is 1. The body carries no meta. |
| 500 | INTERNAL_ERROR |
no | Unexpected server error. code INTERNAL_ERROR; quote error.id to support. |
| 503 | BILLING_UNAVAILABLE |
yes | A dependency is temporarily unavailable (BILLING_UNAVAILABLE), or a response containing name or email could not be audited and was withheld (AUDIT_UNAVAILABLE). Retry later. |
Last reviewed: 2026-10-13
Was this page helpful?