# Config tables in the dashboard

Editing, checking and saving configuration files on one dashboard screen, with a lookup strip that answers before you save.

[Config tables](https://zato.io/docs/dev/examples/config-tables.html) and every other [configuration file](https://zato.io/docs/dev/examples/config.html) your services read are edited in the dashboard under **Services > Config tables**. Everything happens on one screen - the files are listed on the left, the one you are working on fills the middle, and the Translate column on the right runs a value through the file so you can see the answer before you save.

## What the listing shows {#what-the-listing-shows}

Each file in the listing shows its name, how many entries it holds, and a badge that says what kind of file it is:

- **codes** - the file has a `[codes]` section, so it is a list of the values you accept
- **maps** - any other sections, so it is a mapping table with one section per source
- **yaml** - a `.yaml` file, edited as text
- **Error** - the file stops parsing at some line

The name shown for each file is what a service reads it as - `statuses.ini` appears as `statuses`, which is `self.config.statuses` in code.

A file with an error stays listed and stays editable, which is how you fix it - open it, let Check name the first line that does not parse, correct it and save.

## Editing a file {#editing-a-file}

The editor shows the file with syntax highlighting and line numbers. There are no forms to fill out - a new row is a line you type, a new source is a section you add. Two buttons do the work:

- **Check** parses what is on screen and reports the first line that does not parse, without saving anything
- **Save** writes the file and makes it active on every server with no restart - the servers reload it as they would reload a file saved in any other editor

Unsaved changes survive a page reload - a file with edits you have not saved yet is marked in the listing and opens again with those edits in place. Undo covers everything, including renaming and deleting files, and Ctrl-S saves, as does Cmd-S.

If you change your mind about all of it, **Restore initial values** brings the file back to what it held when you opened the page.

## Trying out a value {#trying-out-a-value}

The Translate column answers the two questions a config table exists for, right on the screen - enter a source and a value and the result appears along with a diagram of the lookup. For a `[codes]` file, enter a value and see whether it is accepted.

The lookup runs against what is in the editor, saved or not, so you can add a mapping and see it resolve before the file is written. When a target keeps one value under more than one of its own codes, every one of them is shown, so the conflict [described here](https://zato.io/docs/dev/examples/config-tables.html#one-value-under-several-codes) is visible while you are still editing.

## Managing files {#managing-files}

New files, uploads and the rest are on the same screen:

- **New file** creates an empty file, ready to be renamed and filled in
- **Upload** takes a file from your machine
- **Download** saves the file you are looking at to your machine
- **Rename** works inline on the listing row
- **Delete** removes the file, and undo brings it back

A `.csv` file can be converted into an `.ini` file directly in the editor - the rows become one section, and you take it from there.

## Large files {#large-files}

A file too large to work on in a browser, or one that is not text, is not opened in the editor - you download it, change it in your own tools and upload it again. Saving it that way makes it live exactly like saving from the editor does.

## Learn more {#learn-more}

- [REST integration overview](https://zato.io/integrations/rest/) - Start here to see how teams build REST integrations
- [In-depth API tutorial](https://zato.io/tutorials/main/01.html) - Master architectural patterns for production-ready integrations
- [Modern REST API tutorial](https://zato.io/tutorials/rest-api/python.html) - Design, build and secure REST APIs with Python
