Personyze Wiki Personyze Wiki docs
Nederlands
Open Personyze
Docs/ Developers/ REST API: naslag van objecten
Developers

REST API: naslag van objecten

Naslag voor elk object van de REST API van Personyze: doel, ondersteunde HTTP-methoden, kolommen met opmerkingen over indexering, en voorbeelden.

23 min read Updated 32 minutes ago

Naslag voor elk object dat de REST API van Personyze beschikbaar stelt. Elk onderdeel hieronder behandelt één object: het doel, de ondersteunde HTTP-methoden, de kolommen (met type en opmerkingen over indexering), en curl -voorbeelden die klaar zijn om te kopiëren.

Vereisten — lees deze eerst als je dat nog niet hebt gedaan:

Objectenindex

Klik op een object om naar het onderdeel te springen. Elk onderdeel heeft een eigen anker-URL — je kunt direct naar de naslag van elk object linken.

CRUD-content (lezen/schrijven)

Bevat je campagnes, doelgroep, catalogus en configuratie. Volledige CRUD voor External API user en hoger.

usersKlantprofielen. Kolomnamen zijn dynamisch.
user_listsBenoemde lijsten met gebruikers (handmatig of geïmporteerd).
user_list_usersLidmaatschap van gebruikers in user_lists.
actionsPersonalisatieacties. Via REST op dit moment alleen-lezen.
conditionsDoelgroepvoorwaarden. Via REST op dit moment alleen-lezen.
placeholdersDOM-placeholdercontainers (waar acties worden weergegeven).
containers_grab_variableDOM-/JS-waarden terughalen naar het bezoekersprofiel.
productsRijen van de productcatalogus. Kolomnamen zijn dynamisch.
articlesRijen van de artikelcatalogus. Kolomnamen zijn dynamisch.

Interacties / events (vooral schrijven)

Logboeken van bezoekersinteracties waaraan alleen wordt toegevoegd. Vooral gebruikt door SDK’s en integraties aan de backend.

products_interactionsEvents voor bekijken / winkelwagen / aankoop bij producten.
eventsAlgemeen eventlogboek (alleen-lezen).
formsLogboek van formulierinzendingen (alleen-lezen).
doVerdeler voor commando’s die je afvuurt en vergeet.

Rapporten / archief (alleen-lezen)

sessions_archiveEén rij per bezoekerssessie, met metadata over locatie/apparaat/browser.
user_interestsAfgeleide interesses, categorieën en tags per gebruiker.
products_stats_*Interactietellers per product over zes doorlopende vensters.
summary_actionsDagelijks geaggregeerde KPI per actie.

Hulpmiddelen voor tracker / SDK

Gebruikt door de JS-tracker, native SDK’s en integraties om zichzelf op te starten. Meestal niet direct aangeroepen door gebruikers van de REST API.

tracker_codeGeeft het JS-snippet terug om in een klantpagina in te sluiten (HTML-uitvoer).

users

Klantprofielen. Elke rij is één bezoeker of klant. Kolomnamen zijn dynamisch — naast de gedocumenteerde huishoudelijke kolommen kun je alle eigen sleutels/waarden opslaan die je account nodig heeft.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
user_id Interne primaire sleutel van Personyze. Automatisch toegekend bij het invoegen. Geïndexeerd.
internal_id Je externe identificator (CRM-ID, account-ID, SKU). Geïndexeerd.
fb_id Facebook-gebruikers-ID. Geïndexeerd.
email E-mailadres van de bezoeker. Geïndexeerd.
last_session_time Unix-seconden. Geïndexeerd.
data_last_modified Unix-seconden. Geïndexeerd.
session_counter Totaal aantal sessies dat tot nu toe voor deze gebruiker is gezien.

Veelgebruikte profielvelden (eigen)

first_name, middle_name, last_name, sex, birthday, timezone, current_city, current_state, current_country, religion, political, interests, relationship_status, education_year, plus custom_t_1custom_t_6 (tekst), custom_i_1custom_i_4 (geheel getal), custom_f_1custom_f_2 (kommagetal), custom_d_1, custom_d_2 (datum) — en alle extra velden die je op je account hebt ingesteld.

Voorbeelden

# Lookup by your external id
curl 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=42'
# Recent active visitors (last 7 days)
curl 'https://api:KEY@app.personyze.com/rest/users
        /where/last_session_time>1730000000
        /columns/user_id,internal_id,email,first_name,last_session_time
        /order_by_desc/last_session_time
        /limit/1000'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/users' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"acct-987","email":"alice@example.com","first_name":"Alice","custom_field_x":"vip"}'
