# Импорт (/ru/docs/get-started/importing)

Echolot импортирует в рабочее пространство то, что у вас уже есть в других инструментах: запросы, папки, авторизацию,
переменные, окружения и скрипты. Формат он определяет по содержимому, переносит учётные данные в Связку ключей и
сообщает в отчёте, что не удалось перенести.

## Что импортирует Echolot [#what-echolot-imports]

| Формат | Файлы | Что переносится |
| --- | --- | --- |
| **cURL** | Команда `curl …`: вставленная или в текстовом файле | Один запрос: метод, адрес, заголовки, тело, авторизация Basic и настройки вроде перенаправлений и проверки TLS. |
| **Postman** | Коллекции v2.0 и v2.1, окружения (`.json`) | Папки, запросы, авторизация, переменные коллекции, скрипты перед запросом и тестовые скрипты; окружения становятся [окружениями](/docs/workspaces/environments). |
| **Insomnia** | Экспорт JSON v4, коллекции YAML v5 | Папки, запросы, авторизация, окружения. |
| **OpenAPI** | OpenAPI 3.0 и 3.1, Swagger 2.0, JSON или YAML | Запрос для каждой операции с её параметрами, примером тела и авторизацией из её схемы безопасности. Адрес сервера становится переменной `{{baseUrl}}`. |
| **HAR** | HTTP Archive 1.2 из браузера или прокси (`.har`) | Вызовы API за сеанс; если хостов было несколько — по одной папке на хост. |
| **Paw** | Документы Paw и RapidAPI for Mac (`.paw`) | Группы, запросы, окружения; динамические значения Paw по возможности становятся [переменными и динамическими значениями](/docs/requests/dynamic-values) Echolot. |
| **Bruno** | Папка коллекции (с `bruno.json` или файлами `.bru`) | Папки, запросы, авторизация, окружения, скрипты и тесты — как написаны. |

Коллекция, спецификация, файл HAR или папка Bruno попадают в отдельную папку с тем же именем. Команда cURL
становится одним запросом.

Конфигурации MCP-серверов из Claude Desktop, Claude Code, Cursor, VS Code и Codex тоже импортируются — как MCP-серверы:
см. [Добавление серверов](/docs/mcp-servers/adding-servers).

## Импорт в приложении [#import-in-the-app]

Выберите любой из способов. Импорт попадает в папку, выбранную в боковой панели, или в корень рабочего пространства.

