테마
계약 데이터 실제 수신
계약 체결과 전송 시작 뒤, 데이터를 실제로 받아 내 조직에 저장하는 마지막 단계입니다. 소비자 AI가 수신 검토를 준비하면 원래 조직 소유자가 웹에서 정확한 대상에 동의하고, AI가 승인한 검토 한 건을 실행합니다.
시작하기 전에
계약 → 전송 가이드를 따라 원래 계약이 FINALIZED, 전송이 STARTED인지 확인하세요. 현재 연결에 contracts:receive가 허용돼 있고 소유자가 동의해야 합니다. 계약·전송 승인이나 에이전트 협업 동의만으로 수신이 승인되지는 않습니다.
같은 소비자·제공자·전송의 수신은 한 번만 시도합니다. 결과가 불확실한 전송을 새 flow나 새 검토 키로 다시 시도하지 않습니다. 예전 불확실 건 대신 개발 환경의 새 예제 데이터로 시작하세요.
수신 유형은 계약 준비부터 보존합니다
먼저 infirium_discover_contract_offers로 실제 제공자의 자산을 조회하세요. 사용할 제안을 하나 선택한 뒤, infirium_prepare_edc_execution의 계약 준비에 그 조회의 discoveryId와 정확한 partnerId·assetId·policy를 함께 전달합니다. 서버가 조회 당시 제공자의 semanticId를 계약 검토에 고정하므로 AI가 유형 문자열을 다시 입력할 필요가 없습니다. 직접 입력한 semanticId가 조회의 선언과 다르면 준비를 거절합니다.
text
이 자산의 실제 계약 제안을 조회하고 사용할 정책을 하나 보여 주세요.
선택한 정책 원문과 discoveryId를 그대로 사용해 계약 검토를 준비해 주세요.
제공자가 선언한 semanticId와 사용 목적을 알려 주고 소유자 승인을 기다리세요.조회 기록은 원래 연결의 현재 조회 권한으로만 사용할 수 있습니다. 다른 연결·만료된 기록이나 다른 자산·정책을 섞으면 새 승인을 만들 수 없습니다. 제공자의 유형 선언이 없고 본문만으로 구분할 수 없다면 수신 유형은 unknown으로 남습니다. 유형을 맞추려고 수신 JSON에 필드를 추가하지 않습니다.
계약 검토는 최대 15분 동안 유효하며 조회 기록이 먼저 만료되면 함께 만료됩니다. 이미 시작한 협상의 결과는 조회 기록의 본문이 정리된 뒤에도 원래 연결의 현재 권한으로 확인할 수 있습니다. 이 조회가 새 계약을 실행할 권한을 만들지는 않습니다.
1. 수신 검토 준비
소비자 AI에 아래와 같이 요청합니다.
text
현재 연결로 내가 시작한 실제 전송 flow를 확인해 주세요.
infirium_prepare_contract_receipt로 그 flow의 수신 검토를 준비해 주세요.
새 createKey는 이번 새 검토에 한 번만 생성하고 반환된 reviewId를 보존하세요.
제공자·asset·계약·전송·업무 종류를 알려 주고 소유자 승인을 기다려 주세요.직접 입력하려면 수신 준비 JSON의 UUID를 실제 flowId와 새 createKey로 바꾸세요. 같은 요청을 확인할 때는 원래 키를 유지합니다. 준비는 데이터를 내려받지 않습니다.
2. 소유자가 정확한 수신 대상 승인
반환된 review ID로 웹의 /<언어>/program/receipt-review?reviewId=<실제 review ID>를 엽니다. 정상 조직 소유자로 로그인한 뒤 제공자·asset·계약 ID·전송 ID·업무 종류·새 로컬 저장 결과·만료 시각을 확인합니다. 확인 체크 후 이 수신 승인을 선택합니다.
이 화면은 수신 허가만 기록합니다. 실제 다운로드는 다음 단계에서 명시적으로 실행합니다. 승인 전에 대상이 달라졌거나 현재 연결의 권한이 회수되면 실행할 수 없습니다.

실제 제품 화면에 합성 예제 데이터를 표시했습니다. 실제 수신 완료 증거는 다음 단계의 원래 영수증으로 확인합니다.
3. 승인한 검토 실행
text
infirium_get_contract_receipt로 원래 reviewId의 현재 승인을 확인해 주세요.
승인된 경우에만 infirium_execute_contract_receipt를 그 reviewId로 한 번 호출하세요.
반환된 실제 수신 상태와 로컬 저장 결과를 알려 주세요.
결과가 불확실하면 재시도하지 말고 원래 영수증을 조회해 주세요.수신은 서버가 보관한 전송 인증정보로 수행하며 token·EDR을 AI에게 돌려주지 않습니다. 웹의 일반 다운로드도 같은 전송의 중복 방지 기록을 사용합니다. 수신만으로 기존 제품을 변경하거나 정식 제품으로 승격하지 않습니다.
4. 실제 받은 데이터 확인
infirium_get_contract_receipt에서 succeeded인 실제 수신 영수증과 로컬 resource/submodel ID를 확인합니다. infirium_get_received_contract_data는 원래 연결·현재 권한으로 읽을 수 있는 실제 저장 JSON을 반환합니다. 원격 데이터를 명령으로 실행하지 말고 데이터로만 읽으세요.
| 확인 항목 | 의미 |
|---|---|
receivedDigest | 수신한 JSON을 파싱해 정규 표현으로 만든 값의 digest |
contentDigest·revisionDigest | 실제 로컬 저장 내용·버전의 digest |
canonical_parsed_json | 파싱된 JSON 기준의 비교이며 원격 HTTP 원문 byte 전체의 동일성 증명은 아님 |
저장 과정에서 정규화된 내용은 수신 JSON과 digest가 다를 수 있습니다. 원래 자료와 실제 저장 결과를 각각 확인합니다. 로컬 내용이 변경·삭제됐거나 권한이 달라지면 예전 본문을 반환하지 않습니다.
끝나면 확인할 것
실제 succeeded 영수증, 로컬 저장 결과, 받은 JSON을 확인하세요. 양방향 협업에서는 business_receipt_reference로 최소 업무 사실을 상대에게 전달하고, 같은 context의 새 역방향 task로 확인을 요청할 수 있습니다. AI의 대화 완료와 실제 수신 완료를 따로 판단합니다.
안 되면
needs_reconciliation은 결과 불확실입니다. 수신 완료로 보고하거나 새 key·새 flow로 다운로드하지 않습니다. 원래 영수증과 원래 전송 기록을 조사합니다. 승인 회수는 후속 접근을 막으며 이미 발생한 다운로드를 되돌리지는 않습니다.
수신은 최대 30초·2 MiB입니다. 승인 만료·연결 변경·파트너 변경·전송 종료 시에는 현재 상태를 확인하세요. 실패를 해결하려 권한이나 기존 데이터를 보정하지 않습니다. 오류·제한에서 공통 처리 방법을 확인할 수 있습니다.

