ujusum:3-codage:1-repository:3-spec-open-api
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| ujusum:3-codage:1-repository:3-spec-open-api [2026/06/07 21:09] – créée admin | ujusum:3-codage:1-repository:3-spec-open-api [2026/06/08 00:59] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 2014: | Ligne 2014: | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Phase 3-A.3 ===== | + | ===== Objectif |
| - | OpenAPI Customers & Reservations | + | Définir le cœur transactionnel de la plateforme : |
| < | < | ||
| Customers | Customers | ||
| + | Reservations | ||
| + | |||
| + | Reservation Guests | ||
| + | |||
| + | Reservation Pricing | ||
| + | |||
| + | Reservation Events | ||
| + | |||
| + | Reservation Status History | ||
| + | </ | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 4 | ||
| + | |||
| + | Réservation & Calendrier | ||
| + | </ | ||
| + | |||
| + | et constitue la base de : | ||
| + | |||
| + | < | ||
| + | Contrats | ||
| + | |||
| + | Paiements | ||
| + | |||
| + | OTA | ||
| + | |||
| + | Revenue Management | ||
| + | |||
| + | CRM | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Customers | ||
| + | |||
| + | - name: CustomerDocuments | ||
| + | |||
| + | - name: CustomerNotes | ||
| + | |||
| + | - name: Reservations | ||
| + | |||
| + | - name: ReservationGuests | ||
| + | |||
| + | - name: ReservationPricing | ||
| + | |||
| + | - name: ReservationEvents | ||
| + | |||
| + | - name: ReservationCalendar | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Customers ====== | ||
| + | |||
| + | ===== Customer ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Customer: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | customerNumber: | ||
| + | type: string | ||
| + | |||
| + | firstName: | ||
| + | type: string | ||
| + | |||
| + | lastName: | ||
| + | type: string | ||
| + | |||
| + | email: | ||
| + | type: string | ||
| + | format: email | ||
| + | |||
| + | phone: | ||
| + | type: string | ||
| + | |||
| + | nationality: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== CreateCustomerRequest ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CreateCustomerRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | required: | ||
| + | |||
| + | - firstName | ||
| + | |||
| + | - lastName | ||
| + | |||
| + | |||
| + | |||
| + | properties: | ||
| + | |||
| + | firstName: | ||
| + | type: string | ||
| + | |||
| + | lastName: | ||
| + | type: string | ||
| + | |||
| + | email: | ||
| + | type: string | ||
| + | format: email | ||
| + | |||
| + | phone: | ||
| + | type: string | ||
| + | |||
| + | nationality: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Endpoints Customers ====== | ||
| + | |||
| + | ===== Collection ===== | ||
| + | |||
| + | < | ||
| + | GET /customers | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ressource ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET /customers | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ?page=1 | ||
| + | |||
| + | & | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Customer Documents ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Customer Notes ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reservations ====== | ||
| + | |||
| + | ===== Reservation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Reservation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | reference: | ||
| + | type: string | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | customerId: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | checkInDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | checkOutDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | nights: | ||
| + | type: integer | ||
| + | |||
| + | adults: | ||
| + | type: integer | ||
| + | |||
| + | children: | ||
| + | type: integer | ||
| + | |||
| + | totalGuests: | ||
| + | type: integer | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== ReservationStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ReservationStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - DRAFT | ||
| + | - PENDING | ||
| + | - OPTION | ||
| + | - CONFIRMED | ||
| + | - CONTRACT_SENT | ||
| + | - CONTRACT_SIGNED | ||
| + | - PARTIALLY_PAID | ||
| + | - PAID | ||
| + | - CHECKED_IN | ||
| + | - CHECKED_OUT | ||
| + | - COMPLETED | ||
| + | - CANCELLED | ||
| + | - REFUNDED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== CreateReservationRequest ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CreateReservationRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | required: | ||
| + | |||
| + | - propertyId | ||
| + | - checkInDate | ||
| + | - checkOutDate | ||
| + | - adults | ||
| + | |||
| + | properties: | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | customerId: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | checkInDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | checkOutDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | adults: | ||
| + | type: integer | ||
| + | |||
| + | children: | ||
| + | type: integer | ||
| + | |||
| + | customerNotes: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Endpoints Reservations ====== | ||
| + | |||
| + | ===== Collection ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ressource ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Réservation Workflow ====== | ||
| + | |||
| + | ===== Confirmation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Annulation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Check-In ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Check-Out ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Vérification Disponibilité ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AvailabilityCheckRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | |||
| + | checkInDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | checkOutDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Response ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AvailabilityCheckResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | available: | ||
| + | type: boolean | ||
| + | |||
| + | conflicts: | ||
| + | |||
| + | type: array | ||
| + | |||
| + | items: | ||
| + | |||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reservation Guests ====== | ||
| + | |||
| + | ===== ReservationGuest ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ReservationGuest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | firstName: | ||
| + | type: string | ||
| + | |||
| + | lastName: | ||
| + | type: string | ||
| + | |||
| + | nationality: | ||
| + | type: string | ||
| + | |||
| + | birthDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | isPrimary: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reservation Pricing ====== | ||
| + | |||
| + | ===== ReservationPricing ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ReservationPricing: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | nightlyAmount: | ||
| + | type: number | ||
| + | |||
| + | cleaningFee: | ||
| + | type: number | ||
| + | |||
| + | touristTax: | ||
| + | type: number | ||
| + | |||
| + | extrasAmount: | ||
| + | type: number | ||
| + | |||
| + | discountAmount: | ||
| + | type: number | ||
| + | |||
| + | totalAmount: | ||
| + | type: number | ||
| + | |||
| + | currencyCode: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reservation Events ====== | ||
| + | |||
| + | ===== ReservationEvent ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ReservationEvent: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | eventType: | ||
| + | type: string | ||
| + | |||
| + | payload: | ||
| + | type: object | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Historique des statuts ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Response ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ReservationStatusHistory: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | previousStatus: | ||
| + | type: string | ||
| + | |||
| + | newStatus: | ||
| + | type: string | ||
| + | |||
| + | changedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | changedBy: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Calendrier ====== | ||
| + | |||
| + | ===== Calendrier d'un bien ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Paramètres ===== | ||
| + | |||
| + | < | ||
| + | from | ||
| + | |||
| + | to | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CalendarDay: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | date: | ||
| + | type: string | ||
| + | |||
| + | available: | ||
| + | type: boolean | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Catalogue Public ====== | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Filtres ===== | ||
| + | |||
| + | < | ||
| + | destination | ||
| + | |||
| + | checkInDate | ||
| + | |||
| + | checkOutDate | ||
| + | |||
| + | adults | ||
| + | |||
| + | children | ||
| + | |||
| + | priceMin | ||
| + | |||
| + | priceMax | ||
| + | |||
| + | features | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CatalogSearchResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | properties: | ||
| + | type: array | ||
| + | |||
| + | total: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Customers ===== | ||
| + | |||
| + | < | ||
| + | customers.read | ||
| + | |||
| + | customers.create | ||
| + | |||
| + | customers.update | ||
| + | |||
| + | customers.delete | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Reservations ===== | ||
| + | |||
| + | < | ||
| + | reservations.read | ||
| + | |||
| + | reservations.create | ||
| + | |||
| + | reservations.update | ||
| + | |||
| + | reservations.cancel | ||
| + | |||
| + | reservations.checkin | ||
| + | |||
| + | reservations.checkout | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 52 endpoints | ||
| + | |||
| + | ≈ 18 schémas | ||
| + | |||
| + | ≈ 8 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.3 : | ||
| + | |||
| + | < | ||
| + | ≈ 120 endpoints | ||
| + | |||
| + | ≈ 48 schémas | ||
| + | |||
| + | ≈ 22 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.4 — OpenAPI Contracts & Finance ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Définir le domaine financier et contractuel de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 5 | ||
| + | |||
| + | Contrats & Signature Électronique | ||
| + | |||
| + | Sprint 6 | ||
| + | |||
| + | Paiements & Facturation | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | Réservation | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Contrat | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Signature | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Paiement | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Facture | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Comptabilité | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Contracts | ||
| + | |||
| + | - name: ContractTemplates | ||
| + | |||
| + | - name: ContractSignatures | ||
| + | |||
| + | - name: Payments | ||
| + | |||
| + | - name: Refunds | ||
| + | |||
| + | - name: Invoices | ||
| + | |||
| + | - name: Accounting | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Contracts ====== | ||
| + | |||
| + | ===== Contract ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Contract: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | contractNumber: | ||
| + | type: string | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | generatedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | signedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | pdfUrl: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== ContractStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ContractStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - DRAFT | ||
| + | - GENERATED | ||
| + | - SENT | ||
| + | - VIEWED | ||
| + | - SIGNED | ||
| + | - CANCELLED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Endpoints Contracts ====== | ||
| + | |||
| + | ===== Collection ===== | ||
| + | |||
| + | < | ||
| + | GET /contracts | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ressource ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réservation ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Génération ====== | ||
| + | |||
| + | ===== Générer un contrat ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | GenerateContractRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | required: | ||
| + | |||
| + | - reservationId | ||
| + | - templateId | ||
| + | |||
| + | properties: | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | |||
| + | templateId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | GenerateContractResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | contractId: | ||
| + | type: string | ||
| + | |||
| + | pdfUrl: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== PDF ====== | ||
| + | |||
| + | ===== Télécharger ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Régénérer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Contract Templates ====== | ||
| + | |||
| + | ===== ContractTemplate ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ContractTemplate: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Contract Signatures ====== | ||
| + | |||
| + | ===== Signature ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ContractSignature: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | signerName: | ||
| + | type: string | ||
| + | |||
| + | signerEmail: | ||
| + | type: string | ||
| + | |||
| + | signedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Envoyer pour signature ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Consulter ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relancer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Annuler ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Payments ====== | ||
| + | |||
| + | ===== Payment ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Payment: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | paymentReference: | ||
| + | type: string | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | |||
| + | amount: | ||
| + | type: number | ||
| + | |||
| + | currencyCode: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | paidAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== PaymentStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PaymentStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - PENDING | ||
| + | - AUTHORIZED | ||
| + | - PAID | ||
| + | - FAILED | ||
| + | - CANCELLED | ||
| + | - REFUNDED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Endpoints Payments ====== | ||
| + | |||
| + | ===== Collection ===== | ||
| + | |||
| + | < | ||
| + | GET /payments | ||
| + | |||
| + | POST /payments | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ressource ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réservation ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Paiement CB ====== | ||
| + | |||
| + | ===== Créer session ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CheckoutSessionRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | |||
| + | amount: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CheckoutSessionResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | sessionId: | ||
| + | type: string | ||
| + | |||
| + | checkoutUrl: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Webhooks ====== | ||
| + | |||
| + | ===== Stripe ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== PayPal ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Transactions ====== | ||
| + | |||
| + | ===== Historique ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Refunds ====== | ||
| + | |||
| + | ===== Refund ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Refund: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | amount: | ||
| + | type: number | ||
| + | |||
| + | refundedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | reason: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /refunds | ||
| + | |||
| + | POST /refunds | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Rembourser ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Invoices ====== | ||
| + | |||
| + | ===== Invoice ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Invoice: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | invoiceNumber: | ||
| + | type: string | ||
| + | |||
| + | amountExclTax: | ||
| + | type: number | ||
| + | |||
| + | taxAmount: | ||
| + | type: number | ||
| + | |||
| + | amountInclTax: | ||
| + | type: number | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | issueDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== InvoiceStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | InvoiceStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - DRAFT | ||
| + | - ISSUED | ||
| + | - PAID | ||
| + | - PARTIALLY_PAID | ||
| + | - CANCELLED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Endpoints Invoices ====== | ||
| + | |||
| + | ===== Collection ===== | ||
| + | |||
| + | < | ||
| + | GET /invoices | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ressource ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réservation ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== PDF ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Envoi ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Accounting ====== | ||
| + | |||
| + | ===== AccountingEntry ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AccountingEntry: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | entryDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | accountCode: | ||
| + | type: string | ||
| + | |||
| + | label: | ||
| + | type: string | ||
| + | |||
| + | debit: | ||
| + | type: number | ||
| + | |||
| + | credit: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Export ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Paramètres ===== | ||
| + | |||
| + | < | ||
| + | from | ||
| + | |||
| + | to | ||
| + | |||
| + | format | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Formats ===== | ||
| + | |||
| + | < | ||
| + | CSV | ||
| + | |||
| + | XLSX | ||
| + | |||
| + | FEC | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Workflow Métier ====== | ||
| + | |||
| + | ===== Contrat ===== | ||
| + | |||
| + | < | ||
| Reservation | Reservation | ||
| - | ReservationGuest | + | ↓ |
| - | ReservationPricing | + | Generate Contract |
| - | ReservationEvents | + | ↓ |
| - | ReservationStatusHistory | + | Send Signature |
| + | |||
| + | ↓ | ||
| + | |||
| + | Signed | ||
| </ | </ | ||
| - | Cette phase ajoutera environ : | + | ---- |
| + | |||
| + | ===== Paiement ===== | ||
| < | < | ||
| - | 50 endpoints | + | Reservation |
| + | |||
| + | ↓ | ||
| + | |||
| + | Checkout Session | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Payment | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Invoice | ||
| </ | </ | ||
| - | et permettra de couvrir intégralement : | + | ---- |
| + | |||
| + | ===== Remboursement ===== | ||
| < | < | ||
| - | Sprint 4 | + | Payment |
| - | Réservations & Calendrier | + | ↓ |
| + | |||
| + | Refund | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Accounting Entry | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Contrats ===== | ||
| + | |||
| + | < | ||
| + | contracts.read | ||
| + | |||
| + | contracts.create | ||
| + | |||
| + | contracts.update | ||
| + | |||
| + | contracts.send | ||
| + | |||
| + | contracts.sign | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Paiements ===== | ||
| + | |||
| + | < | ||
| + | payments.read | ||
| + | |||
| + | payments.create | ||
| + | |||
| + | payments.refund | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Facturation ===== | ||
| + | |||
| + | < | ||
| + | invoices.read | ||
| + | |||
| + | invoices.create | ||
| + | |||
| + | invoices.send | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 65 endpoints | ||
| + | |||
| + | ≈ 22 schémas | ||
| + | |||
| + | ≈ 7 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.4 : | ||
| + | |||
| + | < | ||
| + | ≈ 185 endpoints | ||
| + | |||
| + | ≈ 70 schémas | ||
| + | |||
| + | ≈ 29 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.5 — OpenAPI CRM & Relation Client ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Mettre en place le CRM intégré de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 8 | ||
| + | |||
| + | CRM & Relation Client | ||
| + | </ | ||
| + | |||
| + | Le CRM est directement connecté aux : | ||
| + | |||
| + | < | ||
| + | Customers | ||
| + | |||
| + | Reservations | ||
| + | |||
| + | Contracts | ||
| + | |||
| + | Payments | ||
| + | |||
| + | Marketing | ||
| + | |||
| + | Automation | ||
| + | </ | ||
| + | |||
| + | afin de disposer d'une vision 360° du client. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Leads | ||
| + | |||
| + | - name: LeadSources | ||
| + | |||
| + | - name: Pipelines | ||
| + | |||
| + | - name: PipelineStages | ||
| + | |||
| + | - name: Opportunities | ||
| + | |||
| + | - name: Activities | ||
| + | |||
| + | - name: Tasks | ||
| + | |||
| + | - name: CustomerNotes | ||
| + | |||
| + | - name: Tags | ||
| + | |||
| + | - name: Segments | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Leads ====== | ||
| + | |||
| + | ===== Lead ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Lead: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | leadNumber: | ||
| + | type: string | ||
| + | |||
| + | firstName: | ||
| + | type: string | ||
| + | |||
| + | lastName: | ||
| + | type: string | ||
| + | |||
| + | email: | ||
| + | type: string | ||
| + | |||
| + | phone: | ||
| + | type: string | ||
| + | |||
| + | source: | ||
| + | type: string | ||
| + | |||
| + | score: | ||
| + | type: integer | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | assignedUserId: | ||
| + | type: string | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== LeadStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | LeadStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - NEW | ||
| + | |||
| + | - QUALIFIED | ||
| + | |||
| + | - CONTACTED | ||
| + | |||
| + | - PROPOSAL_SENT | ||
| + | |||
| + | - NEGOTIATION | ||
| + | |||
| + | - WON | ||
| + | |||
| + | - LOST | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /leads | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET /leads/{id} | ||
| + | |||
| + | PATCH /leads/{id} | ||
| + | |||
| + | DELETE /leads/{id} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET /leads | ||
| + | |||
| + | ?status=NEW | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Lead Sources ====== | ||
| + | |||
| + | ===== LeadSource ===== | ||
| + | |||
| + | <code yaml> | ||
| + | LeadSource: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | WEBSITE | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | BOOKING | ||
| + | |||
| + | AIRBNB | ||
| + | |||
| + | REFERRAL | ||
| + | |||
| + | PHONE | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Pipelines ====== | ||
| + | |||
| + | ===== Pipeline ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Pipeline: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /pipelines | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Pipeline Stages ====== | ||
| + | |||
| + | ===== PipelineStage ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PipelineStage: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | pipelineId: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | position: | ||
| + | type: integer | ||
| + | |||
| + | probability: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | NEW | ||
| + | |||
| + | QUALIFICATION | ||
| + | |||
| + | CONTACT | ||
| + | |||
| + | VISIT | ||
| + | |||
| + | PROPOSAL | ||
| + | |||
| + | NEGOTIATION | ||
| + | |||
| + | WON | ||
| + | |||
| + | LOST | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Opportunities ====== | ||
| + | |||
| + | ===== Opportunity ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Opportunity: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | leadId: | ||
| + | type: string | ||
| + | |||
| + | pipelineId: | ||
| + | type: string | ||
| + | |||
| + | stageId: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | estimatedValue: | ||
| + | type: number | ||
| + | |||
| + | probability: | ||
| + | type: integer | ||
| + | |||
| + | expectedCloseDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== OpportunityStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | OpportunityStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - OPEN | ||
| + | |||
| + | - WON | ||
| + | |||
| + | - LOST | ||
| + | |||
| + | - CANCELLED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Changement d' | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MoveOpportunityRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | stageId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Activities ====== | ||
| + | |||
| + | ===== Activity ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Activity: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | activityType: | ||
| + | type: string | ||
| + | |||
| + | subject: | ||
| + | type: string | ||
| + | |||
| + | description: | ||
| + | type: string | ||
| + | |||
| + | dueDate: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | completed: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activity Types ===== | ||
| + | |||
| + | < | ||
| + | CALL | ||
| + | |||
| + | |||
| + | |||
| + | VISIT | ||
| + | |||
| + | MEETING | ||
| + | |||
| + | VIDEO_CALL | ||
| + | |||
| + | FOLLOW_UP | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /activities | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Affectation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tasks ====== | ||
| + | |||
| + | ===== Task ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Task: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | description: | ||
| + | type: string | ||
| + | |||
| + | priority: | ||
| + | $ref: '#/ | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | dueDate: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | assignedUserId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== TaskPriority ===== | ||
| + | |||
| + | <code yaml> | ||
| + | TaskPriority: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - LOW | ||
| + | |||
| + | - MEDIUM | ||
| + | |||
| + | - HIGH | ||
| + | |||
| + | - URGENT | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== TaskStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | TaskStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - TODO | ||
| + | |||
| + | - IN_PROGRESS | ||
| + | |||
| + | - DONE | ||
| + | |||
| + | - CANCELLED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /tasks | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET /tasks/{id} | ||
| + | |||
| + | PATCH /tasks/{id} | ||
| + | |||
| + | DELETE /tasks/{id} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Workflow ===== | ||
| + | |||
| + | < | ||
| + | Create Task | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Assign User | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Execute | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Done | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Customer Notes ====== | ||
| + | |||
| + | ===== CustomerNote ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CustomerNote: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | customerId: | ||
| + | type: string | ||
| + | |||
| + | content: | ||
| + | type: string | ||
| + | |||
| + | visibility: | ||
| + | type: string | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Visibility ===== | ||
| + | |||
| + | < | ||
| + | PRIVATE | ||
| + | |||
| + | TEAM | ||
| + | |||
| + | PUBLIC | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags ====== | ||
| + | |||
| + | ===== Tag ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Tag: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | label: | ||
| + | type: string | ||
| + | |||
| + | color: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /tags | ||
| + | |||
| + | POST /tags | ||
| + | |||
| + | PATCH /tags/{id} | ||
| + | |||
| + | DELETE /tags/{id} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | VIP | ||
| + | |||
| + | HOT_LEAD | ||
| + | |||
| + | OWNER | ||
| + | |||
| + | RETURNING_CUSTOMER | ||
| + | |||
| + | HIGH_VALUE | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Segments ====== | ||
| + | |||
| + | ===== Segment ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Segment: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | rules: | ||
| + | type: object | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /segments | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | CLIENTS_FIDELES | ||
| + | |||
| + | CLIENTS_INACTIFS | ||
| + | |||
| + | PROPRIETAIRES_ACTIFS | ||
| + | |||
| + | PROSPECTS_CHAUDS | ||
| + | |||
| + | ANNIVERSAIRES | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== CRM Dashboard ====== | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Leads créés | ||
| + | |||
| + | Leads qualifiés | ||
| + | |||
| + | Opportunités ouvertes | ||
| + | |||
| + | CA potentiel | ||
| + | |||
| + | Tâches ouvertes | ||
| + | |||
| + | Activités réalisées | ||
| + | |||
| + | Taux de conversion | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Conversions ====== | ||
| + | |||
| + | ===== Lead → Customer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Résultat ===== | ||
| + | |||
| + | < | ||
| + | Lead | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Customer | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Opportunity | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Reservation | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Automatisations ====== | ||
| + | |||
| + | ===== Attribution automatique ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Scoring ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relances ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Leads ===== | ||
| + | |||
| + | < | ||
| + | leads.read | ||
| + | |||
| + | leads.create | ||
| + | |||
| + | leads.update | ||
| + | |||
| + | leads.delete | ||
| + | |||
| + | leads.convert | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== CRM ===== | ||
| + | |||
| + | < | ||
| + | crm.read | ||
| + | |||
| + | crm.manage | ||
| + | |||
| + | crm.assign | ||
| + | |||
| + | crm.export | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Tasks ===== | ||
| + | |||
| + | < | ||
| + | tasks.read | ||
| + | |||
| + | tasks.create | ||
| + | |||
| + | tasks.update | ||
| + | |||
| + | tasks.complete | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 72 endpoints | ||
| + | |||
| + | ≈ 25 schémas | ||
| + | |||
| + | ≈ 10 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.5 : | ||
| + | |||
| + | < | ||
| + | ≈ 257 endpoints | ||
| + | |||
| + | ≈ 95 schémas | ||
| + | |||
| + | ≈ 39 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.6 — OpenAPI Messaging & Notifications ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire le centre de communication unifié de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 9 | ||
| + | |||
| + | Messagerie & Notifications | ||
| + | </ | ||
| + | |||
| + | Elle permettra : | ||
| + | |||
| + | < | ||
| + | Messagerie interne | ||
| + | |||
| + | Emails transactionnels | ||
| + | |||
| + | SMS transactionnels | ||
| + | |||
| + | Notifications temps réel | ||
| + | |||
| + | Templates | ||
| + | |||
| + | Campagnes Marketing | ||
| + | |||
| + | Centre de communication | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Conversations | ||
| + | |||
| + | - name: Messages | ||
| + | |||
| + | - name: Notifications | ||
| + | |||
| + | - name: Emails | ||
| + | |||
| + | - name: SMS | ||
| + | |||
| + | - name: Templates | ||
| + | |||
| + | - name: Campaigns | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Conversations ====== | ||
| + | |||
| + | ===== Conversation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Conversation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | subject: | ||
| + | type: string | ||
| + | |||
| + | conversationType: | ||
| + | $ref: '#/ | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== ConversationType ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ConversationType: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - INTERNAL | ||
| + | |||
| + | - CUSTOMER | ||
| + | |||
| + | - OWNER | ||
| + | |||
| + | - RESERVATION | ||
| + | |||
| + | - SUPPORT | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== ConversationStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ConversationStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - OPEN | ||
| + | |||
| + | - PENDING | ||
| + | |||
| + | - CLOSED | ||
| + | |||
| + | - ARCHIVED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Participants ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Messages ====== | ||
| + | |||
| + | ===== Message ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Message: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | conversationId: | ||
| + | type: string | ||
| + | |||
| + | senderId: | ||
| + | type: string | ||
| + | |||
| + | content: | ||
| + | type: string | ||
| + | |||
| + | attachments: | ||
| + | type: array | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Pièces jointes ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Notifications ====== | ||
| + | |||
| + | ===== Notification ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Notification: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | userId: | ||
| + | type: string | ||
| + | |||
| + | type: | ||
| + | $ref: '#/ | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | message: | ||
| + | type: string | ||
| + | |||
| + | read: | ||
| + | type: boolean | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== NotificationType ===== | ||
| + | |||
| + | <code yaml> | ||
| + | NotificationType: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - INFO | ||
| + | |||
| + | - SUCCESS | ||
| + | |||
| + | - WARNING | ||
| + | |||
| + | - ERROR | ||
| + | |||
| + | - SYSTEM | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Notifications Temps Réel ====== | ||
| + | |||
| + | ===== WebSocket ===== | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Événements ===== | ||
| + | |||
| + | < | ||
| + | notification.created | ||
| + | |||
| + | message.received | ||
| + | |||
| + | reservation.created | ||
| + | |||
| + | payment.received | ||
| + | |||
| + | contract.signed | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Emails ====== | ||
| + | |||
| + | ===== Email ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Email: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | to: | ||
| + | type: string | ||
| + | |||
| + | subject: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | sentAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== EmailStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | EmailStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - DRAFT | ||
| + | |||
| + | - QUEUED | ||
| + | |||
| + | - SENT | ||
| + | |||
| + | - DELIVERED | ||
| + | |||
| + | - OPENED | ||
| + | |||
| + | - CLICKED | ||
| + | |||
| + | - BOUNCED | ||
| + | |||
| + | - FAILED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /emails | ||
| + | |||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Envoi Transactionnel ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SendEmailRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | to: | ||
| + | type: string | ||
| + | |||
| + | templateCode: | ||
| + | type: string | ||
| + | |||
| + | variables: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== SMS ====== | ||
| + | |||
| + | ===== Sms ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Sms: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | phoneNumber: | ||
| + | type: string | ||
| + | |||
| + | message: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | $ref: '#/ | ||
| + | |||
| + | sentAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== SmsStatus ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SmsStatus: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - QUEUED | ||
| + | |||
| + | - SENT | ||
| + | |||
| + | - DELIVERED | ||
| + | |||
| + | - FAILED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /sms | ||
| + | |||
| + | GET /sms/{id} | ||
| + | |||
| + | POST /sms/send | ||
| + | |||
| + | POST /sms/test | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Templates ====== | ||
| + | |||
| + | ===== Template ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Template: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | channel: | ||
| + | type: string | ||
| + | |||
| + | subject: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /templates | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Types ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | SMS | ||
| + | |||
| + | PUSH | ||
| + | |||
| + | IN_APP | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | RESERVATION_CONFIRMED | ||
| + | |||
| + | PAYMENT_RECEIVED | ||
| + | |||
| + | CONTRACT_SIGNED | ||
| + | |||
| + | CHECKIN_REMINDER | ||
| + | |||
| + | OWNER_MONTHLY_REPORT | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Campaigns ====== | ||
| + | |||
| + | ===== Campaign ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Campaign: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | campaignType: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | scheduledAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /campaigns | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Destinataires ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exécution ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Statistiques Campagnes ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CampaignStatistics: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | recipients: | ||
| + | type: integer | ||
| + | |||
| + | sent: | ||
| + | type: integer | ||
| + | |||
| + | opened: | ||
| + | type: integer | ||
| + | |||
| + | clicked: | ||
| + | type: integer | ||
| + | |||
| + | unsubscribed: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Inbox Unifiée ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Agrège ===== | ||
| + | |||
| + | < | ||
| + | Messages | ||
| + | |||
| + | Emails | ||
| + | |||
| + | SMS | ||
| + | |||
| + | Notifications | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Communication Dashboard ====== | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Messages envoyés | ||
| + | |||
| + | Emails délivrés | ||
| + | |||
| + | Taux ouverture | ||
| + | |||
| + | Taux clic | ||
| + | |||
| + | SMS délivrés | ||
| + | |||
| + | Notifications lues | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Intégrations ====== | ||
| + | |||
| + | ===== Email ===== | ||
| + | |||
| + | < | ||
| + | SMTP | ||
| + | |||
| + | SendGrid | ||
| + | |||
| + | Mailgun | ||
| + | |||
| + | Amazon SES | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== SMS ===== | ||
| + | |||
| + | < | ||
| + | Twilio | ||
| + | |||
| + | OVH SMS | ||
| + | |||
| + | MessageBird | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Push ===== | ||
| + | |||
| + | < | ||
| + | Firebase | ||
| + | |||
| + | OneSignal | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Messaging ===== | ||
| + | |||
| + | < | ||
| + | messages.read | ||
| + | |||
| + | messages.create | ||
| + | |||
| + | messages.delete | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Notifications ===== | ||
| + | |||
| + | < | ||
| + | notifications.read | ||
| + | |||
| + | notifications.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Campaigns ===== | ||
| + | |||
| + | < | ||
| + | campaigns.read | ||
| + | |||
| + | campaigns.create | ||
| + | |||
| + | campaigns.execute | ||
| + | |||
| + | campaigns.delete | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 84 endpoints | ||
| + | |||
| + | ≈ 28 schémas | ||
| + | |||
| + | ≈ 7 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.6 : | ||
| + | |||
| + | < | ||
| + | ≈ 341 endpoints | ||
| + | |||
| + | ≈ 123 schémas | ||
| + | |||
| + | ≈ 46 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.7 — OpenAPI Marketing, Automatisation & IA ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche d' | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 13 | ||
| + | |||
| + | IA & Automatisation | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | Segmentation | ||
| + | |||
| + | Marketing Automation | ||
| + | |||
| + | Scénarios métiers | ||
| + | |||
| + | Déclencheurs | ||
| + | |||
| + | Recommandations IA | ||
| + | |||
| + | Assistant IA | ||
| + | |||
| + | Knowledge Base | ||
| + | |||
| + | Recherche sémantique | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: MarketingSegments | ||
| + | |||
| + | - name: MarketingEvents | ||
| + | |||
| + | - name: AutomationRules | ||
| + | |||
| + | - name: AutomationScenarios | ||
| + | |||
| + | - name: AutomationExecutions | ||
| + | |||
| + | - name: Recommendations | ||
| + | |||
| + | - name: AI | ||
| + | |||
| + | - name: KnowledgeBase | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Marketing Segments ====== | ||
| + | |||
| + | ===== MarketingSegment ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MarketingSegment: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | description: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | rules: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Aperçu ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SegmentPreview: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | customerCount: | ||
| + | type: integer | ||
| + | |||
| + | leadCount: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Marketing Events ====== | ||
| + | |||
| + | ===== MarketingEvent ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MarketingEvent: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | eventType: | ||
| + | type: string | ||
| + | |||
| + | customerId: | ||
| + | type: string | ||
| + | |||
| + | occurredAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | payload: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Filtres ===== | ||
| + | |||
| + | < | ||
| + | eventType | ||
| + | |||
| + | customerId | ||
| + | |||
| + | from | ||
| + | |||
| + | to | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | EMAIL_OPEN | ||
| + | |||
| + | EMAIL_CLICK | ||
| + | |||
| + | PAGE_VISIT | ||
| + | |||
| + | FORM_SUBMIT | ||
| + | |||
| + | RESERVATION_CREATED | ||
| + | |||
| + | PAYMENT_COMPLETED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Automation Rules ====== | ||
| + | |||
| + | ===== AutomationRule ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AutomationRule: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | triggerEvent: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Désactiver ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Automation Scenarios ====== | ||
| + | |||
| + | ===== AutomationScenario ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AutomationScenario: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | triggerType: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Simuler ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exécuter ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemple ===== | ||
| + | |||
| + | < | ||
| + | ReservationConfirmed | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | GenerateContract | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | SendEmail | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | CreateTask | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | NotifyOwner | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Automation Executions ====== | ||
| + | |||
| + | ===== AutomationExecution ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AutomationExecution: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | entityId: | ||
| + | type: string | ||
| + | |||
| + | startedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | completedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relancer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Recommendations ====== | ||
| + | |||
| + | ===== Recommendation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Recommendation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | recommendationType: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | description: | ||
| + | type: string | ||
| + | |||
| + | confidenceScore: | ||
| + | type: number | ||
| + | |||
| + | accepted: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Accepter ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Rejeter ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Types ===== | ||
| + | |||
| + | < | ||
| + | PRICE_OPTIMIZATION | ||
| + | |||
| + | CUSTOMER_RETENTION | ||
| + | |||
| + | LEAD_CONVERSION | ||
| + | |||
| + | REVENUE_FORECAST | ||
| + | |||
| + | PROPERTY_IMPROVEMENT | ||
| + | |||
| + | RISK_ALERT | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== AI Assistant ====== | ||
| + | |||
| + | ===== Conversation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AiConversation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | model: | ||
| + | type: string | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Messages IA ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AiMessageRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | content: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Response ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AiMessageResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | content: | ||
| + | type: string | ||
| + | |||
| + | sources: | ||
| + | type: array | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Cas d' | ||
| + | |||
| + | < | ||
| + | Quels sont les biens | ||
| + | les moins rentables ? | ||
| + | |||
| + | ---------------- | ||
| + | |||
| + | Quels clients | ||
| + | présentent un risque ? | ||
| + | |||
| + | ---------------- | ||
| + | |||
| + | Prévois les revenus | ||
| + | des 90 prochains jours | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Knowledge Base ====== | ||
| + | |||
| + | ===== KnowledgeDocument ===== | ||
| + | |||
| + | <code yaml> | ||
| + | KnowledgeDocument: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | sourceType: | ||
| + | type: string | ||
| + | |||
| + | indexed: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Upload ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Indexation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche Sémantique ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | KnowledgeSearchRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | query: | ||
| + | type: string | ||
| + | |||
| + | limit: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | KnowledgeSearchResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | documents: | ||
| + | type: array | ||
| + | |||
| + | chunks: | ||
| + | type: array | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Dashboard IA ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Conversations | ||
| + | |||
| + | Documents indexés | ||
| + | |||
| + | Automatisations exécutées | ||
| + | |||
| + | Recommandations générées | ||
| + | |||
| + | Taux acceptation | ||
| + | |||
| + | Temps gagné | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Événements ====== | ||
| + | |||
| + | ===== Marketing ===== | ||
| + | |||
| + | < | ||
| + | lead.created | ||
| + | |||
| + | lead.converted | ||
| + | |||
| + | campaign.started | ||
| + | |||
| + | campaign.completed | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== IA ===== | ||
| + | |||
| + | < | ||
| + | recommendation.created | ||
| + | |||
| + | assistant.question | ||
| + | |||
| + | assistant.answer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Automation ===== | ||
| + | |||
| + | < | ||
| + | automation.started | ||
| + | |||
| + | automation.completed | ||
| + | |||
| + | automation.failed | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== IA ===== | ||
| + | |||
| + | < | ||
| + | ai.read | ||
| + | |||
| + | ai.chat | ||
| + | |||
| + | ai.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Automatisation ===== | ||
| + | |||
| + | < | ||
| + | automation.read | ||
| + | |||
| + | automation.execute | ||
| + | |||
| + | automation.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Knowledge Base ===== | ||
| + | |||
| + | < | ||
| + | knowledge.read | ||
| + | |||
| + | knowledge.create | ||
| + | |||
| + | knowledge.index | ||
| + | |||
| + | knowledge.delete | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 92 endpoints | ||
| + | |||
| + | ≈ 30 schémas | ||
| + | |||
| + | ≈ 8 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.7 : | ||
| + | |||
| + | < | ||
| + | ≈ 433 endpoints | ||
| + | |||
| + | ≈ 153 schémas | ||
| + | |||
| + | ≈ 54 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.8 — OpenAPI Governance, Audit & Administration ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche transverse de gouvernance, | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 10 | ||
| + | |||
| + | Reporting | ||
| + | |||
| + | Sprint 11 | ||
| + | |||
| + | Administration | ||
| + | |||
| + | Sprint 19 | ||
| + | |||
| + | Gouvernance & Conformité | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | Audit complet | ||
| + | |||
| + | Historisation | ||
| + | |||
| + | Feature Flags | ||
| + | |||
| + | Workflows | ||
| + | |||
| + | Administration | ||
| + | |||
| + | Paramétrage plateforme | ||
| + | |||
| + | Conformité | ||
| + | |||
| + | Supervision | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: AuditLogs | ||
| + | |||
| + | - name: EntityHistory | ||
| + | |||
| + | - name: FeatureFlags | ||
| + | |||
| + | - name: Workflows | ||
| + | |||
| + | - name: WorkflowInstances | ||
| + | |||
| + | - name: WorkflowExecutions | ||
| + | |||
| + | - name: Administration | ||
| + | |||
| + | - name: SystemSettings | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Audit Logs ====== | ||
| + | |||
| + | ===== AuditLog ===== | ||
| + | |||
| + | <code yaml> | ||
| + | AuditLog: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | entityId: | ||
| + | type: string | ||
| + | |||
| + | action: | ||
| + | type: string | ||
| + | |||
| + | userId: | ||
| + | type: string | ||
| + | |||
| + | ipAddress: | ||
| + | type: string | ||
| + | |||
| + | correlationId: | ||
| + | type: string | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /audit-logs | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET /audit-logs | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ?userId=xxx | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Export ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Formats ===== | ||
| + | |||
| + | < | ||
| + | CSV | ||
| + | |||
| + | XLSX | ||
| + | |||
| + | JSON | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Entity History ====== | ||
| + | |||
| + | ===== EntityHistory ===== | ||
| + | |||
| + | <code yaml> | ||
| + | EntityHistory: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | entityId: | ||
| + | type: string | ||
| + | |||
| + | version: | ||
| + | type: integer | ||
| + | |||
| + | snapshot: | ||
| + | type: object | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Historique d'une entité ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Restauration ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Feature Flags ====== | ||
| + | |||
| + | ===== FeatureFlag ===== | ||
| + | |||
| + | <code yaml> | ||
| + | FeatureFlag: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | enabled: | ||
| + | type: boolean | ||
| + | |||
| + | configuration: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | AI_ASSISTANT | ||
| + | |||
| + | ADVANCED_REPORTING | ||
| + | |||
| + | OTA_V2 | ||
| + | |||
| + | REVENUE_MANAGEMENT | ||
| + | |||
| + | OWNER_PORTAL_V2 | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Workflows ====== | ||
| + | |||
| + | ===== Workflow ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Workflow: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /workflows | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Workflow Steps ====== | ||
| + | |||
| + | ===== WorkflowStep ===== | ||
| + | |||
| + | <code yaml> | ||
| + | WorkflowStep: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | workflowId: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | position: | ||
| + | type: integer | ||
| + | |||
| + | approverRole: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemple ===== | ||
| + | |||
| + | < | ||
| + | Reservation Approval | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Manager Approval | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Contract Generation | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Payment Validation | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Completed | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Workflow Instances ====== | ||
| + | |||
| + | ===== WorkflowInstance ===== | ||
| + | |||
| + | <code yaml> | ||
| + | WorkflowInstance: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | workflowId: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | entityId: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Démarrer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Approuver ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Rejeter ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Annuler ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Workflow Executions ====== | ||
| + | |||
| + | ===== WorkflowExecution ===== | ||
| + | |||
| + | <code yaml> | ||
| + | WorkflowExecution: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | workflowInstanceId: | ||
| + | type: string | ||
| + | |||
| + | workflowStepId: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | executedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Administration ====== | ||
| + | |||
| + | ===== Tenant Administration ===== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Agences ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Paramètres Système ====== | ||
| + | |||
| + | ===== SystemSetting ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SystemSetting: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | value: | ||
| + | type: string | ||
| + | |||
| + | category: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PUT / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Catégories ===== | ||
| + | |||
| + | < | ||
| + | SECURITY | ||
| + | |||
| + | PAYMENTS | ||
| + | |||
| + | |||
| + | |||
| + | SMS | ||
| + | |||
| + | OTA | ||
| + | |||
| + | BOOKING | ||
| + | |||
| + | INVOICING | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Gestion des Jobs ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /admin/jobs | ||
| + | |||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Santé de la plateforme ====== | ||
| + | |||
| + | ===== Health Check ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | HealthResponse: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | database: | ||
| + | type: string | ||
| + | |||
| + | redis: | ||
| + | type: string | ||
| + | |||
| + | storage: | ||
| + | type: string | ||
| + | |||
| + | queue: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Monitoring ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reporting ====== | ||
| + | |||
| + | ===== Dashboard Gouvernance ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Audit Logs | ||
| + | |||
| + | Feature Flags | ||
| + | |||
| + | Workflows actifs | ||
| + | |||
| + | Incidents sécurité | ||
| + | |||
| + | Conformité | ||
| + | |||
| + | Risques ouverts | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Conformité ====== | ||
| + | |||
| + | ===== Export RGPD ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Effacement ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Consentements ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Audit ===== | ||
| + | |||
| + | < | ||
| + | audit.read | ||
| + | |||
| + | audit.export | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Administration ===== | ||
| + | |||
| + | < | ||
| + | admin.read | ||
| + | |||
| + | admin.manage | ||
| + | |||
| + | admin.settings | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Workflows ===== | ||
| + | |||
| + | < | ||
| + | workflow.read | ||
| + | |||
| + | workflow.manage | ||
| + | |||
| + | workflow.execute | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Gouvernance ===== | ||
| + | |||
| + | < | ||
| + | governance.read | ||
| + | |||
| + | governance.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 86 endpoints | ||
| + | |||
| + | ≈ 26 schémas | ||
| + | |||
| + | ≈ 8 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.8 : | ||
| + | |||
| + | < | ||
| + | ≈ 519 endpoints | ||
| + | |||
| + | ≈ 179 schémas | ||
| + | |||
| + | ≈ 62 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.9 — OpenAPI OTA, Distribution & Channel Manager ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche de distribution multicanal de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 12 | ||
| + | |||
| + | OTA & Distribution | ||
| + | |||
| + | Sprint 14 | ||
| + | |||
| + | API & Partenaires | ||
| + | |||
| + | Sprint 18 | ||
| + | |||
| + | Channel Manager Enterprise | ||
| + | </ | ||
| + | |||
| + | Cette couche permet : | ||
| + | |||
| + | < | ||
| + | Publication OTA | ||
| + | |||
| + | Synchronisation calendriers | ||
| + | |||
| + | Synchronisation tarifs | ||
| + | |||
| + | Synchronisation réservations | ||
| + | |||
| + | Gestion erreurs OTA | ||
| + | |||
| + | Connecteurs partenaires | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Channels | ||
| + | |||
| + | - name: ChannelConnections | ||
| + | |||
| + | - name: PropertyDistribution | ||
| + | |||
| + | - name: ChannelReservations | ||
| + | |||
| + | - name: Synchronization | ||
| + | |||
| + | - name: SyncErrors | ||
| + | |||
| + | - name: Partners | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Channels ====== | ||
| + | |||
| + | ===== Channel ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Channel: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | channelType: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /channels | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Canaux supportés ===== | ||
| + | |||
| + | < | ||
| + | AIRBNB | ||
| + | |||
| + | BOOKING | ||
| + | |||
| + | VRBO | ||
| + | |||
| + | ABRITEL | ||
| + | |||
| + | EXPEDIA | ||
| + | |||
| + | DIRECT | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Channel Connections ====== | ||
| + | |||
| + | ===== ChannelConnection ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ChannelConnection: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | channelId: | ||
| + | type: string | ||
| + | |||
| + | connectionName: | ||
| + | type: string | ||
| + | |||
| + | accountIdentifier: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | lastSyncAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Tester la connexion ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Désactiver ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Property Distribution ====== | ||
| + | |||
| + | ===== PropertyDistribution ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PropertyDistribution: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | |||
| + | channelId: | ||
| + | type: string | ||
| + | |||
| + | published: | ||
| + | type: boolean | ||
| + | |||
| + | publicationStatus: | ||
| + | type: string | ||
| + | |||
| + | externalPropertyId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Publication ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Synchronisation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Publication d'un bien ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PublishPropertyRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | channelConnectionId: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Channel Reservations ====== | ||
| + | |||
| + | ===== ChannelReservation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ChannelReservation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | reservationId: | ||
| + | type: string | ||
| + | |||
| + | externalReservationId: | ||
| + | type: string | ||
| + | |||
| + | externalStatus: | ||
| + | type: string | ||
| + | |||
| + | importedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Import OTA ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réconciliation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Synchronization ====== | ||
| + | |||
| + | ===== SyncExecution ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SyncExecution: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | syncType: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | startedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | completedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | processedCount: | ||
| + | type: integer | ||
| + | |||
| + | successCount: | ||
| + | type: integer | ||
| + | |||
| + | errorCount: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Lancer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Synchronisation complète ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Synchronisation calendrier ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Synchronisation tarifs ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Synchronisation réservations ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Types ====== | ||
| + | |||
| + | < | ||
| + | PROPERTY_EXPORT | ||
| + | |||
| + | AVAILABILITY_EXPORT | ||
| + | |||
| + | RATE_EXPORT | ||
| + | |||
| + | RESERVATION_IMPORT | ||
| + | |||
| + | FULL_SYNC | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Sync Errors ====== | ||
| + | |||
| + | ===== SyncError ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SyncError: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | errorCode: | ||
| + | type: string | ||
| + | |||
| + | errorMessage: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | entityId: | ||
| + | type: string | ||
| + | |||
| + | occurredAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relancer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Ignorer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Calendrier OTA ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Paramètres ===== | ||
| + | |||
| + | < | ||
| + | propertyId | ||
| + | |||
| + | from | ||
| + | |||
| + | to | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tarifs OTA ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Mise à jour ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Dashboard OTA ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Biens publiés | ||
| + | |||
| + | OTA connectés | ||
| + | |||
| + | Synchronisations | ||
| + | |||
| + | Erreurs OTA | ||
| + | |||
| + | Réservations importées | ||
| + | |||
| + | Temps moyen synchronisation | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Partenaires ====== | ||
| + | |||
| + | ===== Partner ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Partner: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /partners | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== API Keys ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Webhooks ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Marketplace ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Connecteurs ===== | ||
| + | |||
| + | < | ||
| + | Airbnb | ||
| + | |||
| + | Booking | ||
| + | |||
| + | Stripe | ||
| + | |||
| + | Twilio | ||
| + | |||
| + | Mailgun | ||
| + | |||
| + | DocuSign | ||
| + | |||
| + | Zapier | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Webhooks OTA ====== | ||
| + | |||
| + | ===== Réservations ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Calendrier ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Tarifs ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== OTA ===== | ||
| + | |||
| + | < | ||
| + | ota.read | ||
| + | |||
| + | ota.manage | ||
| + | |||
| + | ota.sync | ||
| + | |||
| + | ota.publish | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Partenaires ===== | ||
| + | |||
| + | < | ||
| + | partners.read | ||
| + | |||
| + | partners.manage | ||
| + | |||
| + | partners.api | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 76 endpoints | ||
| + | |||
| + | ≈ 24 schémas | ||
| + | |||
| + | ≈ 7 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.9 : | ||
| + | |||
| + | < | ||
| + | ≈ 595 endpoints | ||
| + | |||
| + | ≈ 203 schémas | ||
| + | |||
| + | ≈ 69 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.10 — OpenAPI Revenue Management & Business Intelligence ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche décisionnelle avancée de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 10 | ||
| + | |||
| + | Reporting & Business Intelligence | ||
| + | |||
| + | Sprint 13 | ||
| + | |||
| + | Prévisions IA | ||
| + | |||
| + | Sprint 17 | ||
| + | |||
| + | Revenue Management | ||
| + | |||
| + | Sprint 20 | ||
| + | |||
| + | Enterprise Analytics | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | Tarification dynamique | ||
| + | |||
| + | Yield Management | ||
| + | |||
| + | Prévisions | ||
| + | |||
| + | Simulations | ||
| + | |||
| + | Benchmark concurrence | ||
| + | |||
| + | KPI avancés | ||
| + | |||
| + | Pilotage financier | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: PricingRules | ||
| + | |||
| + | - name: DynamicPrices | ||
| + | |||
| + | - name: RevenueForecasts | ||
| + | |||
| + | - name: RevenueSimulations | ||
| + | |||
| + | - name: CompetitorSnapshots | ||
| + | |||
| + | - name: MarketDemand | ||
| + | |||
| + | - name: Dashboards | ||
| + | |||
| + | - name: Analytics | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Pricing Rules ====== | ||
| + | |||
| + | ===== PricingRule ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PricingRule: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | priority: | ||
| + | type: integer | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | conditions: | ||
| + | type: object | ||
| + | |||
| + | actions: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Activation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Simulation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | Occupation > 80% | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | +15% | ||
| + | |||
| + | ---------------- | ||
| + | |||
| + | Weekend | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | +10% | ||
| + | |||
| + | ---------------- | ||
| + | |||
| + | Haute saison | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | +25% | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Dynamic Prices ====== | ||
| + | |||
| + | ===== DynamicPrice ===== | ||
| + | |||
| + | <code yaml> | ||
| + | DynamicPrice: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | |||
| + | pricingDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | basePrice: | ||
| + | type: number | ||
| + | |||
| + | adjustedPrice: | ||
| + | type: number | ||
| + | |||
| + | demandFactor: | ||
| + | type: number | ||
| + | |||
| + | competitorFactor: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Calcul ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recalcul ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | |||
| + | ? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Revenue Forecasts ====== | ||
| + | |||
| + | ===== RevenueForecast ===== | ||
| + | |||
| + | <code yaml> | ||
| + | RevenueForecast: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | |||
| + | forecastPeriodStart: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | forecastPeriodEnd: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | expectedRevenue: | ||
| + | type: number | ||
| + | |||
| + | expectedOccupancy: | ||
| + | type: number | ||
| + | |||
| + | confidenceLevel: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Génération ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Prévisions ===== | ||
| + | |||
| + | < | ||
| + | 7 jours | ||
| + | |||
| + | 30 jours | ||
| + | |||
| + | 90 jours | ||
| + | |||
| + | 180 jours | ||
| + | |||
| + | 365 jours | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Revenue Simulations ====== | ||
| + | |||
| + | ===== RevenueSimulation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | RevenueSimulation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | projectedRevenue: | ||
| + | type: number | ||
| + | |||
| + | projectedOccupancy: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exécuter ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Comparer ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemple ===== | ||
| + | |||
| + | < | ||
| + | Prix +10% | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Occupation -3% | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | CA +6% | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Competitor Snapshots ====== | ||
| + | |||
| + | ===== CompetitorSnapshot ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CompetitorSnapshot: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | propertyId: | ||
| + | type: string | ||
| + | |||
| + | competitorName: | ||
| + | type: string | ||
| + | |||
| + | nightlyRate: | ||
| + | type: number | ||
| + | |||
| + | occupancy: | ||
| + | type: number | ||
| + | |||
| + | snapshotDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Benchmark ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CompetitorBenchmark: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | marketAverage: | ||
| + | type: number | ||
| + | |||
| + | propertyAverage: | ||
| + | type: number | ||
| + | |||
| + | variance: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Market Demand ====== | ||
| + | |||
| + | ===== MarketDemand ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MarketDemand: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | regionCode: | ||
| + | type: string | ||
| + | |||
| + | demandIndex: | ||
| + | type: number | ||
| + | |||
| + | occupancyIndex: | ||
| + | type: number | ||
| + | |||
| + | averageDailyRate: | ||
| + | type: number | ||
| + | |||
| + | demandDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Tendances ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Prévisions ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Revenue Dashboard ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | RevPAR | ||
| + | |||
| + | ADR | ||
| + | |||
| + | Occupancy Rate | ||
| + | |||
| + | Revenue | ||
| + | |||
| + | Forecast Accuracy | ||
| + | |||
| + | Average Stay | ||
| + | |||
| + | Cancellation Rate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | RevenueDashboard: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | revenue: | ||
| + | type: number | ||
| + | |||
| + | occupancyRate: | ||
| + | type: number | ||
| + | |||
| + | averageDailyRate: | ||
| + | type: number | ||
| + | |||
| + | revPar: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Property Analytics ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Occupation | ||
| + | |||
| + | Revenus | ||
| + | |||
| + | Tarif moyen | ||
| + | |||
| + | Réservations | ||
| + | |||
| + | Annulations | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Owner Analytics ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Revenus | ||
| + | |||
| + | Biens | ||
| + | |||
| + | Occupation | ||
| + | |||
| + | Commissions | ||
| + | |||
| + | Paiements | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reservation Analytics ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Filtres ===== | ||
| + | |||
| + | < | ||
| + | from | ||
| + | |||
| + | to | ||
| + | |||
| + | propertyId | ||
| + | |||
| + | ownerId | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Financial Analytics ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Revenue | ||
| + | |||
| + | Facturation | ||
| + | |||
| + | Paiements | ||
| + | |||
| + | Remboursements | ||
| + | |||
| + | Commissions | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Forecast Analytics ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ForecastAnalytics: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | next30Days: | ||
| + | type: number | ||
| + | |||
| + | next90Days: | ||
| + | type: number | ||
| + | |||
| + | next365Days: | ||
| + | type: number | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Exports ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Formats ===== | ||
| + | |||
| + | < | ||
| + | CSV | ||
| + | |||
| + | XLSX | ||
| + | |||
| + | |||
| + | |||
| + | JSON | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Paramètres ===== | ||
| + | |||
| + | < | ||
| + | dashboard | ||
| + | |||
| + | from | ||
| + | |||
| + | to | ||
| + | |||
| + | format | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== IA & Revenue Management ====== | ||
| + | |||
| + | ===== Suggestions ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Types ===== | ||
| + | |||
| + | < | ||
| + | PRICE_INCREASE | ||
| + | |||
| + | PRICE_DECREASE | ||
| + | |||
| + | PROMOTION | ||
| + | |||
| + | MINIMUM_STAY | ||
| + | |||
| + | AVAILABILITY_OPTIMIZATION | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Validation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Reporting Exécutif ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | CA Total | ||
| + | |||
| + | CA Prévisionnel | ||
| + | |||
| + | Taux Occupation | ||
| + | |||
| + | Top Biens | ||
| + | |||
| + | Top Agences | ||
| + | |||
| + | Top Propriétaires | ||
| + | |||
| + | Taux Conversion | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Revenue ===== | ||
| + | |||
| + | < | ||
| + | revenue.read | ||
| + | |||
| + | revenue.manage | ||
| + | |||
| + | revenue.forecast | ||
| + | |||
| + | revenue.simulate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Analytics ===== | ||
| + | |||
| + | < | ||
| + | analytics.read | ||
| + | |||
| + | analytics.export | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Reporting ===== | ||
| + | |||
| + | < | ||
| + | reporting.read | ||
| + | |||
| + | reporting.executive | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 82 endpoints | ||
| + | |||
| + | ≈ 32 schémas | ||
| + | |||
| + | ≈ 8 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.10 : | ||
| + | |||
| + | < | ||
| + | ≈ 677 endpoints | ||
| + | |||
| + | ≈ 235 schémas | ||
| + | |||
| + | ≈ 77 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.11 — OpenAPI Security, Compliance & Enterprise ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche Enterprise Security de la plateforme. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 19 | ||
| + | |||
| + | Gouvernance & Conformité | ||
| + | |||
| + | Enterprise Security | ||
| + | |||
| + | RGPD | ||
| + | |||
| + | ISO 27001 | ||
| + | |||
| + | SOC2 | ||
| + | |||
| + | OWASP ASVS | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | MFA | ||
| + | |||
| + | SSO | ||
| + | |||
| + | Consentements | ||
| + | |||
| + | RGPD | ||
| + | |||
| + | Gestion des risques | ||
| + | |||
| + | Classification des données | ||
| + | |||
| + | Politiques de sécurité | ||
| + | |||
| + | Incidents | ||
| + | |||
| + | Audits | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: MFA | ||
| + | |||
| + | - name: Identity | ||
| + | |||
| + | - name: Sessions | ||
| + | |||
| + | - name: Consents | ||
| + | |||
| + | - name: Privacy | ||
| + | |||
| + | - name: Risks | ||
| + | |||
| + | - name: SecurityIncidents | ||
| + | |||
| + | - name: ComplianceAudits | ||
| + | |||
| + | - name: DataClassification | ||
| + | |||
| + | - name: RetentionPolicies | ||
| + | |||
| + | - name: SecurityPolicies | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== MFA ====== | ||
| + | |||
| + | ===== MfaConfiguration ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MfaConfiguration: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | enabled: | ||
| + | type: boolean | ||
| + | |||
| + | method: | ||
| + | $ref: '#/ | ||
| + | |||
| + | backupCodesRemaining: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== MfaMethod ===== | ||
| + | |||
| + | <code yaml> | ||
| + | MfaMethod: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - TOTP | ||
| + | |||
| + | |||
| + | |||
| + | - SMS | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== QR Code ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Identity & SSO ====== | ||
| + | |||
| + | ===== IdentityProvider ===== | ||
| + | |||
| + | <code yaml> | ||
| + | IdentityProvider: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | providerType: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | enabled: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Types ===== | ||
| + | |||
| + | < | ||
| + | SAML | ||
| + | |||
| + | OIDC | ||
| + | |||
| + | AZURE_AD | ||
| + | |||
| + | OKTA | ||
| + | |||
| + | AUTH0 | ||
| + | |||
| + | KEYCLOAK | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== SAML ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== OIDC ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Sessions ====== | ||
| + | |||
| + | ===== ActiveSession ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ActiveSession: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | ipAddress: | ||
| + | type: string | ||
| + | |||
| + | country: | ||
| + | type: string | ||
| + | |||
| + | userAgent: | ||
| + | type: string | ||
| + | |||
| + | createdAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | lastActivityAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /sessions | ||
| + | |||
| + | GET / | ||
| + | |||
| + | DELETE / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Consents ====== | ||
| + | |||
| + | ===== Consent ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Consent: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | consentType: | ||
| + | type: string | ||
| + | |||
| + | granted: | ||
| + | type: boolean | ||
| + | |||
| + | grantedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | |||
| + | version: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Consent Types ===== | ||
| + | |||
| + | < | ||
| + | GDPR | ||
| + | |||
| + | COOKIES | ||
| + | |||
| + | EMAIL_MARKETING | ||
| + | |||
| + | SMS_MARKETING | ||
| + | |||
| + | PROFILING | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /consents | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Historique ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Privacy ====== | ||
| + | |||
| + | ===== Export RGPD ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | PrivacyExportRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | format: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Formats ===== | ||
| + | |||
| + | < | ||
| + | ZIP | ||
| + | |||
| + | JSON | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Droit à l' | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Droit à la rectification ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Droit à la limitation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Registre traitements ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Risk Management ====== | ||
| + | |||
| + | ===== Risk ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Risk: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | probability: | ||
| + | type: integer | ||
| + | |||
| + | impact: | ||
| + | type: integer | ||
| + | |||
| + | score: | ||
| + | type: integer | ||
| + | |||
| + | level: | ||
| + | $ref: '#/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== RiskLevel ===== | ||
| + | |||
| + | <code yaml> | ||
| + | RiskLevel: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - LOW | ||
| + | |||
| + | - MEDIUM | ||
| + | |||
| + | - HIGH | ||
| + | |||
| + | - CRITICAL | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Évaluation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Traitement ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Security Incidents ====== | ||
| + | |||
| + | ===== SecurityIncident ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SecurityIncident: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | title: | ||
| + | type: string | ||
| + | |||
| + | severity: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | detectedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Workflow ===== | ||
| + | |||
| + | < | ||
| + | Detected | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Qualified | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Investigating | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Resolved | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Closed | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Détection ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Compliance Audits ====== | ||
| + | |||
| + | ===== ComplianceAudit ===== | ||
| + | |||
| + | <code yaml> | ||
| + | ComplianceAudit: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | auditType: | ||
| + | type: string | ||
| + | |||
| + | status: | ||
| + | type: string | ||
| + | |||
| + | executedAt: | ||
| + | type: string | ||
| + | format: date-time | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Types ===== | ||
| + | |||
| + | < | ||
| + | GDPR | ||
| + | |||
| + | ISO27001 | ||
| + | |||
| + | SOC2 | ||
| + | |||
| + | NIS2 | ||
| + | |||
| + | OWASP | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Rapport ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Data Classification ====== | ||
| + | |||
| + | ===== DataClassification ===== | ||
| + | |||
| + | <code yaml> | ||
| + | DataClassification: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | classification: | ||
| + | $ref: '#/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== DataSensitivity ===== | ||
| + | |||
| + | <code yaml> | ||
| + | DataSensitivity: | ||
| + | |||
| + | type: string | ||
| + | |||
| + | enum: | ||
| + | |||
| + | - PUBLIC | ||
| + | |||
| + | - INTERNAL | ||
| + | |||
| + | - CONFIDENTIAL | ||
| + | |||
| + | - RESTRICTED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Retention Policies ====== | ||
| + | |||
| + | ===== RetentionPolicy ===== | ||
| + | |||
| + | <code yaml> | ||
| + | RetentionPolicy: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | entityType: | ||
| + | type: string | ||
| + | |||
| + | retentionPeriodDays: | ||
| + | type: integer | ||
| + | |||
| + | archiveEnabled: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | AuditLogs | ||
| + | |||
| + | Contracts | ||
| + | |||
| + | Consents | ||
| + | |||
| + | Sessions | ||
| + | |||
| + | Notifications | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Security Policies ====== | ||
| + | |||
| + | ===== SecurityPolicy ===== | ||
| + | |||
| + | <code yaml> | ||
| + | SecurityPolicy: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | configuration: | ||
| + | type: object | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PUT / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | Password Policy | ||
| + | |||
| + | Session Duration | ||
| + | |||
| + | MFA Required | ||
| + | |||
| + | Allowed Countries | ||
| + | |||
| + | API Rate Limits | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Security Dashboard ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | MFA Enabled Users | ||
| + | |||
| + | Active Sessions | ||
| + | |||
| + | Open Risks | ||
| + | |||
| + | Security Incidents | ||
| + | |||
| + | Compliance Score | ||
| + | |||
| + | Audit Success Rate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Enterprise Monitoring ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Détections ===== | ||
| + | |||
| + | < | ||
| + | Impossible Travel | ||
| + | |||
| + | Privilege Escalation | ||
| + | |||
| + | Mass Export | ||
| + | |||
| + | Brute Force | ||
| + | |||
| + | Suspicious Login | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Security ===== | ||
| + | |||
| + | < | ||
| + | security.read | ||
| + | |||
| + | security.manage | ||
| + | |||
| + | security.audit | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Compliance ===== | ||
| + | |||
| + | < | ||
| + | compliance.read | ||
| + | |||
| + | compliance.manage | ||
| + | |||
| + | compliance.audit | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Privacy ===== | ||
| + | |||
| + | < | ||
| + | privacy.read | ||
| + | |||
| + | privacy.export | ||
| + | |||
| + | privacy.erase | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 94 endpoints | ||
| + | |||
| + | ≈ 35 schémas | ||
| + | |||
| + | ≈ 11 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.11 : | ||
| + | |||
| + | < | ||
| + | ≈ 771 endpoints | ||
| + | |||
| + | ≈ 270 schémas | ||
| + | |||
| + | ≈ 88 tags | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 3-A.12 — OpenAPI Internationalisation, | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Finaliser le contrat API Enterprise 4.0. | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 15 | ||
| + | |||
| + | Multi-sites & Réseau | ||
| + | |||
| + | Sprint 20 | ||
| + | |||
| + | Internationalisation | ||
| + | |||
| + | Release Enterprise 4.0 | ||
| + | </ | ||
| + | |||
| + | Elle permet : | ||
| + | |||
| + | < | ||
| + | Multi-langues | ||
| + | |||
| + | Multi-devises | ||
| + | |||
| + | Multi-fuseaux horaires | ||
| + | |||
| + | Multi-régions | ||
| + | |||
| + | Multi-sites | ||
| + | |||
| + | Marque blanche | ||
| + | |||
| + | Réseaux d' | ||
| + | |||
| + | Licences Enterprise | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Tags OpenAPI ====== | ||
| + | |||
| + | <code yaml> | ||
| + | tags: | ||
| + | |||
| + | - name: Countries | ||
| + | |||
| + | - name: Currencies | ||
| + | |||
| + | - name: Languages | ||
| + | |||
| + | - name: Timezones | ||
| + | |||
| + | - name: CurrencyRates | ||
| + | |||
| + | - name: Translations | ||
| + | |||
| + | - name: Regions | ||
| + | |||
| + | - name: Sites | ||
| + | |||
| + | - name: WhiteLabel | ||
| + | |||
| + | - name: EnterpriseLicenses | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Countries ====== | ||
| + | |||
| + | ===== Country ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Country: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | format: uuid | ||
| + | |||
| + | isoCode: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | currencyCode: | ||
| + | type: string | ||
| + | |||
| + | languageCode: | ||
| + | type: string | ||
| + | |||
| + | timezone: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /countries | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Currencies ====== | ||
| + | |||
| + | ===== Currency ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Currency: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | symbol: | ||
| + | type: string | ||
| + | |||
| + | decimals: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /currencies | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | EUR | ||
| + | |||
| + | USD | ||
| + | |||
| + | GBP | ||
| + | |||
| + | CHF | ||
| + | |||
| + | CAD | ||
| + | |||
| + | AED | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Currency Rates ====== | ||
| + | |||
| + | ===== CurrencyRate ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CurrencyRate: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | baseCurrency: | ||
| + | type: string | ||
| + | |||
| + | targetCurrency: | ||
| + | type: string | ||
| + | |||
| + | exchangeRate: | ||
| + | type: number | ||
| + | |||
| + | effectiveDate: | ||
| + | type: string | ||
| + | format: date | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Conversion ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Request ===== | ||
| + | |||
| + | <code yaml> | ||
| + | CurrencyConversionRequest: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | amount: | ||
| + | type: number | ||
| + | |||
| + | sourceCurrency: | ||
| + | type: string | ||
| + | |||
| + | targetCurrency: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Languages ====== | ||
| + | |||
| + | ===== Language ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Language: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | locale: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /languages | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | fr-FR | ||
| + | |||
| + | en-US | ||
| + | |||
| + | en-GB | ||
| + | |||
| + | es-ES | ||
| + | |||
| + | it-IT | ||
| + | |||
| + | de-DE | ||
| + | |||
| + | nl-NL | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Timezones ====== | ||
| + | |||
| + | ===== Timezone ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Timezone: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | offset: | ||
| + | type: string | ||
| + | |||
| + | label: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /timezones | ||
| + | |||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Translations ====== | ||
| + | |||
| + | ===== Translation ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Translation: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | locale: | ||
| + | type: string | ||
| + | |||
| + | namespace: | ||
| + | type: string | ||
| + | |||
| + | translationKey: | ||
| + | type: string | ||
| + | |||
| + | translationValue: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Import ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Export ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Regions ====== | ||
| + | |||
| + | ===== Region ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Region: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | defaultCurrency: | ||
| + | type: string | ||
| + | |||
| + | defaultLanguage: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /regions | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | EUROPE | ||
| + | |||
| + | NORTH_AMERICA | ||
| + | |||
| + | MIDDLE_EAST | ||
| + | |||
| + | ASIA_PACIFIC | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Sites ====== | ||
| + | |||
| + | ===== Site ===== | ||
| + | |||
| + | <code yaml> | ||
| + | Site: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | code: | ||
| + | type: string | ||
| + | |||
| + | name: | ||
| + | type: string | ||
| + | |||
| + | domain: | ||
| + | type: string | ||
| + | |||
| + | active: | ||
| + | type: boolean | ||
| + | |||
| + | defaultLanguage: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET /sites | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET /sites/{id} | ||
| + | |||
| + | PATCH /sites/{id} | ||
| + | |||
| + | DELETE /sites/{id} | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Domaines ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | |||
| + | DELETE / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== White Label ====== | ||
| + | |||
| + | ===== WhiteLabelConfiguration ===== | ||
| + | |||
| + | <code yaml> | ||
| + | WhiteLabelConfiguration: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | logoUrl: | ||
| + | type: string | ||
| + | |||
| + | faviconUrl: | ||
| + | type: string | ||
| + | |||
| + | primaryColor: | ||
| + | type: string | ||
| + | |||
| + | secondaryColor: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | PUT / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Personnalisation ===== | ||
| + | |||
| + | < | ||
| + | Theme | ||
| + | |||
| + | Logo | ||
| + | |||
| + | Emails | ||
| + | |||
| + | Domaines | ||
| + | |||
| + | SEO | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Agency Network ====== | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Mutualisation ===== | ||
| + | |||
| + | < | ||
| + | Réservations inter-agences | ||
| + | |||
| + | Catalogue mutualisé | ||
| + | |||
| + | Reporting mutualisé | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Enterprise Licenses ====== | ||
| + | |||
| + | ===== EnterpriseLicense ===== | ||
| + | |||
| + | <code yaml> | ||
| + | EnterpriseLicense: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | id: | ||
| + | type: string | ||
| + | |||
| + | licenseKey: | ||
| + | type: string | ||
| + | |||
| + | licenseType: | ||
| + | type: string | ||
| + | |||
| + | validUntil: | ||
| + | type: string | ||
| + | format: date | ||
| + | |||
| + | maxUsers: | ||
| + | type: integer | ||
| + | |||
| + | maxProperties: | ||
| + | type: integer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Endpoints ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | |||
| + | POST / | ||
| + | |||
| + | GET / | ||
| + | |||
| + | PATCH / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Validation ===== | ||
| + | |||
| + | < | ||
| + | POST / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Multi-Régions ====== | ||
| + | |||
| + | ===== Déploiements ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | < | ||
| + | EU-West | ||
| + | |||
| + | US-East | ||
| + | |||
| + | US-West | ||
| + | |||
| + | Middle-East | ||
| + | |||
| + | Asia-Pacific | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Paramètres de Localisation ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réponse ===== | ||
| + | |||
| + | <code yaml> | ||
| + | LocalizationSettings: | ||
| + | |||
| + | type: object | ||
| + | |||
| + | properties: | ||
| + | |||
| + | defaultLanguage: | ||
| + | type: string | ||
| + | |||
| + | defaultCurrency: | ||
| + | type: string | ||
| + | |||
| + | defaultTimezone: | ||
| + | type: string | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Enterprise Dashboard ====== | ||
| + | |||
| + | ===== Endpoint ===== | ||
| + | |||
| + | < | ||
| + | GET / | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KPI ===== | ||
| + | |||
| + | < | ||
| + | Sites actifs | ||
| + | |||
| + | Pays actifs | ||
| + | |||
| + | Langues actives | ||
| + | |||
| + | Régions actives | ||
| + | |||
| + | Licences | ||
| + | |||
| + | Agences connectées | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Permissions RBAC ====== | ||
| + | |||
| + | ===== Internationalisation ===== | ||
| + | |||
| + | < | ||
| + | i18n.read | ||
| + | |||
| + | i18n.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Multi-sites ===== | ||
| + | |||
| + | < | ||
| + | sites.read | ||
| + | |||
| + | sites.manage | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Enterprise ===== | ||
| + | |||
| + | < | ||
| + | enterprise.read | ||
| + | |||
| + | enterprise.manage | ||
| + | |||
| + | enterprise.license | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Volume API ====== | ||
| + | |||
| + | Cette phase ajoute : | ||
| + | |||
| + | < | ||
| + | ≈ 88 endpoints | ||
| + | |||
| + | ≈ 28 schémas | ||
| + | |||
| + | ≈ 10 tags Swagger | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cumul Final OpenAPI ====== | ||
| + | |||
| + | Après Phase 3-A.12 : | ||
| + | |||
| + | < | ||
| + | ≈ 859 endpoints | ||
| + | |||
| + | ≈ 298 schémas | ||
| + | |||
| + | ≈ 98 tags Swagger | ||
| + | |||
| + | ≈ 110 domaines métier | ||
| + | |||
| + | ≈ 1 contrat API Enterprise complet | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== OpenAPI Enterprise 4.0 — TERMINÉ ====== | ||
| + | |||
| + | Le contrat fonctionnel couvre désormais : | ||
| + | |||
| + | < | ||
| + | ✓ Auth | ||
| + | |||
| + | ✓ Users | ||
| + | |||
| + | ✓ RBAC | ||
| + | |||
| + | ✓ Owners | ||
| + | |||
| + | ✓ Properties | ||
| + | |||
| + | ✓ Customers | ||
| + | |||
| + | ✓ Reservations | ||
| + | |||
| + | ✓ Contracts | ||
| + | |||
| + | ✓ Signatures | ||
| + | |||
| + | ✓ Payments | ||
| + | |||
| + | ✓ Invoices | ||
| + | |||
| + | ✓ CRM | ||
| + | |||
| + | ✓ Messaging | ||
| + | |||
| + | ✓ Marketing | ||
| + | |||
| + | ✓ Automation | ||
| + | |||
| + | ✓ AI | ||
| + | |||
| + | ✓ Knowledge Base | ||
| + | |||
| + | ✓ Governance | ||
| + | |||
| + | ✓ Administration | ||
| + | |||
| + | ✓ OTA | ||
| + | |||
| + | ✓ Channel Manager | ||
| + | |||
| + | ✓ Revenue Management | ||
| + | |||
| + | ✓ Analytics | ||
| + | |||
| + | ✓ Security | ||
| + | |||
| + | ✓ Compliance | ||
| + | |||
| + | ✓ Internationalisation | ||
| + | |||
| + | ✓ Multi-sites | ||
| + | |||
| + | ✓ Enterprise | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Étape suivante recommandée ====== | ||
| + | |||
| + | Le travail de conception est désormais terminé. | ||
| + | |||
| + | Le prochain livrable devrait être : | ||
| + | |||
| + | ===== Phase 4 ===== | ||
| + | |||
| + | Génération du code exécutable | ||
| + | |||
| + | < | ||
| + | 4-A Prisma Schema final consolidé | ||
| + | |||
| + | 4-B DTO NestJS générés | ||
| + | |||
| + | 4-C SDK TypeScript généré | ||
| + | |||
| + | 4-D Structure NestJS complète | ||
| + | |||
| + | 4-E Structure NextJS complète | ||
| + | |||
| + | 4-F Docker Compose | ||
| + | |||
| + | 4-G GitHub Actions | ||
| + | |||
| + | 4-H Helm Charts | ||
| + | |||
| + | 4-I Terraform Infrastructure | ||
| + | |||
| + | 4-J Monorepo final | ||
| + | </ | ||
| + | |||
| + | À partir de ce point, on quitte la phase d' | ||
ujusum/3-codage/1-repository/3-spec-open-api.1780859371.txt.gz · Dernière modification : 2026/06/07 21:09 de admin