Otú o si jikọta
- Mepụta igodo ma tinye weebụsaịtị gị na console.
- Maka ule omume, mado akụkụ koodu ahụ n'ibe gị.
- Maka ule nke gị, sava gị na-amalite ule ma nata adreesị mmalite.
- Ibe gị na-emepe ya, onye na-ese ule na-eme ule ahụ, nsonaazụ na-erukwa gị site na webhook ma ọ bụ API.
Igodo
pk_test_pk_live_- Igodo enwere ike ibipụta na-aga n'ibe weebụ gị. Ha na-emepe naanị ule omume na weebụsaịtị ndị i depụtara.
sk_test_sk_live_- Igodo sava na-arụ ọrụ maka nzukọ gị. Debe ha na sava gị, ezigala ha na nchọgharị.
Igodo ule na-arụ ọrụ ozugbo, anaghị agụkwa ha na atụmatụ gị. Igodo live chọrọ ka a kwado akaụntụ gị.
Ule omume
Tinye script ahụ otu ugboro, mgbe ahụ tinye ule ebe ọ bụla ịchọrọ. Etiti ahụ na-agbanwe onwe ya ka o kwekọọ na ọdịnaya ya.
<div id="gb-test"></div>
<script src="https://www.supergb.com/cbt/js/embed/v1.js"></script>
<script>
GreenBridge.mount("#gb-test", { key: "pk_live_...", paper: "PAPER_ID" });
</script>
Ule ahụ bụ id e gosiri na onye nrụpụta koodu dị na console gị. Tinye mode: "exam" maka ọnọdụ ule nwere oge.
Ule nke gị
Dee ule na console n'okpuru Ule ma mepee ha. Mgbe onye na-ese ule dị njikere, sava gị na-amalite ule:
curl -X POST https://www.supergb.com/cbt/partner-api/v1/sessions \
-H "Authorization: Bearer $GREEN_BRIDGE_KEY" \
-H "Content-Type: application/json" \
-d '{"test_id": "TEST_ID", "language": "fr", "candidate": {"id": "learner-42", "name": "Ada Obi", "email": "ada@example.com"}}'
candidate.id bụ id nke gị maka onye ahụ, ruo mkpụrụedemede 128. Aha na email abụghị iwu; naanị ihe i zitere ka anyị na-edebe.
language abụghị iwu: otu n'ime de, en, es, fr, yo, ig, ha, nl, pt, sw. Bọtịnụ, elekere na ozi nke ule ahụ ga-apụta n'asụsụ ahụ; ajụjụ gị ga-adị ka i si dee ha. Na-enweghị ya, ule ahụ ga-abụ n'asụsụ Bekee.
Azịza ya nwere adreesị mmalite na-arụ ọrụ otu ugboro, n'ime nkeji 10. Mepee ya n'ibe gị:
HTTP/1.1 201 Created
{
"attempt_id": "att_...",
"launch_token": "lt_...",
"launch_url": "https://www.supergb.com/cbt/fr/embed/v1/test?launch=lt_...",
"launch_expires_at": "2026-10-23T09:10:00Z",
"live": true,
"language": "fr"
}
<div id="gb-test"></div>
<script src="https://www.supergb.com/cbt/js/embed/v1.js"></script>
<script>
GreenBridge.mountTest("#gb-test", {
launchUrl: "LAUNCH_URL_FROM_YOUR_SERVER",
onEvent: function (event) {
if (event.type === "submitted") {
showThanks(event.detail.attempt_id);
}
}
});
</script>
Ozugbo e meghere ya, ule na-adịru awa 24, imegharị ibe na-aga n'ihu na ya. Onye ọ bụla na-ese ule ọ bụla otu ugboro.
Iji depụta ule gị na id ha:
curl https://www.supergb.com/cbt/partner-api/v1/tests -H "Authorization: Bearer $GREEN_BRIDGE_KEY"
Ozi si n'etiti
onEvent na-anata ndị a, naanị site n'etiti anyị:
| Ihe omume | Ihe ọ pụtara |
|---|---|
ready | Ibe ahụ ebunyela. |
resize | Ogologo ọdịnaya agbanweela. Etiti ahụ na-eso ya n'onwe ya. |
completed | E nyela ule omume akara. detail nwere score na max_score. |
submitted | E zipụla ule. detail nwere attempt_id. Nweta nsonaazụ site na sava gị, ọ bụghị site na nchọgharị. |
Nsonaazụ
Ule e zipụrụ, nke kachasị ọhụrụ na mbụ, 50 n'otu ibe. Họrọ site na test_id, candidate_id ma ọ bụ ha abụọ.
curl "https://www.supergb.com/cbt/partner-api/v1/attempts?test_id=TEST_ID&page=0" -H "Authorization: Bearer $GREEN_BRIDGE_KEY"
curl https://www.supergb.com/cbt/partner-api/v1/attempts/ATTEMPT_ID -H "Authorization: Bearer $GREEN_BRIDGE_KEY"
Otu ule dị ka nke a. questions dị na ya site n'atụmatụ Growth gaa n'elu.
{
"id": "att_...",
"test_id": "TEST_ID",
"candidate_id": "learner-42",
"live": true,
"language": "fr",
"started_at": "2026-10-23T09:02:11Z",
"submitted_at": "2026-10-23T09:41:57Z",
"integrity_events": 0,
"score": 34.0,
"max_score": 40.0,
"percent": 85.0,
"grading_status": "fully_graded",
"questions": [
{"question_id": "q1", "type": "multiple_choice_question", "score": 1.0, "max_score": 1.0}
]
}
grading_status bụ fully_graded mgbe ọ dịghị ihe fọdụrụ a ga-eji aka nye akara, ma ọ bụghị pending_manual_review ma ọ bụ pending_transcription.
Webhook
Tinye ihe ruru adreesị https 5 na console gị. A na-ezipụ ihe omume ọ bụla dị ka POST bịanyere aka, a na-anwaghachikwa ya ruo ụbọchị 3 ruo mgbe sava gị zara na ọnọdụ 2xx.
| Ihe omume | Ihe ọ pụtara |
|---|---|
attempt.started | Onye na-ese ule mepere ule ahụ. |
attempt.submitted | Onye na-ese ule zipụrụ. |
attempt.graded | Akara niile kwụsiri ike. A na-ezipụ ya ọzọ mgbe ọ bụla akara gbanwere. |
attempt.integrity_flagged | Onye na-ese ule hapụrụ ule ma ọ bụ nwara idetuo ma ọ bụ mado ugboro 3. |
ping | Ihe omume ule e zipụrụ site na console gị. |
POST /hooks/green-bridge
Content-Type: application/json
Green-Bridge-Event: attempt.graded
Green-Bridge-Delivery: whd_...
Green-Bridge-Signature: t=1792834917,v1=5f0c...
{
"id": "evt_graded_att_..._1",
"type": "attempt.graded",
"created_at": "2026-10-23T10:21:57Z",
"data": { "id": "att_...", "candidate_id": "learner-42", "score": 34.0, "max_score": 40.0, "grading_status": "fully_graded" }
}
Id nke ihe omume anaghị agbanwe, ya mere ị nwere ike ileghara nke i lebara anya anya n'enweghị nsogbu.
Ilele mbinye aka
Gbakọọ HMAC-SHA256 nke t, otu ntụpọ na ahụ arịrịọ dịka ọ dị, site na nzuzo mbinye aka gị, ma tụnyere ya na v1. Jụ oge karịrị nkeji ise.
Node.js
const crypto = require("crypto");
function isFromGreenBridge(header, rawBody, secret) {
const parts = Object.fromEntries(header.split(",").map(part => part.split("=")));
if (!parts.t || !parts.v1 || Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) {
return false;
}
const expected = crypto.createHmac("sha256", secret).update(parts.t + "." + rawBody).digest("hex");
return expected.length === parts.v1.length
&& crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}
Python
import hashlib, hmac, time
def is_from_green_bridge(header, raw_body, secret):
parts = dict(part.split("=", 1) for part in header.split(","))
if "t" not in parts or abs(time.time() - int(parts["t"])) > 300:
return False
signed = parts["t"].encode() + b"." + raw_body
expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, parts.get("v1", ""))
Njehie
Njehie na-alaghachi dị ka JSON nwere koodu anaghị agbanwe:
HTTP/1.1 404 Not Found
{"error": {"code": "test_not_found"}}
| Koodu | HTTP | Ihe ọ pụtara |
|---|---|---|
invalid_key |
401 | Igodo ahụ adịghị, amaghị ya, ma ọ bụ a kagburu ya. |
partner_suspended |
403 | A kwụsịtụrụ akaụntụ gị. Kpọtụrụ anyị. |
live_keys_need_approval |
403 | Igodo live na-arụ ọrụ ozugbo a kwadoro akaụntụ gị. |
not_on_plan |
403 | Atụmatụ gị enweghị nke a. |
test_not_found |
404 | Ọ dịghị ule gị nwere id ahụ. |
attempt_not_found |
404 | Ọ dịghị ule e mere nke gị nwere id ahụ. |
candidate_not_found |
404 | Ị nweghị onye na-ese ule nwere id ahụ. |
test_not_open |
409 | Ule ahụ emepebeghị ma ọ bụ e mechiela ya. |
already_submitted |
409 | Onye a ezipụlarị ule a. |
invalid_request |
400 | Otu ubi adịghị ma ọ bụ o nweghị ụdị a tụrụ anya. |
monthly_limit_reached |
429 | Oke ọnwa a agwụla. Igodo ule ka na-arụ ọrụ. |
internal_error |
500 | Ihe mebiri n'akụkụ anyị. Nwaa ọzọ. |
Oke na data
- Ihe ruru arịrịọ 300 kwa nkeji maka igodo sava ọ bụla. Karịa nke ahụ, azịza bụ 429 na-enweghị ọdịnaya; chere otu nkeji ma nwaa ọzọ.
- Ule live na akara AI na-agụ na oke kwa ọnwa nke atụmatụ gị. Anaghị agụ ule e ji igodo ule malite.
Data gị
Ihe anyị na-edebe gbasara ule gị na ndị na-ese ule, ruo ogologo oge ole, na otú ị ga-esi nwetaghachi ya.
- Ule na ajụjụ gị
- A na-edebe ha ruo mgbe i hichapụrụ ha ma ọ bụ mechie akaụntụ gị.
- Ndị na-ese ule
- Id i zitere, yana aha na email naanị ma ọ bụrụ na i zitere ha. A na-edebe ha otu afọ mgbe a hụrụ onye na-ese ule ahụ ikpeazụ.
- Ule e sere na nsonaazụ
- Azịza, ndekọ, akara na ihe omume iguzosi ike n'eziokwu. A na-edebe ha otu afọ mgbe ule ahụ malitere, e mesịa hichapụ ha.
- Ule omume
- A na-edebe ha otu afọ, naanị iji gụọ ojiji gị. Akara ahụ na-erute ibe gị n'ihe omume completed.
- Nziputa webhook
- A na-edebe ha ụbọchị 30, n'akwụkwọ ndekọ nziputa nke console gị.
- Ojiji API
- Ọnụ ọgụgụ kwa ụbọchị maka igodo ọ bụla, a na-edebe ha ụbọchị 400, na ihuenyo Ojiji nke console gị.
Nweta nsonaazụ mgbe ọ bụla site na GET /attempts. N'atụmatụ Growth na Institution, ị nwekwara ike ibudata nsonaazụ ule ọ bụla dị ka CSV site na menu ule ahụ na console gị: otu ahịrị maka ule ọ bụla e sere yana akara ajụjụ ọ bụla, na azịza onye na-ese ule n'ajụjụ ndị i dere. Ajụjụ si n'ọba ajụjụ Green Bridge na-egosi naanị akara ha.
Iji hichapụ otu onye na-ese ule ngwa ngwa:
curl -X POST https://www.supergb.com/cbt/partner-api/v1/candidates/erase \
-H "Authorization: Bearer $GREEN_BRIDGE_KEY" \
-H "Content-Type: application/json" \
-d '{"candidate_id": "learner-42"}'
Nsonaazụ onye na-ese ule chekwara n'akaụntụ Green Bridge nke ya bụ nke ya site n'oge ahụ gaa n'ihu. Ihichapụ onye ahụ ma ọ bụ imechi akaụntụ gị anaghị ewepụ ya.
Onye nwe akaụntụ gị nwere ike imechi ya n'okpuru Weebụsaịtị na igodo. Igodo na webhook na-akwụsị ozugbo, a na-ehichapụkwa ihe niile dị n'elu n'ime otu ụbọchị, ya mere budata ihe ị chọrọ tupu mgbe ahụ.
Nkwa ndị dị n'azụ nke a dị na Ndị Mmekọ na Nhazi Data n'ime Usoro na Ọnọdụ anyị.
Ị chọrọ ihe atụmatụ ndị a anaghị ekpuchi? Jiri Kpọtụrụ anyị na ihuenyo Atụmatụ na console gị.