# → 5712334  (new user_id)
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=acct-987' \
     -H 'Content-Type: application/json' \
     -d '{"first_name":"Alicia"}'
# → 1  (rows affected)

Geïndexeerde kolommen / scanlimieten

GET /rest/users zonder where vereist order_by op een geïndexeerde kolom — user_id, last_session_time, data_last_modified, fb_id, email, of internal_id. Anders: 400 Cannot do this operation on whole table.

Snelheidsbeperking

POST /rest/users wordt per Personyze-account geserialiseerd: hooguit één lopende insert tegelijk. Verzoeken die langer dan 1 seconde wachten, worden geweigerd met 400 Too many simultaneous requests — probeer opnieuw met exponentiële backoff.

user_lists

Benoemde lijsten met gebruikers (bijv. “VIP’s”, “Aanmeldingen voor de nieuwsbrief”). Eén rij per lijst. Het lidmaatschap staat in een apart object — zie user_list_users.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
name Weergavenaam van de lijst. Geïndexeerd.

Voorbeelden

# All lists
curl 'https://api:KEY@app.personyze.com/rest/user_lists'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_lists' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIPs"}'
# → 17
# Rename
curl -X PUT 'https://api:KEY@app.personyze.com/rest/user_lists/17' \
     -H 'Content-Type: application/json' \
     -d '{"name":"VIP customers"}'
# → 1
# Delete (also clears all memberships in user_list_users via FK cascade)
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_lists/17'
# → 1

user_list_users

Lidmaatschap: welke gebruikers bij welke user_listshoren. Eén rij per (user_list_id, user_id) -paar.

GET POST PUT DELETE

POST accepteert een bestaande user_id, of een opzoeksleutel (user_internal_id, user_email) — de API zet die om naar een user_id, en maakt zo nodig een tijdelijke users -rij aan.

Kolommen

Kolom Opmerkingen
user_list_id FK → user_lists.id. Deel van de samengestelde sleutel.
user_id FK → users.user_id. Deel van de samengestelde sleutel.

Extra’s in de POST-body (omgezet naar user_id aan de serverkant, en daarna weggelaten)

Veld Wordt omgezet naar
user_internal_id user_id voor de gebruiker met die internal_id. Maakt de gebruiker aan als die ontbreekt.
user_email user_id voor de gebruiker met die email. Maakt de gebruiker aan als die ontbreekt.

Voorbeelden

# Members of list 17
curl 'https://api:KEY@app.personyze.com/rest/user_list_users/where/user_list_id=17/limit/1000'
# Add by user_id
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_id":5712334}' 
# Add by external id (auto-creates a users row if needed)
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_internal_id":"acct-987"}' 
# Add by email
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
     -H 'Content-Type: application/json' \
     -d '{"user_list_id":17,"user_email":"alice@example.com"}' 
# Remove
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_list_users
        /where/user_list_id=17&user_id=5712334'

actions

Personalisatieacties — wat je campagnes doen: HTML weergeven, een pop-up tonen, een e-mail versturen, een melding pushen, enz. Via REST op dit moment alleen-lezen (maken/bewerken via de interface).

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
version_tag production of testing.
name Weergavenaam van de actie.
type_id Het actietype (HTML / pop-up / e-mail / push / …). Afgeleid van het onderliggende action_js_id.
placeholders JSON-array met ID’s van de placeholders waarop de actie is gericht.
content_type Mime-type / soort content (uit actions_js).
content_param Naam van de sleutel van de JS-parameter waarvan de waarde de weer te geven content is.
content_begin Berekend: openingsfragment van de weergegeven content (na vervanging van de wrapper).
content_end Berekend: afsluitend fragment.
presenting_rules JSON: regels voor timing / frequentie.
libs_app App-bibliotheken waarvan de actie afhangt.

Voorbeelden

# All production actions
curl 'https://api:KEY@app.personyze.com/rest/actions
        /where/version_tag=production
        /columns/id,name,type_id,placeholders'
# One action's full content
curl 'https://api:KEY@app.personyze.com/rest/actions/where/id=42
        /columns/id,name,content_type,content_param,content_begin,content_end'

conditions

Doelgroepvoorwaarden — het wanneer van campagnes. Via REST alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam van de voorwaarde.

Voorbeelden

# All tracker/offline conditions
curl 'https://api:KEY@app.personyze.com/rest/conditions/limit/1000'

placeholders

