# Collection Postman - API Bertel v3.0 Cette collection Postman fournit une interface complĂšte pour tester et explorer l'API Bertel v3.0. ## 📁 Fichiers inclus - `Bertel_API_v3.postman_collection.json` - Collection principale - `Bertel_API_v3.postman_environment.json` - Environnement avec variables - `README_Postman.md` - Ce guide d'utilisation ## 🚀 Installation ### 1. Importer la collection 1. Ouvrez Postman 2. Cliquez sur **Import** 3. SĂ©lectionnez le fichier `Bertel_API_v3.postman_collection.json` ### 2. Importer l'environnement 1. Dans Postman, cliquez sur **Environments** 2. Cliquez sur **Import** 3. SĂ©lectionnez le fichier `Bertel_API_v3.postman_environment.json` ### 3. Configurer l'environnement 1. SĂ©lectionnez l'environnement "Bertel API v3.0 - Environment" 2. Modifiez les variables : - `base_url` : URL de votre API (ex: `https://api.bertel.example.com`) - `apikey` : Votre clĂ© API - `authorization` : Votre token Bearer (optionnel) ## 📋 Structure de la collection ### 1. Authentication & Headers - **Test Authentication** : VĂ©rification de l'authentification ### 2. Core Endpoints - **Get Object Resource** : RĂ©cupĂ©rer une ressource spĂ©cifique - **List Object Resources (Page)** : Lister avec pagination par curseur (`p_cursor`, `p_page_size`) - **List Object Resources (Since)** : Lister depuis une date (keyset) - **List Objects with Validated Changes Since** : IDs d'objets avec modifications validĂ©es depuis une date (accĂšs `service_role`/`admin`) ### 3. Advanced Filtering - **List with Rich Filters (Page)** : Filtres avancĂ©s + pagination - **List with Rich Filters (Since)** : Filtres avancĂ©s + synchronisation ### 4. Filter Examples - **Equipment & Services Filters** : Exemples de filtres Ă©quipements - **Media Filters** : Exemples de filtres mĂ©dias - **Geolocation Filters** : Exemples de filtres gĂ©olocalisation - **Itinerary Filters** : Exemples de filtres itinĂ©raires - **Capacity & Classification Filters** : Exemples de filtres capacitĂ© ### 5. Track Data Examples - **Get Itinerary with KML Track** : RĂ©cupĂ©rer tracĂ© KML - **Get Itinerary with GPX Track** : RĂ©cupĂ©rer tracĂ© GPX ### 6. Deep Data - **Get Object with Deep Data** : RĂ©cupĂ©rer un objet avec parents, acteurs et organisations - **Search Objects with Deep Data** : Recherche avec inclusion automatique des donnĂ©es liĂ©es ### 7. Search & Discovery - **Search Objects by Label** : Recherche par labels de durabilitĂ© avec correspondances partielles - **List Objects Map View** : Vue carte allĂ©gĂ©e (payload minimal pour marqueurs) - **Search Restaurants by Cuisine** : Recherche spĂ©cialisĂ©e par types de cuisine ### 8. Media - **Get Media for Web** : MĂ©dias filtrĂ©s pour le web (exclut internes/brouillons, sĂ©lection intelligente) ### 9. Reviews & Room Types - **Get Object Reviews** : Avis avec agrĂ©gats (note moyenne, nombre total) - **Get Object Room Types** : Types de chambres avec Ă©quipements, capacitĂ©s et tarifs ### 10. Promotions - **Validate Promotion Code** : Validation de codes promotionnels avec vĂ©rification temporelle ### 11. Track & GPX Export - **Export Itinerary GPX** : Export GPX complet avec mĂ©tadonnĂ©es et waypoints - **Export Itineraries GPX Batch** : Export batch pour plusieurs itinĂ©raires - **Get Itinerary Track GeoJSON** : TracĂ© GeoJSON FeatureCollection (Leaflet, Mapbox) ### 12. Legal System - **Add Legal Record** : Ajouter un enregistrement juridique (assurance, licence, certification) - **Get Object Legal Data** : RĂ©cupĂ©rer tous les enregistrements juridiques d'un objet - **Get Object Legal Compliance** : VĂ©rifier la conformitĂ© (documents manquants, expirĂ©s) - **Get Expiring Legal Records** : Lister les enregistrements arrivant Ă  expiration - **Request Legal Document** : Marquer un document comme demandĂ© (workflow) - **Get Pending Document Requests** : Lister les demandes de documents en attente ### 13. API Publique Partenaire (`/api/public/*`) > Surface **tierce** dĂ©diĂ©e : un prestataire externe passe par cette passerelle (jamais PostgREST direct). Auth par **clĂ© partenaire** `Authorization: Bearer bk_live_
` (variable `partner_key`), base = `public_base_url`. Enveloppe `{ meta, data }`, `meta.contract_version` + header `X-Bertel-Api-Version`, fiches **publiĂ©es** uniquement. Lancer « Lister les fiches publiĂ©es » en premier (remplit `object_id`). - **Lister les fiches publiĂ©es** : `GET /api/public/objects` (curseur, `page_size`, `types`, `search`, `lang` ; **`format=`** ajoute le document pivot par fiche sous `data[i].` — synchronisation par lots, mĂȘme pagination) - **RĂ©cupĂ©rer une fiche publiĂ©e** : `GET /api/public/objects/{id}` - **Fiche + JSON-LD schema.org (I4)** : `GET /api/public/objects/{id}?format=jsonld` → bloc additif `data.jsonld` (document schema.org, `@type` selon le type d'objet ; prĂȘt pour SEO / interop) - **Fiche + DATAtourisme (I4b)** : `?format=datatourisme` → bloc additif `data.datatourisme` (JSON-LD ontologie nationale) - **Fiche + Apidae (I4b)** : `?format=apidae` → bloc additif `data.apidae` (JSON rĂ©gional Apidae) - **Fiche + Tourinsoft (I4b)** : `?format=tourinsoft` → bloc additif `data.tourinsoft` (syndication SIT) - **Fiche — toutes les langues (C-5)** : `GET /api/public/objects/{id}?lang=all` → bloc additif `data.i18n` > Les formats pivot (`jsonld`/`datatourisme`/`apidae`/`tourinsoft`) Ă©mettent un **socle cƓur** (type/classe, nom, description, adresse, gĂ©o, contacts publics, image) dans la structure et le vocabulaire de chaque standard. Valider la conformitĂ© field-Ă -field contre l'importeur cible avant une synchro de production. - **Flux tombstone (C-4)** : `GET /api/public/objects/deletions?since=
` (suppressions dĂ©finitives, pour miroir partenaire) - **Catalogues de rĂ©fĂ©rentiels (I1)** : `GET /api/public/catalog?domains=
` ## 🔧 Variables d'environnement | Variable | Description | Exemple | |----------|-------------|---------| | `base_url` | URL de base de l'API (PostgREST/RPC) | `https://api.bertel.example.com` | | `apikey` | Votre clĂ© API | `your-api-key-here` | | `authorization` | Token Bearer (optionnel) | `Bearer your-token-here` | | `public_base_url` | URL de l'app (passerelle partenaire `/api/public/*`) | `https://app.bertel.example.com` | | `partner_key` | ClĂ© partenaire Bearer pour `/api/public/*` (Ă©mise par l'OTI) | `bk_live_
` | | `object_id` | ID d'objet (auto-rempli) | Auto-gĂ©nĂ©rĂ© | | `itinerary_id` | ID d'itinĂ©raire (auto-rempli) | Auto-gĂ©nĂ©rĂ© | | `current_timestamp` | Timestamp actuel (auto-gĂ©nĂ©rĂ©) | Auto-gĂ©nĂ©rĂ© | ## đŸ§Ș Tests automatiques Chaque requĂȘte inclut des tests automatiques : - ✅ VĂ©rification du code de statut (200) - ✅ VĂ©rification du Content-Type JSON - ✅ Validation de la structure de rĂ©ponse - ✅ Sauvegarde automatique des IDs pour les requĂȘtes suivantes ## 📊 Exemples d'utilisation ### RĂ©cupĂ©rer une ressource ```json { "p_object_id": "example-id", "p_lang_prefs": ["fr", "en"], "p_track_format": "none" } ``` ### Lister avec pagination ```json { "p_cursor": null, "p_page_size": 20, "p_types": ["ITI", "HER"], "p_status": ["published"] } ``` ### Filtrer par Ă©quipements ```json { "p_cursor": null, "p_page_size": 20, "p_filters": { "amenities_any": ["PARKING", "WIFI"], "pet_accepted": true } } ``` ### Synchronisation depuis une date ```json { "p_since": "2024-04-01T00:00:00Z", "p_cursor": null, "p_limit": 50 } ``` ## 🔍 Filtres disponibles ### Équipements & Services - `amenities_any` / `amenities_all` : Équipements - `amenity_families_any` : Familles d'Ă©quipements - `pet_accepted` : Animaux acceptĂ©s - `payment_methods_any` : Moyens de paiement - `environment_tags_any` : Tags environnement - `languages_any` : Langues parlĂ©es ### MĂ©dias - `media_types_any` : Types de mĂ©dias - `media_published_only` : MĂ©dias publiĂ©s uniquement - `media_must_have_main` : Doit avoir un mĂ©dia principal ### GĂ©olocalisation - `within_radius` : Dans un rayon - `bbox` : Dans une bounding box ### ItinĂ©raires - `itinerary` : CritĂšres d'itinĂ©raire (boucle, difficultĂ©, distance, durĂ©e, pratiques) ### CapacitĂ© & Classement - `capacity_filters` : Filtres de capacitĂ© - `classifications_any` : Classifications - `tags_any` : Tags - `meeting_room` : Salle de rĂ©union ### DisponibilitĂ© - `open_now` : Ouvert maintenant ## 🎯 Conseils d'utilisation 1. **Commencez par** "Test Authentication" pour vĂ©rifier votre configuration 2. **Utilisez** les exemples de filtres pour comprendre les possibilitĂ©s 3. **Les variables** sont automatiquement remplies par les scripts 4. **Les tests** vous donnent un retour immĂ©diat sur la validitĂ© des rĂ©ponses 5. **Copiez** les exemples de requĂȘtes pour vos propres dĂ©veloppements 6. **Pagination** : pour les endpoints *Page*, utilisez `p_cursor` et `p_page_size` (pas `p_page`) ## 📚 Documentation complĂšte Pour plus de dĂ©tails sur l'API, consultez la documentation complĂšte dans `index.html`. ## đŸ€ Support Pour toute question ou problĂšme : - Consultez la documentation API - VĂ©rifiez vos variables d'environnement - Testez avec "Test Authentication" en premier