---
title: "Hand an own entry to the firm: the blockers as a 422, else released and the judged text under it cleared"
method: POST
path: "/v1/entries/{id}/release"
tags: ["entries"]
---

# Hand an own entry to the firm: the blockers as a 422, else released and the judged text under it cleared

`POST /v1/entries/{id}/release`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/entries/{id}/release`
- Auth: HTTP bearer

Every blocker at once in `errors` (empty narrative, closed or missing matter, a required attribute missing or a value outside the matter's list). Already released is a no-op answering the same entry and the delivery it already has. There is no inverse (D-61). From release the entry is FROZEN: nothing is edited after release (D-164). In the same transaction the judged text of the intervals it covers is cleared (for an entry the pipeline drafted by a person matter learning is on for, held for its learning and deleted within the hour); their evidence stays, and no batch writes those intervals again, so the evidence behind a released line is the evidence that was behind it when the person released it. The practice system receives the entry's minutes, its `override_seconds` where one is set and else the sum of its parts, and applies any rounding of its own (D-218). The judged text cleared is under the entry's parts only: an interval in a gap between two of them keeps its text.

**Where the firm has a practice system, the entry is released only once the system has taken it**. A connector in any status but `connected` is the blocker `connector.not_connected`; a connected one adds its own blockers, each under a path of its own: `connector.matter` (a matter the system does not hold), `connector.timekeeper` (no employee, or an inactive one, bound to the author), `connector.narrative` (longer than the system's declared ceiling, both numbers in the message) and `connector.matter_blocked`; a required field the system declares is the attribute's own blocker. Then the entry is pushed inside this request, a connection failure retried quietly (three attempts within twenty seconds), and the release and its `delivery` (`released`, with the system's id) are committed only when the system has answered with its own id. A refused login at that connect marks the connector `needs_reconnect` and answers the 422 `connector.not_connected`; the system's own refusal is a 422 on one of `connector.matter_not_found`, `connector.matter_closed`, `connector.person_not_found`, `connector.person_inactive`, `connector.not_accepted` and `connector.reviewer` (the reviewer the firm chose was refused: its setting needs changing); a system that could not be reached is a 503 `practice-system-unreachable`. Each leaves the entry a draft. Where the practice system is one each member signs in to with their own account, the push goes out on the AUTHOR's own session: a member who has not signed in, whose session the system stopped accepting, or whose session is refused during the push is answered the 422 `connector.sign_in` (sign in under Settings, Practice system, and release again), which marks that member's session alone and never the firm's connector, so colleagues keep releasing; a member whose account there books no time is answered `connector.timekeeper`; and a matter the system does not show the member is answered as a matter that is not there, on `matter_id`. An entry edited while it was being released is a 409 `entry.changed`, still a draft, and a second release of an entry whose first is still with the practice system a 409: one push is in flight per entry. The push is idempotent on the entry id, so a release retried after a lost answer books nothing twice. Every blocker carries its `rule` and `params` (`narrative.*`, `matter.*`, `attribute.*`, `release.*`); a deleted draft is a 409 `entry.deleted`, and an entry that is not the caller's a 404 `entry.not_found`.

## Path parameters

- `id` string, required

## Response `200`

The released entry, and its delivery where the firm has a connector.

- object
  - `entry` object, required
    - `id` string, required
    - `day` string, required
    - `time_zone` string, required
    - `timekeeper_id` string, required
    - `t_start` string, date-time, required
    - `t_end` string, date-time, required
    - `parts` object[]
      - `t_start` string, date-time, required
      - `t_end` string, date-time, required
    - `narrative` string, required
    - `matter_id` string, nullable
    - `attributes` object
    - `internal_note` string, nullable
    - `status` 'draft' | 'released'
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `released_at` string, date-time, nullable
    - `edited_at` string, date-time, nullable
    - `override_seconds` integer, nullable
    - `device_id` string, nullable
  - `delivery` object, nullable
    - `kind` 'urios' | 'legalsense' | 'fake', required
    - `state` 'released' | 'accepted' | 'rejected' | 'edited', required
    - `reason` 'deleted_in_pms' | 'written_off' | 'draft_discarded' | 'edited_in_pms', nullable
    - `pms_status` string, nullable
    - `external_id` string, required
    - `state_changed_at` string, date-time, required
    - `pms_copy` object, nullable
      - `external_id` string, required
      - `present` boolean, required
      - `accepted` boolean
      - `billed` boolean
      - `written_off` boolean
      - `discarded` boolean
      - `minutes` integer, nullable
      - `day` string, nullable
      - `matter_external_ref` string, nullable
      - `narrative` string, nullable
      - `modified_at` string, date-time, nullable
      - `raw_status` string, nullable

## Other responses

- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.
- `404`: No such row for this tenant.
- `409`: The id or the email already belongs to something else.
- `422`: The request is well-formed but cannot be carried out as it stands.
- `503`: A capability this service was not configured with, or a practice system that could not be reached; the `type` says which.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