Containers van het type placeholder — DOM-plekken waar acties content weergeven. Beheer de catalogus met placeholders die voor je site zijn gedefinieerd.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam.
html_id DOM-selector / id waar de placeholder wordt ingevoegd.
units_count_max Maximaal aantal actie-eenheden dat deze placeholder kan vullen. Standaard 1.

Voorbeelden

# All placeholders
curl 'https://api:KEY@app.personyze.com/rest/placeholders'
# One
curl 'https://api:KEY@app.personyze.com/rest/placeholders/14'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/placeholders' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Hero banner","html_id":"#hero","units_count_max":1}'
# → 88
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/placeholders/88' \
     -H 'Content-Type: application/json' \
     -d '{"units_count_max":3}'
# → 1
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/placeholders/88'
# → 1

Bereik van het endpoint.De handler beperkt alle query’s tot container_types='placeholder', dus andere containertypen (bijv. “grab variable”) zijn vanaf dit endpoint niet zichtbaar — zie containers_grab_variable.

containers_grab_variable

Containers van het type “grab variable” — halen DOM-/JS-waarden van de pagina van de bezoeker terug naar het bezoekersprofiel. Elke container zegt “houd deze variabele / dit DOM-element in de gaten; verschijnt die, leg die dan vast als profielveld.”

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
name Weergavenaam.
is_active 1 / 0.
variable_path DOM-pad of JS-expressie om op te halen.
mask Optionele regex/template die op de opgehaalde tekenreeks wordt toegepast.
constant_value Optionele terugval- / geforceerde waarde.
watch_variable Opnieuw ophalen zodra de variabele verandert (1 / 0).
profile_column Profielkolom waarnaar de waarde wordt geschreven.

Voorbeelden

# All grab-variable containers
curl 'https://api:KEY@app.personyze.com/rest/containers_grab_variable'
# Create
curl -X POST 'https://api:KEY@app.personyze.com/rest/containers_grab_variable' \
     -H 'Content-Type: application/json' \
     -d '{"name":"Cart total",
          "variable_path":"window.dataLayer[0].cart.total",
          "mask":"^([0-9.]+)$",
          "watch_variable":1}'
# → 153
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153' \
     -H 'Content-Type: application/json' \
     -d '{"is_active":0}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/containers_grab_variable/153'

products

Productcatalogus. Elke rij is één SKU. Kolomnamen zijn dynamisch — naast de gedocumenteerde huishoudelijke kolommen kun je alle eigen velden opslaan die je catalogus nodig heeft.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
internal_id Je SKU / externe identificator.
data_last_modified Unix-seconden.
is_in_stock 'yes' / 'no' -enum (niet 1/0).

Veelgebruikte productvelden (eigen)

title, description_short, description_long, price, sale_price, image_big_url, image_medium_url, image_small_url, cart_url, brand, manufacturer, category, inventory, expiration_date, size, color, rank, is_new, age_from, age_to, available_location, not_available_location, enz. De werkelijke set velden hangt af van de configuratie van je account.

Hernoemde invoer (bij POST / PUT)

Invoer Opgeslagen als
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Voorbeelden

# In-stock products in a category
curl 'https://api:KEY@app.personyze.com/rest/products
        /where/category=tools&is_in_stock=yes
        /columns/id,internal_id,title,price,inventory
        /order_by/title
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'
# Insert (or "patch" — duplicate internal_id will UPDATE rather than fail)
curl -X POST 'https://api:KEY@app.personyze.com/rest/products' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"SKU-1234",
          "title":"Cordless Drill",
          "price":129.99,
          "is_in_stock":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}'
# → 51234
# Update by internal_id
curl -X PUT 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234' \
     -H 'Content-Type: application/json' \
     -d '{"price":119.99,"is_in_stock":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'

Upsertgedrag bij POST.POST doet patch-on-duplicate: een bestaande internal_id werkt de rij bij in plaats van te mislukken. Gebruik voor een bulkimport vanaf een feed-URL liever de geplande feedsynchronisatie via de interface van Personyze dan REST-aanroepen per rij.

articles

Artikelcatalogus (blogberichten, nieuws, items in een kennisbank). Dezelfde vorm als products maar voor redactionele content.

GET POST PUT DELETE

Identificerende / huishoudelijke kolommen

Kolom Opmerkingen
id Primaire sleutel. Automatisch toegekend.
internal_id Je externe identificator (slug, CMS-id).
data_last_modified Unix-seconden.
is_published 'yes' / 'no' -enum.

Veelgebruikte artikelvelden (eigen)

title, description_short, description_long, image_big_url, image_medium_url, image_small_url, author, publish_date, category, tags, rank, enz. De werkelijke lijst hangt af van de other_columns_info -configuratie van je site.

Hernoemde invoer

Invoer Opgeslagen als
image_1 image_big_url
image_2 image_medium_url
image_3 image_small_url

Voorbeelden

# Recent published articles
curl 'https://api:KEY@app.personyze.com/rest/articles
        /where/is_published=yes
        /columns/id,internal_id,title,author,publish_date
        /order_by_desc/publish_date
        /limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'
# Insert
curl -X POST 'https://api:KEY@app.personyze.com/rest/articles' \
     -H 'Content-Type: application/json' \
     -d '{"internal_id":"how-to-personalize",
          "title":"How to personalize your site",
          "author":"Alice",
          "is_published":"yes",
          "image_1":"https://cdn.example.com/big.jpg"}' 
