1. 기본 정보
| Base URL | https://food.onebiohealth.co.kr |
|---|---|
| 프로토콜 | HTTPS / REST · 요청·응답 application/json (UTF-8) |
| 인증 | 공개 식단 생성 API는 인증 없이 호출 인증 추천 식단 목록 API는 Authorization: Bearer <토큰> 필요
(토큰은 로그인 후 서비스 화면 상단 「API 연동용 액세스 토큰」에서 확인) |
| 운영 | 온프레미스 서버에서 처리 — 개인·건강정보 외부 전송 없음 |
2. API 목록
| 메서드 | 경로 | 설명 | 인증 |
|---|---|---|---|
| POST | /api/meal-plan | 식단 생성 — 질환별 맞춤 식단을 요청 일수만큼 생성 | 공개 |
| GET | /api/meal-plan/meta | 지원 질환·알레르기·활동량·진료지침 출처 | 공개 |
| POST | /api/meal-plans | 추천 식단 저장 | 필요 |
| GET | /api/meal-plans | 추천 식단 목록 | 필요 |
| GET | /api/meal-plans/{id} | 추천 식단 상세(전체 식단·검증·근거) | 필요 |
| DELETE | /api/meal-plans/{id} | 추천 식단 삭제 | 필요 |
| GET | /api/health | 서비스 상태 점검 | 공개 |
| GET | /api/foods | 음식 검색(식약처 식품영양성분DB) | 공개 |
| POST | /api/analyze | (부가) 식사 사진 반찬 인식·영양 산출 | 공개 |
※ 계정·기록 API(/api/signup · /api/login · /api/me · /api/profile · /api/meals)는 실행형 문서에서 확인할 수 있습니다.
/api/meals는 실제 섭취 기록으로, 추천 식단 목록(/api/meal-plans)과는 별개 자원입니다.
3. 식단 생성 — 요청
| 필드 | 타입 | 설명 |
|---|---|---|
| sex | string | 성별 M / F (기본 M) |
| age | int | 연령(세), 기본 55 |
| height / weight | number | 키(cm) / 몸무게(kg), 기본 168 / 70 |
| act | string | 활동량 low / mid / high |
| dz | string[] | 대사성질환 — 고혈압 · 당뇨병 · 이상지질혈증 (복수 선택) |
| alg | string[] | 알레르기 — 우유·계란·대두·밀·갑각류·생선·견과·돼지고기 |
| dislike | string | 기피식품(쉼표 구분) |
| sbp / ldl | int | 수축기혈압 / LDL — 검진수치로 상한 자동 강화 |
| days | int | 생성 일수 1~365 (기본 30) — 10을 보내면 10일치, 30이면 30일치 반환 |
| seed | int | 재생성 카운터 — 같은 값이면 같은 식단이 재현됨 |
4. 식단 생성 — 응답
| 항목 | 내용 |
|---|---|
| targets | 목표열량 · 나트륨 상한 · 포화지방 상한 · 식이섬유 하한 · 콜레스테롤 상한 · 당류 상한 · BMI · 적용 질환 |
| days[ ] | 일자별 식단 — 끼니(아침·점심·저녁·간식)별 음식명·중량(g)·영양성분, 일 합계, 적합도 점수 |
| summary | requestedDays(요청 일수) · days(반환 일수) · 평균 적합도 · 일평균 영양 |
| verification[ ] | 영양소별 기준 충족 일수 · 충족률 (과업③ 검증 근거) |
| citations[ ] | 생성 근거 — 질환별 진료지침 인용 |
| excluded | 알레르기·금기·기피로 배제된 식품 건수 및 목록 |
5. 호출 예시
① 식단 생성 (인증 불필요)
curl -X POST "https://food.onebiohealth.co.kr/api/meal-plan" -H "Content-Type: application/json" -d '{"sex":"M","age":55,"height":168,"weight":70,"act":"low",
"dz":["고혈압"],"sbp":150,"days":30}'
→ 목표열량 2,150kcal · 나트륨 상한 2,000mg이 산출되고 30일 식단이 반환됩니다.
② 추천 식단 목록 (토큰 필요)curl -X GET "https://food.onebiohealth.co.kr/api/meal-plans" -H "Authorization: Bearer <액세스 토큰>"③ 추천 식단 저장
curl -X POST "https://food.onebiohealth.co.kr/api/meal-plans" -H "Authorization: Bearer <액세스 토큰>" -H "Content-Type: application/json" -d '{"title":"고혈압 30일 식단","plan": <식단 생성 응답 전체>}'
6. 오류 코드
| 코드 | 의미 |
|---|---|
| 200 | 정상 처리 |
| 400 | 요청 형식 오류(예: 저장할 식단 없음) |
| 401 | 인증 필요 또는 토큰 만료 |
| 404 | 대상 없음 — 다른 사용자의 식단은 조회되지 않음 |
| 422 | 입력값 검증 실패(예: days 범위 초과) |
| 500 | 서버 내부 오류(사유 포함) |
※ 지원하지 않는 질환코드나 문자열 형태의 수치가 전달되어도 서버가 정규화하여 처리하므로 오류 없이 식단이 반환됩니다.