Laajennus-API-ominaisuudet
Käytä tätä sivua, kun jo ymmärrät laajennusmallin perusperiaatteet ja haluat rakentaa todellista lukituskäyttäytymistä: pakolliset toiminnot, estäjien avaamisen, säännöllisyyden, palkinnot ja rangaistukset.
Selaimen iframe-koodiin ei luoteta.
iframesi voi renderöidä käyttöliittymän ja lukea turvallisen istunnon kontekstin. Kaikki, mikä kirjoittaa istunnon tilan, palkitsee käyttäjää, poistaa aikaa, tyhjentää lukituksen eston, tallentaa luotettujen vaatimusten edistymisen, käynnistää tai hylkää yritysajastimen tai soveltaa rangaistusta, on tarkistettava taustajärjestelmäsi toimesta.
Ominaisuuskartta
| Ominaisuus | Mitä se tekee | Missä se toimii |
|---|---|---|
| Avaa estoelementit | Estä lukituksen avaaminen, kunnes laajennuksesi poistaa eston tai tallentaa riittävästi luotettua edistymistä | Lukitse-käynnistys-määritys tai taustajärjestelmän metadata-/edistymiskutsut |
| Etusivun toiminnot | Lisää lukitussivulle näkyvän toiminnon, kuten "Toista haaste" | Lukituksen käynnistysasetukset tai taustajärjestelmän metatietojen korjaukset |
| Säännölliset toiminnot | Sallii käyttäjän rajoitetun määrän toimintoja aikaväliä kohden | Chastify seuraa laskureita; taustajärjestelmäsi lähettää luotetut toiminnot |
| Vaadittu edistyminen | Seuraa päivittäisiä tai viikoittaisia suoritusvaatimuksia | Taustajärjestelmäsi tallentaa edistymisen; Chastify-ajoitusohjelma tarkistaa puuttuneet ikkunat |
| Palkinnot | Poistaa aikaa, aloittaa hygienia-avaamisen tai lähettää ilmoituksen varmennetun onnistumisen jälkeen | Taustajärjestelmäsi kutsuu etuoikeutettuja päätepisteitä |
| Rangaistukset | Lisää aikaa, jäädyttää, määrittää tehtävän, aloittaa häpeäpaalun tai lähettää ilmoituksen varmistetun epäonnistumisen jälkeen | Taustajärjestelmäsi kutsuu etuoikeutettuja päätepisteitä |
Pakolliset taustajärjestelmän otsikot
Etuoikeutetut laajennuspäätepisteet vaativat molemmat otsikot:
Authorization: Bearer YOUR_APP_SCOPED_DEVELOPER_KEY
x-chastify-main-token: MAIN_TOKEN_FROM_IFRAME_HASH
mainToken tunnistaa avatun laajennusistunnon. Kehittäjän API-avain todistaa, että pyyntö tuli taustajärjestelmästäsi.
Avaa estoaineet
Käytä lukituksen avaamisen estoaineita, kun käyttäjän on suoritettava jokin asia loppuun ennen lukituksen avaamista. Esimerkkejä:
- Voita 3 peliä.
- Täydennä tämän päivän treenitodistus.
- Ratkaise yksi vahvistuspulma.
- Suorita kaikki nykyisen ikkunan vaaditut laajennustoiminnot.
Tuettuja kuvioita on kaksi.
Edistymiseen perustuvat estäjä
Käytä initialMetadata.unlockRequirements-koodia, kun lukon tulisi estyä heti, kun lukon käyttö käynnistyy tai jaettu mallipohja hyväksytään. Chastify alustaa laajennuksen istunnon tilan tämän yleisen määrityksen perusteella, joten esto on olemassa jo ennen kuin käyttäjä avaa laajennuksesi ensimmäistä kertaa.
{
"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"
}
]
}
}
Kun taustajärjestelmäsi on vahvistanut luotettavan suorituksen, kirjaa edistyminen samalle mittarille:
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
}'
Chastify tallentaa tämän lukituksen avaamisen edistymisenä ja käsittelee vaatimuksen automaattisesti täytetyksi, kun edistyminen saavuttaa requiredCount:n. Lukituskortit voivat näyttää edistymistä, kuten 1 of 3 complete.
Käytä vakaita mittareiden nimiä. Yksi mitta edustaa yhtä aktiivista lukituksen avausvaatimusta kyseiselle laajennusistunnolle.
Yritysten aikarajat
Käytä koodia attemptLimit, kun luotettavan yrityksen on vanhentuttava, jos sitä ei ole suoritettu ajoissa. Chastify tallentaa aktiivisen yrityksen koodiin data.attemptLimits.<metric> ja voi merkitä sen epäonnistuneeksi määräajan jälkeen. Tätä tilaa hallitsee Chastify; aloita ja hylkää yritykset yrityksen päätepisteiden kautta sen sijaan, että kirjoittaisit koodin data.attemptLimits itse.
{
"attemptLimit": {
"enabled": true,
"metric": "memory_win",
"durationSeconds": 300,
"startPolicy": "activity"
}
}
startPolicy voi olla activity, kun lähtölaskenta alkaa käyttäjän aloittaessa pelaamisen, tai availability, kun lähtölaskenta alkaa heti, kun toiminto on käytettävissä lukolle.
Aloita yritys taustajärjestelmästäsi:
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"
}'
Kun taustajärjestelmäsi tarkistaa yrityksen, pyydä Chastify:ta hylkäämään se, jos määräaika on umpeutunut:
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"
}'
Jos epäonnistuneet yritykset vievät jäähyajan, lähetä myös normaali toiminto epäonnistuneelle yritykselle.
Manuaaliset estolaitteet
Käytä unlockBlockers-koodia, kun taustajärjestelmäsi täytyy päättää manuaalisesti, onko lukituksen avaaminen estetty. Korjaa taustajärjestelmäsi metatiedot:
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."
}
}
]
}'
Tyhjennä esto sen jälkeen, kun taustajärjestelmäsi on vahvistanut valmistumisen:
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"
}
]
}'
unlockBlockers on manuaalinen metadata. Se kertoo Chastify:lle, että lukituksen avaaminen on estetty, kunnes taustajärjestelmäsi poistaa eston. initialMetadata.unlockRequirements on edistymiseen perustuva metadata. ZXQTER0ZXQ voi arvioida sen automaattisesti luotettavan edistymisen perusteella, joka on tallennettu vastaavuusmittarille.
Säännöllisyysominaisuus
Säännölliset toiminnot ovat hyödyllisiä, kun käyttäjän sallitaan tehdä jotain kiinteällä tahdilla: kerran tunnissa, neljä kertaa päivässä, yksi lähetys viikossa ja niin edelleen.
Voit määrittää säännöllisiä toimintoja lukituslaajennuksen luomisen yhteydessä tai päivittää käynnissä olevan istunnon taustajärjestelmästäsi:
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
}'
Tilat:
unlimited: toiminnot ovat aina käytettävissä.non_cumulative: yksi ikkuna tulee saataville kerrallaan; käyttämättömät toiminnot eivät pinota.cumulative: toiminnot kertyvätmaxActions:iin asti.
Lue tämänhetkinen saatavuus:
curl "https://chastify.net/api/extensions/sessions/$SESSION_ID/regular-actions" \
-H "Authorization: Bearer $DEVELOPER_KEY" \
-H "x-chastify-main-token: $MAIN_TOKEN"
Lähetä luotettava säännöllinen toiminto:
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
}
}'
Käytä säännöllisiä toimintoja, kun pääsääntö on "kuinka usein tämä toiminto voi tapahtua?".
Mukautetut pakolliset toiminnot
Käytä vaadittua edistymistä, kun pääsääntö on "kuinka monta suoritusta vaaditaan päivässä tai viikossa?".
Vaatimuskonfiguraatio sijaitsee asennetun laajennuksen istuntokonfiguraatiossa kohdassa extensionRequirements:
{
"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"
}
}
}
Tuetut poljinnopeusyksiköt:
dayweek
Tuetut rangaistustyypit, jotka koskevat ikkunan ohittamista:
noneadd_timefreezepillory
Kirjaa luotettava edistyminen vasta sen jälkeen, kun taustajärjestelmäsi on vahvistanut toiminnon:
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"
}'
Chastify:n ajoitustoiminto arvioi valmiit ikkunat ja soveltaa määritettyä ohitetun ikkunan rangaistusta, jos valmiiden ikkunoiden määrä on alle requiredCount:n.
Käytä molempia ominaisuuksia yhdessä tarvittaessa:
regular-actionsrajoittaa sitä, kuinka usein käyttäjä voi lähettää koodin.requirements/progresstallentaa, tapahtuiko päivän tai viikon aikana riittävästi varmennettuja suorituksia.metadata.unlockBlockersestää lukituksen avautumisen, kunnes nykyinen vaatimus on täytetty.
Palkinnot
Palkinnot ovat etuoikeutettuja lukitustoimintoja. Kutsu niitä taustajärjestelmästäsi varmennetun onnistumisen jälkeen.
Poista aika:
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
}'
Aloita hygieeninen avaaminen:
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
}
}'
Lähetä mukautettu ilmoitus:
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"
}'
Rangaistukset
Rangaistukset ovat myös etuoikeutettuja lukitustoimintoja. Käytä niitä vasta sen jälkeen, kun taustajärjestelmäsi on vahvistanut virheen tai puuttuvan vaatimuksen.
Lisää aika:
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
}'
Jäädytä:
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
}
}'
Määritä tehtävä:
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
}
}'
Aloita häpeäpaalu:
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"
}
}'
Suositeltu kuvio
Pelit, rutiinit ja vahvistushaasteet:
- Iframe avautuu ja lukee käynnistyshajautuksen.
- Iframe pyytää backendiäsi luomaan haasteen käyttämällä
mainToken:ta. - Taustajärjestelmä vaihtaa/käyttää
mainToken:ta sovelluslaajuisen Developer API -avaimensa kanssa. - Iframe lähettää vastaukset taustajärjestelmääsi.
- Backend tarkistaa tuloksen.
- Backend tallentaa luotettavan edistymisen
requirements/progress:lla. - Taustajärjestelmä palkitsee tai rangaistaan koodilla
/action. - Taustajärjestelmän korjaustiedostot
metadata.unlockBlockersjametadata.homeActions. - Iframe lukee turvallisen tilan/metatiedot ja näyttää tuloksen.
Tämä pitää laajennuksen käyttöliittymän responsiivisena ja samalla luotetun lukitustilan palvelimella.