# echolot import와 export (/ko/docs/cli/import-export)

`echolot import`는 가지고 있는 것을 작업 공간 파일로 바꿉니다. cURL 명령, Postman, Insomnia, Paw, Bruno 컬렉션, OpenAPI나 Swagger
명세, HAR 파일이 해당됩니다. `echolot export`는 작업 공간이나 그 폴더 하나를 Postman, Insomnia, Bruno 컬렉션으로, 또는 Echolot
작업 공간의 사본으로 씁니다. 앱의 <strong>파일 › 가져오기…</strong>와 <strong>파일 › 작업 공간 내보내기…</strong>와 같은 일을 합니다.
[가져오기](/docs/get-started/importing)와 [내보내기](/docs/workspaces/exporting)를 참조하십시오.

## echolot import [#echolot-import]

```sh
echolot import <file> [--workspace <workspace>] [--folder <folder>] [--format <format>]
```

`<file>`은 가져올 파일, Bruno 컬렉션 폴더, 또는 표준 입력을 읽는 `-`입니다.

형식은 내용으로 판단합니다. 컬렉션이나 명세는 자신만의 폴더에 만들어지고, cURL 명령은 요청 하나가 됩니다. 쓴 파일의 경로는 한 줄에
하나씩 표준 출력으로, 요약은 표준 오류로 나갑니다.

```sh
pbpaste | echolot import - -w Alpenglow.echolot --folder auth
```

```text
Imported 1 request from cURL.
note: 1 credential kept out of the workspace files but not saved, as there is no Keychain here: auth_token_token. Set ECHOLOT_SECRET_AUTH_TOKEN_TOKEN where Echolot sends.
auth/auth-token
```

| 가져오는 대상 | 형식 이름 |
| --- | --- |
| cURL 명령 | `curl` |
| Postman 컬렉션 | `postman-collection` |
| Postman 환경 | `postman-environment` |
| OpenAPI 3 문서(YAML 또는 JSON) | `openapi` |
| Swagger 2 문서 | `swagger` |
| Insomnia 내보내기 | `insomnia` |
| HAR 파일 | `har` |
| Paw 파일 | `paw` |
| MCP 클라이언트의 설정(서버 목록) | `mcp-config` |
| Bruno 컬렉션 | 폴더 자체. 형식 지정이 필요 없습니다 |

<strong>자격 증명은 파일에 저장되지 않습니다.</strong> 인증 설정과 자격 증명 헤더에서 발견된 암호, 토큰, API 키 등의 비밀 값은 요청과 필드의
이름을 딴 비밀 변수(`me_password`)가 되고, 파일에는 `{{me_password}}`가 남습니다. Mac에서는 키체인에 저장됩니다. 키체인이 없으면
(Linux, CI, `ECHOLOT_KEYCHAIN=0`) 값은 저장되지 않으며 Echolot이 설정해야 할 `ECHOLOT_SECRET_<NAME>` 변수를 알려 줍니다. 보고서에는
비밀 값의 이름만 나오고 값은 나오지 않습니다.

명세를 가져오면 그 명세를 따르는 폴더가 만들어집니다. Echolot이 그 사실을 알려 줍니다(`note: the folder follows …`).
[`echolot spec check`와 `apply`](/docs/cli/spec)로 최신 상태를 유지하십시오.

### 옵션 [#options]

| 옵션 | 의미 |
| --- | --- |
| `-w`, `--workspace <folder>` | 작업 공간 폴더(`workspace.toml`이 들어 있는 폴더). 기본값은 현재 폴더입니다. |
| `--folder <path>` | 작업 공간의 이 폴더로 가져옵니다. 예: `users/admin`. |
| `--format <format>` | 감지를 건너뜁니다: `curl`, `postman-collection`, `postman-environment`, `openapi`, `swagger`, `insomnia`, `har`, `paw`, `mcp-config`. |

## echolot export [#echolot-export]

```sh
echolot export <output> [--workspace <workspace>] [--folder <folder>] --format <format> [--no-environments] [--force]
```

`<output>`은 쓸 위치입니다. Postman과 Insomnia는 파일, Bruno와 Echolot 작업 공간, 환경이 포함된 Postman은 폴더입니다.

```sh
echolot export /tmp/alpenglow.postman_collection.json -w Alpenglow.echolot --format postman
```

```text
Exported 21 requests, 7 folders, 3 environments as Postman Collection v2.1.
warning: 8 requests left out: Postman Collection v2.1 has no MCP requests. …
  left out: realtime/order-updates
  left out: inventory/reserve-stock
  …
warning: Response captures (Store in a Variable) are not exported; other tools set variables from scripts.
warning: 1 password, token or key is written in clear: it is typed into an auth or header field rather than kept in a secret variable. Move it to the Keychain before sharing the file.
/tmp/alpenglow.postman_collection.json
```

| 형식 | 대상 | 쓰는 내용 |
| --- | --- | --- |
| `echolot` | 모든 종류의 요청 | 고유한 ID를 가진 새 작업 공간 폴더. 폴더 내보내기는 그 위의 폴더를 유지합니다. |
| `postman` | HTTP와 GraphQL | Postman Collection v2.1 파일, 또는 컬렉션과 그 환경이 든 폴더. |
| `insomnia` | HTTP, GraphQL, WebSocket, Socket.IO, gRPC | Insomnia v5 파일. |
| `bruno` | HTTP와 GraphQL | Bruno 컬렉션 폴더. |

형식이 담을 수 없는 것은 표준 오류에 표시됩니다. 담을 수 없는 요청(`left out:`)과, 응답 캡처나 다른 도구에 없는 동적 값처럼 변환 과정에서
바뀌는 부분이 해당됩니다.

<strong>비밀 값은 절대 기록되지 않습니다.</strong> 비밀 변수는 이름만 내보냅니다. 비밀 변수가 아니라 인증 또는 헤더 필드에 직접 입력한 자격 증명은
그대로 기록되므로 Echolot이 경고합니다.

Echolot은 내보내는 원본 작업 공간을 덮어쓰거나, 그 안이나 주변에 쓰지 않으며, `--force`를 지정하지 않으면 출력 경로에 있는 것을
교체하지 않습니다. 교체되는 항목은 휴지통으로 이동합니다.

### 옵션 [#options]

| 옵션 | 의미 |
| --- | --- |
| `-w`, `--workspace <folder>` | 작업 공간 폴더. 기본값은 현재 폴더입니다. |
| `--folder <path>` | 작업 공간의 이 폴더만 내보냅니다. 예: `users/admin`. |
| `--format <format>` | `echolot`, `postman`, `insomnia`, `bruno`. 필수입니다. |
| `--no-environments` | 환경을 제외합니다. |
| `--force` | 출력 경로에 있는 것을 교체합니다. |

## 종료 코드 [#exit-codes]

| 코드 | 조건 |
| --- | --- |
| `0` | 가져오기 또는 내보내기를 마쳤습니다. 경고가 있어도 바뀌지 않습니다. |
| `1` | 파일을 읽거나 쓸 수 없습니다. |
| `64` | 알 수 없는 형식, 또는 `--force` 없이 이미 존재하는 출력 경로. |