# Update
curl -X PUT 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize' \
     -H 'Content-Type: application/json' \
     -d '{"is_published":"no"}' 
# Delete
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'

Artikelinteracties staan op het endpoint do.POST doet patch-on-duplicate (hetzelfde als products). Gebruik voor het volgen van bezoekersinteracties met artikelen (bekeken / gereageerd / geliket) do met de Article … -commando’s — er is op dit moment geen eigen REST-object voor.

products_interactions

Logboek van interacties met producten: weergaven, toevoegingen aan de winkelwagen, aankopen, “favoriet”, “bezorgd”. Vooral toevoegen. Ondersteund door een archieftabel.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
product_internal_id FK → products.internal_id. Eerste kolom van een samengestelde index [product_internal_id, user_id, transaction_time].
quantity Standaard 1 bij het invoegen.
status Een van viewed, delivered, extra (≈ aan de winkelwagen toegevoegd), favorite, goal (aankoop). Geïndexeerd.
action_id Als de interactie aan een Personyze-actie is toegeschreven, de ID daarvan. Anders null.
transaction_time Unix-seconden — tijd van de bestelling/transactie.
time Unix-seconden — wanneer de rij is gelogd. Geïndexeerd.
amount Geldwaarde (volgens de valuta-instellingen van de site).

Invoegen: de gebruiker identificeren

POST accepteert één van deze om de gebruiker te identificeren:

Veld Wordt omgezet naar
user_id (numeriek) Direct opzoeken op de primaire sleutel.
user_internal_id user_id van de gebruiker met die internal_id. Maakt automatisch een tijdelijke users -rij aan als die ontbreekt.
user_email user_id van de gebruiker met die email. Maakt die automatisch aan als die ontbreekt.

Voorbeelden

# All purchases in a window, paged
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/status=goal&time>1730000000
        /order_by_desc/time
        /limit/1000'
# A specific user's history with a product
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/product_internal_id=SKU-1234
        /columns/user_id,status,quantity,amount,transaction_time'
# Log a purchase
curl -X POST 'https://api:KEY@app.personyze.com/rest/products_interactions' \
     -H 'Content-Type: application/json' \
     -d '{"user_internal_id":"acct-987",
          "product_internal_id":"SKU-1234",
          "quantity":2,
          "status":"goal",
          "transaction_time":1734000000,
          "amount":259.98}' 
# Delete by composite key
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products_interactions
        /where/user_id=5712334&product_internal_id=SKU-1234&status=viewed'

Geïndexeerde kolommen

user_id, [product_internal_id, user_id, transaction_time], status, time. Query’s zonder where op een van deze (of order_by op dezelfde) worden geweigerd als scans van de volledige tabel.

events

Algemeen eventlogboek — één rij per gevolgd event dat is vastgelegd door de JS-tracker, de SDK of het endpoint do . Via REST op dit moment alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
id Primaire sleutel.
user_id FK → users.user_id. Geïndexeerd.
time Unix-seconden.
visit_id FK → rij van het bezoek.
container_id FK → containers.id (de bron van het event). Geïndexeerd.
container_types Het type van de container (click event, submit event, enz.).
value Tekenreeks met de payload van het event.
first_visit_id Eerste visit_id van de sessie.
session_start_time Unix-seconden.

Voorbeelden

# Recent events for a user
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Events from a specific container in a window
curl 'https://api:KEY@app.personyze.com/rest/events
        /where/container_id=1234&time>1730000000&time<1731000000
        /columns/id,user_id,time,value
        /order_by_desc/time
        /limit/1000'

