Outils pour utilisateurs

Outils du site


ujusum:3-codage:1-repository:3-spec-open-api

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ujusum:3-codage:1-repository:3-spec-open-api [2026/06/08 00:08] adminujusum:3-codage:1-repository:3-spec-open-api [2026/06/08 00:59] (Version actuelle) admin
Ligne 2805: Ligne 2805:
 ---- ----
  
-====== Étape suivante ======+====== Phase 3-A.4 — OpenAPI Contracts & Finance ======
  
-===== Phase 3-A.4 =====+===== Objectif =====
  
-OpenAPI Contracts & Finance+Définir le domaine financier et contractuel de la plateforme. 
 + 
 +Cette phase couvre :
  
 <code> <code>
-Contracts+Sprint 5
  
-Contract Templates+Contrats & Signature Électronique
  
-Contract Signatures+Sprint 6 
 + 
 +Paiements & Facturation 
 +</code> 
 + 
 +Elle permet : 
 + 
 +<code> 
 +Réservation 
 + 
 +↓ 
 + 
 +Contrat 
 + 
 +↓ 
 + 
 +Signature 
 + 
 +↓ 
 + 
 +Paiement 
 + 
 +↓ 
 + 
 +Facture 
 + 
 +↓ 
 + 
 +Comptabilité 
 +</code> 
 + 
 +---- 
 + 
 +====== Tags OpenAPI ====== 
 + 
 +<code yaml> 
 +tags: 
 + 
 +  - name: Contracts 
 + 
 +  - name: ContractTemplates 
 + 
 +  - name: ContractSignatures 
 + 
 +  - name: Payments 
 + 
 +  - name: Refunds 
 + 
 +  - name: Invoices 
 + 
 +  - name: Accounting 
 +</code> 
 + 
 +---- 
 + 
 +====== Contracts ====== 
 + 
 +===== Contract ===== 
 + 
 +<code yaml> 
 +Contract: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    id: 
 +      type: string 
 +      format: uuid 
 + 
 +    contractNumber: 
 +      type: string 
 + 
 +    reservationId: 
 +      type: string 
 +      format: uuid 
 + 
 +    status: 
 +      $ref: '#/components/schemas/ContractStatus' 
 + 
 +    generatedAt: 
 +      type: string 
 +      format: date-time 
 + 
 +    signedAt: 
 +      type: string 
 +      format: date-time 
 + 
 +    pdfUrl: 
 +      type: string 
 +</code> 
 + 
 +---- 
 + 
 +===== ContractStatus ===== 
 + 
 +<code yaml> 
 +ContractStatus: 
 + 
 +  type: string 
 + 
 +  enum: 
 + 
 +    - DRAFT 
 +    - GENERATED 
 +    - SENT 
 +    - VIEWED 
 +    - SIGNED 
 +    - CANCELLED 
 +</code> 
 + 
 +---- 
 + 
 +====== Endpoints Contracts ====== 
 + 
 +===== Collection ===== 
 + 
 +<code> 
 +GET    /contracts 
 + 
 +POST   /contracts 
 +</code> 
 + 
 +---- 
 + 
 +===== Ressource ===== 
 + 
 +<code> 
 +GET    /contracts/{id} 
 + 
 +PATCH  /contracts/{id} 
 + 
 +DELETE /contracts/{id} 
 +</code> 
 + 
 +---- 
 + 
 +===== Réservation ===== 
 + 
 +<code> 
 +GET /reservations/{id}/contracts 
 +</code> 
 + 
 +---- 
 + 
 +====== Génération ====== 
 + 
 +===== Générer un contrat ===== 
 + 
 +<code> 
 +POST /contracts/generate 
 +</code> 
 + 
 +---- 
 + 
 +===== Request ===== 
 + 
 +<code yaml> 
 +GenerateContractRequest: 
 + 
 +  type: object 
 + 
 +  required: 
 + 
 +    - reservationId 
 +    - templateId 
 + 
 +  properties: 
 + 
 +    reservationId: 
 +      type: string 
 + 
 +    templateId: 
 +      type: string 
 +</code> 
 + 
 +---- 
 + 
 +===== Réponse ===== 
 + 
 +<code yaml> 
 +GenerateContractResponse: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    contractId: 
 +      type: string 
 + 
 +    pdfUrl: 
 +      type: string 
 +</code> 
 + 
 +---- 
 + 
 +====== PDF ====== 
 + 
 +===== Télécharger ===== 
 + 
 +<code> 
 +GET /contracts/{id}/pdf 
 +</code> 
 + 
 +---- 
 + 
 +===== Régénérer ===== 
 + 
 +<code> 
 +POST /contracts/{id}/regenerate 
 +</code> 
 + 
 +---- 
 + 
 +====== Contract Templates ====== 
 + 
 +===== ContractTemplate ===== 
 + 
 +<code yaml> 
 +ContractTemplate: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    id: 
 +      type: string 
 + 
 +    code: 
 +      type: string 
 + 
 +    name: 
 +      type: string 
 + 
 +    active: 
 +      type: boolean 
 +</code> 
 + 
 +---- 
 + 
 +===== Endpoints ===== 
 + 
 +<code> 
 +GET    /contract-templates 
 + 
 +POST   /contract-templates 
 + 
 +GET    /contract-templates/{id} 
 + 
 +PATCH  /contract-templates/{id} 
 + 
 +DELETE /contract-templates/{id} 
 +</code> 
 + 
 +---- 
 + 
 +====== 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 
 +</code> 
 + 
 +---- 
 + 
 +===== Envoyer pour signature ===== 
 + 
 +<code> 
 +POST /contracts/{id}/send-signature 
 +</code> 
 + 
 +---- 
 + 
 +===== Consulter ===== 
 + 
 +<code> 
 +GET /contracts/{id}/signatures 
 +</code> 
 + 
 +---- 
 + 
 +===== Relancer ===== 
 + 
 +<code> 
 +POST /contracts/{id}/remind-signature 
 +</code> 
 + 
 +---- 
 + 
 +===== Annuler ===== 
 + 
 +<code> 
 +POST /contracts/{id}/cancel-signature 
 +</code> 
 + 
 +---- 
 + 
 +====== 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: '#/components/schemas/PaymentStatus' 
 + 
 +    paidAt: 
 +      type: string 
 +      format: date-time 
 +</code> 
 + 
 +---- 
 + 
 +===== PaymentStatus ===== 
 + 
 +<code yaml> 
 +PaymentStatus: 
 + 
 +  type: string 
 + 
 +  enum: 
 + 
 +    - PENDING 
 +    - AUTHORIZED 
 +    - PAID 
 +    - FAILED 
 +    - CANCELLED 
 +    - REFUNDED 
 +</code> 
 + 
 +---- 
 + 
 +====== Endpoints Payments ====== 
 + 
 +===== Collection ===== 
 + 
 +<code> 
 +GET /payments 
 + 
 +POST /payments 
 +</code> 
 + 
 +---- 
 + 
 +===== Ressource ===== 
 + 
 +<code> 
 +GET /payments/{id} 
 + 
 +PATCH /payments/{id} 
 +</code> 
 + 
 +---- 
 + 
 +===== Réservation ===== 
 + 
 +<code> 
 +GET /reservations/{id}/payments 
 +</code> 
 + 
 +---- 
 + 
 +====== Paiement CB ====== 
 + 
 +===== Créer session ===== 
 + 
 +<code> 
 +POST /payments/checkout-session 
 +</code> 
 + 
 +---- 
 + 
 +===== Request ===== 
 + 
 +<code yaml> 
 +CheckoutSessionRequest: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    reservationId: 
 +      type: string 
 + 
 +    amount: 
 +      type: number 
 +</code> 
 + 
 +---- 
 + 
 +===== Réponse ===== 
 + 
 +<code yaml> 
 +CheckoutSessionResponse: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    sessionId: 
 +      type: string 
 + 
 +    checkoutUrl: 
 +      type: string 
 +</code> 
 + 
 +---- 
 + 
 +====== Webhooks ====== 
 + 
 +===== Stripe ===== 
 + 
 +<code> 
 +POST /payments/webhooks/stripe 
 +</code> 
 + 
 +---- 
 + 
 +===== PayPal ===== 
 + 
 +<code> 
 +POST /payments/webhooks/paypal 
 +</code> 
 + 
 +---- 
 + 
 +====== Transactions ====== 
 + 
 +===== Historique ===== 
 + 
 +<code> 
 +GET /payments/{id}/transactions 
 +</code> 
 + 
 +---- 
 + 
 +====== Refunds ====== 
 + 
 +===== Refund ===== 
 + 
 +<code yaml> 
 +Refund: 
 + 
 +  type: object 
 + 
 +  properties: 
 + 
 +    id: 
 +      type: string 
 + 
 +    amount: 
 +      type: number 
 + 
 +    refundedAt: 
 +      type: string 
 +      format: date-time 
 + 
 +    reason: 
 +      type: string 
 +</code> 
 + 
 +---- 
 + 
 +===== Endpoints ===== 
 + 
 +<code> 
 +GET /refunds 
 + 
 +POST /refunds 
 + 
 +GET /refunds/{id} 
 +</code> 
 + 
 +---- 
 + 
 +===== Rembourser ===== 
 + 
 +<code> 
 +POST /payments/{id}/refund 
 +</code> 
 + 
 +---- 
 + 
 +====== 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: '#/components/schemas/InvoiceStatus' 
 + 
 +    issueDate: 
 +      type: string 
 +      format: date 
 +</code> 
 + 
 +---- 
 + 
 +===== InvoiceStatus ===== 
 + 
 +<code yaml> 
 +InvoiceStatus: 
 + 
 +  type: string 
 + 
 +  enum: 
 + 
 +    - DRAFT 
 +    - ISSUED 
 +    - PAID 
 +    - PARTIALLY_PAID 
 +    - CANCELLED 
 +</code> 
 + 
 +---- 
 + 
 +====== Endpoints Invoices ====== 
 + 
 +===== Collection ===== 
 + 
 +<code> 
 +GET    /invoices 
 + 
 +POST   /invoices 
 +</code> 
 + 
 +---- 
 + 
 +===== Ressource ===== 
 + 
 +<code> 
 +GET    /invoices/{id} 
 + 
 +PATCH  /invoices/{id} 
 +</code> 
 + 
 +---- 
 + 
 +===== Réservation ===== 
 + 
 +<code> 
 +GET /reservations/{id}/invoices 
 +</code> 
 + 
 +---- 
 + 
 +===== PDF ===== 
 + 
 +<code> 
 +GET /invoices/{id}/pdf 
 +</code> 
 + 
 +---- 
 + 
 +===== Envoi ===== 
 + 
 +<code> 
 +POST /invoices/{id}/send 
 +</code> 
 + 
 +---- 
 + 
 +====== 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 
 +</code> 
 + 
 +---- 
 + 
 +===== Endpoints ===== 
 + 
 +<code> 
 +GET /accounting/entries 
 + 
 +GET /accounting/entries/{id} 
 +</code> 
 + 
 +---- 
 + 
 +===== Export ===== 
 + 
 +<code> 
 +GET /accounting/export 
 +</code> 
 + 
 +---- 
 + 
 +===== Paramètres ===== 
 + 
 +<code> 
 +from 
 + 
 +to 
 + 
 +format 
 +</code> 
 + 
 +---- 
 + 
 +===== Formats ===== 
 + 
 +<code> 
 +CSV 
 + 
 +XLSX 
 + 
 +FEC 
 +</code> 
 + 
 +---- 
 + 
 +====== Workflow Métier ====== 
 + 
 +===== Contrat ===== 
 + 
 +<code> 
 +Reservation 
 + 
 +↓ 
 + 
 +Generate Contract 
 + 
 +↓ 
 + 
 +Send Signature 
 + 
 +↓ 
 + 
 +Signed 
 +</code> 
 + 
 +---- 
 + 
 +===== Paiement ===== 
 + 
 +<code> 
 +Reservation 
 + 
 +↓ 
 + 
 +Checkout Session 
 + 
 +↓ 
 + 
 +Payment 
 + 
 +↓ 
 + 
 +Invoice 
 +</code> 
 + 
 +---- 
 + 
 +===== Remboursement ===== 
 + 
 +<code> 
 +Payment 
 + 
 +↓ 
 + 
 +Refund 
 + 
 +↓ 
 + 
 +Accounting Entry 
 +</code> 
 + 
 +---- 
 + 
 +====== Permissions RBAC ====== 
 + 
 +===== Contrats ===== 
 + 
 +<code> 
 +contracts.read 
 + 
 +contracts.create 
 + 
 +contracts.update 
 + 
 +contracts.send 
 + 
 +contracts.sign 
 +</code> 
 + 
 +---- 
 + 
 +===== Paiements ===== 
 + 
 +<code> 
 +payments.read 
 + 
 +payments.create 
 + 
 +payments.refund 
 +</code> 
 + 
 +---- 
 + 
 +===== Facturation ===== 
 + 
 +<code> 
 +invoices.read 
 + 
 +invoices.create 
 + 
 +invoices.send 
 +</code> 
 + 
 +---- 
 + 
 +====== Volume API ====== 
 + 
 +Cette phase ajoute : 
 + 
 +<code> 
 +≈ 65 endpoints 
 + 
 +≈ 22 schémas 
 + 
 +≈ 7 tags Swagger 
 +</code> 
 + 
 +---- 
 + 
 +====== Cumul OpenAPI ====== 
 + 
 +Après Phase 3-A.4 : 
 + 
 +<code> 
 +≈ 185 endpoints 
 + 
 +≈ 70 schémas 
 + 
 +≈ 29 tags 
 +</code> 
 + 
 +---- 
 + 
 +====== Phase 3-A.5 — OpenAPI CRM & Relation Client ====== 
 + 
 +===== Objectif ===== 
 + 
 +Mettre en place le CRM intégré de la plateforme. 
 + 
 +Cette phase couvre : 
 + 
 +<code> 
 +Sprint 8 
 + 
 +CRM & Relation Client 
 +</code> 
 + 
 +Le CRM est directement connecté aux : 
 + 
 +<code> 
 +Customers 
 + 
 +Reservations 
 + 
 +Contracts
  
 Payments Payments
  
