Dokumentacija

Dokumentacija

Sve što vam je potrebno za integraciju Dampera u vaš proizvod. Dodajte widget za povratne informacije, ugradite javne stranice, koristite API ili povežite AI agente.

Widget za povratne informacije

Widget za povratne informacije omogućuje vašim korisnicima slanje zahtjeva za značajke, prijava grešaka i poboljšanja izravno iz vaše aplikacije.

Instalacija

Dodajte jednu script oznaku prije zatvarajuće body oznake. Zamijenite YOUR_PROJECT_ID s ID-om vašeg projekta s nadzorne ploče.

<script
  src="https://api.usedamper.com/widget.js"
  data-project-id="YOUR_PROJECT_ID"
></script>

Konfiguracija

Prilagodite izgled i ponašanje widgeta s data atributima.

Atribut Zadano Opis
data-themeautoTema boja: auto, light ili dark
data-positionrightPozicija widgeta: right ili left
data-trigger-labelFeedbackTekst na gumbu za pokretanje
data-enable-sentimenttruePrikaži korak ocjenjivanja raspoloženja prije obrasca za povratne informacije

JavaScript API

Koristite globalni objekt Damper za identifikaciju korisnika, ručno otvaranje widgeta ili izravno slanje povratnih informacija iz frontenda bez čekanja na klik.

Parametar {{t.docs.paramDefault}} Opis
titleRequiredShort summary shown in the inbox and public board.
descriptionRequiredDetailed context for the request, bug, or question.
typefeatureFeedback type: bug, feature, improvement, or question.
metadata{}Optional structured context attached to the submission.
isPublictrueSet to false to keep script-submitted feedback off the public board.
// Identify the current user after login
await Damper.identify({
  userId: 'user_123',
  email: 'jane@acme.com',
  name: 'Jane Smith',
  plan: 'enterprise',
  tier: 10
})

// Submit feedback directly without opening the widget UI
await Damper.submitFeedback({
  title: 'Export fails on large CSV',
  description: 'The export returns 500 when the report contains more than 10k rows.',
  type: 'bug',
  metadata: { area: 'reports', reportId: 'rpt_123' },
  isPublic: false // Optional: create as private feedback
})

// Open the widget manually when needed
Damper.open()

Identifikacija korisnika

Identificirajte korisnike za omogućavanje ponderiranog glasanja i praćenje tko je poslao povratne informacije. Pozovite metodu identify nakon učitavanja skripte widgeta.

await Damper.identify({
  userId: 'user_123',
  email: 'jane@acme.com',
  name: 'Jane Smith',
  plan: 'enterprise',
  tier: 10,
  userHash: 'hmac_sha256...'
})
HMAC verifikacija

Za sprječavanje krivotvorenja identiteta generirajte HMAC hash na serveru koristeći tajni ključ vašeg projekta i proslijedite ga kao userHash. Tajni ključ pronađite na nadzornoj ploči pod Postavke.

Javni roadmap

Ugradite svoj roadmap proizvoda na bilo koju stranicu. Posjetitelji mogu vidjeti planirane, tekuće i završene stavke te glasovati za ono što im je važno.

<iframe
  src="https://api.usedamper.com/embed/roadmap?project=YOUR_SLUG"
  width="100%"
  height="600"
  frameborder="0"
></iframe>

Javni dnevnik promjena

Ugradite svoj dnevnik promjena proizvoda kako biste korisnike informirali o novim značajkama i poboljšanjima.

<iframe
  src="https://api.usedamper.com/embed/changelog?project=YOUR_SLUG"
  width="100%"
  height="600"
  frameborder="0"
></iframe>

Javna status stranica

Objavite status stranicu po projektu s javnim provjerama, incidentima, održavanjem, pretplatama i opcionalnim custom domenama.

Postavljanje iz Status workspacea

Otvorite projekt u nadzornoj ploči, idite na Status, kreirajte grupe i provjere, a zatim uključite javnu status stranicu u publishing postavkama. Izvana se prikazuju samo javne grupe, provjere, incidenti i periodi održavanja.

Hostana status stranica

