> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/files/integrations.md).

# Integrations

Where your file bytes are stored.

> The storage accounts your project writes files to, and which one is the default.

*Last updated 2026-09-11 · Applies to all projects*

**Where:** Files → Integrations · `/projects/<project>/files/integrations`

## Why it exists

Norbix does not keep your files — you do. An **integration** is the link to a storage account you own: an S3 bucket, an Azure container, a Google Cloud bucket, a Google Drive folder. This screen is where you connect those accounts, say which one new uploads go to, and turn one off without losing the others.

## When you'd use it

* Connect storage for the first time, right after enabling the module.
* Point test and production at different buckets.
* Rotate credentials after a key changed, or disable an account you no longer use.

## Where to find it

Files → **Integrations**.

<figure><img src="https://760328771-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LwSkuCpTNI_AerL8J2a%2Fuploads%2Fgit-blob-4c8f9698d63d83a46d2f153c0ef3f7e6025cd1e0%2Ffiles-integrations.jpg?alt=media" alt=""><figcaption><p>Files → Integrations.</p></figcaption></figure>

The list shows each integration with its **Integration Name**, **Provider**, **Enabled** state, and a **Default** badge. Defaults are set per environment, so the badge reads "Default for {environment}".

## How to set it up

You need the `files:create` permission on `files:integration:all` to add one, `files:update` on an integration to enable or disable it, `files:manage` to set the default, and `files:delete` to remove it.

1. Press **Add New Integration**. The provider picker opens (`/files/integrations/pick`) — see [Providers](/cloud/files/integrations/providers.md).
2. Choose a provider and fill in its form. Each provider asks for different fields; the provider page lists them with example values.
3. Give the integration a **name** you will recognise later, for example `Production files` or `Staging bucket`.
4. Press **Test** to check the credentials before saving, then **Save**.
5. Set one integration as **Default**. New uploads go to the default; existing files stay where they are.

**What "working" looks like:** the integration appears in the list as **Enabled**, carries the **Default for {environment}** badge, and the [Browser](/cloud/files/browser.md) can list its folders.

## Good to know

* **A default is required in practice.** If several integrations are enabled but none is the default, the list shows a "No Default Set For Active Integrations" warning and uploads have nowhere to go.
* **Secrets are never sent back.** Open an integration to edit and the secret fields are empty, while the non-secret fields are filled in. That is by design — leave a secret blank to keep the stored one, or type a new value to replace it.
* **Changing the default does not move files.** Files stay in the account they were written to. The Browser's **Integrations** dropdown is how you reach the older ones.
* **Deleting an integration does not delete your bytes.** It removes the link and the stored credentials; the bucket keeps its contents.
* Create and edit use the same form.

## Do it in code

{% tabs %}
{% tab title="JavaScript / TypeScript" %}

```ts
import { Norbix } from '@norbix.ai/ts';
const norbix = new Norbix();

const all = await norbix.hub.files.getFilesIntegrations({});
await norbix.hub.files.setFilesIntegrationAsDefault({
  filesIntegrationId: 'int_4kX9mQvR2tYw7ZbC1dFgHj',
});
```

{% endtab %}

{% tab title=".NET" %}

```csharp
using Norbix.Sdk;

using var client = new NorbixClient();

var all = await client.Files.GetFilesIntegrationsAsync(new GetFilesIntegrationsRequest());
await client.Files.SetFilesIntegrationAsDefaultAsync(new SetFilesIntegrationAsDefaultRequest
{
    FilesIntegrationId = "int_4kX9mQvR2tYw7ZbC1dFgHj",
});
```

{% endtab %}

{% tab title="Python" %}

```python
from norbix_python import NorbixHub

norbix = NorbixHub()

all_integrations = norbix.files.get_files_integrations()
norbix.files.set_files_integration_as_default(
    filesIntegrationId="int_4kX9mQvR2tYw7ZbC1dFgHj",
)
```

{% endtab %}

{% tab title="Go" %}

```go
c, _ := norbix.New(norbix.Options{})
ctx := context.Background()

var result map[string]any
_ = c.Hub.Files.GetFilesIntegrations(ctx, map[string]any{}, &result)
```

{% endtab %}
{% endtabs %}

**CLI:** the Norbix CLI covers files themselves (`norbix files list`, `info`, `download`, `upload`, `sign`, `delete`) but has no command for the module or its integrations. Use an SDK or the API for those.

Full method list: [Files → Integrations](/sdks-and-cli/files/integrations.md).

## API reference

Endpoints: [Files → Integrations](/api-reference/files/integrations.md) — [Save](/api-reference/files/integrations/save-files-integration.md), [Set as Default](/api-reference/files/integrations/set-files-integration-as-default.md), [Enable](/api-reference/files/integrations/enable-files-integration.md) / [Disable](/api-reference/files/integrations/disable-files-integration.md) / [Delete](/api-reference/files/integrations/delete-files-integration.md).

## Related

[Providers](/cloud/files/integrations/providers.md) · [Browser](/cloud/files/browser.md) · [Files](/cloud/files.md)