Wanneer je events gebruikt en wanneer summary_actions.De tabel is groot; query’s moeten filteren op een geïndexeerde kolom (id, user_id, container_id, …), anders wordt het verzoek geweigerd. Gebruik voor geaggregeerde KPI’s over tijd in plaats daarvan summary_actions — daarin staan vooraf berekende dagelijkse tellers per actie.

forms

Logboek van formulierinzendingen. Eén rij per formulierinzending die door de tracker is vastgelegd. Via REST op dit moment alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
time Unix-seconden.
action_id De Personyze-actie die dit formulier activeerde of bevatte, indien van toepassing.
session_start_time Unix-seconden.
plus data (JSON) De ingezonden formulierpayload, verpakt als JSON. Wordt inline gelezen (de sleutels verschijnen als kolommen in het antwoord).

De data -JSON wordt bij het lezen automatisch uitgevouwen tot sleutels op het hoogste niveau — vraag specifieke eigen velden op naam op.

Voorbeelden

# Submissions for a user
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/user_id=5712334
        /order_by_desc/time
        /limit/100'
# Submissions tied to a specific action
curl 'https://api:KEY@app.personyze.com/rest/forms
        /where/action_id=42&time>1730000000
        /columns/user_id,time,email,name,message
        /limit/1000'

Geïndexeerde kolommen zijn onder meer user_id, action_id, en time. Query’s moeten op een van deze filteren.

do

Verdeler voor commando’s die je afvuurt en vergeet: stuur één update van een gebruikersprofiel of één interactie-event zonder het trackerprotocol te spreken. De body is een array met commando’s; elk commando wordt afzonderlijk verwerkt.

GET POST PUT DELETE

Vorm van het verzoek

[
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    [<key-type>, <key-value>, <command>, <arg1>, <arg2>, ...],
    ...
]
  • <key-type>: "user_id", "internal_id", of "email". Optioneel — laat weg bij commando’s die niet op een gebruiker zijn gericht.
  • <key-value>: de bijbehorende identificator.
  • <command>: een tekenreeks (niet hoofdlettergevoelig). Zie de lijst hieronder.
  • <arg…>: positionele argumenten die per commando verschillen.

Een geslaagde POST geeft niets terug; bij fouten wordt een exceptie gegooid (de hele batch stopt bij de eerste fout).

Commando’s

Gebruikersprofiel

["internal_id", "acct-987", "User profile", "first_name", "Alice", "custom_t_1", "VIP"]

Na de naam van het commando wisselen de argumenten elkaar af: field, value, field, value, …

Productinteracties

["internal_id", "acct-987", "Product viewed",          "SKU-1234"]
["internal_id", "acct-987", "Product added to cart",   "SKU-1234", "quantity", 2]
["internal_id", "acct-987", "Product liked",           "SKU-1234"]
["internal_id", "acct-987", "Product purchased",       "SKU-1234", "quantity", 2, "amount", 259.98]
["internal_id", "acct-987", "Product removed from cart","SKU-1234"]
["internal_id", "acct-987", "Product unliked",         "SKU-1234"]

Na de SKU volgen optionele sleutel-waardeparen: "quantity", "amount", "action_id", "transaction_time".

Artikelinteracties

["email", "alice@example.com", "Article viewed",   "how-to-personalize"]
["email", "alice@example.com", "Article liked",    "how-to-personalize"]
["email", "alice@example.com", "Article commented","how-to-personalize"]
["email", "alice@example.com", "Article unliked", "how-to-personalize"]
["email", "alice@example.com", "Article goal",     "how-to-personalize"]

Voorbeelden

# Tag a user as VIP
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[["internal_id","acct-987","User profile","custom_t_1","VIP","first_name","Alice"]]' 
# Log a purchase + a profile update in one round-trip
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
     -H 'Content-Type: application/json' \
     -d '[
       ["email","alice@example.com","Product purchased","SKU-1234","quantity",2,"amount",259.98],
       ["email","alice@example.com","User profile","customer_segment","loyal"]
     ]' 

Wanneer je do gebruikt en wanneer getypeerde endpoints.Opzoeksleutels (internal_id / email) maken automatisch een tijdelijke users -rij aan als geen gebruiker overeenkomt. Gebruik voor het loggen van interacties met een hoge doorvoer liever products_interactions (getypeerd en geïndexeerd) of de gebundelde event-API van de SDK.

sessions_archive

Eén rij per bezoekerssessie (een aaneengesloten periode van activiteit). Ondersteund door de archieftabel met een lange levensduur — veel breder dan events, met metadata over locatie, apparaat, scherm en browser.

GET POST PUT DELETE

