syntax = "proto3"; package api; option go_package = "github.com/psviderski/uncloud/api/pb"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; // CaddyStorage exposes the CertMagic storage operations backed by the distributed cluster store. // Each request operates on the receiving machine's store replica. Callers that need replication to catch up before // reading should capture store versions with Machine.InspectMachine and call Machine.WaitForStoreVersion on the // receiving machine, subject to that RPC's data-availability limitations (see WaitForStoreVersion docs). // See Storage interface in https://github.com/caddyserver/certmagic/blob/master/storage.go. service CaddyStorage { rpc Store(StoreCaddyStorageRequest) returns (google.protobuf.Empty); rpc Load(LoadCaddyStorageRequest) returns (LoadCaddyStorageResponse); rpc Delete(DeleteCaddyStorageRequest) returns (google.protobuf.Empty); rpc List(ListCaddyStorageRequest) returns (ListCaddyStorageResponse); rpc Stat(StatCaddyStorageRequest) returns (StatCaddyStorageResponse); // ListCertificates lists certificates issued by Caddy and stored in the cluster store. // Unreadable entries and invalid resource metadata are skipped. Chains and issuer data are returned as stored. rpc ListCertificates(google.protobuf.Empty) returns (ListCertificatesResponse); } message StoreCaddyStorageRequest { string key = 1; bytes value = 2; } message LoadCaddyStorageRequest { string key = 1; } message LoadCaddyStorageResponse { bytes value = 1; google.protobuf.Timestamp updated_at = 2; } message DeleteCaddyStorageRequest { string key = 1; } message ListCaddyStorageRequest { string prefix = 1; bool recursive = 2; } message ListCaddyStorageResponse { repeated string keys = 1; } message StatCaddyStorageRequest { string key = 1; } message StatCaddyStorageResponse { string key = 1; google.protobuf.Timestamp updated_at = 2; int64 size = 3; bool is_terminal = 4; } message ListCertificatesResponse { repeated IssuedCertificate certificates = 1; } message IssuedCertificate { // Subject Alternative Name (SAN) of the certificate. Caddy doesn't issue certificates with multiple SANs. string san = 1; // The PEM-encoding of DER-encoded ASN.1 data for the cert or chain, leaf first. bytes chain = 2; // Any extra information associated with the certificate, usually provided by the issuer implementation. // JSON-encoded, may be absent or null. bytes issuer_data = 3; }