# ACC Integration

### <mark style="color:red;">Overview</mark>

When you create an extension app in ACC, the system binds it to the shell application (e.g., Omnitron). Your app appears in the shell's `/api/v1/applications` endpoint but is **not visible** by default. You need to configure visibility settings to make it appear in the shell UI.

### <mark style="color:red;">Creating an Extension in ACC</mark>

Before configuring visibility, you need to create an extension app in ACC. See the [How to Move Apps into ACC](/tutorials/acc/how-to-move-apps-into-acc.md) tutorial for step-by-step instructions on:

* Creating a new extension application
* Configuring deployment settings
* Setting up environment variables

Once your extension is created and deployed, continue with the steps below to enable UI Protocol integration.

### <mark style="color:red;">Prerequisites</mark>

* An extension app created in ACC
* Access to the shell's API (e.g., Omnitron)
* API authentication token

### <mark style="color:red;">Check Your Application</mark>

First, verify your application exists in the shell:

```bash
curl -X GET "https://your-omnitron.lb.akinoncloud.com/api/v1/applications/?is_active=true&limit=999" \
  -H "Authorization: Token $YOUR_TOKEN"
```

**Response:**

<pre class="language-json"><code class="lang-json">{
  "results": [
    {
      "pk": 100,
      "name": "My Extension App",
      "application_type": "extension",
      "config": {
        "web_url": "https://my-app.lb.akinoncloud.com",
<strong>        "visible_type": "empty"
</strong>      },
      "is_active": true,
<strong>      "is_visible": false,
</strong><strong>      "related_application_id": null
</strong>    }
  ]
}
</code></pre>

**Key fields:**

| Field                    | Description                                                |
| ------------------------ | ---------------------------------------------------------- |
| `pk`                     | Application ID (needed for updates)                        |
| `config.web_url`         | URL where your app is deployed                             |
| `config.visible_type`    | Display type: `empty`, `full_page`, or `plugin`            |
| `is_visible`             | Whether the app appears in the shell UI                    |
| `related_application_id` | Parent shell app ID (null for direct Omnitron integration) |

### <mark style="color:red;">Enable Visibility</mark>

To make your application visible in the shell, update the `visible_type` and `is_visible` fields:

#### Fullpage Application

```bash
curl -X PATCH "https://your-omnitron.lb.akinoncloud.com/api/v1/applications/100/" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token $YOUR_TOKEN" \
  -d '{
    "config": {
      "visible_type": "full_page"
    },
    "is_visible": true
  }'
```

#### Plugin Application

Plugin applications require an additional `placeholder` field that specifies where the plugin renders:

```bash
curl -X PATCH "https://your-omnitron.lb.akinoncloud.com/api/v1/applications/100/" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token $YOUR_TOKEN" \
  -d '{
    "config": {
      "visible_type": "plugin",
      "placeholder": "product-detail-sidebar"
    },
    "is_visible": true
  }'
```

{% hint style="warning" %}
Available placeholder values are defined by the shell application. Contact the shell team for the list of supported placeholders.
{% endhint %}

### <mark style="color:red;">Visibility Types</mark>

| Type        | Description                                            |
| ----------- | ------------------------------------------------------ |
| `empty`     | Not visible in the shell (default)                     |
| `full_page` | Renders as a full page within the shell's content area |
| `plugin`    | Renders as a widget in a designated placeholder        |

### <mark style="color:red;">Shell Application Hierarchy</mark>

Applications can be nested:

* **Direct integration** (`related_application_id: null`): App integrates directly with the main shell (Omnitron)
* **Nested integration** (`related_application_id: <id>`): App integrates with another shell (Seller Center, another client app that can act as shell)

{% hint style="warning" %}
Only applications with `related_application_id: null` can be made directly visible in Omnitron. Nested applications are managed by their parent shell.
{% endhint %}

### <mark style="color:red;">Version Requirements</mark>

| Component   | Minimum Version |
| ----------- | --------------- |
| Omnitron FE | v3.1.6          |

### <mark style="color:red;">Troubleshooting</mark>

#### App not appearing in shell

1. Verify `is_visible` is `true`
2. Verify `visible_type` is `full_page` or `plugin` (not `empty`)
3. Check shell version meets minimum requirements
4. Ensure `is_active` is `true`

#### Plugin not rendering

1. Verify the `placeholder` value is valid for the shell
2. Check browser console for errors
3. Ensure the placeholder exists on the current page

### <mark style="color:red;">Next Steps</mark>

* [Shell Application](/akinon-ui/ui-protocol/shell-application.md) - Understand shell configuration
* [Client Application](/akinon-ui/ui-protocol/client-application.md) - Build your client app


---

# Agent Instructions: 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:

```
GET https://docs.akinon.com/akinon-ui/ui-protocol/acc-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
