Klienci
tworzysz nowe profile, zaktualizujesz dane, które już posiadasz, i pobierzesz informacje o klientach na podstawie wybranych identyfikatorów.
POST /customers – dodawanie lub aktualizacja danych klienta
Ta metoda tworzy nowe rekordy klientów lub aktualizuje istniejące dane klientów.
Endpoint
Endpoint (adres serwera) dla tego zapytania to https://api.ecdp.app/customers
Parametry zapytania
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| x-api-key | header | string | tak | Klucz API do uwierzytelnienia. | Dostępny w Ustawienia > API. |
| Content-Type | header | string | tak | Typ zawartości żądania. | application/json. |
| mode | body | string | tak | Tryb operacji. | Add, Update, AddOrUpdate. |
| matchBy | body | string | tak | Pole identyfikujące klienta. | Email, PhoneNumber, CrmId, GUID, visitorId. Musi być zgodny z ustawieniami w Ustawienia > Klienci > Domyślny tryb dopasowania. |
| data | body | array | tak | Tablica obiektów klientów. | Zobacz strukturę Customer data poniżej. |
Customer data
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| body | string | warunkowo | Adres email klienta. | Wymagany, jeśli matchBy=Email. Maksymalnie 320 znaków. | |
| phone | body | string | warunkowo | Numer telefonu klienta. | Wymagany, jeśli matchBy=PhoneNumber. Maksymalnie 20 znaków, bez spacji. |
| crmId | body | string | warunkowo | Identyfikator CRM klienta. | Wymagany, jeśli matchBy=CrmId. Maksymalnie 128 znaków. |
| visitorId | body | string | nie | Identyfikator śledzenia odwiedzającego stronę. | Maksymalnie 38 znaków. |
| firstName | body | string | nie | Imię klienta. | Maksymalnie 256 znaków. |
| lastName | body | string | nie | Nazwisko klienta. | Maksymalnie 256 znaków. |
| dateOfBirth | body | string ($date-time) | nie | Data urodzenia. | Format ISO-8601: 2023-07-25T12:35:54.712Z. |
| gender | body | string | nie | Płeć klienta. | Male, Female, NotSpecified. |
| customAttributes | body | array | nie | Wartości atrybutów własnych. | Zobacz strukturę Custom attributes. |
| consentsData | body | object | nie | Informacje o zgodach. | Zobacz strukturę Consents data. |
Custom atrributes (cechy klienta)
Informacje dotyczące pojedynczej cechy klienta:
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| name | body | string | tak | Nazwa atrybutu. | Minimum 1, maksymalnie 256 znaków. |
| value | body | string | nie | Wartość atrybutu. | Typ danych musi odpowiadać definicji atrybutu. |
Consents data
Zawiera tablicę wszystkich zgód oraz dodatkowe ustawienia dla statusu „AwaitingConformation”
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| consents | body | array | nie | Tablica danych zgód. | Zobacz strukturę Consent value. |
| force | body | boolean | nie | Ponowne wysłanie potwierdzenia dla zgód w statusie AwaitingConfirmation. | Domyślnie: false. |
| confirmationMessageId | body | integer | nie | ID wiadomości potwierdzającej. | Musi być prawidłowym ID wiadomości. |
Consent value
Wyświetla szczegóły pojedynczej zgody.
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| id | body | integer ($int32) | tak | ID zgody. | Musi istnieć w Ustawienia > Zgody. |
| value | body | string | tak | Status zgody. | False, AwaitingConfirmation, True. |
Przykładowe zapytania
Dodanie nowego klienta
{
"mode": "Add",
"matchBy": "Email",
"data": [
{
"email": "jan.kowalski@poczta.pl",
"firstName": "Jan",
"lastName": "Kowalski",
"phone": "48123456789",
"gender": "Mężczyzna",
"dateOfBirth": "1985-03-15T00:00:00.000Z"
}
]
}Dodanie lub aktualizacja cech oraz zgód
{
"mode": "AddOrUpdate",
"matchBy": "Email",
"data": [
{
"email": "anna.nowak@poczta.pl",
"firstName": "Anna",
"lastName": "Nowak",
"phone": "48987654321",
"gender": "Kobieta",
"customAttributes": [
{
"name": "język",
"value": "pl"
},
{
"name": "Karta stałego klienta",
"value": "Złota"
}
],
"consentsData": {
"consents": [
{
"id": 1,
"value": "True"
},
{
"id": 2,
"value": "AwaitingConfirmation"
}
],
"force": false,
"confirmationMessageId": 101
}
}
]
}Kody odpowiedzi
| Kod | Status | Opis |
| 201 | Created | Rekord klienta został pomyślnie utworzony lub zaktualizowany. |
| 400 | Bad Request | Nieprawidłowe parametry, brakujące wymagane pola lub błąd walidacji. |
| 401 | Unauthorized | Brak klucza API lub klucz jest nieprawidłowy. |
| 403 | Forbidden | Niewystarczające uprawnienia do wykonania tej operacji. |
| 500 | Internal Server Error | Błąd po stronie serwera. Ponów próbę z wykładniczym opóźnieniem. |
Odpowiedź zawiera statystyki, cechy klienta i status zgód.
GET /customers/{identifier} – pobieranie informacji o kliencie
Metoda GET pobiera pełne dane profilu klienta, wykorzystując jeden z czterech typów identyfikatorów: ID, adres email, numer telefonu lub ID CRM.
Endpointy
ID: https://api.ecdp.app/customers/id/{id}
Email: https://api.ecdp.app/customers/email/{email}
Phone: https://api.ecdp.app/customers/phone/{phone}
CRM ID: https://api.ecdp.app/customers/crmId/{crmId}
Parametry zapytania
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| x-api-key | header | string | tak | Klucz API do uwierzytelnienia. | Dostępny w Ustawienia > API. |
| id | path | string | warunkowo | Wewnętrzny ID klienta. | Wymagany dla /customers/id/{id}. |
| path | string | warunkowo | Adres email klienta. | Wymagany dla /customers/email/{email}. | |
| phone | path | string | warunkowo | Numer telefonu klienta. | Wymagany dla /customers/phone/{phone}. Bez spacji. |
| crmId | path | string | warunkowo | Identyfikator CRM klienta. | Wymagany dla /customers/crmId/{crmId}. |
Przykładowe zapytania i odpowiedzi
Pobranie danych klienta z użyciem ID
Zapytane:
GET /customers/id/12345
Odpowiedź:
{
"status": 200,
"data": {
"email": "jan.kowalski@poczta.pl",
"phone": "48123456789",
"crmId": "CRM-001234",
"firstName": "Jan",
"lastName": "Kowalski",
"dateOfBirth": "1985-03-15T00:00:00.000Z",
"gender": "Mężczyzna",
"rfmSegment": "Czempioni",
"totalSpent": 2450.00,
"totalOrders": 12,
"totalOrderReturns": 1,
"avgOrder": 204.17,
"avgPricePoint": 68.06,
"lastOrder": "2024-01-15T14:30:00.000Z",
"avgTimeBetweenOrdersInDays": 28,
"currencySymbol": "PLN",
"customAttributes": [
{
"name": "język",
"value": "pl"
}
],
"consentsData": {
"consents": [
{
"id": 1,
"value": "True"
}
]
}
}
}Pobranie danych klienta z użyciem adresu e-mail
Zapytanie:
GET /customers/email/anna.nowak@poczta.pl
Odpowiedź:
{
"status": 200,
"data": {
"email": "anna.nowak@ poczta.pl",
"phone": "48987654321",
"crmId": "CRM-005678",
"firstName": "Anna",
"lastName": "Nowak",
"dateOfBirth": "1990-07-22T00:00:00.000Z",
"gender": "Kobieta",
"rfmSegment": "Lojalni",
"totalSpent": 890.50,
"totalOrders": 5,
"totalOrderReturns": 0,
"avgOrder": 178.10,
"avgPricePoint": 44.53,
"lastOrder": "2024-02-01T09:15:00.000Z",
"avgTimeBetweenOrdersInDays": 45,
"currencySymbol": "EUR",
"customAttributes": [
{
"name": "Karta stałego klienta",
"value": "Złota"
}
],
"consentsData": {
"consents": [
{
"id": 1,
"value": "True"
},
{
"id": 2,
"value": "True"
}
]
}
}
}Kody odpowiedzi
| Kod | Status | Opis |
| 200 | OK | Klient został znaleziony i zwrócony. |
| 400 | Bad Request | Nieprawidłowy format identyfikatora. |
| 401 | Unauthorized | Brak klucza API lub klucz jest nieprawidłowy. |
| 403 | Forbidden | Niewystarczające uprawnienia do wykonania tej operacji. |
| 404 | Not Found | Klient o podanym identyfikatorze nie istnieje. |
| 500 | Internal Server Error | Błąd po stronie serwera. Ponów próbę z wykładniczym opóźnieniem. |
DELETE /customers/{identyfikator} – usuwanie danych klienta
Trwale usuwa profil klienta z ExpertSender CDP, wykorzystując jeden z czterech typów identyfikatorów: ID, adres email, numer telefonu lub ID CRM. Opcjonalnie anonimizuje dane klienta w celu zgodności z RODO.
Endpointy
ID: https://api.ecdp.app/customers/id/{id}
Email: https://api.ecdp.app/customers/email/{email}
Phone: https://api.ecdp.app/customers/phone/{phone}
CRM ID: https://api.ecdp.app/customers/crmId/{crmId}
Parametry zapytania
| Parametr | Lokalizacja | Typ | Wymagany | Opis | Dozwolone wartości / Uwagi |
| x-api-key | header | string | tak | Klucz API do uwierzytelnienia. | Dostępny w Ustawienia > API. |
| withAnonymization | query | boolean | nie | Anonimizacja danych klienta oprócz usunięcia. | true, false. Użyj dla zgodności z prawem do usunięcia danych (RODO). |
| id | path | string | warunkowo | Wewnętrzny ID klienta. | Wymagany dla endpointu /customers/id/{id}. |
| path | string | warunkowo | Adres email klienta. | Wymagany dla endpointu /customers/email/{email}. | |
| phone | path | string | warunkowo | Numer telefonu klienta. | Wymagany dla endpointu /customers/phone/{phone}. Tylko cyfry, bez spacji. |
| crmId | path | string | warunkowo | Identyfikator CRM klienta. | Wymagany dla endpointu /customers/crmId/{crmId}. |
Przykładowe zapytania i odpowiedzi
Usunięcie klienta po ID
Zapytanie:
DELETE /customers/id/12345
Odpowiedź: 200 OK
{
"status": 200
}Usunięcie klienta po adresie email z anonimizacją
Zapytanie:
DELETE /customers/email/jan.kowalski@ poczta.pl?withAnonymization=true
Odpowiedź: 200 OK
{
"status": 200
}Odpowiedź w przypadku błędnego zapytania
W przypadku wystąpienia błędu (401, 404), odpowiedź zawiera informacje diagnostyczne:
{
"type": "string",
"title": "string",
"status": 0,
"substatus": "CanNotGetSegmentWithId",
"detail": "string",
"instance": "string"
}| Pole | Typ | Opis |
| type | string | URI typu błędu. |
| title | string | Krótki tytuł błędu. |
| status | integer | Kod statusu HTTP. |
| substatus | string | Szczegółowy kod błędu (74 możliwe wartości). |
| detail | string | Szczegółowy opis błędu. |
| instance | string | Identyfikator instancji żądania. |
Kody odpowiedzi
| Kod | Status | Opis |
| 200 | OK | Klient został pomyślnie usunięty. |
| 400 | Bad Request | Nieprawidłowy format identyfikatora lub wartość parametru. |
| 401 | Unauthorized | Brak klucza API lub klucz jest nieprawidłowy. |
| 403 | Forbidden | Niewystarczające uprawnienia do wykonania tej operacji. |
| 404 | Not Found | Klient o podanym identyfikatorze nie istnieje. |
| 500 | Internal Server Error | Błąd po stronie serwera. Ponów próbę z wykładniczym opóźnieniem. |
Walidacja i zasady działania
- Możliwe jest dodanie lub aktualizacja jednego lub wielu klientów za pomocą jednego zapytania.
- Parametr mode musi przyjmować dokładnie jedną z wartości: Add, Update, AddOrUpdate.
- Parametr matchBy musi odpowiadać domyślnemu polu identyfikacji skonfigurowanemu w Ustawienia > Klienci.
- Dla mode=Update klient musi już istnieć – w przeciwnym razie zwracany jest błąd 404 Not Found.
- Gdy consentsData.consents[].value ma wartość AwaitingConfirmation, automatycznie wysyłany jest email z potwierdzeniem.
Dokumentacja referencyjna#
Swagger – sekcja Customers