> For the complete documentation index, see [llms.txt](https://learn.squirrel365.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.squirrel365.io/squirrel-addon-documentation/squirrel-helper-library/angular/getting-started/the-json-files.md).

# The JSON files

As covered in the [Property Panel](/squirrel-addon-documentation/building-an-addon/property-panel.md) section there are three JSON files which are needed for the addon to work.  They handle your state definition, communication between the addon and Squirrel and how to display the property panel in the designer.

<details>

<summary>defaultState.json</summary>

The default state is a JSON representation of the data model you want Squirrel to use when it saves a project with your addon in, and when it adds your addon to the Squirrel canvas for the first time.

This JSON object is available inside your addon via the getter [getCopyOfState()](/squirrel-addon-documentation/squirrel-helper-library/angular/methods/getcopyofstate.md) this returns a copy of the state object.  To set properties of state you need to send the data to Squirrel using the [sendToSquirrel()](/squirrel-addon-documentation/squirrel-helper-library/javascript/methods/sendtosquirrel.md) method.  If the property you are updating has been bound to a spreadsheet cell in Squirrel, the data you pass will be inserted into the relevant cell(s).

</details>

<details>

<summary>messageBindings.json</summary>

This file lets Squirrel know whether the property in defaultState in the addon is to be used to:

**send** data from the addon to Squirrel, &#x20;

**receive** data from Squirrel into the addon or

**both** send and receive data

</details>

<details>

<summary>propertyPanel.json</summary>

This file contains a JSON representation of the property panel.  You create the panel using a collection of pre-defined [elements ](/squirrel-addon-documentation/building-an-addon/property-panel/property-panel-elements.md)available.

</details>

## Walkthrough video

{% embed url="<https://www.loom.com/share/f3fa5ad9c1cd4e67ac66cb9d531efd2f>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://learn.squirrel365.io/squirrel-addon-documentation/squirrel-helper-library/angular/getting-started/the-json-files.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
