# Seriatim Transcript Input This document defines the JSON transcript accepted by the production Seriatim input adapter. It is a source input, not a durable lane artifact. Configure the input adapter through [Configuration](../config.md#production-module-keys). ## Contract Identity | Property | Value | | --- | --- | | Consumer | Seriatim input adapter | | Media type | `application/vnd.seriatim+json` | | Source document kind | `transcript` | | Source-unit kind | `transcript_segment` | ## Accepted Shape The input is one JSON object containing `metadata` and a non-empty `segments` array. This minimal document is valid: ```json { "metadata": {"id": "session-alpha"}, "segments": [ { "id": 1, "start": 0, "end": 4, "speaker": "Aria", "text": "Aria casts Cure Wounds." } ] } ``` The maintained two-segment input is [seriatim-minimal-transcript.json](../../examples/seriatim-minimal-transcript.json). | Field | Required | Meaning and constraints | | --- | --- | --- | | `metadata` | Yes | JSON object. Its entries become source metadata; no particular metadata key is otherwise required. | | `segments` | Yes | Non-empty array of segment objects, kept in input order. | | `segments[].id` | Yes | Positive canonical decimal integer, supplied as a JSON number or string. IDs must be unique. | | `segments[].start` | Yes | Finite, non-negative numeric value, supplied as a JSON number or string. | | `segments[].end` | Yes | Finite, non-negative numeric value that is not earlier than `start`. | | `segments[].speaker` | Yes | String that is non-empty after trimming. | | `segments[].text` | Yes | String that is non-empty after trimming. Its original text is retained. | Additional top-level and segment fields are ignored. A missing required field, `null` in place of an object or array, malformed JSON, or more than one top-level JSON value is rejected. ## Source Identity And References The adapter chooses the source ID in this order: 1. a non-empty source ID supplied by the calling request; 2. non-empty string `metadata.id`; 3. non-empty string `metadata.source_id`; 4. `seriatim:` followed by the first 16 hexadecimal characters of the raw input’s SHA-256 digest. Each accepted segment becomes one source unit whose unit ID is `segments[].id`. Its self-reference uses the derived source ID and the same segment ID for both range endpoints. Artifact contracts use those segment IDs when they cite transcript evidence. ## Compatibility This adapter accepts only the shape described here. A broader Seriatim export is usable only when it supplies this object, metadata, and segment shape with the stated types and constraints. Unknown additional fields do not add Notarius behavior.