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>"

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

  • caseId string required
    Joiner case id (lfc_...). An unknown, foreign, leaver or malformed id returns the same 404. pattern ^lfc_[A-Za-z0-9_-]{1,59}$

Returns

The data field of the standard { data, error, meta } envelope:

  • caseId string required
  • employee object required
    Identity block of a case. Only employeeId is guaranteed; the other fields are absent when unknown or not disclosed.
    • employeeId string required
      Internal employee id.
    • emailMasked string
      Masked email address, safe to display.
    • name string
      Full name. Present only for tokens holding both jml:read and pii:read; without pii:read the key is absent.
    • email string
      Email address. Present only for tokens holding both jml:read and pii:read; without pii:read the key is absent.
    • department string
    • jobTitle string
    • employmentType string
    • employeeStatus string
    • startDate string (date)
      Calendar date YYYY-MM-DD.
    • endDate string (date)
      Calendar date YYYY-MM-DD.
  • status string required
    Case 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"
  • openedAt string (date-time) required
  • dueAt string (date-time) or null required
  • summary object required
    Counts of joiner items per reconciled status. total is the sum of the three.
    • total integer required
      minimum 0
    • granted integer required
      minimum 0
    • pending integer required
      minimum 0
    • attested integer required
      minimum 0
  • ready boolean required
    True when no item is pending (every item is granted or attested).
  • overdue boolean required
    True when an open case that is not ready is past its due date.
  • generatedAt string (date-time) or null required
    When the items were generated from access profiles; null for cases created otherwise.
  • generatedFromProfileIds array of string required
    Ids of the access profiles the items were generated from (ids only). Empty, never null.

The meta field:

  • accessDataAsOf string (date-time) or null required
    Latest 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?

Esc