계정 및 문서 접근
사용 중인 API 계정이 소유한 번호이동 프로젝트에서 기존 첨부 파일을 다운로드합니다. 허용된 IP 주소에서 활성화된 API 계정으로 HTTPS 를 통해 접속하세요. 프로젝트가 삭제되지 않은 상태여야 합니다. 문서 ID는 해당 프로젝트 안에서 조회되며, 어디서나 공개적으로 접근할 수 있는 다운로드 링크가 아닙니다.
문서 식별
프로젝트 상세 응답을 확인하고 다음 목록의 항목을 사용하세요: uploads. 항목에는 숫자형 id, 원래 파일 이름, 저장된 확장자 및 상대 URL인 download_url이 포함됩니다. 프로젝트의 uniqueid와 해당 업로드 ID를 사용하세요. 프로젝트의 숫자형 행 ID나 전화번호 행 ID를 사용해서는 안 됩니다.
반환된 상대 URL은 설정된 신뢰할 수 있는 API 호스트를 기준으로만 해석하세요. 다운로드에도 동일한 계정 인증이 필요합니다. 문서 메타데이터가 있다고 해서 인증 없는 접근이 허용되지는 않습니다.
요청 전송 및 응답 저장
다음 변수를 설정하세요: PROJECT_ID 및 DOCUMENT_ID. 값은 사용 중인 계정의 프로젝트에서 가져오세요. 프로젝트 ID는 URL 인코딩하세요. 이 예제는 첨부 파일 이름을 신뢰하지 않고 고정된 로컬 출력 이름을 사용하여 바이트와 응답 헤더를 별도로 저장합니다.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--dump-header document-headers.txt \
--output porting-document.bin \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/document/$DOCUMENT_ID"요청은 본문이 없는 GET 입니다. 첨부 파일 하나를 통째로 읽으며, 이 엔드포인트에만 적용되는 페이지 매김, JSON 래퍼 또는 문서화된 범위 지정 다운로드 규약은 없습니다.
바이너리 응답 및 헤더
성공 시 본문은 기존 저장 형식의 디코딩 단계를 거친 첨부 파일의 저장된 바이트이며, base64 나 JSON 응답 객체가 아닙니다. 이 메서드는 저장된 파일 이름에서 큰따옴표를 제거하여 첨부 파일용 Content-Disposition 을 전송합니다. 이 헤더가 표준에 맞게 인코딩되어 있거나 안전한 로컬 파일 경로라는 보장은 없습니다. 저장할 파일 이름은 직접 지정하세요.
| 저장된 확장자 | Content-Type |
|---|---|
| application/pdf | |
| png | image/png |
| jpg, jpeg | image/jpeg |
| doc | application/msword |
| 기타 값 | application/octet-stream |
확장자를 비교할 때는 대소문자를 구분하지 않습니다. MIME 유형은 저장된 확장자에 따라 선택됩니다. 내용을 검사하여 선택하는 것이 아니며, 문서가 유효하다고 보장하는 것도 아닙니다.
다운로드한 파일 확인
- HTTP 상태와 응답 헤더를 모두 확인하세요. 인증 또는 조회 오류가 발생하면 파일 대신 JSON 형식의 API 응답이 반환될 수 있습니다. 본문이 비어 있지 않거나 출력 파일이 저장되었다는 이유만으로 PDF 다운로드에 성공했다고 판단하지 마세요.
- 본문이 JSON 형식의 오류라면 다음 항목을 확인하세요:
status.code및status.msg. 오류 출력은 받으려는 문서와 별도로 보관하세요. - 받은 파일이 비어 있지 않고 예상한 유형으로 열리는지 확인하세요. 원본을 보관하고 있다면 사본을 신뢰하여 사용하기 전에 체크섬을 비교하세요.
- 결과가 비어 있거나 유효하지 않거나 원본과 다르면 작업을 중단하고 지원팀에 저장된 첨부 파일을 확인해 달라고 요청하세요. 다운로드를 반복해도 저장소는 복구되지 않습니다.
기존 저장 형식과의 호환성
현재 API 업로드 경로와 검토된 포털 및 기존 업로드 쓰기 처리는 문서 바이트를 이스케이프하여 저장합니다. 이 다운로드 처리는 해당 이스케이프를 되돌립니다. 실제 핸들러를 사용한 오프라인 테스트에서는 이 저장 형식의 모든 바이트 값과 문자 그대로의 역슬래시가 보존됩니다.
이는 과거의 모든 레코드나 외부에서 가져온 모든 레코드에 대한 보장이 아닙니다. 핸들러는 항상 저장된 BLOB을 디코딩하며, 예상한 이스케이프 처리 없이 레코드를 가져왔는지는 감지하지 않습니다. 또한 레코드에 저장된 BLOB이 없더라도 파일 경로로 대체하여 처리하지 않습니다. 이러한 레코드는 변경된 바이트나 빈 바이트 결과를 생성할 수 있습니다. 고객 문서를 변경하거나 메타데이터가 있다는 이유로 파일을 받을 수 있다고 가정하지 말고, 결과를 확인한 후 지원팀에 해당 첨부 파일의 조사를 요청하세요.
현재 포털은 이 API 경로를 먼저 사용하며 추가적인 로컬 대체 처리도 수행합니다. 포털에서 다운로드에 성공했다고 해서 모든 기존 레코드를 이 API 를 통해 직접 다운로드할 수 있다는 뜻은 아닙니다.
오류 및 처리 영향
프로젝트가 없거나 삭제되었거나 사용 중인 계정의 소유가 아니면 프로젝트를 찾을 수 없다는 메시지와 함께 API 코드 404가 반환됩니다. 소유한 프로젝트 안에 해당 업로드가 없으면 문서를 찾을 수 없다는 메시지와 함께 API 코드 404가 반환됩니다. API 오류 본문과 HTTP 상태를 모두 읽으세요. 레코드는 존재하지만 사용할 수 있는 저장된 바이트가 없는 경우, 이 핸들러에는 그 상태를 확실하게 나타내는 전용 ‘찾을 수 없음’ 응답이 없습니다.
검토된 이 엔드포인트는 첨부 파일 하나를 읽습니다. 문서를 업로드하거나 수정하거나 삭제하지 않으며, 번호이동 요청을 제출하거나 계정에서 요금을 차감하지도 않습니다. 번호이동 첨부 파일에는 신원, 청구 또는 권한 부여 정보가 포함될 수 있습니다. 권한이 부여된 계정의 업무 흐름 안에서만 취급하고 공개 로그, 분석 데이터 및 문서용 스크린샷에 포함하지 마세요.