> For the complete documentation index, see [llms.txt](https://docs.navigaglobal.com/writer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.navigaglobal.com/writer/admin-guide/configuration-file.md).

# Configuration Files

## Overview

This page will use the term "client configuration" often, this term refers to the configuration used by the Writer to figure out which plugins to load and in what order, what language to use for labels, and many other settings not covered here.

Naviga Writer has one or many client configuration files which are served to users when opening the Writer. There is also a server configuration file where devops can change a few select server settings per customer.

The configuration files are written in [JSON](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON), which is a fairly popular text-based data format. This means that the configuration files are portable and easily updated for administrators with access to them.

## Client Configuration Files

When a user creates a new article or opens an existing one, one of the first things that happen is the Writer will load its client configuration to figure out which plugins to load. The client configuration received depends on the user's selected **NavigaID unit** and which **version of the Writer** is being used.

### Client Configuration Example

{% code title="org-name/7.0/client.json" %}

```javascript
{
    "language": "en_US",
    "labelLanguage": "en",
    "facebookAppId": "0000133700000042",
    "contentHost": {
        "protocol": "https://",
        "credentials": "include",
        "hostName": "editorial-oc.test.infomaker.io",
        "port": "5000",
        "healthPath": "/opencontent/health",
        "queryPath": "/opencontent/search",
        "objectPath": "/opencontent/objects"
    },
    "plugins": [
        {
            "id": "io.infomaker.myplugin",
            "name": "im-myplugin",
            "url": "https://plugins.writer.infomaker.io/v1/infomaker/im-myplugin/1.0.0/index.js",
            "style": "https://plugins.writer.infomaker.io/v1/infomaker/im-myplugin/1.0.0/style.css",
            "enabled": true,
            "data": {
                "apiKey": "abcd1234"
            }
        }
    ]
}
```

{% endcode %}

This is a very small example of a client configuration file containing the bare minimum of properties used to make a Writer be able to start.

This page will not deep dive and explain each property and its use, it will only focus on the `"plugins"` list, and how to separate client configuration depending on selected NavigaID unit.

### Plugin Configuration per Unit

Normally a plugin block will be used by the entire Organisation, but sometimes specific Units in that organisation needs to have different configuration in a plugin's `"data"`-property, or a few plugins should be disabled/enabled for only one Unit.

#### Plugin Configuration with Units Example

```javascript
{
    "plugins": [
        {
            "id": "io.infomaker.test",
            "name": "im-test",
            "url": "https://plugin.writer.io/index.js",
            "style": "https://plugin.writer.io/style.css",
            "enabled": true,
            "data": {
                "apiKey": "global-api-key"
            }
        },
        {
            "id": "io.infomaker.test",
            "name": "im-test",
            "url": "https://plugin.writer.io/index.js",
            "style": "https://plugin.writer.io/style.css",
            "units": ["imnews"],
            "enabled": true,
            "data": {
                "apiKey": "api-key-just-for-imnews"
            }
        },
        {
            "id": "io.infomaker.test",
            "name": "im-test",
            "url": "https://plugin.writer.io/index.js",
            "style": "https://plugin.writer.io/style.css",
            "units": ["naviganews"],
            "enabled": false
        }
    ]
}
```

In this example we have added `"units"`-property to the plugin configuration block.

| Property  | Description                                              |
| --------- | -------------------------------------------------------- |
| `"units"` | A list of units that should use the configuration block. |

In the example above, we can see three plugins configured with the same value for their `"id"`-property, `"io.infomaker.test"`. Normally this will not work since `"id"` should be unique, but because we also include a `"units"`-property, when the user receives the client configuration for its unit, the `"id"` will be unique, since the other plugin blocks will be filtered out.

* The first plugin config block does not have a `"units"`-property, so this is used by the entire **organisation**
* The second plugin config block has `"units"`-property set to `["imnews"]`, indicating that this block should be used by **imnews unit**. It also has different values in its "data"-property from the organisation config
* The third plugin config block has `"units"`-property set to `["naviganews"]`, and also its `"enabled"`-property set to `false`. This indicates that the configuration block should be used by **naviganews unit** and that the plugin **should not be loaded** by the Writer.

If you made it this far, congratulations.

### Client Configuration per Unit

When plugin configuration is not enough, and properties other than "plugins" need to be changed for a specific unit, such as setting different label language or if different generic properties should used, then it's possible to override an entire client configuration file for that unit.

{% hint style="warning" %}
Client configuration should really only be overridden if the Organisation-wide `client.json` becomes unmanageable because of unit-specific plugins-configuration, or the unit requires very specific settings
{% endhint %}

To override a client configuration file for a unit, simply create a new JSON file called `unitx-client.json` (where unitx is the name of the unit) and place it next to the regular `client.json` file.

For instance, creating a file called `imnews-client.json` will cause any user with the selected unit **imnews** to receive the contents of that file instead of the normal `client.json`.


---

# 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://docs.navigaglobal.com/writer/admin-guide/configuration-file.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.
