JSON Schemas

JACS schemas now describe a small portable signing surface instead of many narrow workflow document types. The core model is a generic signed JSON document: canonical JSON bytes, a common header, cryptographic signatures, signer identity, hashes, optional files, and optional agreement semantics.

Application-specific payloads belong in the document body or in a custom schema layered on top of the header schema.

Preserved Schemas

Document and Agent Schemas

SchemaPurpose
header/v1/header.schema.jsonGeneric signature wrapper for signed JSON documents
agent/v1/agent.schema.jsonAgent identity and public signing metadata
agreement/v2/agreement.schema.jsonStandalone agreement document for verifiable consent to terms
a2a-verification-result.schema.jsonCross-language A2A artifact verification result

Component Schemas

SchemaPurpose
components/signature/v1/signature.schema.jsonCryptographic signatures
components/agreement/v1/agreement.schema.jsonLegacy sidecar agreement metadata and co-signatures
components/files/v1/files.schema.jsonFile attachments and content hashes

Configuration Schema

SchemaPurpose
jacs.config.schema.jsonAgent configuration file format

Schema Locations

Schemas are available as HTTPS URLs and local files:

https://hai.ai/schemas/header/v1/header.schema.json
https://hai.ai/schemas/agent/v1/agent.schema.json
https://hai.ai/schemas/agreement/v2/agreement.schema.json
https://hai.ai/schemas/components/signature/v1/signature.schema.json
https://hai.ai/schemas/components/agreement/v1/agreement.schema.json
https://hai.ai/schemas/components/files/v1/files.schema.json
https://hai.ai/schemas/jacs.config.schema.json

Generic Signed Documents

Every signed document includes a $schema field. Generic payloads use the header schema directly:

{
  "$schema": "https://hai.ai/schemas/header/v1/header.schema.json",
  "jacsId": "550e8400-e29b-41d4-a716-446655440000",
  "jacsVersion": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "jacsType": "document",
  "jacsLevel": "artifact",
  "content": {
    "invoice_id": "INV-001",
    "amount": 100.0
  }
}

Custom schemas may extend the header when an integration needs stronger payload validation:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://example.com/schemas/invoice.schema.json",
  "allOf": [
    { "$ref": "https://hai.ai/schemas/header/v1/header.schema.json" },
    {
      "type": "object",
      "properties": {
        "content": {
          "type": "object",
          "required": ["invoice_id", "amount"]
        }
      }
    }
  ]
}

Agreements

Use agreement/v2/agreement.schema.json for new agreement workflows. It is a standalone jacsType: "agreement" document with explicit terms, parties, signer/witness/notary policy, transcript references, links, controllers, and portable verification.

Use components/agreement/v1/agreement.schema.json only when a generic signed document needs simple legacy jacsAgreement countersignature metadata. V1 answers "did these agents approve this payload?" V2 answers "did these agents consent to these terms with this process record?"

HAI Extensions

JACS schemas include a custom hai property that categorizes fields:

ValueDescription
metaMetadata fields such as IDs, timestamps, and versions
baseCore cryptographic fields such as hashes and signatures
agentAgent-controlled content fields

These categories help determine which fields participate in hashing and signing.