- **Файл › Импортировать…** (<kbd>⇧</kbd><kbd>⌘</kbd><kbd>I</kbd>) или **Импортировать…** в меню **+** боковой панели
  либо в [палитре команд](/docs/get-started/the-window#the-command-palette). Выберите один или несколько файлов либо
  папку коллекции Bruno.
- **Перетащите** файлы или папку Bruno в любое место области содержимого окна или на папку в боковой панели.
- **Вставьте** команду cURL либо текст коллекции или спецификации в боковую панель (<kbd>⌘</kbd><kbd>V</kbd>, когда
  фокус в боковой панели).
- **Вставьте команду cURL в адресное поле запроса.** Это не создаёт запрос: она заменяет метод, адрес, заголовки,
  тело, авторизацию и настройки открытого запроса, а его имя и место сохраняет. Всё, что не удалось использовать,
  перечислено под адресной строкой как **примечания по cURL**.

<Shot id="get-started-import-report" alt="Отчёт об импорте после импорта коллекции Postman: число импортированных запросов и папок, примечания о том, что не удалось импортировать как есть, и секреты, перенесённые в Связку ключей" />

### Отчёт об импорте [#the-import-report]

После импорта открывается отчёт. В его заголовке сказано, что добавилось («Импортировано: 22 запроса, 7 папок»); ниже —
из каких форматов и всё ли импортировано. Затем по каждому файлу:

- **Заметки** обо всём, что не удалось перенести как есть. Ничего не отбрасывается без заметки.
- **Секреты**: имена значений, сохранённых в Связку ключей вместо файлов. Сами значения не показываются никогда.

**Показать в боковой панели** выделяет импортированное; **Готово** закрывает отчёт. Одна команда cURL, к которой нечего
добавить, открывается сразу, без отчёта.

## Секреты попадают в Связку ключей [#secrets-go-to-the-keychain]

В файлах рабочего пространства пароль, токен или ключ никогда не лежат открытым текстом, поэтому их можно коммитить в
Git.

- **Учётные данные, введённые в запросах** (в авторизации, в заголовке `Authorization`, в заголовке с API-ключом),
  становятся секретными переменными, названными по запросу и полю. Например, `curl -u heidi:alpenglow
  https://demo.echolot.dev/echo/basic-auth/heidi/alpenglow` создаёт запрос с именем `heidi-alpenglow`, пароль которого —
  `{{heidi_alpenglow_password}}`; значение попадает в Связку ключей.
- **Секретные значения окружений и коллекций** попадают в Связку ключей так же.

Учётные данные в строках запроса адресов, в телах и в адресах вида `user:password@` пока не переносятся: проверьте их,
прежде чем коммитить импортированное рабочее пространство. См. [Секреты](/docs/workspaces/secrets).

## Скрипты [#scripts]

Скрипты перед запросом и тестовые скрипты из Postman переносятся и выполняются в песочнице `pm.*` Echolot. Приложение
запускает импортированные скрипты только после того, как вы им доверитесь: отчёт сообщает, сколько их было, а первая
отправка, которой они нужны, просит вас их просмотреть (**Просмотреть скрипты…**). Скрипты и тесты Bruno переносятся как
написаны, но `bru`, `req` и `res` в Bruno — не `pm` из Postman, поэтому перед запуском их, возможно, придётся поправить.
См. [Скрипты и тесты](/docs/requests/scripts-and-tests).

## Что не переносится [#what-doesnt-come-across]

Отчёт называет каждый из этих случаев, когда он происходит:

| Формат | Что пропущено или изменено |
| --- | --- |
| cURL | Файлы cookie, параметры, для которых в Echolot нет настройки, заголовки без двоеточия. Тело или поле формы, читаемое из файла (`-d @file`, `-F field=@file`), читается из этого файла при отправке запроса. |
| Postman | Типы авторизации, которых нет в Echolot. Тела-файлы и поля-файлы: выберите файлы заново. |
| Insomnia | Элементы видов, которых нет в Echolot. Теги шаблонов (`{% … %}`), для которых в Echolot нет эквивалента, остаются текстом. Типы авторизации, которых нет в Echolot. Тела-файлы и поля-файлы. Тип получения доступа OAuth 2.0, которого Echolot не предлагает, становится кодом авторизации. |
| OpenAPI | Параметры в местах, которые запрос вместить не может, тела запросов типов, которые он вместить не может, потоки OAuth (настройте авторизацию вручную), API-ключи, передаваемые в cookie (добавьте заголовок `Cookie`). Спецификация без серверов или с относительным адресом сервера: перед отправкой задайте `{{baseUrl}}`. Устаревшие операции всё равно импортируются. |
| HAR | Изображения, шрифты, скрипты и таблицы стилей. Повторяющиеся запросы попадают один раз. Заголовки с учётными данными сеанса браузера: настройте авторизацию на папке. |
| Paw | Динамические значения типов, которых нет в Echolot, становятся пустым текстом. Ссылки на файлы и клиентские сертификаты: задайте их заново. |
| Bruno | Режимы тела и авторизации, которых нет в Echolot. Заголовки, общие для всей папки (у папок Echolot их нет): добавьте их в запросы или в скрипт перед запросом. Проверки с оператором, для которого в Echolot нет эквивалента. |

## Файлы OpenAPI остаются связанными [#openapi-files-stay-linked]

При импорте файла OpenAPI или Swagger его копия сохраняется и в папке `specs/` рабочего пространства, а новая папка
запросов следует за этой спецификацией: когда спецификация меняется, Echolot может показать, что изменилось, и применить
это к запросам. Редактируйте спецификацию на странице [Спецификации](/docs/specs).

## Импорт из командной строки [#import-from-the-command-line]

`echolot import` принимает те же форматы в папку рабочего пространства, так что миграцию или импорт в CI можно
автоматизировать:

```sh
echolot import Alpenglow.postman_collection.json -w "Alpenglow.echolot"
echolot import staging.postman_environment.json -w "Alpenglow.echolot"
echolot import openapi.yaml -w "Alpenglow.echolot" --folder catalog
pbpaste | echolot import - -w "Alpenglow.echolot"       # a cURL command from the clipboard
```

Формат он определяет по содержимому; `--format` пропускает определение (`curl`, `postman-collection`,
`postman-environment`, `openapi`, `swagger`, `insomnia`, `har`, `paw` или `mcp-config`). Он выводит тот же отчёт:

```txt
Imported 22 requests, 7 folders from Postman collection v2.1.
warning: 19 pre-request or test scripts were imported; Echolot runs them once you trust them.
```

На Mac секреты попадают в Связку ключей, как в приложении. Там, где Связки ключей нет (Linux или `ECHOLOT_KEYCHAIN=0`),
они остаются вне файлов, а инструмент сообщает, какие переменные `ECHOLOT_SECRET_<NAME>` задать там, где вы отправляете
запросы. Сам инструмент командной строки выполняет любые скрипты без вопросов, как Newman.

Чтобы запустить коллекцию Postman, импортировать её не обязательно: `echolot run collection.json` запускает её как
есть. См. [Импорт и экспорт](/docs/cli/import-export) и [`echolot run`](/docs/cli/run).

Об обратном направлении см. [Экспорт](/docs/workspaces/exporting).
