The eXtensible REST Services Protocol allows clients to consume services and extend hosts through plug-ins. Hosts are RESTful applications with an extension registry to register plug-ins. Plug-ins receive callbacks from hosts and can decorate host responses. The protocol uses asynchronous callbacks for concurrent execution and synchronous callbacks to allow response decoration in a failure-flexible manner.