Skip to content

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

Description

@Sialuriano

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions