@storewright/cli 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +19 -0
  2. package/VERSION +1 -0
  3. package/bin/storewright.mjs +62 -0
  4. package/contracts/action-registry.json +175 -0
  5. package/contracts/capability-registry.json +63 -0
  6. package/contracts/workflow-manifest.json +207 -0
  7. package/lib/cli/storewright-cli.mjs +259 -0
  8. package/lib/internal/launch-envelope.mjs +223 -0
  9. package/lib/internal/multi-agent-contracts.mjs +137 -0
  10. package/lib/internal/operation-ledger.mjs +190 -0
  11. package/lib/internal/pricing/default-preview-pricing.mjs +181 -0
  12. package/lib/internal/run-state-helpers.mjs +313 -0
  13. package/lib/internal/shopify-operation-adapter.mjs +456 -0
  14. package/package.json +38 -0
  15. package/schemas/action-registry.schema.json +11 -0
  16. package/schemas/agent-report.schema.json +14 -0
  17. package/schemas/approval-grant.schema.json +16 -0
  18. package/schemas/base-theme-report.schema.json +25 -0
  19. package/schemas/brand-identity.schema.json +142 -0
  20. package/schemas/capability-registry.schema.json +11 -0
  21. package/schemas/competitor-audit.schema.json +38 -0
  22. package/schemas/design-direction.schema.json +64 -0
  23. package/schemas/external-operation.schema.json +34 -0
  24. package/schemas/intake-blocked-report.schema.json +76 -0
  25. package/schemas/launch-envelope.schema.json +25 -0
  26. package/schemas/launch-readiness.schema.json +73 -0
  27. package/schemas/media-file-inspection-report.schema.json +223 -0
  28. package/schemas/media-manifest.schema.json +84 -0
  29. package/schemas/merchandising-brief.schema.json +27 -0
  30. package/schemas/normalized-product-catalog.schema.json +42 -0
  31. package/schemas/product-content-generation-input.schema.json +40 -0
  32. package/schemas/product-content-generation-output.schema.json +43 -0
  33. package/schemas/raw-product-candidates.schema.json +32 -0
  34. package/schemas/shopify-access-preflight-report.schema.json +213 -0
  35. package/schemas/shopify-content-sync-report.schema.json +190 -0
  36. package/schemas/shopify-media-map.schema.json +87 -0
  37. package/schemas/shopify-media-upload-report.schema.json +96 -0
  38. package/schemas/shopify-operation-request.schema.json +81 -0
  39. package/schemas/shopify-preflight-report.schema.json +187 -0
  40. package/schemas/store-blueprint.schema.json +112 -0
  41. package/schemas/store-content-generation-output.schema.json +102 -0
  42. package/schemas/store-intake.schema.json +205 -0
  43. package/schemas/store-ops-plan.schema.json +82 -0
  44. package/schemas/storefront-preview-review.schema.json +227 -0
  45. package/schemas/supplier-access-report.schema.json +36 -0
  46. package/schemas/supplier-extraction-report.schema.json +185 -0
  47. package/schemas/theme-build-report.schema.json +43 -0
  48. package/schemas/theme-code-change-summary.schema.json +65 -0
  49. package/schemas/theme-plan.schema.json +26 -0
  50. package/schemas/theme-push-report.schema.json +151 -0
  51. package/schemas/theme-workspace-validation-report.schema.json +61 -0
  52. package/schemas/workflow-manifest.schema.json +29 -0
  53. package/scripts/audit-run-state.mjs +472 -0
  54. package/scripts/execute-shopify-operation.mjs +190 -0
  55. package/scripts/generate-image-assets-openai.mjs +342 -0
  56. package/scripts/generate-media-assets.mjs +121 -0
  57. package/scripts/init-run-state.mjs +69 -0
  58. package/scripts/inspect-media-files.mjs +334 -0
  59. package/scripts/prepare-launch-envelope.mjs +47 -0
  60. package/scripts/shopify-access-preflight.mjs +432 -0
  61. package/scripts/upload-shopify-media.mjs +831 -0
  62. package/scripts/validate-agent-report.mjs +46 -0
  63. package/scripts/validate-artifact.mjs +196 -0
  64. package/scripts/validate-launch-envelope.mjs +50 -0
  65. package/scripts/validate-registries.mjs +50 -0
  66. package/scripts/validate-workflow-manifest.mjs +38 -0
  67. package/scripts/version.mjs +192 -0
