> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DocumentDefinition

> The DocumentDefinition object in Vantage JSON output describes the structure of extracted data and lists the fields a Document skill can extract.

**DocumentDefinition** contains an object of type **RootConcept**.

## DocumentDefinition

| Property | Type | Description |
| :- | :- | :- |
| `RootConcept` | `Concept` | The root concept of the extracted information. |

Extracted elements are represented by concepts. Each concept corresponds to one type of object and has a unique name, ID, and fields description.

## Concept

| Property | Type | Description |
| :- | :- | :- |
| `Id` | `String` | The ID of the concept. |
| `Name` | `String` | The name of the concept. |
| `Fields` | `ConceptField []` | A description of the structure of the extracted fields. |

**ConceptField** describes the structure of the extracted fields. A field may contain values of different types, either simple (e.g. string, data, number, bool, or image) or combined (i.e. a child object).

## ConceptField

| Property | Type | Description |
| :- | :- | :- |
| `Id` | `String` | The ID of the field. |
| `Name` | `String` | The name of the field. |
| `Type` | `Enum {Concept / String / Image / ISOdate / Boolean / Decimal / Enum}` | The type of field data. |
| `EnumValues` | `EnumValue []` | The enumeration of the possible field values. **Note:** This property is not implemented. |
| `Cardinality` | `Cardinality` | Whether the field recurs multiple time in the document. |
| `ValueConcepts` | `Concept []` | A description of the child concepts. |
| `ValueConceptIds` | `String []` | An array of the IDs of the child concepts. This property becomes available only if one concept is a child of multiple parent concepts. The child concept will be written in its entirety in the **ValueConcepts** property of one of its parent concepts. The other parent concepts will only get its identifier in their **ValueConceptIds** property. |

**EnumValue** describes the Enum element of the **ConceptField** object.

## EnumValue

| Property | Type | Description |
| :- | :- | :- |
| `Id` | `String` | The ID of the element. |
| `Name` | `String` | The name of the element. |

<Info>
  The **EnumValues** property is not implemented.
</Info>

**Cardinality** specifies whether the field recurs multiple times in the document.

## Cardinality

| Property | Type | Description |
| :- | :- | :- |
| `Min` | `Integer` | The minimum number of instances. |
| `Max` | `Integer` | The maximum number of instances. |

If Min=0 and Max=1, the field must not recur in the document. If Min=0 and Max= -1, the field may recur multiple times in the document.
