{
  "spec_version": 3,
  "spec_versions": {
    "1": "fp_/ic_ — legacy marshal of {configuration, language, signals}; verify-only",
    "2": "fp2_/ic2_ — RFC 8785 (JCS) canonical payload; input commitment keyed by the raw API credential",
    "3": "fp2_/ic3_ — v2 canonical payload; input commitment keyed by HKDF-SHA256 binding key (purpose-separated from the credential)"
  },
  "canonicalization": "RFC 8785 (JSON Canonicalization Scheme)",
  "hash": "SHA-256 over canonical payload, truncated to 16 bytes, hex, fp2_ prefix",
  "signature_scheme": "Ed25519 over ASCII string fingerprint + '|' + input_commitment, sig_ed25519_ + hex",
  "input_commitment_schemes": {
    "2": "HMAC-SHA256 keyed by caller API key over canonical {language, text}, truncated to 16 bytes, hex, ic2_ prefix",
    "3": {
      "binding_key": "HKDF-SHA256(IKM=UTF-8 credential, no salt, info=sentiqra/input-binding/v3, L=32), encoded bk_\u003c64 hex\u003e",
      "binding_key_id": "bk_\u003c16 hex of SHA-256(binding key)\u003e",
      "scheme": "HMAC-SHA256 keyed by binding key over canonical {language, text}, truncated to 16 bytes, hex, ic3_ prefix"
    }
  },
  "dev_ed25519_seed_hex": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
  "public_key_hex": "03a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc8664125531b8",
  "key_id": "edk_56475aa7",
  "vectors": [
    {
      "name": "v3 single analyzer with signals",
      "receipt_version": 3,
      "input": {
        "language": "en",
        "text": "you are a worthless idiot"
      },
      "key_material": "sq_live_vector_key",
      "binding_key": "bk_720b80b4cfb315b880c5d8fb4b9d3b4bed13e74086ff8b7c50f65b33aaa46264",
      "binding_key_id": "bk_bc54a32479185739",
      "payload": {
        "analyzers": [
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "en",
        "outcomes": {
          "trust-safety": "completed"
        },
        "signals": [
          {
            "analyzer": "trust-safety",
            "label": "Insults \u0026 Derogation",
            "score": 0.93,
            "type": "insults_derogation"
          }
        ]
      },
      "canonical_json": "{\"analyzers\":[\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"en\",\"outcomes\":{\"trust-safety\":\"completed\"},\"signals\":[{\"analyzer\":\"trust-safety\",\"label\":\"Insults \u0026 Derogation\",\"score\":0.93,\"type\":\"insults_derogation\"}]}",
      "fingerprint": "fp2_b6e445c291ed0a4ab6a89b854f4adfcb",
      "input_commitment": "ic3_e4b7fb90768764c6ccc3a1d635062c27",
      "signed_message": "fp2_b6e445c291ed0a4ab6a89b854f4adfcb|ic3_e4b7fb90768764c6ccc3a1d635062c27",
      "signature": "sig_ed25519_409782bb75344f91ef78dac56cfffc23c8d2b1cdf3d78c7111b8bf70457816318aede14948c06ef10f1c91e5f5f7e323d98e700f512048712f6ba4fe27d54401",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v3 completed with no signals",
      "receipt_version": 3,
      "input": {
        "language": "en",
        "text": "a perfectly ordinary message about the weather"
      },
      "key_material": "sq_live_vector_key",
      "binding_key": "bk_720b80b4cfb315b880c5d8fb4b9d3b4bed13e74086ff8b7c50f65b33aaa46264",
      "binding_key_id": "bk_bc54a32479185739",
      "payload": {
        "analyzers": [
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "en",
        "outcomes": {
          "trust-safety": "completed"
        },
        "signals": []
      },
      "canonical_json": "{\"analyzers\":[\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"en\",\"outcomes\":{\"trust-safety\":\"completed\"},\"signals\":[]}",
      "fingerprint": "fp2_0ffcfd17356f6d7610f77f2f92862691",
      "input_commitment": "ic3_4c42342b1af52bbe2704e6d9545e7871",
      "signed_message": "fp2_0ffcfd17356f6d7610f77f2f92862691|ic3_4c42342b1af52bbe2704e6d9545e7871",
      "signature": "sig_ed25519_a3f927a71b9242bd3e715bb0ca2741a01e6fbfd5239db4258429e64c2214e7552fefd51cee198b945c6fce4c8bcd6881d18d280d93c519a4b0669731d336bc08",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v3 multi analyzer partial failure",
      "receipt_version": 3,
      "input": {
        "language": "en",
        "text": "you are a worthless idiot"
      },
      "key_material": "sq_live_vector_key",
      "binding_key": "bk_720b80b4cfb315b880c5d8fb4b9d3b4bed13e74086ff8b7c50f65b33aaa46264",
      "binding_key_id": "bk_bc54a32479185739",
      "payload": {
        "analyzers": [
          "cybersecurity",
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "en",
        "outcomes": {
          "cybersecurity": "failed",
          "trust-safety": "completed"
        },
        "signals": [
          {
            "analyzer": "trust-safety",
            "label": "Insults \u0026 Derogation",
            "score": 0.93,
            "type": "insults_derogation"
          }
        ]
      },
      "canonical_json": "{\"analyzers\":[\"cybersecurity\",\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"en\",\"outcomes\":{\"cybersecurity\":\"failed\",\"trust-safety\":\"completed\"},\"signals\":[{\"analyzer\":\"trust-safety\",\"label\":\"Insults \u0026 Derogation\",\"score\":0.93,\"type\":\"insults_derogation\"}]}",
      "fingerprint": "fp2_cfc57568d715ab684438138a8285da21",
      "input_commitment": "ic3_e4b7fb90768764c6ccc3a1d635062c27",
      "signed_message": "fp2_cfc57568d715ab684438138a8285da21|ic3_e4b7fb90768764c6ccc3a1d635062c27",
      "signature": "sig_ed25519_f6d928495a1e1071da17db4a4bd052cb3b6cf5d9bd28e75df6594a7ac26b85aabe1edac5be735eeb5407ca98405f7762f02277c8bf6b9bd3cd09327635d71909",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v3 analyzer not_applicable",
      "receipt_version": 3,
      "input": {
        "language": "ja",
        "text": "you are a worthless idiot"
      },
      "key_material": "sq_live_vector_key",
      "binding_key": "bk_720b80b4cfb315b880c5d8fb4b9d3b4bed13e74086ff8b7c50f65b33aaa46264",
      "binding_key_id": "bk_bc54a32479185739",
      "payload": {
        "analyzers": [
          "finance",
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "ja",
        "outcomes": {
          "finance": "completed",
          "trust-safety": "not_applicable"
        },
        "signals": []
      },
      "canonical_json": "{\"analyzers\":[\"finance\",\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"ja\",\"outcomes\":{\"finance\":\"completed\",\"trust-safety\":\"not_applicable\"},\"signals\":[]}",
      "fingerprint": "fp2_26d6f4a2bc5e657d9234ea3258f2f56d",
      "input_commitment": "ic3_3252a2fc122aeda7636bf51a5d0aee41",
      "signed_message": "fp2_26d6f4a2bc5e657d9234ea3258f2f56d|ic3_3252a2fc122aeda7636bf51a5d0aee41",
      "signature": "sig_ed25519_5a9c04e253de931858c0a215e374355c4844acfcf8d4e7a0891df5403c3c41e1b3c01327d90d46c723ce143a20f9ebf8ee473a5b1f70e1a3bd2badcfad8ba90d",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v2 single analyzer with signals",
      "receipt_version": 2,
      "input": {
        "language": "en",
        "text": "you are a worthless idiot"
      },
      "key_material": "sq_live_vector_key",
      "payload": {
        "analyzers": [
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "en",
        "outcomes": {
          "trust-safety": "completed"
        },
        "signals": [
          {
            "analyzer": "trust-safety",
            "label": "Insults \u0026 Derogation",
            "score": 0.93,
            "type": "insults_derogation"
          }
        ]
      },
      "canonical_json": "{\"analyzers\":[\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"en\",\"outcomes\":{\"trust-safety\":\"completed\"},\"signals\":[{\"analyzer\":\"trust-safety\",\"label\":\"Insults \u0026 Derogation\",\"score\":0.93,\"type\":\"insults_derogation\"}]}",
      "fingerprint": "fp2_b6e445c291ed0a4ab6a89b854f4adfcb",
      "input_commitment": "ic2_572994b6abfee2ab1376153602d09165",
      "signed_message": "fp2_b6e445c291ed0a4ab6a89b854f4adfcb|ic2_572994b6abfee2ab1376153602d09165",
      "signature": "sig_ed25519_ae5242077ff5421e101d300ed6ffbe639b58db174407c394aa6fcc7c9c445d70a6dc666fca947616dd108cc5c6cc9537a38604f5868e52cf954485d33c27f404",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v2 non-ascii input and label",
      "receipt_version": 2,
      "input": {
        "language": "fr",
        "text": "tu es un idiot 🚫 café"
      },
      "key_material": "sq_live_vector_key",
      "payload": {
        "analyzers": [
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "fr",
        "outcomes": {
          "trust-safety": "completed"
        },
        "signals": [
          {
            "analyzer": "trust-safety",
            "label": "Insultes",
            "score": 0.87,
            "type": "insults_derogation"
          }
        ]
      },
      "canonical_json": "{\"analyzers\":[\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"fr\",\"outcomes\":{\"trust-safety\":\"completed\"},\"signals\":[{\"analyzer\":\"trust-safety\",\"label\":\"Insultes\",\"score\":0.87,\"type\":\"insults_derogation\"}]}",
      "fingerprint": "fp2_59599fb1f2b8ce003a95db1352d00730",
      "input_commitment": "ic2_2a1b31a9b10791c26bc70861f7873474",
      "signed_message": "fp2_59599fb1f2b8ce003a95db1352d00730|ic2_2a1b31a9b10791c26bc70861f7873474",
      "signature": "sig_ed25519_e96779aa9d0d1515cd921deefb65512d1f8777f908ca9ac4924a1d4d4cfa9afbfca7df75df4dcdff30da964b7bcdad2dadb60752d52baa306e69489d8766d306",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    },
    {
      "name": "v2 score edge encodings",
      "receipt_version": 2,
      "input": {
        "language": "en",
        "text": "numeric edge"
      },
      "key_material": "sq_live_vector_key",
      "payload": {
        "analyzers": [
          "trust-safety"
        ],
        "configuration": "sqcfg_TESTVCT0",
        "language": "en",
        "outcomes": {
          "trust-safety": "completed"
        },
        "signals": [
          {
            "label": "A",
            "score": 0.30000000000000004,
            "type": "a"
          },
          {
            "label": "B",
            "score": 1e-7,
            "type": "b"
          },
          {
            "label": "C",
            "score": 1,
            "type": "c"
          }
        ]
      },
      "canonical_json": "{\"analyzers\":[\"trust-safety\"],\"configuration\":\"sqcfg_TESTVCT0\",\"language\":\"en\",\"outcomes\":{\"trust-safety\":\"completed\"},\"signals\":[{\"label\":\"A\",\"score\":0.30000000000000004,\"type\":\"a\"},{\"label\":\"B\",\"score\":1e-7,\"type\":\"b\"},{\"label\":\"C\",\"score\":1,\"type\":\"c\"}]}",
      "fingerprint": "fp2_0a0e182f2e3eddd3e6772a72a0351dc4",
      "input_commitment": "ic2_d72e58dfd21173300ae501e3dbae3566",
      "signed_message": "fp2_0a0e182f2e3eddd3e6772a72a0351dc4|ic2_d72e58dfd21173300ae501e3dbae3566",
      "signature": "sig_ed25519_bbf1cf895ed71ea0bef6d682d69cae14de918f1fae7b44165e1bf79cfe532f959fb9dd8c9ee2fae992ce4e01e9d69481876e30706516a3fa7046f7112ab87904",
      "expect": {
        "fingerprint_match": true,
        "input_commitment": "verified",
        "malformed_rejected": false,
        "signature_valid": true
      }
    }
  ]
}
