Autentifikacija ir raktai
Kaip siųsti raktą, koks jo formatas ir kaip veikia raktų gyvavimo ciklas.
Bearer raktas
Kiekviena užklausa turi antraštę Authorization su Bearer schema. Rakto nereikia tik GET / ir GET /openapi.json:
Authorization: Bearer dk_live_...Taisyklės, kurios saugo jūsų raktą:
- Priimama tik
Authorization: Bearer. AntraštėX-API-Keynepriimama, nes ji nutekėtų per peradresavimus. - Raktas negali būti URL. Jei jis yra užklausos eilutėje (
api_key,key,token,access_token), API grąžina 400api_key_in_query. Tokį raktą laikykite nutekėjusiu ir jį rotuokite. - Raktas nenaudojamas naršyklėje. API negrąžina
Access-Control-*antraščių, oOPTIONSužklausa gauna 405. Raktą visada naudokite iš savo serverio.
Rakto formatas
Raktas atrodo taip: dk_live_ ir 49 simboliai [0-9A-Za-z], iš viso 57 simboliai.
| Dalis | Ilgis | Paskirtis |
|---|---|---|
dk_live_ |
8 | priešdėlis, pagal kurį raktą atpažįsta žmonės ir paslaptų skeneriai |
| atsitiktinė dalis | 43 | 256 bitų atsitiktinumas |
| kontrolinė suma | 6 | Base62 CRC32 (big-endian, papildyta nuliais) |
Reguliarioji išraiška: ^dk_live_[0-9A-Za-z]{49}$. Kontrolinė suma leidžia atmesti rašybos klaidą ir aptikti raktą kode be tinklo užklausos. Priešdėlis dk_test_ rezervuotas ateičiai; smėlio dėžės v1 nėra.
Diko saugo tik rakto SHA-256 maišą ir užuominą (dk_live_Ab12…9xYz). Pats raktas niekada nerašomas į žurnalus, el. laiškus ar klaidų atsakymus.
Raktų kūrimas
Raktus kuriate Diko programėlėje, skiltyje Nustatymai → API, adresu /settings/api. Senoji nuoroda /kurejams vis dar veikia ir nukreipia čia. Forma prašo:
| Laukas | Reikalavimai |
|---|---|
| Pavadinimas | 1–100 simbolių |
| Aprašas | neprivalomas, iki 500 simbolių |
| Leidimai | pasirinkite šabloną arba atskirus leidimus; žr. Leidimai. Po sukūrimo jų pakeisti negalima |
| Galiojimas | 7, 30, 90 (numatytasis), 180 arba 365 dienos, arba data. Daugiausia 365 dienos, „niekada“ nėra. Galiojimą galima tik sutrumpinti |
| IP apribojimas | neprivalomas, iki 20 CIDR įrašų; kur jis veikia, žr. Saugumo gairės |
Sukūrus raktas parodomas vieną kartą. Kol nepažymėsite langelio Išsaugojau raktą saugioje vietoje, programėlė neleis uždaryti lango. Kūrimui, rotacijai, įjungimui ir IP sąrašo keitimui programėlė gali paprašyti pakartotinio patvirtinimo (galioja 10 minučių). Atšaukimas, išjungimas ir pervadinimas patvirtinimo nereikalauja, kad saugūs veiksmai būtų greiti.
Ribos: daugiausia 25 raktai (aktyvūs ir išjungti kartu). Pasibaigę, atšaukti ir rotacijos persidengimo metu veikiantys seni raktai neskaičiuojami. Per valandą galima sukurti ar rotuoti daugiausia 10 raktų.
Rakto objektas
GET /me grąžina raktą, kuriuo pateikta užklausa. Pats raktas, žinoma, neparodomas:
{
"id": "key_4Vf9771zpS8JcQdtUcR0u8",
"object": "api_key",
"name": "CRM sync",
"description": "",
"hint": "dk_live_Ab12…9xYz",
"scopes": ["meetings:read", "library:read"],
"status": "active",
"allowed_cidrs": [],
"created_at": "2026-10-11T09:00:00.000Z",
"expires_at": "2027-01-09T09:00:00.000Z",
"last_used_at": null,
"last_used_ip": null,
"first_used_at": null,
"disabled_at": null,
"revoked_at": null,
"revoked_reason": null,
"rotated_from": null,
"grace_until": null
}Likusi GET /me atsakymo dalis taip pat laikosi mažiausių privilegijų principo. Todėl trečiajai šaliai perduotas raktas neatskleidžia paskyros savininko duomenų. user.email visada paslėptas (j***@example.com). credits yra null, nebent raktas turi leidimą library:write, vienintelį, kuris naudoja kreditus.
Būsenos
| Būsena | Reikšmė |
|---|---|
active |
raktas veikia |
disabled |
laikinai išjungtas; galima įjungti vėl (reikia pakartotinio patvirtinimo) |
revoked |
galutinai atšauktas; revoked_reason nurodo priežastį |
expired |
išvestinė būsena: expires_at jau praėjo |
revoked_reason reikšmės: user (atšaukėte jūs), rotated (pasibaigė rotacijos persidengimas), admin (atšaukė komandos administratorius), owner (atšaukė komandos savininkas), user_disabled (paskyra išjungta), leaked (aptiktas nutekėjimas), dormant (ilgai nenaudotas), revoke_all (veiksmas Atšaukti visus raktus).
Galiojimas, priminimai ir nenaudojami raktai
- Likus 7 ir 1 dienai iki galiojimo pabaigos Diko išsiunčia el. laišką (tik jei galiojimas buvo bent 14 ir bent 2 dienų).
- Programėlė žymi raktą „Nenaudojamas“, jei jis nenaudotas 90 dienų. Raktas, nenaudotas 365 dienas, atšaukiamas automatiškai (
dormant). - Kiekvienas raktas turi
last_used_atir naudojimo statistiką programėlėje, todėl pamirštas integracijas lengva pastebėti ir atšaukti.last_used_atatnaujinamas ne dažniau kaip kas 5 minutes, todėl jis gali atsilikti nuo tikro paskutinio kreipinio.
Rotacija
Rotacija sukuria naują raktą ir leidžia senam dar kurį laiką veikti, kad spėtumėte atnaujinti sistemas be prastovos.
- Persidengimas: iškart, 1 val., 24 val. (numatytasis) arba 7 d.
- Naujas raktas paveldi pavadinimą, aprašą, leidimus ir IP sąrašą. Jis gauna tokią pat galiojimo trukmę kaip senasis (daugiausia 365 dienas), skaičiuojamą nuo rotacijos momento.
- Senas raktas gauna
grace_untilir tamparevoked(rotated), kai laikas baigiasi. - Vienu metu galima turėti tik vieną atvirą to paties rakto rotaciją.
Žingsnis po žingsnio receptas yra Saugumo gairėse.
Importai, kai raktas nustoja veikti
Importas, sukurtas per POST /library/imports, gali trukti kelias minutes. Kai jį sukūręs raktas nustoja veikti, Diko sustabdo ir importą. Todėl nutekėjęs raktas negali toliau eikvoti kreditų per jau eilėje esančius darbus.
- Šie veiksmai atšaukia rakto importus, kurie dar
queuedarbaprocessing: rakto atšaukimas (jūsų, komandos administratoriaus ar savininko, veiksmas Atšaukti visus raktus arba automatiškai po GitHub pranešimo apie nutekėjimą), išjungimas, ištrynimas, rotacija su persidengimu iškart ir paskyros išjungimas. Paskyros API prieigos sustabdymas atšaukia visų jos raktų importus. queuedimportas iškart tampacanceled.processingimportas tampacanceling, o sustojus darbui baigiasi kaipcanceled. Kiekvienas pabaigimas siunčia įvykįlibrary.import.canceled.- Rotacija su persidengimu (1 val., 24 val. arba 7 d.) importų nesustabdo. Senam raktui tapus
revoked(rotated) pasibaigus persidengimui, importai taip pat neatšaukiami. Jei seną raktą atšaukiate patys persidengimo metu, jo importai atšaukiami kaip bet kurio atšaukto rakto. - Jau atliktas darbas apmokestinamas kaip įprasta: transkriptas, kuris jau buvo gautas arba baigiamas, vis tiek patenka į jūsų biblioteką.
Planas
API prieinamas „Verslas“ plane. API atsakymuose planas žymimas reikšme verslas. Klaida plan_required nurodo jį lauke required_plans.
GET /me rodo dabartinę būseną lauke access:
access.planyraasmeninis(asmeninis planas, kuris API neapima),verslasarbanull, kai paskyra plano neturi;access.allowednurodo, ar API užklausos leidžiamos;access.reasonnurodo priežastį. Prieigą suteikiasubscription(prenumerata),team(komandos planas),ownerirexempt(paskyros, kurios nemoka) arbapaywall_off(apmokėjimas išjungtas). Prieigą atmetasubscription_requiredarbaplan_required.
Planas tikrinamas kiekvienos užklausos metu, todėl raktai nepašalinami keičiant planą: jie vėl veikia, kai planas leidžia. GET /me plano netikrina, todėl tinka diagnostikai.
Autentifikacijos klaidos
| Situacija | HTTP | Kodas |
|---|---|---|
Nėra antraštės Authorization |
401 | missing_api_key |
Schema ne Bearer, tuščias raktas, kelios antraštės Authorization, blogas formatas ar kontrolinė suma arba nežinomas raktas |
401 | invalid_api_key |
| Galiojimas pasibaigė | 401 | api_key_expired |
| Raktas atšauktas | 401 | api_key_revoked |
| Raktas išjungtas | 401 | api_key_disabled |
| IP nėra rakto sąraše | 403 | ip_not_allowed |
| Paskyra išjungta, el. paštas nepatvirtintas arba API prieiga sustabdyta | 403 | account_disabled, email_not_verified, api_access_suspended |
| Nėra apmokėtos prieigos | 402 | subscription_required |
| Planas neapima API | 403 | plan_required |
401 atsakymai turi antraštę WWW-Authenticate: Bearer realm="diko", kai antraštės Authorization nėra, ir Bearer realm="diko", error="invalid_token" kitais atvejais.
Raktą atšaukus, išjungus ar rotavus, pakeitimas pasiekia API maždaug per 10 sekundžių.