diff --git a/src/verae_mcp_timestamping_server/global_client.py b/src/verae_mcp_timestamping_server/global_client.py index 448ee30..30a4230 100644 --- a/src/verae_mcp_timestamping_server/global_client.py +++ b/src/verae_mcp_timestamping_server/global_client.py @@ -126,12 +126,30 @@ class GlobalClient: res = self.http.request( "POST", url, - payload={"data": digest, "hashAlg": "SHA256"}, + payload={ + "data": digest, + "digest": digest, + "hashAlg": "SHA256", + "restamp": False, + }, headers=self._headers(), ) + parsed = res.json() if hasattr(res, "json") else {} + if res.status_code == 200 and isinstance(parsed, dict): + cid = str(parsed.get("certificate") or parsed.get("jobId") or "") + if cid: + return Receipt( + receipt_id=cid, + hash=digest, + scope="global", + cube_id=cube_id, + created_at=str(parsed.get("timestamp") or ""), + merkle=str(parsed.get("blockHash") or ""), + ) if res.status_code >= 300: raise ValueError(f"global timestamp HTTP {res.status_code}: {res.text}") - parsed = res.json() + if not isinstance(parsed, dict): + parsed = {} job_id = parsed.get("jobId") or parsed.get("blockHash") or "" if not job_id: raise ValueError("global timestamp response missing jobId") diff --git a/tests/test_global_client.py b/tests/test_global_client.py index 23239e2..4eae1db 100644 --- a/tests/test_global_client.py +++ b/tests/test_global_client.py @@ -60,7 +60,10 @@ async def test_global_stamp_posts_hash_sync_and_maps_receipt(): method, url, payload, headers = http.calls[0] assert method == "POST" assert url == "https://api.veraetime.net/api/timestamp" - assert payload == {"data": SHA256_EMPTY, "hashAlg": "SHA256"} + assert payload["data"] == SHA256_EMPTY + assert payload["digest"] == SHA256_EMPTY + assert payload["hashAlg"] == "SHA256" + assert payload["restamp"] is False assert headers["Authorization"] == "Bearer secret" assert rec.scope == "global" assert rec.receipt_id == "job-1"