OxL Reference

proto/inventory.proto

proto
// Склад: внешняя система shop (V.5). Фейковый сервер: tests/shop/fakes. reserve/release идемпотентны (ключ — ctx.idempotencyKey).
syntax = "proto3";
package warehouse;
import "oxl/options.proto";
import "google/protobuf/empty.proto";

message Line { string sku = 1; uint32 qty = 2; }
message ReserveReq { repeated Line items = 1; }
message ReserveResp { string reservationId = 1; string warehouse = 2; }
message ReleaseReq { string reservationId = 1; }
message OutOfStock { option (oxl.error) = true; string sku = 1; }

service Inventory {
  rpc reserve(ReserveReq) returns (ReserveResp) {
    option idempotency_level = IDEMPOTENT;
    option (oxl.raises) = "warehouse.OutOfStock";
  }
  rpc release(ReleaseReq) returns (google.protobuf.Empty) { option idempotency_level = IDEMPOTENT; }
}

Source: examples/shop/proto/inventory.proto