> ## Documentation Index
> Fetch the complete documentation index at: https://gobl-improv.mintlify.site/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                                                  | Req. | Description                                                                                                                                           |
| ----------- | ------------- | ----------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Key         | `key`         | [cbc.Key](/draft-0/cbc/key)                           | true | Key that defines how to uniquely idenitfy 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)                   | true | 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)    | true | 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) | true | 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)      | true | Corrections is used to provide a map of correction definitions that are supported by the add-on.                                                      |
