# Экспорт (/ru/docs/workspaces/exporting)

Экспортируйте рабочее пространство или одну из его папок, чтобы передать тому, кто пользуется другим инструментом, или
перенести копию на другой Mac. Echolot записывает четыре формата: рабочее пространство Echolot, Postman Collection
v2.1, файл Insomnia v5 и коллекцию Bruno. Секретные значения никогда не покидают вашу связку ключей.

## Экспорт рабочего пространства или папки [#export-a-workspace-or-a-folder]

1. Начните экспорт:
   - Всё рабочее пространство: **Файл › Экспортировать рабочее пространство…** (<kbd>⇧</kbd><kbd>⌘</kbd><kbd>E</kbd>)
     или **Экспортировать рабочее пространство…** в меню **+** рядом с **Запросы** на боковой панели.
   - Одна папка: щёлкните её, удерживая Control, и выберите **Экспортировать папку…** либо выберите её и выберите
     **Файл › Экспортировать папку…**.
2. Выберите формат. Для каждого указано, сколько запросов он вмещает.
3. Оставьте отмеченным **Включить окружения**, чтобы экспортировать и окружения, или снимите флажок.
4. Нажмите **Экспортировать…**, выберите место и нажмите **Экспорт**.

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

<Shot id="workspaces-export-sheet" alt="Лист экспорта рабочего пространства Alpenglow: четыре формата, выбран Postman Collection v2.1, для каждого указано, сколько из 29 запросов он вмещает и какие виды остаются" />

## Форматы [#the-formats]

| Формат | Для чего | Какие виды запросов вмещает | Во что записывается |
| --- | --- | --- | --- |
| **Рабочее пространство Echolot** | «Всё, все виды запросов — для другого Mac или коллеги.» | Все | Папка рабочего пространства (`.echolot`) |
| **Postman Collection v2.1** | «Формат, который импортирует большинство API-инструментов: Postman, Insomnia, Bruno, Hoppscotch, Apidog.» | HTTP, GraphQL | Файл `.postman_collection.json`; папка, если вместе идут окружения |
| **Insomnia v5** | «Один YAML-файл для Insomnia 10 и новее, вместе с окружениями.» | HTTP, GraphQL, WebSocket, Socket.IO, gRPC | Файл `.yaml` |
| **Коллекция Bruno** | «Папка с файлами .bru, чтобы хранить их в Git и открывать в Bruno.» | HTTP, GraphQL | Папка |

Запросы MQTT и сохранённые вызовы MCP попадают только в рабочее пространство Echolot. Формат показывает виды, которые
он оставляет, до экспорта. Для Alpenglow Postman показывает «21 из 29 запросов · MCP, MQTT, Socket.IO, WebSocket и gRPC
не войдут».

## Что берёт с собой папка [#what-a-folder-takes-with-it]

Папка экспортируется вместе с тем, что она наследует: переменные, авторизация и скрипты рабочего пространства и
вышестоящих папок. Тогда запросы в другом инструменте отправляют то же, что и в Echolot.

## Отчёт [#the-report]

После экспорта лист сообщает, что было записано, например «Экспортировано 21 запрос, 7 папок, 3 окружения в формате
Postman Collection v2.1: …». Если есть что сказать, следом идут два списка:

- **Не вошло**: каждый запрос, для которого в формате нет места, и почему («В Postman Collection v2.1 нет запросов
  MQTT.»).
- **Изменено при экспорте**: каждая часть, которая получилась иной.

<Shot id="workspaces-export-report" alt="Отчёт об экспорте Alpenglow в Postman: «Не вошло» перечисляет восемь запросов gRPC, WebSocket, Socket.IO, MQTT и MCP; «Изменено при экспорте» — захваты, динамическое значение и секрет, записанный открытым текстом" />

Нажмите **Показать в Finder**, чтобы увидеть экспорт, или **Закрыть**.

Что обычно меняется в Postman, Insomnia и Bruno:

- **Захваты из ответов** не экспортируются. Другие инструменты задают переменные из скриптов.
- **Настройки отдельных запросов** (тайм-ауты, TLS, редиректы, версия HTTP) не экспортируются, кроме случаев, когда в
  формате есть такая же настройка.
- **Проверки** становятся тестами другого инструмента, если у него есть аналог. Отчёт считает те, для которых аналога
  нет, например проверки JSON Schema, OpenAPI и фильтров JSONPath.
- **Скрипты** пишутся для API `pm` из Postman. В Postman они попадают как есть; в Insomnia стоит
  `insomnia`; в Bruno они переходят как есть и могут потребовать правок под API Bruno.