Identificerend / huishoudelijk

Kolom Opmerkingen
first_visit_id Primaire sleutel. De id van de eerste visit -rij in deze sessie.
user_id FK → users.user_id. Geïndexeerd.
session_start_time Unix-seconden.
last_session_time Unix-seconden.
session_counter Het hoeveelste sessienummer voor deze gebruiker (1, 2, 3, …).
total_visits Bekeken pagina’s in de sessie.
time_in_focus Seconden dat het tabblad echt de focus had.
time_total Seconden van het begin tot de laatste activiteit.

Geo / taalinstelling / apparaat

Kolom Opmerkingen
time_zone Tijdzoneverschil van de bezoeker (uren).
country_code, region_code, city Geo (op basis van IP). city wordt gekoppeld uit de gedeelde opzoektabel, dus het is een leesbare naam (null als er geen match is).
lang_0, lang_1, lang_2 De eerste drie Accept-Language-waarden.
screen_width, screen_height, screen_depth Pixels / bitdiepte.

Tellers voor betrokkenheid

Kolom Opmerkingen
total_goal_value, total_n_goals Totalen van doelen voor de sessie.
page_click, page_right_mouse, page_key_up, page_scroll Tellingen per event.

Landings-URL & verwijzer

Kolom Opmerkingen
url_prefix, url_host_port, url_path, url_query, url_fragment URL van de eerste pagina van de sessie, in delen gesplitst. url_prefix is de codering van schema+www.
referrer_prefix, referrer_host_port, referrer_path, referrer_query, referrer_fragment Dezelfde vorm, voor de verwijzer.
referrer_type Numerieke tag (zoeken / sociaal / direct / …).
search_word Zoekopdracht bij binnenkomst via een zoekmachine.

UTM / advertentiecampagne

ad_campaign, ad_source, ad_medium, ad_term, ad_content — de standaard UTM-parameters zoals vastgelegd bij binnenkomst.

Voorbeelden

# Sessions for a user, most recent first
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/user_id=5712334
        /columns/first_visit_id,session_start_time,total_visits,country_code,city
        /order_by_desc/session_start_time
        /limit/100'
# Single session by primary key
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
        /where/first_visit_id=900000000123
        /columns/user_id,session_start_time,total_visits,total_goal_value'

Geïndexeerde kolommen: first_visit_id, user_id, plus verschillende andere. Query’s moeten filteren op een geïndexeerde kolom, anders wordt het verzoek geweigerd als scan van de volledige tabel.

user_interests

Interesses, categorieën, tags en tags voor familie/cross-sell/upsell per gebruiker, afgeleid door de pipeline van de tracker. Eén rij per (user_id, value, class, time). Alleen-lezen.

GET POST PUT DELETE

Kolommen

Kolom Opmerkingen
user_id FK → users.user_id. Geïndexeerd.
value Het interessetoken (bijv. categorienaam, tag, trefwoord).
class interest, category, tag, family, cross category, upsale category.
rank Kommagetal. Relevantiescore binnen de klasse.
n_times Hoe vaak deze waarde voor de gebruiker is waargenomen.
time Unix-seconden — wanneer de interesse voor het laatst is bijgewerkt. Geïndexeerd.

Geïndexeerde kolommen: user_id, time. Query’s moeten filteren op een geïndexeerde kolom.

Voorbeelden

# All interests for one user, strongest first
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334
        /columns/value,class,rank,n_times,time
        /order_by_desc/rank
        /limit/100'
# Only categories, recently updated
curl 'https://api:KEY@app.personyze.com/rest/user_interests
        /where/user_id=5712334&class=category
        /order_by_desc/time
        /limit/50'

products_stats_*

Geaggregeerde interactietellers per product, bijgehouden door de offline pipeline voor samenvattingen. Zes doorlopende vensters zijn beschikbaar op aparte paden — kies het venster dat past bij je rapportagehorizon. Ze delen allemaal dezelfde kolomvorm en indexen; alleen het tijdvenster verschilt.

GET POST PUT DELETE

Endpoints

Pad Venster
/rest/products_stats_1day laatste 1 dag
/rest/products_stats_2day laatste 2 dagen
/rest/products_stats_4day laatste 4 dagen
/rest/products_stats_week laatste 7 dagen
/rest/products_stats_recent recent (doorlopend — bepaald door de pipeline)
/rest/products_stats_all hele levensduur

Identificerend

Kolom Opmerkingen
internal_id Primaire sleutel. De externe identificator van het product (SKU / id uit de catalogus die je hebt aangeleverd). Geïndexeerd.

