# Hyper Text Coffee Pot Control Protocol

L'Hyper Text Coffee Pot Control Protocol ou HTCPCP — de l'anglais signifiant littéralement « protocole hypertexte de gestion de cafetière » — est une proposition humoristique de protocole de communication client-serveur permettant le contrôle, la surveillance et le diagnostic de cafetière.
HTCPCP est décrit dans la RFC 2324 publié le 1er avril 1998 et bien que cette RFC soit un poisson d'avril, elle est suffisamment bien décrite pour être implémentée : l'éditeur de texte Emacs possède d'ailleurs une extension permettant de générer des requêtes d'infusion via HTCPCP.
Il existe également un rapport de bug sur bugzilla qui déplore l'absence de support du protocole dans la suite Mozilla.
Le 1er avril 2008, 10 ans après la publication d'HTCPCP, un Web-Controlled Coffee Consortium (WC3) imaginaire publie une première version de la description du vocabulaire RDF en imitation du World Wide Web Consortium (W3C) et de son propre HTTP Vocabulary in RDF.
Le 1er avril 2014, la RFC 7168 étend le protocole à l'infusion du thé, sous le nom Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA).

## Description du protocole

HTCPCP est une extension du protocole HTTP dont les requêtes sont identifiées par le schéma d'URI coffee: (ou le nom du café dans l'une des 29 langues listées dans la RFC : afrikaans, allemand, anglais, arabe, azéri, basque, bengali, bosnien, bulgare, catalan, chinois, coréen, croate, danois, espéranto, estonien, finnois, français, galicien, grec, hindi, japonais, néerlandais, norvégien, russe, suédois, tchèque, thaï).

### Méthodes

Les méthodes ajoutées sont les suivantes :
| BREW ou POST | Déclenche l'infusion du café par le serveur HTCPCP |
| GET | Récupère le café depuis le serveur HTCPCP |
| PROPFIND | Affichage des métadonnées sur le café |
| WHEN | Envoyer when notifie le serveur HTCPCP de stopper l'écoulement du lait dans le café (s'il y a lieu) |

### Champs d'en-tête

De plus, afin de définir la préparation suivant les possibilités de la cafetière, un champ d'en-tête est également ajouté : Accept-Additions. Les valeurs possibles sont les suivantes :
| Champ d'en-tête | Description | Valeur(s) | Description |
| addition-type | définit les choix d'addition possibles pour la préparation du café | * | tous les types |
| addition-type | définit les choix d'addition possibles pour la préparation du café | milk-type | choix de lait (voir plus bas) |
| addition-type | définit les choix d'addition possibles pour la préparation du café | syrup-type | choix de sirop (voir plus bas) |
| addition-type | définit les choix d'addition possibles pour la préparation du café | sweetener-type | choix de sucre |
| addition-type | définit les choix d'addition possibles pour la préparation du café | spice-type | choix d'épice |
| addition-type | définit les choix d'addition possibles pour la préparation du café | alcohol-type | choix d'alcool (voir plus bas) |
| milk-type | définit les choix de lait possibles | Cream | crème |
| milk-type | définit les choix de lait possibles | Half-and-half | moitié-moitié |
| milk-type | définit les choix de lait possibles | Whole-milk | entier |
| milk-type | définit les choix de lait possibles | Part-Skim | demi-écrémé |
| milk-type | définit les choix de lait possibles | Skim | écrémé |
| milk-type | définit les choix de lait possibles | Non-Dairy | non laitier (ex. : lait de soja) |
| syrup-type | définit les choix de sirop possibles | Vanilla | vanille |
| syrup-type | définit les choix de sirop possibles | Almond | amande |
| syrup-type | définit les choix de sirop possibles | Raspberry | framboise |
| syrup-type | définit les choix de sirop possibles | Chocolate | chocolat |
| alcohol-type | définit les choix d'alcool possibles | Whisky | whisky |
| alcohol-type | définit les choix d'alcool possibles | Rum | rhum |
| alcohol-type | définit les choix d'alcool possibles | Kahlua | kahlúa |
| alcohol-type | définit les choix d'alcool possibles | Aquavit | aquavit |
Volontairement, aucune option n'est définie pour le décaféiné, choix justifié par le commentaire : « quel est l'intérêt ? ».

### Codes d'erreur

Enfin, deux codes d'erreur client sont définis :
| 406 Not Acceptable | Le serveur HTCPCP ne peut pas infuser du café pour différentes raisons, la réponse devrait indiquer une liste de types de café possibles. |
| 418 I'm a teapot | Le serveur HTCPCP est une théière. Ce code d'erreur est renvoyé par certains sites web en réponse à des requêtes qu'ils refusent de traiter, comme celles provenant de bots. |

## Reprises sur le web

Quelques sites ont depuis repris l'idée pour afficher des pages faisant référence à ce poisson d'avril. Google a par exemple créé une page affichant une théière sur laquelle il est possible de cliquer pour verser. Sur la version mobile, il suffit de pencher l'appareil pour verser le thé dans la tasse.