# 가져오기 (/ko/docs/get-started/importing)

Echolot은 다른 도구에서 이미 가지고 있는 요청, 폴더, 인증, 변수, 환경, 스크립트를 작업 공간으로 가져옵니다. 내용을 보고 형식을 판단하고, 자격 증명을
키체인으로 옮기며, 가져오지 못한 항목은 보고서로 알려 줍니다.

## Echolot이 가져오는 항목 [#what-echolot-imports]

| 형식 | 파일 | 가져오는 내용 |
| --- | --- | --- |
| **cURL** | 붙여넣거나 텍스트 파일에 든 `curl …` 명령 | 요청 하나: 메서드, 주소, 헤더, 본문, Basic 인증, 리디렉션과 TLS 검사 같은 설정. |
| **Postman** | 컬렉션 v2.0과 v2.1, 환경(`.json`) | 폴더, 요청, 인증, 컬렉션 변수, 사전 요청 및 테스트 스크립트. 환경은 [환경](/docs/workspaces/environments)이 됩니다. |
| **Insomnia** | v4 JSON 내보내기, v5 YAML 컬렉션 | 폴더, 요청, 인증, 환경. |
| **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의 동적 값은 가능한 경우 Echolot의 [변수와 동적 값](/docs/requests/dynamic-values)이 됩니다. |
| **Bruno** | 컬렉션 폴더(`bruno.json` 또는 `.bru` 파일 포함) | 폴더, 요청, 인증, 환경, 작성된 그대로의 스크립트와 테스트. |

컬렉션, 명세, HAR 파일, Bruno 폴더는 이름을 따서 만든 별도 폴더에 들어갑니다. cURL 명령은 요청 하나가 됩니다.

Claude Desktop, Claude Code, Cursor, VS Code, Codex의 MCP 서버 설정도 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의 사전 요청 및 테스트 스크립트는 그대로 가져오며 Echolot의 `pm.*` 샌드박스에서 실행됩니다. 앱은 가져온 스크립트를 사용자가 신뢰한 뒤에만 실행합니다.
보고서에 스크립트가 몇 개였는지 나오고, 스크립트가 필요한 첫 전송에서 검토하라고 묻습니다(**스크립트 검토…**). Bruno의 스크립트와 테스트는 작성된 그대로
가져오지만, Bruno의 `bru`, `req`, `res`는 Postman의 `pm`이 아니므로 실행하기 전에 수정이 필요할 수 있습니다.
[스크립트와 테스트](/docs/requests/scripts-and-tests)를 참고하십시오.

## 가져오지 못하는 항목 [#what-doesnt-come-across]

보고서는 다음 항목이 발생할 때마다 알려 줍니다.

| 형식 | 제외되거나 변경되는 항목 |
| --- | --- |
| cURL | 쿠키 파일, Echolot에 설정이 없는 옵션, 콜론이 없는 헤더. 파일에서 읽는 본문이나 양식 필드(`-d @file`, `-F field=@file`)는 요청을 보낼 때 그 파일에서 읽습니다. |
| Postman | Echolot에 없는 인증 유형. 파일 본문과 파일 필드: 파일을 다시 선택하십시오. |
| Insomnia | Echolot에 없는 종류의 항목. Echolot에 대응하는 것이 없는 템플릿 태그(`{% … %}`)는 텍스트로 남습니다. Echolot에 없는 인증 유형. 파일 본문과 필드. Echolot이 제공하지 않는 OAuth 2.0 그랜트는 인증 코드 그랜트가 됩니다. |
| OpenAPI | 요청에 담을 수 없는 위치의 매개변수, 담을 수 없는 유형의 요청 본문, OAuth 플로(인증을 직접 설정하십시오), 쿠키로 보내는 API 키(`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)를 참고하십시오.