Tellers per product (aantal interacties met dit product binnen het venster)

Kolom Opmerkingen
n_viewed Aantal weergave-events. Geïndexeerd.
n_delivered Aantal bezorgde (getoonde) aanbevelingen. Geïndexeerd (samengesteld met n_viewed).
n_extra “Extra” interacties (bijv. in de winkelwagen). Geïndexeerd (samengesteld met n_viewed).
n_favorite Als favoriet / op de verlanglijst gezet. Geïndexeerd (samengesteld met n_viewed).
n_goal Voltooide doelen (aankopen). Geïndexeerd (samengesteld met n_viewed).

Verdelingsstatistieken voor de hele catalogus

Dezelfde waarde op elke rij — beschrijft de hele catalogus binnen dit venster. Voor elke metriek M ∈ {viewed, delivered, extra, favorite, goal}:

Kolom Opmerkingen
overall_n_<M> Som over alle producten.
overall_avg_<M> Gemiddelde over alle producten.
overall_avg_nonzero_<M> Gemiddelde over producten met minstens één event.
percentile_<M> De percentielrang van deze rij voor de metriek.

Laatste 3 doelgebruikers (meest recente kopers van dit product)

Kolom Opmerkingen
last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2 Afzonderlijk geïndexeerd.
last_goal_user_time_0, last_goal_user_time_1, last_goal_user_time_2 Unix-seconden.

Geïndexeerde kolommen

internal_id, n_viewed, n_delivered, n_extra, n_favorite, n_goal, last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2. Query’s moeten filteren op (of order_by) een van deze.

Voorbeelden

# Top 50 most-viewed products this week
curl 'https://api:KEY@app.personyze.com/rest/products_stats_week
        /where/n_viewed>0
        /columns/internal_id,n_viewed,n_delivered,n_extra,n_goal,percentile_viewed
        /order_by_desc/n_viewed
        /limit/50'
# Lookup one product's lifetime stats
curl 'https://api:KEY@app.personyze.com/rest/products_stats_all
        /where/internal_id=SKU-12345'
# What a specific user purchased recently (matches against last 3 goal users)
curl 'https://api:KEY@app.personyze.com/rest/products_stats_recent
        /where/last_goal_user_id_0=5712334
        /columns/internal_id,n_goal,last_goal_user_time_0'

summary_actions

Dagelijks geaggregeerde KPI’s per actie — één rij per (day, action_id) voor acties die aan een specifieke campagne zijn gekoppeld (condition_id). Alleen-lezen.

GET POST PUT DELETE

Strikte eis voor indexering.Alleen day is geïndexeerd. Elk verzoek moet where/day… bevatten — er is geen uitweg met alleen order_by.

Identificerend

Kolom Opmerkingen
day Unix-tijdstempel (seconden) van 0:00 (middernacht) van de dag in Greenwich-tijd (GMT+0000).
action_name Naam van de actie.
action_id ID van de actie.
campaign_name Naam van de campagne waartoe de actie behoort.
campaign_id ID van de campagne waartoe de actie behoort.

Blootstelling van de actie

Kolom Opmerkingen
n_executed Hoe vaak uitgevoerd (acties gelden als uitgevoerd, ook als de visuele content nog niet is getoond).
n_delivered Hoe vaak we van de browserpagina de melding kregen dat de content zichtbaar werd.
n_extra Hangt af van het actietype. Voor HTML-acties: het aantal kliks. Voor formulieracties: het aantal inzendingen.
n_failed Alleen geteld voor e-mailacties. Hoe vaak het versturen van een e-mail mislukte (bijv. een ongeldig adres).
n_closed Hoe vaak de gebruiker op de knop “sluiten” klikte nadat de content van de actie zichtbaar werd.
n_sessions_executed In hoeveel afzonderlijke sessies er minstens één n_executed voor deze actie was.
n_sessions_delivered In hoeveel afzonderlijke sessies er minstens één was: n_delivered.
n_sessions_extra In hoeveel afzonderlijke sessies er minstens één n_extra.
n_sessions_failed In hoeveel afzonderlijke sessies er minstens één n_failed.
n_sessions_closed In hoeveel afzonderlijke sessies er minstens één n_closed.

Toeschrijving aan producten (als deze actie producten aanbeval)

