# Metadata Filtering

To filter by object's metadata which is stored as JSON a query parameter with `metadata` prefix must be sent in the URL. Here are some examples of how this filtering works:

### Filter by whole metadata value

Query param: `metadata={"key1":"value1"}`

Response:

```json
[
    ...
    "metadata": {
        "key1": "value1"
    }
]
```

### Filter by string key value

Query param: `metadata__key1="value1"`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": "value1"
        }
    },
    {
        ...
        "metadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
]
```

### Filter by number key value

Query param: `metadata__key1=123`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": 123
        }
    }
]
```

### Filter by array key value

Query param: `metadata__key1=[1, 2, 3]`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": [
                1,
                2,
                3
            ]
        }
    }
]
```

### Filter by object key value

Query param: `metadata__key1={"key2": "value2"}`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": {
                "key2": "value2"
            }
        }
    }
]
```

### Filter by boolen key value

Query param: `metadata__key1=true`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": true
        }
    }
]
```

### Filter by null key value

Query param: `metadata__key1=null`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": null
        }
    }
]
```

### Filter by nested key value

Query param: `metadata__key1__key2__key3="value3"`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": {
                "key2": {
                    "key3": "value3"
                }
            }
        }
    }
]
```

### Filter by array item

Query param: `metadata__key1__0=1`

Response:

```json
[
    {
        ...
        "metadata": {
            "key1": [
                1,
                2,
                3
            ]
        }
    }
]
```

### Filter by array containing item

Query param: `metadata__key1__contains=1`

Response:

```json
[
    {
        "metadata": {
            "key1": [
                1,
                2,
                3
            ]
        }
    },
    {
        "metadata": {
            "key1": [
                3,
                2,
                1
            ]
        }
    }
]
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.licensespring.com/management-api/metadata-filtering.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
