플랫폼에 기준 URL 하나를 등록하면, 플랫폼은 그 아래의 세 경로를 부릅니다. 예시의 https://data.example.com/api 가 기준 URL 입니다.

#메서드 · 경로용도
1GET {base}/datasets데이터셋 목록 + 갱신 시각
2GET {base}/datasets/{id}/manifest파일 목록 + SHA-256. 변경 판단의 유일한 근거
3GET {base}/datasets/{id}/files/{file_id}파일 본문(바이너리)

경로 모양은 이대로여야 합니다. 대신 응답의 필드 이름은 여러분 규칙을 따라도 됩니다. 플랫폼은 뜻이 같은 여러 이름을 받아 줍니다(아래 필드 별칭).

공통 규약

항목요구
인증Authorization: Bearer <token> 헤더 하나. 토큰 없이 여는 서버라면 토큰 칸을 비워 등록하면 됩니다
전송HTTPS 권장. 플랫폼은 http:// · https:// 만 받고, 링크로컬 주소(169.254.x.x)는 거절합니다
응답 형식1 · 2번은 application/json(UTF-8) 객체, 3번은 바이너리
시각ISO 8601, 타임존 포함(예: 2026-07-21T09:30:00Z). 타임존이 없으면 UTC 로 읽습니다
오류HTTP 상태 코드 + JSON 본문. 인증 실패 401, 없는 자원 404. 본문 앞부분(200자)이 사용자 화면에 그대로 나갑니다
호출 빈도사람이 버튼을 누를 때만 부릅니다(예약 동기화 없음)
시간 제한요청 한 번이 30초 안에 응답을 시작해야 합니다. 큰 파일도 읽기 단위로 재므로 전송이 길어지는 것은 괜찮습니다

1. 데이터셋 목록

curl -H "Authorization: Bearer $TOKEN" \
  "https://data.example.com/api/datasets?page=1&page_size=50&updated_after=2026-07-01T00:00:00Z"
{
  "items": [
    {
      "id": "ds-inspect-2026w29",
      "name": "라인 검사 이미지 2026-W29",
      "modality": "image",
      "file_count": 412,
      "size_bytes": 1073741824,
      "updated_at": "2026-07-21T09:30:00Z"
    }
  ],
  "page": 1,
  "total": 3
}
필드필수설명
id필수변하지 않는 고유 ID. 이름이 바뀌어도 유지돼야 합니다. 플랫폼이 다시 동기화할 대상을 찾는 키입니다
name권장화면에 보일 이름. 없으면 id 를 씁니다
modality권장image · pointcloud · timeseries · tabular. 새 데이터셋의 기본 모달리티가 됩니다
file_count · size_bytes권장선택 화면 표시용
updated_at권장파일이 추가 · 변경 · 삭제될 때마다 바뀌어야 합니다. 화면의 "원격 갱신 시각" 과 증분 조회에 씁니다
  • 플랫폼은 page(1부터)와 page_size 를 보냅니다. 지원하지 않으면 무시하고 전부 돌려줘도 됩니다. total 을 주면 화면이 "더 불러오기" 를 판단합니다.
  • updated_after 를 주면 그 시각 이후 바뀐 것만 돌려주세요(권장).
  • 연결 확인은 page=1&page_size=1 로 한 번 부릅니다.

2. 매니페스트

curl -H "Authorization: Bearer $TOKEN" \
  "https://data.example.com/api/datasets/ds-inspect-2026w29/manifest"
{
  "dataset_id": "ds-inspect-2026w29",
  "annotation_format": "coco",
  "classes": [{ "id": 0, "name": "defect_a" }, { "id": 1, "name": "defect_b" }],
  "files": [
    {
      "file_id": "f-0001",
      "filename": "20260721_line3_0001.png",
      "kind": "image",
      "size_bytes": 2493833,
      "sha256": "9f8a1c…",
      "meta": { "line": "line-3", "measured_at": "2026-07-21T09:30:12+09:00" }
    }
  ]
}
필드필수설명
files[].file_id필수다운로드 경로에 쓰는 변하지 않는 파일 키. 같은 파일의 내용이 바뀌어도 유지하세요(그래야 "변경" 으로 판정돼 같은 행이 교체됩니다)
files[].filename필수확장자를 포함한 파일 이름. 플랫폼은 확장자로 파일 종류를 판정합니다
files[].sha256사실상 필수본문의 SHA-256 (16진, 대소문자 무관). 없으면 그 파일은 매번 다시 받습니다
files[].size_bytes권장진행률 표시용
files[].kind참고기록만 합니다. 실제 종류는 확장자로 정합니다
files[].meta선택파일별 메타. 플랫폼 파일의 meta.source 에 그대로 보관합니다
annotation_format · classes선택기록만 하고 해석하지 않습니다. 라벨은 받은 어노테이션 파일을 플랫폼 검증기가 직접 읽습니다

