syntax = "proto3";
package crm_gift_card;

service CrmGiftCardService {
  rpc PreviewGiftCardQr (PreviewGiftCardQrRequest) returns (PreviewGiftCardQrResponse);
  rpc ScanGiftCardQr (ScanGiftCardQrRequest) returns (ScanGiftCardQrResponse);
  rpc GetGiftCardStats (GetGiftCardStatsRequest) returns (GetGiftCardStatsResponse);
  rpc ListGiftCardScans (ListGiftCardScansRequest) returns (ListGiftCardScansResponse);
}

message PreviewGiftCardQrRequest {
  string qr_payload = 1;
}

message PreviewGiftCardQrResponse {
  bool success = 1;
  string status = 2;
  string error = 3;
  int64 user_id = 4;
  int64 uid = 5;
  string card_bin = 6;
  int64 card_product_id = 7;
}

message ScanGiftCardQrRequest {
  string qr_payload = 1;
}

message ScanGiftCardQrResponse {
  bool success = 1;
  string status = 2;
  string error = 3;
  string scan_id = 4;
  int64 user_id = 5;
  int64 uid = 6;
  string card_bin = 7;
  int64 card_id = 8;
  int64 card_product_id = 9;
}

message GetGiftCardStatsRequest {}

message GetGiftCardStatsResponse {
  string sum_gifted_spends = 1;
  int64 count_gifted = 2;
}

message ListGiftCardScansRequest {
  int32 page = 1;
  int32 limit = 2;
}

message GiftCardScanItem {
  string id = 1;
  int64 user_id = 2;
  int64 uid = 3;
  string card_bin = 4;
  string status = 5;
  string error = 6;
  int64 created_at_unix_ms = 7;
  int64 finalized_at_unix_ms = 8;
  int64 card_product_id = 9;
}

message ListGiftCardScansResponse {
  repeated GiftCardScanItem items = 1;
  int32 total = 2;
  int32 page = 3;
  int32 limit = 4;
  int32 pages = 5;
}