Kolom Opmerkingen
products_goal_n_times Hoeveel producten (over alle bezoekers) “gekocht” bereikten tijdens een sessie waarin deze actie werd uitgevoerd. Telt elk aankoopevent van een product, dus één bestelling met 3 items telt 3.
products_goal_n_sessions In hoeveel afzonderlijke sessies er minstens één product werd gekocht nadat deze actie was uitgevoerd.
products_goal_value Som van de geldwaarden van alle gekochte producten die zijn geteld in products_goal_n_times.
products_recom_viewed_n_times Hoe vaak een product dat deze actie aanbeval daarna werd bekeken.
products_recom_viewed_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product werd bekeken.
products_recom_extra_n_times Hoe vaak een aanbevolen product daarna aan de winkelwagen werd toegevoegd (of op een andere manier de interactie “extra” bereikte).
products_recom_extra_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product de interactie “extra” bereikte.
products_recom_extra_value Som van de geldwaarden van alle aanbevolen producten met een interactie “extra”.
products_recom_goal_n_times Hoe vaak een aanbevolen product daarna werd gekocht.
products_recom_goal_n_sessions In hoeveel afzonderlijke sessies minstens één aanbevolen product werd gekocht.
products_recom_goal_value Som van de geldwaarden van alle gekochte aanbevolen producten.

Toeschrijving aan artikelen

Dezelfde vorm als bij de toeschrijving aan producten, maar voor artikelen: articles_recom_viewed_n_times, articles_recom_viewed_n_sessions, articles_recom_extra_n_times, articles_recom_extra_n_sessions, articles_recom_extra_value, articles_recom_goal_n_times, articles_recom_goal_n_sessions, articles_recom_goal_value.

Eigen doelevents per account

Een account kan tot 12 doelevents instellen. Voor elke eventcontainer die in je account is ingesteld met een goal_event_index (N van 1 tot 12 die niet nul is, verschijnen er vier extra kolommen in het antwoord:

  • goal_event_N_name — Weergavenaam van het ingestelde doelevent. Wordt teruggegeven als letterlijke tekenreeks, op elke rij hetzelfde.
  • goal_event_N_n_times — Hoe vaak dit doelevent afging tijdens een sessie waarin de actie werd uitgevoerd.
  • goal_event_N_n_sessions — In hoeveel afzonderlijke sessies dit doelevent minstens één keer afging nadat de actie was uitgevoerd.
  • goal_event_N_value — Som van de geldwaarden die voor dit doelevent zijn gerapporteerd over de keren die zijn geteld in goal_event_N_n_times (nul, tenzij de container van het doelevent is ingesteld om een waarde vast te leggen).

Voorbeelden

# Last 30 days, daily KPIs per action
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/day>1730000000
        /columns/day,action_name,n_executed,n_delivered,n_extra,products_goal_value
        /order_by_desc/day
        /limit/1000'
# A specific action's lifetime
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
        /where/action_id=42&day>1700000000
        /order_by/day
        /limit/1000'

tracker_code

Geeft het JS-snippet terug dat je op je site insluit om de Personyze-tracker op te starten. De inhoud wordt afgeleid uit de instellingen van je account (account-ID, trackinghost, vlaggen voor async/niet verbergen).

GET POST PUT DELETE

Antwoord

Een gewoon text/html -snippet (of JS in een<script>), klaar om in een <head>te plakken. De body is geen JSON — dit is het ene REST-endpoint dat ruwe HTML teruggeeft.

Voorbeeld

curl 'https://api:KEY@app.personyze.com/rest/tracker_code'
<script>(function(s){
    s.async = true;
    s.src = '//lcounter.personyze.com/stat-track-lib.js';
    s.onload = function() {
        _S_T.async = true;
        _S_T.setup(5919, "example.com www.example.com");
    };
    (document.querySelector('head') || document.documentElement).appendChild(s);
}(document.createElement('script')))</script>

Conventies voor het trackersnippet.Het snippet bevat je account-ID en de lijst met toegestane hostnamen die voor dat account zijn geregistreerd. Bewerk het niet met de hand; haal het opnieuw op als je via de interface nieuwe domeinen toevoegt. Voor native SDK-clients (iOS / Android) is dit endpoint niet relevant — de SDK spreekt het trackerprotocol direct via interne endpoints.

Volgende stappen

📖 Syntaxis van padparametersVerdiep je in where/columns/order_by/limit met alle operatoren en voorbeelden. Lezen →
🔑 AuthenticatieOmgaan met de API-sleutel, indeling van de header, foutcodes, opzetten met meerdere accounts. Lezen →
🛠 Bronnen voor developersSDK’s, GitHub-repo’s en andere tools voor developers. Lezen →
Did this page answer your question?
Thank you — that goes to whoever maintains this page.