해당 제공되는 API 기반으로 당사에서 활용하기 위해서는, 해당 API로 당사 sftp 서버에도 연동을 받을 수 있을지 문의 드립니다.
이를 통해 파일 형태로 일정 주기 간격(daily, hourly 등)으로 비즈니스폼 응답 DB를 수신받을 수 있을지 기술 검토를 부탁드리고자 합니다.
5초 안에 다시 부르셔도 에러를 돌려드리지는 않습니다. 남은 대기 시간이 지난 뒤에 응답이 나가는 방식이라 클라이언트에서는 응답이 늦게 온 것처럼 보입니다.
대기가 응답 지연으로 흡수되는 구조라 호출 간격을 5초 이상으로 두고 설계하시는 편이 안전합니다.
2. 페이징 방식과 1회 최대 조회 건수
커서 방식입니다.
size: 한 번에 가져올 건수. 기본값 100, 최대 1,000
cursorId: 이어서 조회할 위치
응답의 hasNext가 true면 함께 내려온 nextCursor를 다음 요청의 cursorId에 넣어 다시 호출합니다. hasNext가 false면 마지막 페이지입니다.
1,000건이 넘는 응답은 이 방식으로 나눠 받으시면 됩니다.
3. 대량 조회 소요 시간
내부 측정에서 호출 한 번은 400~500ms 수준으로 나왔습니다. 다만 전체 소요 시간은 위의 5초 제한이 결정합니다.
예를 들어 1만 건이면 size=1000으로 10회를 호출해야 하고, 5초 간격을 지키면 약 45~50초가 걸립니다. 배치 주기를 잡으실 때 이 계산을 기준으로 보시면 됩니다. 성능 보장치(SLA)는 아니라는 점 참고 부탁드립니다.
또한 응답은 applyId 오름차순이고 cursorId는 그보다 큰 응답만 돌려줍니다. 배치 종료 시 마지막으로 받은 applyId를 저장해 두었다가 다음 배치의 cursorId로 넣으시면 새로 추가된 응답만 받으실 수 있습니다. 전체 내역을 매번 다시 받으실 필요는 없습니다.
4. 데이터 보관 기간
응답 제출 시점부터 90일입니다.
응답마다 expiresAt 필드에 만료 일시가 내려가고 이 시점이 지난 응답은 조회 대상에서 빠집니다. 90일이 지나면 API로도 조회되지 않으니 그 안에 수집해 가시는 구조로 잡으셔야 합니다.
5. 동일 사용자의 중복 제출 식별
비즈니스폼+는 같은 폼에 동일 카카오계정이 두 번 응답할 수 없습니다. 폼 ID 기준으로 이미 응답한 카카오계정이 다시 진입하면 "이미 참여한 이벤트예요"가 표시되고 응답이 막힙니다.
그래서 응답 1건이 곧 응답자 1명이고 applyId(응답 ID)가 그 고유 키입니다. 별도로 사용자를 특정하는 키값은 제공하지 않습니다.
6. 재전송 시 중복 방지
두 가지로 나눠서 보시면 됩니다.
응답자의 폼 제출: 5번대로 중복 제출 자체가 막혀 있어 별도 처리가 필요 없습니다.
연동 시스템의 조회 재시도: 조회 API는 GET이라 같은 cursorId로 다시 호출하면 같은 결과가 나옵니다. 재시도가 데이터를 새로 만들지 않습니다. 적재하실 때 applyId를 유니크 키로 잡아 두시면 중복 적재도 함께 막으실 수 있습니다.