Provider Person

Zasób przechowujący osoby kontaktowe przypisane do dostawców (provider_persons). Każda osoba należy do jednego dostawcy przez provider_id.

Endpointy obsługujące żądanie:

  • https://api.5ways.com

Walidacje

  • first_name: wymagane (NOT EMPTY, bez samych spacji)
  • last_name: wymagane (NOT EMPTY, bez samych spacji)
  • email: wymagane (NOT EMPTY) + poprawny format + unikalność w ramach (customer_id, email)
  • provider_id: wymagane (NOT EMPTY) + musi wskazywać istniejący rekord w providers.id należący do bieżącego klienta

Szczegóły walidacji provider_id

Pole provider_id jest sprawdzane pod kątem:

  1. Wymagalność - nie może być puste
  2. Istnienie dostawcy - musi istnieć rekord w tabeli providers o podanym ID
  3. Przynależność do klienta - dostawca musi należeć do bieżącego użytkownika (customer_id)

Przykład błędu walidacji

HTTP/1.1 400 Bad Request
{
  "status": "error",
  "errorMessages": {
    "provider_id": "Wybrany dostawca nie istnieje."
  }
}

Uwaga dotycząca powiązań

  • Pole provider_id jest kluczem obcym do tabeli providers i musi się zgadzać z istniejącym providers.id.

Pobieranie listy osób kontaktowych

GET /rest/provider_person

Zwracane dane (przykład)

HTTP/1.1 200 OK
[
  {
    "ProviderPerson": {
      "id": "10",
      "customer_id": "82",
      "provider_id": "1",
      "issue_initiator_id": null,
      "first_name": "Jan",
      "last_name": "Kowalski",
      "description": "Kierownik sprzedaży",
      "email": "jan.kowalski@abc-dostawy.pl",
      "phone": "+48 22 123 45 68",
      "created": "2025-01-06 12:10:00",
      "modified": "2025-01-06 12:10:00"
    },
    "Provider": {
      "name": "ABC Dostawy Sp. z o.o."
    }
  }
]

Pobieranie osoby kontaktowej

GET /rest/provider_person/{id}

Zwracane dane

HTTP/1.1 200 OK
{
  "ProviderPerson": {
    "id": "10",
    "customer_id": "82",
    "provider_id": "1",
    "issue_initiator_id": null,
    "first_name": "Jan",
    "last_name": "Kowalski",
    "description": "Kierownik sprzedaży",
    "email": "jan.kowalski@abc-dostawy.pl",
    "phone": "+48 22 123 45 68",
    "created": "2025-01-06 12:10:00",
    "modified": "2025-01-06 12:10:00"
  },
  "Provider": {
    "name": "ABC Dostawy Sp. z o.o."
  }
}

Tworzenie osoby kontaktowej

POST /rest/provider_person

Treść żądania

{
  "ProviderPerson": {
    "provider_id": 1,   // musi odpowiadać istniejącemu providers.id
    "first_name": "Anna",
    "last_name": "Nowak",
    "email": "anna.nowak@abc-dostawy.pl",
    "phone": "+48 22 123 45 69",
    "description": "Specjalista ds. logistyki"
  }
}

Odpowiedź

HTTP/1.1 201 Created
{
  "ProviderPerson": {
    "id": "11",
    "customer_id": "82",
    "provider_id": "1",
    "issue_initiator_id": null,
    "first_name": "Anna",
    "last_name": "Nowak",
    "email": "anna.nowak@abc-dostawy.pl",
    "phone": "+48 22 123 45 69",
    "description": "Specjalista ds. logistyki",
    "created": "2025-01-06 12:15:00",
    "modified": "2025-01-06 12:15:00"
  }
}

Modyfikowanie osoby kontaktowej

PUT /rest/provider_person/{id}

Treść żądania

{
  "ProviderPerson": {
    "provider_id": 1,
    "first_name": "Anna",
    "last_name": "Nowak-Kowalska",
    "email": "anna.nowak@abc-dostawy.pl",
    "phone": "+48 22 123 45 69",
    "description": "Kierownik ds. logistyki"
  }
}

Usuwanie osoby kontaktowej

DELETE /rest/provider_person/{id}

Odpowiedź

HTTP/1.1 200 OK
{
  "status": "OK"
}

Błędy walidacji

Brak wymaganych pól

HTTP/1.1 400 Bad Request
{
  "status": "error",
  "errorMessages": {
    "first_name": "Pole \"first_name\" jest obowiązkowe.",
    "last_name": "Pole \"last_name\" jest obowiązkowe.",
    "email": "Pole \"email\" jest obowiązkowe."
  }
}

Niepoprawny email

HTTP/1.1 400 Bad Request
{
  "status": "error",
  "errorMessages": {
    "email": "Adres e-mail jest niepoprawny."
  }
}

Zduplikowany email

HTTP/1.1 400 Bad Request
{
  "status": "error",
  "errorMessages": {
    "email": "Ten adres e-mail jest już używany przez inną osobę."
  }
}

Nieprawidłowy dostawca

HTTP/1.1 400 Bad Request
{
  "status": "error",
  "errorMessages": {
    "provider_id": "Wybrany dostawca nie istnieje."
  }
}