# Containers

Containers are an efficient means of storing complex data in a format which is easily accessed. Containers are the only non text based data type available in Yate. A container is an array or an object. Containers can be created from JSON data, as an empty array or object or as a copy of all or part of another container. A container persists until it is overwritten, removed, the Batch Processor terminates or an action run from the UI terminates. Container names are case insensitive and ignore leading and trailing spaces. Container names cannot include periods (.), left square brackets ([) or newline characters.

The implementation was designed to closely match the JSON specification. Additional information on JSON can be found at the following links:

> Wikipedia
> JSON.org

In some cases it may be preferable to use containers as opposed to Yate key-value lists. This is especially true if the data representation is of a depth which makes the use of delimiters inconvenient.

Containers support the simple JSON types of Boolean, Null, Number and String. They also supports the complex types of Array and Object. A container can only be an Array or Object. While container names are case insensitive, the name in an Object's name:value pair is case sensitive. Containers may contain Date and Data types if the container was created from the contents of a plist file. The value of these types is a description of the content.

All action statements which access containers make use of directed paths.