{"openapi":"3.1.0","info":{"title":"CK Gestion Syndic : interface pour les agents IA","version":"1.0.0","description":"Syndic de copropriété à Marrakech. Lecture des informations publiques et dépôt de demandes (devis, visite, question) au nom d'un utilisateur qui l'a accepté. Ne déposez une demande qu'à la demande explicite de l'utilisateur, avec ses vraies coordonnées.","contact":{"email":"contact@ckgestionsyndic.ma","url":"https://ckgestionsyndic.ma/fr"}},"servers":[{"url":"https://ckgestionsyndic.ma/api/agent/v1"}],"paths":{"/":{"get":{"operationId":"getInfo","summary":"Informations sur CK Gestion Syndic : contact, horaires, quartiers, tarifs, actions possibles","parameters":[{"name":"lang","in":"query","schema":{"type":"string","enum":["fr","ar","en"],"default":"fr"}}],"responses":{"200":{"description":"OK"}}}},"/services":{"get":{"operationId":"listServices","summary":"Services proposés","parameters":[{"name":"lang","in":"query","schema":{"type":"string","enum":["fr","ar","en"],"default":"fr"}}],"responses":{"200":{"description":"OK"}}}},"/zones":{"get":{"operationId":"listZones","summary":"Quartiers de Marrakech desservis","parameters":[{"name":"lang","in":"query","schema":{"type":"string","enum":["fr","ar","en"],"default":"fr"}}],"responses":{"200":{"description":"OK"}}}},"/plans":{"get":{"operationId":"listPlans","summary":"Formules de gestion (sans prix public)","parameters":[{"name":"lang","in":"query","schema":{"type":"string","enum":["fr","ar","en"],"default":"fr"}}],"responses":{"200":{"description":"OK"}}}},"/faq":{"get":{"operationId":"listFaq","summary":"Questions fréquentes","parameters":[{"name":"lang","in":"query","schema":{"type":"string","enum":["fr","ar","en"],"default":"fr"}}],"responses":{"200":{"description":"OK"}}}},"/quote-requests":{"post":{"operationId":"createQuoteRequest","summary":"Demander un devis gratuit pour une résidence","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"residence":{"type":"string","description":"Nom de la résidence ou de l'immeuble"},"neighborhood":{"type":"string","description":"Quartier de Marrakech (ex. Guéliz, Hivernage, Palmeraie)"},"units":{"type":"integer","minimum":1,"description":"Nombre de lots (appartements, villas, locaux)"},"current_syndic":{"type":"string","enum":["none","volunteer","professional"]},"needs":{"type":"array","items":{"type":"string","enum":["full","accounting","technical","ag","audit","cleaning"]}},"plan":{"type":"string","description":"Formule souhaitée (voir /plans)"},"requester_role":{"type":"string","enum":["owner","council","developer","other"]},"message":{"type":"string"},"name":{"type":"string","example":"Nadia Bennani"},"email":{"type":"string","format":"email"},"phone":{"type":"string","example":"+212 6 12 34 56 78","description":"Format international"},"language":{"type":"string","enum":["fr","ar","en"],"description":"Langue de l'utilisateur pour la réponse"},"user_consent":{"type":"boolean","const":true,"description":"L'utilisateur a accepté d'être recontacté par CK Gestion Syndic. Obligatoire."},"agent":{"type":"string","example":"ChatGPT","description":"Nom de l'agent ou de l'assistant qui envoie la demande"}},"required":["residence","neighborhood","units","name","email","phone","user_consent"]}}}},"responses":{"201":{"description":"Demande enregistrée","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Received"}}}},"422":{"description":"Champs invalides (détail dans « errors »)"},"429":{"description":"Trop de demandes : réessayer plus tard"}}}},"/visit-requests":{"post":{"operationId":"createVisitRequest","summary":"Demander une visite gratuite de la résidence (date confirmée ensuite par l'équipe)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"residence":{"type":"string"},"neighborhood":{"type":"string"},"units":{"type":"integer","minimum":1},"preferred_date":{"type":"string","format":"date","description":"Date souhaitée (AAAA-MM-JJ), après aujourd'hui"},"time_of_day":{"type":"string","enum":["morning","afternoon"]},"message":{"type":"string"},"name":{"type":"string","example":"Nadia Bennani"},"email":{"type":"string","format":"email"},"phone":{"type":"string","example":"+212 6 12 34 56 78","description":"Format international"},"language":{"type":"string","enum":["fr","ar","en"],"description":"Langue de l'utilisateur pour la réponse"},"user_consent":{"type":"boolean","const":true,"description":"L'utilisateur a accepté d'être recontacté par CK Gestion Syndic. Obligatoire."},"agent":{"type":"string","example":"ChatGPT","description":"Nom de l'agent ou de l'assistant qui envoie la demande"}},"required":["residence","neighborhood","preferred_date","name","email","phone","user_consent"]}}}},"responses":{"201":{"description":"Demande enregistrée","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Received"}}}},"422":{"description":"Champs invalides (détail dans « errors »)"},"429":{"description":"Trop de demandes : réessayer plus tard"}}}},"/contact-requests":{"post":{"operationId":"createContactRequest","summary":"Poser une question à l'équipe","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"residence":{"type":"string"},"name":{"type":"string","example":"Nadia Bennani"},"email":{"type":"string","format":"email"},"phone":{"type":"string","example":"+212 6 12 34 56 78","description":"Format international"},"language":{"type":"string","enum":["fr","ar","en"],"description":"Langue de l'utilisateur pour la réponse"},"user_consent":{"type":"boolean","const":true,"description":"L'utilisateur a accepté d'être recontacté par CK Gestion Syndic. Obligatoire."},"agent":{"type":"string","example":"ChatGPT","description":"Nom de l'agent ou de l'assistant qui envoie la demande"}},"required":["message","name","email","phone","user_consent"]}}}},"responses":{"201":{"description":"Demande enregistrée","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Received"}}}},"422":{"description":"Champs invalides (détail dans « errors »)"},"429":{"description":"Trop de demandes : réessayer plus tard"}}}}},"components":{"schemas":{"Received":{"type":"object","properties":{"status":{"type":"string","const":"received"},"reference":{"type":"string","example":"CK-128"},"message":{"type":"string"},"next_steps":{"type":"string"}}}}}}