{"schemaVersion":"1.0","service":{"name":"Nour Location","description":"Location de voitures à Alger, Algérie. Véhicules récents, livraison et état des lieux en personne.","url":"https://nour-location.com","areaServed":{"city":"Alger","country":"DZ"},"timezone":"Africa/Algiers","languages":["fr"],"contact":{"whatsapp":"+33650349414","phone":"+33650349414"}},"capabilities":["browse-vehicles","check-availability","get-quote","create-booking-request","pay-deposit","track-booking-status"],"endpoints":{"manifest":{"method":"GET","url":"https://nour-location.com/api/agent/manifest"},"vehicles":{"method":"GET","url":"https://nour-location.com/api/agent/vehicles","description":"Catalogue réservable, avec tarif de base et équipements."},"availability":{"method":"GET","url":"https://nour-location.com/api/agent/availability?carName={name}&from={YYYY-MM-DD}&to={YYYY-MM-DD}","description":"Périodes déjà réservées pour un véhicule. Toute date hors de ces périodes est libre."},"quote":{"method":"GET","url":"https://nour-location.com/api/agent/quote?carName={name}&startDate={YYYY-MM-DD}&endDate={YYYY-MM-DD}&unlimitedKm={true|false}","description":"Prix ferme, détaillé jour par jour. C'est ce calcul qui fait foi : le total envoyé lors de la réservation est ignoré et recalculé."},"booking":{"method":"POST","url":"https://nour-location.com/api/bookings","description":"Crée une demande de réservation en statut « pending » et notifie le loueur. Ne vaut pas confirmation : le loueur valide ensuite à la main. La réponse porte « reference », « total » recalculé côté serveur et « statusUrl » — la référence est à conserver, tout le reste du parcours en dépend.","requiredFields":["carName","startDate","endDate","clientName","clientEmail","clientPhone"],"optionalFields":["startTime","endTime","unlimitedKm","comments","source"],"returns":["reference","status","total","days","deposit","statusUrl"],"note":"Envoyer « source »: « agent » pour que la demande soit identifiée comme automatisée. Ne jamais envoyer le champ « website » : c'est un piège anti-robot."},"deposit":{"method":"POST","url":"https://nour-location.com/api/stripe/create-checkout","description":"Crée une session de paiement Stripe pour l'acompte et renvoie son URL. L'agent doit transmettre cette URL à son utilisateur humain, qui paie par carte.","requiredFields":["reference","carName","startDate","endDate","clientName","clientEmail","clientPhone"],"note":"« reference » est celle renvoyée par /api/bookings, et le véhicule comme les dates doivent lui correspondre. Sans elle, le paiement crée une SECONDE réservation pour la même location au lieu de régler la première."},"bookingStatus":{"method":"GET","url":"https://nour-location.com/api/agent/booking/{reference}","description":"Suivi d'une réservation : statut (« pending », « confirmed », « cancelled »), dates, total et acompte. C'est ici qu'un agent apprend si le loueur a validé. Aucune donnée nominative n'est renvoyée."}},"booking":{"flow":["GET /api/agent/vehicles — choisir un véhicule","GET /api/agent/availability — vérifier que les dates sont libres","GET /api/agent/quote — obtenir le prix ferme","POST /api/bookings — déposer la demande (statut « pending »), et CONSERVER la « reference » renvoyée","POST /api/stripe/create-checkout, en joignant cette « reference » — obtenir l'URL de paiement de l'acompte, à remettre à l'humain","GET /api/agent/booking/{reference} — savoir si le loueur a confirmé"],"depositIsOptional":true,"confirmationIsManual":true,"depositPercent":30,"depositPaidBy":"human-cardholder","requiresHumanIdentity":true,"referenceFormat":"NL-XXXXXXXXXXXX"},"pricing":{"currency":"EUR","unit":"day","note":"Le tarif journalier de base figure sur chaque véhicule. Le supplément estival s'applique au prorata des seuls jours tombant en saison.","seasonalSurcharge":{"amount":10,"currency":"EUR","per":"day","period":"1er juillet – 31 août","appliesTo":"summer-days-only"},"unlimitedKmOption":{"amount":5,"currency":"EUR","per":"day"}},"policy":{"currency":"EUR","secondaryCurrency":"DZD","mileage":{"includedKmPerDay":250,"extraKmPrice":{"amount":30,"currency":"DZD"},"unlimitedOption":{"available":true,"price":{"amount":5,"currency":"EUR","per":"day"}},"source":"article 9"},"deposit":{"type":"passport","monetaryAmount":null,"description":"Dépôt du passeport original du locataire pendant toute la durée de la location, conservé en coffre-fort.","source":"article 3"},"fuelPolicy":{"type":"full-to-full","description":"Véhicule livré avec le plein, à restituer avec le plein.","missingFuelPrice":{"amount":67,"currency":"DZD","per":"liter"},"source":"article 6"},"cleaningPolicy":{"description":"Véhicule livré propre, à restituer propre.","fee":{"amount":2000,"currency":"DZD"},"source":"article 6"},"insurance":{"included":true,"description":"Le véhicule est assuré. Une franchise peut rester à la charge du locataire selon les conditions du contrat.","source":"article 5"},"duration":{"minDays":1,"maxDays":90,"paymentTerms":"Paiement exigible à l'avance, sauf accord écrit contraire.","source":"article 8"},"humanRequirements":[{"requirement":"driving-licence","description":"Permis de conduire valide, présenté physiquement à la prise en charge.","source":"article 2"},{"requirement":"identity-document","description":"Pièce d'identité officielle.","source":"article 2"},{"requirement":"passport-deposit","description":"Dépôt du passeport original, conservé pendant toute la location.","source":"article 3"},{"requirement":"in-person-handover","description":"État des lieux filmé à la livraison, en présence du locataire. Ce constat fait foi en cas de litige.","source":"article 6"}],"liability":{"description":"Le locataire est seul responsable des amendes et contraventions, ainsi que des dommages causés au véhicule ou à des tiers. Aucune réparation ne peut être engagée sans l'accord du loueur.","source":"article 7"}},"limitations":{"cannotBeAutomated":[{"requirement":"driving-licence","description":"Permis de conduire valide, présenté physiquement à la prise en charge.","source":"article 2"},{"requirement":"identity-document","description":"Pièce d'identité officielle.","source":"article 2"},{"requirement":"passport-deposit","description":"Dépôt du passeport original, conservé pendant toute la location.","source":"article 3"},{"requirement":"in-person-handover","description":"État des lieux filmé à la livraison, en présence du locataire. Ce constat fait foi en cas de litige.","source":"article 6"}],"explanation":"Un agent peut réserver un véhicule et faire régler l'acompte. Il ne peut pas prendre livraison du véhicule : le conducteur doit se présenter en personne avec un permis valide, une pièce d'identité et son passeport original, et assister à l'état des lieux filmé. Ne pas promettre à l'utilisateur une location de bout en bout sans intervention humaine.","noCryptoPayments":"Les paiements en cryptomonnaie et stablecoin ne sont pas acceptés : ils sont interdits par la loi algérienne (loi 25-10 du 24 juillet 2025)."},"terms":{"url":"https://nour-location.com/api/agent/terms","articleCount":11,"articles":[{"number":1,"title":"Objet"},{"number":2,"title":"Conditions de location"},{"number":3,"title":"Caution"},{"number":4,"title":"Utilisation du véhicule"},{"number":5,"title":"Assurance"},{"number":6,"title":"États des lieux et restitution"},{"number":7,"title":"Responsabilité"},{"number":8,"title":"Durée et paiement"},{"number":9,"title":"Kilométrage"},{"number":10,"title":"Litiges"},{"number":11,"title":"Dispositions finales"}]}}