Setting the file. One moment.
AI Workload Profile Schema · Bedrock Migration Assessment · aws/agent-toolkit-for-aws · Skills Docs
ContentsBack to the top of the page 26.5
Schema Preferences
93
Creating Amazon Aurora Db Cluster With Instances
Shieldadvanced
Resilience Program Design
Connecting Lambda To DynamoDB
references/contracts/ ai-workload-profile.schema.json
JSON · 257 lines · 12 KB
],
8 "additionalProperties" : false ,
9 "properties" : {
10 "schema_version" : { "description" : "1.1 adds the optional integration, workloads, agentic_profile and tool_manifest fields; a 1.0 profile must not carry them." , "enum" : [ "1.0" , "1.1" ]},
11 "ai_sources" : {
12 "description" : "Retained AI sources. Semantic uniqueness is the provider and source_service pair; duplicate or overlapping pairs are invalid, while one provider through distinct services is valid. Projects verbatim (provider, source_service, model_families, model_evidence, models) into ai-migration-scenario.schema.json's aiSource." ,
13 "type" : "array" ,
14 "uniqueItems" : true ,
15 "items" : { "$ref" : "#/definitions/aiSource" }
16 },
17 "gateways" : {
18 "description" : "Gateways independent of direct providers and infrastructure. OpenRouter is representable only here, never as a provider or infrastructure source. Projects verbatim into ai-migration-scenario.schema.json's gateway." ,
19 "type" : "array" ,
20 "uniqueItems" : true ,
21 "items" : { "$ref" : "#/definitions/gateway" }
22 },
23 "integration" : { "$ref" : "#/definitions/integration" },
24 "workloads" : {
25 "description" : "One entry per distinct (provider, source_service, model, sdk_method, structured_output) call pattern." ,
26 "type" : "array" ,
27 "uniqueItems" : true ,
28 "items" : { "$ref" : "#/definitions/workload" }
29 },
30 "agentic_profile" : { "$ref" : "#/definitions/agenticProfile" },
31 "tool_manifest" : {
32 "description" : "Present only with agentic_profile." ,
33 "type" : "array" ,
34 "uniqueItems" : true ,
35 "items" : { "$ref" : "#/definitions/tool" }
36 }
37 },
38 "definitions" : {
39 "extensibleIdentity" : { "type" : "string" , "pattern" : "^(?!(?:both|openrouter|unknown)$)[a-z][a-z0-9_]*$" },
40 "modelFamily" : { "type" : "string" , "pattern" : "^(?!(?:both|unknown)$)[a-z][a-z0-9_.-]*$" },
41 "normalizedModel" : { "type" : "string" , "pattern" : "^(?!(?:both|unknown)$)[a-z0-9][a-z0-9._:/-]*$" },
42 "gatewayIdentity" : { "type" : "string" , "pattern" : "^(?!(?:both|unknown)$)[a-z][a-z0-9_]*$" },
43 "provenance" : { "enum" : [ "code" , "iac" , "live_api" , "usage_api" , "user_confirmed" ]},
44 "nonEmpty" : { "type" : "string" , "minLength" : 1 },
45 "callSite" : {
46 "type" : "object" ,
47 "required" : [ "file" , "line" ],
48 "additionalProperties" : false ,
49 "properties" : { "file" : { "$ref" : "#/definitions/nonEmpty" }, "line" : { "type" : "integer" , "minimum" : 0 }}
50 },
51 "integration" : {
52 "type" : "object" ,
53 "required" : [ "pattern" , "languages" , "frameworks" , "capabilities_summary" ],
54 "additionalProperties" : false ,
55 "properties" : {
56 "pattern" : { "enum" : [ "direct_sdk" , "framework" , "rest_api" , "mixed" ]},
57 "primary_sdk" : { "$ref" : "#/definitions/nonEmpty" },
58 "sdk_version" : { "$ref" : "#/definitions/nonEmpty" },
59 "languages" : { "type" : "array" , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/extensibleIdentity" }},
60 "frameworks" : { "type" : "array" , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/extensibleIdentity" }},
61 "capabilities_summary" : {
62 "description" : "true only with code evidence that the capability is used." ,
63 "type" : "object" ,
64 "required" : [ "text_generation" , "streaming" , "function_calling" , "vision" , "embeddings" , "batch_processing" , "speech_to_text" , "text_to_speech" , "image_generation" ],
65 "additionalProperties" : false ,
66 "properties" : {
67 "text_generation" : { "type" : "boolean" }, "streaming" : { "type" : "boolean" }, "function_calling" : { "type" : "boolean" },
68 "vision" : { "type" : "boolean" }, "embeddings" : { "type" : "boolean" }, "batch_processing" : { "type" : "boolean" },
69 "speech_to_text" : { "type" : "boolean" }, "text_to_speech" : { "type" : "boolean" }, "image_generation" : { "type" : "boolean" }
70 }
71 }
72 }
73 },
74 "workload" : {
75 "type" : "object" ,
76 "required" : [ "workload_id" , "provider" , "source_service" , "model" , "sdk_method" , "capability" , "capability_confidence" , "structured_output" , "call_sites" ],
77 "additionalProperties" : false ,
78 "properties" : {
79 "workload_id" : { "type" : "string" , "pattern" : "^[a-z0-9][a-z0-9_.-]*$" },
80 "provider" : { "$ref" : "#/definitions/extensibleIdentity" },
81 "source_service" : { "$ref" : "#/definitions/extensibleIdentity" },
82 "model" : { "$ref" : "#/definitions/normalizedModel" },
83 "sdk_method" : { "$ref" : "#/definitions/nonEmpty" },
84 "capability" : { "$ref" : "#/definitions/extensibleIdentity" },
85 "capability_confidence" : { "enum" : [ "high" , "medium" , "low" ]},
86 "structured_output" : { "type" : "boolean" },
87 "call_sites" : { "type" : "array" , "minItems" : 1 , "items" : { "$ref" : "#/definitions/callSite" }}
88 }
89 },
90 "agent" : {
91 "type" : "object" ,
92 "required" : [ "agent_id" , "file" , "line" , "model" , "tools" , "memory_type" ],
93 "additionalProperties" : false ,
94 "properties" : {
95 "agent_id" : { "type" : "string" , "pattern" : "^[a-z0-9][a-z0-9_.-]*$" },
96 "file" : { "$ref" : "#/definitions/nonEmpty" },
97 "line" : { "type" : "integer" , "minimum" : 0 },
98 "model" : { "$ref" : "#/definitions/normalizedModel" },
99 "tools" : { "type" : "array" , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/nonEmpty" }},
100 "memory_type" : { "enum" : [ "conversation_buffer" , "rag" , "none" , "unknown" ]},
101 "role" : { "$ref" : "#/definitions/nonEmpty" }
102 }
103 },
104 "agenticProfile" : {
105 "description" : "Present only when agents were detected; absent otherwise." ,
106 "type" : "object" ,
107 "required" : [ "framework" , "agents" , "orchestration_pattern" , "has_memory" , "has_human_in_loop" ],
108 "additionalProperties" : false ,
109 "properties" : {
110 "framework" : { "$ref" : "#/definitions/extensibleIdentity" },
111 "agents" : { "type" : "array" , "minItems" : 1 , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/agent" }},
112 "orchestration_pattern" : { "$ref" : "#/definitions/extensibleIdentity" },
113 "has_memory" : { "type" : "boolean" },
114 "memory_backend" : { "$ref" : "#/definitions/nonEmpty" },
115 "has_human_in_loop" : { "type" : "boolean" }
116 }
117 },
118 "tool" : {
119 "type" : "object" ,
120 "required" : [ "name" , "file" , "line" , "transport" , "used_by_agents" ],
121 "additionalProperties" : false ,
122 "properties" : {
123 "name" : { "$ref" : "#/definitions/nonEmpty" },
124 "file" : { "$ref" : "#/definitions/nonEmpty" },
125 "line" : { "type" : "integer" , "minimum" : 0 },
126 "transport" : { "enum" : [ "function" , "api" , "mcp" , "a2a" , "other" ]},
127 "auth_hint" : { "$ref" : "#/definitions/nonEmpty" },
128 "used_by_agents" : { "type" : "array" , "minItems" : 1 , "uniqueItems" : true , "items" : { "$ref" : "#/definitions/nonEmpty" }}
129 }
130 },
131 "confidence" : { "description" : "User confirmation is provenance user_confirmed with confidence high; there is no confirmed confidence level." , "enum" : [ "high" , "medium" , "low" ]},
132 "evidenceEntry" : {
133 "type" : "object" ,
134 "required" : [ "provenance" , "confidence" ],
135 "additionalProperties" : false ,
136 "properties" : {
137 "provenance" : { "$ref" : "#/definitions/provenance" },
138 "confidence" : { "$ref" : "#/definitions/confidence" },
139 "detail" : { "type" : "string" , "minLength" : 1 }
140 }
141 },
142 "modelObservation" : {
143 "description" : "One exact normalized model's raw/observed alias and evidence trail. raw_model is the verbatim observed string and is never discarded even when it equals normalized_model." ,
144 "type" : "object" ,
145 "required" : [ "normalized_model" , "raw_model" , "model_family" , "evidence" ],
146 "additionalProperties" : false ,
147 "properties" : {
148 "normalized_model" : { "$ref" : "#/definitions/normalizedModel" },
149 "raw_model" : { "type" : "string" , "minLength" : 1 },
150 "model_family" : { "$ref" : "#/definitions/modelFamily" },
151 "evidence" : {
152 "type" : "array" ,
153 "minItems" : 1 ,
154 "items" : { "$ref" : "#/definitions/evidenceEntry" }
155 }
156 }
157 },
158 "aiSource" : {
159 "description" : "A provider-neutral AI source keyed semantically by provider and source_service (e.g. direct openai vs azure_openai is a distinct source_service on the same provider). model_families/model_evidence/models mirror ai-migration-scenario.schema.json's aiSource exactly; model_observations carries the richer raw-alias/evidence trail and is cross-checked against models[] by the test suite, not by this schema (no $data support in the enforced subset)." ,
160 "type" : "object" ,
161 "required" : [ "provider" , "source_service" , "model_families" , "model_evidence" , "models" , "model_observations" ],
162 "additionalProperties" : false ,
163 "properties" : {
164 "provider" : { "$ref" : "#/definitions/extensibleIdentity" },
165 "source_service" : { "$ref" : "#/definitions/extensibleIdentity" },
166 "model_families" : {
167 "type" : "array" ,
168 "minItems" : 1 ,
169 "uniqueItems" : true ,
170 "items" : { "$ref" : "#/definitions/modelFamily" }
171 },
172 "model_evidence" : { "enum" : [ "observed" , "not_observed" ]},
173 "models" : {
174 "type" : "array" ,
175 "uniqueItems" : true ,
176 "items" : { "$ref" : "#/definitions/normalizedModel" }
177 },
178 "model_observations" : {
179 "type" : "array" ,
180 "uniqueItems" : true ,
181 "items" : { "$ref" : "#/definitions/modelObservation" }
182 }
183 },
184 "oneOf" : [
185 {
186 "properties" : {
187 "model_evidence" : { "const" : "observed" },
188 "models" : { "minItems" : 1 },
189 "model_observations" : { "minItems" : 1 }
190 }
191 },
192 {
193 "properties" : {
194 "model_evidence" : { "const" : "not_observed" },
195 "models" : { "maxItems" : 0 },
196 "model_observations" : { "maxItems" : 0 }
197 }
198 }
199 ]
200 },
201 "upstreamModelFamily" : {
202 "description" : "Byte-identical in shape to ai-migration-scenario.schema.json's upstreamModelFamily." ,
203 "type" : "object" ,
204 "required" : [ "family" , "model_evidence" , "models" ],
205 "additionalProperties" : false ,
206 "properties" : {
207 "family" : { "$ref" : "#/definitions/modelFamily" },
208 "model_evidence" : { "enum" : [ "observed" , "not_observed" ]},
209 "models" : {
210 "type" : "array" ,
211 "uniqueItems" : true ,
212 "items" : { "$ref" : "#/definitions/normalizedModel" }
213 }
214 },
215 "oneOf" : [
216 { "properties" : { "model_evidence" : { "const" : "observed" }, "models" : { "minItems" : 1 }}},
217 { "properties" : { "model_evidence" : { "const" : "not_observed" }, "models" : { "maxItems" : 0 }}}
218 ]
219 },
220 "gatewayUpstream" : {
221 "description" : "Byte-identical in shape to ai-migration-scenario.schema.json's gatewayUpstream." ,
222 "type" : "object" ,
223 "required" : [ "provider" , "model_families" ],
224 "additionalProperties" : false ,
225 "properties" : {
226 "provider" : { "$ref" : "#/definitions/extensibleIdentity" },
227 "source_service" : { "$ref" : "#/definitions/extensibleIdentity" },
228 "model_families" : {
229 "type" : "array" ,
230 "minItems" : 1 ,
231 "uniqueItems" : true ,
232 "items" : { "$ref" : "#/definitions/upstreamModelFamily" }
233 }
234 }
235 },
236 "gateway" : {
237 "description" : "Byte-identical in shape to ai-migration-scenario.schema.json's gateway. An observed gateway cannot have an empty upstreams array; an unresolved gateway cannot invent upstreams." ,
238 "type" : "object" ,
239 "required" : [ "product" , "type" , "upstream_evidence" , "upstreams" ],
240 "additionalProperties" : false ,
241 "properties" : {
242 "product" : { "$ref" : "#/definitions/gatewayIdentity" },
243 "type" : { "$ref" : "#/definitions/extensibleIdentity" },
244 "upstream_evidence" : { "enum" : [ "observed" , "unresolved" ]},
245 "upstreams" : {
246 "type" : "array" ,
247 "uniqueItems" : true ,
248 "items" : { "$ref" : "#/definitions/gatewayUpstream" }
249 }
250 },
251 "oneOf" : [
252 { "properties" : { "upstream_evidence" : { "const" : "observed" }, "upstreams" : { "minItems" : 1 }}},
253 { "properties" : { "upstream_evidence" : { "const" : "unresolved" }, "upstreams" : { "maxItems" : 0 }}}
254 ]
255 }
256 }
257 }