OFREP Core

Bulk Evaluate All Feature Flags

Evaluates all feature flags in a single request using a static context. This endpoint is used by client-side providers for static context evaluation, where all flags are evaluated once and then cached locally for subsequent use.

The endpoint returns an array of all flag evaluations, where each flag can be either a successful evaluation or an evaluation failure. The response includes an ETag header for cache validation, allowing clients to use the If-None-Match header to avoid unnecessary re-evaluation when flags haven't changed.

post/ofrep/v1/evaluate/flags

Query parameters

flagConfigEtagstring

Optional ETag metadata provided by an event stream for change-triggered re-fetches (see ADR-0008). This is not a standard HTTP conditional request header; it is metadata for server-side cache validation and freshness checks. It should only be included when the request is directly triggered by a received change notification event.

integer
OR
string date-time

Optional last-modified metadata provided by an event stream for change-triggered re-fetches (see ADR-0008). Supports Unix timestamp in seconds (recommended) or an ISO 8601 date-time string, and is transported as query metadata rather than If-Modified-Since. It should only be included when the request is directly triggered by a received change notification event.

Headers

If-None-Matchstring

Optional ETag value from a previous bulk evaluation response. If provided and the ETag matches the current flag set, the server will return a 304 Not Modified response, indicating that flags haven't changed since the last evaluation.

Request body

Example request

{
  "context": {
    "targetingKey": "user-123",
    "email": "user@example.com",
    "plan": "premium",
    "country": "CA"
  }
}

Response

Successful bulk evaluation.

BulkEvaluationSuccess required— unresolved $ref

Changes

Changed in 11 of the 21 revisions of this API.16825

    • added the new optional query request parameter flagConfigEtag

      new-optional-request-parameter

    • added the new optional query request parameter flagConfigLastModified

      new-optional-request-parameter

    • added the optional property eventStreams to the response with the 200 status

      response-optional-property-added

    • request body became required

      request-body-became-required

    • the request's body type/format changed from / to object/

      request-body-type-changed

    • the request property context became required

      request-property-became-required

    • the request property context/targetingKey became required

      request-property-became-required

    • the response's body type/format changed from / to object/ for status 400

      response-body-type-changed

    • the response's body type/format changed from / to object/ for status 500

      response-body-type-changed

    • the flags/items/oneOf[evaluationFailure]/ response's property type/format changed from / to object/ for status 200

      response-property-type-changed

    • the flags/items/oneOf[evaluationSuccess]/ response's property type/format changed from / to object/ for status 200

      response-property-type-changed

    • added subschema #1 subschema #2 to the flags/items/oneOf[evaluationSuccess]/ response property allOf list for the response status 200

      response-property-all-of-added

    • removed subschema #1 subschema #2 from the flags/items/oneOf[evaluationSuccess]/ response property allOf list for the response status 200

      response-property-all-of-removed

    • added codeDefaultFlag to the flags/items/oneOf[evaluationSuccess]/allOf[subschema #2]/ response property oneOf list for the response status 200

      response-property-one-of-added

    • api operation id evaluateFlagsBulk was added

      api-operation-id-added

    • api tag OFREP Core added

      api-tag-added

    • api tag OFREP core removed

      api-tag-removed

  • d86062c9054c13See the full diff
    • the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/metadata response's property type/format changed from object/ to / for status 200

      response-property-type-changed

    • added the optional property flags/items/oneOf[evaluationFailure]/metadata to the response with the 200 status

      response-optional-property-added

    • added the optional property metadata to the response with the 200 status

      response-optional-property-added

    • added metadata flagMetadataDescription flagMetadataExamples to the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/metadata response property allOf list for the response status 200

      response-property-all-of-added

    • the optional response header Retry-Later removed for the status 429

      optional-response-header-removed

    • added the new optional request property context/targetingKey

      new-optional-request-property

    • the response property flags became required for the status 200

      response-property-became-required

    • api tag OFREP core added

      api-tag-added

    • removed the DISABLED enum value from the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/reason response property for the response status 200

      response-property-enum-value-removed

    • removed the SPLIT enum value from the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/reason response property for the response status 200

      response-property-enum-value-removed

    • removed the STATIC enum value from the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/reason response property for the response status 200

      response-property-enum-value-removed

    • removed the TARGETING_MATCH enum value from the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/reason response property for the response status 200

      response-property-enum-value-removed

    • removed the UNKNOWN enum value from the flags/items/oneOf[evaluationSuccess]/allOf[subschema #1]/reason response property for the response status 200

      response-property-enum-value-removed