Endpoints

Publish Review

An attested human approve or reject before private caption production. Reviewer identity is host-configured and cannot be set by callers.

GET/v1/runtimes/:runtimeId/publish-review-intakesRead host-produced intake receipts with their full decision lineage.

studio.local-runtime-publish-review-intakes.v1

Response Envelope

response
commandIdstring

Accepted command identity.

runtimeIdstring

Runtime identity for this journal.

journalHeadnumber

Highest journal sequence written.

intakesarray

Host-produced intake receipts with decision lineage.

Request
curl http://127.0.0.1:4312/v1/runtimes/$RUNTIME_ID/publish-review-intakes \
  -H "Authorization: Bearer $TOKEN"
200Response
{
    "schema": "studio.local-runtime-publish-review-intakes.v1",
    "commandId": "runtime-start:87a88ad697c53b8134783135c64c45c8c362bf9f682e121a720eb7867b2fcd2e",
    "runtimeId": "runtime:da4ff907-4240-42c7-8f14-deb6e2ce236a",
    "journalHead": 67,
    "intakes": [
        {
            "intakeId": "publish-review-intake:d2e6ca337389d34b267c563a523eccede7e26960a50ac140a25cd8ba4ebac588",
            "artifactId": "artifact:af9c320c97bd32daaa8a09cd4bc94b0305efa6891361fc566f63a5a188c9ecda",
            "receiptId": "publish-review-intake-receipt:20cad736985710c6a9beb195a38a602bf57f8ae58bd63033df248d28f5932504",
            "receiptContentId": "sha256:0befb1c0a44ac9726e4bccfb8a8ddaa542806e9f99fe6fb5d23389fca3fd5498",
            "integrity": "stored_intake_and_verified_study_readiness",
            "producer": "host_publish_review_intake_v1",
            "readiness": {
                "artifactId": "artifact:c964be13cb908aa2131abdb9277ab09d8ec81a3434c07f8e7364c6024d2ad734",
                "readinessId": "study-readiness-v4:765321c1bdd126182fd2aa3be49ad556686089771d486c0febb25d0abf6f5261",
                "receiptContentId": "sha256:4915eb74796dabdb3784df4f6ccf06c7cbc24599560ff88f1c9e1673ba16004c",
                "receiptId": "study-readiness-receipt-v4:3e8500b787ea6bb5f1d1acf049ef5486d8ad7e433762c23cfb946eb8d2bccc28"
            },
            "outcome": "queued",
            "reasonCodes": []
        }
    ]
}
GETPOST/v1/runtimes/:runtimeId/publish-review-decisionsRead reviews, or record one attested local approve or reject decision.

studio.local-runtime-publish-review-decisions.v1

Decision Request

application/json
intakeobjectrequired

Exact intake identity: intakeId, artifactId, receiptId, receiptContentId.

reviewer{ id, attestation }required

Must name the host-configured reviewer id and repeat the exact attestation string.

decision{ outcome, reasonCodes, note }required

outcome is "approve_for_caption_production" or "reject_with_reasons", with closed reason codes.

Response Envelope

response
commandIdstring

Accepted command identity.

runtimeIdstring

Runtime identity for this journal.

journalHeadnumber

Highest journal sequence written.

reviewsarray

Attested review decisions for this runtime; empty until one is recorded.

Read request
curl http://127.0.0.1:4312/v1/runtimes/$RUNTIME_ID/publish-review-decisions \
  -H "Authorization: Bearer $TOKEN"
