Documentazione Schema Prisma
Modello User
Modello Product
Modello Order
Modello Page
Modello PageTranslation
Enumerazioni
Modello Payment
Modello Coupon
Modello CouponUsage
Modello Post
Modello PostTranslation
Modello Tag
Modello TagTranslation
Modello User
Il modello User rappresenta gli utenti nel sistema, inclusi i clienti e gli amministratori. Contiene campi come
email, password, e userType. Il campo userType può essere uno dei seguenti: CUSTOMER, ADMIN,MANAGEMENT o SHOP_MANAGER, definiti dall'enum UserType.
model User {
id Int @id @default(autoincrement())
email String @unique
password String
companyName String
contactPerson String
phoneNumber String
address String
city String
postalCode String
country String
vatNumber String @unique
userType UserType @default(CUSTOMER)
orders Order[] @relation(name: "UserOrders")
payments Payment[] @relation(name: "UserPayments")
couponUsages CouponUsage[] @relation(name: "UserCouponUsages")
pages Page[] @relation(name: "UserPages")
posts Post[] @relation(name: "UserPosts")
accounts Account[] @relation("UserAccounts")
sessions Session[] @relation("UserSessions")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}Documentazione API Test
Test API Pages
Test API Posts
Test API Utenti
Test API Email
Test API Coupon
Test API Uso dei Coupon
Test API delle Pagine
La pagina di test per l'API delle Pagine ti permette di eseguire richieste HTTP per creare, aggiornare, eliminare e recuperare pagine. Vai a
/test/page per utilizzare questa interfaccia.Metodi Supportati
- GET: Recupera una pagina o una specifica traduzione.
- POST: Crea una nuova pagina.
- PUT: Aggiorna una traduzione esistente.
- PATCH: Aggiunge una nuova traduzione a una pagina esistente.
- DELETE: Elimina una pagina o una traduzione specifica.
Esempio di Corpo JSON (POST)
{
"slug": "chi-siamo",
"status": "PUBLISHED",
"translations": [
{
"language": "it",
"title": "Chi Siamo",
"content": "<p>Benvenuti nella nostra azienda!</p>",
"seoTitle": "Scopri di più su di noi",
"metaDescription": "Informazioni su ciò che facciamo"
}
]
}Per testare l'API, seleziona il metodo, inserisci lo slug della pagina e, per i metodi POST, PUT e PATCH, incolla il corpo JSON.
Test API dei Coupon
La pagina di test per l'API dei Coupon ti permette di eseguire richieste HTTP per creare, aggiornare, eliminare e recuperare i coupon. Vai a
/test/coupons per utilizzare questa interfaccia.Metodi Supportati
- GET: Recupera i dettagli di un coupon specifico tramite il codice.
- POST: Crea un nuovo coupon nel sistema.
- PATCH: Aggiorna un coupon esistente.
- DELETE: Elimina un coupon dal sistema.
Esempio di Corpo JSON (POST)
{
"code": "SUMMER2024",
"discountValue": 15,
"discountType": "PERCENTAGE",
"usageLimit": 100,
"expiresAt": "2024-09-30T23:59:59Z",
"active": true,
"translations": [
{
"language": "it",
"description": "Coupon estivo 2024"
}
]
}Esempio di Corpo JSON (PATCH)
{
"code": "SUMMER2024",
"discountValue": 20
}Per testare l'API, seleziona il metodo, inserisci il codice del coupon e, per i metodi POST e PATCH, incolla il corpo JSON.
API Login Documentation
1. Panoramica del Sistema di Autenticazione
2. Prerequisiti
3. Configurazione dell’Ambiente
4.1. Pagina di Login (SignInPage)
4.2. Uso dello Stato di Autenticazione nei Componenti
5. Flusso di Login
6. Gestione degli Errori
Panoramica del Sistema di Autenticazione
L’applicazione utilizza NextAuth.js per gestire l’autenticazione degli utenti tramite un provider di Credenziali (email e password). La gestione dello stato di autenticazione avviene tramite JWT (JSON Web Tokens) e le sessioni sono mantenute sia lato client che server.
Documentazione API Pagamenti
1. Panoramica
2. Creazione di un Pagamento (POST)
3. Aggiornamento di un Pagamento (PATCH)
Panoramica dell'API Pagamenti
Questa API consente ai client di creare e aggiornare i record di pagamento nel sistema. Il sistema è integrato con il gateway di pagamento Nexi. Di seguito sono riportati i dettagli sugli endpoint per la creazione di un nuovo pagamento e per l'aggiornamento di un pagamento esistente con una richiesta PATCH.
Documentazione API per gli Ordini
Crea un Ordine (POST)
Elimina un Ordine (DELETE)
Aggiorna un Ordine o Applica Coupon (PATCH)
Recupera un Ordine (GET)
Elenco degli Ordini (GET)
Crea un Ordine (POST)
Endpoint:
POST /api/ordersDescrizione: Questo endpoint permette di creare un nuovo ordine associato ad un utente autenticato.
Corpo della Richiesta
{
"items": [
{ "productId": 1, "quantity": 2, "price": 15.99 },
{ "productId": 2, "quantity": 1, "price": 45.50 }
],
"total": 77.48
}Esempio di Risposta
{
"id": 1,
"userId": 123,
"orderDate": "2024-09-19T14:00:00.000Z",
"status": "PENDING",
"total": 77.48,
"items": [
{ "productId": 1, "quantity": 2, "price": 15.99 },
{ "productId": 2, "quantity": 1, "price": 45.50 }
],
"createdAt": "2024-09-19T14:00:00.000Z",
"updatedAt": "2024-09-19T14:00:00.000Z"
}Pages API Documentation
Create Page (POST)
Fetch Single Page (GET)
List All Pages (GET)
Update Translation (PUT)
Add Translation (PATCH)
Delete Page or Translation (DELETE)
Create a Page (POST)
Endpoint:
POST /api/pagesDescription: Crea una nuova pagina con le relative traduzioni.
Request Body
{
"slug": "chi-siamo",
"status": "PUBLISHED",
"translations": [
{
"language": "it",
"title": "Chi Siamo",
"content": "<p>Benvenuti nella nostra azienda!</p>",
"seoTitle": "Scopri di più su di noi",
"metaDescription": "Informazioni su ciò che facciamo",
"canonicalUrl": "https://tuo-sito.com/chi-siamo",
"metaKeywords": ["azienda", "chi siamo"],
"ogImage": "https://tuo-sito.com/images/chi-siamo.jpg",
"ogTitle": "Chi Siamo",
"ogDescription": "Benvenuti nella nostra azienda!"
}
]
}Response Example
{
"id": 1,
"slug": "chi-siamo",
"status": "PUBLISHED",
"createdAt": "2024-09-01T12:34:56.789Z",
"translations": [
{
"id": 1,
"language": "it",
"title": "Chi Siamo",
"content": "<p>Benvenuti nella nostra azienda!</p>"
}
]
}Users API Documentation
Create User (POST)
Fetch Single User (GET)
List All Users (GET)
Update User (PATCH)
Delete User (DELETE)
Create a User (POST)
Endpoint:
POST /api/usersDescription: Crea un nuovo utente nel sistema.
Request Body
{
"email": "john.doe@example.com",
"password": "securePassword123",
"companyName": "Doe Enterprises",
"contactPerson": "John Doe",
"phoneNumber": "+123456789",
"address": "123 Main Street",
"city": "Sample City",
"postalCode": "12345",
"country": "USA",
"vatNumber": "US123456789",
"userType": "CUSTOMER"
}Response Example
{
"id": 1,
"email": "john.doe@example.com",
"companyName": "Doe Enterprises",
"contactPerson": "John Doe",
"phoneNumber": "+123456789",
"address": "123 Main Street",
"city": "Sample City",
"postalCode": "12345",
"country": "USA",
"vatNumber": "US123456789",
"userType": "CUSTOMER",
"createdAt": "2024-09-01T12:34:56.789Z"
}Documentazione API per le Notifiche Email
Invia Notifica Email (POST)
Tipi di Notifiche Supportati
Invia una Notifica Email (POST)
Endpoint:
POST /api/notifications/emailDescrizione: Invia una notifica via email per un determinato evento.
Corpo della Richiesta
{
"email": "utente@example.com",
"type": "ORDER_CONFIRMED",
"language": "it",
"dynamicData": {
"name": "Mario Rossi",
"orderId": "123456",
"orderDate": "2024-09-01"
}
}Esempio di Risposta
{
"message": "Email di notifica inviata con successo",
"result": {
"accepted": ["utente@example.com"],
"messageId": "<unique-id@example.com>"
}
}Documentazione API per la Gestione dei Coupon
Crea Coupon (POST)
Aggiorna Coupon (PATCH)
Elimina Coupon (DELETE)
Recupera Coupon (GET)
Elenco di tutti i Coupon (GET)
Crea un nuovo Coupon (POST)
Endpoint:
POST /api/couponsDescrizione: Crea un nuovo codice coupon da usare nel sistema.
Corpo della Richiesta
{
"code": "SUMMER2024",
"discountValue": 20,
"discountType": "PERCENTAGE",
"usageLimit": 100,
"expiresAt": "2024-12-31",
"active": true
}Esempio di Risposta
{
"id": 1,
"code": "SUMMER2024",
"discountValue": 20,
"discountType": "PERCENTAGE",
"usageLimit": 100,
"expiresAt": "2024-12-31",
"active": true
}