3. 파일 본문

curl -H "Authorization: Bearer $TOKEN" -o 0001.png \
  "https://data.example.com/api/datasets/ds-inspect-2026w29/files/f-0001"
  • 파일 본문을 그대로 스트리밍합니다. Content-Type 은 무엇이든 됩니다.
  • 리다이렉트를 따라가므로, 본문 대신 presigned URL 로 302 를 돌려줘도 됩니다.
  • 이어받기(Range)는 아직 쓰지 않습니다. 실패한 파일은 다음 동기화에서 통째로 다시 받습니다.
  • 파일 하나는 2 GiB 까지입니다(서버 설정으로 바꿀 수 있음).

오류 응답

// 401
{ "error": "invalid_token", "message": "토큰이 만료되었습니다." }
// 404
{ "error": "dataset_not_found", "message": "ds-xxxx 를 찾을 수 없습니다." }
// 429 (Retry-After 헤더를 함께 주면 좋습니다)
{ "error": "rate_limited", "message": "잠시 후 다시 시도해 주십시오." }

플랫폼은 이 본문을 해석하지 않고 앞부분을 사용자에게 보여 줍니다. 원인이 드러나는 한 문장을 담아 주세요.

필드 별칭

응답 필드 이름은 아래 중 무엇을 써도 됩니다. 앞에 있는 것부터 찾고, 비어 있지 않은 첫 값을 씁니다.

받는 이름
목록 배열items · datasets · results · data
총 개수total · count · total_count
데이터셋 idid · dataset_id · datasetId
이름name · title
모달리티modality · type
파일 수file_count · fileCount · files
크기size_bytes · sizeBytes · size
갱신 시각updated_at · updatedAt · modified_at · last_modified (매니페스트는 updated_at · updatedAt)
파일 배열files · items · entries
파일 idfile_id · fileId · id
파일 이름filename · name · path
체크섬sha256 · checksum_sha256 · checksum · hash
파일 종류kind · type
클래스 표classes · categories · labels
어노테이션 형식annotation_format · annotationFormat · label_format

이 표에 없는 이름이 꼭 필요하면 플랫폼 팀에 알려 주세요. 한 줄 추가로 받을 수 있습니다.

지원하는 파일 형식

종류형식
이미지PNG · JPG · BMP · TIFF · WebP
시계열 · 표CSV · TSV · Parquet (첫 행 헤더 필수)
포인트클라우드PLY. 포인트별 정수 라벨 속성이 있으면 자동으로 찾아 클래스를 셉니다
어노테이션COCO JSON · LabelMe JSON · VOC XML

CSV · Parquet 는 확장자로 시계열과 표를 가를 수 없으므로, 목록의 modalitytabular 로 알려 주거나 데이터셋을 만들 때 모달리티를 직접 고르게 해 주세요.

연동 확인 체크리스트 (제공 측)

#확인통과하지 못하면
1토큰으로 목록이 200 인가인증 방식부터 다시 맞춘다
2updated_after 가 동작하는가증분 조회 없이 전체 조회로 쓴다
3매니페스트의 sha256 이 실제 파일과 같은가파일이 경고와 함께 탈락한다
4받은 파일이 손상 없이 열리는가전송 계층을 확인한다
5같은 데이터셋을 두 번 동기화하면 두 번째는 받은 파일 0 인가증분 동기화가 성립하지 않는다(file_id 가 바뀌는지 확인)

2026-09-21 기준 플랫폼에 맞춰 작성했습니다.

© Geo-MLOps