Skip to content

Conversation

@negz
Copy link
Member

@negz negz commented Jan 15, 2026

Description of your changes

crossplane/crossplane#7022 adds support for composition functions to request OpenAPI schemas for resource kinds. This is useful when a function needs to validate resources against their schema, or introspect what fields a resource kind supports.

This PR updates the protobuf definitions and adds SDK helpers:

  • response.require_schema(rsp, name, api_version, kind) - declare a schema requirement
  • request.get_required_schema(req, name) - retrieve the resolved schema as a dict

The schema is returned as a plain dict rather than a wrapped type. This keeps the API simple and allows callers to pass it directly to validation libraries like openapi-schema-validator or jsonschema.

The docstrings for get_required_resources() and get_required_schema() now explain how to distinguish "not yet resolved" from "resolved but not found" using name in req.required_*.

I have:

Crossplane PR #7022 adds support for composition functions to request
OpenAPI schemas for resource kinds. When a function needs to validate
or introspect a resource's schema, it can request the schema from
Crossplane and receive it in subsequent invocations.

This commit updates the protobuf definitions from PR #7022 and adds
helper functions to work with schema requirements:

- response.require_schema() declares a schema requirement
- request.get_required_schema() retrieves the resolved schema

The schema is returned as a plain dict, allowing callers to use it
directly with validation libraries like openapi-schema-validator or
jsonschema.

Both get_required_resources() and get_required_schema() docstrings now
document how to distinguish between "not yet resolved" and "resolved
but not found" using the `name in req.required_*` pattern.

Ref: crossplane/crossplane#7022

Signed-off-by: Nic Cope <nicc@rk0n.org>
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.

1 participant