- **Динамические значения**, для которых у другого инструмента нет аналога, сохраняются как написаны. Замените их, прежде
  чем отправлять туда.
- **Тела-файлы** указывают на путь к файлу на вашем Mac. Выберите файл заново там, где открывается коллекция.
- **Авторизация**, которой нет в другом инструменте, пропускается или меняется, и отчёт называет её.
- **Подписки GraphQL** через WebSocket становятся обычными запросами GraphQL, а загрузки файлов GraphQL не
  экспортируются.

## Секреты остаются дома [#secrets-stay-home]

Секретные переменные уходят по имени, без значений, в любом формате. Тот, кто открывает экспорт, задаёт значения в
своём инструменте.

Пароль, токен или ключ, введённый прямо в поле авторизации или заголовка, а не хранящийся в секретной переменной,
записывается открытым текстом. Отчёт их считает: «1 пароль, токен или ключ записан открытым текстом…». В Alpenglow это
секрет клиента OAuth 2.0 в **Auth › Orders with OAuth 2**. Перенесите такие значения в связку ключей, прежде чем
делиться файлом. См. [секреты](/docs/workspaces/secrets).

## Копия рабочего пространства Echolot [#an-echolot-workspace-copy]

Экспорт как **Рабочее пространство Echolot** — это новое рабочее пространство с собственным ID, поэтому оно не делит с
вашим секреты из связки ключей.

- Всё рабочее пространство берёт всё: запросы, окружения, MCP-серверы, спецификации, моки, сценарии и разговоры с
  Ассистентом, которыми вы поделились.
- Папка берёт окружения, MCP-серверы и спецификации и сохраняет своё место: папки выше идут с ней, и в каждой лежит
  только следующая вниз, так что наследуемое и ссылки между её запросами сохраняются. Сценарии, моки и общие разговоры
  с Ассистентом остаются в рабочем пространстве; отчёт сообщает об этом.

Собственная папка Git и файлы `.DS_Store` из Finder не копируются.

## Куда можно экспортировать [#where-an-export-may-go]

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

## В командной строке [#on-the-command-line]

`echolot export` записывает те же форматы:

```sh
echolot export alpenglow.postman_collection.json -w Alpenglow.echolot --format postman
echolot export orders-bruno -w Alpenglow.echolot --format bruno --folder orders --no-environments
```

`--format` — это `echolot`, `postman`, `insomnia` или `bruno`. То, для чего в формате нет места, называется в
стандартном потоке ошибок. См. [импорт и экспорт](/docs/cli/import-export).

## Копирование запроса как кода [#copy-a-request-as-code]

Со страницы запроса, для открытого запроса:

- **Запрос › Скопировать как cURL** (<kbd>⌥</kbd><kbd>⌘</kbd><kbd>C</kbd>) помещает команду `curl` в буфер обмена, с
  разрешёнными переменными и секретами.
- **Запрос › Сгенерировать код…** (<kbd>⌥</kbd><kbd>⌘</kbd><kbd>G</kbd>) показывает запрос как код с разрешёнными
  переменными. Скрипты не выполняются, а секреты показываются как есть. Выберите язык, затем **Скопировать** или
  **Сохранить…**.

«Сгенерировать код» знает cURL, Swift (URLSession), JavaScript (fetch и axios), TypeScript (fetch), Python (requests и
httpx), Go (net/http), Kotlin (OkHttp), Java (HttpClient), C# (HttpClient), PHP (cURL) и Rust (reqwest).

Чтобы добавить язык, нажмите **Открыть папку шаблонов** и положите туда файл `.template`. Его первая строка называет его
в списке и записывается как комментарий: `{{! Ruby · Net::HTTP }}`. Шаблон с тем же именем файла, что и у встроенного,
например `python-requests.template`, заменяет его.

<Callout type="warn">
  Код и команды cURL содержат секреты запроса открытым текстом. Не вставляйте их туда, где их могут прочитать другие.
</Callout>

## Экспорт обмена в HAR [#export-an-exchange-as-har]

Чтобы сохранить или передать один обмен в том виде, в каком он произошёл, выберите
**Запрос › Экспортировать обмен в HAR…** или **Экспортировать обмен в HAR…** в меню сохранения над телом ответа. Файл HAR содержит запрос и ответ.

[Прогон](/docs/requests/runner) экспортирует все обмены запуска одним файлом HAR, а `echolot run --reporter har` делает
то же в командной строке.

В меню сохранения над телом ответа есть также **Сохранить тело…**, **Открыть в программе по умолчанию** и, для
сжатого ответа или ответа gRPC, **Сохранить закодированное тело…**: байты в том виде, в каком они пришли.

Спецификации экспортируются со страницы [«Спецификации»](/docs/specs).
