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.