Սկսելը
Այս ուղեցույցը ձեզ կառաջնորդի Magisterium A2A վերջնակետին առաջին հարցումը կատարելու, ստացված առաջադրանքը ստանալու և կառուցվածքային պատասխանն ընթերցելու ընթացքում։
Նախապայմաններ
- Վճարովի Magisterium պլան (Pro, Կազմակերպություն կամ Տնտեսություն)։ Անվճար հաշիվները A2A-ից ստանում են
PLAN_REQUIREDսխալ։ - Ձեր
magisterium.comհաշվին կապված OAuth 2.0 մուտքի թոքեն։ A2A-ն օգտագործում է նույն OAuth հոսքը, ինչ Magisterium MCP սերվերը. որակավորման, թոքենի և դինամիկ գրանցման վերջնակետերը հայտնաբերեքhttps://www.magisterium.com/.well-known/oauth-authorization-serverհասցեի OAuth մետատվյալներից։ - Այն հմտությունները, որոնք ցանկանում եք կանչել — ամբողջական ցանկի համար տե՛ս Հմտություններ։
Ուշադրությո՛ւն. API Console-ում ստեղծվող երկարակյաց API բանալիները աշխատում են Chat Completions, Search և News-ի համար, սակայն A2A-ի համար վավեր չեն — A2A-ն ընդունում է միայն OAuth-ի կողմից տրված օգտատիրոջ թոքեններ։
Ձեր մուտքի թոքենն արտահանեք որպես միջավայրի փոփոխական, որպեսզի ստորև բերված օրինակները այն ավտոմատ ստանան.
export MAGISTERIUM_TOKEN=<your-access-token-here>Քայլ 1. Հայտնաբերեք գործակալին
Վերջնակետը կանչելուց առաջ կարող եք ստանալ հանրային Agent Card-ը՝ տեսնելու, թե ինչ հմտություններ են հասանելի, և հաստատելու արձանագրության տարբերակը.
curl https://www.magisterium.com/.well-known/agent.jsonՔարտը որակավորում չի պահանջում։ Համադրիչները կարող են այն քեշավորել մեկ ժամով — վերջնակետը սահմանում է Cache-Control: public, max-age=3600։
Քայլ 2. Ուղարկեք ձեր առաջին հաղորդագրությունը
Բոլոր A2A գործողությունները անցնում են միակ JSON-RPC վերջնակետով՝ POST https://www.magisterium.com/api/v1/a2a։ Ստորև բերված օրինակը կանչում է message/send-ը catholic_qa հմտության վրա։
curl -X POST https://www.magisterium.com/api/v1/a2a \
-H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"role": "user",
"messageId": "msg-001",
"kind": "message",
"parts": [{ "kind": "text", "text": "What does the Church teach about the Real Presence?" }],
"metadata": { "skillId": "catholic_qa" }
}
}
}'const accessToken = process.env.MAGISTERIUM_TOKEN!;
const response = await fetch("https://www.magisterium.com/api/v1/a2a", {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "message/send",
params: {
message: {
role: "user",
messageId: crypto.randomUUID(),
kind: "message",
parts: [
{ kind: "text", text: "What does the Church teach about the Real Presence?" },
],
metadata: { skillId: "catholic_qa" },
},
},
}),
});
const { result: task } = await response.json();
console.log(task.id, task.status.state);
for (const artifact of task.artifacts ?? []) {
for (const part of artifact.parts) {
if (part.kind === "text") console.log(part.text);
}
}import os
import uuid
import httpx
access_token = os.environ["MAGISTERIUM_TOKEN"]
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"role": "user",
"messageId": str(uuid.uuid4()),
"kind": "message",
"parts": [
{"kind": "text", "text": "What does the Church teach about the Real Presence?"}
],
"metadata": {"skillId": "catholic_qa"},
}
},
}
response = httpx.post(
"https://www.magisterium.com/api/v1/a2a",
headers={
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
task = response.json()["result"]
print(task["id"], task["status"]["state"])
for artifact in task.get("artifacts", []):
for part in artifact["parts"]:
if part["kind"] == "text":
print(part["text"])Քայլ 3. Կարդացեք պատասխանը
message/send-ը վերադարձնում է kind: "task" ունեցող Task օբյեկտ։ Սինխրոն հմտության կանչը միշտ ավարտվում է երկու տերմինալ վիճակներից մեկում.
status.state == "completed"— արդյունքները գտնվում ենresult.artifacts-ում։ Յուրաքանչյուր artifact ունիartifactId, ընտրովիnameև մեկ կամ ավելիparts(text,dataկամfile)։status.state == "failed"— ձախողման պատճառը գտնվում էstatus.message.parts[0].text-ում։
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"id": "task_abc123",
"contextId": "ctx_def456",
"kind": "task",
"status": { "state": "completed", "timestamp": "2026-04-20T12:00:00.000Z" },
"artifacts": [
{
"artifactId": "art_ghi789",
"name": "catholic_qa_response",
"parts": [
{ "kind": "text", "text": "The Catholic Church teaches..." },
{ "kind": "data", "data": { "citations": [] } }
]
}
]
}
}Քայլ 4. Ստացեք կամ չեղարկեք առաջադրանքը
Առաջադրանքները պահվում են 24 ժամ և կարող են կրկին բերվել ID-ով՝ օգտագործելով tasks/get.
curl -X POST https://www.magisterium.com/api/v1/a2a \
-H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tasks/get",
"params": { "id": "task_abc123" }
}'Եթե ձեզ անհրաժեշտ է ընդհատել առաջադրանքը, կանչեք tasks/cancel-ը նույն ID-ով։ Քանի որ Magisterium-ի բոլոր հմտությունները լուծվում են սինխրոն կերպով, չեղարկումն օգտակար է միայն հազվադեպ վերաձեռնարկման սցենարներում — completed կամ failed արդեն դարձած առաջադրանքը հնարավոր չէ չեղարկել, և կվերադարձնի INVALID_PARAMS։
Ընդհանուր սխալներ
| Կոդ | Իմաստ | Լուծում |
|---|---|---|
-32004 | Չորակավորված | Ստուգեք Authorization վերնագիրը և որ մուտքի թոքենը վավեր է և ժամկետանց չէ։ |
-32005 | Պահանջվում է վճարովի պլան | Թարմացրեք ձեր հաշիվը magisterium.com/plan-ում։ |
-32002 | Հմտությունը չի գտնվել | Ստուգեք, որ metadata.skillId-ը համապատասխանում է Agent Card-ում նշված որևէ ID-ի։ |
-32003 | Գերազանցվել է արագության սահմանաչափը | Կրկին փորձելուց առաջ սպասեք retryAfter վայրկյան (գտնվում է սխալի data-ում)։ |
Բոլոր մեթոդների և սխալի կոդերի համար տե՛ս ամբողջական API հղումը։