POST /v1/logs/batch, Olira:
- Validates the
log_typefield (log type) against the platform catalog - Validates the
payloadagainst that log type’s JSON schema - Writes each record to the log store
- Optionally appends to the TEMP segment of matching view templates
Your organization’s platform configuration controls which log types are
accepted. Only log types you selected during onboarding are active;
submitting an unlisted type returns
403.Sending a log
| Field | Required | Description |
|---|---|---|
log_type | Yes | Log type (e.g. symptom_report); REST JSON key log_type |
patient_id | Yes | Olira-assigned patient_id |
payload | Varies | Log payload (schema depends on log type); see the catalog |
timestamp | No | ISO 8601 when the observation occurred; defaults to ingestion time if omitted |
log_id | No | UUID for deduplication; auto-generated if omitted |
idempotency_key | No | Duplicate submissions with the same idempotency_key are silently ignored |
trace | No | Link to an object in your system: { "object_type": "...", "object_id": "..." } |
logs array. Each object is one log.
Lifecycle-tracked logs vs. point-in-time records
Log types marked lifecycle create or update a persisted entry in patient state, carrying a status (active, resolved, remission, …), an effective time window, and a full audit trail of transitions. The entry does not resolve itself with the passage of time. You must explicitly close it by logging a follow-up event. For example, a symptom logged with a score above zero becomes active; it only becomes resolved when you log the same symptom again with score: 0. An alert created via care_action stays active until you re-log the same entry_key with status: "resolved". Conditions, allergies, devices, and procedures follow the same pattern; each is active until you log action: "remove" or a terminal clinical_status.
Log types without the lifecycle marker are immutable records. Each event is an independent observation appended to a rolling window: a vital sign reading, a lab result, a sleep session, a conversation transcript. There is nothing to “resolve”; older records naturally age out of the active window. Use these to capture what happened, not to track an ongoing clinical state.

