> 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/code/marketplace/connection.md).

# Connection

**Where:** Code → Marketplace → package · `/projects/<project>/code/marketplace/<connectionId> (+ /enable, /edit)`

One marketplace connection — a catalog listing on this project. The view route takes the listing id (`ml_…`); the **/edit** route takes the installed integration id (`int_…`).

{% hint style="info" %}
Screenshot TODO — capture comes from testing-plan area **11-code**.
{% endhint %}

## What you can do here

The header shows the listing's icon, name (with an official-listing check badge), description, category · transport, and tags. Not installed yet: an **Enable** button and an info alert — "Enable this connection to add functions". Installed: status badges (enabled / test state), a **Configure ...** button, and an actions menu (**See documentation**, **Configure ...**). Two more alerts warn when the installed connection is disabled ("Connection is disabled" — its functions will not run) or has not passed a test yet ("Connection was not tested").

* **Added functions** — functions installed under this connection, each with its display name, an **Enabled**/**Disabled** badge, its function key, and its `func_…` id. **Edit …** opens the [function screen](/cloud/code/marketplace/function.md); the row menu can also **Enable**/**Disable** the function. Deleting a function is only possible on its edit screen.
* **Available functions** — the listing's curated definitions: name, description, function key, and the HTTP call it wraps (for example `POST /chat.postMessage`). An **Added** badge (with a count) marks definitions you already added — the same function can be added multiple times with different bindings. The button reads **Add …** when the connection is installed and enabled, otherwise **Review** (read-only).

## Enable / Configure form

**Enable** (route `…/<listingId>/enable`) installs the listing; **Configure ...** (route `…/<integrationId>/edit`) edits it. The form is generated from the listing's schema:

* **Configuration** fields — plain values defined by the listing (each with its own label, description, and placeholder).
* **Secrets** — write-only, Stripe-style. Stored secrets are never shown; on edit the inputs show `•••••••• (stored)`. Leave a secret empty to keep the stored value, or type a new one to replace it on Save.
* **Integration name** — the name shown on the project.

The screen also offers **Test** (the backend verifies the configuration and required secrets — this drives the TESTED badge), **Enable**/**Disable**, and **Delete** (via the actions menu — only possible here). Functions cannot be added or modified until the connection is enabled.

## API reference

Endpoints: [Save Marketplace Integration](/api-reference/code/marketplace/save-marketplace-integration.md), [Get Marketplace Integration](/api-reference/code/marketplace/get-marketplace-integration.md), [Enable](/api-reference/code/marketplace/enable-marketplace-integration.md) / [Disable](/api-reference/code/marketplace/disable-marketplace-integration.md) / [Delete Marketplace Integration](/api-reference/code/marketplace/delete-marketplace-integration.md), [Get Marketplace Function Catalog](/api-reference/code/marketplace/get-marketplace-function-catalog.md).