200Response
{
    "schema": "studio.local-runtime-publish-review-decisions.v1",
    "commandId": "runtime-start:87a88ad697c53b8134783135c64c45c8c362bf9f682e121a720eb7867b2fcd2e",
    "runtimeId": "runtime:da4ff907-4240-42c7-8f14-deb6e2ce236a",
    "journalHead": 67,
    "reviewer": {
        "id": "reviewer:local-operator",
        "label": "Local review operator",
        "decisionAttestation": "I attest that I am the named reviewer and made this review decision.",
        "revocationAttestation": "I attest that I am the named reviewer and made this revocation decision."
    },
    "reviews": []
}
Approve request
curl -X POST http://127.0.0.1:4312/v1/runtimes/$RUNTIME_ID/publish-review-decisions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "intake": {
    "intakeId": "publish-review-intake:d2e6ca337389d34b267c563a523eccede7e26960a50ac140a25cd8ba4ebac588",
    "artifactId": "artifact:af9c320c97bd32daaa8a09cd4bc94b0305efa6891361fc566f63a5a188c9ecda",
    "receiptId": "publish-review-intake-receipt:20cad736985710c6a9beb195a38a602bf57f8ae58bd63033df248d28f5932504",
    "receiptContentId": "sha256:0befb1c0a44ac9726e4bccfb8a8ddaa542806e9f99fe6fb5d23389fca3fd5498"
  },
  "reviewer": {
    "id": "reviewer:local-operator",
    "attestation": "I attest that I am the named reviewer and made this review decision."
  },
  "decision": {
    "outcome": "approve_for_caption_production",
    "reasonCodes": [
      "reviewer_attested_caption_production_may_proceed"
    ],
    "note": null
  }
}'
201Response
{
    "schema": "studio.local-runtime-publish-review-decisions.v1",
    "commandId": "runtime-start:87a88ad697c53b8134783135c64c45c8c362bf9f682e121a720eb7867b2fcd2e",
    "runtimeId": "runtime:da4ff907-4240-42c7-8f14-deb6e2ce236a",
    "journalHead": 70,
    "reviewer": {
        "id": "reviewer:local-operator",
        "label": "Local review operator",
        "decisionAttestation": "I attest that I am the named reviewer and made this review decision.",
        "revocationAttestation": "I attest that I am the named reviewer and made this revocation decision."
    },
    "reviews": [
        {
            "reviewId": "publish-review:55cb99708b008092cb1b8e9675468eb869016ad859cefb9397457e98c0d5cf08",
            "artifactId": "artifact:e986d94e686a223f7c269d49d68188b45b8cba746f38f293189fa55803872e54",
            "receiptId": "publish-review-decision-receipt:088b53b0a71ff278d4a5c5d349645f3c7d470f8c61f94151b3aa6ccb8cb8f1ee",
            "receiptContentId": "sha256:85ad2898c419684dd4e49600b5ce8565e4c18bccc6e748e36fcd5e4ffe1205b3",
            "integrity": "stored_review_and_verified_queued_intake",
            "producer": "host_publish_review_v1",
            "intake": {
                "artifactId": "artifact:af9c320c97bd32daaa8a09cd4bc94b0305efa6891361fc566f63a5a188c9ecda",
                "intakeId": "publish-review-intake:d2e6ca337389d34b267c563a523eccede7e26960a50ac140a25cd8ba4ebac588",
                "receiptContentId": "sha256:0befb1c0a44ac9726e4bccfb8a8ddaa542806e9f99fe6fb5d23389fca3fd5498",
                "receiptId": "publish-review-intake-receipt:20cad736985710c6a9beb195a38a602bf57f8ae58bd63033df248d28f5932504"
            },
            "readiness": {
                "artifactId": "artifact:c964be13cb908aa2131abdb9277ab09d8ec81a3434c07f8e7364c6024d2ad734",
                "readinessId": "study-readiness-v4:765321c1bdd126182fd2aa3be49ad556686089771d486c0febb25d0abf6f5261",
                "receiptContentId": "sha256:4915eb74796dabdb3784df4f6ccf06c7cbc24599560ff88f1c9e1673ba16004c",
                "receiptId": "study-readiness-receipt-v4:3e8500b787ea6bb5f1d1acf049ef5486d8ad7e433762c23cfb946eb8d2bccc28"
            },
            "reviewer": {
                "id": "reviewer:local-operator",
                "label": "Local review operator",
                "attestation": "I attest that I am the named reviewer and made this review decision."
            },
            "outcome": "approve_for_caption_production",
            "reasonCodes": [
                "reviewer_attested_caption_production_may_proceed"
            ],
            "note": null,
            "state": "approved_for_caption_production",
            "revocation": null
        }
    ]
}
POST/v1/runtimes/:runtimeId/publish-review-revocationsRevoke a prior approval. Rejection and revocation stay visible forever.

studio.local-runtime-publish-review-decisions.v1

Revocation Request

application/json
approvalobjectrequired

Exact approval identity: reviewId, artifactId, receiptId, receiptContentId.

reviewer{ id, attestation }required

Must name the host-configured reviewer id and repeat the exact revocation attestation string.

revocation{ reasonCodes, note }required

Closed revocation reason codes; note may be null.

