clientIn allows you to produce operations to query an API from a client within a RunClient monad.
type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
:<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book -- POST /books
myApi :: Proxy MyApi
myApi = Proxy
clientM :: Proxy ClientM
clientM = Proxy
getAllBooks :: ClientM [Book]
postNewBook :: Book -> ClientM Book
(getAllBooks :<|> postNewBook) = myApi `clientIn` clientM