Understanding etags

I have two sets of cached resources, some in R2 some from an API we have.

I want to use the etag to avoid fetching the body of each if it hasn't changed. I see an etag header on the R2 buckets but not in responses from the (cached) API response (only a Last-Modified).

Is R2 generating the etag and sending it along and I need to do the same on my API, or is there a way to get CF to generate an etag based on the cached proxied API resource?
Was this page helpful?