5.9 KiB

Documentation API - 4NK IA Front Notarial

Vue d'ensemble

L'application 4NK IA Front Notarial communique avec plusieurs APIs pour fournir une expérience complète d'analyse de documents notariaux.

API Backend Principal

Base URL

http://localhost:8000 (développement)

Modes d'API pris en charge

  • Mode simple (VITE_BACKEND_MODE=simple) : endpoints sous /api/notary/...
  • Mode complet (VITE_BACKEND_MODE=complete) : endpoints sous /api/documents/...

La variable d'environnement VITE_BACKEND_MODE pilote dynamiquement le choix des endpoints côté front.

Endpoints

Upload de document

POST /api/notary/upload   # mode simple
POST /api/documents/upload # mode complet
Content-Type: multipart/form-data

Body: FormData avec le fichier

Réponse (champs attendus et utilisés par le front) :

{
  "document_id": "doc_123456",            // ou "id"
  "mime_type": "application/pdf",         // ou "mimeType"
  "functional_type": "CNI"                // ou "functionalType" (type fonctionnel métier)
}

Le front mappe en Document:

{
  "id": "doc_123456",
  "name": "acte_vente.pdf",
  "mimeType": "application/pdf",
  "functionalType": "CNI",
  "size": 1024000,
  "uploadDate": "<date locale>",
  "status": "completed",
  "previewUrl": "blob:..."
}

Extraction de données

GET /api/notary/documents/{documentId}        # mode simple (détails document + résultats)
GET /api/documents/{documentId}/extract       # mode complet

Analyse du document

GET /api/documents/{documentId}/analyze       # mode complet

(mode simple: synthèse construite côté front à partir de /api/notary/documents/{documentId})

Données contextuelles

GET /api/documents/{documentId}/context       # mode complet

(mode simple: non disponible — fallback de démonstration)

Conseil IA

GET /api/documents/{documentId}/conseil       # mode complet

(mode simple: non disponible — fallback de démonstration)

APIs Externes

Cadastre

URL : https://api.cadastre.gouv.fr Usage : Vérification des références cadastrales et des propriétés

Géorisques

URL : https://www.georisques.gouv.fr/api Usage : Analyse des risques géologiques et environnementaux

Géofoncier

URL : https://api.geofoncier.fr Usage : Données foncières et géographiques

BODACC

URL : https://api.bodacc.fr Usage : Vérification des procédures collectives et des entreprises

Infogreffe

URL : https://api.infogreffe.fr Usage : Informations sur les entreprises et leurs dirigeants

Gestion d'erreur

Codes d'erreur HTTP

  • 200 : Succès
  • 400 : Requête malformée
  • 404 : Ressource non trouvée
  • 405 : Méthode non autorisée
  • 500 : Erreur serveur interne

Erreurs de connexion

  • ERR_NETWORK : Erreur de réseau
  • ERR_CONNECTION_REFUSED : Connexion refusée
  • ERR_TIMEOUT : Timeout de la requête

Fallback automatique

En cas d'erreur, l'application bascule automatiquement vers des données de démonstration pour maintenir l'expérience utilisateur.

Configuration

Variables d'environnement

VITE_API_URL=http://localhost:8000
VITE_BACKEND_MODE=simple
VITE_CADASTRE_API_URL=https://api.cadastre.gouv.fr
VITE_GEORISQUES_API_URL=https://www.georisques.gouv.fr/api
VITE_GEOFONCIER_API_URL=https://api.geofoncier.fr
VITE_BODACC_API_URL=https://api.bodacc.fr
VITE_INFOGREFFE_API_URL=https://api.infogreffe.fr

Configuration Axios

const apiClient = axios.create({
  baseURL: BASE_URL,
  timeout: 60000, // 60 secondes
  headers: {
    'Content-Type': 'application/json'
  }
})

Authentification

Headers requis

Authorization: Bearer {token}
Content-Type: application/json

Gestion des tokens

  • Refresh automatique : Renouvellement des tokens expirés
  • Intercepteurs : Ajout automatique des headers d'authentification
  • Logout automatique : Déconnexion en cas d'erreur 401

Rate Limiting

Limites par défaut

  • 100 requêtes/minute par utilisateur
  • 1000 requêtes/heure par utilisateur
  • Backoff exponentiel en cas de dépassement

Headers de réponse

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642248000

Monitoring et logs

Métriques collectées

  • Temps de réponse : Latence des requêtes
  • Taux d'erreur : Pourcentage d'échecs
  • Utilisation : Nombre de requêtes par endpoint

Logs

  • Requêtes : Log de toutes les requêtes API
  • Erreurs : Log détaillé des erreurs
  • Performance : Métriques de performance

Tests

Tests d'intégration

// Test d'upload de document
test('should upload document successfully', async () => {
  const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
  const result = await documentApi.upload(file)
  expect(result.id).toBeDefined()
  expect(result.status).toBe('completed')
})

Tests de fallback

// Test du mode démonstration
test('should return demo data on API error', async () => {
  // Mock de l'erreur API
  mockAxios.onPost('/api/documents/upload').reply(500)

  const file = new File(['content'], 'test.pdf', { type: 'application/pdf' })
  const result = await documentApi.upload(file)

  expect(result.id).toMatch(/^demo-/)
  expect(result.name).toBe('test.pdf')
})

Sécurité

Validation des données

  • Sanitization : Nettoyage des entrées utilisateur
  • Validation : Vérification des types et formats
  • Escape : Protection contre les injections

CORS

// Configuration CORS
const corsOptions = {
  origin: ['http://localhost:3000', 'https://app.4nkweb.com'],
  credentials: true,
  optionsSuccessStatus: 200
}

HTTPS

  • Redirection automatique : HTTP vers HTTPS en production
  • HSTS : HTTP Strict Transport Security
  • Certificats SSL : Certificats valides et à jour