PUT /groups/{groupId}/census replaces the full census. Members are upserted by email when present, otherwise by externalId, so re-pushing your roster is always safe and idempotent.
Member schema
| Field | Type | Required | Notes |
|---|---|---|---|
externalId | string | No | Your employee ID. Upsert key when email is absent. |
firstName, lastName | string | At enrollment | Not needed to quote. |
email | string | At enrollment | Primary upsert key. Members are invited to the Prescience app via this address after launch. |
dob | YYYY-MM-DD | One of dob | age | Preferred; exact ages rate more accurately than integer ages. |
age | integer | One of dob | age | Fallback when you don’t store DOB. |
zip | string | Yes | 5-digit home ZIP. Drives the geographic rating factor. |
sexAtBirth | enum | No | male | female | other. |
employmentType | enum | No | full_time | part_time | contractor. |
hireDate | YYYY-MM-DD | No | |
status | enum | No | active (default) | terminated. Terminated members are excluded from rating. |
dependents | array | No | Max 6 per member. Each: relationship (required: spouse | domestic_partner | child | other), optional dob, name. |
Quoting vs enrollment requirements
- To quote
- To enroll
Per member:
zip + one of dob | age. That’s it.This is deliberate: you can generate a quote from the minimal data every HR system has, before asking anyone for names or emails. Dependent dobs sharpen the rating (a spouse without one is rated at the employee’s age; a child without one is rated as a 10-year-old), but they’re optional.Per-row errors: bad rows never block good ones
A census write is row-by-row. Valid rows are stored; invalid rows are rejected and reported with their index. A 142-row upload with one bad ZIP stores 141 members:errors: rows that were rejected. Fix and re-PUT; upserts make re-sending the clean rows harmless.warnings: non-blocking issues, today chiefly members missingemail. They quote fine but will fail enrollment.
Reading the census back
GET /groups/{groupId}/census returns what’s stored, each member with a server-assigned memberId:
memberId mapped to your employee record; it’s the handle for single-member updates (PATCH /members/{memberId}) in census sync.
Census intake is enrollment and eligibility data. Before live mode, a BAA and data processing agreement are executed covering exactly this data. See Compliance.