Evenimente de pe server și cereri semnate

Ultima actualizare: 7 oct. 2026

Serverul site-ului trimite evenimente la https://ingest.onepanelforall.com, semnate cu secretul site-ului. Merge din orice limbaj; pentru .NET există pachetul OnePanelForAll.Client, care face totul pentru tine.

Adrese

Metodă Cale Pentru ce
POST /api/v1/ingest/events trimite 1–100 evenimente
GET /api/v1/ingest/ping verifică cheia, secretul și ceasul

Semnătura

Fiecare cerere are patru antete:

Antet Valoare
X-OnePanel-Key identificatorul cheii site-ului, opk_…
X-OnePanel-Timestamp ora Unix în secunde (cel mult 5 minute diferență)
X-OnePanel-Nonce 16–64 de caractere [A-Za-z0-9_-], nou la fiecare cerere
X-OnePanel-Signature v1= + HMAC în hex cu litere mici
canonical = "v1\n" + timestamp + "\n" + nonce + "\n" + METODĂ + "\n" + cale + "\n" + hex(sha256(corp))
signature = "v1=" + hex(HMAC-SHA256(secret, canonical))

cale este fără query string; corp sunt exact octeții trimiși (gol la GET). Exemplu de verificare: secretul ops_test-secret, ora 1700000000, nonce-ul nonce-0123456789ab, POST /api/v1/ingest/events, corpul {"events":[]} dau v1=c1cc9d2a7b5ad84585991ae4d740cf3b84378abd27ce15a0ff344aae0e0c9809.

Corpul

{ "events": [ {
    "id": "contact-8f14e45f",
    "type": "contact_message",
    "version": 1,
    "occurredAt": "2026-10-03T18:35:00Z",
    "data": { "name": "Ana Pop", "email": "[email protected]", "message": "Bună ziua…" }
} ] }

Dă fiecărui eveniment un id din datele tale: dacă îl trimiți din nou, se păstrează o singură dată.

Tip Câmpuri principale în data
contact_message name, email, subject, message, pageUrl
user_signup userId, email, name
user_deleted userId
payment_succeeded, payment_failed, payment_refunded paymentId, amount, currency, plan, reason
subscription_canceled subscriptionId, plan, reason
order_placed orderId, amount, currency, email, name
custom_event name, properties (≤ 20)

Răspunsuri

200 cu { "accepted": 1, "duplicates": 0, "rejected": [] }; un eveniment greșit este respins singur. 401 înseamnă cheie, secret sau ceas greșit; 409, 429 și 5xx le reîncerci mai târziu, cu nonce nou.

.NET

builder.Services.AddOnePanel(builder.Configuration.GetSection("OnePanel"));

await onePanel.SendAsync(OnePanelEvent.ContactMessage(
    message: form.Message, name: form.Name, email: form.Email, id: $"contact-{saved.Id}"));
onePanel.Enqueue(OnePanelEvent.UserSignup(user.Id.ToString(), user.Email, user.Name));

Setările, ca variabile de mediu pe server: OnePanel__BaseUrl, OnePanel__KeyId, OnePanel__Secret. Nu pune niciodată secretul în cod sau în repository.