# 일반용 이벤트 상세 API 클라이언트 구현 프롬프트 아래 프롬프트는 이번에 구현한 서버 계약이다. 운영 배포 완료를 의미하지 않는다. ```text 기존 앱의 네트워크 계층과 화면 패턴을 사용해 일반 사용자용 이벤트 상세 조회를 연결해 주세요. 관리자 상세 API를 만들거나 기존 이벤트 목록/팝업 API를 변경하지 마세요. [요청] GET {기존 API_BASE_URL}/api/v2/events/{id} - id: 기존 이벤트 목록/배너의 이벤트 id. 양수 64비트 정수이며 필수입니다. - 요청 본문과 query parameter는 없습니다. - 비로그인 호출이 가능합니다. 비로그인에는 Authorization 헤더를 보내지 마세요. - 로그인 시 기존 Authorization: Bearer {accessToken}을 사용하세요. - 오류 메시지 언어는 기존 Accept-Language 정책을 따릅니다. - 이벤트 언어는 Accept-Language가 아니라 서버의 국가 판정에 따릅니다. CloudFront-Viewer-Country 및 기존 서버 보정 정책을 사용하므로 국가를 임의로 바꾸지 마세요. [성공: HTTP 200, application/json] { "success": true, "message": null, "data": { "id": 123, "thumbnailImageUrl": "https://cdn.example.com/event/thumbnail.png", "detailImageUrl": "https://cdn.example.com/event/detail.png", "popupImageUrl": null, "link": "https://example.com/promotion" }, "errorProperty": null } - data는 배열이 아닌 이벤트 단일 객체입니다. - id: 정수, thumbnailImageUrl: 문자열. - detailImageUrl, popupImageUrl, link: 문자열 또는 null. - title, content, startDate, endDate, lang, isAdult, isPopup, totalCount는 반환하지 않습니다. - 이미지 URL은 서버가 구성한 값을 사용하고 CDN 주소를 다시 붙이지 마세요. - link는 이미지 URL과 별개인 이동 목적지이며 저장값 그대로 반환합니다. - 상세 이미지가 null이어도 link가 있는 정상 이벤트일 수 있습니다. - 이미지와 link가 모두 있을 때의 우선순위나 자동 이동은 API가 결정하지 않습니다. 기존 앱의 표시/이동 정책을 유지하고, 임의로 자동 리다이렉트를 추가하지 마세요. - 서버는 link의 URL 형식이나 허용 스킴을 검증하지 않습니다. 링크 열기 시 기존 앱의 안전한 외부 URL 처리 정책을 적용하세요. [조회 불가: HTTP 200] { "success": false, "message": "잘못된 요청입니다.", "data": null, "errorProperty": null } - 미존재 ID, 0/음수 ID, 비활성, 시작 전/종료 후, 언어 불일치, 성인 조건 불일치가 동일한 응답입니다. - 숫자가 아니거나 Long 범위를 넘는 id는 HTTP 200 실패 응답과 기존 공통 오류 메시지를 반환합니다. - HTTP 200만으로 성공 판정하지 말고 success=true와 유효한 data를 확인하세요. - message는 지역화되므로 문구로 오류 유형을 분기하지 마세요. - 서버 내부 messageKey는 응답에 없으며 미존재와 비노출 사유를 구별할 수 없습니다. - 이 API의 조회 불가가 HTTP 404라고 가정하지 마세요. - 네트워크 오류와 비정상 HTTP 상태/인증 오류는 기존 앱의 공통 처리 정책을 유지하세요. 모든 오류 응답이 위 JSON 형태라고 가정하지 마세요. [서버 노출 정책: 기존 GET /event와 동일] - 활성이고 시작 시각 <= 현재 시각 <= 종료 시각인 이벤트만 조회됩니다. - 서버 판정 국가가 JP이면 JA 이벤트, 그 외에는 KO 이벤트만 조회됩니다. - 비로그인/성인 미인증 회원: isAdult=null 또는 false 이벤트. - 성인 인증 회원: isAdult=null 또는 true 이벤트. 기존 정책상 false 이벤트는 제외됩니다. - 관리자 계정: 성인 조건만 생략하며 활성/기간/언어 조건은 유지됩니다. - 위 정책은 서버가 적용합니다. 클라이언트가 목록과 다른 우회 조회를 구현하지 마세요. - 로그인 상태/국가가 바뀌면 이전 조회 결과를 무조건 재사용하지 마세요. [클라이언트 수용 기준] - 이벤트 id로 상세 API를 호출해 loading/success/unavailable/network-error를 구분합니다. - nullable 이미지/link 및 링크만 있는 이벤트를 정상 처리합니다. - HTTP 200 success=false에서도 기존 데이터를 성공 화면으로 표시하지 않습니다. - 로그인 여부에 따른 헤더와 실제 서버 결과를 사용하고, 응답에 없는 제목/본문/날짜를 만들어 내지 않습니다. - 기존 목록 GET /event, 팝업 GET /event/popup, 관리자 API는 그대로 유지합니다. ```