-Refunds+Marketing
  
-Invoices+Automation 
 +</code>
  
-Accounting+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
 </code> </code>
  
-Cette phase couvrira :+---- 
 + 
 +====== 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: '#/components/schemas/LeadStatus' 
 + 
 +    assignedUserId: 
 +      type: string 
 + 
 +    createdAt: 
 +      type: string 
 +      format: date-time 
 +</code> 
 + 
 +---- 
 + 
 +===== LeadStatus ===== 
 + 
 +<code yaml> 
 +LeadStatus: 
 + 
 +  type: string 
 + 
 +  enum: 
 + 
 +    - NEW 
 + 
 +    - QUALIFIED 
 + 
 +    - CONTACTED 
 + 
 +    - PROPOSAL_SENT 
 + 
 +    - NEGOTIATION 
 + 
 +    - WON 
 + 
 +    - LOST 
 +</code> 
 + 
 +---- 
 + 
 +===== Endpoints =====
  
 <code> <code>
-Sprint 5+GET    /leads
  
-Contrats & Signature+POST   /leads
  
-Sprint 6+GET    /leads/{id}
  
-Paiements & Facturation+PATCH  /leads/{id} 
 + 
 +DELETE /leads/{id}
 </code> </code>
  
-et ajoutera environ :+---- 
 + 
 +===== Recherche =====
  
 <code> <code>
