diff --git a/docs/grpc/index.html b/docs/grpc/index.html
index 234224ea8d..435690d572 100644
--- a/docs/grpc/index.html
+++ b/docs/grpc/index.html
@@ -1508,6 +1508,14 @@
Table of Contents
MGetObligationResponse
+
+ MGetObligationTriggerRequest
+
+
+
+ MGetObligationTriggerResponse
+
+
MGetObligationValueRequest
@@ -12949,7 +12957,7 @@ policy/obligations/obligations.pro
AddObligationTriggerRequest
-
Triggers
+
@@ -13346,6 +13354,54 @@ GetObligationResponse
+ GetObligationTriggerRequest
+ Triggers
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ |
+ Required |
+
+
+
+
+
+
+
+
+
+ GetObligationTriggerResponse
+
+
+
+
+
+
+
+
+
GetObligationValueRequest
Values
@@ -14102,6 +14158,13 @@ Service
|
+
+ | GetObligationTrigger |
+ GetObligationTriggerRequest |
+ GetObligationTriggerResponse |
+ |
+
+
| AddObligationTrigger |
AddObligationTriggerRequest |
@@ -14164,6 +14227,11 @@ Methods with idempotency_level option
NO_SIDE_EFFECTS |
+
+ | GetObligationTrigger |
+ NO_SIDE_EFFECTS |
+
+
| ListObligationTriggers |
NO_SIDE_EFFECTS |
diff --git a/docs/openapi/policy/kasregistry/key_access_server_registry.openapi.yaml b/docs/openapi/policy/kasregistry/key_access_server_registry.openapi.yaml
index 212e33b722..e4602dfddf 100644
--- a/docs/openapi/policy/kasregistry/key_access_server_registry.openapi.yaml
+++ b/docs/openapi/policy/kasregistry/key_access_server_registry.openapi.yaml
@@ -580,6 +580,13 @@ components:
- SORT_DIRECTION_UNSPECIFIED
- SORT_DIRECTION_ASC
- SORT_DIRECTION_DESC
+ description: |-
+ Sorting direction shared across list APIs.
+ Notes:
+ - When a sort field is provided, UNSPECIFIED is treated as ASC.
+ - When the 'sort' field is omitted or the chosen sort 'field' is UNSPECIFIED,
+ the endpoint's request message defines the default ordering; see the
+ specific List* request docs.
policy.SourceType:
type: string
title: SourceType
diff --git a/docs/openapi/policy/obligations/obligations.openapi.yaml b/docs/openapi/policy/obligations/obligations.openapi.yaml
index 859f98f7fd..882026d633 100644
--- a/docs/openapi/policy/obligations/obligations.openapi.yaml
+++ b/docs/openapi/policy/obligations/obligations.openapi.yaml
@@ -387,6 +387,41 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/policy.obligations.DeleteObligationValueResponse'
+ /policy.obligations.Service/GetObligationTrigger:
+ post:
+ tags:
+ - policy.obligations.Service
+ summary: GetObligationTrigger
+ operationId: policy.obligations.Service.GetObligationTrigger
+ parameters:
+ - name: Connect-Protocol-Version
+ in: header
+ required: true
+ schema:
+ $ref: '#/components/schemas/connect-protocol-version'
+ - name: Connect-Timeout-Ms
+ in: header
+ schema:
+ $ref: '#/components/schemas/connect-timeout-header'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/policy.obligations.GetObligationTriggerRequest'
+ required: true
+ responses:
+ default:
+ description: Error
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/connect.error'
+ "200":
+ description: Success
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/policy.obligations.GetObligationTriggerResponse'
/policy.obligations.Service/AddObligationTrigger:
post:
tags:
@@ -551,6 +586,13 @@ components:
- SORT_DIRECTION_UNSPECIFIED
- SORT_DIRECTION_ASC
- SORT_DIRECTION_DESC
+ description: |-
+ Sorting direction shared across list APIs.
+ Notes:
+ - When a sort field is provided, UNSPECIFIED is treated as ASC.
+ - When the 'sort' field is omitted or the chosen sort 'field' is UNSPECIFIED,
+ the endpoint's request message defines the default ordering; see the
+ specific List* request docs.
policy.SourceType:
type: string
title: SourceType
@@ -1455,7 +1497,6 @@ components:
- action
- attributeValue
additionalProperties: false
- description: Triggers
policy.obligations.AddObligationTriggerResponse:
type: object
properties:
@@ -1628,6 +1669,25 @@ components:
$ref: '#/components/schemas/policy.Obligation'
title: GetObligationResponse
additionalProperties: false
+ policy.obligations.GetObligationTriggerRequest:
+ type: object
+ properties:
+ id:
+ type: string
+ title: id
+ format: uuid
+ description: Required
+ title: GetObligationTriggerRequest
+ additionalProperties: false
+ description: Triggers
+ policy.obligations.GetObligationTriggerResponse:
+ type: object
+ properties:
+ trigger:
+ title: trigger
+ $ref: '#/components/schemas/policy.ObligationTrigger'
+ title: GetObligationTriggerResponse
+ additionalProperties: false
policy.obligations.GetObligationValueRequest:
type: object
properties:
diff --git a/protocol/go/policy/obligations/obligations.pb.go b/protocol/go/policy/obligations/obligations.pb.go
index ef179fc709..28fe99cb65 100644
--- a/protocol/go/policy/obligations/obligations.pb.go
+++ b/protocol/go/policy/obligations/obligations.pb.go
@@ -1438,6 +1438,101 @@ func (x *DeleteObligationValueResponse) GetValue() *policy.ObligationValue {
}
// Triggers
+type GetObligationTriggerRequest struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Required
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *GetObligationTriggerRequest) Reset() {
+ *x = GetObligationTriggerRequest{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetObligationTriggerRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetObligationTriggerRequest) ProtoMessage() {}
+
+func (x *GetObligationTriggerRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetObligationTriggerRequest.ProtoReflect.Descriptor instead.
+func (*GetObligationTriggerRequest) Descriptor() ([]byte, []int) {
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *GetObligationTriggerRequest) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+type GetObligationTriggerResponse struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Trigger *policy.ObligationTrigger `protobuf:"bytes,1,opt,name=trigger,proto3" json:"trigger,omitempty"`
+}
+
+func (x *GetObligationTriggerResponse) Reset() {
+ *x = GetObligationTriggerResponse{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetObligationTriggerResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetObligationTriggerResponse) ProtoMessage() {}
+
+func (x *GetObligationTriggerResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetObligationTriggerResponse.ProtoReflect.Descriptor instead.
+func (*GetObligationTriggerResponse) Descriptor() ([]byte, []int) {
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *GetObligationTriggerResponse) GetTrigger() *policy.ObligationTrigger {
+ if x != nil {
+ return x.Trigger
+ }
+ return nil
+}
+
type AddObligationTriggerRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1460,7 +1555,7 @@ type AddObligationTriggerRequest struct {
func (x *AddObligationTriggerRequest) Reset() {
*x = AddObligationTriggerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1473,7 +1568,7 @@ func (x *AddObligationTriggerRequest) String() string {
func (*AddObligationTriggerRequest) ProtoMessage() {}
func (x *AddObligationTriggerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1486,7 +1581,7 @@ func (x *AddObligationTriggerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddObligationTriggerRequest.ProtoReflect.Descriptor instead.
func (*AddObligationTriggerRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{24}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{26}
}
func (x *AddObligationTriggerRequest) GetObligationValue() *common.IdFqnIdentifier {
@@ -1535,7 +1630,7 @@ type AddObligationTriggerResponse struct {
func (x *AddObligationTriggerResponse) Reset() {
*x = AddObligationTriggerResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1548,7 +1643,7 @@ func (x *AddObligationTriggerResponse) String() string {
func (*AddObligationTriggerResponse) ProtoMessage() {}
func (x *AddObligationTriggerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1561,7 +1656,7 @@ func (x *AddObligationTriggerResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddObligationTriggerResponse.ProtoReflect.Descriptor instead.
func (*AddObligationTriggerResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{25}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{27}
}
func (x *AddObligationTriggerResponse) GetTrigger() *policy.ObligationTrigger {
@@ -1583,7 +1678,7 @@ type RemoveObligationTriggerRequest struct {
func (x *RemoveObligationTriggerRequest) Reset() {
*x = RemoveObligationTriggerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[26]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1596,7 +1691,7 @@ func (x *RemoveObligationTriggerRequest) String() string {
func (*RemoveObligationTriggerRequest) ProtoMessage() {}
func (x *RemoveObligationTriggerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[26]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1609,7 +1704,7 @@ func (x *RemoveObligationTriggerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveObligationTriggerRequest.ProtoReflect.Descriptor instead.
func (*RemoveObligationTriggerRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{26}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{28}
}
func (x *RemoveObligationTriggerRequest) GetId() string {
@@ -1630,7 +1725,7 @@ type RemoveObligationTriggerResponse struct {
func (x *RemoveObligationTriggerResponse) Reset() {
*x = RemoveObligationTriggerResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[27]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1643,7 +1738,7 @@ func (x *RemoveObligationTriggerResponse) String() string {
func (*RemoveObligationTriggerResponse) ProtoMessage() {}
func (x *RemoveObligationTriggerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[27]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1656,7 +1751,7 @@ func (x *RemoveObligationTriggerResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveObligationTriggerResponse.ProtoReflect.Descriptor instead.
func (*RemoveObligationTriggerResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{27}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{29}
}
func (x *RemoveObligationTriggerResponse) GetTrigger() *policy.ObligationTrigger {
@@ -1680,7 +1775,7 @@ type ListObligationTriggersRequest struct {
func (x *ListObligationTriggersRequest) Reset() {
*x = ListObligationTriggersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[28]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1693,7 +1788,7 @@ func (x *ListObligationTriggersRequest) String() string {
func (*ListObligationTriggersRequest) ProtoMessage() {}
func (x *ListObligationTriggersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[28]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1706,7 +1801,7 @@ func (x *ListObligationTriggersRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationTriggersRequest.ProtoReflect.Descriptor instead.
func (*ListObligationTriggersRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{28}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{30}
}
func (x *ListObligationTriggersRequest) GetNamespaceId() string {
@@ -1742,7 +1837,7 @@ type ListObligationTriggersResponse struct {
func (x *ListObligationTriggersResponse) Reset() {
*x = ListObligationTriggersResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[29]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1755,7 +1850,7 @@ func (x *ListObligationTriggersResponse) String() string {
func (*ListObligationTriggersResponse) ProtoMessage() {}
func (x *ListObligationTriggersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[29]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1768,7 +1863,7 @@ func (x *ListObligationTriggersResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationTriggersResponse.ProtoReflect.Descriptor instead.
func (*ListObligationTriggersResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{29}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{31}
}
func (x *ListObligationTriggersResponse) GetTriggers() []*policy.ObligationTrigger {
@@ -2093,201 +2188,218 @@ var file_policy_obligations_obligations_proto_rawDesc = []byte{
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd4, 0x02, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x4f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x6f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e,
- 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8,
- 0x01, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x4e,
- 0x61, 0x6d, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba,
- 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a,
- 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
- 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42,
- 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
- 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
- 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74,
- 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x53,
- 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
- 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x37, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64,
+ 0x22, 0x53, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xd4, 0x02, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c,
0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22,
- 0x56, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07,
- 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba,
- 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x24, 0xba, 0x48,
- 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
- 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e,
- 0x10, 0x00, 0x22, 0x8d, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a,
- 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x2a, 0xc7, 0x01, 0x0a, 0x13, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x4f,
- 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41,
- 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10,
- 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41,
- 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x51, 0x4e, 0x10, 0x02,
- 0x12, 0x24, 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45,
- 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f,
- 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x04, 0x32, 0xcd, 0x0d, 0x0a,
- 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73,
- 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01,
+ 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x4e, 0x61, 0x6d,
+ 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03,
+ 0xc8, 0x01, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0f, 0x61,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64,
+ 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba,
+ 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x1c,
+ 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x22, 0x3a, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a,
+ 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
+ 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07,
+ 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x24, 0xba, 0x48, 0x21, 0x22,
+ 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x0a,
+ 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x00,
+ 0x22, 0x8d, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+ 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2a, 0xc7, 0x01, 0x0a, 0x13, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x4f, 0x52, 0x54,
+ 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x01, 0x12,
+ 0x1d, 0x0a, 0x19, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49,
+ 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x51, 0x4e, 0x10, 0x02, 0x12, 0x24,
+ 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f,
+ 0x41, 0x54, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c,
+ 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50,
+ 0x44, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x04, 0x32, 0xcd, 0x0e, 0x0a, 0x07, 0x53,
+ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c,
+ 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65,
+ 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90,
+ 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x2f, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x03, 0x90, 0x02, 0x01, 0x12, 0x6f, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62,
+ 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79,
+ 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42,
+ 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90,
+ 0x02, 0x01, 0x12, 0x6f, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62,
0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x2e,
+ 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
+ 0x8d, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x34, 0x2e,
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
- 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
- 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12,
- 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79,
- 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
- 0x01, 0x12, 0x7e, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51,
+ 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
+ 0x7e, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x7e, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x7e, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65,
+ 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
+ 0x7b, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64,
+ 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a,
+ 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x7b, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41,
- 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84,
- 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
+ 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x31,
0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
- 0x12, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xcf, 0x01, 0x0a,
- 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74,
- 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f,
- 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4f, 0x58, 0xaa, 0x02, 0x12,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0xca, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x5c, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42,
- 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x3a, 0x3a, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xcf, 0x01, 0x0a, 0x16, 0x63,
+ 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c,
+ 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
+ 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4f, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0xca, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a,
+ 0x3a, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2303,7 +2415,7 @@ func file_policy_obligations_obligations_proto_rawDescGZIP() []byte {
}
var file_policy_obligations_obligations_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_policy_obligations_obligations_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
+var file_policy_obligations_obligations_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
var file_policy_obligations_obligations_proto_goTypes = []interface{}{
(SortObligationsType)(0), // 0: policy.obligations.SortObligationsType
(*ObligationsSort)(nil), // 1: policy.obligations.ObligationsSort
@@ -2330,99 +2442,104 @@ var file_policy_obligations_obligations_proto_goTypes = []interface{}{
(*UpdateObligationValueResponse)(nil), // 22: policy.obligations.UpdateObligationValueResponse
(*DeleteObligationValueRequest)(nil), // 23: policy.obligations.DeleteObligationValueRequest
(*DeleteObligationValueResponse)(nil), // 24: policy.obligations.DeleteObligationValueResponse
- (*AddObligationTriggerRequest)(nil), // 25: policy.obligations.AddObligationTriggerRequest
- (*AddObligationTriggerResponse)(nil), // 26: policy.obligations.AddObligationTriggerResponse
- (*RemoveObligationTriggerRequest)(nil), // 27: policy.obligations.RemoveObligationTriggerRequest
- (*RemoveObligationTriggerResponse)(nil), // 28: policy.obligations.RemoveObligationTriggerResponse
- (*ListObligationTriggersRequest)(nil), // 29: policy.obligations.ListObligationTriggersRequest
- (*ListObligationTriggersResponse)(nil), // 30: policy.obligations.ListObligationTriggersResponse
- nil, // 31: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
- nil, // 32: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
- (policy.SortDirection)(0), // 33: policy.SortDirection
- (*common.IdNameIdentifier)(nil), // 34: common.IdNameIdentifier
- (*common.IdFqnIdentifier)(nil), // 35: common.IdFqnIdentifier
- (*policy.RequestContext)(nil), // 36: policy.RequestContext
- (*policy.Obligation)(nil), // 37: policy.Obligation
- (*common.MetadataMutable)(nil), // 38: common.MetadataMutable
- (common.MetadataUpdateEnum)(0), // 39: common.MetadataUpdateEnum
- (*policy.PageRequest)(nil), // 40: policy.PageRequest
- (*policy.PageResponse)(nil), // 41: policy.PageResponse
- (*policy.ObligationValue)(nil), // 42: policy.ObligationValue
- (*policy.ObligationTrigger)(nil), // 43: policy.ObligationTrigger
+ (*GetObligationTriggerRequest)(nil), // 25: policy.obligations.GetObligationTriggerRequest
+ (*GetObligationTriggerResponse)(nil), // 26: policy.obligations.GetObligationTriggerResponse
+ (*AddObligationTriggerRequest)(nil), // 27: policy.obligations.AddObligationTriggerRequest
+ (*AddObligationTriggerResponse)(nil), // 28: policy.obligations.AddObligationTriggerResponse
+ (*RemoveObligationTriggerRequest)(nil), // 29: policy.obligations.RemoveObligationTriggerRequest
+ (*RemoveObligationTriggerResponse)(nil), // 30: policy.obligations.RemoveObligationTriggerResponse
+ (*ListObligationTriggersRequest)(nil), // 31: policy.obligations.ListObligationTriggersRequest
+ (*ListObligationTriggersResponse)(nil), // 32: policy.obligations.ListObligationTriggersResponse
+ nil, // 33: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
+ nil, // 34: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
+ (policy.SortDirection)(0), // 35: policy.SortDirection
+ (*common.IdNameIdentifier)(nil), // 36: common.IdNameIdentifier
+ (*common.IdFqnIdentifier)(nil), // 37: common.IdFqnIdentifier
+ (*policy.RequestContext)(nil), // 38: policy.RequestContext
+ (*policy.Obligation)(nil), // 39: policy.Obligation
+ (*common.MetadataMutable)(nil), // 40: common.MetadataMutable
+ (common.MetadataUpdateEnum)(0), // 41: common.MetadataUpdateEnum
+ (*policy.PageRequest)(nil), // 42: policy.PageRequest
+ (*policy.PageResponse)(nil), // 43: policy.PageResponse
+ (*policy.ObligationValue)(nil), // 44: policy.ObligationValue
+ (*policy.ObligationTrigger)(nil), // 45: policy.ObligationTrigger
}
var file_policy_obligations_obligations_proto_depIdxs = []int32{
0, // 0: policy.obligations.ObligationsSort.field:type_name -> policy.obligations.SortObligationsType
- 33, // 1: policy.obligations.ObligationsSort.direction:type_name -> policy.SortDirection
- 34, // 2: policy.obligations.ValueTriggerRequest.action:type_name -> common.IdNameIdentifier
- 35, // 3: policy.obligations.ValueTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
- 36, // 4: policy.obligations.ValueTriggerRequest.context:type_name -> policy.RequestContext
- 37, // 5: policy.obligations.GetObligationResponse.obligation:type_name -> policy.Obligation
- 31, // 6: policy.obligations.GetObligationsByFQNsResponse.fqn_obligation_map:type_name -> policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
- 38, // 7: policy.obligations.CreateObligationRequest.metadata:type_name -> common.MetadataMutable
- 37, // 8: policy.obligations.CreateObligationResponse.obligation:type_name -> policy.Obligation
- 38, // 9: policy.obligations.UpdateObligationRequest.metadata:type_name -> common.MetadataMutable
- 39, // 10: policy.obligations.UpdateObligationRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 37, // 11: policy.obligations.UpdateObligationResponse.obligation:type_name -> policy.Obligation
- 37, // 12: policy.obligations.DeleteObligationResponse.obligation:type_name -> policy.Obligation
- 40, // 13: policy.obligations.ListObligationsRequest.pagination:type_name -> policy.PageRequest
+ 35, // 1: policy.obligations.ObligationsSort.direction:type_name -> policy.SortDirection
+ 36, // 2: policy.obligations.ValueTriggerRequest.action:type_name -> common.IdNameIdentifier
+ 37, // 3: policy.obligations.ValueTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
+ 38, // 4: policy.obligations.ValueTriggerRequest.context:type_name -> policy.RequestContext
+ 39, // 5: policy.obligations.GetObligationResponse.obligation:type_name -> policy.Obligation
+ 33, // 6: policy.obligations.GetObligationsByFQNsResponse.fqn_obligation_map:type_name -> policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
+ 40, // 7: policy.obligations.CreateObligationRequest.metadata:type_name -> common.MetadataMutable
+ 39, // 8: policy.obligations.CreateObligationResponse.obligation:type_name -> policy.Obligation
+ 40, // 9: policy.obligations.UpdateObligationRequest.metadata:type_name -> common.MetadataMutable
+ 41, // 10: policy.obligations.UpdateObligationRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 39, // 11: policy.obligations.UpdateObligationResponse.obligation:type_name -> policy.Obligation
+ 39, // 12: policy.obligations.DeleteObligationResponse.obligation:type_name -> policy.Obligation
+ 42, // 13: policy.obligations.ListObligationsRequest.pagination:type_name -> policy.PageRequest
1, // 14: policy.obligations.ListObligationsRequest.sort:type_name -> policy.obligations.ObligationsSort
- 37, // 15: policy.obligations.ListObligationsResponse.obligations:type_name -> policy.Obligation
- 41, // 16: policy.obligations.ListObligationsResponse.pagination:type_name -> policy.PageResponse
- 42, // 17: policy.obligations.GetObligationValueResponse.value:type_name -> policy.ObligationValue
- 32, // 18: policy.obligations.GetObligationValuesByFQNsResponse.fqn_value_map:type_name -> policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
+ 39, // 15: policy.obligations.ListObligationsResponse.obligations:type_name -> policy.Obligation
+ 43, // 16: policy.obligations.ListObligationsResponse.pagination:type_name -> policy.PageResponse
+ 44, // 17: policy.obligations.GetObligationValueResponse.value:type_name -> policy.ObligationValue
+ 34, // 18: policy.obligations.GetObligationValuesByFQNsResponse.fqn_value_map:type_name -> policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
3, // 19: policy.obligations.CreateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
- 38, // 20: policy.obligations.CreateObligationValueRequest.metadata:type_name -> common.MetadataMutable
- 42, // 21: policy.obligations.CreateObligationValueResponse.value:type_name -> policy.ObligationValue
+ 40, // 20: policy.obligations.CreateObligationValueRequest.metadata:type_name -> common.MetadataMutable
+ 44, // 21: policy.obligations.CreateObligationValueResponse.value:type_name -> policy.ObligationValue
3, // 22: policy.obligations.UpdateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
- 38, // 23: policy.obligations.UpdateObligationValueRequest.metadata:type_name -> common.MetadataMutable
- 39, // 24: policy.obligations.UpdateObligationValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 42, // 25: policy.obligations.UpdateObligationValueResponse.value:type_name -> policy.ObligationValue
- 42, // 26: policy.obligations.DeleteObligationValueResponse.value:type_name -> policy.ObligationValue
- 35, // 27: policy.obligations.AddObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier
- 34, // 28: policy.obligations.AddObligationTriggerRequest.action:type_name -> common.IdNameIdentifier
- 35, // 29: policy.obligations.AddObligationTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
- 36, // 30: policy.obligations.AddObligationTriggerRequest.context:type_name -> policy.RequestContext
- 38, // 31: policy.obligations.AddObligationTriggerRequest.metadata:type_name -> common.MetadataMutable
- 43, // 32: policy.obligations.AddObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
- 43, // 33: policy.obligations.RemoveObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
- 40, // 34: policy.obligations.ListObligationTriggersRequest.pagination:type_name -> policy.PageRequest
- 43, // 35: policy.obligations.ListObligationTriggersResponse.triggers:type_name -> policy.ObligationTrigger
- 41, // 36: policy.obligations.ListObligationTriggersResponse.pagination:type_name -> policy.PageResponse
- 37, // 37: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry.value:type_name -> policy.Obligation
- 42, // 38: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry.value:type_name -> policy.ObligationValue
- 13, // 39: policy.obligations.Service.ListObligations:input_type -> policy.obligations.ListObligationsRequest
- 2, // 40: policy.obligations.Service.GetObligation:input_type -> policy.obligations.GetObligationRequest
- 5, // 41: policy.obligations.Service.GetObligationsByFQNs:input_type -> policy.obligations.GetObligationsByFQNsRequest
- 7, // 42: policy.obligations.Service.CreateObligation:input_type -> policy.obligations.CreateObligationRequest
- 9, // 43: policy.obligations.Service.UpdateObligation:input_type -> policy.obligations.UpdateObligationRequest
- 11, // 44: policy.obligations.Service.DeleteObligation:input_type -> policy.obligations.DeleteObligationRequest
- 15, // 45: policy.obligations.Service.GetObligationValue:input_type -> policy.obligations.GetObligationValueRequest
- 17, // 46: policy.obligations.Service.GetObligationValuesByFQNs:input_type -> policy.obligations.GetObligationValuesByFQNsRequest
- 19, // 47: policy.obligations.Service.CreateObligationValue:input_type -> policy.obligations.CreateObligationValueRequest
- 21, // 48: policy.obligations.Service.UpdateObligationValue:input_type -> policy.obligations.UpdateObligationValueRequest
- 23, // 49: policy.obligations.Service.DeleteObligationValue:input_type -> policy.obligations.DeleteObligationValueRequest
- 25, // 50: policy.obligations.Service.AddObligationTrigger:input_type -> policy.obligations.AddObligationTriggerRequest
- 27, // 51: policy.obligations.Service.RemoveObligationTrigger:input_type -> policy.obligations.RemoveObligationTriggerRequest
- 29, // 52: policy.obligations.Service.ListObligationTriggers:input_type -> policy.obligations.ListObligationTriggersRequest
- 14, // 53: policy.obligations.Service.ListObligations:output_type -> policy.obligations.ListObligationsResponse
- 4, // 54: policy.obligations.Service.GetObligation:output_type -> policy.obligations.GetObligationResponse
- 6, // 55: policy.obligations.Service.GetObligationsByFQNs:output_type -> policy.obligations.GetObligationsByFQNsResponse
- 8, // 56: policy.obligations.Service.CreateObligation:output_type -> policy.obligations.CreateObligationResponse
- 10, // 57: policy.obligations.Service.UpdateObligation:output_type -> policy.obligations.UpdateObligationResponse
- 12, // 58: policy.obligations.Service.DeleteObligation:output_type -> policy.obligations.DeleteObligationResponse
- 16, // 59: policy.obligations.Service.GetObligationValue:output_type -> policy.obligations.GetObligationValueResponse
- 18, // 60: policy.obligations.Service.GetObligationValuesByFQNs:output_type -> policy.obligations.GetObligationValuesByFQNsResponse
- 20, // 61: policy.obligations.Service.CreateObligationValue:output_type -> policy.obligations.CreateObligationValueResponse
- 22, // 62: policy.obligations.Service.UpdateObligationValue:output_type -> policy.obligations.UpdateObligationValueResponse
- 24, // 63: policy.obligations.Service.DeleteObligationValue:output_type -> policy.obligations.DeleteObligationValueResponse
- 26, // 64: policy.obligations.Service.AddObligationTrigger:output_type -> policy.obligations.AddObligationTriggerResponse
- 28, // 65: policy.obligations.Service.RemoveObligationTrigger:output_type -> policy.obligations.RemoveObligationTriggerResponse
- 30, // 66: policy.obligations.Service.ListObligationTriggers:output_type -> policy.obligations.ListObligationTriggersResponse
- 53, // [53:67] is the sub-list for method output_type
- 39, // [39:53] is the sub-list for method input_type
- 39, // [39:39] is the sub-list for extension type_name
- 39, // [39:39] is the sub-list for extension extendee
- 0, // [0:39] is the sub-list for field type_name
+ 40, // 23: policy.obligations.UpdateObligationValueRequest.metadata:type_name -> common.MetadataMutable
+ 41, // 24: policy.obligations.UpdateObligationValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 44, // 25: policy.obligations.UpdateObligationValueResponse.value:type_name -> policy.ObligationValue
+ 44, // 26: policy.obligations.DeleteObligationValueResponse.value:type_name -> policy.ObligationValue
+ 45, // 27: policy.obligations.GetObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
+ 37, // 28: policy.obligations.AddObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier
+ 36, // 29: policy.obligations.AddObligationTriggerRequest.action:type_name -> common.IdNameIdentifier
+ 37, // 30: policy.obligations.AddObligationTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
+ 38, // 31: policy.obligations.AddObligationTriggerRequest.context:type_name -> policy.RequestContext
+ 40, // 32: policy.obligations.AddObligationTriggerRequest.metadata:type_name -> common.MetadataMutable
+ 45, // 33: policy.obligations.AddObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
+ 45, // 34: policy.obligations.RemoveObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
+ 42, // 35: policy.obligations.ListObligationTriggersRequest.pagination:type_name -> policy.PageRequest
+ 45, // 36: policy.obligations.ListObligationTriggersResponse.triggers:type_name -> policy.ObligationTrigger
+ 43, // 37: policy.obligations.ListObligationTriggersResponse.pagination:type_name -> policy.PageResponse
+ 39, // 38: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry.value:type_name -> policy.Obligation
+ 44, // 39: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry.value:type_name -> policy.ObligationValue
+ 13, // 40: policy.obligations.Service.ListObligations:input_type -> policy.obligations.ListObligationsRequest
+ 2, // 41: policy.obligations.Service.GetObligation:input_type -> policy.obligations.GetObligationRequest
+ 5, // 42: policy.obligations.Service.GetObligationsByFQNs:input_type -> policy.obligations.GetObligationsByFQNsRequest
+ 7, // 43: policy.obligations.Service.CreateObligation:input_type -> policy.obligations.CreateObligationRequest
+ 9, // 44: policy.obligations.Service.UpdateObligation:input_type -> policy.obligations.UpdateObligationRequest
+ 11, // 45: policy.obligations.Service.DeleteObligation:input_type -> policy.obligations.DeleteObligationRequest
+ 15, // 46: policy.obligations.Service.GetObligationValue:input_type -> policy.obligations.GetObligationValueRequest
+ 17, // 47: policy.obligations.Service.GetObligationValuesByFQNs:input_type -> policy.obligations.GetObligationValuesByFQNsRequest
+ 19, // 48: policy.obligations.Service.CreateObligationValue:input_type -> policy.obligations.CreateObligationValueRequest
+ 21, // 49: policy.obligations.Service.UpdateObligationValue:input_type -> policy.obligations.UpdateObligationValueRequest
+ 23, // 50: policy.obligations.Service.DeleteObligationValue:input_type -> policy.obligations.DeleteObligationValueRequest
+ 25, // 51: policy.obligations.Service.GetObligationTrigger:input_type -> policy.obligations.GetObligationTriggerRequest
+ 27, // 52: policy.obligations.Service.AddObligationTrigger:input_type -> policy.obligations.AddObligationTriggerRequest
+ 29, // 53: policy.obligations.Service.RemoveObligationTrigger:input_type -> policy.obligations.RemoveObligationTriggerRequest
+ 31, // 54: policy.obligations.Service.ListObligationTriggers:input_type -> policy.obligations.ListObligationTriggersRequest
+ 14, // 55: policy.obligations.Service.ListObligations:output_type -> policy.obligations.ListObligationsResponse
+ 4, // 56: policy.obligations.Service.GetObligation:output_type -> policy.obligations.GetObligationResponse
+ 6, // 57: policy.obligations.Service.GetObligationsByFQNs:output_type -> policy.obligations.GetObligationsByFQNsResponse
+ 8, // 58: policy.obligations.Service.CreateObligation:output_type -> policy.obligations.CreateObligationResponse
+ 10, // 59: policy.obligations.Service.UpdateObligation:output_type -> policy.obligations.UpdateObligationResponse
+ 12, // 60: policy.obligations.Service.DeleteObligation:output_type -> policy.obligations.DeleteObligationResponse
+ 16, // 61: policy.obligations.Service.GetObligationValue:output_type -> policy.obligations.GetObligationValueResponse
+ 18, // 62: policy.obligations.Service.GetObligationValuesByFQNs:output_type -> policy.obligations.GetObligationValuesByFQNsResponse
+ 20, // 63: policy.obligations.Service.CreateObligationValue:output_type -> policy.obligations.CreateObligationValueResponse
+ 22, // 64: policy.obligations.Service.UpdateObligationValue:output_type -> policy.obligations.UpdateObligationValueResponse
+ 24, // 65: policy.obligations.Service.DeleteObligationValue:output_type -> policy.obligations.DeleteObligationValueResponse
+ 26, // 66: policy.obligations.Service.GetObligationTrigger:output_type -> policy.obligations.GetObligationTriggerResponse
+ 28, // 67: policy.obligations.Service.AddObligationTrigger:output_type -> policy.obligations.AddObligationTriggerResponse
+ 30, // 68: policy.obligations.Service.RemoveObligationTrigger:output_type -> policy.obligations.RemoveObligationTriggerResponse
+ 32, // 69: policy.obligations.Service.ListObligationTriggers:output_type -> policy.obligations.ListObligationTriggersResponse
+ 55, // [55:70] is the sub-list for method output_type
+ 40, // [40:55] is the sub-list for method input_type
+ 40, // [40:40] is the sub-list for extension type_name
+ 40, // [40:40] is the sub-list for extension extendee
+ 0, // [0:40] is the sub-list for field type_name
}
func init() { file_policy_obligations_obligations_proto_init() }
@@ -2720,7 +2837,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AddObligationTriggerRequest); i {
+ switch v := v.(*GetObligationTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2732,7 +2849,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AddObligationTriggerResponse); i {
+ switch v := v.(*GetObligationTriggerResponse); i {
case 0:
return &v.state
case 1:
@@ -2744,7 +2861,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveObligationTriggerRequest); i {
+ switch v := v.(*AddObligationTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2756,7 +2873,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveObligationTriggerResponse); i {
+ switch v := v.(*AddObligationTriggerResponse); i {
case 0:
return &v.state
case 1:
@@ -2768,7 +2885,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListObligationTriggersRequest); i {
+ switch v := v.(*RemoveObligationTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2780,6 +2897,30 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RemoveObligationTriggerResponse); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_obligations_obligations_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListObligationTriggersRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_obligations_obligations_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListObligationTriggersResponse); i {
case 0:
return &v.state
@@ -2798,7 +2939,7 @@ func file_policy_obligations_obligations_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_policy_obligations_obligations_proto_rawDesc,
NumEnums: 1,
- NumMessages: 32,
+ NumMessages: 34,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/protocol/go/policy/obligations/obligations_grpc.pb.go b/protocol/go/policy/obligations/obligations_grpc.pb.go
index 947a537e87..918625f22d 100644
--- a/protocol/go/policy/obligations/obligations_grpc.pb.go
+++ b/protocol/go/policy/obligations/obligations_grpc.pb.go
@@ -30,6 +30,7 @@ const (
Service_CreateObligationValue_FullMethodName = "/policy.obligations.Service/CreateObligationValue"
Service_UpdateObligationValue_FullMethodName = "/policy.obligations.Service/UpdateObligationValue"
Service_DeleteObligationValue_FullMethodName = "/policy.obligations.Service/DeleteObligationValue"
+ Service_GetObligationTrigger_FullMethodName = "/policy.obligations.Service/GetObligationTrigger"
Service_AddObligationTrigger_FullMethodName = "/policy.obligations.Service/AddObligationTrigger"
Service_RemoveObligationTrigger_FullMethodName = "/policy.obligations.Service/RemoveObligationTrigger"
Service_ListObligationTriggers_FullMethodName = "/policy.obligations.Service/ListObligationTriggers"
@@ -50,6 +51,7 @@ type ServiceClient interface {
CreateObligationValue(ctx context.Context, in *CreateObligationValueRequest, opts ...grpc.CallOption) (*CreateObligationValueResponse, error)
UpdateObligationValue(ctx context.Context, in *UpdateObligationValueRequest, opts ...grpc.CallOption) (*UpdateObligationValueResponse, error)
DeleteObligationValue(ctx context.Context, in *DeleteObligationValueRequest, opts ...grpc.CallOption) (*DeleteObligationValueResponse, error)
+ GetObligationTrigger(ctx context.Context, in *GetObligationTriggerRequest, opts ...grpc.CallOption) (*GetObligationTriggerResponse, error)
AddObligationTrigger(ctx context.Context, in *AddObligationTriggerRequest, opts ...grpc.CallOption) (*AddObligationTriggerResponse, error)
RemoveObligationTrigger(ctx context.Context, in *RemoveObligationTriggerRequest, opts ...grpc.CallOption) (*RemoveObligationTriggerResponse, error)
ListObligationTriggers(ctx context.Context, in *ListObligationTriggersRequest, opts ...grpc.CallOption) (*ListObligationTriggersResponse, error)
@@ -162,6 +164,15 @@ func (c *serviceClient) DeleteObligationValue(ctx context.Context, in *DeleteObl
return out, nil
}
+func (c *serviceClient) GetObligationTrigger(ctx context.Context, in *GetObligationTriggerRequest, opts ...grpc.CallOption) (*GetObligationTriggerResponse, error) {
+ out := new(GetObligationTriggerResponse)
+ err := c.cc.Invoke(ctx, Service_GetObligationTrigger_FullMethodName, in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *serviceClient) AddObligationTrigger(ctx context.Context, in *AddObligationTriggerRequest, opts ...grpc.CallOption) (*AddObligationTriggerResponse, error) {
out := new(AddObligationTriggerResponse)
err := c.cc.Invoke(ctx, Service_AddObligationTrigger_FullMethodName, in, out, opts...)
@@ -204,6 +215,7 @@ type ServiceServer interface {
CreateObligationValue(context.Context, *CreateObligationValueRequest) (*CreateObligationValueResponse, error)
UpdateObligationValue(context.Context, *UpdateObligationValueRequest) (*UpdateObligationValueResponse, error)
DeleteObligationValue(context.Context, *DeleteObligationValueRequest) (*DeleteObligationValueResponse, error)
+ GetObligationTrigger(context.Context, *GetObligationTriggerRequest) (*GetObligationTriggerResponse, error)
AddObligationTrigger(context.Context, *AddObligationTriggerRequest) (*AddObligationTriggerResponse, error)
RemoveObligationTrigger(context.Context, *RemoveObligationTriggerRequest) (*RemoveObligationTriggerResponse, error)
ListObligationTriggers(context.Context, *ListObligationTriggersRequest) (*ListObligationTriggersResponse, error)
@@ -247,6 +259,9 @@ func (UnimplementedServiceServer) UpdateObligationValue(context.Context, *Update
func (UnimplementedServiceServer) DeleteObligationValue(context.Context, *DeleteObligationValueRequest) (*DeleteObligationValueResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteObligationValue not implemented")
}
+func (UnimplementedServiceServer) GetObligationTrigger(context.Context, *GetObligationTriggerRequest) (*GetObligationTriggerResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetObligationTrigger not implemented")
+}
func (UnimplementedServiceServer) AddObligationTrigger(context.Context, *AddObligationTriggerRequest) (*AddObligationTriggerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AddObligationTrigger not implemented")
}
@@ -467,6 +482,24 @@ func _Service_DeleteObligationValue_Handler(srv interface{}, ctx context.Context
return interceptor(ctx, in, info, handler)
}
+func _Service_GetObligationTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetObligationTriggerRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ServiceServer).GetObligationTrigger(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Service_GetObligationTrigger_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ServiceServer).GetObligationTrigger(ctx, req.(*GetObligationTriggerRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _Service_AddObligationTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AddObligationTriggerRequest)
if err := dec(in); err != nil {
@@ -572,6 +605,10 @@ var Service_ServiceDesc = grpc.ServiceDesc{
MethodName: "DeleteObligationValue",
Handler: _Service_DeleteObligationValue_Handler,
},
+ {
+ MethodName: "GetObligationTrigger",
+ Handler: _Service_GetObligationTrigger_Handler,
+ },
{
MethodName: "AddObligationTrigger",
Handler: _Service_AddObligationTrigger_Handler,
diff --git a/protocol/go/policy/obligations/obligationsconnect/obligations.connect.go b/protocol/go/policy/obligations/obligationsconnect/obligations.connect.go
index 60bf5ed4f1..2650d8e094 100644
--- a/protocol/go/policy/obligations/obligationsconnect/obligations.connect.go
+++ b/protocol/go/policy/obligations/obligationsconnect/obligations.connect.go
@@ -64,6 +64,9 @@ const (
// ServiceDeleteObligationValueProcedure is the fully-qualified name of the Service's
// DeleteObligationValue RPC.
ServiceDeleteObligationValueProcedure = "/policy.obligations.Service/DeleteObligationValue"
+ // ServiceGetObligationTriggerProcedure is the fully-qualified name of the Service's
+ // GetObligationTrigger RPC.
+ ServiceGetObligationTriggerProcedure = "/policy.obligations.Service/GetObligationTrigger"
// ServiceAddObligationTriggerProcedure is the fully-qualified name of the Service's
// AddObligationTrigger RPC.
ServiceAddObligationTriggerProcedure = "/policy.obligations.Service/AddObligationTrigger"
@@ -88,6 +91,7 @@ type ServiceClient interface {
CreateObligationValue(context.Context, *connect.Request[obligations.CreateObligationValueRequest]) (*connect.Response[obligations.CreateObligationValueResponse], error)
UpdateObligationValue(context.Context, *connect.Request[obligations.UpdateObligationValueRequest]) (*connect.Response[obligations.UpdateObligationValueResponse], error)
DeleteObligationValue(context.Context, *connect.Request[obligations.DeleteObligationValueRequest]) (*connect.Response[obligations.DeleteObligationValueResponse], error)
+ GetObligationTrigger(context.Context, *connect.Request[obligations.GetObligationTriggerRequest]) (*connect.Response[obligations.GetObligationTriggerResponse], error)
AddObligationTrigger(context.Context, *connect.Request[obligations.AddObligationTriggerRequest]) (*connect.Response[obligations.AddObligationTriggerResponse], error)
RemoveObligationTrigger(context.Context, *connect.Request[obligations.RemoveObligationTriggerRequest]) (*connect.Response[obligations.RemoveObligationTriggerResponse], error)
ListObligationTriggers(context.Context, *connect.Request[obligations.ListObligationTriggersRequest]) (*connect.Response[obligations.ListObligationTriggersResponse], error)
@@ -175,6 +179,13 @@ func NewServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...con
connect.WithSchema(serviceMethods.ByName("DeleteObligationValue")),
connect.WithClientOptions(opts...),
),
+ getObligationTrigger: connect.NewClient[obligations.GetObligationTriggerRequest, obligations.GetObligationTriggerResponse](
+ httpClient,
+ baseURL+ServiceGetObligationTriggerProcedure,
+ connect.WithSchema(serviceMethods.ByName("GetObligationTrigger")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithClientOptions(opts...),
+ ),
addObligationTrigger: connect.NewClient[obligations.AddObligationTriggerRequest, obligations.AddObligationTriggerResponse](
httpClient,
baseURL+ServiceAddObligationTriggerProcedure,
@@ -210,6 +221,7 @@ type serviceClient struct {
createObligationValue *connect.Client[obligations.CreateObligationValueRequest, obligations.CreateObligationValueResponse]
updateObligationValue *connect.Client[obligations.UpdateObligationValueRequest, obligations.UpdateObligationValueResponse]
deleteObligationValue *connect.Client[obligations.DeleteObligationValueRequest, obligations.DeleteObligationValueResponse]
+ getObligationTrigger *connect.Client[obligations.GetObligationTriggerRequest, obligations.GetObligationTriggerResponse]
addObligationTrigger *connect.Client[obligations.AddObligationTriggerRequest, obligations.AddObligationTriggerResponse]
removeObligationTrigger *connect.Client[obligations.RemoveObligationTriggerRequest, obligations.RemoveObligationTriggerResponse]
listObligationTriggers *connect.Client[obligations.ListObligationTriggersRequest, obligations.ListObligationTriggersResponse]
@@ -270,6 +282,11 @@ func (c *serviceClient) DeleteObligationValue(ctx context.Context, req *connect.
return c.deleteObligationValue.CallUnary(ctx, req)
}
+// GetObligationTrigger calls policy.obligations.Service.GetObligationTrigger.
+func (c *serviceClient) GetObligationTrigger(ctx context.Context, req *connect.Request[obligations.GetObligationTriggerRequest]) (*connect.Response[obligations.GetObligationTriggerResponse], error) {
+ return c.getObligationTrigger.CallUnary(ctx, req)
+}
+
// AddObligationTrigger calls policy.obligations.Service.AddObligationTrigger.
func (c *serviceClient) AddObligationTrigger(ctx context.Context, req *connect.Request[obligations.AddObligationTriggerRequest]) (*connect.Response[obligations.AddObligationTriggerResponse], error) {
return c.addObligationTrigger.CallUnary(ctx, req)
@@ -298,6 +315,7 @@ type ServiceHandler interface {
CreateObligationValue(context.Context, *connect.Request[obligations.CreateObligationValueRequest]) (*connect.Response[obligations.CreateObligationValueResponse], error)
UpdateObligationValue(context.Context, *connect.Request[obligations.UpdateObligationValueRequest]) (*connect.Response[obligations.UpdateObligationValueResponse], error)
DeleteObligationValue(context.Context, *connect.Request[obligations.DeleteObligationValueRequest]) (*connect.Response[obligations.DeleteObligationValueResponse], error)
+ GetObligationTrigger(context.Context, *connect.Request[obligations.GetObligationTriggerRequest]) (*connect.Response[obligations.GetObligationTriggerResponse], error)
AddObligationTrigger(context.Context, *connect.Request[obligations.AddObligationTriggerRequest]) (*connect.Response[obligations.AddObligationTriggerResponse], error)
RemoveObligationTrigger(context.Context, *connect.Request[obligations.RemoveObligationTriggerRequest]) (*connect.Response[obligations.RemoveObligationTriggerResponse], error)
ListObligationTriggers(context.Context, *connect.Request[obligations.ListObligationTriggersRequest]) (*connect.Response[obligations.ListObligationTriggersResponse], error)
@@ -381,6 +399,13 @@ func NewServiceHandler(svc ServiceHandler, opts ...connect.HandlerOption) (strin
connect.WithSchema(serviceMethods.ByName("DeleteObligationValue")),
connect.WithHandlerOptions(opts...),
)
+ serviceGetObligationTriggerHandler := connect.NewUnaryHandler(
+ ServiceGetObligationTriggerProcedure,
+ svc.GetObligationTrigger,
+ connect.WithSchema(serviceMethods.ByName("GetObligationTrigger")),
+ connect.WithIdempotency(connect.IdempotencyNoSideEffects),
+ connect.WithHandlerOptions(opts...),
+ )
serviceAddObligationTriggerHandler := connect.NewUnaryHandler(
ServiceAddObligationTriggerProcedure,
svc.AddObligationTrigger,
@@ -424,6 +449,8 @@ func NewServiceHandler(svc ServiceHandler, opts ...connect.HandlerOption) (strin
serviceUpdateObligationValueHandler.ServeHTTP(w, r)
case ServiceDeleteObligationValueProcedure:
serviceDeleteObligationValueHandler.ServeHTTP(w, r)
+ case ServiceGetObligationTriggerProcedure:
+ serviceGetObligationTriggerHandler.ServeHTTP(w, r)
case ServiceAddObligationTriggerProcedure:
serviceAddObligationTriggerHandler.ServeHTTP(w, r)
case ServiceRemoveObligationTriggerProcedure:
@@ -483,6 +510,10 @@ func (UnimplementedServiceHandler) DeleteObligationValue(context.Context, *conne
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.obligations.Service.DeleteObligationValue is not implemented"))
}
+func (UnimplementedServiceHandler) GetObligationTrigger(context.Context, *connect.Request[obligations.GetObligationTriggerRequest]) (*connect.Response[obligations.GetObligationTriggerResponse], error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.obligations.Service.GetObligationTrigger is not implemented"))
+}
+
func (UnimplementedServiceHandler) AddObligationTrigger(context.Context, *connect.Request[obligations.AddObligationTriggerRequest]) (*connect.Response[obligations.AddObligationTriggerResponse], error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("policy.obligations.Service.AddObligationTrigger is not implemented"))
}
diff --git a/sdk/sdkconnect/obligations.go b/sdk/sdkconnect/obligations.go
index e51e808128..a1e7427dba 100644
--- a/sdk/sdkconnect/obligations.go
+++ b/sdk/sdkconnect/obligations.go
@@ -28,6 +28,7 @@ type ObligationsServiceClient interface {
CreateObligationValue(ctx context.Context, req *obligations.CreateObligationValueRequest) (*obligations.CreateObligationValueResponse, error)
UpdateObligationValue(ctx context.Context, req *obligations.UpdateObligationValueRequest) (*obligations.UpdateObligationValueResponse, error)
DeleteObligationValue(ctx context.Context, req *obligations.DeleteObligationValueRequest) (*obligations.DeleteObligationValueResponse, error)
+ GetObligationTrigger(ctx context.Context, req *obligations.GetObligationTriggerRequest) (*obligations.GetObligationTriggerResponse, error)
AddObligationTrigger(ctx context.Context, req *obligations.AddObligationTriggerRequest) (*obligations.AddObligationTriggerResponse, error)
RemoveObligationTrigger(ctx context.Context, req *obligations.RemoveObligationTriggerRequest) (*obligations.RemoveObligationTriggerResponse, error)
ListObligationTriggers(ctx context.Context, req *obligations.ListObligationTriggersRequest) (*obligations.ListObligationTriggersResponse, error)
@@ -132,6 +133,15 @@ func (w *ObligationsServiceClientConnectWrapper) DeleteObligationValue(ctx conte
return res.Msg, err
}
+func (w *ObligationsServiceClientConnectWrapper) GetObligationTrigger(ctx context.Context, req *obligations.GetObligationTriggerRequest) (*obligations.GetObligationTriggerResponse, error) {
+ // Wrap Connect RPC client request
+ res, err := w.ServiceClient.GetObligationTrigger(ctx, connect.NewRequest(req))
+ if res == nil {
+ return nil, err
+ }
+ return res.Msg, err
+}
+
func (w *ObligationsServiceClientConnectWrapper) AddObligationTrigger(ctx context.Context, req *obligations.AddObligationTriggerRequest) (*obligations.AddObligationTriggerResponse, error) {
// Wrap Connect RPC client request
res, err := w.ServiceClient.AddObligationTrigger(ctx, connect.NewRequest(req))
diff --git a/service/integration/obligation_triggers_test.go b/service/integration/obligation_triggers_test.go
index 62d12cc198..2b227772f3 100644
--- a/service/integration/obligation_triggers_test.go
+++ b/service/integration/obligation_triggers_test.go
@@ -422,6 +422,29 @@ func (s *ObligationTriggersSuite) Test_CreateObligationTrigger_ActionIDDifferent
s.Nil(trigger)
}
+func (s *ObligationTriggersSuite) Test_GetObligationTrigger_Success() {
+ trigger := s.createGenericTrigger()
+ s.triggerIDsToClean = append(s.triggerIDsToClean, trigger.GetId())
+
+ retrievedTrigger, err := s.db.PolicyClient.GetObligationTrigger(s.ctx, &obligations.GetObligationTriggerRequest{
+ Id: trigger.GetId(),
+ })
+ s.Require().NoError(err)
+ s.Require().NotNil(retrievedTrigger)
+ s.Require().Equal(trigger.GetId(), retrievedTrigger.GetId())
+ s.validateTrigger(retrievedTrigger, trigger.GetObligationValue(), trigger.GetAttributeValue(), trigger.GetAction(), true)
+ s.Require().NotNil(retrievedTrigger.GetMetadata())
+}
+
+func (s *ObligationTriggersSuite) Test_GetObligationTrigger_NotFound_Fails() {
+ randomID := uuid.NewString()
+ _, err := s.db.PolicyClient.GetObligationTrigger(s.ctx, &obligations.GetObligationTriggerRequest{
+ Id: randomID,
+ })
+ s.Require().Error(err)
+ s.Require().ErrorIs(err, db.ErrNotFound)
+}
+
func (s *ObligationTriggersSuite) Test_DeleteObligationTrigger_Success() {
trigger := s.createGenericTrigger()
deletedTrigger, err := s.db.PolicyClient.DeleteObligationTrigger(s.ctx, &obligations.RemoveObligationTriggerRequest{
diff --git a/service/policy/db/obligations.go b/service/policy/db/obligations.go
index dcb20c9bfe..d66108ebf6 100644
--- a/service/policy/db/obligations.go
+++ b/service/policy/db/obligations.go
@@ -23,6 +23,32 @@ func setOblValFQNs(values []*policy.ObligationValue, nsFQN, name string) []*poli
return values
}
+func hydrateObligationTrigger(triggerJSON, metadataJSON []byte) (*policy.ObligationTrigger, error) {
+ trigger, err := unmarshalObligationTrigger(triggerJSON)
+ if err != nil {
+ return nil, fmt.Errorf("failed to unmarshal obligation trigger: %w", err)
+ }
+
+ metadata := &common.Metadata{}
+ if err := unmarshalMetadata(metadataJSON, metadata); err != nil {
+ return nil, fmt.Errorf("failed to unmarshal obligation trigger metadata: %w", err)
+ }
+
+ if returnedOblVal := trigger.GetObligationValue(); returnedOblVal != nil {
+ if obligation := returnedOblVal.GetObligation(); obligation != nil && obligation.GetNamespace() != nil {
+ returnedOblVal.Fqn = identifier.BuildOblValFQN(
+ obligation.GetNamespace().GetFqn(),
+ obligation.GetName(),
+ returnedOblVal.GetValue(),
+ )
+ }
+ }
+
+ trigger.Metadata = metadata
+
+ return trigger, nil
+}
+
///
/// Obligation Definitions
///
@@ -647,6 +673,16 @@ func (c PolicyDBClient) DeleteObligationValue(ctx context.Context, r *obligation
// ! Obligation Triggers
// ********************************************
+func (c PolicyDBClient) GetObligationTrigger(ctx context.Context, r *obligations.GetObligationTriggerRequest) (*policy.ObligationTrigger, error) {
+ id := r.GetId()
+ row, err := c.queries.getObligationTrigger(ctx, id)
+ if err != nil {
+ return nil, db.WrapIfKnownInvalidQueryErr(err)
+ }
+
+ return hydrateObligationTrigger(row.Trigger, row.Metadata)
+}
+
func (c PolicyDBClient) CreateObligationTrigger(ctx context.Context, r *obligations.AddObligationTriggerRequest) (*policy.ObligationTrigger, error) {
metadataJSON, _, err := db.MarshalCreateMetadata(r.GetMetadata())
if err != nil {
@@ -696,23 +732,7 @@ func (c PolicyDBClient) CreateObligationTrigger(ctx context.Context, r *obligati
return nil, wrappedErr
}
- metadata := &common.Metadata{}
- if err := unmarshalMetadata(row.Metadata, metadata); err != nil {
- return nil, err
- }
-
- trigger, err := unmarshalObligationTrigger(row.Trigger)
- if err != nil {
- return nil, err
- }
-
- if returnedOblVal := trigger.GetObligationValue(); returnedOblVal != nil {
- returnedOblVal.Fqn = oblVal.GetFqn()
- }
-
- trigger.Metadata = metadata
-
- return trigger, nil
+ return hydrateObligationTrigger(row.Trigger, row.Metadata)
}
func (c PolicyDBClient) resolveObligationTriggerActionID(ctx context.Context, action *common.IdNameIdentifier, obligationNamespaceID string) (string, error) {
@@ -828,20 +848,11 @@ func (c PolicyDBClient) ListObligationTriggers(ctx context.Context, r *obligatio
var result []*policy.ObligationTrigger
for _, row := range rows {
- metadata := &common.Metadata{}
- if err := unmarshalMetadata(row.Metadata, metadata); err != nil {
- return nil, nil, err
- }
-
- obligationTrigger, err := unmarshalObligationTrigger(row.Trigger)
+ obligationTrigger, err := hydrateObligationTrigger(row.Trigger, row.Metadata)
if err != nil {
return nil, nil, err
}
- if returnedOblVal := obligationTrigger.GetObligationValue(); returnedOblVal != nil {
- returnedOblVal.Fqn = identifier.BuildOblValFQN(returnedOblVal.GetObligation().GetNamespace().GetFqn(), returnedOblVal.GetObligation().GetName(), returnedOblVal.GetValue())
- }
- obligationTrigger.Metadata = metadata
result = append(result, obligationTrigger)
}
diff --git a/service/policy/db/obligations.sql.go b/service/policy/db/obligations.sql.go
index ee23b5f4da..a7562325f4 100644
--- a/service/policy/db/obligations.sql.go
+++ b/service/policy/db/obligations.sql.go
@@ -147,7 +147,6 @@ func (q *Queries) createObligation(ctx context.Context, arg createObligationPara
}
const createObligationTrigger = `-- name: createObligationTrigger :one
-
WITH ov_id AS (
SELECT ov.id, od.namespace_id
FROM obligation_values_standard ov
@@ -248,9 +247,6 @@ type createObligationTriggerRow struct {
Trigger []byte `json:"trigger"`
}
-// --------------------------------------------------------------
-// OBLIGATION TRIGGERS
-// --------------------------------------------------------------
// Gets the attribute value, but also ensures that the attribute value belongs to the same namespace as the obligation, to which the obligation value belongs
//
// WITH ov_id AS (
@@ -780,6 +776,134 @@ func (q *Queries) getObligation(ctx context.Context, arg getObligationParams) (g
return i, err
}
+const getObligationTrigger = `-- name: getObligationTrigger :one
+
+SELECT
+ JSON_STRIP_NULLS(
+ JSON_BUILD_OBJECT(
+ 'id', ot.id,
+ 'obligation_value', JSON_BUILD_OBJECT(
+ 'id', ov.id,
+ 'value', ov.value,
+ 'obligation', JSON_BUILD_OBJECT(
+ 'id', od.id,
+ 'name', od.name,
+ 'namespace', JSON_BUILD_OBJECT(
+ 'id', n.id,
+ 'name', n.name,
+ 'fqn', COALESCE(ns_fqns.fqn, '')
+ )
+ )
+ ),
+ 'action', JSON_BUILD_OBJECT(
+ 'id', a.id,
+ 'name', a.name
+ ),
+ 'attribute_value', JSON_BUILD_OBJECT(
+ 'id', av.id,
+ 'value', av.value,
+ 'fqn', COALESCE(av_fqns.fqn, '')
+ ),
+ 'context', CASE
+ WHEN ot.client_id IS NOT NULL THEN JSON_BUILD_ARRAY(
+ JSON_BUILD_OBJECT(
+ 'pep', JSON_BUILD_OBJECT(
+ 'client_id', ot.client_id
+ )
+ )
+ )
+ ELSE '[]'::JSON
+ END
+ )
+ ) as trigger,
+ JSON_STRIP_NULLS(
+ JSON_BUILD_OBJECT(
+ 'labels', ot.metadata -> 'labels',
+ 'created_at', ot.created_at,
+ 'updated_at', ot.updated_at
+ )
+ ) as metadata
+FROM obligation_triggers ot
+JOIN obligation_values_standard ov ON ot.obligation_value_id = ov.id
+JOIN obligation_definitions od ON ov.obligation_definition_id = od.id
+JOIN attribute_namespaces n ON od.namespace_id = n.id
+LEFT JOIN attribute_fqns ns_fqns ON ns_fqns.namespace_id = n.id AND ns_fqns.attribute_id IS NULL AND ns_fqns.value_id IS NULL
+JOIN actions a ON ot.action_id = a.id
+JOIN attribute_values av ON ot.attribute_value_id = av.id
+LEFT JOIN attribute_fqns av_fqns ON av_fqns.value_id = av.id
+WHERE ot.id = $1
+`
+
+type getObligationTriggerRow struct {
+ Trigger []byte `json:"trigger"`
+ Metadata []byte `json:"metadata"`
+}
+
+// --------------------------------------------------------------
+// OBLIGATION TRIGGERS
+// --------------------------------------------------------------
+//
+// SELECT
+// JSON_STRIP_NULLS(
+// JSON_BUILD_OBJECT(
+// 'id', ot.id,
+// 'obligation_value', JSON_BUILD_OBJECT(
+// 'id', ov.id,
+// 'value', ov.value,
+// 'obligation', JSON_BUILD_OBJECT(
+// 'id', od.id,
+// 'name', od.name,
+// 'namespace', JSON_BUILD_OBJECT(
+// 'id', n.id,
+// 'name', n.name,
+// 'fqn', COALESCE(ns_fqns.fqn, '')
+// )
+// )
+// ),
+// 'action', JSON_BUILD_OBJECT(
+// 'id', a.id,
+// 'name', a.name
+// ),
+// 'attribute_value', JSON_BUILD_OBJECT(
+// 'id', av.id,
+// 'value', av.value,
+// 'fqn', COALESCE(av_fqns.fqn, '')
+// ),
+// 'context', CASE
+// WHEN ot.client_id IS NOT NULL THEN JSON_BUILD_ARRAY(
+// JSON_BUILD_OBJECT(
+// 'pep', JSON_BUILD_OBJECT(
+// 'client_id', ot.client_id
+// )
+// )
+// )
+// ELSE '[]'::JSON
+// END
+// )
+// ) as trigger,
+// JSON_STRIP_NULLS(
+// JSON_BUILD_OBJECT(
+// 'labels', ot.metadata -> 'labels',
+// 'created_at', ot.created_at,
+// 'updated_at', ot.updated_at
+// )
+// ) as metadata
+// FROM obligation_triggers ot
+// JOIN obligation_values_standard ov ON ot.obligation_value_id = ov.id
+// JOIN obligation_definitions od ON ov.obligation_definition_id = od.id
+// JOIN attribute_namespaces n ON od.namespace_id = n.id
+// LEFT JOIN attribute_fqns ns_fqns ON ns_fqns.namespace_id = n.id AND ns_fqns.attribute_id IS NULL AND ns_fqns.value_id IS NULL
+// JOIN actions a ON ot.action_id = a.id
+// JOIN attribute_values av ON ot.attribute_value_id = av.id
+// LEFT JOIN attribute_fqns av_fqns ON av_fqns.value_id = av.id
+// WHERE ot.id = $1
+func (q *Queries) getObligationTrigger(ctx context.Context, id string) (getObligationTriggerRow, error) {
+ row := q.db.QueryRow(ctx, getObligationTrigger, id)
+ var i getObligationTriggerRow
+ err := row.Scan(&i.Trigger, &i.Metadata)
+ return i, err
+}
+
const getObligationValue = `-- name: getObligationValue :one
WITH obligation_triggers_agg AS (
SELECT
diff --git a/service/policy/db/queries/obligations.sql b/service/policy/db/queries/obligations.sql
index cab5731e68..fca8f4ae63 100644
--- a/service/policy/db/queries/obligations.sql
+++ b/service/policy/db/queries/obligations.sql
@@ -495,6 +495,62 @@ RETURNING id;
-- OBLIGATION TRIGGERS
----------------------------------------------------------------
+-- name: getObligationTrigger :one
+SELECT
+ JSON_STRIP_NULLS(
+ JSON_BUILD_OBJECT(
+ 'id', ot.id,
+ 'obligation_value', JSON_BUILD_OBJECT(
+ 'id', ov.id,
+ 'value', ov.value,
+ 'obligation', JSON_BUILD_OBJECT(
+ 'id', od.id,
+ 'name', od.name,
+ 'namespace', JSON_BUILD_OBJECT(
+ 'id', n.id,
+ 'name', n.name,
+ 'fqn', COALESCE(ns_fqns.fqn, '')
+ )
+ )
+ ),
+ 'action', JSON_BUILD_OBJECT(
+ 'id', a.id,
+ 'name', a.name
+ ),
+ 'attribute_value', JSON_BUILD_OBJECT(
+ 'id', av.id,
+ 'value', av.value,
+ 'fqn', COALESCE(av_fqns.fqn, '')
+ ),
+ 'context', CASE
+ WHEN ot.client_id IS NOT NULL THEN JSON_BUILD_ARRAY(
+ JSON_BUILD_OBJECT(
+ 'pep', JSON_BUILD_OBJECT(
+ 'client_id', ot.client_id
+ )
+ )
+ )
+ ELSE '[]'::JSON
+ END
+ )
+ ) as trigger,
+ JSON_STRIP_NULLS(
+ JSON_BUILD_OBJECT(
+ 'labels', ot.metadata -> 'labels',
+ 'created_at', ot.created_at,
+ 'updated_at', ot.updated_at
+ )
+ ) as metadata
+FROM obligation_triggers ot
+JOIN obligation_values_standard ov ON ot.obligation_value_id = ov.id
+JOIN obligation_definitions od ON ov.obligation_definition_id = od.id
+JOIN attribute_namespaces n ON od.namespace_id = n.id
+LEFT JOIN attribute_fqns ns_fqns ON ns_fqns.namespace_id = n.id AND ns_fqns.attribute_id IS NULL AND ns_fqns.value_id IS NULL
+JOIN actions a ON ot.action_id = a.id
+JOIN attribute_values av ON ot.attribute_value_id = av.id
+LEFT JOIN attribute_fqns av_fqns ON av_fqns.value_id = av.id
+WHERE ot.id = $1;
+
-- name: createObligationTrigger :one
WITH ov_id AS (
SELECT ov.id, od.namespace_id
diff --git a/service/policy/obligations/obligations.go b/service/policy/obligations/obligations.go
index efae842d2c..871fc3815c 100644
--- a/service/policy/obligations/obligations.go
+++ b/service/policy/obligations/obligations.go
@@ -339,6 +339,19 @@ func (s *Service) DeleteObligationValue(ctx context.Context, req *connect.Reques
return connect.NewResponse(rsp), nil
}
+func (s *Service) GetObligationTrigger(ctx context.Context, req *connect.Request[obligations.GetObligationTriggerRequest]) (*connect.Response[obligations.GetObligationTriggerResponse], error) {
+ id := req.Msg.GetId()
+ s.logger.DebugContext(ctx, "getting obligation trigger", slog.String("id", id))
+
+ trigger, err := s.dbClient.GetObligationTrigger(ctx, req.Msg)
+ if err != nil {
+ return nil, db.StatusifyError(ctx, s.logger, err, db.ErrTextGetRetrievalFailed, slog.String("id", id))
+ }
+
+ rsp := &obligations.GetObligationTriggerResponse{Trigger: trigger}
+ return connect.NewResponse(rsp), nil
+}
+
func (s *Service) AddObligationTrigger(ctx context.Context, req *connect.Request[obligations.AddObligationTriggerRequest]) (*connect.Response[obligations.AddObligationTriggerResponse], error) {
rsp := &obligations.AddObligationTriggerResponse{}
diff --git a/service/policy/obligations/obligations.proto b/service/policy/obligations/obligations.proto
index 613f99dcb9..c0e5b80e55 100644
--- a/service/policy/obligations/obligations.proto
+++ b/service/policy/obligations/obligations.proto
@@ -291,6 +291,15 @@ message DeleteObligationValueResponse {
}
// Triggers
+message GetObligationTriggerRequest {
+ // Required
+ string id = 1 [(buf.validate.field).string.uuid = true];
+}
+
+message GetObligationTriggerResponse {
+ policy.ObligationTrigger trigger = 1;
+}
+
message AddObligationTriggerRequest {
// Required
common.IdFqnIdentifier obligation_value = 1 [(buf.validate.field).required = true];
@@ -412,6 +421,10 @@ service Service {
/*--------------------------------------*
* Trigger RPCs
*--------------------------------------*/
+
+ rpc GetObligationTrigger(GetObligationTriggerRequest) returns (GetObligationTriggerResponse) {
+ option idempotency_level = NO_SIDE_EFFECTS;
+ }
rpc AddObligationTrigger(AddObligationTriggerRequest) returns (AddObligationTriggerResponse) {}
@@ -428,4 +441,4 @@ service Service {
// rpc AddObligationFulfiller(AddObligationFulfillerRequest) returns (AddObligationFulfillerResponse) {}
// rpc RemoveObligationFulfiller(RemoveObligationFulfillerRequest) returns (RemoveObligationFulfillerResponse) {}
-}
\ No newline at end of file
+}
diff --git a/service/policy/obligations/obligations_test.go b/service/policy/obligations/obligations_test.go
index d0f8cadb99..585e529c60 100644
--- a/service/policy/obligations/obligations_test.go
+++ b/service/policy/obligations/obligations_test.go
@@ -22,6 +22,7 @@ const (
invalidName = "invalid name"
invalidFQN = "invalid-fqn"
errMessageUUID = "string.uuid"
+ errMessageUUIDEmpty = "string.uuid_empty"
errMessageURI = "string.uri"
errMessageMinItems = "repeated.min_items"
errMessageUnique = "repeated.unique"
@@ -746,6 +747,52 @@ func Test_AddObligationTrigger_Request(t *testing.T) {
}
}
+func Test_GetObligationTrigger_Request(t *testing.T) {
+ validUUID := uuid.NewString()
+ testCases := []struct {
+ name string
+ req *obligations.GetObligationTriggerRequest
+ expectError bool
+ errorMessage string
+ }{
+ {
+ name: "valid",
+ req: &obligations.GetObligationTriggerRequest{
+ Id: validUUID,
+ },
+ expectError: false,
+ },
+ {
+ name: "invalid id",
+ req: &obligations.GetObligationTriggerRequest{
+ Id: invalidUUID,
+ },
+ expectError: true,
+ errorMessage: errMessageUUID,
+ },
+ {
+ name: "missing id",
+ req: &obligations.GetObligationTriggerRequest{},
+ expectError: true,
+ errorMessage: errMessageUUIDEmpty,
+ },
+ }
+
+ v := getValidator()
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ err := v.Validate(tc.req)
+ if tc.expectError {
+ require.Error(t, err)
+ require.Contains(t, err.Error(), tc.errorMessage)
+ } else {
+ require.NoError(t, err)
+ }
+ })
+ }
+}
+
func Test_RemoveObligationTrigger_Request(t *testing.T) {
validUUID := uuid.NewString()
testCases := []struct {