Bővítmény API funkciók
Használd ezt az oldalt, ha már érted az alapvető bővítménymodellt, és tényleges zárolási viselkedést szeretnél létrehozni: szükséges műveletek, blokkolók feloldása, szabályosság, jutalmak és büntetések.
A böngésző iframe kódja nem megbízható.
Az iframe képes megjeleníteni a felhasználói felületet és beolvasni a biztonságos munkamenet kontextusát. Bármit, ami munkamenet-állapotot ír, jutalmazza a viselőt, időt vesz fel, felold egy feloldási blokkolót, rögzíti a megbízható követelmények előrehaladását, elindít vagy meghiúsít egy kísérleti időzítőt, vagy büntetést alkalmaz, a háttérrendszernek ellenőriznie kell.
Jellemzőtérkép
| Funkció | Mit csinál | Hol fut |
|---|---|---|
| Blokkolók feloldása | A feloldás megakadályozása, amíg a bővítmény nem old fel egy blokkolót, vagy elegendő megbízható folyamatot nem rögzít | Zárolás-indítás konfiguráció vagy háttér-metaadat/folyamathívások |
| Kezdőlap műveletek | Látható műveletet ad hozzá a zárolási oldalhoz, például a „Kihívás lejátszása” | Zárolás-indítás konfigurációs vagy háttér-metaadatok javításai |
| Szokásos műveletek | Intervallumonként korlátozott számú viselői műveletet engedélyez | A Chastify nyomon követi a számlálókat; a háttérrendszer megbízható műveleteket küld be |
| Kötelező előrehaladás | Napi vagy heti teljesítési követelmények nyomon követése | A háttérrendszer rögzíti az előrehaladást; a Chastify ütemező ellenőrzi a kihagyott ablakokat |
| Jutalmak | Eltávolítja az időt, elindítja a higiéniai nyitást, vagy értesítést küld a sikeres végrehajtás után | A háttérrendszered privilegizált végpontokat hív meg |
| Büntetések | Időt ad hozzá, lefagy, feladatot rendel hozzá, pellengérre állít, vagy értesítést küld ellenőrzött hiba után | A háttérrendszered privilegizált végpontokat hív meg |
Kötelező háttér-fejlécek
A privilegizált kiterjesztési végpontokhoz mindkét fejléc szükséges:
Authorization: Bearer YOUR_APP_SCOPED_DEVELOPER_KEY
x-chastify-main-token: MAIN_TOKEN_FROM_IFRAME_HASH
A mainToken azonosítja a megnyitott bővítmény-munkamenetet. A fejlesztői API-kulcs bizonyítja, hogy a kérés a háttérrendszeredtől érkezett.
Blokkoló feloldása
Használjon feloldóblokkolókat, ha a viselőjének be kell fejeznie valamit a feloldás előtt. Példák:
- Nyerj 3 meccset.
- Töltsd ki a mai edzésbizonyítást.
- Fejezz be egy ellenőrző rejtvényt.
- Hajtsa végre az aktuális ablakhoz szükséges összes bővítményműveletet.
Két támogatott minta létezik.
Haladásalapú blokkolók
Használja a initialMetadata.unlockRequirements kódot, ha a zárolást blokkolni kell, amint a zárolás elindul, vagy egy megosztott sablont elfogadnak. A Chastify inicializálja a bővítmény munkamenetének állapotát ebből az általános konfigurációból, így a blokkoló már azelőtt létezik, hogy a felhasználó először megnyitná a bővítményt.
{
"initialMetadata": {
"unlockRequirements": [
{
"metric": "memory_win",
"requiredCount": 3,
"blocker": "Complete 3 memory challenge wins to unlock"
}
],
"homeActions": [
{
"slug": "play-memory-challenge",
"title": "Play memory challenge",
"description": "Complete the extension challenge to satisfy the unlock requirement.",
"icon": "gamepad-2",
"badge": "Required"
}
]
}
}
Miután a háttérrendszer ellenőrizte a megbízható befejezést, rögzítse az előrehaladást ugyanazon mutató alapján:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/requirements/progress" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"metric": "memory_win",
"amount": 1
}'
A ZXQTER0ZXQ ezt feloldási folyamatként tárolja, és automatikusan teljesítettnek tekinti a követelményt, amikor a folyamat eléri a requiredCount kódot. A zárolási kártyák a folyamatot például 1 of 3 complete kódként mutathatják.
Használjon stabil metrikaneveket. Egy metrika egy aktív feloldási követelményt jelent az adott bővítmény-munkamenetben.
Próbálkozási időkorlátok
Használja a attemptLimit kódot, ha egy megbízható kísérletnek le kell járnia, ha nem fejeződik be időben. A Chastify az aktív kísérletet a data.attemptLimits.<metric> alatt tárolja, és a határidő lejárta után sikertelennek jelölheti. Ezt az állapotot a Chastify kezeli; a kísérleteket a kísérlet végpontjain keresztül indítsa el és hiúsítsa meg a data.attemptLimits kód saját kezű megírása helyett.
{
"attemptLimit": {
"enabled": true,
"metric": "memory_win",
"durationSeconds": 300,
"startPolicy": "activity"
}
}
A startPolicy lehet activity, amikor a visszaszámlálás a viselője játékának megkezdésekor kezdődik, vagy availability, amikor a visszaszámlálás akkor kezdődik, amikor a művelet elérhetővé válik a zár számára.
Indítson egy kísérletet a háttérrendszeréből:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/attempts/start" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"metric": "memory_win",
"attemptId": "memory-run-123"
}'
Amikor a backend ellenőrzi a kísérletet, kérd meg a Chastify-t, hogy utasítsa el, ha a határidő lejárt:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/attempts/fail-expired" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"metric": "memory_win",
"attemptId": "memory-run-123"
}'
Ha a sikertelen kísérletek lefoglalnak egy várakozási időt, akkor egy normál műveletet is be kell küldeni a sikertelen kísérletre vonatkozóan.
Kézi blokkolók
Használd a unlockBlockers kódot, ha a backendednek manuálisan kell eldöntenie, hogy blokkolva van-e a feloldás. Javítási metaadatok a backendedből:
curl -X PATCH "https://chastify.net/api/extensions/sessions/$SESSION_ID/metadata" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"unlockBlockers": [
"Complete 3 memory challenge wins to unlock"
],
"homeActions": [
{
"slug": "play-memory-challenge",
"title": "Play memory challenge",
"description": "Complete the extension challenge to satisfy the unlock requirement.",
"icon": "gamepad-2",
"badge": "Required",
"intent": {
"type": "play",
"title": "Memory challenge",
"message": "Complete the required challenge."
}
}
]
}'
Töröld a blokkolót, miután a háttérrendszered ellenőrzi a befejezést:
curl -X PATCH "https://chastify.net/api/extensions/sessions/$SESSION_ID/metadata" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"unlockBlockers": [],
"homeActions": [
{
"slug": "play-memory-challenge",
"title": "Memory challenge complete",
"description": "The extension unlock requirement has been completed.",
"icon": "check-circle",
"badge": "Complete"
}
]
}'
A unlockBlockers manuális metaadat. Ez jelzi a Chastify számára, hogy a feloldás blokkolva van, amíg a háttérrendszer el nem távolítja a blokkolót. A initialMetadata.unlockRequirements egy folyamatalapú metaadat. A ZXQTER0ZXQ automatikusan kiértékeli ezt a megfelelő metrikához rögzített megbízható folyamatból.
Szabályossági jellemző
A rendszeres műveletek akkor hasznosak, ha a viselőjének meghatározott ritmusban van lehetősége valamit csinálni: óránként egyszer, naponta négyszer, hetente egyszer és így tovább.
Beállíthatja a zárolási bővítmény létrehozásakor végrehajtandó szokásos műveleteket, vagy frissítheti a futó munkamenetet a háttérrendszerből:
curl -X PATCH "https://chastify.net/api/extensions/sessions/$SESSION_ID/regular-actions/config" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "cumulative",
"regularitySeconds": 86400,
"maxActions": 4
}'
Módok:
unlimited: a műveletek mindig elérhetők.non_cumulative: egyszerre egy ablak válik elérhetővé; a fel nem használt műveletek nem halmozódnak.cumulative: a műveletekmaxActions-ig halmozódnak.
Aktuális elérhetőség olvasása:
curl "https://chastify.net/api/extensions/sessions/$SESSION_ID/regular-actions" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN"
Megbízható rendszeres művelet beküldése:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/regular-actions" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"kind": "checkin",
"score": 92
}
}'
Használj rendszeres műveleteket, amikor a fő szabály az, hogy "milyen gyakran történhet meg ez a művelet?".
Egyéni szükséges műveletek
Használja a kötelező előrehaladást, ha a fő szabály az, hogy „hány teljesítésre van szükség naponta vagy hetente?”.
A követelménykonfiguráció a telepített bővítmény munkamenet-konfigurációjában található a extensionRequirements alatt:
{
"extensionRequirements": {
"enabled": true,
"metric": "completion",
"requiredCount": 4,
"cadence": {
"every": 1,
"unit": "day",
"timezone": "UTC"
},
"punishment": {
"type": "add_time",
"seconds": 1800,
"reason": "Daily extension requirement missed"
}
}
}
Támogatott kadencia mértékegységek:
dayweek
Támogatott kihagyott ablak büntetési típusok:
noneadd_timefreezepillory
Csak azután rögzítse a megbízható előrehaladást, miután a háttérrendszere ellenőrizte a műveletet:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/requirements/progress" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"metric": "completion",
"amount": 1,
"occurredAt": "2026-05-31T18:42:41.715Z"
}'
A Chastify ütemezője kiértékeli a befejezett ablakokat, és alkalmazza a konfigurált kihagyott ablak büntetést, ha a befejezett ablakok száma requiredCount alatt van.
Használja mindkét funkciót együtt, amikor szükséges:
- A
regular-actionskorlátozza, hogy egy felhasználó milyen gyakran küldhet be kódot. - A
requirements/progressrögzíti, hogy történt-e elegendő ellenőrzött befejezés az adott napon vagy héten. - A
metadata.unlockBlockersblokkok feloldása addig történik, amíg az aktuális követelmény teljesül.
Jutalmak
A jutalmak privilegizált zárolási műveletek. Hívd meg őket a háttérrendszeredből egy ellenőrzött siker után.
Időpont eltávolítása:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "remove_time",
"params": 600
}'
Higiénikus nyitás indítása:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "hygienic_unlock.start",
"params": {
"durationSeconds": 900
}
}'
Egyéni értesítés küldése:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/notifications/custom" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Challenge complete",
"message": "Your extension reward was applied.",
"target": "wearer"
}'
Büntetések
A büntetések szintén privilegizált zárolási műveletek. Csak akkor alkalmazd őket, ha a háttérrendszered hibát vagy kihagyott követelményt ellenőrzött.
Idő hozzáadása:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "add_time",
"params": 1800
}'
Fagy:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "freeze",
"params": {
"durationSeconds": 3600
}
}'
Feladat hozzárendelése:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "task.assign",
"params": {
"actor": "extension",
"taskText": "Write a short reflection about the missed requirement.",
"points": 5,
"durationMinutes": 30
}
}'
Kezdő pellengér:
curl -X POST "https://chastify.net/api/extensions/sessions/$SESSION_ID/action" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "pillory",
"params": {
"durationSeconds": 3600,
"reason": "Extension requirement missed"
}
}'
Ajánlott minta
Játékokhoz, gyakorlatokhoz és ellenőrző kihívásokhoz:
- Az iframe megnyílik és beolvassa az indítási hash-t.
- Az Iframe arra kéri a backendet, hogy hozzon létre egy kihívást a
mainTokenhasználatával. - A backend a
mainTokenkódot az alkalmazás hatókörébe tartozó fejlesztői API-kulccsal cseréli/használja. - Az iframe elküldi a válaszokat a backend rendszernek.
- A háttérrendszer ellenőrzi az eredményt.
- A backend a
requirements/progresssegítségével rögzíti a megbízható előrehaladást. - A háttérrendszer jutalmat vagy büntetést alkalmaz a
/actionhasználatával. - A
metadata.unlockBlockersésmetadata.homeActionsháttérprogram-javítások. - Az iframe beolvassa a biztonságos állapotot/metaadatokat, és megjeleníti az eredményt.
Ezáltal a bővítmény felhasználói felülete rugalmas marad, miközben a szerveren megbízható zárolási állapot marad.