---
feature_story: FS_37_57_36_29
feature_title: envelopes and payloads
feature_status: TEST
---

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

Think of a JSON object. The very first level of keys is the `data_envelope`, for example:

```json
{
    "type_A": "value_A1",
    "type_B": "value_B5",
    ...,
    "type_Z": "value_Z3",
    "envelope_payload": { ... },
}
```

See also `DataEnvelopeSchema`.

The first level keys in `data_envelope` is what `argrelay` will inspect.
*   Some of these keys have arbitrary arg type = arg value used in user search.
*   Some arg type might have special handling by `argrelay`, for example, `envelope_class`.
*   Some might be mandatory in certain situations.
*   Some might not have a simple value, but be an object instead, for example, `instance_data`.
*   etc.

One of the first level keys of `data_envelope` is called `envelope_payload` and this is the second concept -
its content is provided by user domain-specific application of `argrelay`.
It is data that is completely opaque for `argrelay` (`argrelay` just "relays" it around to feed user-specific actions).