Damper poslužuje gotovu javnu status stranicu s imenom projekta, sažecima uptimea, dnevnim uptime trakama, incidentima, održavanjem i prijavom pretplatnika.

https://api.usedamper.com/api/public/render/status/YOUR_PROJECT_SLUG?account=YOUR_ACCOUNT_ID

Podržane vrste provjera

  • HTTP provjere nadziru URL putem GET ili HEAD zahtjeva, timeouta, očekivanog statusnog raspona i opcionalnih zaglavlja.
  • SSL provjere nadziru valjanost certifikata i upozoravaju prije isteka.
  • Heartbeat provjere nadziru pozadinske poslove ili cron zadatke koji moraju pingati Damper unutar konfiguriranog intervala i grace perioda.

Heartbeat endpoint

Svaka heartbeat provjera dobiva jedinstveni tokenizirani endpoint. Pozovite ga iz workera ili cron zadatka svaki put kada posao uspješno završi.

curl -X POST "https://api.usedamper.com/api/status/heartbeats/YOUR_HEARTBEAT_TOKEN"

Obavijesti pretplatnicima

Posjetitelji se mogu pretplatiti izravno na javnoj status stranici. Damper prvo šalje email za potvrdu, a zatim isporučuje javne obavijesti o incidentima, oporavcima, ažuriranjima i održavanju.

Custom domene

Možete dodijeliti custom domenu kao što je status.example.com u publishing postavkama projekta i usmjeriti je na Damper-hostanu status stranicu.

status.example.com

Javna ploča povratnih informacija

Ugradite javnu ploču povratnih informacija gdje posjetitelji mogu pregledavati, slati i glasovati za povratne informacije.

Hosted ploče

Hosted ploče su samostalne, potpuno interaktivne stranice koje poslužuje Damper. Nije potreban iframe ili embed kod — samo povežite na URL. Uključuju glasanje, filtriranje, sortiranje, stranice s detaljima i provjeru identiteta putem e-pošte.

Slack Integration

Connect your Slack workspace to push messages directly into Damper as feedback. Use the "Push to Damper" message shortcut to save any Slack message as a feedback item.

OAuth 2.0 Provider

Create OAuth applications to let external services submit and read feedback from your Damper project. Supports the authorization code flow with optional PKCE.

Creating an OAuth App

Go to your project's Settings > OAuth Apps in the dashboard. Create a new app with a name and redirect URI. You'll receive a client ID and client secret.

Authorization Flow

  1. Redirect the user to the authorization endpoint with your client ID, redirect URI, and requested scopes.
  2. The user approves access on the Damper consent page.
  3. Damper redirects back to your redirect URI with an authorization code.
  4. Exchange the code for an access token via the token endpoint.
Use the OAuth endpoints

