HYBRID-CHAINDEVELOPERS
DOCUMENTATIONv2
PATCH

Newsroom operations

Update article

/api/v2/admin/news/articles/{article_uuid}
AUTHENTICATIONBearer token · admin:news:writeAUTHORITATIVE OWNERnewsroom-serviceCONTRACT AUTHORITYGenerated Rust OpenAPISTATUSSource ready · production listed

PURPOSE + BUSINESS CONTEXT

Update, schedule, publish, or archive an authorized article.

WHEN THIS CALL IS USEFUL

Use after re-reading the exact article revision to save a draft, schedule it, publish it, or archive it with an attributed reason.

OUTCOME · Revise and reconcile

What changes

Creates a new immutable revision and lifecycle proof event; PUBLISH exposes that canonical snapshot through the public Newsroom.

WHY IT MATTERS

  • Gives people and agents a contract-backed way to advance article.
  • Creates an attributed and versioned editorial workflow with permanent slugs, explicit publication actions, presentation metadata, and retained reasons for lifecycle changes.

ISOLATION + AUTHORITY

Editor identity, article UUID, permanent slug, structured body, metadata, revision version, schedule, publication, archive reason, public projection, and integrity verification remain distinct. Editorial authority does not grant tenant, identity, financial, wallet, settlement, matching, or trading authority.

BEFORE YOU CALL

  • Authenticate at the documented boundary: bearer+scope.
  • Supply the required article_uuid (path), expected_version (body), action (body), reason (body) exactly as defined by the live contract.
  • Resolve the editor authority, article UUID or unique permanent slug, current revision, requested lifecycle action, attribution, and required publication or archival reason.

WHAT TO DO NEXT

  • Re-read the article revision and lifecycle state, then confirm the public projection only when the requested action was publication.
  • Preserve the permanent slug, expected version, attribution, and reason across later schedule, publication, or archival actions.

AGENT GUIDANCE

  • Use article only for the purpose and lifecycle stage described by this operation; do not treat it as authority for an adjacent action.
  • Supply the required article_uuid (path), expected_version (body), action (body), reason (body) exactly as defined by the live contract.
  • Treat draft creation, content revision, scheduling, publication, public visibility, verification, archival, and external factual accuracy as separate concerns.
  • After a timeout or conflict, read authoritative state before deciding whether an equivalent retry is safe.
MACHINE CONTRACT

The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.

Open the authoritative production contract

EXTENDED INTEGRATION GUIDANCE

Readable request and response reference

Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.

PARAMETERS

Headers, path, query, and body

NAMELOCATIONPRESENCETYPE / RULES / PURPOSE
AuthorizationheaderRequired

Bearer tokenCredential containing the admin:news:write scope.EXAMPLEBearer hc_live_…

Idempotency-KeyheaderRequired

ASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLEnews-publish-agent-api-v2

article_uuidpathRequired

32-character hexadecimal identifierStable article identifier returned by the restricted collection or create response.EXAMPLE7d41f32773b64855a72106a62ea6a5f1

expected_versionbodyRequired

integer · ≥1Latest revision number used as an optimistic concurrency boundary.EXAMPLE1

actionbodyRequired

SAVE_DRAFT | SCHEDULE | PUBLISH | ARCHIVEExact governed editorial transition.EXAMPLEPUBLISH

reasonbodyRequired

string · 8–500Attributed revision or lifecycle rationale retained in evidence.EXAMPLEEditorial review and compliance approval complete.

step_up_tokenbodyOptional

purpose-bound tokenRequired for publication or archive when configured by owner policy; never retain it after use.EXAMPLEhcsu_…

slugbodyOptional

lowercase URL slug · 3–160Replacement stable, unique public slug.EXAMPLEagent-ready-api-reference

titlebodyOptional

string · 3–200Replacement public headline.EXAMPLEHybrid-Chain publishes an agent-ready API reference

categorybodyOptional

string · 1–64Replacement exact newsroom collection.EXAMPLEengineering

excerptbodyOptional

string · 1–1600Replacement public card, search, and social summary.EXAMPLEThe V2 reference now exposes an executable OpenAPI contract and retained publication evidence.

bodybodyOptional