Revoke request
curl -X POST http://127.0.0.1:4312/v1/runtimes/$RUNTIME_ID/publish-review-revocations \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "approval": {
    "reviewId": "publish-review:fd270635f13ca8a82f9ab9858ffdf2d5e8e3fabbbfbdff196f589a4aeb992713",
    "artifactId": "artifact:d3f53f5a25444737836e416ca86683594d1f0ea460facda6d52e60c1c3c01eca",
    "receiptId": "publish-review-decision-receipt:436d61ef564f9b2897bb8a08813c619ffa4cd5cf1af905e2040ad42e8186dd1b",
    "receiptContentId": "sha256:fc69cc44bb855d751f372be4af19a24195e50e0836659ef6747358944f8f5d39"
  },
  "reviewer": {
    "id": "reviewer:local-operator",
    "attestation": "I attest that I am the named reviewer and made this revocation decision."
  },
  "revocation": {
    "reasonCodes": [
      "approval_entered_in_error"
    ],
    "note": null
  }
}'
201Response
{
    "schema": "studio.local-runtime-publish-review-decisions.v1",
    "commandId": "runtime-start:87a88ad697c53b8134783135c64c45c8c362bf9f682e121a720eb7867b2fcd2e",
    "runtimeId": "runtime:da4ff907-4240-42c7-8f14-deb6e2ce236a",
    "journalHead": 73,
    "reviewer": {
        "id": "reviewer:local-operator",
        "label": "Local review operator",
        "decisionAttestation": "I attest that I am the named reviewer and made this review decision.",
        "revocationAttestation": "I attest that I am the named reviewer and made this revocation decision."
    },
    "reviews": [
        {
            "reviewId": "publish-review:fd270635f13ca8a82f9ab9858ffdf2d5e8e3fabbbfbdff196f589a4aeb992713",
            "artifactId": "artifact:d3f53f5a25444737836e416ca86683594d1f0ea460facda6d52e60c1c3c01eca",
            "receiptId": "publish-review-decision-receipt:436d61ef564f9b2897bb8a08813c619ffa4cd5cf1af905e2040ad42e8186dd1b",
            "receiptContentId": "sha256:fc69cc44bb855d751f372be4af19a24195e50e0836659ef6747358944f8f5d39",
            "integrity": "stored_review_and_verified_queued_intake",
            "producer": "host_publish_review_v1",
            "intake": {
                "artifactId": "artifact:ed94b3fe33b96cc861a933ef063609b05a591674b3c34b9e32dae01e6282148c",
                "intakeId": "publish-review-intake:5b4881c24982242235ebae936fa52e67cb7cffaf85608f7ca8cb977ad5eb9a34",
                "receiptContentId": "sha256:b7c06fdfb579970f103f25c69bb9af3126c0afc33799b41c06fabc2d82794d8a",
                "receiptId": "publish-review-intake-receipt:317b9772f3690d88a00989fb6a4e11ef9b27e503864548913e502d4fb96b8a9f"
            },
            "readiness": {
                "artifactId": "artifact:baa2174b4f5ea3c0b18a9803cb92d7f25c52c620c80f97e0b7de21a73adff24b",
                "readinessId": "study-readiness-v4:a28785c58ccf5aaae1c4a106ef8600abbd8e190d4ad69616ecaa43d4162f9f25",
                "receiptContentId": "sha256:5b201a2eb6abd2c2c2f919c835de58eaa67cddb061ac3b9a5d82fdbd05d532ce",
                "receiptId": "study-readiness-receipt-v4:2f6f3a01671990f33a0bf3038d078c3242ed5a6352190fa1d6752f93b81425bd"
            },
            "reviewer": {
                "id": "reviewer:local-operator",
                "label": "Local review operator",
                "attestation": "I attest that I am the named reviewer and made this review decision."
            },
            "outcome": "approve_for_caption_production",
            "reasonCodes": [
                "reviewer_attested_caption_production_may_proceed"
            ],
            "note": null,
            "state": "approval_revoked",
            "revocation": {
                "revocationId": "publish-review-revocation:5fca0cc20ac2fdf9b02f626b1cafd561921a4906d635010a566999cb5ed84444",
                "artifactId": "artifact:bbd81bfd3e9572e56606312806a66c91d8d26fe0a109fe3fc43305daa1899825",
                "receiptId": "publish-review-revocation-receipt:812d53639b5b8fa3f632070a35d265311d0025c77e88f4e9276bab6c84f2b172",
                "receiptContentId": "sha256:b06ad71ea7d10a32d20fe0ac3c79263c464918b60c46a470d00b814232f1bf91",
                "integrity": "stored_revocation_and_verified_approval",
                "producer": "host_publish_review_v1",
                "reviewer": {
                    "id": "reviewer:local-operator",
                    "label": "Local review operator",
                    "attestation": "I attest that I am the named reviewer and made this revocation decision."
                },
                "reasonCodes": [
                    "approval_entered_in_error"
                ],
                "note": null
            }
        }
    ]
}