-60 endpoints supplémentaires+GET /leads 
 + 
 +?status=NEW 
 + 
 +?assignedUserId=xxx 
 + 
 +?source=WEBSITE 
 + 
 +?scoreMin=50
 </code> </code>
 +
 +----
 +
 +====== Lead Sources ======
 +
 +===== LeadSource =====
 +
 +<code yaml>
 +LeadSource:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /lead-sources
 +
 +POST   /lead-sources
 +
 +PATCH  /lead-sources/{id}
 +
 +DELETE /lead-sources/{id}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +WEBSITE
 +
 +GOOGLE
 +
 +FACEBOOK
 +
 +INSTAGRAM
 +
 +BOOKING
 +
 +AIRBNB
 +
 +REFERRAL
 +
 +PHONE
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /pipelines
 +
 +POST   /pipelines
 +
 +GET    /pipelines/{id}
 +
 +PATCH  /pipelines/{id}
 +
 +DELETE /pipelines/{id}
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +NEW
 +
 +QUALIFICATION
 +
 +CONTACT
 +
 +VISIT
 +
 +PROPOSAL
 +
 +NEGOTIATION
 +
 +WON
 +
 +LOST
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /pipelines/{id}/stages
 +
 +POST   /pipelines/{id}/stages
 +
 +PATCH  /pipeline-stages/{id}
 +
 +DELETE /pipeline-stages/{id}
 +</code>
 +
 +----
 +
 +====== 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: '#/components/schemas/OpportunityStatus'
 +</code>
 +
 +----
 +
 +===== OpportunityStatus =====
 +
 +<code yaml>
 +OpportunityStatus:
 +
 +  type: string
 +
 +  enum:
 +
 +    - OPEN
 +
 +    - WON
 +
 +    - LOST
 +
 +    - CANCELLED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /opportunities
 +
 +POST   /opportunities
 +
 +GET    /opportunities/{id}
 +
 +PATCH  /opportunities/{id}
 +
 +DELETE /opportunities/{id}
 +</code>
 +
 +----
 +
 +===== Changement d'étape =====
 +
 +<code>
 +POST /opportunities/{id}/move
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +MoveOpportunityRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    stageId:
 +      type: string
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Activity Types =====
 +
 +<code>
 +CALL
 +
 +EMAIL
 +
 +VISIT
 +
 +MEETING
 +
 +VIDEO_CALL
 +
 +FOLLOW_UP
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /activities
 +
 +POST   /activities
 +
 +GET    /activities/{id}
 +
 +PATCH  /activities/{id}
 +
 +DELETE /activities/{id}
 +</code>
 +
 +----
 +
 +===== Affectation =====
 +
 +<code>
 +POST /activities/{id}/assign
 +</code>
 +
 +----
 +
 +====== Tasks ======
 +
 +===== Task =====
 +
 +<code yaml>
 +Task:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    title:
 +      type: string
 +
 +    description:
 +      type: string
 +
 +    priority:
 +      $ref: '#/components/schemas/TaskPriority'
 +
 +    status:
 +      $ref: '#/components/schemas/TaskStatus'
 +
 +    dueDate:
 +      type: string
 +      format: date-time
 +
 +    assignedUserId:
 +      type: string
 +</code>
 +
 +----
 +
 +===== TaskPriority =====
 +
 +<code yaml>
 +TaskPriority:
 +
 +  type: string
 +
 +  enum:
 +
 +    - LOW
 +
 +    - MEDIUM
 +
 +    - HIGH
 +
 +    - URGENT
 +</code>
 +
 +----
 +
 +===== TaskStatus =====
 +
 +<code yaml>
 +TaskStatus:
 +
 +  type: string
 +
 +  enum:
 +
 +    - TODO
 +
 +    - IN_PROGRESS
 +
 +    - DONE
 +
 +    - CANCELLED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /tasks
 +
 +POST   /tasks
 +
 +GET    /tasks/{id}
 +
 +PATCH  /tasks/{id}
 +
 +DELETE /tasks/{id}
 +</code>
 +
 +----
 +
 +===== Workflow =====
 +
 +<code>
 +Create Task
 +
 +
 +
 +Assign User
 +
 +
 +
 +Execute
 +
 +
 +
 +Done
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Visibility =====
 +
 +<code>
 +PRIVATE
 +
 +TEAM
 +
 +PUBLIC
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /customers/{id}/notes
 +
 +POST   /customers/{id}/notes
 +
 +PATCH  /customer-notes/{id}
 +
 +DELETE /customer-notes/{id}
 +</code>
 +
 +----
 +
 +====== Tags ======
 +
 +===== Tag =====
 +
 +<code yaml>
 +Tag:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    label:
 +      type: string
 +
 +    color:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /tags
 +
 +POST   /tags
 +
 +PATCH  /tags/{id}
 +
 +DELETE /tags/{id}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +VIP
 +
 +HOT_LEAD
 +
 +OWNER
 +
 +RETURNING_CUSTOMER
 +
 +HIGH_VALUE
 +</code>
 +
 +----
 +
 +====== Segments ======
 +
 +===== Segment =====
 +
 +<code yaml>
 +Segment:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    rules:
 +      type: object
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /segments
 +
 +POST   /segments
 +
 +GET    /segments/{id}
 +
 +PATCH  /segments/{id}
 +
 +DELETE /segments/{id}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +CLIENTS_FIDELES
 +
 +CLIENTS_INACTIFS
 +
 +PROPRIETAIRES_ACTIFS
 +
 +PROSPECTS_CHAUDS
 +
 +ANNIVERSAIRES
 +</code>
 +
 +----
 +
 +====== CRM Dashboard ======
 +
 +===== KPI =====
 +
 +<code>
 +Leads créés
 +
 +Leads qualifiés
 +
 +Opportunités ouvertes
 +
 +CA potentiel
 +
 +Tâches ouvertes
 +
 +Activités réalisées
 +
 +Taux de conversion
 +</code>
 +
 +----
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /crm/dashboard
 +</code>
 +
 +----
 +
 +====== Conversions ======
 +
 +===== Lead → Customer =====
 +
 +<code>
 +POST /leads/{id}/convert
 +</code>
 +
 +----
 +
 +===== Résultat =====
 +
 +<code>
 +Lead
 +
 +
 +
 +Customer
 +
 +
 +
 +Opportunity
 +
 +
 +
 +Reservation
 +</code>
 +
 +----
 +
 +====== Automatisations ======
 +
 +===== Attribution automatique =====
 +
 +<code>
 +POST /leads/{id}/auto-assign
 +</code>
 +
 +----
 +
 +===== Scoring =====
 +
 +<code>
 +POST /leads/{id}/calculate-score
 +</code>
 +
 +----
 +
 +===== Relances =====
 +
 +<code>
 +POST /tasks/{id}/remind
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Leads =====
 +
 +<code>
 +leads.read
 +
 +leads.create
 +
 +leads.update
 +
 +leads.delete
 +
 +leads.convert
 +</code>
 +
 +----
 +
 +===== CRM =====
 +
 +<code>
 +crm.read
 +
 +crm.manage
 +
 +crm.assign
 +
 +crm.export
 +</code>
 +
 +----
 +
 +===== Tasks =====
 +
 +<code>
 +tasks.read
 +
 +tasks.create
 +
 +tasks.update
 +
 +tasks.complete
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 72 endpoints
 +
 +≈ 25 schémas
 +
 +≈ 10 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.5 :
 +
 +<code>
 +≈ 257 endpoints
 +
 +≈ 95 schémas
 +
 +≈ 39 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.6 — OpenAPI Messaging & Notifications ======
 +
 +===== Objectif =====
 +
 +Construire le centre de communication unifié de la plateforme.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 9
 +
 +Messagerie & Notifications
 +</code>
 +
 +Elle permettra :
 +
 +<code>
 +Messagerie interne
 +
 +Emails transactionnels
 +
 +SMS transactionnels
 +
 +Notifications temps réel
 +
 +Templates
 +
 +Campagnes Marketing
 +
 +Centre de communication
 +</code>
 +
 +----
 +
 +====== Tags OpenAPI ======
 +
 +<code yaml>
 +tags:
 +
 +  - name: Conversations
 +
 +  - name: Messages
 +
 +  - name: Notifications
 +
 +  - name: Emails
 +
 +  - name: SMS
 +
 +  - name: Templates
 +
 +  - name: Campaigns
 +</code>
 +
 +----
 +
 +====== Conversations ======
 +
 +===== Conversation =====
 +
 +<code yaml>
 +Conversation:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +      format: uuid
 +
 +    subject:
 +      type: string
 +
 +    conversationType:
 +      $ref: '#/components/schemas/ConversationType'
 +
 +    status:
 +      $ref: '#/components/schemas/ConversationStatus'
 +
 +    createdAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== ConversationType =====
 +
 +<code yaml>
 +ConversationType:
 +
 +  type: string
 +
 +  enum:
 +
 +    - INTERNAL
 +
 +    - CUSTOMER
 +
 +    - OWNER
 +
 +    - RESERVATION
 +
 +    - SUPPORT
 +</code>
 +
 +----
 +
 +===== ConversationStatus =====
 +
 +<code yaml>
 +ConversationStatus:
 +
 +  type: string
 +
 +  enum:
 +
 +    - OPEN
 +
 +    - PENDING
 +
 +    - CLOSED
 +
 +    - ARCHIVED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /conversations
 +
 +POST   /conversations
 +
 +GET    /conversations/{id}
 +
 +PATCH  /conversations/{id}
 +
 +DELETE /conversations/{id}
 +</code>
 +
 +----
 +
 +====== Participants ======
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /conversations/{id}/participants
 +
 +POST   /conversations/{id}/participants
 +
 +DELETE /conversations/{id}/participants/{userId}
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /conversations/{id}/messages
 +
 +POST   /conversations/{id}/messages
 +
 +GET    /messages/{id}
 +
 +PATCH  /messages/{id}
 +
 +DELETE /messages/{id}
 +</code>
 +
 +----
 +
 +===== Pièces jointes =====
 +
 +<code>
 +POST /messages/{id}/attachments
 +</code>
 +
 +----
 +
 +====== Notifications ======
 +
 +===== Notification =====
 +
 +<code yaml>
 +Notification:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    userId:
 +      type: string
 +
 +    type:
 +      $ref: '#/components/schemas/NotificationType'
 +
 +    title:
 +      type: string
 +
 +    message:
 +      type: string
 +
 +    read:
 +      type: boolean
 +
 +    createdAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== NotificationType =====
 +
 +<code yaml>
 +NotificationType:
 +
 +  type: string
 +
 +  enum:
 +
 +    - INFO
 +
 +    - SUCCESS
 +
 +    - WARNING
 +
 +    - ERROR
 +
 +    - SYSTEM
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /notifications
 +
 +GET    /notifications/{id}
 +
 +PATCH  /notifications/{id}/read
 +
 +PATCH  /notifications/read-all
 +
 +DELETE /notifications/{id}
 +</code>
 +
 +----
 +
 +====== Notifications Temps Réel ======
 +
 +===== WebSocket =====
 +
 +<code>
 +/ws/notifications
 +</code>
 +
 +----
 +
 +===== Événements =====
 +
 +<code>
 +notification.created
 +
 +message.received
 +
 +reservation.created
 +
 +payment.received
 +
 +contract.signed
 +</code>
 +
 +----
 +
 +====== Emails ======
 +
 +===== Email =====
 +
 +<code yaml>
 +Email:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    to:
 +      type: string
 +
 +    subject:
 +      type: string
 +
 +    status:
 +      $ref: '#/components/schemas/EmailStatus'
 +
 +    sentAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== EmailStatus =====
 +
 +<code yaml>
 +EmailStatus:
 +
 +  type: string
 +
 +  enum:
 +
 +    - DRAFT
 +
 +    - QUEUED
 +
 +    - SENT
 +
 +    - DELIVERED
 +
 +    - OPENED
 +
 +    - CLICKED
 +
 +    - BOUNCED
 +
 +    - FAILED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /emails
 +
 +GET /emails/{id}
 +
 +POST /emails/send
 +
 +POST /emails/test
 +</code>
 +
 +----
 +
 +===== Envoi Transactionnel =====
 +
 +<code>
 +POST /emails/send
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +SendEmailRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    to:
 +      type: string
 +
 +    templateCode:
 +      type: string
 +
 +    variables:
 +      type: object
 +</code>
 +
 +----
 +
 +====== SMS ======
 +
 +===== Sms =====
 +
 +<code yaml>
 +Sms:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    phoneNumber:
 +      type: string
 +
 +    message:
 +      type: string
 +
 +    status:
 +      $ref: '#/components/schemas/SmsStatus'
 +
 +    sentAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== SmsStatus =====
 +
 +<code yaml>
 +SmsStatus:
 +
 +  type: string
 +
 +  enum:
 +
 +    - QUEUED
 +
 +    - SENT
 +
 +    - DELIVERED
 +
 +    - FAILED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /sms
 +
 +GET /sms/{id}
 +
 +POST /sms/send
 +
 +POST /sms/test
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /templates
 +
 +POST   /templates
 +
 +GET    /templates/{id}
 +
 +PATCH  /templates/{id}
 +
 +DELETE /templates/{id}
 +</code>
 +
 +----
 +
 +===== Types =====
 +
 +<code>
 +EMAIL
 +
 +SMS
 +
 +PUSH
 +
 +IN_APP
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +RESERVATION_CONFIRMED
 +
 +PAYMENT_RECEIVED
 +
 +CONTRACT_SIGNED
 +
 +CHECKIN_REMINDER
 +
 +OWNER_MONTHLY_REPORT
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /campaigns
 +
 +POST   /campaigns
 +
 +GET    /campaigns/{id}
 +
 +PATCH  /campaigns/{id}
 +
 +DELETE /campaigns/{id}
 +</code>
 +
 +----
 +
 +===== Destinataires =====
 +
 +<code>
 +GET  /campaigns/{id}/recipients
 +
 +POST /campaigns/{id}/recipients
 +</code>
 +
 +----
 +
 +===== Exécution =====
 +
 +<code>
 +POST /campaigns/{id}/schedule
 +
 +POST /campaigns/{id}/start
 +
 +POST /campaigns/{id}/pause
 +
 +POST /campaigns/{id}/cancel
 +</code>
 +
 +----
 +
 +====== Statistiques Campagnes ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /campaigns/{id}/statistics
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +CampaignStatistics:
 +
 +  type: object
 +
 +  properties:
 +
 +    recipients:
 +      type: integer
 +
 +    sent:
 +      type: integer
 +
 +    opened:
 +      type: integer
 +
 +    clicked:
 +      type: integer
 +
 +    unsubscribed:
 +      type: integer
 +</code>
 +
 +----
 +
 +====== Inbox Unifiée ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /communication/inbox
 +</code>
 +
 +----
 +
 +===== Agrège =====
 +
 +<code>
 +Messages
 +
 +Emails
 +
 +SMS
 +
 +Notifications
 +</code>
 +
 +----
 +
 +====== Communication Dashboard ======
 +
 +===== KPI =====
 +
 +<code>
 +Messages envoyés
 +
 +Emails délivrés
 +
 +Taux ouverture
 +
 +Taux clic
 +
 +SMS délivrés
 +
 +Notifications lues
 +</code>
 +
 +----
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /communication/dashboard
 +</code>
 +
 +----
 +
 +====== Intégrations ======
 +
 +===== Email =====
 +
 +<code>
 +SMTP
 +
 +SendGrid
 +
 +Mailgun
 +
 +Amazon SES
 +</code>
 +
 +----
 +
 +===== SMS =====
 +
 +<code>
 +Twilio
 +
 +OVH SMS
 +
 +MessageBird
 +</code>
 +
 +----
 +
 +===== Push =====
 +
 +<code>
 +Firebase
 +
 +OneSignal
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Messaging =====
 +
 +<code>
 +messages.read
 +
 +messages.create
 +
 +messages.delete
 +</code>
 +
 +----
 +
 +===== Notifications =====
 +
 +<code>
 +notifications.read
 +
 +notifications.manage
 +</code>
 +
 +----
 +
 +===== Campaigns =====
 +
 +<code>
 +campaigns.read
 +
 +campaigns.create
 +
 +campaigns.execute
 +
 +campaigns.delete
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 84 endpoints
 +
 +≈ 28 schémas
 +
 +≈ 7 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.6 :
 +
 +<code>
 +≈ 341 endpoints
 +
 +≈ 123 schémas
 +
 +≈ 46 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.7 — OpenAPI Marketing, Automatisation & IA ======
 +
 +===== Objectif =====
 +
 +Construire la couche d'automatisation intelligente de la plateforme.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 13
 +
 +IA & Automatisation
 +</code>
 +
 +Elle permet :
 +
 +<code>
 +Segmentation
 +
 +Marketing Automation
 +
 +Scénarios métiers
 +
 +Déclencheurs
 +
 +Recommandations IA
 +
 +Assistant IA
 +
 +Knowledge Base
 +
 +Recherche sémantique
 +</code>
 +
 +----
 +
 +====== Tags OpenAPI ======
 +
 +<code yaml>
 +tags:
 +
 +  - name: MarketingSegments
 +
 +  - name: MarketingEvents
 +
 +  - name: AutomationRules
 +
 +  - name: AutomationScenarios
 +
 +  - name: AutomationExecutions
 +
 +  - name: Recommendations
 +
 +  - name: AI
 +
 +  - name: KnowledgeBase
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /marketing-segments
 +
 +POST   /marketing-segments
 +
 +GET    /marketing-segments/{id}
 +
 +PATCH  /marketing-segments/{id}
 +
 +DELETE /marketing-segments/{id}
 +</code>
 +
 +----
 +
 +===== Aperçu =====
 +
 +<code>
 +POST /marketing-segments/{id}/preview
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +SegmentPreview:
 +
 +  type: object
 +
 +  properties:
 +
 +    customerCount:
 +      type: integer
 +
 +    leadCount:
 +      type: integer
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /marketing-events
 +
 +GET /marketing-events/{id}
 +</code>
 +
 +----
 +
 +===== Filtres =====
 +
 +<code>
 +eventType
 +
 +customerId
 +
 +from
 +
 +to
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +EMAIL_OPEN
 +
 +EMAIL_CLICK
 +
 +PAGE_VISIT
 +
 +FORM_SUBMIT
 +
 +RESERVATION_CREATED
 +
 +PAYMENT_COMPLETED
 +</code>
 +
 +----
 +
 +====== Automation Rules ======
 +
 +===== AutomationRule =====
 +
 +<code yaml>
 +AutomationRule:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    triggerEvent:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /automation-rules
 +
 +POST   /automation-rules
 +
 +GET    /automation-rules/{id}
 +
 +PATCH  /automation-rules/{id}
 +
 +DELETE /automation-rules/{id}
 +</code>
 +
 +----
 +
 +===== Activer =====
 +
 +<code>
 +POST /automation-rules/{id}/enable
 +</code>
 +
 +----
 +
 +===== Désactiver =====
 +
 +<code>
 +POST /automation-rules/{id}/disable
 +</code>
 +
 +----
 +
 +====== Automation Scenarios ======
 +
 +===== AutomationScenario =====
 +
 +<code yaml>
 +AutomationScenario:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    triggerType:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /automation-scenarios
 +
 +POST   /automation-scenarios
 +
 +GET    /automation-scenarios/{id}
 +
 +PATCH  /automation-scenarios/{id}
 +
 +DELETE /automation-scenarios/{id}
 +</code>
 +
 +----
 +
 +===== Simuler =====
 +
 +<code>
 +POST /automation-scenarios/{id}/simulate
 +</code>
 +
 +----
 +
 +===== Exécuter =====
 +
 +<code>
 +POST /automation-scenarios/{id}/execute
 +</code>
 +
 +----
 +
 +===== Exemple =====
 +
 +<code>
 +ReservationConfirmed
 +
 +
 +
 +GenerateContract
 +
 +
 +
 +SendEmail
 +
 +
 +
 +CreateTask
 +
 +
 +
 +NotifyOwner
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /automation-executions
 +
 +GET /automation-executions/{id}
 +</code>
 +
 +----
 +
 +===== Relancer =====
 +
 +<code>
 +POST /automation-executions/{id}/retry
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /recommendations
 +
 +GET /recommendations/{id}
 +</code>
 +
 +----
 +
 +===== Accepter =====
 +
 +<code>
 +POST /recommendations/{id}/accept
 +</code>
 +
 +----
 +
 +===== Rejeter =====
 +
 +<code>
 +POST /recommendations/{id}/reject
 +</code>
 +
 +----
 +
 +===== Types =====
 +
 +<code>
 +PRICE_OPTIMIZATION
 +
 +CUSTOMER_RETENTION
 +
 +LEAD_CONVERSION
 +
 +REVENUE_FORECAST
 +
 +PROPERTY_IMPROVEMENT
 +
 +RISK_ALERT
 +</code>
 +
 +----
 +
 +====== AI Assistant ======
 +
 +===== Conversation =====
 +
 +<code yaml>
 +AiConversation:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    title:
 +      type: string
 +
 +    model:
 +      type: string
 +
 +    createdAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /ai/conversations
 +
 +POST   /ai/conversations
 +
 +GET    /ai/conversations/{id}
 +
 +DELETE /ai/conversations/{id}
 +</code>
 +
 +----
 +
 +====== Messages IA ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET  /ai/conversations/{id}/messages
 +
 +POST /ai/conversations/{id}/messages
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +AiMessageRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    content:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Response =====
 +
 +<code yaml>
 +AiMessageResponse:
 +
 +  type: object
 +
 +  properties:
 +
 +    content:
 +      type: string
 +
 +    sources:
 +      type: array
 +</code>
 +
 +----
 +
 +===== Cas d'usage =====
 +
 +<code>
 +Quels sont les biens
 +les moins rentables ?
 +
 +----------------
 +
 +Quels clients
 +présentent un risque ?
 +
 +----------------
 +
 +Prévois les revenus
 +des 90 prochains jours
 +</code>
 +
 +----
 +
 +====== Knowledge Base ======
 +
 +===== KnowledgeDocument =====
 +
 +<code yaml>
 +KnowledgeDocument:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    title:
 +      type: string
 +
 +    sourceType:
 +      type: string
 +
 +    indexed:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /knowledge/documents
 +
 +POST   /knowledge/documents
 +
 +GET    /knowledge/documents/{id}
 +
 +DELETE /knowledge/documents/{id}
 +</code>
 +
 +----
 +
 +===== Upload =====
 +
 +<code>
 +POST /knowledge/documents/upload
 +</code>
 +
 +----
 +
 +===== Indexation =====
 +
 +<code>
 +POST /knowledge/documents/{id}/index
 +</code>
 +
 +----
 +
 +===== Recherche Sémantique =====
 +
 +<code>
 +POST /knowledge/search
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +KnowledgeSearchRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    query:
 +      type: string
 +
 +    limit:
 +      type: integer
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +KnowledgeSearchResponse:
 +
 +  type: object
 +
 +  properties:
 +
 +    documents:
 +      type: array
 +
 +    chunks:
 +      type: array
 +</code>
 +
 +----
 +
 +====== Dashboard IA ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /ai/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Conversations
 +
 +Documents indexés
 +
 +Automatisations exécutées
 +
 +Recommandations générées
 +
 +Taux acceptation
 +
 +Temps gagné
 +</code>
 +
 +----
 +
 +====== Événements ======
 +
 +===== Marketing =====
 +
 +<code>
 +lead.created
 +
 +lead.converted
 +
 +campaign.started
 +
 +campaign.completed
 +</code>
 +
 +----
 +
 +===== IA =====
 +
 +<code>
 +recommendation.created
 +
 +assistant.question
 +
 +assistant.answer
 +</code>
 +
 +----
 +
 +===== Automation =====
 +
 +<code>
 +automation.started
 +
 +automation.completed
 +
 +automation.failed
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== IA =====
 +
 +<code>
 +ai.read
 +
 +ai.chat
 +
 +ai.manage
 +</code>
 +
 +----
 +
 +===== Automatisation =====
 +
 +<code>
 +automation.read
 +
 +automation.execute
 +
 +automation.manage
 +</code>
 +
 +----
 +
 +===== Knowledge Base =====
 +
 +<code>
 +knowledge.read
 +
 +knowledge.create
 +
 +knowledge.index
 +
 +knowledge.delete
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 92 endpoints
 +
 +≈ 30 schémas
 +
 +≈ 8 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.7 :
 +
 +<code>
 +≈ 433 endpoints
 +
 +≈ 153 schémas
 +
 +≈ 54 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.8 — OpenAPI Governance, Audit & Administration ======
 +
 +===== Objectif =====
 +
 +Construire la couche transverse de gouvernance, administration et conformité.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 10
 +
 +Reporting
 +
 +Sprint 11
 +
 +Administration
 +
 +Sprint 19
 +
 +Gouvernance & Conformité
 +</code>
 +
 +Elle permet :
 +
 +<code>
 +Audit complet
 +
 +Historisation
 +
 +Feature Flags
 +
 +Workflows
 +
 +Administration
 +
 +Paramétrage plateforme
 +
 +Conformité
 +
 +Supervision
 +</code>
 +
 +----
 +
 +====== Tags OpenAPI ======
 +
 +<code yaml>
 +tags:
 +
 +  - name: AuditLogs
 +
 +  - name: EntityHistory
 +
 +  - name: FeatureFlags
 +
 +  - name: Workflows
 +
 +  - name: WorkflowInstances
 +
 +  - name: WorkflowExecutions
 +
 +  - name: Administration
 +
 +  - name: SystemSettings
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /audit-logs
 +
 +GET /audit-logs/{id}
 +</code>
 +
 +----
 +
 +===== Recherche =====
 +
 +<code>
 +GET /audit-logs
 +
 +?entityType=Reservation
 +
 +?entityId=xxx
 +
 +?userId=xxx
 +
 +?action=UPDATE
 +
 +?from=2026-01-01
 +
 +?to=2026-01-31
 +</code>
 +
 +----
 +
 +===== Export =====
 +
 +<code>
 +GET /audit-logs/export
 +</code>
 +
 +----
 +
 +===== Formats =====
 +
 +<code>
 +CSV
 +
 +XLSX
 +
 +JSON
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /entity-history
 +
 +GET /entity-history/{id}
 +</code>
 +
 +----
 +
 +===== Historique d'une entité =====
 +
 +<code>
 +GET /entity-history/{entityType}/{entityId}
 +</code>
 +
 +----
 +
 +===== Restauration =====
 +
 +<code>
 +POST /entity-history/{id}/restore
 +</code>
 +
 +----
 +
 +====== Feature Flags ======
 +
 +===== FeatureFlag =====
 +
 +<code yaml>
 +FeatureFlag:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    enabled:
 +      type: boolean
 +
 +    configuration:
 +      type: object
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /feature-flags
 +
 +POST   /feature-flags
 +
 +GET    /feature-flags/{id}
 +
 +PATCH  /feature-flags/{id}
 +
 +DELETE /feature-flags/{id}
 +</code>
 +
 +----
 +
 +===== Activation =====
 +
 +<code>
 +POST /feature-flags/{id}/enable
 +
 +POST /feature-flags/{id}/disable
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +AI_ASSISTANT
 +
 +ADVANCED_REPORTING
 +
 +OTA_V2
 +
 +REVENUE_MANAGEMENT
 +
 +OWNER_PORTAL_V2
 +</code>
 +
 +----
 +
 +====== Workflows ======
 +
 +===== Workflow =====
 +
 +<code yaml>
 +Workflow:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    entityType:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /workflows
 +
 +POST   /workflows
 +
 +GET    /workflows/{id}
 +
 +PATCH  /workflows/{id}
 +
 +DELETE /workflows/{id}
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /workflows/{id}/steps
 +
 +POST   /workflows/{id}/steps
 +
 +PATCH  /workflow-steps/{id}
 +
 +DELETE /workflow-steps/{id}
 +</code>
 +
 +----
 +
 +===== Exemple =====
 +
 +<code>
 +Reservation Approval
 +
 +
 +
 +Manager Approval
 +
 +
 +
 +Contract Generation
 +
 +
 +
 +Payment Validation
 +
 +
 +
 +Completed
 +</code>
 +
 +----
 +
 +====== Workflow Instances ======
 +
 +===== WorkflowInstance =====
 +
 +<code yaml>
 +WorkflowInstance:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    workflowId:
 +      type: string
 +
 +    entityType:
 +      type: string
 +
 +    entityId:
 +      type: string
 +
 +    status:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /workflow-instances
 +
 +GET /workflow-instances/{id}
 +</code>
 +
 +----
 +
 +===== Démarrer =====
 +
 +<code>
 +POST /workflow-instances/start
 +</code>
 +
 +----
 +
 +===== Approuver =====
 +
 +<code>
 +POST /workflow-instances/{id}/approve
 +</code>
 +
 +----
 +
 +===== Rejeter =====
 +
 +<code>
 +POST /workflow-instances/{id}/reject
 +</code>
 +
 +----
 +
 +===== Annuler =====
 +
 +<code>
 +POST /workflow-instances/{id}/cancel
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /workflow-executions
 +
 +GET /workflow-executions/{id}
 +</code>
 +
 +----
 +
 +====== Administration ======
 +
 +===== Tenant Administration =====
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /admin/tenants
 +
 +POST /admin/tenants
 +
 +GET /admin/tenants/{id}
 +
 +PATCH /admin/tenants/{id}
 +</code>
 +
 +----
 +
 +===== Activation =====
 +
 +<code>
 +POST /admin/tenants/{id}/activate
 +
 +POST /admin/tenants/{id}/suspend
 +</code>
 +
 +----
 +
 +====== Agences ======
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /admin/agencies
 +
 +POST   /admin/agencies
 +
 +GET    /admin/agencies/{id}
 +
 +PATCH  /admin/agencies/{id}
 +
 +DELETE /admin/agencies/{id}
 +</code>
 +
 +----
 +
 +====== Paramètres Système ======
 +
 +===== SystemSetting =====
 +
 +<code yaml>
 +SystemSetting:
 +
 +  type: object
 +
 +  properties:
 +
 +    code:
 +      type: string
 +
 +    value:
 +      type: string
 +
 +    category:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /system-settings
 +
 +GET /system-settings/{code}
 +
 +PUT /system-settings/{code}
 +</code>
 +
 +----
 +
 +===== Catégories =====
 +
 +<code>
 +SECURITY
 +
 +PAYMENTS
 +
 +EMAIL
 +
 +SMS
 +
 +OTA
 +
 +BOOKING
 +
 +INVOICING
 +</code>
 +
 +----
 +
 +====== Gestion des Jobs ======
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /admin/jobs
 +
 +GET /admin/jobs/{id}
 +
 +POST /admin/jobs/{id}/retry
 +
 +POST /admin/jobs/{id}/cancel
 +</code>
 +
 +----
 +
 +====== Santé de la plateforme ======
 +
 +===== Health Check =====
 +
 +<code>
 +GET /admin/health
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +HealthResponse:
 +
 +  type: object
 +
 +  properties:
 +
 +    database:
 +      type: string
 +
 +    redis:
 +      type: string
 +
 +    storage:
 +      type: string
 +
 +    queue:
 +      type: string
 +
 +    status:
 +      type: string
 +</code>
 +
 +----
 +
 +====== Monitoring ======
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /admin/metrics
 +
 +GET /admin/version
 +
 +GET /admin/build
 +</code>
 +
 +----
 +
 +====== Reporting ======
 +
 +===== Dashboard Gouvernance =====
 +
 +<code>
 +GET /governance/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Audit Logs
 +
 +Feature Flags
 +
 +Workflows actifs
 +
 +Incidents sécurité
 +
 +Conformité
 +
 +Risques ouverts
 +</code>
 +
 +----
 +
 +====== Conformité ======
 +
 +===== Export RGPD =====
 +
 +<code>
 +POST /governance/privacy/export
 +</code>
 +
 +----
 +
 +===== Effacement =====
 +
 +<code>
 +POST /governance/privacy/delete
 +</code>
 +
 +----
 +
 +===== Consentements =====
 +
 +<code>
 +GET /governance/consents
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Audit =====
 +
 +<code>
 +audit.read
 +
 +audit.export
 +</code>
 +
 +----
 +
 +===== Administration =====
 +
 +<code>
 +admin.read
 +
 +admin.manage
 +
 +admin.settings
 +</code>
 +
 +----
 +
 +===== Workflows =====
 +
 +<code>
 +workflow.read
 +
 +workflow.manage
 +
 +workflow.execute
 +</code>
 +
 +----
 +
 +===== Gouvernance =====
 +
 +<code>
 +governance.read
 +
 +governance.manage
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 86 endpoints
 +
 +≈ 26 schémas
 +
 +≈ 8 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.8 :
 +
 +<code>
 +≈ 519 endpoints
 +
 +≈ 179 schémas
 +
 +≈ 62 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.9 — OpenAPI OTA, Distribution & Channel Manager ======
 +
 +===== Objectif =====
 +
 +Construire la couche de distribution multicanal de la plateforme.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 12
 +
 +OTA & Distribution
 +
 +Sprint 14
 +
 +API & Partenaires
 +
 +Sprint 18
 +
 +Channel Manager Enterprise
 +</code>
 +
 +Cette couche permet :
 +
 +<code>
 +Publication OTA
 +
 +Synchronisation calendriers
 +
 +Synchronisation tarifs
 +
 +Synchronisation réservations
 +
 +Gestion erreurs OTA
 +
 +Connecteurs partenaires
 +</code>
 +
 +----
 +
 +====== Tags OpenAPI ======
 +
 +<code yaml>
 +tags:
 +
 +  - name: Channels
 +
 +  - name: ChannelConnections
 +
 +  - name: PropertyDistribution
 +
 +  - name: ChannelReservations
 +
 +  - name: Synchronization
 +
 +  - name: SyncErrors
 +
 +  - name: Partners
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /channels
 +
 +GET /channels/{id}
 +</code>
 +
 +----
 +
 +===== Canaux supportés =====
 +
 +<code>
 +AIRBNB
 +
 +BOOKING
 +
 +VRBO
 +
 +ABRITEL
 +
 +EXPEDIA
 +
 +DIRECT
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /channel-connections
 +
 +POST   /channel-connections
 +
 +GET    /channel-connections/{id}
 +
 +PATCH  /channel-connections/{id}
 +
 +DELETE /channel-connections/{id}
 +</code>
 +
 +----
 +
 +===== Tester la connexion =====
 +
 +<code>
 +POST /channel-connections/{id}/test
 +</code>
 +
 +----
 +
 +===== Activer =====
 +
 +<code>
 +POST /channel-connections/{id}/enable
 +</code>
 +
 +----
 +
 +===== Désactiver =====
 +
 +<code>
 +POST /channel-connections/{id}/disable
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /property-distributions
 +
 +POST   /property-distributions
 +
 +GET    /property-distributions/{id}
 +
 +PATCH  /property-distributions/{id}
 +
 +DELETE /property-distributions/{id}
 +</code>
 +
 +----
 +
 +===== Publication =====
 +
 +<code>
 +POST /property-distributions/{id}/publish
 +
 +POST /property-distributions/{id}/unpublish
 +</code>
 +
 +----
 +
 +===== Synchronisation =====
 +
 +<code>
 +POST /property-distributions/{id}/sync
 +</code>
 +
 +----
 +
 +====== Publication d'un bien ======
 +
 +===== Endpoint =====
 +
 +<code>
 +POST /properties/{id}/publish-to-channel
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +PublishPropertyRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    channelConnectionId:
 +      type: string
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /channel-reservations
 +
 +GET /channel-reservations/{id}
 +</code>
 +
 +----
 +
 +===== Import OTA =====
 +
 +<code>
 +POST /channel-reservations/import
 +</code>
 +
 +----
 +
 +===== Réconciliation =====
 +
 +<code>
 +POST /channel-reservations/{id}/reconcile
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /synchronizations
 +
 +GET /synchronizations/{id}
 +</code>
 +
 +----
 +
 +===== Lancer =====
 +
 +<code>
 +POST /synchronizations/start
 +</code>
 +
 +----
 +
 +===== Synchronisation complète =====
 +
 +<code>
 +POST /synchronizations/full
 +</code>
 +
 +----
 +
 +===== Synchronisation calendrier =====
 +
 +<code>
 +POST /synchronizations/calendar
 +</code>
 +
 +----
 +
 +===== Synchronisation tarifs =====
 +
 +<code>
 +POST /synchronizations/rates
 +</code>
 +
 +----
 +
 +===== Synchronisation réservations =====
 +
 +<code>
 +POST /synchronizations/reservations
 +</code>
 +
 +----
 +
 +====== Types ======
 +
 +<code>
 +PROPERTY_EXPORT
 +
 +AVAILABILITY_EXPORT
 +
 +RATE_EXPORT
 +
 +RESERVATION_IMPORT
 +
 +FULL_SYNC
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /sync-errors
 +
 +GET /sync-errors/{id}
 +</code>
 +
 +----
 +
 +===== Relancer =====
 +
 +<code>
 +POST /sync-errors/{id}/retry
 +</code>
 +
 +----
 +
 +===== Ignorer =====
 +
 +<code>
 +POST /sync-errors/{id}/ignore
 +</code>
 +
 +----
 +
 +====== Calendrier OTA ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /channels/{channelId}/calendar
 +</code>
 +
 +----
 +
 +===== Paramètres =====
 +
 +<code>
 +propertyId
 +
 +from
 +
 +to
 +</code>
 +
 +----
 +
 +====== Tarifs OTA ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /channels/{channelId}/rates
 +</code>
 +
 +----
 +
 +===== Mise à jour =====
 +
 +<code>
 +POST /channels/{channelId}/rates/push
 +</code>
 +
 +----
 +
 +====== Dashboard OTA ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /ota/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Biens publiés
 +
 +OTA connectés
 +
 +Synchronisations
 +
 +Erreurs OTA
 +
 +Réservations importées
 +
 +Temps moyen synchronisation
 +</code>
 +
 +----
 +
 +====== Partenaires ======
 +
 +===== Partner =====
 +
 +<code yaml>
 +Partner:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /partners
 +
 +POST   /partners
 +
 +GET    /partners/{id}
 +
 +PATCH  /partners/{id}
 +
 +DELETE /partners/{id}
 +</code>
 +
 +----
 +
 +===== API Keys =====
 +
 +<code>
 +GET    /partners/{id}/api-keys
 +
 +POST   /partners/{id}/api-keys
 +
 +DELETE /partners/{id}/api-keys/{keyId}
 +</code>
 +
 +----
 +
 +===== Webhooks =====
 +
 +<code>
 +GET    /partners/{id}/webhooks
 +
 +POST   /partners/{id}/webhooks
 +
 +PATCH  /partners/{id}/webhooks/{webhookId}
 +
 +DELETE /partners/{id}/webhooks/{webhookId}
 +</code>
 +
 +----
 +
 +====== Marketplace ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /marketplace/connectors
 +</code>
 +
 +----
 +
 +===== Connecteurs =====
 +
 +<code>
 +Airbnb
 +
 +Booking
 +
 +Stripe
 +
 +Twilio
 +
 +Mailgun
 +
 +DocuSign
 +
 +Zapier
 +</code>
 +
 +----
 +
 +====== Webhooks OTA ======
 +
 +===== Réservations =====
 +
 +<code>
 +POST /webhooks/ota/reservation-created
 +
 +POST /webhooks/ota/reservation-updated
 +
 +POST /webhooks/ota/reservation-cancelled
 +</code>
 +
 +----
 +
 +===== Calendrier =====
 +
 +<code>
 +POST /webhooks/ota/calendar-updated
 +</code>
 +
 +----
 +
 +===== Tarifs =====
 +
 +<code>
 +POST /webhooks/ota/rate-updated
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== OTA =====
 +
 +<code>
 +ota.read
 +
 +ota.manage
 +
 +ota.sync
 +
 +ota.publish
 +</code>
 +
 +----
 +
 +===== Partenaires =====
 +
 +<code>
 +partners.read
 +
 +partners.manage
 +
 +partners.api
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 76 endpoints
 +
 +≈ 24 schémas
 +
 +≈ 7 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.9 :
 +
 +<code>
 +≈ 595 endpoints
 +
 +≈ 203 schémas
 +
 +≈ 69 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.10 — OpenAPI Revenue Management & Business Intelligence ======
 +
 +===== Objectif =====
 +
 +Construire la couche décisionnelle avancée de la plateforme.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 10
 +
 +Reporting & Business Intelligence
 +
 +Sprint 13
 +
 +Prévisions IA
 +
 +Sprint 17
 +
 +Revenue Management
 +
 +Sprint 20
 +
 +Enterprise Analytics
 +</code>
 +
 +Elle permet :
 +
 +<code>
 +Tarification dynamique
 +
 +Yield Management
 +
 +Prévisions
 +
 +Simulations
 +
 +Benchmark concurrence
 +
 +KPI avancés
 +
 +Pilotage financier
 +</code>
 +
 +----
 +
 +====== Tags OpenAPI ======
 +
 +<code yaml>
 +tags:
 +
 +  - name: PricingRules
 +
 +  - name: DynamicPrices
 +
 +  - name: RevenueForecasts
 +
 +  - name: RevenueSimulations
 +
 +  - name: CompetitorSnapshots
 +
 +  - name: MarketDemand
 +
 +  - name: Dashboards
 +
 +  - name: Analytics
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /pricing-rules
 +
 +POST   /pricing-rules
 +
 +GET    /pricing-rules/{id}
 +
 +PATCH  /pricing-rules/{id}
 +
 +DELETE /pricing-rules/{id}
 +</code>
 +
 +----
 +
 +===== Activation =====
 +
 +<code>
 +POST /pricing-rules/{id}/enable
 +
 +POST /pricing-rules/{id}/disable
 +</code>
 +
 +----
 +
 +===== Simulation =====
 +
 +<code>
 +POST /pricing-rules/{id}/simulate
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +Occupation > 80%
 +
 +
 +
 ++15%
 +
 +----------------
 +
 +Weekend
 +
 +
 +
 ++10%
 +
 +----------------
 +
 +Haute saison
 +
 +
 +
 ++25%
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /dynamic-prices
 +
 +GET /dynamic-prices/{id}
 +</code>
 +
 +----
 +
 +===== Calcul =====
 +
 +<code>
 +POST /dynamic-prices/calculate
 +</code>
 +
 +----
 +
 +===== Recalcul =====
 +
 +<code>
 +POST /dynamic-prices/recalculate
 +</code>
 +
 +----
 +
 +===== Recherche =====
 +
 +<code>
 +GET /dynamic-prices
 +
 +?propertyId=xxx
 +
 +?from=2026-07-01
 +
 +?to=2026-07-31
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /revenue-forecasts
 +
 +GET /revenue-forecasts/{id}
 +</code>
 +
 +----
 +
 +===== Génération =====
 +
 +<code>
 +POST /revenue-forecasts/generate
 +</code>
 +
 +----
 +
 +===== Prévisions =====
 +
 +<code>
 +7 jours
 +
 +30 jours
 +
 +90 jours
 +
 +180 jours
 +
 +365 jours
 +</code>
 +
 +----
 +
 +====== Revenue Simulations ======
 +
 +===== RevenueSimulation =====
 +
 +<code yaml>
 +RevenueSimulation:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    projectedRevenue:
 +      type: number
 +
 +    projectedOccupancy:
 +      type: number
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /revenue-simulations
 +
 +POST   /revenue-simulations
 +
 +GET    /revenue-simulations/{id}
 +
 +DELETE /revenue-simulations/{id}
 +</code>
 +
 +----
 +
 +===== Exécuter =====
 +
 +<code>
 +POST /revenue-simulations/{id}/run
 +</code>
 +
 +----
 +
 +===== Comparer =====
 +
 +<code>
 +POST /revenue-simulations/compare
 +</code>
 +
 +----
 +
 +===== Exemple =====
 +
 +<code>
 +Prix +10%
 +
 +
 +
 +Occupation -3%
 +
 +
 +
 +CA +6%
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /competitor-snapshots
 +
 +GET /competitor-snapshots/{id}
 +
 +POST /competitor-snapshots/import
 +</code>
 +
 +----
 +
 +===== Benchmark =====
 +
 +<code>
 +GET /competitor-snapshots/benchmark
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +CompetitorBenchmark:
 +
 +  type: object
 +
 +  properties:
 +
 +    marketAverage:
 +      type: number
 +
 +    propertyAverage:
 +      type: number
 +
 +    variance:
 +      type: number
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /market-demand
 +
 +GET /market-demand/{id}
 +</code>
 +
 +----
 +
 +===== Tendances =====
 +
 +<code>
 +GET /market-demand/trends
 +</code>
 +
 +----
 +
 +===== Prévisions =====
 +
 +<code>
 +GET /market-demand/forecast
 +</code>
 +
 +----
 +
 +====== Revenue Dashboard ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /revenue/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +RevPAR
 +
 +ADR
 +
 +Occupancy Rate
 +
 +Revenue
 +
 +Forecast Accuracy
 +
 +Average Stay
 +
 +Cancellation Rate
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +RevenueDashboard:
 +
 +  type: object
 +
 +  properties:
 +
 +    revenue:
 +      type: number
 +
 +    occupancyRate:
 +      type: number
 +
 +    averageDailyRate:
 +      type: number
 +
 +    revPar:
 +      type: number
 +</code>
 +
 +----
 +
 +====== Property Analytics ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/properties/{id}
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Occupation
 +
 +Revenus
 +
 +Tarif moyen
 +
 +Réservations
 +
 +Annulations
 +</code>
 +
 +----
 +
 +====== Owner Analytics ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/owners/{id}
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Revenus
 +
 +Biens
 +
 +Occupation
 +
 +Commissions
 +
 +Paiements
 +</code>
 +
 +----
 +
 +====== Reservation Analytics ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/reservations
 +</code>
 +
 +----
 +
 +===== Filtres =====
 +
 +<code>
 +from
 +
 +to
 +
 +propertyId
 +
 +ownerId
 +</code>
 +
 +----
 +
 +====== Financial Analytics ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/financial
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Revenue
 +
 +Facturation
 +
 +Paiements
 +
 +Remboursements
 +
 +Commissions
 +</code>
 +
 +----
 +
 +====== Forecast Analytics ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/forecast
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +ForecastAnalytics:
 +
 +  type: object
 +
 +  properties:
 +
 +    next30Days:
 +      type: number
 +
 +    next90Days:
 +      type: number
 +
 +    next365Days:
 +      type: number
 +</code>
 +
 +----
 +
 +====== Exports ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /analytics/export
 +</code>
 +
 +----
 +
 +===== Formats =====
 +
 +<code>
 +CSV
 +
 +XLSX
 +
 +PDF
 +
 +JSON
 +</code>
 +
 +----
 +
 +===== Paramètres =====
 +
 +<code>
 +dashboard
 +
 +from
 +
 +to
 +
 +format
 +</code>
 +
 +----
 +
 +====== IA & Revenue Management ======
 +
 +===== Suggestions =====
 +
 +<code>
 +GET /revenue/recommendations
 +</code>
 +
 +----
 +
 +===== Types =====
 +
 +<code>
 +PRICE_INCREASE
 +
 +PRICE_DECREASE
 +
 +PROMOTION
 +
 +MINIMUM_STAY
 +
 +AVAILABILITY_OPTIMIZATION
 +</code>
 +
 +----
 +
 +===== Validation =====
 +
 +<code>
 +POST /revenue/recommendations/{id}/accept
 +
 +POST /revenue/recommendations/{id}/reject
 +</code>
 +
 +----
 +
 +====== Reporting Exécutif ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /executive/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +CA Total
 +
 +CA Prévisionnel
 +
 +Taux Occupation
 +
 +Top Biens
 +
 +Top Agences
 +
 +Top Propriétaires
 +
 +Taux Conversion
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Revenue =====
 +
 +<code>
 +revenue.read
 +
 +revenue.manage
 +
 +revenue.forecast
 +
 +revenue.simulate
 +</code>
 +
 +----
 +
 +===== Analytics =====
 +
 +<code>
 +analytics.read
 +
 +analytics.export
 +</code>
 +
 +----
 +
 +===== Reporting =====
 +
 +<code>
 +reporting.read
 +
 +reporting.executive
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 82 endpoints
 +
 +≈ 32 schémas
 +
 +≈ 8 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.10 :
 +
 +<code>
 +≈ 677 endpoints
 +
 +≈ 235 schémas
 +
 +≈ 77 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.11 — OpenAPI Security, Compliance & Enterprise ======
 +
 +===== Objectif =====
 +
 +Construire la couche Enterprise Security de la plateforme.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 19
 +
 +Gouvernance & Conformité
 +
 +Enterprise Security
 +
 +RGPD
 +
 +ISO 27001
 +
 +SOC2
 +
 +OWASP ASVS
 +</code>
 +
 +Elle permet :
 +
 +<code>
 +MFA
 +
 +SSO
 +
 +Consentements
 +
 +RGPD
 +
 +Gestion des risques
 +
 +Classification des données
 +
 +Politiques de sécurité
 +
 +Incidents
 +
 +Audits
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +====== MFA ======
 +
 +===== MfaConfiguration =====
 +
 +<code yaml>
 +MfaConfiguration:
 +
 +  type: object
 +
 +  properties:
 +
 +    enabled:
 +      type: boolean
 +
 +    method:
 +      $ref: '#/components/schemas/MfaMethod'
 +
 +    backupCodesRemaining:
 +      type: integer
 +</code>
 +
 +----
 +
 +===== MfaMethod =====
 +
 +<code yaml>
 +MfaMethod:
 +
 +  type: string
 +
 +  enum:
 +
 +    - TOTP
 +
 +    - EMAIL
 +
 +    - SMS
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET  /security/mfa
 +
 +POST /security/mfa/enable
 +
 +POST /security/mfa/verify
 +
 +POST /security/mfa/disable
 +
 +POST /security/mfa/regenerate-backup-codes
 +</code>
 +
 +----
 +
 +===== QR Code =====
 +
 +<code>
 +GET /security/mfa/qrcode
 +</code>
 +
 +----
 +
 +====== Identity & SSO ======
 +
 +===== IdentityProvider =====
 +
 +<code yaml>
 +IdentityProvider:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    providerType:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    enabled:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Types =====
 +
 +<code>
 +SAML
 +
 +OIDC
 +
 +AZURE_AD
 +
 +OKTA
 +
 +AUTH0
 +
 +KEYCLOAK
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /identity/providers
 +
 +POST   /identity/providers
 +
 +GET    /identity/providers/{id}
 +
 +PATCH  /identity/providers/{id}
 +
 +DELETE /identity/providers/{id}
 +</code>
 +
 +----
 +
 +===== SAML =====
 +
 +<code>
 +POST /identity/saml/configuration
 +
 +POST /identity/saml/test
 +</code>
 +
 +----
 +
 +===== OIDC =====
 +
 +<code>
 +POST /identity/oidc/configuration
 +
 +POST /identity/oidc/test
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /sessions
 +
 +GET /sessions/{id}
 +
 +DELETE /sessions/{id}
 +
 +DELETE /sessions/revoke-all
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Consent Types =====
 +
 +<code>
 +GDPR
 +
 +COOKIES
 +
 +EMAIL_MARKETING
 +
 +SMS_MARKETING
 +
 +PROFILING
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /consents
 +
 +POST   /consents
 +
 +GET    /consents/{id}
 +
 +DELETE /consents/{id}
 +</code>
 +
 +----
 +
 +===== Historique =====
 +
 +<code>
 +GET /users/{id}/consents
 +</code>
 +
 +----
 +
 +====== Privacy ======
 +
 +===== Export RGPD =====
 +
 +<code>
 +POST /privacy/export
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +PrivacyExportRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    format:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Formats =====
 +
 +<code>
 +ZIP
 +
 +JSON
 +
 +PDF
 +</code>
 +
 +----
 +
 +===== Droit à l'effacement =====
 +
 +<code>
 +POST /privacy/erase
 +</code>
 +
 +----
 +
 +===== Droit à la rectification =====
 +
 +<code>
 +POST /privacy/rectify
 +</code>
 +
 +----
 +
 +===== Droit à la limitation =====
 +
 +<code>
 +POST /privacy/restrict-processing
 +</code>
 +
 +----
 +
 +===== Registre traitements =====
 +
 +<code>
 +GET /privacy/processing-register
 +</code>
 +
 +----
 +
 +====== 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: '#/components/schemas/RiskLevel'
 +</code>
 +
 +----
 +
 +===== RiskLevel =====
 +
 +<code yaml>
 +RiskLevel:
 +
 +  type: string
 +
 +  enum:
 +
 +    - LOW
 +
 +    - MEDIUM
 +
 +    - HIGH
 +
 +    - CRITICAL
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /risk-management/risks
 +
 +POST   /risk-management/risks
 +
 +GET    /risk-management/risks/{id}
 +
 +PATCH  /risk-management/risks/{id}
 +
 +DELETE /risk-management/risks/{id}
 +</code>
 +
 +----
 +
 +===== Évaluation =====
 +
 +<code>
 +POST /risk-management/risks/{id}/evaluate
 +</code>
 +
 +----
 +
 +===== Traitement =====
 +
 +<code>
 +POST /risk-management/risks/{id}/mitigate
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /security-incidents
 +
 +POST   /security-incidents
 +
 +GET    /security-incidents/{id}
 +
 +PATCH  /security-incidents/{id}
 +</code>
 +
 +----
 +
 +===== Workflow =====
 +
 +<code>
 +Detected
 +
 +
 +
 +Qualified
 +
 +
 +
 +Investigating
 +
 +
 +
 +Resolved
 +
 +
 +
 +Closed
 +</code>
 +
 +----
 +
 +===== Détection =====
 +
 +<code>
 +POST /security-incidents/detect
 +</code>
 +
 +----
 +
 +====== Compliance Audits ======
 +
 +===== ComplianceAudit =====
 +
 +<code yaml>
 +ComplianceAudit:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    auditType:
 +      type: string
 +
 +    status:
 +      type: string
 +
 +    executedAt:
 +      type: string
 +      format: date-time
 +</code>
 +
 +----
 +
 +===== Types =====
 +
 +<code>
 +GDPR
 +
 +ISO27001
 +
 +SOC2
 +
 +NIS2
 +
 +OWASP
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /compliance-audits
 +
 +POST   /compliance-audits
 +
 +GET    /compliance-audits/{id}
 +
 +PATCH  /compliance-audits/{id}
 +</code>
 +
 +----
 +
 +===== Rapport =====
 +
 +<code>
 +GET /compliance-audits/{id}/report
 +</code>
 +
 +----
 +
 +====== Data Classification ======
 +
 +===== DataClassification =====
 +
 +<code yaml>
 +DataClassification:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    entityType:
 +      type: string
 +
 +    classification:
 +      $ref: '#/components/schemas/DataSensitivity'
 +</code>
 +
 +----
 +
 +===== DataSensitivity =====
 +
 +<code yaml>
 +DataSensitivity:
 +
 +  type: string
 +
 +  enum:
 +
 +    - PUBLIC
 +
 +    - INTERNAL
 +
 +    - CONFIDENTIAL
 +
 +    - RESTRICTED
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /data-classification
 +
 +POST   /data-classification
 +
 +PATCH  /data-classification/{id}
 +</code>
 +
 +----
 +
 +====== Retention Policies ======
 +
 +===== RetentionPolicy =====
 +
 +<code yaml>
 +RetentionPolicy:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    entityType:
 +      type: string
 +
 +    retentionPeriodDays:
 +      type: integer
 +
 +    archiveEnabled:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /retention-policies
 +
 +POST   /retention-policies
 +
 +PATCH  /retention-policies/{id}
 +
 +DELETE /retention-policies/{id}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +AuditLogs      3650 jours
 +
 +Contracts      3650 jours
 +
 +Consents       1825 jours
 +
 +Sessions        365 jours
 +
 +Notifications    90 jours
 +</code>
 +
 +----
 +
 +====== Security Policies ======
 +
 +===== SecurityPolicy =====
 +
 +<code yaml>
 +SecurityPolicy:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    configuration:
 +      type: object
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /security/policies
 +
 +PUT /security/policies
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +Password Policy
 +
 +Session Duration
 +
 +MFA Required
 +
 +Allowed Countries
 +
 +API Rate Limits
 +</code>
 +
 +----
 +
 +====== Security Dashboard ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /security/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +MFA Enabled Users
 +
 +Active Sessions
 +
 +Open Risks
 +
 +Security Incidents
 +
 +Compliance Score
 +
 +Audit Success Rate
 +</code>
 +
 +----
 +
 +====== Enterprise Monitoring ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /security/monitoring
 +</code>
 +
 +----
 +
 +===== Détections =====
 +
 +<code>
 +Impossible Travel
 +
 +Privilege Escalation
 +
 +Mass Export
 +
 +Brute Force
 +
 +Suspicious Login
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Security =====
 +
 +<code>
 +security.read
 +
 +security.manage
 +
 +security.audit
 +</code>
 +
 +----
 +
 +===== Compliance =====
 +
 +<code>
 +compliance.read
 +
 +compliance.manage
 +
 +compliance.audit
 +</code>
 +
 +----
 +
 +===== Privacy =====
 +
 +<code>
 +privacy.read
 +
 +privacy.export
 +
 +privacy.erase
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 94 endpoints
 +
 +≈ 35 schémas
 +
 +≈ 11 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul OpenAPI ======
 +
 +Après Phase 3-A.11 :
 +
 +<code>
 +≈ 771 endpoints
 +
 +≈ 270 schémas
 +
 +≈ 88 tags
 +</code>
 +
 +----
 +
 +====== Phase 3-A.12 — OpenAPI Internationalisation, Multi-sites & Enterprise Release ======
 +
 +===== Objectif =====
 +
 +Finaliser le contrat API Enterprise 4.0.
 +
 +Cette phase couvre :
 +
 +<code>
 +Sprint 15
 +
 +Multi-sites & Réseau
 +
 +Sprint 20
 +
 +Internationalisation
 +
 +Release Enterprise 4.0
 +</code>
 +
 +Elle permet :
 +
 +<code>
 +Multi-langues
 +
 +Multi-devises
 +
 +Multi-fuseaux horaires
 +
 +Multi-régions
 +
 +Multi-sites
 +
 +Marque blanche
 +
 +Réseaux d'agences
 +
 +Licences Enterprise
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /countries
 +
 +GET /countries/{id}
 +</code>
 +
 +----
 +
 +====== Currencies ======
 +
 +===== Currency =====
 +
 +<code yaml>
 +Currency:
 +
 +  type: object
 +
 +  properties:
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    symbol:
 +      type: string
 +
 +    decimals:
 +      type: integer
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /currencies
 +
 +GET /currencies/{code}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +EUR
 +
 +USD
 +
 +GBP
 +
 +CHF
 +
 +CAD
 +
 +AED
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /currency-rates
 +
 +POST /currency-rates/synchronize
 +</code>
 +
 +----
 +
 +===== Conversion =====
 +
 +<code>
 +POST /currencies/convert
 +</code>
 +
 +----
 +
 +===== Request =====
 +
 +<code yaml>
 +CurrencyConversionRequest:
 +
 +  type: object
 +
 +  properties:
 +
 +    amount:
 +      type: number
 +
 +    sourceCurrency:
 +      type: string
 +
 +    targetCurrency:
 +      type: string
 +</code>
 +
 +----
 +
 +====== Languages ======
 +
 +===== Language =====
 +
 +<code yaml>
 +Language:
 +
 +  type: object
 +
 +  properties:
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    locale:
 +      type: string
 +
 +    active:
 +      type: boolean
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /languages
 +
 +GET /languages/{code}
 +
 +PATCH /languages/{code}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +fr-FR
 +
 +en-US
 +
 +en-GB
 +
 +es-ES
 +
 +it-IT
 +
 +de-DE
 +
 +nl-NL
 +</code>
 +
 +----
 +
 +====== Timezones ======
 +
 +===== Timezone =====
 +
 +<code yaml>
 +Timezone:
 +
 +  type: object
 +
 +  properties:
 +
 +    code:
 +      type: string
 +
 +    offset:
 +      type: string
 +
 +    label:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /timezones
 +
 +GET /timezones/{code}
 +</code>
 +
 +----
 +
 +====== Translations ======
 +
 +===== Translation =====
 +
 +<code yaml>
 +Translation:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    locale:
 +      type: string
 +
 +    namespace:
 +      type: string
 +
 +    translationKey:
 +      type: string
 +
 +    translationValue:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /translations
 +
 +POST   /translations
 +
 +PATCH  /translations/{id}
 +
 +DELETE /translations/{id}
 +</code>
 +
 +----
 +
 +===== Import =====
 +
 +<code>
 +POST /translations/import
 +</code>
 +
 +----
 +
 +===== Export =====
 +
 +<code>
 +GET /translations/export
 +</code>
 +
 +----
 +
 +====== Regions ======
 +
 +===== Region =====
 +
 +<code yaml>
 +Region:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    code:
 +      type: string
 +
 +    name:
 +      type: string
 +
 +    defaultCurrency:
 +      type: string
 +
 +    defaultLanguage:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /regions
 +
 +POST   /regions
 +
 +GET    /regions/{id}
 +
 +PATCH  /regions/{id}
 +
 +DELETE /regions/{id}
 +</code>
 +
 +----
 +
 +===== Exemples =====
 +
 +<code>
 +EUROPE
 +
 +NORTH_AMERICA
 +
 +MIDDLE_EAST
 +
 +ASIA_PACIFIC
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /sites
 +
 +POST   /sites
 +
 +GET    /sites/{id}
 +
 +PATCH  /sites/{id}
 +
 +DELETE /sites/{id}
 +</code>
 +
 +----
 +
 +===== Domaines =====
 +
 +<code>
 +POST /sites/{id}/domains
 +
 +DELETE /sites/{id}/domains/{domainId}
 +</code>
 +
 +----
 +
 +====== White Label ======
 +
 +===== WhiteLabelConfiguration =====
 +
 +<code yaml>
 +WhiteLabelConfiguration:
 +
 +  type: object
 +
 +  properties:
 +
 +    id:
 +      type: string
 +
 +    logoUrl:
 +      type: string
 +
 +    faviconUrl:
 +      type: string
 +
 +    primaryColor:
 +      type: string
 +
 +    secondaryColor:
 +      type: string
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /white-label
 +
 +PUT /white-label
 +</code>
 +
 +----
 +
 +===== Personnalisation =====
 +
 +<code>
 +Theme
 +
 +Logo
 +
 +Emails
 +
 +Domaines
 +
 +SEO
 +</code>
 +
 +----
 +
 +====== Agency Network ======
 +
 +===== Endpoints =====
 +
 +<code>
 +GET /agency-network
 +
 +POST /agency-network/join
 +
 +POST /agency-network/share-property
 +</code>
 +
 +----
 +
 +===== Mutualisation =====
 +
 +<code>
 +Réservations inter-agences
 +
 +Catalogue mutualisé
 +
 +Reporting mutualisé
 +</code>
 +
 +----
 +
 +====== 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
 +</code>
 +
 +----
 +
 +===== Endpoints =====
 +
 +<code>
 +GET    /enterprise-licenses
 +
 +POST   /enterprise-licenses
 +
 +GET    /enterprise-licenses/{id}
 +
 +PATCH  /enterprise-licenses/{id}
 +</code>
 +
 +----
 +
 +===== Validation =====
 +
 +<code>
 +POST /enterprise-licenses/validate
 +</code>
 +
 +----
 +
 +====== Multi-Régions ======
 +
 +===== Déploiements =====
 +
 +<code>
 +GET /regions/deployments
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code>
 +EU-West
 +
 +US-East
 +
 +US-West
 +
 +Middle-East
 +
 +Asia-Pacific
 +</code>
 +
 +----
 +
 +====== Paramètres de Localisation ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /localization/settings
 +</code>
 +
 +----
 +
 +===== Réponse =====
 +
 +<code yaml>
 +LocalizationSettings:
 +
 +  type: object
 +
 +  properties:
 +
 +    defaultLanguage:
 +      type: string
 +
 +    defaultCurrency:
 +      type: string
 +
 +    defaultTimezone:
 +      type: string
 +</code>
 +
 +----
 +
 +====== Enterprise Dashboard ======
 +
 +===== Endpoint =====
 +
 +<code>
 +GET /enterprise/dashboard
 +</code>
 +
 +----
 +
 +===== KPI =====
 +
 +<code>
 +Sites actifs
 +
 +Pays actifs
 +
 +Langues actives
 +
 +Régions actives
 +
 +Licences
 +
 +Agences connectées
 +</code>
 +
 +----
 +
 +====== Permissions RBAC ======
 +
 +===== Internationalisation =====
 +
 +<code>
 +i18n.read
 +
 +i18n.manage
 +</code>
 +
 +----
 +
 +===== Multi-sites =====
 +
 +<code>
 +sites.read
 +
 +sites.manage
 +</code>
 +
 +----
 +
 +===== Enterprise =====
 +
 +<code>
 +enterprise.read
 +
 +enterprise.manage
 +
 +enterprise.license
 +</code>
 +
 +----
 +
 +====== Volume API ======
 +
 +Cette phase ajoute :
 +
 +<code>
 +≈ 88 endpoints
 +
 +≈ 28 schémas
 +
 +≈ 10 tags Swagger
 +</code>
 +
 +----
 +
 +====== Cumul Final OpenAPI ======
 +
 +Après Phase 3-A.12 :
 +
 +<code>
 +≈ 859 endpoints
 +
 +≈ 298 schémas
 +
 +≈ 98 tags Swagger
 +
 +≈ 110 domaines métier
 +
 +≈ 1 contrat API Enterprise complet
 +</code>
 +
 +----
 +
 +====== OpenAPI Enterprise 4.0 — TERMINÉ ======
 +
 +Le contrat fonctionnel couvre désormais :
 +
 +<code>
 +✓ 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
 +</code>
 +
 +----
 +
 +====== É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
 +
 +<code>
 +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
 +</code>
 +
 +À partir de ce point, on quitte la phase d'architecture pour entrer dans la phase d'industrialisation et de génération automatique du code source.
ujusum/3-codage/1-repository/3-spec-open-api.1780870111.txt.gz · Dernière modification : 2026/06/08 00:08 de admin

DokuWiki Appliance - Powered by TurnKey Linux