OAuth access tokens are only valid for /api/integrations/* or /api/external/* routes. Do not send OAuth tokens to /api/projects/* or /api/agent/*.

Scopes

Scope Description
feedback:writeSubmit feedback to the project
feedback:readRead feedback items and linked roadmap tasks
project:readRead project metadata, widget settings, and resource counts
roadmap:readRead roadmap items and linked feedback relationships
context:readRead project specs and context documentation
changelog:readRead changelog entries and shipped work

Endpoints

Method Path Description
GEThttps://api.usedamper.com/oauth/authorizeAuthorization page (redirect users here)
POSThttps://api.usedamper.com/api/oauth/tokenExchange authorization code for access token
GEThttps://api.usedamper.com/api/integrations/projectGet project metadata for the connected project
GEThttps://api.usedamper.com/api/integrations/roadmapList roadmap items for the connected project
GEThttps://api.usedamper.com/api/integrations/contextList context sections or fetch a specific section
GEThttps://api.usedamper.com/api/integrations/changelogList changelog entries for the connected project
POSThttps://api.usedamper.com/api/integrations/feedbackSubmit feedback using OAuth access token
GEThttps://api.usedamper.com/api/integrations/feedback/:idGet a feedback item with linked roadmap tasks

Canonical token response

Damper returns a stable snake_case token payload. Treat the following fields as the canonical response contract.

{
  "access_token": "dat_...",
  "token_type": "Bearer",
  "expires_in": 2592000,
  "scope": "feedback:read project:read roadmap:read context:read changelog:read",
  "project_id": "proj_123"
}
Refresh tokens

Damper OAuth currently returns only an access token. Refresh tokens are not supported at this time.

Auth error responses

OAuth auth failures return structured error codes so integrations can distinguish invalid tokens, insufficient scope, and incorrect route usage.

{
  "error": "Invalid or expired token",
  "code": "oauth_token_invalid"
}

{
  "error": "Insufficient scope. Required: roadmap:read",
  "code": "oauth_insufficient_scope",
  "requiredScope": "roadmap:read"
}

{
  "error": "OAuth access tokens can only be used with /api/integrations/* or /api/external/* endpoints.",
  "code": "oauth_wrong_endpoint",
  "allowedPrefixes": ["/api/integrations/", "/api/external/"]
}

Integration examples

Use these example calls as your starting point for third-party integrations.

GET /api/integrations/project

curl -H "Authorization: Bearer dat_..." \
  "https://api.usedamper.com/api/integrations/project"

GET /api/integrations/roadmap

curl -H "Authorization: Bearer dat_..." \
  "https://api.usedamper.com/api/integrations/roadmap?status=planned&limit=20"

GET /api/integrations/context

curl -H "Authorization: Bearer dat_..." \
  "https://api.usedamper.com/api/integrations/context"

curl -H "Authorization: Bearer dat_..." \
  "https://api.usedamper.com/api/integrations/context/specs%2Foauth-dashboard"

GET /api/integrations/changelog

curl -H "Authorization: Bearer dat_..." \
  "https://api.usedamper.com/api/integrations/changelog?status=published&limit=10"

Prilagođene HTML i Markdown stranice

Osim iframe ugradnji, možete dohvatiti svoje javne stranice kao sirovi HTML ili Markdown. Koristite ih za potpunu kontrolu dizajna ili za integraciju s generatorima statičnih stranica.

Dostupne vrste stranica

  • roadmap
  • changelog
  • feedback
  • status
https://api.usedamper.com/api/public/render/status/YOUR_PROJECT_SLUG
https://api.usedamper.com/api/public/render/status/YOUR_PROJECT_SLUG?format=md

Javni API

Programski pristupite podacima svog projekta. Javni endpointi ne zahtijevaju autentikaciju. Autenticirani endpointi koriste Bearer token s vaše nadzorne ploče.

Authorization: Bearer dmp_your_api_key

Status endpointi

Koristite javni status API za dohvat trenutnih stanja provjera, grupiranih komponenti, incidenata, održavanja i povijesti uptimea za projekt.

curl "https://api.usedamper.com/api/public/status/YOUR_PROJECT_SLUG?account=YOUR_ACCOUNT_ID"
Heartbeat ingestija

Heartbeat provjere koriste tokenizirani javni endpoint. Pošaljite POST iz crona ili workera kada posao uspješno završi.

Serverski unos grešaka

Koristite Damper API ključ kada backend ili worker želi slati grupirane logove grešaka u Inbox. API ključevi koriste prefiks dmp_ i stvaraju se u Settings > API Keys.

Unesi backend greške API ključem

Ključevi scoped na projekt mogu zvati endpoint izravno. Account-scoped ključevi moraju dodati ?project_id=YOUR_PROJECT_ID u URL zahtjeva.

curl -X POST \
  -H "Authorization: Bearer dmp_..." \
  -H "Content-Type: application/json" \
  "https://api.usedamper.com/api/ingest/errors?project_id=proj_123" \
  -d '{
    "rawLog": "Error: connect ECONNREFUSED 127.0.0.1:5432\\n    at connect (db.js:42:11)",
    "occurredAt": "2026-03-11T10:12:34.000Z",
    "hints": {
      "service": "api",
      "environment": "production",
      "severity": "error"
    }
  }'

Serverski unos logova

Koristite ingest endpoint za slanje redigiranih grupa serverskih grešaka u Damper. Unesene greške pojavljuju se u internom Logs workspaceu, gdje tim može pregledati strukturirani kontekst i otvoriti internu grešku iz log grupe.

Ograničenja brzine i veličine payloada

Endpoint je ograničen po API ključu i projektu, cijelo tijelo zahtjeva ograničeno je na 64 KB, a strukturirani kontekst se prije spremanja ograničava i redigira. Obradite 429 odgovore s retry backoffom.

curl -X POST \
  -H "Authorization: Bearer dmp_..." \
  -H "Content-Type: application/json" \
  "https://api.usedamper.com/api/ingest/errors?project_id=proj_123" \
  -d '{
    "rawLog": "TypeError: Cannot read properties of undefined\\n    at handler (server.js:10:4)",
    "occurredAt": "2026-03-11T10:05:00.000Z",
    "hints": {
      "service": "worker",
      "environment": "production",
      "severity": "error"
    },
    "fingerprint": "jobs:critical-timeout",
    "context": {
      "request": {
        "method": "POST",
        "path": "/api/jobs/run"
      },
      "job": {
        "id": "job_123",
        "queue": "critical"
      }
    }
  }'
{
  "feedbackId": "fb_123",
  "action": "created",
  "source": "backend",
  "feedbackStatus": "new",
  "title": "worker: TypeError: Cannot read properties of undefined",
  "dedupeKey": "sha256...",
  "occurrenceCount": 1,
  "firstOccurredAt": "2026-03-11T10:05:00.000Z",
  "lastOccurredAt": "2026-03-11T10:05:00.000Z",
  "aiTriageScheduled": true
}
curl -X POST \
  -H "Authorization: Bearer dmp_..." \
  -H "Content-Type: application/json" \
  "https://api.usedamper.com/api/ingest/errors/batch?project_id=proj_123" \
  -d '{
    "events": [
      {
        "rawLog": "Error: queue timeout\\n    at run (worker.js:14:3)",
        "fingerprint": "queue:timeout",
        "hints": {
          "service": "worker",
          "environment": "production",
          "severity": "error"
        }
      },
      {
        "rawLog": "Error: queue timeout\\n    at run (worker.js:14:3)",
        "fingerprint": "queue:timeout",
        "hints": {
          "service": "worker",
          "environment": "production",
          "severity": "error"
        }
      }
    ]
  }'
  • API ključevi na razini projekta mogu pozivati /api/ingest/errors izravno. Ključevi na razini računa moraju poslati i query parametar project_id.
  • Tijelo zahtjeva podržava rawLog, occurredAt, hints, opcionalni fingerprint override za prilagođeno grupiranje i opcionalni context objekt za strukturirane metapodatke.
  • Damper redigira uobičajene tajne, skraćuje prevelike vrijednosti i sprema samo ograničeni redigirani context objekt.
  • Ekvivalentne greške agregiraju se u istu log grupu pomoću dedupe potpisa umjesto stvaranja duplikata.
  • Pod većim prometom koristite batching ili sampling na svojoj strani, šaljite stabilne hints za service i environment te ponavljajte 429 odgovore s eksponencijalnim backoffom.
  • Prilagođeni fingerprinti omogućuju spajanje bučnih varijanti u jedan operativni problem kada bi ih zadano parser-grupiranje razdvojilo.
  • Nakon ingestije log grupe se mogu dodijeliti, utišati, odgoditi ili pretvoriti u internu grešku izravno iz Logs workspacea.
  • Koristite /api/ingest/errors/batch kada workeri trebaju poslati više grupiranih grešaka u jednom zahtjevu. Batch se unaprijed validira i ostaje pod istim ograničenjem od 64 KB po zahtjevu.

CLI

Damper CLI stvara git radna stabla za svaki zadatak, ubacuje puni kontekst zadatka i pokreće Claude Code — tako da AI agenti započinju sa svime što trebaju.

npx @damper/cli setup
npx @damper/cli

AI izvršavanje (MCP)

Povežite Claude Code, Cursor ili bilo koji MCP-kompatibilni AI asistent s vašim Damper projektom. AI agenti mogu preuzimati zadatke, pratiti napredak i autonomno označavati rad završenim.

{
  "mcpServers": {
    "damper": {
      "type": "http",
      "url": "https://api.usedamper.com/mcp",
      "headers": {
        "Authorization": "Bearer dmp_..."
      }
    }
  }
}