The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Download ZIP
schemas/v0.1/shield_case.schema.json 310 lines · 8.4 KB · json
1
{
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
  "type": "object",
4
  "properties": {
5
    "protocolVersion": {
6
      "type": "string",
7
      "const": "0.1"
8
    },
9
    "caseId": {
10
      "type": "string",
11
      "format": "uuid",
12
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
13
    },
14
    "agentId": {
15
      "type": "string",
16
      "minLength": 1
17
    },
18
    "title": {
19
      "type": "string",
20
      "minLength": 1,
21
      "maxLength": 160
22
    },
23
    "goal": {
24
      "type": "string",
25
      "minLength": 1,
26
      "maxLength": 2000
27
    },
28
    "brief": {
29
      "default": "",
30
      "type": "string",
31
      "maxLength": 4000
32
    },
33
    "proposedAction": {
34
      "type": "string",
35
      "maxLength": 1000
36
    },
37
    "counterparty": {
38
      "type": "object",
39
      "properties": {
40
        "type": {
41
          "type": "string",
42
          "enum": [
43
            "human",
44
            "agent",
45
            "service",
46
            "unknown"
47
          ]
48
        },
49
        "reference": {
50
          "type": "string",
51
          "minLength": 1,
52
          "maxLength": 200
53
        }
54
      },
55
      "required": [
56
        "type"
57
      ],
58
      "additionalProperties": false
59
    },
60
    "status": {
61
      "type": "string",
62
      "enum": [
63
        "open",
64
        "awaiting_input",
65
        "ready",
66
        "closed"
67
      ]
68
    },
69
    "riskTier": {
70
      "default": "medium",
71
      "type": "string",
72
      "enum": [
73
        "low",
74
        "medium",
75
        "high",
76
        "critical"
77
      ]
78
    },
79
    "facts": {
80
      "default": [],
81
      "maxItems": 100,
82
      "type": "array",
83
      "items": {
84
        "type": "object",
85
        "properties": {
86
          "factId": {
87
            "type": "string",
88
            "format": "uuid",
89
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
90
          },
91
          "statement": {
92
            "type": "string",
93
            "minLength": 1,
94
            "maxLength": 1000
95
          },
96
          "source": {
97
            "type": "string",
98
            "enum": [
99
              "owner",
100
              "protected_agent",
101
              "counterparty",
102
              "system"
103
            ]
104
          },
105
          "status": {
106
            "type": "string",
107
            "enum": [
108
              "asserted",
109
              "verified",
110
              "disputed",
111
              "contradicted"
112
            ]
113
          },
114
          "evidenceReferences": {
115
            "default": [],
116
            "maxItems": 20,
117
            "type": "array",
118
            "items": {
119
              "type": "string",
120
              "minLength": 1,
121
              "maxLength": 200
122
            }
123
          }
124
        },
125
        "required": [
126
          "factId",
127
          "statement",
128
          "source",
129
          "status",
130
          "evidenceReferences"
131
        ],
132
        "additionalProperties": false
133
      }
134
    },
135
    "evidence": {
136
      "default": [],
137
      "maxItems": 100,
138
      "type": "array",
139
      "items": {
140
        "type": "object",
141
        "properties": {
142
          "evidenceId": {
143
            "type": "string",
144
            "format": "uuid",
145
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
146
          },
147
          "type": {
148
            "type": "string",
149
            "enum": [
150
              "system_record",
151
              "policy_record",
152
              "operator_note",
153
              "external_claim",
154
              "other"
155
            ]
156
          },
157
          "summary": {
158
            "type": "string",
159
            "minLength": 1,
160
            "maxLength": 1200
161
          },
162
          "sourceReference": {
163
            "type": "string",
164
            "minLength": 1,
165
            "maxLength": 500
166
          },
167
          "verification": {
168
            "type": "string",
169
            "enum": [
170
              "verified",
171
              "unverified",
172
              "contradicted"
173
            ]
174
          }
175
        },
176
        "required": [
177
          "evidenceId",
178
          "type",
179
          "summary",
180
          "verification"
181
        ],
182
        "additionalProperties": false
183
      }
184
    },
185
    "policies": {
186
      "default": [],
187
      "maxItems": 50,
188
      "type": "array",
189
      "items": {
190
        "type": "object",
191
        "properties": {
192
          "policyId": {
193
            "type": "string",
194
            "format": "uuid",
195
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
196
          },
197
          "title": {
198
            "type": "string",
199
            "minLength": 1,
200
            "maxLength": 160
201
          },
202
          "statement": {
203
            "type": "string",
204
            "minLength": 1,
205
            "maxLength": 2000
206
          },
207
          "sourceReference": {
208
            "type": "string",
209
            "minLength": 1,
210
            "maxLength": 500
211
          }
212
        },
213
        "required": [
214
          "policyId",
215
          "title",
216
          "statement"
217
        ],
218
        "additionalProperties": false
219
      }
220
    },
221
    "ownerGuidance": {
222
      "default": [],
223
      "maxItems": 50,
224
      "type": "array",
225
      "items": {
226
        "type": "object",
227
        "properties": {
228
          "guidanceId": {
229
            "type": "string",
230
            "format": "uuid",
231
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
232
          },
233
          "instruction": {
234
            "type": "string",
235
            "minLength": 1,
236
            "maxLength": 2000
237
          },
238
          "scope": {
239
            "type": "string",
240
            "enum": [
241
              "case",
242
              "agent"
243
            ]
244
          },
245
          "createdAt": {
246
            "type": "string",
247
            "format": "date-time",
248
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
249
          }
250
        },
251
        "required": [
252
          "guidanceId",
253
          "instruction",
254
          "scope",
255
          "createdAt"
256
        ],
257
        "additionalProperties": false
258
      }
259
    },
260
    "latestConsultationId": {
261
      "type": "string",
262
      "format": "uuid",
263
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
264
    },
265
    "latestDisposition": {
266
      "type": "string",
267
      "enum": [
268
        "proceed",
269
        "proceed_with_caution",
270
        "gather_evidence",
271
        "modify_plan",
272
        "seek_approval",
273
        "do_not_proceed"
274
      ]
275
    },
276
    "createdAt": {
277
      "type": "string",
278
      "format": "date-time",
279
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
280
    },
281
    "updatedAt": {
282
      "type": "string",
283
      "format": "date-time",
284
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
285
    },
286
    "closedAt": {
287
      "type": "string",
288
      "format": "date-time",
289
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
290
    }
291
  },
292
  "required": [
293
    "protocolVersion",
294
    "caseId",
295
    "agentId",
296
    "title",
297
    "goal",
298
    "brief",
299
    "counterparty",
300
    "status",
301
    "riskTier",
302
    "facts",
303
    "evidence",
304
    "policies",
305
    "ownerGuidance",
306
    "createdAt",
307
    "updatedAt"
308
  ],
309
  "additionalProperties": false
310
}