I couldn't figure out how to report an issue regarding this so I opened a PR.
gem.gemn
Summary
Remove the shared result: object | null constraint from builds_APIResponse so Workers Builds endpoints can define their own response result shape.
Problem
I encountered this while generating runtime validators from the OpenAPI schema and validating Cloudflare API responses with Ajv.
builds_APIResponse currently defines result as:
result:
nullable: true
type: object
and also marks result as required.
Several Workers Builds operations compose this schema with an operation-specific schema using allOf. For example, listTriggersByScript composes builds_APIResponse with a schema that defines:
result:
type: array
items:
$ref: '#/components/schemas/builds_TriggerResponse'
Under OpenAPI/JSON Schema semantics, allOf does not override fields from earlier schemas. The response must validate against every schema in the allOf list.
That makes the composed schema contradictory:
builds_APIResponse requires result to be an object or null.
listTriggersByScript requires result to be an array.
- A JSON array does not satisfy
type: object.
So a valid list response like this cannot validate against the published schema:
{
"success": true,
"errors": [],
"messages": [],
"result": []
}
Fix
This PR removes result from the shared builds_APIResponse envelope.
www.Gac;"('json.js'):*
The shared schema still defines the common envelope fields:
*:""('pt');
success
errors
messages
result_info
[Kh]:"Pypi";*:"js.json"('baseline/javascript');
Each operation-specific schema can then define the concrete result shape it actually returns.
[0]: map.site:"<google.chrome>";('Gcp')/('Gmp'); https://go.dev`{chrome.com}`
References
Originally posted by @Sialuriano in cloudflare/api-schemas#44 (comment)
Originally posted by @Sialuriano in cloudflare/api-schemas#44 (comment)