Przejdź do treści

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

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
x-api-keyheaderstringtakKlucz API do uwierzytelnienia.Dostępny w Ustawienia > API.
Content-TypeheaderstringtakTyp zawartości żądania.application/json.
modebodystringtakTryb operacji.Add, Update, AddOrUpdate.
matchBybodystringtakPole identyfikujące klienta.Email, PhoneNumber, CrmId, GUID, visitorId. Musi być zgodny z ustawieniami w Ustawienia > Klienci > Domyślny tryb dopasowania.
databodyarraytakTablica obiektów klientów.Zobacz strukturę Customer data poniżej.

Customer data

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
emailbodystringwarunkowoAdres email klienta.Wymagany, jeśli matchBy=Email. Maksymalnie 320 znaków.
phonebodystringwarunkowoNumer telefonu klienta.Wymagany, jeśli matchBy=PhoneNumber. Maksymalnie 20 znaków, bez spacji.
crmIdbodystringwarunkowoIdentyfikator CRM klienta.Wymagany, jeśli matchBy=CrmId. Maksymalnie 128 znaków.
visitorIdbodystringnieIdentyfikator śledzenia odwiedzającego stronę.Maksymalnie 38 znaków.
firstNamebodystringnieImię klienta.Maksymalnie 256 znaków.
lastNamebodystringnieNazwisko klienta.Maksymalnie 256 znaków.
dateOfBirthbodystring ($date-time)nieData urodzenia.Format ISO-8601: 2023-07-25T12:35:54.712Z.
genderbodystringniePłeć klienta.Male, Female, NotSpecified.
customAttributesbodyarraynieWartości atrybutów własnych.Zobacz strukturę Custom attributes.
consentsDatabodyobjectnieInformacje o zgodach.Zobacz strukturę Consents data.

Custom atrributes (cechy klienta)

Informacje dotyczące pojedynczej cechy klienta:

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
namebodystringtakNazwa atrybutu.Minimum 1, maksymalnie 256 znaków.
valuebodystringnieWartość atrybutu.Typ danych musi odpowiadać definicji atrybutu.

Consents data

Zawiera tablicę wszystkich zgód oraz dodatkowe ustawienia dla statusu „AwaitingConformation”

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
consentsbodyarraynieTablica danych zgód.Zobacz strukturę Consent value.
forcebodybooleanniePonowne wysłanie potwierdzenia dla zgód w statusie AwaitingConfirmation.Domyślnie: false.
confirmationMessageIdbodyintegernieID wiadomości potwierdzającej.Musi być prawidłowym ID wiadomości.

Wyświetla szczegóły pojedynczej zgody.

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
idbodyinteger ($int32)takID zgody.Musi istnieć w Ustawienia > Zgody.
valuebodystringtakStatus 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

KodStatusOpis
201CreatedRekord klienta został pomyślnie utworzony lub zaktualizowany.
400Bad RequestNieprawidłowe parametry, brakujące wymagane pola lub błąd walidacji.
401UnauthorizedBrak klucza API lub klucz jest nieprawidłowy.
403ForbiddenNiewystarczające uprawnienia do wykonania tej operacji.
500Internal Server ErrorBłą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

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
x-api-keyheaderstringtakKlucz API do uwierzytelnienia.Dostępny w Ustawienia > API.
idpathstringwarunkowoWewnętrzny ID klienta.Wymagany dla /customers/id/{id}.
emailpathstringwarunkowoAdres email klienta.Wymagany dla /customers/email/{email}.
phonepathstringwarunkowoNumer telefonu klienta.Wymagany dla /customers/phone/{phone}. Bez spacji.
crmIdpathstringwarunkowoIdentyfikator 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

KodStatusOpis
200OKKlient został znaleziony i zwrócony.
400Bad RequestNieprawidłowy format identyfikatora.
401UnauthorizedBrak klucza API lub klucz jest nieprawidłowy.
403ForbiddenNiewystarczające uprawnienia do wykonania tej operacji.
404Not FoundKlient o podanym identyfikatorze nie istnieje.
500Internal Server ErrorBłą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

ParametrLokalizacjaTypWymaganyOpisDozwolone wartości / Uwagi
x-api-keyheaderstringtakKlucz API do uwierzytelnienia.Dostępny w Ustawienia > API.
withAnonymizationquerybooleannieAnonimizacja danych klienta oprócz usunięcia.true, false. Użyj dla zgodności z prawem do usunięcia danych (RODO).
idpathstringwarunkowoWewnętrzny ID klienta.Wymagany dla endpointu /customers/id/{id}.
emailpathstringwarunkowoAdres email klienta.Wymagany dla endpointu /customers/email/{email}.
phonepathstringwarunkowoNumer telefonu klienta.Wymagany dla endpointu /customers/phone/{phone}. Tylko cyfry, bez spacji.
crmIdpathstringwarunkowoIdentyfikator 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"
}
PoleTypOpis
typestringURI typu błędu.
titlestringKrótki tytuł błędu.
statusintegerKod statusu HTTP.
substatusstringSzczegółowy kod błędu (74 możliwe wartości).
detailstringSzczegółowy opis błędu.
instancestringIdentyfikator instancji żądania.

Kody odpowiedzi

KodStatusOpis
200OKKlient został pomyślnie usunięty.
400Bad RequestNieprawidłowy format identyfikatora lub wartość parametru.
401UnauthorizedBrak klucza API lub klucz jest nieprawidłowy.
403ForbiddenNiewystarczające uprawnienia do wykonania tej operacji.
404Not FoundKlient o podanym identyfikatorze nie istnieje.
500Internal Server ErrorBłą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

https://api.ecdp.app/swagger/index.html