---
feature_story: FS_37_57_36_29
feature_title: containers, envelopes, payloads
feature_status: TEST
---

See also FS_45_08_22_15 `index_model`.

All search/lookup and data on the server can be described by three concepts:
*   `envelope_container`
*   `data_envelope`
*   `envelope_payload`

These are layers similar to data wrapping for different protocol layers (e.g. packets into frames)<\br>
except for search application.

Think of nested JSON objects for explanation...

# `envelope_container`

The first level of `prop_name` and `prop_value` pairs is the `envelope_container`, for example:

```json
{
    "sample_prop_name_a": "sample_prop_value_1",
    "sample_prop_name_b": "sample_prop_value_2",
    ...
    "sample_prop_name_z": "sample_prop_value_N",
    "data_envelopes": [
        ...
    ],
}
```

Each `envelope_container` holds metadata to search some `data_envelope`-s.

See also `EnvelopeContainer` and `EnvelopeContainerSchema`.

# `data_envelope`

Each `evnelope_container` finds and includes 0 to N `data_envelope`-s which may look like this:

```json
{
    "sample_prop_name_a": "sample_prop_value_1",
    "sample_prop_name_b": "sample_prop_value_2",
    ...,
    "sample_prop_name_z": "sample_prop_value_N",
    "envelope_payload": { ... },
}
```

See also `DataEnvelopeSchema`.

The first level of `prop_name` and `prop_value` pairs in `data_envelope` is what `argrelay` may use to search it.

# `envelope_class`

Some `prop_name`-s in `data_envelope` might have special meaning for `argrelay` applications.

for example, `envelope_class` `prop_name` specifies name for schema used in `envelope_payload` `prop_name`.

# `envelope_payload`

The content in `envelope_payload` is provided by user domain-specific application of `argrelay`
(but is not inspected by `argrelay` itself).
The data in `envelope_payload` that is completely opaque for `argrelay`
(`argrelay` just "relays" it around to feed user-specific actions).
