Skip to content

Conversation

@toumorokoshi
Copy link
Member

🍱 Types of changes

What types of changes does your code introduce to AEP? Put an x in the boxes
that apply

  • Enhancement
  • New proposal
  • Migrated from google.aip.dev
  • Chore / Quick Fix

📋 Your checklist for this pull request

Please review the AEP Style and Guidance for
contributing to this repository.

General

💝 Thank you!

@thegagne
Copy link
Contributor

Do we need the operations to be per field?

For example, you might want RelOp for create_time but not for description.

@toumorokoshi
Copy link
Member Author

Do we need the operations to be per field?

For example, you might want RelOp for create_time but not for description.

we might want it - I was trying to simplify somewhat, but I suppose we should allow for full flexibility.

How about accepting both global and per-field ops?

x-aep-filter:
  fields: # this field describes the fields that can be operated upon
    path: {}
    description: {}
    create_time:
      ops: 
        RelOp: {} # rel ops are supported just for create_time.
  # these are operations that are supported by the API. They match the
  # name of the elements in the grammar.
  # https://github.com/google/cel-spec/blob/master/doc/langdef.md#name-resolution
  operations: # globally supported ops
  - 'ConditionalOr'
  - 'ConditionalANd'

Although that might end up being a bit cumbersome, because it's probably more common for the opposite case: ops support N fields, not a single field support N ops.

So perhaps something like:

x-aep-filter:
  fields: # this field describes the fields that can be operated upon. use a map to attach metadata as needed.
    path: {}
    description: {}
    create_time: {}
  # these are operations that are supported by the API. They match the
  # name of the elements in the grammar.
  # https://github.com/google/cel-spec/blob/master/doc/langdef.md#name-resolution
operations: # globally supported ops
  ConditionalOr: {}
  ConditionalANd: {}
  RelOp:
    fields: ["create_time"] # the existence of `fields` implies that not all fields are supported and the op is scoped.

The latter seems fairly flexibile?

@toumorokoshi toumorokoshi added the discussion changes that require discussion, and will likely be discussed in the weekly meeting. label Sep 6, 2025
@toumorokoshi
Copy link
Member Author

toumorokoshi commented Sep 12, 2025

some thoughts from live discussion:

  • with odata, this was supported via documentation on a separate page.
  • LLMs would find this documentation helpful.
  • if we don't have a standard way to document it, then the ecosystem will bifurcate.
  • documentation generation won't be able to generate high-quality docs with only textual descriptions.
  • is a simple list going to be sufficient? e.g. for parentheses.

@toumorokoshi
Copy link
Member Author

After discussion in the weekly, we've agreed that we should try to tackle this further in the 2027 edition of AEPs, rather than rush an untested solution.

@toumorokoshi toumorokoshi removed this from aep-2026 Oct 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discussion changes that require discussion, and will likely be discussed in the weekly meeting.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants