Project

일반

사용자정보

2025/20.개발산출물/02.개발문서(설계서,설치가이드) » IITP-DABT-Platform_API-규격서-v1.md

이환희, 2025-12-23 02:03

 

/* PDF 변환 시 페이지 머리글 및 번호 표시 */
@page {
@top-left {
content: "IITP DABT Platform API 규격서";
font-size: 10pt;
color: #666;
font-family: Arial, sans-serif;
}
@bottom-center {
content: counter(page) " / " counter(pages);
font-size: 10pt;
color: #666;
font-family: Arial, sans-serif;
}
}

IITP DABT Platform


API 규격서(자립 허브)


문서 버전: 1.0.0
작성일: 2025-11-06
(주)스위트케이


문서 History

버전 날짜 변경 내용 작성자
v1.0.0 2025-11-06 최초 작성 (주)스위트케이

목차

  1. 개요
  2. 공통 사항
  3. API 상세 규격
  4. 부록

1. 개요

1.1 프로젝트 소개

IITP 장애인 데이터 플랫폼 , 장애인 자립 허브는 장애인의 자립생활을 지원하기 위한 종합 데이터 플랫폼입니다. 본 문서는 이 플랫폼의 Backend API 규격을 상세히 설명합니다.

1.2 주요 기능

  • 데이터 조회: 장애인 관련 다양한 데이터셋 조회 및 검색
  • 자가진단: 장애인의 개인 특성에 맞춘 정책/기관/시설 추천
  • 데이터 분석: 자립 테마별, 데이터 유형별 정보 제공

2. 공통 사항

2.1 기본 정보

2.1.1 Base URL

http://localhost:30000/api/v1

2.1.2 HTTP Method

모든 API는 RESTful 원칙을 따르며, 다음 HTTP 메서드를 사용합니다:

  • GET: 데이터 조회

2.1.3 Content-Type

모든 API 요청과 응답은 JSON 형식을 사용합니다.

Content-Type: application/json

2.2 공통 응답 구조

2.2.1 성공 응답 (Success Response)

모든 API는 성공 시 다음 구조로 응답합니다:

단일 데이터 응답

{
  "success": true,
  "data": {
    // 실제 데이터
  }
}

페이지네이션 응답

{
  "success": true,
  "data": {
    "items": [
      // 배열 데이터
    ],
    "total": 100,
    "page": 1,
    "limit": 20,
    "totalPages": 5
  }
}

직접 배열 반환 (페이징 없음)

[
  {
    // 아이템 1
  },
  {
    // 아이템 2
  }
]

2.2.2 에러 응답 (Error Response)

모든 API는 실패 시 다음 구조로 응답합니다:

{
  "success": false,
  "error": {
    "code": "11000",
    "message": "알 수 없는 오류가 발생했습니다.",
    "details": {
      // 추가 정보 (선택적)
    }
  }
}

2.3 에러 코드

2.3.1 HTTP 상태 코드

상태 코드 의미 설명
200 OK 요청 성공
400 Bad Request 잘못된 요청
404 Not Found 리소스를 찾을 수 없음
408 Request Timeout 요청 시간 초과
500 Internal Server Error 서버 내부 오류
503 Service Unavailable 서비스 이용 불가

2.3.2 상세 에러 코드

코드 메시지 상태 코드 설명
11000 알 수 없는 오류가 발생했습니다. 500 예상치 못한 오류
11001 입력 데이터가 올바르지 않습니다. 400 유효성 검증 실패
11002 데이터베이스 오류가 발생했습니다. 500 DB 관련 오류
11003 네트워크 오류가 발생했습니다. 503 네트워크 관련 오류
12000 잘못된 요청입니다. 400 요청 형식 오류
12001 필수 필드가 누락되었습니다. 400 필수 파라미터 누락
12002 잘못된 파라미터입니다. 400 파라미터 오류
12003 요청 시간이 초과되었습니다. 408 타임아웃
19000 서버 내부 오류가 발생했습니다. 500 서버 오류
19001 서비스가 일시적으로 사용할 수 없습니다. 503 서비스 중단
19002 시스템 점검 중입니다. 잠시 후 다시 시도해주세요. 503 점검 모드

2.4 페이지네이션

2.4.1 페이지네이션 파라미터

파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호 (0부터 시작)
pageSize number 선택 20 페이지당 항목 수

2.4.2 페이지네이션 제약사항

  • 최소 페이지 크기: 1
  • 최대 페이지 크기: 100
  • 페이지 사이즈 옵션: 10, 20, 50, 100

2.4.3 페이지네이션 응답 구조

{
  "items": [...],
  "total": 100,
  "page": 0,
  "limit": 20,
  "totalPages": 5
}
필드 타입 설명
items Array 데이터 배열
total number 전체 항목 수
page number 현재 페이지 번호
limit number 페이지당 항목 수
totalPages number 전체 페이지 수

3. API 상세 규격

3.1 공통 API (Common APIs)

3.1.1 헬스 체크

서버 상태를 확인합니다.

엔드포인트

GET /health

요청

  • Query Parameters: 없음

응답 예시

{
  "success": true,
  "data": {
    "status": "ok",
    "timestamp": "2025-01-20T12:00:00.000Z",
    "uptime": 3600
  }
}

응답 필드 설명

필드 타입 설명
status string 서버 상태 (ok 또는 error)
timestamp string 현재 시각 (ISO 8601)
uptime number 서버 가동 시간 (초)

3.1.2 버전 정보 조회

서버 버전 및 빌드 정보를 조회합니다.

엔드포인트

GET /version

요청

  • Query Parameters: 없음

응답 예시

{
  "success": true,
  "data": {
    "version": "1.0.0",
    "buildDate": "2025-01-20T10:00:00.000Z",
    "buildNumber": "1",
    "environment": "production"
  }
}

응답 필드 설명

필드 타입 설명
version string 버전 번호
buildDate string 빌드 일시 (ISO 8601)
buildNumber string 빌드 번호
environment string 실행 환경 (development, production 등)

3.2 데이터 조회 API (Data APIs)

3.2.1 최신 데이터 리스트 조회

최근 등록된 데이터를 조회합니다.

엔드포인트

GET /data/summary/latest

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
limit number 선택 6 조회할 데이터 개수 (최대: 12)

응답 예시

[
  {
    "id": 1,
    "title": "장애인 등록 현황 데이터",
    "data_type": "basic"
  },
  {
    "id": 2,
    "title": "장애인 이동권 관련 데이터",
    "data_type": "poi"
  }
]

응답 필드 설명

필드 타입 설명
id number 데이터 ID
title string 데이터 제목
data_type string 데이터 유형 (basic, poi, emp)

데이터 유형 코드

코드 설명
basic 기초 데이터
poi 이동권 데이터
emp 고용 데이터

3.2.2 자립테마별 데이터 건수 조회

자립테마별 데이터 건수를 조회합니다.

엔드포인트

GET /data/counts/themes

요청

  • Query Parameters: 없음

응답 예시

{
  "phys": 150,
  "emo": 80,
  "econ": 200,
  "soc": 120
}

응답 필드 설명

필드 타입 설명
phys number 신체적 자립 데이터 건수
emo number 정서적 자립 데이터 건수
econ number 경제적 자립 데이터 건수
soc number 사회적 자립 데이터 건수

자립테마 코드

코드 설명
phys 신체적 자립
emo 정서적 자립
econ 경제적 자립
soc 사회적 자립

3.2.3 데이터 유형별 건수 조회

데이터 유형별 건수를 조회합니다.

엔드포인트

GET /data/counts/types

요청

  • Query Parameters: 없음

응답 예시

{
  "basic": 250,
  "poi": 100,
  "emp": 150
}

응답 필드 설명

필드 타입 설명
basic number 기초 데이터 건수
poi number 이동권 데이터 건수
emp number 고용 데이터 건수

3.2.4 데이터 검색

제목, 자립테마, 데이터 유형을 기준으로 데이터를 검색합니다.

엔드포인트

GET /data/search

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
q string 선택 - 제목 검색어
themes string 선택 - 자립테마 코드 (콤마 구분)
types string 선택 - 데이터 유형 코드 (콤마 구분)
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수
sort string 선택 recent 정렬 옵션 (recent, alpha)

정렬 옵션

코드 설명
recent 최신순 (등록일 내림차순)
alpha 가나다순 (제목 오름차순)

요청 예시

GET /data/search?q=장애인&themes=phys,emo&types=basic&page=0&pageSize=20&sort=recent

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "title": "장애인 등록 현황 데이터",
        "data_type": "basic",
        "self_rlty_type": "phys",
        "category": "등록",
        "data_keywords": "장애인,등록,현황",
        "sys_tbl_id": "sys_tbl_001",
        "src_org_name": "보건복지부",
        "src_latest_chn_dt": "2025-01-15",
        "sys_data_reg_dt": "2025-01-10"
      }
    ],
    "total": 50,
    "page": 0,
    "limit": 20,
    "totalPages": 3
  }
}

응답 필드 설명

필드 타입 설명
id number 데이터 ID
title string 데이터 제목
data_type string 데이터 유형
self_rlty_type string 자립 유형 (선택적)
category string 카테고리 (선택적)
data_keywords string 키워드 (콤마 구분, 최대 3개)
sys_tbl_id string 시스템 테이블 ID
src_org_name string 출처 기관명
src_latest_chn_dt string 최종 변경일
sys_data_reg_dt string 데이터 등록일

3.2.5 자립 테마 메타데이터 조회

모든 자립 테마의 메타데이터를 조회합니다.

엔드포인트

GET /data/themes

요청

  • Query Parameters: 없음

응답 예시

[
  {
    "id": "phys",
    "name": "신체적 자립",
    "description": "신체적 자립 수준 및 건강 상태 등 신체 기능과 관련된 데이터",
    "total_count": 150
  },
  {
    "id": "emo",
    "name": "정서적 자립",
    "description": "심리적 안정 및 지원 등 정서 안정과 관련된 데이터",
    "total_count": 80
  },
  {
    "id": "econ",
    "name": "경제적 자립",
    "description": "장애인 진로교육 및 고용 현황 등 일자리와 관련된 데이터",
    "total_count": 200
  },
  {
    "id": "soc",
    "name": "사회적 자립",
    "description": "사회복지시설 및 지역사회 참여 현황 등 사회적 기능과 관련된 데이터",
    "total_count": 120
  }
]

응답 필드 설명

필드 타입 설명
id string 테마 코드
name string 테마 한글명
description string 테마 설명
total_count number 해당 테마의 전체 데이터 건수

3.2.6 전체 테마 아이템 조회

모든 테마의 데이터 아이템을 조회합니다 (페이지네이션 지원).

엔드포인트

GET /data/themes/items

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수
sort string 선택 recent 정렬 옵션

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "title": "장애인 등록 현황",
        "data_type": "basic",
        "self_rlty_type": "phys",
        "sys_tbl_id": "sys_tbl_001",
        "src_org_name": "보건복지부",
        "src_latest_chn_dt": "2025-01-15",
        "sys_data_reg_dt": "2025-01-10"
      }
    ],
    "total": 500,
    "page": 0,
    "limit": 20,
    "totalPages": 25
  }
}

3.2.7 특정 자립 테마별 리스트 조회

특정 자립 테마에 속한 데이터를 조회합니다.

엔드포인트

GET /data/themes/{theme}/items

경로 파라미터

파라미터 타입 필수 설명
theme string 필수 자립 테마 코드 (phys, emo, econ, soc)

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수
sort string 선택 recent 정렬 옵션

요청 예시

GET /data/themes/phys/items?page=0&pageSize=20&sort=recent

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "title": "장애인 복지시설 현황",
        "data_type": "basic",
        "self_rlty_type": "phys",
        "sys_tbl_id": "sys_tbl_001",
        "src_org_name": "보건복지부",
        "src_latest_chn_dt": "2025-01-15",
        "sys_data_reg_dt": "2025-01-10"
      }
    ],
    "total": 150,
    "page": 0,
    "limit": 20,
    "totalPages": 8
  }
}

3.2.8 데이터 유형 메타데이터 조회

모든 데이터 유형의 메타데이터를 조회합니다.

엔드포인트

GET /data/types

요청

  • Query Parameters: 없음

응답 예시

[
  {
    "id": "basic",
    "name": "기초 데이터",
    "description": "장애인과 관련된 기본 통계 및 기초 자료",
    "total_count": 250
  },
  {
    "id": "poi",
    "name": "이동권 데이터",
    "description": "교통·보행 등 장애인 이동 및 접근성과 관련된 자료",
    "total_count": 100
  },
  {
    "id": "emp",
    "name": "고용 데이터",
    "description": "고용 현황, 취업 지원, 직업 활동과 관련된 자료",
    "total_count": 150
  }
]

응답 필드 설명

필드 타입 설명
id string 데이터 유형 코드
name string 데이터 유형 한글명
description string 데이터 유형 설명
total_count number 해당 유형의 전체 데이터 건수

3.2.9 전체 유형 아이템 조회

모든 유형의 데이터 아이템을 조회합니다 (페이지네이션 지원).

엔드포인트

GET /data/types/items

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수
sort string 선택 recent 정렬 옵션

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "title": "장애인 고용 통계",
        "data_type": "emp",
        "sys_tbl_id": "sys_tbl_002",
        "src_org_name": "고용노동부",
        "src_latest_chn_dt": "2025-01-15",
        "sys_data_reg_dt": "2025-01-10"
      }
    ],
    "total": 500,
    "page": 0,
    "limit": 20,
    "totalPages": 25
  }
}

3.2.10 특정 데이터 유형별 리스트 조회

특정 데이터 유형에 속한 데이터를 조회합니다.

엔드포인트

GET /data/types/{type}/items

경로 파라미터

파라미터 타입 필수 설명
type string 필수 데이터 유형 코드 (basic, poi, emp)

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수
sort string 선택 recent 정렬 옵션

요청 예시

GET /data/types/basic/items?page=0&pageSize=20&sort=recent

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "title": "장애인 등록 현황",
        "data_type": "basic",
        "sys_tbl_id": "sys_tbl_001",
        "src_org_name": "보건복지부",
        "src_latest_chn_dt": "2025-01-15",
        "sys_data_reg_dt": "2025-01-10"
      }
    ],
    "total": 250,
    "page": 0,
    "limit": 20,
    "totalPages": 13
  }
}

3.2.11 데이터 상세 정보 조회

특정 데이터의 상세 정보를 조회합니다.

엔드포인트

GET /data/{id}

경로 파라미터

파라미터 타입 필수 설명
id number 필수 데이터 ID

요청

  • Query Parameters: 없음

요청 예시

GET /data/1

응답 예시

{
  "success": true,
  "data": {
    "id": 1,
    "title": "장애인 등록 현황 데이터",
    "data_type": "basic",
    "self_rlty_type": "phys",
    "category": "등록",
    "sys_tbl_id": "sys_tbl_001",
    "data_desc": "장애인의 등록 현황 및 통계를 제공합니다.",
    "data_keywords": "장애인,등록,현황",
    "data_format": "CSV",
    "data_usage_scope": "공개",
    "src_org_name": "보건복지부",
    "src_latest_chn_dt": "2025-01-15",
    "sys_data_ref_dt": "2025-01-16",
    "sys_data_reg_dt": "2025-01-10",
    "open_api_url": "https://api.example.com/data/1"
  }
}

응답 필드 설명

필드 타입 설명
id number 데이터 ID
title string 데이터 제목
data_type string 데이터 유형
self_rlty_type string 자립 유형 (선택적)
category string 카테고리 (선택적)
sys_tbl_id string 시스템 테이블 ID
data_desc string 데이터 설명 (선택적)
data_keywords string 키워드 (콤마 구분, 최대 3개)
data_format string 데이터 포맷 (선택적)
data_usage_scope string 사용 범위 (선택적)
src_org_name string 출처 기관명
src_latest_chn_dt string 최종 변경일
sys_data_ref_dt string 시스템 참조 일자 (선택적)
sys_data_reg_dt string 데이터 등록일
open_api_url string OpenAPI 연동 URL

3.2.12 데이터 미리보기 조회

특정 데이터의 미리보기 샘플을 조회합니다.

엔드포인트

GET /data/{id}/preview

경로 파라미터

파라미터 타입 필수 설명
id number 필수 데이터 ID

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
limit number 선택 - 미리보기 데이터 개수 제한
offset number 선택 0 미리보기 데이터 오프셋

요청 예시

GET /data/1/preview?limit=10&offset=0

응답 예시

{
  "success": true,
  "data": {
    // OpenAPI 원본 응답 그대로 전달
    "data": [
      {
        "col1": "value1",
        "col2": "value2"
      }
    ]
  }
}

응답 필드 설명

  • OpenAPI 원본 응답 구조를 그대로 반환합니다.
  • 응답 구조는 데이터 소스에 따라 동적으로 결정됩니다.

3.3 자가진단 API (Self-Check APIs)

3.3.1 추천 정책 리스트 조회

사용자의 특성에 맞는 추천 정책을 조회합니다.

엔드포인트

GET /selfcheck/recommendations

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
gender string 선택 - 성별 코드 (male, female)
disLevel string 선택 - 장애정도 (mild, severe, unknown)
ageCond string 선택 - 연령 조건 (minor, adult, all)
themes string 선택 - 자립테마 코드 (콤마 구분)
limit number 선택 3 추천 개수 (최대: 10)

성별 코드

코드 설명
male 남성
female 여성

장애정도 코드

코드 설명
mild 경증
severe 중증
unknown 모름

연령 조건 코드

코드 설명
minor 미성년자
adult 성인
all 전체

요청 예시

GET /selfcheck/recommendations?gender=male&disLevel=mild&ageCond=adult&themes=phys,emo&limit=5

응답 예시

{
  "success": true,
  "data": [
    {
      "policy_id": 1,
      "category": "신체적 자립",
      "policy_name": "장애인 의료비 지원",
      "self_rlty_type": "phys",
      "region": "전국",
      "gender": "전체",
      "age_cond": "성인",
      "dis_level": "전체",
      "fin_cond": "의료급여자",
      "link": "https://example.com/policy/1"
    },
    {
      "policy_id": 2,
      "category": "경제적 자립",
      "policy_name": "장애인 직업능력개발 지원",
      "self_rlty_type": "econ",
      "region": "전국",
      "gender": "전체",
      "age_cond": "전체",
      "dis_level": "경증",
      "fin_cond": "국민기초생활수급자",
      "link": "https://example.com/policy/2"
    }
  ]
}

응답 필드 설명

필드 타입 설명
policy_id number 정책 ID
category string 카테고리
policy_name string 정책명
self_rlty_type string 자립 유형
region string 적용 지역 (선택적)
gender string 대상 성별 (선택적)
age_cond string 연령 조건 (선택적)
dis_level string 장애 정도 (선택적)
fin_cond string 재정 조건 (선택적)
link string 정책 상세 링크 (선택적)

3.3.2 자립 지원 정책 리스트 조회

자립 지원 정책 목록을 조회합니다 (페이지네이션 지원).

엔드포인트

GET /selfcheck/policies

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
gender string 선택 - 성별 코드
disLevel string 선택 - 장애정도
ageCond string 선택 - 연령 조건
themes string 선택 - 자립테마 코드 (콤마 구분)
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수

요청 예시

GET /selfcheck/policies?gender=male&disLevel=mild&page=0&pageSize=20

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "policy_id": 1,
        "category": "신체적 자립",
        "policy_name": "장애인 의료비 지원",
        "self_rlty_type": "phys",
        "region": "전국",
        "gender": "전체",
        "age_cond": "성인",
        "dis_level": "전체",
        "fin_cond": "의료급여자",
        "link": "https://example.com/policy/1"
      }
    ],
    "total": 100,
    "page": 0,
    "limit": 20,
    "totalPages": 5
  }
}

3.3.3 자립 지원 기관 리스트 조회

자립 지원 기관 목록을 조회합니다 (페이지네이션 지원).

엔드포인트

GET /selfcheck/providers

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수

요청 예시

GET /selfcheck/providers?page=0&pageSize=20

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "provider_id": 1,
        "provider_name": "서울장애인자립생활센터",
        "service_name": "자립생활 지원 서비스",
        "address": "서울특별시 강남구",
        "phone": "02-1234-5678",
        "description": "장애인의 자립생활을 지원하는 서비스를 제공합니다."
      }
    ],
    "total": 50,
    "page": 0,
    "limit": 20,
    "totalPages": 3
  }
}

응답 필드 설명

필드 타입 설명
provider_id number 기관 ID
provider_name string 기관명
service_name string 서비스명
address string 주소
phone string 전화번호 (선택적)
description string 설명 (선택적)

3.3.4 자립 지원 시설 리스트 조회

자립 지원 시설 목록을 조회합니다 (페이지네이션 지원).

엔드포인트

GET /selfcheck/facilities

요청

  • Query Parameters
파라미터 타입 필수 기본값 설명
page number 선택 0 페이지 번호
pageSize number 선택 20 페이지당 항목 수

요청 예시

GET /selfcheck/facilities?page=0&pageSize=20

응답 예시

{
  "success": true,
  "data": {
    "items": [
      {
        "facility_id": 1,
        "device": "장애인 화장실",
        "install_area": "서울",
        "install_site": "지하철역",
        "install_spot": "1층",
        "hang_dong": "강남구 역삼동",
        "address": "서울특별시 강남구 역삼동 123",
        "opening_hours": "05:00-24:00",
        "quantity": 2,
        "note": "휠체어 진입 가능"
      }
    ],
    "total": 200,
    "page": 0,
    "limit": 20,
    "totalPages": 10
  }
}

응답 필드 설명

필드 타입 설명
facility_id number 시설 ID
device string 시설명
install_area string 설치 지역 (선택적)
install_site string 설치 장소 (선택적)
install_spot string 설치 위치 (선택적)
hang_dong string 행정동 (선택적)
address string 주소 (선택적)
opening_hours string 운영 시간 (선택적)
quantity number 수량 (선택적)
note string 비고 (선택적)

4. 부록

4.1 공통 코드값

4.1.1 자립테마 (Theme)

코드 설명 약어
phys 신체적 자립 신체
emo 정서적 자립 정서
econ 경제적 자립 경제
soc 사회적 자립 사회

4.1.2 데이터 유형 (Data Type)

코드 설명 약어
basic 기초 데이터 기초
poi 이동권 데이터 이동권
emp 고용 데이터 고용

4.1.3 자립유형 (Self Related Type)

코드 설명 약어
basic 기초적 자립 기초
phys 신체적 자립 신체
emo 정서적 자립 정서
econ 경제적 자립 경제
soc 사회적 자립 사회

4.1.4 성별

코드 설명
male 남성
female 여성

4.1.5 장애정도

코드 설명
mild 경증
severe 중증
unknown 모름

4.1.6 연령 조건

코드 설명
minor 미성년자
adult 성인
all 전체

4.1.7 정렬 옵션

코드 설명
recent 최신순
alpha 가나다순

(16-16/39)