Flagsmith / Flagsmith/flagsmith

Simplify fetching custom fields via API

Open
#5,576 2 comments 0 reactions 1 assignee Claimed by @existentialcoder View on GitHub
api
Dominant language
Python
Stars
6.6k
Forks
567
Avg merge
1d 13h
Merged PRs (30d)
121

Description

### Is your feature request related to a problem?

As a customer, suppose I have a feature with some custom fields, and I want to read the value of those custom fields from the API.

Image

I can fetch the feature from the API and it does return the custom field values, but the field names are not returned:

```
curl https://api.flagsmith.com/api/v1/projects/16945/features/98737/ -H 'Authorization: Token ...'

{
"id": 98737,
"name": "greeting",
...,
"metadata": [
{
"id": 587,
"model_field": 192,
"field_value": "FOO-123"
}
]
}
```

Obtaining the name of this custom field requires two additional requests. First, obtain the field IDs based on the `model_field` IDs by calling `GET /api/v1/organisations/15467/metadata-model-fields/`:

```
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 192,
"field": 252,
"content_type": 19,
"is_required_for": []
}
]
}
```

Then, using the returned `field` ID, get the custom field definitions by calling `GET /api/v1/metadata/fields/?organisation=15467`, which does return the field names and types:

```
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 252,
"name": "JIRA ticket number",
"type": "str",
"description": "",
"organisation": 15467
}
]
}
```

Note that the last two requests also require pagination to be correctly implemented.

### Describe the solution you'd like.

Return custom field names when fetching a feature via API. For example:

```
curl https://api.flagsmith.com/api/v1/projects/16945/features/98737/ -H 'Authorization: Token ...'

{
"id": 98737,
"name": "greeting",
...,
"metadata": [
{
"id": 587,
"model_field": 192,
"field_value": "FOO-123",
"field_name": "JIRA ticket number"
}
]
}
```

### Describe alternatives you've considered

Provide an Admin API client that provides an abstraction to simplify this, which would be a sizeable maintenance effort.

### Additional context

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.