Skip to main content

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.

caution

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

OminaisuusMitä se tekeeMissä se toimii
Avaa estoelementitEstä 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 toiminnotLisää lukitussivulle näkyvän toiminnon, kuten "Toista haaste"Lukituksen käynnistysasetukset tai taustajärjestelmän metatietojen korjaukset
Säännölliset toiminnotSallii käyttäjän rajoitetun määrän toimintoja aikaväliä kohdenChastify seuraa laskureita; taustajärjestelmäsi lähettää luotetut toiminnot
Vaadittu edistyminenSeuraa päivittäisiä tai viikoittaisia ​​​​suoritusvaatimuksiaTaustajärjestelmäsi tallentaa edistymisen; Chastify-ajoitusohjelma tarkistaa puuttuneet ikkunat
PalkinnotPoistaa aikaa, aloittaa hygienia-avaamisen tai lähettää ilmoituksen varmennetun onnistumisen jälkeenTaustajärjestelmäsi kutsuu etuoikeutettuja päätepisteitä
RangaistuksetLisää aikaa, jäädyttää, määrittää tehtävän, aloittaa häpeäpaalun tai lähettää ilmoituksen varmistetun epäonnistumisen jälkeenTaustajä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"
}
]
}'
note

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ät maxActions: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:

  • day
  • week

Tuetut rangaistustyypit, jotka koskevat ikkunan ohittamista:

  • none
  • add_time
  • freeze
  • pillory

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.

tip

Käytä molempia ominaisuuksia yhdessä tarvittaessa:

  • regular-actions rajoittaa sitä, kuinka usein käyttäjä voi lähettää koodin.
  • requirements/progress tallentaa, tapahtuiko päivän tai viikon aikana riittävästi varmennettuja suorituksia.
  • metadata.unlockBlockers estää 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"
}
}'

Pelit, rutiinit ja vahvistushaasteet:

  1. Iframe avautuu ja lukee käynnistyshajautuksen.
  2. Iframe pyytää backendiäsi luomaan haasteen käyttämällä mainToken:ta.
  3. Taustajärjestelmä vaihtaa/käyttää mainToken:ta sovelluslaajuisen Developer API -avaimensa kanssa.
  4. Iframe lähettää vastaukset taustajärjestelmääsi.
  5. Backend tarkistaa tuloksen.
  6. Backend tallentaa luotettavan edistymisen requirements/progress:lla.
  7. Taustajärjestelmä palkitsee tai rangaistaan ​​koodilla /action.
  8. Taustajärjestelmän korjaustiedostot metadata.unlockBlockers ja metadata.homeActions.
  9. Iframe lukee turvallisen tilan/metatiedot ja näyttää tuloksen.

Tämä pitää laajennuksen käyttöliittymän responsiivisena ja samalla luotetun lukitustilan palvelimella.