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

# AddonDef

AddonDef is an interface that defines the methods that a tax add-on must implement.

## Schema ID

`https://gobl.org/draft-0/tax/addon-def`

## Properties

| Title       | Property      | Type                                                  | Description                                                                                                                                           |
| ----------- | ------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Key         | `key`         | [cbc.Key](/draft-0/cbc/key)                           | Key that defines how to uniquely identify the add-on.                                                                                                 |
| Requires    | `requires`    | array of [cbc.Key](/draft-0/cbc/key)                  | Requires defines any additional addons that this one depends on to operate correctly.                                                                 |
| Name        | `name`        | [i18n.String](/draft-0/i18n/string)                   | Name of the add-on                                                                                                                                    |
| Description | `description` | [i18n.String](/draft-0/i18n/string)                   | Description of the add-on                                                                                                                             |
| Sources     | `sources`     | array of [cbc.Source](/draft-0/cbc/source)            | Sources is a list of sources that are used to provide the data for the add-on.                                                                        |
| Extensions  | `extensions`  | array of [cbc.Definition](/draft-0/cbc/definition)    | Extensions defines the list of extensions that are associated with an add-on.                                                                         |
| Tags        | `tags`        | array of [tax.TagSet](/draft-0/tax/tag_set)           | Tags is slice of tag sets that define what can be assigned to each document schema.                                                                   |
| Scenarios   | `scenarios`   | array of [tax.ScenarioSet](/draft-0/tax/scenario_set) | Scenarios are applied to documents after normalization and before validation to ensure that form specific extensions have been added to the document. |
| Identities  | `identities`  | array of [cbc.Definition](/draft-0/cbc/definition)    | Identities that are specific for the add-on and may be validated against or used during conversion processes.                                         |
| Inboxes     | `inboxes`     | array of [cbc.Definition](/draft-0/cbc/definition)    | Inboxes is a list of keys that are used to identify where copies of documents can be sent.                                                            |
| Corrections | `corrections` | [tax.CorrectionSet](/draft-0/tax/correction_set)      | Corrections is used to provide a map of correction definitions that are supported by the add-on.                                                      |

## Validation Rules

| Field  | Test                                                                  | Validation Code / Message                          |
| ------ | --------------------------------------------------------------------- | -------------------------------------------------- |
| `key`  | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul> | `GOBL-TAX-ADDONDEF-01`<br />Addon must have a key  |
| `name` | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul> | `GOBL-TAX-ADDONDEF-02`<br />Addon must have a name |
