Flagsmith / Flagsmith/flagsmith
Inconsistent data schema returned by edge-features endpoints
- Dominant language
- Python
- Stars
- 6.6k
- Forks
- 567
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 124
Description
**Is your feature request related to a problem? Please describe.**
The `/api/v1/environments/{environment_api_key}/edge-identities/{edge_identity_identity_uuid}/edge-featurestates/` endpoint returns a list of results with: `feature_state_value`, `feature`, `multivariate_feature_state_values`, `enabled`, `identity_uuid` and `uuid`.
This unfortunately only returns a partial list of the overriding states for a feature, and doesn't include the name of the feature.
On the other hand, the `/api/v1/environments/{environment_api_key}/edge-identities/{edge_identity_identity_uuid}/edge-featurestates/all` returns a complete list of states with: `feature` (including the `name`, `type` and `id`), `enabled`, `overridden_by`, `segment` and `multivariate_feature_state_values`.
Now this returns all the feature states for a identity, but there is a problem. It doesn't return the identity or feature uuid. This is an issue as all other endpoints which reference feature states require the UUIDs.
Currently, I have to make use of both endpoints above and this is far from ideal.
**Describe the solution you'd like**
I would expect the `/api/v1/environments/{environment_api_key}/edge-identities/{edge_identity_identity_uuid}/edge-featurestates/all` endpoint to be an extension of the first, but as a complete list.
Instead, it returns a completely different schema with different fields.
This is quite misleading, and the reason for that disparity doesn't seem to be mentioned anywhere in the docs.
My proposed solution would be a combination of both schemas, giving access to all fields without making extra calls.
**Describe alternatives you've considered**
I make use of the 2 endpoints, but this is really inefficient as there a lot of extra calls being made.
Contributor guide
Assessment
This issue has not been assessed yet.