NewsContentBlock[] · 1–120Replacement ordered paragraph, heading, quote, list, or callout blocks; HTML, scripts, secrets, and unknown block fields are rejected.EXAMPLE[{"type":"heading","text":"Built for agents","level":2,"items":[],"ordered":null},{"type":"paragraph","text":"Fetch the live OpenAPI document before generating calls.","level":null,"items":[],"ordered":null},{"type":"list","text":null,"level":null,"items":["Ingest","Build","Validate"],"ordered":true}]

author_namebodyOptional

string · 1–160Replacement public byline only; the authenticated profile remains the ledger actor.EXAMPLEHybrid-Chain Editorial

eyebrowbodyOptional

string · max 80Replacement short editorial label.EXAMPLEDeveloper platform

featuredbodyOptional

boolean · default falseReplacement highlights the article in supported presentation surfaces.EXAMPLEtrue

tagsbodyOptional

string[] · max 16Replacement search and classification tags.EXAMPLE["api","agents"]

productsbodyOptional

slug[] · max 16Replacement related product slugs.EXAMPLE["developer-platform"]

social_linksbodyOptional

string map · max 16Replacement allowlisted public presentation links.EXAMPLE{"canonical":"https://hybrid-chain.com/news/agent-ready-api-reference"}

seo_titlebodyOptional

string · max 220Replacement search title; defaults to title.EXAMPLEAgent-ready Hybrid-Chain API

seo_descriptionbodyOptional

string · max 320Replacement search description; defaults to excerpt.EXAMPLEIntegrate Hybrid-Chain V2 from its live OpenAPI 3.1 contract.

editorial_datebodyOptional

RFC 3339 timestamp | nullRequired for SCHEDULE; becomes public only after PUBLISH.EXAMPLE2026-09-03T16:00:00Z

REQUEST

JSON body example

{
  "expected_version": 1,
  "action": "PUBLISH",
  "reason": "Editorial review and compliance approval complete."
}

RESPONSES

Status and payload examples

