# Ressources et clients

## Ressources

Le développement des classes REST (Resource) mettant a disposition les points d’API doit respecter les règles suivantes :

> - Déclarer un Path qui ne risque pas d’entrer en conflit avec un autre
> - Déclarer un « @produce » et un « @consume » en accordance avec le verbe HTTP utilisé : - Pas de « @produce » dans le cas du HEAD - Suite à la mise en place de RESTEASY, tout objet envoyé en body de requête ne peut être null
> - Si un point d’API renvoie un résultat, il doit uniquement renvoyer au choix : - un objet RequestResponse<T> où T doit être un POJO (autre que JsonNode) dans l’entity de l’objet Response. Attention, le status code de l’objet RequestResponse doit être cohérent avec celui de la Response - un stream dans l’entity de la response
> - Les erreurs sont renvoyées sous la forme d’un objet VitamError.

## Client

Le développement des clients vitam (interne et externe) doit respecter les règles suivantes :

> - Deux types de réponses peuvent être renvoyés : - un objet RequestResponse<T> où T doit être un POJO (autre que JsonNode) - un objet Reponse uniquement de le cas où la réponse est un stream
> - Le client ne doit pas intépréter une réponse dont le format est correct (et ce même si le status n’est pas OK)
> - Les seules exceptions qui peuvent être renvoyées sont celles générées par le client lui-même, elles doivent toutes être des VitamClientException
> - Les clients ne doivent pas utiliser la dépendance common-private