Skip to content

Fix Workers Builds response envelope schema - #44

Open
nicu-chiciuc wants to merge 1 commit into
cloudflare:mainfrom
nicu-chiciuc:fix-builds-apiresponse-result
Open

Fix Workers Builds response envelope schema#44
nicu-chiciuc wants to merge 1 commit into
cloudflare:mainfrom
nicu-chiciuc:fix-builds-apiresponse-result

Conversation

@nicu-chiciuc

Copy link
Copy Markdown

I couldn't figure out how to report an issue regarding this so I opened a PR.

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.

The shared schema still defines the common envelope fields:

  • success
  • errors
  • messages
  • result_info

Each operation-specific schema can then define the concrete result shape it actually returns.

References

@alexminza

Copy link
Copy Markdown

@kristianfreeman @jacobbednarz @musa-cf @tamas-jozsa why not enable Issues or at least Discussions for this repo on GitHub to allow sharing issues regarding the Cloudflare API?

@ssicard

ssicard commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Thanks for the feedback @alexminza , we've enabled Issues.

Additionally, thanks for reporting this issue @nicu-chiciuc. I've created an internal ticket for this issue for investigation.

@nicu-chiciuc
nicu-chiciuc force-pushed the fix-builds-apiresponse-result branch from 0107e3e to 047e56e Compare August 3, 2026 01:10
@nicu-chiciuc

Copy link
Copy Markdown
Author

@ssicard, sorry to tag you again, but I've already submitted the 5th issue yesterday #48

It seems these are not small bugs but that this is a broader problem in the schema generation or validation process.

I have to catch these inconsistencies, then patch the official schemas and maintain provider-specific regression tests for things that are not part of my system.

I’m surprised this has not come up more often, since I assume other users also consume the OpenAPI schema.

Has anyone had a chance to look at the internal ticket you mentioned, and do you have any idea when the broader problem might be investigated?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants