# 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é) ?