Ugrás a fő tartalomhoz

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.

figyelem

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álHol fut
Blokkolók feloldásaA 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ítZárolás-indítás konfiguráció vagy háttér-metaadat/folyamathívások
Kezdőlap műveletekLá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űveletekIntervallumonként korlátozott számú viselői műveletet engedélyezA Chastify nyomon követi a számlálókat; a háttérrendszer megbízható műveleteket küld be
Kötelező előrehaladásNapi vagy heti teljesítési követelmények nyomon követéseA háttérrendszer rögzíti az előrehaladást; a Chastify ütemező ellenőrzi a kihagyott ablakokat
JutalmakEltávolítja az időt, elindítja a higiéniai nyitást, vagy értesítést küld a sikeres végrehajtás utánA háttérrendszered privilegizált végpontokat hív meg
BüntetésekIdőt ad hozzá, lefagy, feladatot rendel hozzá, pellengérre állít, vagy értesítést küld ellenőrzött hiba utánA 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"
}
]
}'
megjegyzés

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űveletek maxActions-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:

  • day
  • week

Támogatott kihagyott ablak büntetési típusok:

  • none
  • add_time
  • freeze
  • pillory

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.

tanács

Használja mindkét funkciót együtt, amikor szükséges:

  • A regular-actions korlátozza, hogy egy felhasználó milyen gyakran küldhet be kódot.
  • A requirements/progress rögzíti, hogy történt-e elegendő ellenőrzött befejezés az adott napon vagy héten.
  • A metadata.unlockBlockers blokkok 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"
}
}'

Játékokhoz, gyakorlatokhoz és ellenőrző kihívásokhoz:

  1. Az iframe megnyílik és beolvassa az indítási hash-t.
  2. Az Iframe arra kéri a backendet, hogy hozzon létre egy kihívást a mainToken használatával.
  3. A backend a mainToken kódot az alkalmazás hatókörébe tartozó fejlesztői API-kulccsal cseréli/használja.
  4. Az iframe elküldi a válaszokat a backend rendszernek.
  5. A háttérrendszer ellenőrzi az eredményt.
  6. A backend a requirements/progress segítségével rögzíti a megbízható előrehaladást.
  7. A háttérrendszer jutalmat vagy büntetést alkalmaz a /action használatával.
  8. A metadata.unlockBlockers és metadata.homeActions háttérprogram-javítások.
  9. 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.