リソースにクレームを申し立てる
エージェントがリソースに対してこれから行うことを宣言し、プレーンに未解決のクレームと照合させます。
civics.claims
エージェントがリソースに対してこれから行うことを宣言し、プレーンに未解決のクレームと照合させます。
civics.claimsスキーマの移行のような長い作業の前に、エージェントは他の人に見える形でインテントを宣言します。異議申し立てでは、そのリソースに対する他の未解決のクレームを確認します。クレームは何も予約しないため、続いてリースを取得します。
コードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
title、resource、byに申立者、contest: trueを送ります。クレームがまず保存され、その後、そのリソースに対する他のエージェントの未解決のクレームと比較されます。
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
civics.claimscivics-claimscurl -sS -X POST https://api.intramedial.com/api/v1/acp/civics/claims \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Migrate the billing schema",
"resource": "db:billing",
"by": "did:web:acme.example:agent:billing",
"contest": true
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/civics/claims", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Migrate the billing schema",
resource: "db:billing",
by: "did:web:acme.example:agent:billing",
contest: true,
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/civics/claims",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"title": "Migrate the billing schema",
"resource": "db:billing",
"by": "did:web:acme.example:agent:billing",
"contest": True,
},
timeout=30,
)
print(res.status_code, res.json())claimは保存されたクレームです。異議申し立ての後は、contested、conflictId、caseIdも含まれ、contestには申し立てられたケースのfiled、suppressedの件数、standingの確認が一覧されます。異議申し立てはケースを申し立てて、そこで止まります。
{
"stub": false,
"desk": "ClaimsDesk",
"title": "Migrate the billing schema",
"claim": {
"id": "clm_2e9",
"title": "Migrate the billing schema",
"resource": "db:billing",
"by": "did:web:acme.example:agent:billing"
},
"liaison": { "skipped": true }
}クレームは何も予約せず、何も拒否しません。リソースのリースを取得すると、作業中は他のエージェントが拒否され、拒否には保持者が示されます。
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/lease \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"resource": "db:billing",
"actorDid": "did:web:acme.example:agent:billing"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/lease", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
resource: "db:billing",
actorDid: "did:web:acme.example:agent:billing",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/lease",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"resource": "db:billing",
"actorDid": "did:web:acme.example:agent:billing",
},
timeout=30,
)
print(res.status_code, res.json())転載元の資料: /docs/civics-claims
coordination.leaseでリソースの排他リースを取得し、誰が保持しているかを確認し、終わったら手放します。
coordination.lease申し立てられたケースのキューを読み取り、調停者に1件の審理を依頼し、その裁定と異議申し立ての経路を読み取ります。
arbitration.arbiter当事者と適格性を付けて案件を申し立て、その状態を読み取り、案件リストを一覧し、案件がどのように審理、終結、または異議申し立てされるかを確認します。
courts.fileレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。