# dot.json (/docs/products/dash-dots/reference/dot-json)

`dot.json` tells Dash who your dot is and what it's allowed to use. Pages aren't listed here; they live in `dot.ts`.

Add the `$schema` line and your editor checks and completes the file as you type:

```json title="dot.json"
{
  "$schema": "https://unpkg.com/@monimesl/dot-runtime/dot.schema.json",
  "package": "sl.yourcompany.meter",
  "name": "Meter Top-up",
  "version": "1.0.0"
}
```

A field that isn't in this table fails the build. [Project configuration](/docs/products/dash-dots/developers/project-configuration) shows the fields in use.

| Field                      | Type       | Required       | What it is                                                                                                                                                                                                                                         |
| -------------------------- | ---------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                       | `string`   | No             | The ID Monime gives the dot when you register it. Publishing needs it. Payments in a live test work only once the dot is published and this is set.                                                                                                |
| `$schema`                  | `string`   | No             | The schema editors use to check and complete this file.                                                                                                                                                                                            |
| `package`                  | `string`   | Yes            | The dot's package name: a reverse domain name you own, such as "sl.yourcompany.meter". It never changes once the dot is published. Up to 128 characters.                                                                                           |
| `name`                     | `string`   | Yes            | The dot's display name, which Dash shows.                                                                                                                                                                                                          |
| `version`                  | `string`   | Yes            | The dot's version, in semantic versioning ([semver.org](https://semver.org)), such as "1.0.0". Raise it for every release.                                                                                                                         |
| `permissions`              | `object`   | No             | What the dot may use. Each value is the reason Dash shows the person when it asks.                                                                                                                                                                 |
| `permissions.account`      | `string`   | No             | Why the dot needs the person's name, their phone number or email address, and an ID for them that's unique to the dot, from `dash.account.signIn()`.                                                                                               |
| `permissions.camera`       | `string`   | No             | Why the dot needs the camera, to take a photo with `dash.media.pickPhoto({ source: 'camera' })` or scan a QR code with `dash.media.scanCode()`.                                                                                                    |
| `permissions.photoLibrary` | `string`   | No             | Why the dot needs the person to choose one of their photos, with `dash.media.pickPhoto({ source: 'library' })`.                                                                                                                                    |
| `permissions.files`        | `string`   | No             | Why the dot needs the person to choose a file from their phone, with `dash.media.pickFile()`.                                                                                                                                                      |
| `permissions.contacts`     | `string`   | No             | Why the dot needs the person to choose a phone number from their contacts, with `dash.contacts.pickPhone()`.                                                                                                                                       |
| `permissions.reminders`    | `string`   | No             | Why the dot sets reminders with `dash.reminders.set()`, such as "Remind you when your order is ready". Each brings the person back to one of the dot's pages.                                                                                      |
| `permissions.payments`     | `string`   | No             | Why the dot takes payments with `dash.payments.request()`, such as "Pay for tickets". Monime's review reads it. Dash doesn't ask the person for this permission: they confirm each payment instead. The money goes to the Space that owns the dot. |
| `network`                  | `object`   | No             | Where the dot may send requests with `dash.network`. Without it, it may send none.                                                                                                                                                                 |
| `network.hosts`            | `string[]` | With `network` | The hosts the dot sends requests to and shows pictures from: host names, such as "api.example.com", or "\*.example.com" for any of a domain's subdomains, but not the domain itself. At least 1, each up to 253 characters, with no repeats.       |
| `dash`                     | `object`   | No             | What the dot needs from Dash.                                                                                                                                                                                                                      |
| `dash.minApiVersion`       | `string`   | No             | The oldest Dash API version the dot needs, such as "1.0". It's "1.0" when left out. Raise it when the dot uses a newer call without checking `dash.supports(...)` first.                                                                           |
