This is a Go server that implements the PetStoreService API. It's hosted on fly.io, at petstore.fly.dev. The source code is at github.com/stefanvanburen/petstore.
You can interact with the API with plain HTTP requests (via the Connect protocol) with any HTTP client, such as cURL, but
buf curl
makes it easy:
$ # Create a pet
$ buf curl \
--data '{"name": "Mobin", "petType": "PET_TYPE_CAT"}' \
https://petstore.fly.dev/pet.v1.PetStoreService/PutPet | jq .pet.petId
"01GT4XTKXEXY74QD8H575E8NWC"
$ # Retrieve a pet
$ buf curl \
--data '{"petId":"01GT4XTKXEXY74QD8H575E8NWC"}' \
https://petstore.fly.dev/pet.v1.PetStoreService/GetPet | jq .pet.name
"Mobin"
$ # Delete a pet. :(
$ buf curl \
--data '{"petId":"01GT4XTKXEXY74QD8H575E8NWC"}' \
https://petstore.fly.dev/pet.v1.PetStoreService/DeletePet
{}
You can also use Buf Studio to interact with the API in a much more interactive way.
The server uses the connect-go library to implement the API, with connectrpc/grpcreflect-go adding support for the gRPC server reflection API.
The packages used for interacting with the API are remotely generated - there's no code generation in this repository.
The "database" is completely in memory, so each deploy will wipe out any existing data.