syntax = "proto3";

package nexuscrm.runtime.v1;

import "common/v1/common.proto";

option go_package = "github.com/pingcap-inc/nexuscrm-contract/wire-go/gen/runtime/v1;runtimev1";

// AuditLogReadService returns one bounded privileged audit-log page. Product
// route grammar, permission names and response aliases remain caller-owned.
service AuditLogReadService {
  rpc ReadAuditLog(ReadAuditLogRequest) returns (ReadAuditLogResponse);
}

message ReadAuditLogRequest {
  string object_id = 1;
  string record_id = 2;
  uint32 limit = 3;
  uint64 offset = 4;
  optional uint64 min_catalog_revision = 5;
}

message AuditLogRow {
  string id = 1;
  string object_id = 2;
  string record_id = 3;
  string field_id = 4;
  optional string old_value = 5;
  optional string new_value = 6;
  string changed_by_id = 7;
  string changed_at = 8;
  string action = 9;
  string changes_json = 10;
  string entrypoint = 11;
  string entrypoint_detail = 12;
  string request_id = 13;
  string trace_id = 14;
  string session_id = 15;
  string client_ip = 16;
  string actual_user_id = 17;
  string outcome = 18;
  string error_code = 19;
}

message ReadAuditLogResponse {
  repeated AuditLogRow rows = 1;
  nexuscrm.common.v1.ConsistencyReceipts receipts = 2;
}
