# Requetes ## Création d'un sinistre ``` POST : /claim Request Body : { contractID : String (not empty), nature : String (not empty), location : Location, incidentDate : Date, cause : String(not empty), consequence: String(not empty), } Response : 200: Body { claim : Claim } Erreurs à définir. ``` ``` class Location { streetNumber : String (optional), street: String(optional), city: String, zipCode : String countryCode (optional) : String } ``` ## Récupération de la liste des sinistres pour un contrat ``` GET : /claim/ Request Body : { contractId: String } Output : [ClaimSummary] ``` ``` class ClaimSummary{ id : String, nature: String, status: String, statusUpdateDate: Date } ``` ## Récupération du status d'un sinistre ``` GET : /claim/status Request Body : { claimId: String } Output : ClaimSummary ``` ## Récupération du détail d'un sinistre ``` GET : /claim/status Request Body : { claimId: String } Output : Claim ``` ``` class Claim { id : String (claimId ou referenceId) nature : String (not empty), status: String, statusUpdateDate: Date contractID : String (not empty), location : Location, incidentDate : Date, declarationDate : Date cause : String(not empty), consequence: String(not empty), compensations : [Compensation], responsibility : String (optionnal) expertiseMode : String (optional) expertiseReportDate : Date(optional) franchise (à définir) : Double (optional) actors : [Actor] documents : [Document] } ``` ``` class Compensation { value: Double, status: String (Pending, Done), date: Date (optionnal) } ``` ``` class Actor { type: String (Garage agréé, Garage non agréé, Avocat ...), nom: String, location: Location } ``` ``` class Document{ url: String, category: String (Dépôt de plainte, Procès verbal), mimeType: String, uploadDate : String, status : enum [validated, pending] } ``` ## Mise à jour du sinistre ``` PATCH : /claim/ Request Body : Claim Response : 200, 40x ``` ## Récupération des informations d'un contrat ``` PATCH : /contract/ Request Body : { contractId: String } Response Body : Contract class Contract(CarContract, HouseContract, ...) ``` ## Envoi des documents ???? - document de contrat : Ancien workflow (Demande de ressources, Upload, Validation de l'upload) - justificatif sinistre : Nouveau workflow à définir - factures : Nouveau workflow à définir ## Sélection du garage ``` GET : /garage/ Request Body : { zipCode: String, } Response Body : [Garage] Response : 200, 40x ``` ``` class Garage{ type : String, name : String, location : Location, phoneNumber: String (optional), mailAddress: String (optional) } ``` ## Sélection de la ville ``` GET : /town/ Request Body : { text: String (zipCode and town) } Response Body : Location Response : 200, 40x ``` ## Update statistics Nous utilisons les statistics pour déterminer si on affiche "Suivre mon sinistre", est-ce que ça serais possible d'avoir le nombre de réel de sinistre (ouvert + fermé) ?