200New canonical revision and lifecycle proof event; PUBLISH exposes this exact retained snapshot through public Newsroom reads.Mutation completed · JSON RESPONSE+
{
  "article_uuid": "7d41f32773b64855a72106a62ea6a5f1",
  "slug": "agent-ready-api-reference",
  "title": "Hybrid-Chain publishes an agent-ready API reference",
  "eyebrow": "Developer platform",
  "category": "engineering",
  "excerpt": "The V2 reference now exposes an executable OpenAPI contract and retained publication evidence.",
  "author_name": "Hybrid-Chain Editorial",
  "status": "PUBLISHED",
  "featured": true,
  "tags": [
    "api",
    "agents"
  ],
  "products": [
    "developer-platform"
  ],
  "social_links": {
    "canonical": "https://hybrid-chain.com/news/agent-ready-api-reference"
  },
  "seo_title": "Agent-ready Hybrid-Chain API",
  "seo_description": "Integrate Hybrid-Chain V2 from its live OpenAPI 3.1 contract.",
  "reading_minutes": 2,
  "published_at": "2026-09-01T19:00:00Z",
  "scheduled_at": null,
  "editorial_date": null,
  "revision": 2,
  "content_commitment": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "previous_commitment": null,
  "created": "2026-09-01T18:30:00Z",
  "updated": "2026-09-01T19:00:00Z",
  "body": [
    {
      "type": "heading",
      "text": "Built for agents",
      "level": 2,
      "items": [],
      "ordered": null
    },
    {
      "type": "paragraph",
      "text": "Fetch the live OpenAPI document before generating calls.",
      "level": null,
      "items": [],
      "ordered": null
    },
    {
      "type": "list",
      "text": null,
      "level": null,
      "items": [
        "Ingest",
        "Build",
        "Validate"
      ],
      "ordered": true
    }
  ],
  "revisions": [
    {
      "revision_uuid": "53537df98c224331accff4ab99e8d1ac",
      "revision": 1,
      "change_summary": "Initial private draft",
      "content_commitment": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "previous_commitment": null,
      "published_at": null,
      "created": "2026-09-01T18:30:00Z"
    }
  ],
  "proof_chain": [
    {
      "sequence": 1,
      "type": "ARTICLE_CREATED",
      "payload_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "previous_event_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
      "event_hash": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "created": "2026-09-01T18:30:00Z"
    }
  ]
}
INTEGRATION DECISION
CALLER ACTION
Accept the returned representation or receipt, then re-read the article revision and lifecycle state, then confirm the public projection only when the requested action was publication.
RETRY SAFETY
Do not repeat a successful mutation merely to confirm it. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Persist returned identifiers, versions, commitments, and receipts. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
404The article does not exist in the authenticated owner context.Resource not visible · JSON RESPONSE+
{
  "code": "newsroom_article_not_found",
  "message": "The article does not exist in the authenticated owner context."
}
INTEGRATION DECISIONnewsroom_article_not_found
CALLER ACTION
Verify the canonical identifier and authenticated owner boundary. A 404 may intentionally conceal a resource outside the caller's authority.
RETRY SAFETY
Do not retry the unchanged identifier repeatedly. Refresh the relevant collection or lookup before choosing another identifier.
STATE RECONCILIATION
Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
401The bearer credential is missing, invalid, or expired.Authentication required · JSON RESPONSE+
{
  "code": "invalid_credentials",
  "message": "The bearer credential is missing, invalid, or expired."
}
INTEGRATION DECISIONinvalid_credentials
CALLER ACTION
Discard the rejected credential, complete the documented authentication or reassertion flow, and rebuild any request signature with fresh timestamps and nonces.
RETRY SAFETY
Retry only with a newly valid credential and fresh replay-protection values. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Assume the outcome is unknown only when the connection failed after transmission; otherwise authentication failed before domain work. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
403The credential lacks exact admin:news:write authority or required publication policy.Authority or policy denied · JSON RESPONSE+
{
  "code": "insufficient_scope",
  "message": "The credential lacks exact admin:news:write authority or required publication policy."
}
INTEGRATION DECISIONinsufficient_scope
CALLER ACTION
Verify the exact scope, tenant or workspace membership, owner boundary, step-up purpose, feature policy, and resource eligibility. Never broaden authority automatically.
RETRY SAFETY
Do not retry until the missing authority or policy condition has been deliberately resolved with least privilege.
STATE RECONCILIATION
Confirm the caller and resource resolve to the same authority boundary for tenant-scoped administrative aggregates, workloads, controls, reviews, and audit-safe operational projections.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
409The expected revision is stale, the slug conflicts, or the idempotency key was reused with another body.State reconciliation required · JSON RESPONSE+
{
  "code": "newsroom_conflict",
  "message": "The expected revision is stale, the slug conflicts, or the idempotency key was reused with another body."
}
INTEGRATION DECISIONnewsroom_conflict
CALLER ACTION
Stop the mutation sequence and fetch the latest authoritative resource, lifecycle state, version, ETag, reservation, or existing idempotency result.
RETRY SAFETY
Retry only after reconciling the conflict. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
422The fields, action, reason, structured blocks, identifier, or Idempotency-Key are invalid.Request must change · JSON RESPONSE+
{
  "code": "invalid_newsroom_request",
  "message": "The fields, action, reason, structured blocks, identifier, or Idempotency-Key are invalid."
}
INTEGRATION DECISIONinvalid_newsroom_request
CALLER ACTION
Rebuild the request from the live OpenAPI operation and correct the rejected method, media type, header, parameter, or body field.
RETRY SAFETY
Do not retry the same invalid request. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Compare the submitted values with the documented constraints before another call. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
503The authoritative Core publication ledger is unavailable.Dependency unavailable or outcome uncertain · JSON RESPONSE+
{
  "code": "newsroom_unavailable",
  "message": "The authoritative Core publication ledger is unavailable."
}
INTEGRATION DECISIONnewsroom_unavailable
CALLER ACTION
Preserve the exact request and treat the outcome as uncertain until authoritative state proves whether it committed.
RETRY SAFETY
Reconcile before retrying. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions. Use bounded backoff with jitter.
STATE RECONCILIATION
Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.

OPERATIONAL NOTES

Security and lifecycle guarantees

  • Fetch the latest article before updating and send its revision as expected_version. On 409, re-read, inspect the intervening revision, and form a new editorial intent rather than overwriting it.
  • SCHEDULE requires editorial_date. PUBLISH is the only action that makes the retained snapshot public. ARCHIVE retains immutable revision and proof history.
  • A successful lifecycle action is not website deployment authority. It does not change traffic, trading, matching, settlement, market, or infrastructure state.
  • Retain the new revision, content_commitment, previous_commitment, change summary, and proof-chain hashes. Reconcile through the public verification route before claiming authenticity.
DOCUMENTATION STATUS

This route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.

Verify the exact production OpenAPI operation Return to the V2 directory