---
# System prepended metadata

title: Requetes

---

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