An array of ValueNodes. Elements are not guaranteed to be of the same type, so for example one of the values may have constantValue set, while another may have valueReference set.

| JSON representation |
|---|
| ``` { "values": [ { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`) } ] } ``` |

| Fields ||
|---|---|
| `values[]` | ``object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`)`` The elements of the array. |

## ValueNode

Represents a single value or object.

| JSON representation |
|---|
| ``` { // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "constantValue": value, "integerValue": string, "bytesValue": string, "arrayValue": { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue`) }, "dictionaryValue": { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#DictionaryValue`) }, "functionDefinitionValue": { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#FunctionDefinition`) }, "functionInvocationValue": { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#FunctionInvocation`) }, "argumentReference": string, "valueReference": string // End of mutually exclusive fields. } ``` |

| Fields ||
|---|---|
| One of these must be set; it is an error to have none set. The following is a list of mutually exclusive fields. At most one of the fields will be set in a response: ||
| `constantValue` | ``value (`https://protobuf.dev/reference/protobuf/google.protobuf#value` format)`` A constant value. This is allowed to be of arbitrary complexity (i.e., may contain Structs and ListValues). |
| `integerValue` | `string (https://developers.google.com/discovery/v1/type-format format)` An integer value. |
| `bytesValue` | `string (https://developers.google.com/discovery/v1/type-format format)` An opaque series of bytes. A base64-encoded string. |
| `arrayValue` | ``object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue`)`` An array of values. |
| `dictionaryValue` | ``object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#DictionaryValue`)`` A dictionary of values. |
| `functionDefinitionValue` | ``object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#FunctionDefinition`)`` A function object. |
| `functionInvocationValue` | ``object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#FunctionInvocation`)`` A function invocation. |
| `argumentReference` | `string` A reference to an argument of some enclosing FunctionDefinition. Only valid inside the subgraph rooted at the "body" field of a FunctionDefinition. |
| `valueReference` | `string` A reference to a named ValueNode, defined in the enclosing Expression's "values" field. |
| End of mutually exclusive fields. ||

## DictionaryValue

An unordered string-keyed dictionary of ValueNodes. Keys are unique and may contain an empty string. Values are not guaranteed to be of the same type, so for example one of the values may have constantValue set, while another may have valueReference set.

| JSON representation |
|---|
| ``` { "values": { string: { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`) }, ... } } ``` |

| Fields ||
|---|---|
| `values` | ``map (key: string, value: object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`))`` The elements of the dictionary. An object containing a list of `"key": value` pairs. Example: `{ "name": "wrench", "mass": "1.3kg", "count": "3" }`. |

## FunctionDefinition

A custom function definition.

| JSON representation |
|---|
| ``` { "argumentNames": [ string ], "body": string } ``` |

| Fields ||
|---|---|
| `argumentNames[]` | `string` The names of the arguments accepted by this function. These can be referred to by the "argumentReference" field of ValueNodes within the body. |
| `body` | `string` The function body itself, as a reference to one of the ValueNodes in the enclosing Expression. |

## FunctionInvocation

An invocation of a function.

| JSON representation |
|---|
| ``` { "arguments": { string: { object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`) }, ... }, // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "functionName": string, "functionReference": string // End of mutually exclusive fields. } ``` |

| Fields ||
|---|---|
| `arguments` | ``map (key: string, value: object (`https://developers.google.com/earth-engine/reference/rest/Shared.Types/ArrayValue#ValueNode`))`` Arguments to this invocation. Order is insignificant. An object containing a list of `"key": value` pairs. Example: `{ "name": "wrench", "mass": "1.3kg", "count": "3" }`. |
| Both pre-defined and user-defined functions may be invoked. The following is a list of mutually exclusive fields. At most one of the fields will be set in a response: ||
| `functionName` | `string` A named function from the Earth Engine API. |
| `functionReference` | `string` A reference to a function-valued value. This is usually a direct reference to a FunctionDefinition value, but need not be: it could be a reference to a FunctionInvocation whose result is a function, or to a function-valued argument value. |
| End of mutually exclusive fields. ||