# Extensions

## Список расширений

`GET /extensions`

```json
{
  "tags": [
    "Extensions"
  ],
  "summary": "Список расширений",
  "description": "Возвращает расширения, доступные профилям. Используйте расширение `id` в поле `extensions` `POST /profiles` или `PATCH /profiles/{id}`.\n\nЗначки опущены, поскольку URL-адреса данных могут быть большими. `POST /extensions` включает значок добавленного расширения.",
  "responses": {
    "200": {
      "description": "Список расширений.",
      "content": {
        "application/json": {
          "schema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Extension"
            }
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    }
  }
}
```

## Добавить расширение

`POST /extensions`

```json
{
  "tags": [
    "Extensions"
  ],
  "summary": "Добавить расширение",
  "description": "Укажите `url` или `path`.\n\n`url` может быть страницей Интернет-магазина Chrome, 32-значным идентификатором расширения или прямым URL-адресом `.crx` или `.zip`. `path` может быть локальной папкой `.crx`, `.zip` или распакованной папкой на хосте средства запуска.\n\nИмя расширения, версия, описание и значок считываются из его `manifest.json`, включая заполнители `__MSG_*__`, разрешенные с использованием локали по умолчанию.",
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/AddExtensionRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Расширение добавлено. Ответ включает `icon`.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Extension"
          }
        }
      }
    },
    "400": {
      "description": "Ни `url`, ни `path` не указаны, ссылка не является расширением, либо в магазине нет такого идентификатора.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    }
  }
}
```

## Удаление расширения

`DELETE /extensions/{id}`

```json
{
  "tags": [
    "Extensions"
  ],
  "summary": "Удаление расширения",
  "description": "Профили содержат идентификаторы, а не копии, поэтому любой профиль, называющий это расширение, перестает загружать его при следующем запуске. Их сохраненный список остается без изменений; повторное добавление расширения не восстанавливает привязку.",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Удаленный.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "deleted": {
                "type": "boolean",
                "example": true
              },
              "id": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "401": {
      "$ref": "#/components/responses/Unauthorized"
    }
  }
}
```
