{"info":{"name":"Worbo API","description":"API-ul Worbo: contacte, obiecte și evenimente, mesaje și template-uri WhatsApp, segmente, automatizări, campanii, inboxul, cataloage și webhooks.","version":"1.0.0","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://api.worbo.app/v1"},{"key":"apiKey","value":"wk_test_…"}],"item":[{"name":"Organizația","description":"Cheia folosită, numerele WhatsApp, consumul lunii și jurnalul.","item":[{"name":"Listează jurnalul organizației","request":{"method":"GET","description":"Cere scope-ul workspace:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/audit-logs","host":["{{baseUrl}}"],"path":["audit-logs"],"query":[{"key":"action","value":"","description":"Doar rândurile acestei acțiuni.","disabled":true},{"key":"since","value":"","description":"Doar ce s-a schimbat în acest moment sau după el.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Citește cheia folosită și organizația ei","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/me","host":["{{baseUrl}}"],"path":["me"]}}},{"name":"Listează numerele WhatsApp, cu calitatea, tranșa și încălzirea","request":{"method":"GET","description":"Cere scope-ul workspace:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/numbers","host":["{{baseUrl}}"],"path":["numbers"]}}},{"name":"Citește consumul unei luni și limitele planului","request":{"method":"GET","description":"Cere scope-ul workspace:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/usage","host":["{{baseUrl}}"],"path":["usage"],"query":[{"key":"month","value":"","description":"Luna, ca AAAA-LL; implicit luna curentă.","disabled":true}]}}}]},{"name":"Contacte","description":"Persoanele, găsite după oricare dintre identitățile lor: telefon, email, BSUID sau ID-ul de la o sursă.","item":[{"name":"Listează și caută contacte","request":{"method":"GET","description":"Cere scope-ul contacts:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/contacts","host":["{{baseUrl}}"],"path":["contacts"],"query":[{"key":"search","value":"","description":"Text din nume, telefon sau email.","disabled":true},{"key":"phone","value":"","description":"Contactul cu acest telefon.","disabled":true},{"key":"email","value":"","description":"Contactul cu acest email.","disabled":true},{"key":"external_id","value":"","description":"Contactul cu acest ID la sursa dată în source.","disabled":true},{"key":"source","value":"","description":"Sursa ID-ului extern sau a contactelor.","disabled":true},{"key":"tag","value":"","description":"Doar contactele cu acest tag.","disabled":true},{"key":"updated_since","value":"","description":"Doar ce s-a schimbat în acest moment sau după el.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează sau actualizează un contact după oricare dintre identitățile lui","request":{"method":"POST","description":"Contactul se găsește după oricare dintre identitățile trimise, iar celelalte i se adaugă. Cu update_existing_only, un contact necunoscut nu se creează. Cere scope-ul contacts:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts","host":["{{baseUrl}}"],"path":["contacts"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"identities\": {\n        \"phone\": \"+40722123456\",\n        \"email\": \"ana@example.com\",\n        \"external_id\": \"crm-1001\"\n    },\n    \"source\": \"crm\",\n    \"fields\": {\n        \"first_name\": \"Ana\"\n    },\n    \"update_existing_only\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Creează sau actualizează cel mult 100 de contacte","request":{"method":"POST","description":"Cere scope-ul contacts:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/batch","host":["{{baseUrl}}"],"path":["contacts","batch"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"items\": [\n        {\n            \"identities\": {\n                \"phone\": \"+40722123456\",\n                \"email\": \"ana@example.com\",\n                \"external_id\": \"crm-1001\"\n            },\n            \"source\": \"crm\",\n            \"fields\": {\n                \"first_name\": \"Ana\"\n            },\n            \"update_existing_only\": false\n        }\n    ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un contact","request":{"method":"GET","description":"Cere scope-ul contacts:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/contacts/:contact","host":["{{baseUrl}}"],"path":["contacts",":contact"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}]}}},{"name":"Schimbă câmpurile și tag-urile unui contact","request":{"method":"PATCH","description":"Cere scope-ul contacts:write.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/:contact","host":["{{baseUrl}}"],"path":["contacts",":contact"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"fields\": {\n        \"last_name\": \"Ionescu\"\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Șterge un contact, la cererea persoanei (GDPR)","request":{"method":"DELETE","description":"Datele contactului se șterg definitiv; jurnalul păstrează doar faptul că s-a făcut ștergerea. Cere scope-ul contacts:delete.","url":{"raw":"{{baseUrl}}/contacts/:contact","host":["{{baseUrl}}"],"path":["contacts",":contact"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}},{"name":"Oprește sau pornește botul pe cuvinte cheie pentru un contact","request":{"method":"POST","description":"De exemplu când un CRM preia conversația. Cere scope-ul contacts:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/:contact/bot","host":["{{baseUrl}}"],"path":["contacts",":contact","bot"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"enabled\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Listează identitățile unui contact","request":{"method":"GET","description":"Cere scope-ul contacts:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/contacts/:contact/identities","host":["{{baseUrl}}"],"path":["contacts",":contact","identities"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}]}}},{"name":"Adaugă o identitate unui contact","request":{"method":"POST","description":"Cere scope-ul contacts:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/:contact/identities","host":["{{baseUrl}}"],"path":["contacts",":contact","identities"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"type\": \"email\",\n    \"value\": \"ana@example.com\",\n    \"primary\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Desprinde o identitate de un contact","request":{"method":"DELETE","description":"Cere scope-ul contacts:write.","url":{"raw":"{{baseUrl}}/contacts/:contact/identities/:identity","host":["{{baseUrl}}"],"path":["contacts",":contact","identities",":identity"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."},{"key":"identity","value":"501","description":"ID-ul identității."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}},{"name":"Unește alt contact cu acesta","request":{"method":"POST","description":"Identitățile, istoricul și obiectele celuilalt contact se mută aici; urmează evenimentul contact.merged. Cere scope-ul contacts:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/:contact/merge","host":["{{baseUrl}}"],"path":["contacts",":contact","merge"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 124\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Consimțământ","description":"Istoricul consimțământului, la care doar se adaugă, pe scopuri și topicuri, cu dovada fiecărui acord.","item":[{"name":"Citește consimțământul unui contact, cu istoricul lui","request":{"method":"GET","description":"Cere scope-ul contacts:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/contacts/:contact/consents","host":["{{baseUrl}}"],"path":["contacts",":contact","consents"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}]}}},{"name":"Înregistrează un acord, cu dovada lui, sau o retragere","request":{"method":"POST","description":"Un acord retras de persoană îl poate reda doar ea: printr-un formular, la checkout sau printr-un link. Cere scope-ul consents:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/contacts/:contact/consents","host":["{{baseUrl}}"],"path":["contacts",":contact","consents"],"variable":[{"key":"contact","value":"123","description":"ID-ul contactului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"purposes\": [\n        \"channel\",\n        \"marketing\"\n    ],\n    \"state\": \"granted\",\n    \"source\": \"form\",\n    \"proof\": {\n        \"form\": \"Newsletter, footer\",\n        \"text\": \"I agree to receive offers on WhatsApp\"\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Creează un link semnat către centrul de preferințe al unui contact","request":{"method":"POST","description":"Linkul e valabil 30 de zile. Cere scope-ul consents:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/preference-links","host":["{{baseUrl}}"],"path":["preference-links"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 123\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Model de date","description":"Câmpurile contactelor, tipurile de obiect și tipurile de eveniment ale organizației, cu JSON Schema lor.","item":[{"name":"Citește JSON Schema corpului care scrie un contact","request":{"method":"GET","description":"Cu câmpurile proprii ale organizației; o citește orice cheie. O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/contacts/schema","host":["{{baseUrl}}"],"path":["contacts","schema"]}}},{"name":"Listează tipurile de eveniment","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/event-types","host":["{{baseUrl}}"],"path":["event-types"]}}},{"name":"Citește un tip de eveniment, cu proprietățile lui","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/event-types/:type","host":["{{baseUrl}}"],"path":["event-types",":type"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}]}}},{"name":"Citește JSON Schema proprietăților unui tip de eveniment","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/event-types/:type/schema","host":["{{baseUrl}}"],"path":["event-types",":type","schema"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}]}}},{"name":"Listează câmpurile contactelor","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/field-definitions","host":["{{baseUrl}}"],"path":["field-definitions"]}}},{"name":"Creează un câmp al contactelor sau al unui tip de obiect","request":{"method":"POST","description":"Prin aceleași verificări și limite ca în dashboard; cheia nu se mai schimbă după aceea. Cere scope-ul schema:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/field-definitions","host":["{{baseUrl}}"],"path":["field-definitions"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"object_type\": \"vehicle\",\n    \"labels\": {\n        \"en\": \"Plate\",\n        \"ro\": \"Număr de înmatriculare\"\n    },\n    \"key\": \"plate\",\n    \"type\": \"text\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Listează tipurile de obiect","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/object-types","host":["{{baseUrl}}"],"path":["object-types"]}}},{"name":"Creează un tip de obiect","request":{"method":"POST","description":"Tipul este al organizației și intră în limita ei de tipuri. Cere scope-ul schema:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/object-types","host":["{{baseUrl}}"],"path":["object-types"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"labels\": {\n        \"en\": \"Vehicle\",\n        \"ro\": \"Vehicul\"\n    },\n    \"key\": \"vehicle\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un tip de obiect, cu statusurile, rolurile și câmpurile lui","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/object-types/:type","host":["{{baseUrl}}"],"path":["object-types",":type"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}]}}},{"name":"Citește JSON Schema corpului care scrie un obiect al tipului","request":{"method":"GET","description":"O poate apela orice cheie a organizației.","url":{"raw":"{{baseUrl}}/object-types/:type/schema","host":["{{baseUrl}}"],"path":["object-types",":type","schema"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}]}}}]},{"name":"Obiecte","description":"Abonamente, rezervări, comenzi: înregistrările fiecărui tip de obiect, legate de contacte în roluri.","item":[{"name":"Listează obiectele unui tip","request":{"method":"GET","description":"Cere scope-ul objects:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/objects/:type","host":["{{baseUrl}}"],"path":["objects",":type"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}],"query":[{"key":"external_id","value":"","description":"Obiectul cu acest ID la sursă.","disabled":true},{"key":"source","value":"","description":"Doar obiectele acestei surse.","disabled":true},{"key":"contact_id","value":"","description":"Doar obiectele legate de acest contact.","disabled":true},{"key":"status","value":"","description":"Statusul pe fiecare axă, de exemplu status[lifecycle]=active.","disabled":true},{"key":"updated_since","value":"","description":"Doar ce s-a schimbat în acest moment sau după el.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează sau actualizează un obiect după ID-ul lui la sursă","request":{"method":"POST","description":"Cere scope-ul objects:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/objects/:type","host":["{{baseUrl}}"],"path":["objects",":type"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"external_id\": \"abn-7781\",\n    \"source\": \"upfit\",\n    \"fields\": {\n        \"starts_on\": \"2026-09-01\",\n        \"ends_on\": \"2027-08-31\"\n    },\n    \"statuses\": {\n        \"lifecycle\": \"active\"\n    },\n    \"contact\": {\n        \"identities\": {\n            \"phone\": \"+40722123456\"\n        }\n    },\n    \"role\": \"holder\",\n    \"update_existing_only\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Creează sau actualizează cel mult 100 de obiecte","request":{"method":"POST","description":"Cere scope-ul objects:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/objects/:type/batch","host":["{{baseUrl}}"],"path":["objects",":type","batch"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"items\": [\n        {\n            \"external_id\": \"abn-7781\",\n            \"source\": \"upfit\",\n            \"fields\": {\n                \"starts_on\": \"2026-09-01\",\n                \"ends_on\": \"2027-08-31\"\n            },\n            \"statuses\": {\n                \"lifecycle\": \"active\"\n            },\n            \"contact\": {\n                \"identities\": {\n                    \"phone\": \"+40722123456\"\n                }\n            },\n            \"role\": \"holder\",\n            \"update_existing_only\": false\n        }\n    ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un obiect","request":{"method":"GET","description":"Cere scope-ul objects:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/objects/:type/:object","host":["{{baseUrl}}"],"path":["objects",":type",":object"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."},{"key":"object","value":"456","description":"ID-ul obiectului."}]}}},{"name":"Schimbă câmpurile sau statusurile unui obiect","request":{"method":"PATCH","description":"Cere scope-ul objects:write.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/objects/:type/:object","host":["{{baseUrl}}"],"path":["objects",":type",":object"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."},{"key":"object","value":"456","description":"ID-ul obiectului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"statuses\": {\n        \"lifecycle\": \"frozen\"\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Leagă un contact de un obiect, într-un rol","request":{"method":"POST","description":"Cere scope-ul objects:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/objects/:type/:object/relations","host":["{{baseUrl}}"],"path":["objects",":type",":object","relations"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."},{"key":"object","value":"456","description":"ID-ul obiectului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 123,\n    \"role\": \"beneficiary\",\n    \"primary\": false,\n    \"muted\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Șterge legătura unui contact cu un obiect","request":{"method":"DELETE","description":"Cere scope-ul objects:write.","url":{"raw":"{{baseUrl}}/objects/:type/:object/relations/:relation","host":["{{baseUrl}}"],"path":["objects",":type",":object","relations",":relation"],"variable":[{"key":"type","value":"fit.membership","description":"Cheia tipului, de exemplu fit.membership."},{"key":"object","value":"456","description":"ID-ul obiectului."},{"key":"relation","value":"77","description":"ID-ul legăturii."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Fișiere","description":"Fișierele câmpurilor de tip fișier: se urcă întâi, apoi se dau prin ID ca valoare a câmpului.","item":[{"name":"Urcă un fișier pentru un câmp de tip fișier","request":{"method":"POST","description":"PDF, imagini, documente Office, text sau CSV, până la 16 MB. Un fișier nefolosit de niciun câmp într-o zi se șterge. Cere scope-ul files:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/files","host":["{{baseUrl}}"],"path":["files"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[]}]}}},{"name":"Citește un fișier, cu contactul sau obiectul care îl folosește","request":{"method":"GET","description":"Cere scope-ul files:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/files/:file","host":["{{baseUrl}}"],"path":["files",":file"],"variable":[{"key":"file","value":"77","description":"ID-ul fișierului."}]}}},{"name":"Descarcă conținutul unui fișier","request":{"method":"GET","description":"Cere scope-ul files:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/files/:file/content","host":["{{baseUrl}}"],"path":["files",":file","content"],"variable":[{"key":"file","value":"77","description":"ID-ul fișierului."}]}}}]},{"name":"Evenimente","description":"Ce s-a întâmplat la sursă; evenimentele pornesc automatizări și actualizează obiecte.","item":[{"name":"Înregistrează un eveniment","request":{"method":"POST","description":"Contactul și obiectul evenimentului se găsesc sau se creează; un eveniment cu același ID de la aceeași sursă se înregistrează o singură dată. Cere scope-ul events:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/events","host":["{{baseUrl}}"],"path":["events"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"id\": \"m-1\",\n    \"type\": \"membership.created\",\n    \"occurred_at\": \"2026-10-15T09:00:00+03:00\",\n    \"source\": \"upfit\",\n    \"contact\": {\n        \"phone\": \"+40722123456\"\n    },\n    \"object\": {\n        \"type\": \"fit.membership\",\n        \"external_id\": \"abn-7781\",\n        \"upsert\": {\n            \"statuses\": {\n                \"lifecycle\": \"active\"\n            }\n        }\n    },\n    \"properties\": {\n        \"plan\": \"plan-12\"\n    },\n    \"historical\": false,\n    \"update_existing_only\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"Înregistrează cel mult 100 de evenimente","request":{"method":"POST","description":"Cere scope-ul events:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/events/batch","host":["{{baseUrl}}"],"path":["events","batch"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"items\": [\n        {\n            \"id\": \"m-1\",\n            \"type\": \"membership.created\",\n            \"occurred_at\": \"2026-10-15T09:00:00+03:00\",\n            \"source\": \"upfit\",\n            \"contact\": {\n                \"phone\": \"+40722123456\"\n            },\n            \"object\": {\n                \"type\": \"fit.membership\",\n                \"external_id\": \"abn-7781\",\n                \"upsert\": {\n                    \"statuses\": {\n                        \"lifecycle\": \"active\"\n                    }\n                }\n            },\n            \"properties\": {\n                \"plan\": \"plan-12\"\n            },\n            \"historical\": false,\n            \"update_existing_only\": false\n        }\n    ]\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Mesaje","description":"Mesajele WhatsApp trimise și primite, prin aceleași reguli ca în dashboard.","item":[{"name":"Listează mesajele","request":{"method":"GET","description":"Cere scope-ul messages:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/messages","host":["{{baseUrl}}"],"path":["messages"],"query":[{"key":"contact_id","value":"","description":"Doar mesajele acestui contact.","disabled":true},{"key":"direction","value":"","description":"Primite sau trimise.","disabled":true},{"key":"status","value":"","description":"Doar mesajele cu acest status.","disabled":true},{"key":"since","value":"","description":"Doar ce s-a schimbat în acest moment sau după el.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Trimite unui contact un template, un text liber sau un formular","request":{"method":"POST","description":"Mesajul trece prin aceleași reguli ca în dashboard: consimțământ, ore de liniște, frecvență și limite. Un text liber sau un formular cere fereastra de 24 de ore deschisă; un refuz vine cu codul motivului, de exemplu window_closed. Răspunsurile la un formular vin prin webhook-ul flow.submitted. Cere scope-ul messages:send.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/messages","host":["{{baseUrl}}"],"path":["messages"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 123,\n    \"template\": {\n        \"name\": \"booking_confirmed\",\n        \"language\": \"ro\",\n        \"variables\": [\n            \"Ana\",\n            \"3 octombrie, 18:00\"\n        ]\n    },\n    \"flow\": {\n        \"key\": \"nps\",\n        \"body\": \"Ne spui în 10 secunde cum a fost?\"\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un mesaj și statusul lui","request":{"method":"GET","description":"Cere scope-ul messages:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/messages/:message","host":["{{baseUrl}}"],"path":["messages",":message"],"variable":[{"key":"message","value":"7001","description":"ID-ul mesajului."}]}}},{"name":"Citește dovada unui mesaj trimis cu un template candidat suport durabil","request":{"method":"GET","description":"Textul exact primit de contact și documentul din antet păstrat de Worbo, cu amprentele lor SHA-256, și momentele raportate de Meta. Nu înlocuiește e-mailul cerut de lege. Cere scope-ul messages:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/messages/:message/evidence","host":["{{baseUrl}}"],"path":["messages",":message","evidence"],"variable":[{"key":"message","value":"7001","description":"ID-ul mesajului."}]}}},{"name":"Descarcă documentul păstrat ca dovadă a unui mesaj","request":{"method":"GET","description":"Cere scope-ul messages:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/messages/:message/evidence/document","host":["{{baseUrl}}"],"path":["messages",":message","evidence","document"],"variable":[{"key":"message","value":"7001","description":"ID-ul mesajului."}]}}}]},{"name":"Seiful de documente","description":"Fișiere date unui contact printr-un link care expiră, anunțat pe WhatsApp și deschis doar cu un cod trimis la telefonul contactului.","item":[{"name":"Dă un fișier unui contact prin seif","request":{"method":"POST","description":"Urcă întâi fișierul prin uploadFile. Contactul primește pe WhatsApp template-ul worbo_document, cu titlul, termenul și butonul care deschide linkul; linkul se deschide doar cu un cod trimis la telefonul lui. Răspunsul conține linkul, singura dată când apare: trimite-l și pe email, dacă e nevoie. Numărul are nevoie de template-urile seifului aprobate, create din pagina seifului. Cere scope-ul vault:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vault","host":["{{baseUrl}}"],"path":["vault"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 123,\n    \"file_id\": 77,\n    \"title\": \"Rezultatul analizelor\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un document din seif, cu starea linkului și deschiderile","request":{"method":"GET","description":"Cere scope-ul vault:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/vault/:vault","host":["{{baseUrl}}"],"path":["vault",":vault"],"variable":[{"key":"vault","value":"15","description":"ID-ul documentului din seif."}]}}},{"name":"Retrage linkul unui document din seif","request":{"method":"DELETE","description":"Cere scope-ul vault:write.","url":{"raw":"{{baseUrl}}/vault/:vault","host":["{{baseUrl}}"],"path":["vault",":vault"],"variable":[{"key":"vault","value":"15","description":"ID-ul documentului din seif."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Coduri de verificare","description":"Coduri de unică folosință trimise pe WhatsApp cu template-ul de autentificare al numărului, verificate de Worbo sau de organizație.","item":[{"name":"Trimite un cod de verificare pe WhatsApp","request":{"method":"POST","description":"Fără code, Worbo generează un cod din 6 cifre, valabil 10 minute, și îl verifică prin verifyOtp; cu code, organizația îl verifică singură. Mesajul pleacă imediat, cu template-ul de autentificare al numărului, aprobat din pagina lui. Un telefon despre care se știe că nu are WhatsApp primește imediat otp_undeliverable, ca site-ul să ofere SMS sau email; altfel, eșecul vine ca status al mesajului și prin webhook-ul message.failed. Un telefon primește cel mult 5 coduri în 15 minute și unul la 30 de secunde (otp_rate_limited, otp_too_soon). Codul nu apare niciodată în răspunsuri, webhooks sau inbox. Cere scope-ul otp:send.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/otp","host":["{{baseUrl}}"],"path":["otp"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"phone\": \"+40722123456\",\n    \"code\": \"482913\",\n    \"language\": \"ro\",\n    \"purpose\": \"login\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Verifică un cod de verificare generat de Worbo","request":{"method":"POST","description":"Un cod se folosește o singură dată, în termenul lui, cu cel mult 5 încercări; răspunsul spune de ce o verificare nu a reușit. Un cod dat de organizație primește 409 otp_not_verifiable. Cere scope-ul otp:verify.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/otp/:otp/verify","host":["{{baseUrl}}"],"path":["otp",":otp","verify"],"variable":[{"key":"otp","value":"880","description":"ID-ul codului de verificare, din răspunsul care l-a trimis."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"code\": \"482913\"\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Recomandări","description":"Regulile motorului de recomandări și ce ar recomanda acum una dintre ele unui contact, cu motivul fiecărui articol.","item":[{"name":"Listează regulile de recomandare","request":{"method":"GET","description":"Regulile active, făcute în dashboard la Recomandări: catalogul, tipurile în ordinea lor, numărul de articole și cooldown-urile. Automatizările le folosesc după cheie. Cere scope-ul recommendations:read.","url":{"raw":"{{baseUrl}}/recommendation-rules","host":["{{baseUrl}}"],"path":["recommendation-rules"]}}},{"name":"Citește rezultatele unei reguli de recomandare","request":{"method":"GET","description":"Pe o perioadă, implicit ultimele 30 de zile: recomandările trimise și destinatarii lor, pașii săriți pe motive, clicurile pe articole, conversiile în 7 zile de la mesaj (o comandă pentru produse, o rezervare pentru clase, un abonament pentru planuri), venitul per destinatar, grupul de control al automatizărilor, dezabonările de după mesaj și costul Meta per conversie. Cere scope-ul recommendations:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/recommendation-rules/:rule/results","host":["{{baseUrl}}"],"path":["recommendation-rules",":rule","results"],"variable":[{"key":"rule","value":"ecom.cross_sell","description":"Cheia regulii de recomandare."}]}}},{"name":"Previzualizează o regulă de recomandare pe un contact","request":{"method":"POST","description":"Ce ar recomanda acum regula contactului, cu motivul fiecărui articol, articolele lăsate deoparte și de ce, cooldown-ul regulii și consimțământul cerut. Nu se trimite nimic, iar cooldown-urile rămân cum sunt. Recomandările din istoricul contactului cer scopul recomandări personalizate pe lângă marketing. Cere scope-ul recommendations:read. Citește date, deci cere o cheie live.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/recommendations/preview","host":["{{baseUrl}}"],"path":["recommendations","preview"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"rule\": \"ecom.cross_sell\",\n    \"contact_id\": 123\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Template-uri","description":"Template-urile WhatsApp: ciornele verificate de linter, trimiterea la Meta și statusul.","item":[{"name":"Listează template-urile","request":{"method":"GET","description":"Cere scope-ul templates:read.","url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"],"query":[{"key":"number_id","value":"","description":"Doar template-urile acestui număr.","disabled":true},{"key":"status","value":"","description":"Doar template-urile cu acest status.","disabled":true},{"key":"name","value":"","description":"Doar template-urile cu acest nume.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează ciorna unui template, verificată de linter","request":{"method":"POST","description":"Cere scope-ul templates:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"name\": \"booking_confirmed\",\n    \"language\": \"ro\",\n    \"category\": \"utility\",\n    \"body\": \"Bună, {{1}}. Rezervarea ta pentru {{2}} este confirmată.\",\n    \"examples\": [\n        \"Ana\",\n        \"3 octombrie, 18:00\"\n    ],\n    \"fields\": [\n        \"contact.first_name\",\n        null\n    ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un template","request":{"method":"GET","description":"Cere scope-ul templates:read.","url":{"raw":"{{baseUrl}}/templates/:template","host":["{{baseUrl}}"],"path":["templates",":template"],"variable":[{"key":"template","value":"31","description":"ID-ul template-ului."}]}}},{"name":"Trimite un template la Meta","request":{"method":"POST","description":"Oprit de linter, cu motivul, sau acceptat, cu statusul „în revizuire”. Cere scope-ul templates:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/templates/:template/submit","host":["{{baseUrl}}"],"path":["templates",":template","submit"],"variable":[{"key":"template","value":"31","description":"ID-ul template-ului."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Oferte","description":"Ofertele găsite după cod și folosite, la recepție sau în software-ul sursei.","item":[{"name":"Găsește o ofertă după cod","request":{"method":"GET","description":"Cere scope-ul objects:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/offers/:code","host":["{{baseUrl}}"],"path":["offers",":code"],"variable":[{"key":"code","value":"AUTUMN-7KQ2","description":"Codul ofertei."}]}}},{"name":"Marchează o ofertă ca folosită","request":{"method":"POST","description":"Cere scope-ul objects:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/offers/:code/redeem","host":["{{baseUrl}}"],"path":["offers",":code","redeem"],"variable":[{"key":"code","value":"AUTUMN-7KQ2","description":"Codul ofertei."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}}}]},{"name":"Segmente","description":"Segmentele dinamice de contacte, numărate pe loc.","item":[{"name":"Listează segmentele","request":{"method":"GET","description":"Cere scope-ul segments:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/segments","host":["{{baseUrl}}"],"path":["segments"],"query":[{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează un segment","request":{"method":"POST","description":"Cere scope-ul segments:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/segments","host":["{{baseUrl}}"],"path":["segments"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"name\": \"Toți membrii\",\n    \"definition\": {\n        \"match\": \"all\",\n        \"conditions\": [\n            {\n                \"type\": \"field\",\n                \"field\": \"first_name\",\n                \"operator\": \"not_empty\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Numără contactele unei definiții, fără să o salveze","request":{"method":"POST","description":"Cere scope-ul segments:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/segments/count","host":["{{baseUrl}}"],"path":["segments","count"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"definition\": {\n        \"match\": \"all\",\n        \"conditions\": [\n            {\n                \"type\": \"field\",\n                \"field\": \"first_name\",\n                \"operator\": \"not_empty\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește un segment, cu numărul lui curent","request":{"method":"GET","description":"Cere scope-ul segments:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/segments/:segment","host":["{{baseUrl}}"],"path":["segments",":segment"],"variable":[{"key":"segment","value":"12","description":"ID-ul segmentului."}]}}}]},{"name":"Automatizări","description":"Citirea automatizărilor, pornirea uneia pentru un contact și scoaterea unui contact dintr-o rulare.","item":[{"name":"Listează automatizările","request":{"method":"GET","description":"Cere scope-ul automations:read.","url":{"raw":"{{baseUrl}}/automations","host":["{{baseUrl}}"],"path":["automations"],"query":[{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Citește o automatizare, cu definiția și cifrele ei","request":{"method":"GET","description":"Cere scope-ul automations:read.","url":{"raw":"{{baseUrl}}/automations/:automation","host":["{{baseUrl}}"],"path":["automations",":automation"],"variable":[{"key":"automation","value":"8","description":"ID-ul automatizării."}]}}},{"name":"Pornește o automatizare pentru un contact","request":{"method":"POST","description":"Doar o automatizare activă, cu pornire manuală. Rularea ia cel mai nou obiect al contactului de tipul ales în declanșator; același Idempotency-Key o pornește o singură dată. Cere scope-ul automations:run.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/automations/:automation/runs","host":["{{baseUrl}}"],"path":["automations",":automation","runs"],"variable":[{"key":"automation","value":"8","description":"ID-ul automatizării."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"contact_id\": 123\n}","options":{"raw":{"language":"json"}}}}},{"name":"Scoate un contact dintr-o rulare","request":{"method":"DELETE","description":"Cere scope-ul automations:run.","url":{"raw":"{{baseUrl}}/automations/:automation/runs/:run","host":["{{baseUrl}}"],"path":["automations",":automation","runs",":run"],"variable":[{"key":"automation","value":"8","description":"ID-ul automatizării."},{"key":"run","value":"3301","description":"ID-ul rulării."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Campanii","description":"Ciornele campaniilor și estimarea lor; lansarea se aprobă în dashboard.","item":[{"name":"Listează campaniile","request":{"method":"GET","description":"Cere scope-ul campaigns:read.","url":{"raw":"{{baseUrl}}/campaigns","host":["{{baseUrl}}"],"path":["campaigns"],"query":[{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează ciorna unei campanii","request":{"method":"POST","description":"Momentele vin în ISO 8601, cu fusul lor orar. Lansarea se aprobă în dashboard. Cere scope-ul campaigns:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/campaigns","host":["{{baseUrl}}"],"path":["campaigns"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"name\": \"Oferta de toamnă\",\n    \"object_id\": 456,\n    \"object_roles\": [\n        \"holder\"\n    ],\n    \"number_id\": 3,\n    \"template\": \"autumn_offer\",\n    \"segment_id\": 12,\n    \"scheduled_at\": \"2026-10-20T10:00:00+03:00\",\n    \"wave_by\": \"size\",\n    \"wave_hours\": 24\n}","options":{"raw":{"language":"json"}}}}},{"name":"Citește o campanie, cu raportul mesajelor și costul","request":{"method":"GET","description":"Cere scope-ul campaigns:read.","url":{"raw":"{{baseUrl}}/campaigns/:campaign","host":["{{baseUrl}}"],"path":["campaigns",":campaign"],"variable":[{"key":"campaign","value":"21","description":"ID-ul campaniei."}]}}},{"name":"Estimează audiența și costul unei campanii","request":{"method":"POST","description":"Cu aceleași excluderi ca la lansare: fără WhatsApp, fără consimțământ, de nelivrat, plafonul de frecvență. Cere scope-ul campaigns:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/campaigns/:campaign/estimate","host":["{{baseUrl}}"],"path":["campaigns",":campaign","estimate"],"variable":[{"key":"campaign","value":"21","description":"ID-ul campaniei."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Conversații","description":"Inboxul: conversațiile, mesajele lor, răspunsurile, alocarea și închiderea.","item":[{"name":"Listează conversațiile","request":{"method":"GET","description":"Cere scope-ul conversations:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/conversations","host":["{{baseUrl}}"],"path":["conversations"],"query":[{"key":"status","value":"","description":"Doar conversațiile cu acest status.","disabled":true},{"key":"contact_id","value":"","description":"Doar conversațiile acestui contact.","disabled":true},{"key":"assigned_user_id","value":"","description":"Doar conversațiile alocate acestui membru.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Alocă o conversație unui membru","request":{"method":"POST","description":"Cere scope-ul conversations:reply.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/conversations/:conversation/assign","host":["{{baseUrl}}"],"path":["conversations",":conversation","assign"],"variable":[{"key":"conversation","value":"640","description":"ID-ul conversației."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"user_id\": 5\n}","options":{"raw":{"language":"json"}}}}},{"name":"Închide o conversație","request":{"method":"POST","description":"Cere scope-ul conversations:reply.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/conversations/:conversation/close","host":["{{baseUrl}}"],"path":["conversations",":conversation","close"],"variable":[{"key":"conversation","value":"640","description":"ID-ul conversației."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}},{"name":"Listează mesajele unei conversații","request":{"method":"GET","description":"Cere scope-ul conversations:read. Citește date, deci cere o cheie live.","url":{"raw":"{{baseUrl}}/conversations/:conversation/messages","host":["{{baseUrl}}"],"path":["conversations",":conversation","messages"],"variable":[{"key":"conversation","value":"640","description":"ID-ul conversației."}],"query":[{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Răspunde cu un text liber, în fereastra de 24 de ore","request":{"method":"POST","description":"Cere scope-ul conversations:reply.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/conversations/:conversation/messages","host":["{{baseUrl}}"],"path":["conversations",":conversation","messages"],"variable":[{"key":"conversation","value":"640","description":"ID-ul conversației."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"text\": \"Bună! Cu ce vă ajutăm?\"\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Cataloage","description":"Produse, servicii, clase, abonamente și locații, scrise unul câte unul sau în lot.","item":[{"name":"Listează cataloagele","request":{"method":"GET","description":"Cere scope-ul catalogs:read.","url":{"raw":"{{baseUrl}}/catalogs","host":["{{baseUrl}}"],"path":["catalogs"]}}},{"name":"Listează articolele unui catalog","request":{"method":"GET","description":"Cere scope-ul catalogs:read.","url":{"raw":"{{baseUrl}}/catalogs/:catalog/items","host":["{{baseUrl}}"],"path":["catalogs",":catalog","items"],"variable":[{"key":"catalog","value":"fit.classes","description":"Cheia catalogului, de exemplu fit.classes."}],"query":[{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Creează sau actualizează un articol după ID-ul lui la sursă","request":{"method":"POST","description":"Cere scope-ul catalogs:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/catalogs/:catalog/items","host":["{{baseUrl}}"],"path":["catalogs",":catalog","items"],"variable":[{"key":"catalog","value":"fit.classes","description":"Cheia catalogului, de exemplu fit.classes."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"external_id\": \"yoga\",\n    \"name\": \"Yoga\",\n    \"price\": 50,\n    \"currency\": \"RON\",\n    \"available\": true,\n    \"recommendable\": true\n}","options":{"raw":{"language":"json"}}}}},{"name":"Creează sau actualizează cel mult 100 de articole","request":{"method":"POST","description":"Cere scope-ul catalogs:write.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/catalogs/:catalog/items/batch","host":["{{baseUrl}}"],"path":["catalogs",":catalog","items","batch"],"variable":[{"key":"catalog","value":"fit.classes","description":"Cheia catalogului, de exemplu fit.classes."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"items\": [\n        {\n            \"external_id\": \"yoga\",\n            \"name\": \"Yoga\",\n            \"price\": 50,\n            \"currency\": \"RON\",\n            \"available\": true,\n            \"recommendable\": true\n        }\n    ]\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Webhooks","description":"Endpoint-urile care primesc evenimentele Worbo, livrările și reluările lor.","item":[{"name":"Listează livrările evenimentelor","request":{"method":"GET","description":"Cere scope-ul webhooks:manage.","url":{"raw":"{{baseUrl}}/webhook-deliveries","host":["{{baseUrl}}"],"path":["webhook-deliveries"],"query":[{"key":"endpoint_id","value":"","description":"Doar livrările către acest endpoint.","disabled":true},{"key":"status","value":"","description":"Doar livrările cu acest status.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Retrimite o livrare","request":{"method":"POST","description":"Cere scope-ul webhooks:manage.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/webhook-deliveries/:delivery/replay","host":["{{baseUrl}}"],"path":["webhook-deliveries",":delivery","replay"],"variable":[{"key":"delivery","value":"9001","description":"ID-ul livrării."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}},{"name":"Listează endpoint-urile de webhook","request":{"method":"GET","description":"Cere scope-ul webhooks:manage.","url":{"raw":"{{baseUrl}}/webhook-endpoints","host":["{{baseUrl}}"],"path":["webhook-endpoints"]}}},{"name":"Adaugă un endpoint de webhook","request":{"method":"POST","description":"Secretul de semnare vine în răspuns, doar acum. Cere scope-ul webhooks:manage.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/webhook-endpoints","host":["{{baseUrl}}"],"path":["webhook-endpoints"],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"url\": \"https://crm.example.com/worbo\",\n    \"events\": [\n        \"contact.created\",\n        \"message.received\"\n    ],\n    \"payload\": \"snapshot\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Schimbă adresa sau evenimentele unui endpoint","request":{"method":"PATCH","description":"Cere scope-ul webhooks:manage.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/webhook-endpoints/:endpoint","host":["{{baseUrl}}"],"path":["webhook-endpoints",":endpoint"],"variable":[{"key":"endpoint","value":"4","description":"ID-ul endpoint-ului de webhook."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]},"body":{"mode":"raw","raw":"{\n    \"url\": \"https://crm.example.com/worbo\",\n    \"events\": [\n        \"contact.created\",\n        \"message.received\"\n    ],\n    \"payload\": \"snapshot\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"Șterge un endpoint de webhook","request":{"method":"DELETE","description":"Cere scope-ul webhooks:manage.","url":{"raw":"{{baseUrl}}/webhook-endpoints/:endpoint","host":["{{baseUrl}}"],"path":["webhook-endpoints",":endpoint"],"variable":[{"key":"endpoint","value":"4","description":"ID-ul endpoint-ului de webhook."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}},{"name":"Rotește secretul de semnare al unui endpoint","request":{"method":"POST","description":"Secretul vechi rămâne valabil 24 de ore; între timp se trimit ambele semnături. Cere scope-ul webhooks:manage.","header":[{"key":"Idempotency-Key","value":"{{$guid}}"}],"url":{"raw":"{{baseUrl}}/webhook-endpoints/:endpoint/rotate","host":["{{baseUrl}}"],"path":["webhook-endpoints",":endpoint","rotate"],"variable":[{"key":"endpoint","value":"4","description":"ID-ul endpoint-ului de webhook."}],"query":[{"key":"dry_run","value":"","description":"Trece prin toate verificările și întoarce ce s-ar întâmpla, fără să salveze nimic.","disabled":true}]}}}]},{"name":"Rapoarte","description":"Rezultatele unei perioade și conversiile automatizărilor.","item":[{"name":"Listează conversiile automatizărilor","request":{"method":"GET","description":"Cere scope-ul analytics:read.","url":{"raw":"{{baseUrl}}/conversions","host":["{{baseUrl}}"],"path":["conversions"],"query":[{"key":"automation_id","value":"","description":"Doar conversiile acestei automatizări.","disabled":true},{"key":"since","value":"","description":"Doar ce s-a schimbat în acest moment sau după el.","disabled":true},{"key":"limit","value":"","description":"Câte elemente are o pagină, între 1 și 100.","disabled":true},{"key":"cursor","value":"","description":"next_cursor de la pagina anterioară.","disabled":true}]}}},{"name":"Citește rezultatele unei perioade","request":{"method":"GET","description":"Automatizările cu grupul de control, linia de bază, valoarea și costul, în zilele organizației. Cere scope-ul analytics:read.","url":{"raw":"{{baseUrl}}/reports/results","host":["{{baseUrl}}"],"path":["reports","results"],"query":[{"key":"from","value":"","description":"Prima zi a perioadei.","disabled":true},{"key":"to","value":"","description":"Ultima zi a perioadei.","disabled":true},{"key":"location_id","value":"","description":"Doar contactele acestei locații de bază.","disabled":true}]}}}]}]}