@@ -0,0 +1,205 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/store-intake.schema.json",
4
+ "title": "Official Store Intake",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "runId", "storeIntake"],
7
+ "properties": {
8
+ "schemaVersion": { "type": "string" },
9
+ "runId": { "type": "string" },
10
+ "storeIntake": {
11
+ "type": "object",
12
+ "required": [
13
+ "category",
14
+ "market",
15
+ "currency",
16
+ "competitors",
17
+ "fieldStatuses",
18
+ "brandName",
19
+ "targetAudience",
20
+ "productCandidateUrls",
21
+ "productCandidateFiles",
22
+ "intakeRequirements",
23
+ "intakeReview"
24
+ ],
25
+ "properties": {
26
+ "store": { "type": "string" },
27
+ "category": { "type": "string" },
28
+ "market": { "type": "string" },
29
+ "currency": { "type": "string" },
30
+ "fieldStatuses": {
31
+ "type": "object",
32
+ "required": ["category", "market", "currency", "competitors", "store", "productCandidates"],
33
+ "properties": {
34
+ "category": { "$ref": "#/$defs/fieldStatus" },
35
+ "market": { "$ref": "#/$defs/fieldStatus" },
36
+ "currency": { "$ref": "#/$defs/fieldStatus" },
37
+ "competitors": {
38
+ "type": "object",
39
+ "required": ["status", "count"],
40
+ "properties": {
41
+ "status": { "type": "string" },
42
+ "count": { "type": "number" }
43
+ }
44
+ },
45
+ "store": { "$ref": "#/$defs/fieldStatus" },
46
+ "productCandidates": { "$ref": "#/$defs/fieldStatus" }
47
+ }
48
+ },
49
+ "brandName": {
50
+ "type": "object",
51
+ "required": ["value", "status"],
52
+ "properties": {
53
+ "value": { "type": "string" },
54
+ "status": { "type": "string" }
55
+ }
56
+ },
57
+ "competitors": {
58
+ "type": "array",
59
+ "items": { "type": "string" }
60
+ },
61
+ "targetAudience": {
62
+ "type": "object",
63
+ "required": ["value", "status"],
64
+ "properties": {
65
+ "value": { "type": "string" },
66
+ "status": { "type": "string" },
67
+ "evidence": { "type": "string" }
68
+ }
69
+ },
70
+ "productCandidateUrls": {
71
+ "type": "array",
72
+ "items": { "type": "string" }
73
+ },
74
+ "productCandidateFiles": {
75
+ "type": "array",
76
+ "items": { "type": "string" }
77
+ },
78
+ "brandFacts": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "properties": {
82
+ "founderOrTeam": { "type": "string" },
83
+ "location": { "type": "string" },
84
+ "year": { "type": "string" },
85
+ "originStory": { "type": "string" },
86
+ "provenClaims": {
87
+ "type": "array",
88
+ "items": { "type": "string" }
89
+ },
90
+ "forbiddenClaims": {
91
+ "type": "array",
92
+ "items": { "type": "string" }
93
+ },
94
+ "unknownClaims": {
95
+ "type": "array",
96
+ "items": { "type": "string" }
97
+ }
98
+ }
99
+ },
100
+ "intakeRequirements": {
101
+ "type": "object",
102
+ "required": [
103
+ "stageHardRequired",
104
+ "requiredBeforeProductExecution",
105
+ "requiredBeforeShopifyWrite",
106
+ "optionalOrInferable",
107
+ "missingStageHardRequired",
108
+ "missingBeforeProductExecution",
109
+ "missingBeforeShopifyWrite",
110
+ "missingOptionalOrInferable"
111
+ ],
112
+ "properties": {
113
+ "stageHardRequired": {
114
+ "type": "array",
115
+ "items": { "type": "string" }
116
+ },
117
+ "requiredBeforeProductExecution": {
118
+ "type": "array",
119
+ "items": { "type": "string" }
120
+ },
121
+ "requiredBeforeShopifyWrite": {
122
+ "type": "array",
123
+ "items": { "type": "string" }
124
+ },
125
+ "optionalOrInferable": {
126
+ "type": "array",
127
+ "items": { "type": "string" }
128
+ },
129
+ "missingStageHardRequired": {
130
+ "type": "array",
131
+ "items": { "type": "string" }
132
+ },
133
+ "missingBeforeProductExecution": {
134
+ "type": "array",
135
+ "items": { "type": "string" }
136
+ },
137
+ "missingBeforeShopifyWrite": {
138
+ "type": "array",
139
+ "items": { "type": "string" }
140
+ },
141
+ "missingOptionalOrInferable": {
142
+ "type": "array",
143
+ "items": { "type": "string" }
144
+ }
145
+ }
146
+ },
147
+ "intakeReview": {
148
+ "type": "object",
149
+ "required": [
150
+ "recognizedFields",
151
+ "missingRequiredFields",
152
+ "optionalClarificationItems",
153
+ "leadPromptRecommendation"
154
+ ],
155
+ "properties": {
156
+ "recognizedFields": {
157
+ "type": "array",
158
+ "items": { "$ref": "#/$defs/intakeReviewField" }
159
+ },
160
+ "missingRequiredFields": {
161
+ "type": "array",
162
+ "items": { "type": "string" }
163
+ },
164
+ "optionalClarificationItems": {
165
+ "type": "array",
166
+ "items": {
167
+ "type": "object",
168
+ "required": ["field", "status", "prompt", "skipBehavior"],
169
+ "properties": {
170
+ "field": { "type": "string" },
171
+ "status": { "type": "string" },
172
+ "prompt": { "type": "string" },
173
+ "skipBehavior": { "type": "string" }
174
+ }
175
+ }
176
+ },
177
+ "leadPromptRecommendation": {
178
+ "type": "string",
179
+ "enum": ["blocked-required", "nonblocking-optional", "none"]
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "$defs": {
187
+ "fieldStatus": {
188
+ "type": "object",
189
+ "required": ["status"],
190
+ "properties": {
191
+ "status": { "type": "string" },
192
+ "evidence": { "type": "string" }
193
+ }
194
+ },
195
+ "intakeReviewField": {
196
+ "type": "object",
197
+ "required": ["field", "status", "evidence"],
198
+ "properties": {
199
+ "field": { "type": "string" },
200
+ "status": { "type": "string" },
201
+ "evidence": { "type": "string" }
202
+ }
203
+ }
204
+ }
205
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/store-ops-plan.schema.json",
4
+ "title": "Store Ops Plan",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "runId", "storeOpsPlan"],
7
+ "properties": {
8
+ "schemaVersion": { "type": "string" },
9
+ "runId": { "type": "string" },
10
+ "storeOpsPlan": {
11
+ "type": "object",
12
+ "required": ["operations", "defaultProductStatus", "defaultPublicationChannel", "publicationStrategy"],
13
+ "properties": {
14
+ "operations": { "type": "array" },
15
+ "defaultProductStatus": { "type": "string", "const": "ACTIVE" },
16
+ "defaultPublicationChannel": { "type": "string", "const": "Online Store" },
17
+ "publicationStrategy": {
18
+ "type": "object",
19
+ "additionalProperties": false,
20
+ "required": ["productStatus", "publicationChannel", "publicationId", "publicationName", "publicationLookup", "missingOrZeroPriceStrategy", "mutation", "verificationFields"],
21
+ "properties": {
22
+ "productStatus": { "type": "string", "const": "ACTIVE" },
23
+ "publicationChannel": { "type": "string", "const": "Online Store" },
24
+ "publicationId": { "type": "string", "pattern": "^gid://shopify/Publication/" },
25
+ "publicationName": { "type": "string", "const": "Online Store" },
26
+ "publicationLookup": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["result", "command", "rawOutputPath", "matchedPublication", "selectionReason"],
30
+ "properties": {
31
+ "result": { "type": "string", "const": "ok" },
32
+ "command": { "type": "string", "minLength": 1 },
33
+ "rawOutputPath": { "type": "string", "minLength": 1 },
34
+ "candidateCount": { "type": "number" },
35
+ "matchedPublication": {
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "required": ["id", "name"],
39
+ "properties": {
40
+ "id": { "type": "string", "pattern": "^gid://shopify/Publication/" },
41
+ "name": { "type": "string", "const": "Online Store" }
42
+ }
43
+ },
44
+ "selectionReason": { "type": "string", "minLength": 1 }
45
+ }
46
+ },
47
+ "missingOrZeroPriceStrategy": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["match", "productStatus", "publicationChannel", "mutation", "verificationFields"],
51
+ "properties": {
52
+ "match": { "type": "string", "const": "missing-or-zero-price" },
53
+ "productStatus": { "type": "string", "const": "DRAFT" },
54
+ "publicationChannel": { "type": "string", "const": "Online Store" },
55
+ "mutation": { "type": "string", "const": "publishablePublish" },
56
+ "verificationFields": {
57
+ "type": "array",
58
+ "items": {
59
+ "type": "string",
60
+ "enum": ["resourcePublications", "publishedOnPublication"]
61
+ },
62
+ "minItems": 1
63
+ }
64
+ }
65
+ },
66
+ "mutation": { "type": "string", "const": "publishablePublish" },
67
+ "verificationFields": {
68
+ "type": "array",
69
+ "items": {
70
+ "type": "string",
71
+ "enum": ["resourcePublications", "publishedOnPublication", "onlineStoreUrl"]
72
+ },
73
+ "minItems": 1
74
+ }
75
+ }
76
+ },
77
+ "notReadyResources": { "type": "array" },
78
+ "notes": { "type": "array" }
79
+ }
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,227 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/storefront-preview-review.schema.json",
4
+ "title": "Storewright Storefront Preview Acceptance Review",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "authoring", "storefrontPreviewReview"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "string", "const": "1.0.0" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "authoring": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["mode", "createdBy", "sourceInputArtifacts"],
15
+ "properties": {
16
+ "mode": { "type": "string", "const": "worker-authored" },
17
+ "createdBy": { "type": "string", "minLength": 1 },
18
+ "sourceInputArtifacts": {
19
+ "type": "array",
20
+ "minItems": 1,
21
+ "items": { "type": "string", "minLength": 1 }
22
+ }
23
+ }
24
+ },
25
+ "storefrontPreviewReview": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": [
29
+ "result",
30
+ "reviewTarget",
31
+ "intakeContext",
32
+ "journeys",
33
+ "findings",
34
+ "repairRequests",
35
+ "humanAcceptanceSummary"
36
+ ],
37
+ "properties": {
38
+ "result": { "type": "string", "enum": ["pass", "warning", "repairable", "blocked", "fatal"] },
39
+ "reviewTarget": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["storeDomain", "previewThemeId", "previewUrl", "accessResult", "passwordProvided", "passwordValueRecorded"],
43
+ "properties": {
44
+ "storeDomain": { "type": "string", "minLength": 1 },
45
+ "previewThemeId": { "type": "string", "minLength": 1 },
46
+ "previewUrl": { "type": "string", "minLength": 1 },
47
+ "accessResult": { "type": "string", "enum": ["success", "warning", "failed", "blocked"] },
48
+ "passwordProvided": { "type": "boolean" },
49
+ "passwordValueRecorded": { "type": "boolean" }
50
+ }
51
+ },
52
+ "intakeContext": {
53
+ "type": "object",
54
+ "additionalProperties": false,
55
+ "required": ["category", "market", "currency", "goalSummary"],
56
+ "properties": {
57
+ "brand": { "type": "string" },
58
+ "category": { "type": "string", "minLength": 1 },
59
+ "market": { "type": "string", "minLength": 1 },
60
+ "currency": { "type": "string", "minLength": 1 },
61
+ "goalSummary": { "type": "string", "minLength": 1 }
62
+ }
63
+ },
64
+ "journeys": {
65
+ "type": "array",
66
+ "minItems": 8,
67
+ "allOf": [
68
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "home" } } } },
69
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "navigation" } } } },
70
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "collection-product-browsing" } } } },
71
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "product-detail" } } } },
72
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "cart-smoke" } } } },
73
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "content-support-pages" } } } },
74
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "mobile-layout" } } } },
75
+ { "contains": { "type": "object", "required": ["name"], "properties": { "name": { "const": "desktop-layout" } } } }
76
+ ],
77
+ "items": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["name", "status", "evidenceRefs"],
81
+ "properties": {
82
+ "name": {
83
+ "type": "string",
84
+ "enum": [
85
+ "home",
86
+ "navigation",
87
+ "collection-product-browsing",
88
+ "product-detail",
89
+ "cart-smoke",
90
+ "content-support-pages",
91
+ "mobile-layout",
92
+ "desktop-layout"
93
+ ]
94
+ },
95
+ "status": { "type": "string", "enum": ["pass", "warning", "fail", "blocked", "not-tested"] },
96
+ "evidenceRefs": {
97
+ "type": "array",
98
+ "items": { "type": "string", "minLength": 1 }
99
+ }
100
+ }
101
+ }
102
+ },
103
+ "findings": {
104
+ "type": "array",
105
+ "items": {
106
+ "type": "object",
107
+ "additionalProperties": false,
108
+ "required": ["id", "severity", "category", "humanImpact", "evidenceRefs"],
109
+ "properties": {
110
+ "id": { "type": "string", "minLength": 1 },
111
+ "severity": { "type": "string", "enum": ["P0", "P1", "P2", "P3"] },
112
+ "category": {
113
+ "type": "string",
114
+ "enum": [
115
+ "page-unavailable",
116
+ "broken-navigation",
117
+ "layout-breakage",
118
+ "missing-content",
119
+ "broken-commerce",
120
+ "brand-mismatch",
121
+ "placeholder-content",
122
+ "visual-defect",
123
+ "preview-access"
124
+ ]
125
+ },
126
+ "humanImpact": { "type": "string", "minLength": 1 },
127
+ "route": { "type": "string" },
128
+ "viewport": { "type": "string", "enum": ["desktop", "mobile", "not-applicable"] },
129
+ "evidenceRefs": {
130
+ "type": "array",
131
+ "items": { "type": "string", "minLength": 1 }
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "repairRequests": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "object",
140
+ "additionalProperties": false,
141
+ "required": [
142
+ "id",
143
+ "findingIds",
144
+ "category",
145
+ "humanImpact",
146
+ "evidenceRefs",
147
+ "recommendedTargetWorkerProfile",
148
+ "requiredOutcome"
149
+ ],
150
+ "anyOf": [
151
+ {
152
+ "type": "object",
153
+ "required": ["category", "recommendedTargetWorkerProfile"],
154
+ "properties": {
155
+ "category": { "type": "string", "enum": ["layout-breakage", "visual-defect", "placeholder-content", "brand-mismatch"] },
156
+ "recommendedTargetWorkerProfile": { "type": "string", "const": "theme-build-worker" }
157
+ }
158
+ },
159
+ {
160
+ "type": "object",
161
+ "required": ["category", "recommendedTargetWorkerProfile"],
162
+ "properties": {
163
+ "category": { "type": "string", "enum": ["broken-navigation", "missing-content", "page-unavailable"] },
164
+ "recommendedTargetWorkerProfile": { "type": "string", "const": "store-ops-content-worker" }
165
+ }
166
+ },
167
+ {
168
+ "type": "object",
169
+ "required": ["category", "recommendedTargetWorkerProfile"],
170
+ "properties": {
171
+ "category": { "type": "string", "const": "broken-commerce" },
172
+ "recommendedTargetWorkerProfile": { "type": "string", "const": "store-ops-products-worker" }
173
+ }
174
+ },
175
+ {
176
+ "type": "object",
177
+ "required": ["category", "recommendedTargetWorkerProfile"],
178
+ "properties": {
179
+ "category": { "type": "string", "const": "preview-access" },
180
+ "recommendedTargetWorkerProfile": { "type": "string", "const": "store-ops-theme-worker" }
181
+ }
182
+ }
183
+ ],
184
+ "properties": {
185
+ "id": { "type": "string", "minLength": 1 },
186
+ "findingIds": {
187
+ "type": "array",
188
+ "minItems": 1,
189
+ "items": { "type": "string", "minLength": 1 }
190
+ },
191
+ "category": {
192
+ "type": "string",
193
+ "enum": [
194
+ "page-unavailable",
195
+ "broken-navigation",
196
+ "layout-breakage",
197
+ "missing-content",
198
+ "broken-commerce",
199
+ "brand-mismatch",
200
+ "placeholder-content",
201
+ "visual-defect",
202
+ "preview-access"
203
+ ]
204
+ },
205
+ "humanImpact": { "type": "string", "minLength": 1 },
206
+ "evidenceRefs": {
207
+ "type": "array",
208
+ "items": { "type": "string", "minLength": 1 }
209
+ },
210
+ "recommendedTargetWorkerProfile": {
211
+ "type": "string",
212
+ "enum": [
213
+ "theme-build-worker",
214
+ "store-ops-content-worker",
215
+ "store-ops-products-worker",
216
+ "store-ops-theme-worker"
217
+ ]
218
+ },
219
+ "requiredOutcome": { "type": "string", "minLength": 1 }
220
+ }
221
+ }
222
+ },
223
+ "humanAcceptanceSummary": { "type": "string", "minLength": 1 }
224
+ }
225
+ }
226
+ }
227
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "supplier-access-report.schema.json",
4
+ "type": "object",
5
+ "required": ["schemaVersion", "runId", "supplierAccess"],
6
+ "properties": {
7
+ "schemaVersion": { "type": "string" },
8
+ "runId": { "type": "string" },
9
+ "supplierAccess": {
10
+ "type": "object",
11
+ "required": ["checkedCandidateId", "checkedUrl"],
12
+ "properties": {
13
+ "checkedCandidateId": { "type": "string" },
14
+ "checkedUrl": { "type": "string" },
15
+ "url": { "type": "string" },
16
+ "finalUrl": { "type": "string" },
17
+ "httpStatus": { "type": ["number", "null"] },
18
+ "pageState": { "type": "string" },
19
+ "evidenceStatus": { "type": "string" },
20
+ "titleText": { "type": "string" },
21
+ "selectorFindings": {
22
+ "type": "array",
23
+ "items": { "type": "object" }
24
+ },
25
+ "errorCode": { "type": "string" },
26
+ "errorMessage": { "type": "string" },
27
+ "warningMessages": {
28
+ "type": "array",
29
+ "items": { "type": "string" }
30
+ }
31
+ },
32
+ "additionalProperties": true
33
+ }
34
+ },
35
+ "additionalProperties": true
36
+ }