google-apis-agentregistry_v1 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1392 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module AgentregistryV1
24
+
25
+ # Represents the skills of an Agent.
26
+ class A2ASkill
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Output only. A more detailed description of the skill.
30
+ # Corresponds to the JSON property `description`
31
+ # @return [String]
32
+ attr_accessor :description
33
+
34
+ # Output only. Example prompts or scenarios this skill can handle.
35
+ # Corresponds to the JSON property `examples`
36
+ # @return [Array<String>]
37
+ attr_accessor :examples
38
+
39
+ # Output only. A unique identifier for the agent's skill.
40
+ # Corresponds to the JSON property `id`
41
+ # @return [String]
42
+ attr_accessor :id
43
+
44
+ # Output only. A human-readable name for the agent's skill.
45
+ # Corresponds to the JSON property `name`
46
+ # @return [String]
47
+ attr_accessor :name
48
+
49
+ # Output only. Keywords describing the skill.
50
+ # Corresponds to the JSON property `tags`
51
+ # @return [Array<String>]
52
+ attr_accessor :tags
53
+
54
+ def initialize(**args)
55
+ update!(**args)
56
+ end
57
+
58
+ # Update properties of this object
59
+ def update!(**args)
60
+ @description = args[:description] if args.key?(:description)
61
+ @examples = args[:examples] if args.key?(:examples)
62
+ @id = args[:id] if args.key?(:id)
63
+ @name = args[:name] if args.key?(:name)
64
+ @tags = args[:tags] if args.key?(:tags)
65
+ end
66
+ end
67
+
68
+ # Represents an Agent. "A2A" below refers to the Agent-to-Agent protocol.
69
+ class Agent
70
+ include Google::Apis::Core::Hashable
71
+
72
+ # Output only. A stable, globally unique identifier for agents.
73
+ # Corresponds to the JSON property `agentId`
74
+ # @return [String]
75
+ attr_accessor :agent_id
76
+
77
+ # Output only. Attributes of the Agent. Valid values: * `agentregistry.
78
+ # googleapis.com/system/Framework`: `"framework": "google-adk"` - the agent
79
+ # framework used to develop the Agent. Example values: "google-adk", "langchain",
80
+ # "custom". * `agentregistry.googleapis.com/system/RuntimeIdentity`: `"
81
+ # principal": "principal://..."` - the runtime identity associated with the
82
+ # Agent. * `agentregistry.googleapis.com/system/RuntimeReference`: `"uri": "//...
83
+ # "` - the URI of the underlying resource hosting the Agent, for example, the
84
+ # Reasoning Engine URI.
85
+ # Corresponds to the JSON property `attributes`
86
+ # @return [Hash<String,Hash<String,Object>>]
87
+ attr_accessor :attributes
88
+
89
+ # Full Agent Card payload, often obtained from the A2A Agent Card.
90
+ # Corresponds to the JSON property `card`
91
+ # @return [Google::Apis::AgentregistryV1::Card]
92
+ attr_accessor :card
93
+
94
+ # Output only. Create time.
95
+ # Corresponds to the JSON property `createTime`
96
+ # @return [String]
97
+ attr_accessor :create_time
98
+
99
+ # Output only. The description of the Agent, often obtained from the A2A Agent
100
+ # Card. Empty if Agent Card has no description.
101
+ # Corresponds to the JSON property `description`
102
+ # @return [String]
103
+ attr_accessor :description
104
+
105
+ # Output only. The display name of the agent, often obtained from the A2A Agent
106
+ # Card.
107
+ # Corresponds to the JSON property `displayName`
108
+ # @return [String]
109
+ attr_accessor :display_name
110
+
111
+ # Output only. The location where agent is hosted. The value is defined by the
112
+ # hosting environment (i.e. cloud provider).
113
+ # Corresponds to the JSON property `location`
114
+ # @return [String]
115
+ attr_accessor :location
116
+
117
+ # Identifier. The resource name of an Agent. Format: `projects/`project`/
118
+ # locations/`location`/agents/`agent``.
119
+ # Corresponds to the JSON property `name`
120
+ # @return [String]
121
+ attr_accessor :name
122
+
123
+ # Output only. The connection details for the Agent.
124
+ # Corresponds to the JSON property `protocols`
125
+ # @return [Array<Google::Apis::AgentregistryV1::Protocol>]
126
+ attr_accessor :protocols
127
+
128
+ # Output only. Skills the agent possesses, often obtained from the A2A Agent
129
+ # Card.
130
+ # Corresponds to the JSON property `skills`
131
+ # @return [Array<Google::Apis::AgentregistryV1::A2ASkill>]
132
+ attr_accessor :skills
133
+
134
+ # Output only. A universally unique identifier for the Agent.
135
+ # Corresponds to the JSON property `uid`
136
+ # @return [String]
137
+ attr_accessor :uid
138
+
139
+ # Output only. Update time.
140
+ # Corresponds to the JSON property `updateTime`
141
+ # @return [String]
142
+ attr_accessor :update_time
143
+
144
+ # Output only. The version of the Agent, often obtained from the A2A Agent Card.
145
+ # Empty if Agent Card has no version or agent is not an A2A Agent.
146
+ # Corresponds to the JSON property `version`
147
+ # @return [String]
148
+ attr_accessor :version
149
+
150
+ def initialize(**args)
151
+ update!(**args)
152
+ end
153
+
154
+ # Update properties of this object
155
+ def update!(**args)
156
+ @agent_id = args[:agent_id] if args.key?(:agent_id)
157
+ @attributes = args[:attributes] if args.key?(:attributes)
158
+ @card = args[:card] if args.key?(:card)
159
+ @create_time = args[:create_time] if args.key?(:create_time)
160
+ @description = args[:description] if args.key?(:description)
161
+ @display_name = args[:display_name] if args.key?(:display_name)
162
+ @location = args[:location] if args.key?(:location)
163
+ @name = args[:name] if args.key?(:name)
164
+ @protocols = args[:protocols] if args.key?(:protocols)
165
+ @skills = args[:skills] if args.key?(:skills)
166
+ @uid = args[:uid] if args.key?(:uid)
167
+ @update_time = args[:update_time] if args.key?(:update_time)
168
+ @version = args[:version] if args.key?(:version)
169
+ end
170
+ end
171
+
172
+ # The spec of the agent.
173
+ class AgentSpec
174
+ include Google::Apis::Core::Hashable
175
+
176
+ # Optional. The content of the Agent spec in the JSON format. This payload is
177
+ # validated against the schema for the specified type. The content size is
178
+ # limited to `10KB`.
179
+ # Corresponds to the JSON property `content`
180
+ # @return [Hash<String,Object>]
181
+ attr_accessor :content
182
+
183
+ # Required. The type of the agent spec content.
184
+ # Corresponds to the JSON property `type`
185
+ # @return [String]
186
+ attr_accessor :type
187
+
188
+ def initialize(**args)
189
+ update!(**args)
190
+ end
191
+
192
+ # Update properties of this object
193
+ def update!(**args)
194
+ @content = args[:content] if args.key?(:content)
195
+ @type = args[:type] if args.key?(:type)
196
+ end
197
+ end
198
+
199
+ # Annotations describing the characteristics and behavior of a tool or operation.
200
+ class Annotations
201
+ include Google::Apis::Core::Hashable
202
+
203
+ # Output only. If true, the tool may perform destructive updates to its
204
+ # environment. If false, the tool performs only additive updates. NOTE: This
205
+ # property is meaningful only when `read_only_hint == false` Default: true
206
+ # Corresponds to the JSON property `destructiveHint`
207
+ # @return [Boolean]
208
+ attr_accessor :destructive_hint
209
+ alias_method :destructive_hint?, :destructive_hint
210
+
211
+ # Output only. If true, calling the tool repeatedly with the same arguments will
212
+ # have no additional effect on its environment. NOTE: This property is
213
+ # meaningful only when `read_only_hint == false` Default: false
214
+ # Corresponds to the JSON property `idempotentHint`
215
+ # @return [Boolean]
216
+ attr_accessor :idempotent_hint
217
+ alias_method :idempotent_hint?, :idempotent_hint
218
+
219
+ # Output only. If true, this tool may interact with an "open world" of external
220
+ # entities. If false, the tool's domain of interaction is closed. For example,
221
+ # the world of a web search tool is open, whereas that of a memory tool is not.
222
+ # Default: true
223
+ # Corresponds to the JSON property `openWorldHint`
224
+ # @return [Boolean]
225
+ attr_accessor :open_world_hint
226
+ alias_method :open_world_hint?, :open_world_hint
227
+
228
+ # Output only. If true, the tool does not modify its environment. Default: false
229
+ # Corresponds to the JSON property `readOnlyHint`
230
+ # @return [Boolean]
231
+ attr_accessor :read_only_hint
232
+ alias_method :read_only_hint?, :read_only_hint
233
+
234
+ # Output only. A human-readable title for the tool.
235
+ # Corresponds to the JSON property `title`
236
+ # @return [String]
237
+ attr_accessor :title
238
+
239
+ def initialize(**args)
240
+ update!(**args)
241
+ end
242
+
243
+ # Update properties of this object
244
+ def update!(**args)
245
+ @destructive_hint = args[:destructive_hint] if args.key?(:destructive_hint)
246
+ @idempotent_hint = args[:idempotent_hint] if args.key?(:idempotent_hint)
247
+ @open_world_hint = args[:open_world_hint] if args.key?(:open_world_hint)
248
+ @read_only_hint = args[:read_only_hint] if args.key?(:read_only_hint)
249
+ @title = args[:title] if args.key?(:title)
250
+ end
251
+ end
252
+
253
+ # The AuthProvider of the Binding.
254
+ class AuthProviderBinding
255
+ include Google::Apis::Core::Hashable
256
+
257
+ # Required. The resource name of the target AuthProvider. Format: * `projects/`
258
+ # project`/locations/`location`/authProviders/`auth_provider``
259
+ # Corresponds to the JSON property `authProvider`
260
+ # @return [String]
261
+ attr_accessor :auth_provider
262
+
263
+ # Optional. The continue URI of the AuthProvider. The URI is used to
264
+ # reauthenticate the user and finalize the managed OAuth flow.
265
+ # Corresponds to the JSON property `continueUri`
266
+ # @return [String]
267
+ attr_accessor :continue_uri
268
+
269
+ # Optional. The list of OAuth2 scopes of the AuthProvider.
270
+ # Corresponds to the JSON property `scopes`
271
+ # @return [Array<String>]
272
+ attr_accessor :scopes
273
+
274
+ def initialize(**args)
275
+ update!(**args)
276
+ end
277
+
278
+ # Update properties of this object
279
+ def update!(**args)
280
+ @auth_provider = args[:auth_provider] if args.key?(:auth_provider)
281
+ @continue_uri = args[:continue_uri] if args.key?(:continue_uri)
282
+ @scopes = args[:scopes] if args.key?(:scopes)
283
+ end
284
+ end
285
+
286
+ # Represents a user-defined Binding.
287
+ class Binding
288
+ include Google::Apis::Core::Hashable
289
+
290
+ # The AuthProvider of the Binding.
291
+ # Corresponds to the JSON property `authProviderBinding`
292
+ # @return [Google::Apis::AgentregistryV1::AuthProviderBinding]
293
+ attr_accessor :auth_provider_binding
294
+
295
+ # Output only. Timestamp when this binding was created.
296
+ # Corresponds to the JSON property `createTime`
297
+ # @return [String]
298
+ attr_accessor :create_time
299
+
300
+ # Optional. User-defined description of a Binding. Can have a maximum length of `
301
+ # 2048` characters.
302
+ # Corresponds to the JSON property `description`
303
+ # @return [String]
304
+ attr_accessor :description
305
+
306
+ # Optional. User-defined display name for the Binding. Can have a maximum length
307
+ # of `63` characters.
308
+ # Corresponds to the JSON property `displayName`
309
+ # @return [String]
310
+ attr_accessor :display_name
311
+
312
+ # Required. Identifier. The resource name of the Binding. Format: `projects/`
313
+ # project`/locations/`location`/bindings/`binding``.
314
+ # Corresponds to the JSON property `name`
315
+ # @return [String]
316
+ attr_accessor :name
317
+
318
+ # The source of the Binding.
319
+ # Corresponds to the JSON property `source`
320
+ # @return [Google::Apis::AgentregistryV1::Source]
321
+ attr_accessor :source
322
+
323
+ # The target of the Binding.
324
+ # Corresponds to the JSON property `target`
325
+ # @return [Google::Apis::AgentregistryV1::Target]
326
+ attr_accessor :target
327
+
328
+ # Output only. Timestamp when this binding was last updated.
329
+ # Corresponds to the JSON property `updateTime`
330
+ # @return [String]
331
+ attr_accessor :update_time
332
+
333
+ def initialize(**args)
334
+ update!(**args)
335
+ end
336
+
337
+ # Update properties of this object
338
+ def update!(**args)
339
+ @auth_provider_binding = args[:auth_provider_binding] if args.key?(:auth_provider_binding)
340
+ @create_time = args[:create_time] if args.key?(:create_time)
341
+ @description = args[:description] if args.key?(:description)
342
+ @display_name = args[:display_name] if args.key?(:display_name)
343
+ @name = args[:name] if args.key?(:name)
344
+ @source = args[:source] if args.key?(:source)
345
+ @target = args[:target] if args.key?(:target)
346
+ @update_time = args[:update_time] if args.key?(:update_time)
347
+ end
348
+ end
349
+
350
+ # The request message for Operations.CancelOperation.
351
+ class CancelOperationRequest
352
+ include Google::Apis::Core::Hashable
353
+
354
+ def initialize(**args)
355
+ update!(**args)
356
+ end
357
+
358
+ # Update properties of this object
359
+ def update!(**args)
360
+ end
361
+ end
362
+
363
+ # Full Agent Card payload, often obtained from the A2A Agent Card.
364
+ class Card
365
+ include Google::Apis::Core::Hashable
366
+
367
+ # Output only. The content of the agent card.
368
+ # Corresponds to the JSON property `content`
369
+ # @return [Hash<String,Object>]
370
+ attr_accessor :content
371
+
372
+ # Output only. The type of agent card.
373
+ # Corresponds to the JSON property `type`
374
+ # @return [String]
375
+ attr_accessor :type
376
+
377
+ def initialize(**args)
378
+ update!(**args)
379
+ end
380
+
381
+ # Update properties of this object
382
+ def update!(**args)
383
+ @content = args[:content] if args.key?(:content)
384
+ @type = args[:type] if args.key?(:type)
385
+ end
386
+ end
387
+
388
+ # A generic empty message that you can re-use to avoid defining duplicated empty
389
+ # messages in your APIs. A typical example is to use it as the request or the
390
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
391
+ # protobuf.Empty) returns (google.protobuf.Empty); `
392
+ class Empty
393
+ include Google::Apis::Core::Hashable
394
+
395
+ def initialize(**args)
396
+ update!(**args)
397
+ end
398
+
399
+ # Update properties of this object
400
+ def update!(**args)
401
+ end
402
+ end
403
+
404
+ # Represents an Endpoint.
405
+ class Endpoint
406
+ include Google::Apis::Core::Hashable
407
+
408
+ # Output only. Attributes of the Endpoint. Valid values: * `agentregistry.
409
+ # googleapis.com/system/RuntimeReference`: `"uri": "//..."` - the URI of the
410
+ # underlying resource hosting the Endpoint, for example, the GKE Deployment.
411
+ # Corresponds to the JSON property `attributes`
412
+ # @return [Hash<String,Hash<String,Object>>]
413
+ attr_accessor :attributes
414
+
415
+ # Output only. Create time.
416
+ # Corresponds to the JSON property `createTime`
417
+ # @return [String]
418
+ attr_accessor :create_time
419
+
420
+ # Output only. Description of an Endpoint.
421
+ # Corresponds to the JSON property `description`
422
+ # @return [String]
423
+ attr_accessor :description
424
+
425
+ # Output only. Display name for the Endpoint.
426
+ # Corresponds to the JSON property `displayName`
427
+ # @return [String]
428
+ attr_accessor :display_name
429
+
430
+ # Output only. A stable, globally unique identifier for Endpoint.
431
+ # Corresponds to the JSON property `endpointId`
432
+ # @return [String]
433
+ attr_accessor :endpoint_id
434
+
435
+ # Required. The connection details for the Endpoint.
436
+ # Corresponds to the JSON property `interfaces`
437
+ # @return [Array<Google::Apis::AgentregistryV1::Interface>]
438
+ attr_accessor :interfaces
439
+
440
+ # Identifier. The resource name of the Endpoint. Format: `projects/`project`/
441
+ # locations/`location`/endpoints/`endpoint``.
442
+ # Corresponds to the JSON property `name`
443
+ # @return [String]
444
+ attr_accessor :name
445
+
446
+ # Output only. Update time.
447
+ # Corresponds to the JSON property `updateTime`
448
+ # @return [String]
449
+ attr_accessor :update_time
450
+
451
+ def initialize(**args)
452
+ update!(**args)
453
+ end
454
+
455
+ # Update properties of this object
456
+ def update!(**args)
457
+ @attributes = args[:attributes] if args.key?(:attributes)
458
+ @create_time = args[:create_time] if args.key?(:create_time)
459
+ @description = args[:description] if args.key?(:description)
460
+ @display_name = args[:display_name] if args.key?(:display_name)
461
+ @endpoint_id = args[:endpoint_id] if args.key?(:endpoint_id)
462
+ @interfaces = args[:interfaces] if args.key?(:interfaces)
463
+ @name = args[:name] if args.key?(:name)
464
+ @update_time = args[:update_time] if args.key?(:update_time)
465
+ end
466
+ end
467
+
468
+ # The spec of the endpoint.
469
+ class EndpointSpec
470
+ include Google::Apis::Core::Hashable
471
+
472
+ # Optional. The content of the endpoint spec. Reserved for future use.
473
+ # Corresponds to the JSON property `content`
474
+ # @return [Hash<String,Object>]
475
+ attr_accessor :content
476
+
477
+ # Required. The type of the endpoint spec content.
478
+ # Corresponds to the JSON property `type`
479
+ # @return [String]
480
+ attr_accessor :type
481
+
482
+ def initialize(**args)
483
+ update!(**args)
484
+ end
485
+
486
+ # Update properties of this object
487
+ def update!(**args)
488
+ @content = args[:content] if args.key?(:content)
489
+ @type = args[:type] if args.key?(:type)
490
+ end
491
+ end
492
+
493
+ # Message for response to fetching available Bindings.
494
+ class FetchAvailableBindingsResponse
495
+ include Google::Apis::Core::Hashable
496
+
497
+ # The list of Bindings.
498
+ # Corresponds to the JSON property `bindings`
499
+ # @return [Array<Google::Apis::AgentregistryV1::Binding>]
500
+ attr_accessor :bindings
501
+
502
+ # A token identifying a page of results the server should return.
503
+ # Corresponds to the JSON property `nextPageToken`
504
+ # @return [String]
505
+ attr_accessor :next_page_token
506
+
507
+ def initialize(**args)
508
+ update!(**args)
509
+ end
510
+
511
+ # Update properties of this object
512
+ def update!(**args)
513
+ @bindings = args[:bindings] if args.key?(:bindings)
514
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
515
+ end
516
+ end
517
+
518
+ # Represents the connection details for an Agent or MCP Server.
519
+ class Interface
520
+ include Google::Apis::Core::Hashable
521
+
522
+ # Required. The protocol binding of the interface.
523
+ # Corresponds to the JSON property `protocolBinding`
524
+ # @return [String]
525
+ attr_accessor :protocol_binding
526
+
527
+ # Required. The destination URL.
528
+ # Corresponds to the JSON property `url`
529
+ # @return [String]
530
+ attr_accessor :url
531
+
532
+ def initialize(**args)
533
+ update!(**args)
534
+ end
535
+
536
+ # Update properties of this object
537
+ def update!(**args)
538
+ @protocol_binding = args[:protocol_binding] if args.key?(:protocol_binding)
539
+ @url = args[:url] if args.key?(:url)
540
+ end
541
+ end
542
+
543
+ # Message for response to listing Agents
544
+ class ListAgentsResponse
545
+ include Google::Apis::Core::Hashable
546
+
547
+ # The list of Agents.
548
+ # Corresponds to the JSON property `agents`
549
+ # @return [Array<Google::Apis::AgentregistryV1::Agent>]
550
+ attr_accessor :agents
551
+
552
+ # A token identifying a page of results the server should return.
553
+ # Corresponds to the JSON property `nextPageToken`
554
+ # @return [String]
555
+ attr_accessor :next_page_token
556
+
557
+ def initialize(**args)
558
+ update!(**args)
559
+ end
560
+
561
+ # Update properties of this object
562
+ def update!(**args)
563
+ @agents = args[:agents] if args.key?(:agents)
564
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
565
+ end
566
+ end
567
+
568
+ # Message for response to listing Bindings
569
+ class ListBindingsResponse
570
+ include Google::Apis::Core::Hashable
571
+
572
+ # The list of Binding resources matching the parent and filter criteria in the
573
+ # request. Each Binding resource follows the format: `projects/`project`/
574
+ # locations/`location`/bindings/`binding``.
575
+ # Corresponds to the JSON property `bindings`
576
+ # @return [Array<Google::Apis::AgentregistryV1::Binding>]
577
+ attr_accessor :bindings
578
+
579
+ # A token identifying a page of results the server should return. Used in
580
+ # page_token.
581
+ # Corresponds to the JSON property `nextPageToken`
582
+ # @return [String]
583
+ attr_accessor :next_page_token
584
+
585
+ def initialize(**args)
586
+ update!(**args)
587
+ end
588
+
589
+ # Update properties of this object
590
+ def update!(**args)
591
+ @bindings = args[:bindings] if args.key?(:bindings)
592
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
593
+ end
594
+ end
595
+
596
+ # Message for response to listing Endpoints
597
+ class ListEndpointsResponse
598
+ include Google::Apis::Core::Hashable
599
+
600
+ # The list of Endpoint resources matching the parent and filter criteria in the
601
+ # request. Each Endpoint resource follows the format: `projects/`project`/
602
+ # locations/`location`/endpoints/`endpoint``.
603
+ # Corresponds to the JSON property `endpoints`
604
+ # @return [Array<Google::Apis::AgentregistryV1::Endpoint>]
605
+ attr_accessor :endpoints
606
+
607
+ # A token identifying a page of results the server should return. Used in
608
+ # page_token.
609
+ # Corresponds to the JSON property `nextPageToken`
610
+ # @return [String]
611
+ attr_accessor :next_page_token
612
+
613
+ def initialize(**args)
614
+ update!(**args)
615
+ end
616
+
617
+ # Update properties of this object
618
+ def update!(**args)
619
+ @endpoints = args[:endpoints] if args.key?(:endpoints)
620
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
621
+ end
622
+ end
623
+
624
+ # The response message for Locations.ListLocations.
625
+ class ListLocationsResponse
626
+ include Google::Apis::Core::Hashable
627
+
628
+ # A list of locations that matches the specified filter in the request.
629
+ # Corresponds to the JSON property `locations`
630
+ # @return [Array<Google::Apis::AgentregistryV1::Location>]
631
+ attr_accessor :locations
632
+
633
+ # The standard List next-page token.
634
+ # Corresponds to the JSON property `nextPageToken`
635
+ # @return [String]
636
+ attr_accessor :next_page_token
637
+
638
+ def initialize(**args)
639
+ update!(**args)
640
+ end
641
+
642
+ # Update properties of this object
643
+ def update!(**args)
644
+ @locations = args[:locations] if args.key?(:locations)
645
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
646
+ end
647
+ end
648
+
649
+ # Message for response to listing McpServers
650
+ class ListMcpServersResponse
651
+ include Google::Apis::Core::Hashable
652
+
653
+ # The list of McpServers.
654
+ # Corresponds to the JSON property `mcpServers`
655
+ # @return [Array<Google::Apis::AgentregistryV1::McpServer>]
656
+ attr_accessor :mcp_servers
657
+
658
+ # A token identifying a page of results the server should return.
659
+ # Corresponds to the JSON property `nextPageToken`
660
+ # @return [String]
661
+ attr_accessor :next_page_token
662
+
663
+ def initialize(**args)
664
+ update!(**args)
665
+ end
666
+
667
+ # Update properties of this object
668
+ def update!(**args)
669
+ @mcp_servers = args[:mcp_servers] if args.key?(:mcp_servers)
670
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
671
+ end
672
+ end
673
+
674
+ # The response message for Operations.ListOperations.
675
+ class ListOperationsResponse
676
+ include Google::Apis::Core::Hashable
677
+
678
+ # The standard List next-page token.
679
+ # Corresponds to the JSON property `nextPageToken`
680
+ # @return [String]
681
+ attr_accessor :next_page_token
682
+
683
+ # A list of operations that matches the specified filter in the request.
684
+ # Corresponds to the JSON property `operations`
685
+ # @return [Array<Google::Apis::AgentregistryV1::Operation>]
686
+ attr_accessor :operations
687
+
688
+ # Unordered list. Unreachable resources. Populated when the request sets `
689
+ # ListOperationsRequest.return_partial_success` and reads across collections.
690
+ # For example, when attempting to list all resources across all supported
691
+ # locations.
692
+ # Corresponds to the JSON property `unreachable`
693
+ # @return [Array<String>]
694
+ attr_accessor :unreachable
695
+
696
+ def initialize(**args)
697
+ update!(**args)
698
+ end
699
+
700
+ # Update properties of this object
701
+ def update!(**args)
702
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
703
+ @operations = args[:operations] if args.key?(:operations)
704
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
705
+ end
706
+ end
707
+
708
+ # Message for response to listing Services
709
+ class ListServicesResponse
710
+ include Google::Apis::Core::Hashable
711
+
712
+ # A token identifying a page of results the server should return. Used in
713
+ # page_token.
714
+ # Corresponds to the JSON property `nextPageToken`
715
+ # @return [String]
716
+ attr_accessor :next_page_token
717
+
718
+ # The list of Service resources matching the parent and filter criteria in the
719
+ # request. Each Service resource follows the format: `projects/`project`/
720
+ # locations/`location`/services/`service``.
721
+ # Corresponds to the JSON property `services`
722
+ # @return [Array<Google::Apis::AgentregistryV1::Service>]
723
+ attr_accessor :services
724
+
725
+ def initialize(**args)
726
+ update!(**args)
727
+ end
728
+
729
+ # Update properties of this object
730
+ def update!(**args)
731
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
732
+ @services = args[:services] if args.key?(:services)
733
+ end
734
+ end
735
+
736
+ # A resource that represents a Google Cloud location.
737
+ class Location
738
+ include Google::Apis::Core::Hashable
739
+
740
+ # The friendly name for this location, typically a nearby city name. For example,
741
+ # "Tokyo".
742
+ # Corresponds to the JSON property `displayName`
743
+ # @return [String]
744
+ attr_accessor :display_name
745
+
746
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
747
+ # region": "us-east1"`
748
+ # Corresponds to the JSON property `labels`
749
+ # @return [Hash<String,String>]
750
+ attr_accessor :labels
751
+
752
+ # The canonical id for this location. For example: `"us-east1"`.
753
+ # Corresponds to the JSON property `locationId`
754
+ # @return [String]
755
+ attr_accessor :location_id
756
+
757
+ # Service-specific metadata. For example the available capacity at the given
758
+ # location.
759
+ # Corresponds to the JSON property `metadata`
760
+ # @return [Hash<String,Object>]
761
+ attr_accessor :metadata
762
+
763
+ # Resource name for the location, which may vary between implementations. For
764
+ # example: `"projects/example-project/locations/us-east1"`
765
+ # Corresponds to the JSON property `name`
766
+ # @return [String]
767
+ attr_accessor :name
768
+
769
+ def initialize(**args)
770
+ update!(**args)
771
+ end
772
+
773
+ # Update properties of this object
774
+ def update!(**args)
775
+ @display_name = args[:display_name] if args.key?(:display_name)
776
+ @labels = args[:labels] if args.key?(:labels)
777
+ @location_id = args[:location_id] if args.key?(:location_id)
778
+ @metadata = args[:metadata] if args.key?(:metadata)
779
+ @name = args[:name] if args.key?(:name)
780
+ end
781
+ end
782
+
783
+ # Represents an MCP (Model Context Protocol) Server.
784
+ class McpServer
785
+ include Google::Apis::Core::Hashable
786
+
787
+ # Output only. Attributes of the MCP Server. Valid values: * `agentregistry.
788
+ # googleapis.com/system/RuntimeIdentity`: `"principal": "principal://..."` - the
789
+ # runtime identity associated with the MCP Server. * `agentregistry.googleapis.
790
+ # com/system/RuntimeReference`: `"uri": "//..."` - the URI of the underlying
791
+ # resource hosting the MCP Server, for example, the GKE Deployment.
792
+ # Corresponds to the JSON property `attributes`
793
+ # @return [Hash<String,Hash<String,Object>>]
794
+ attr_accessor :attributes
795
+
796
+ # Output only. Create time.
797
+ # Corresponds to the JSON property `createTime`
798
+ # @return [String]
799
+ attr_accessor :create_time
800
+
801
+ # Output only. The description of the MCP Server.
802
+ # Corresponds to the JSON property `description`
803
+ # @return [String]
804
+ attr_accessor :description
805
+
806
+ # Output only. The display name of the MCP Server.
807
+ # Corresponds to the JSON property `displayName`
808
+ # @return [String]
809
+ attr_accessor :display_name
810
+
811
+ # Output only. The connection details for the MCP Server.
812
+ # Corresponds to the JSON property `interfaces`
813
+ # @return [Array<Google::Apis::AgentregistryV1::Interface>]
814
+ attr_accessor :interfaces
815
+
816
+ # Output only. A stable, globally unique identifier for MCP Servers.
817
+ # Corresponds to the JSON property `mcpServerId`
818
+ # @return [String]
819
+ attr_accessor :mcp_server_id
820
+
821
+ # Identifier. The resource name of the MCP Server. Format: `projects/`project`/
822
+ # locations/`location`/mcpServers/`mcp_server``.
823
+ # Corresponds to the JSON property `name`
824
+ # @return [String]
825
+ attr_accessor :name
826
+
827
+ # Output only. Tools provided by the MCP Server.
828
+ # Corresponds to the JSON property `tools`
829
+ # @return [Array<Google::Apis::AgentregistryV1::Tool>]
830
+ attr_accessor :tools
831
+
832
+ # Output only. Update time.
833
+ # Corresponds to the JSON property `updateTime`
834
+ # @return [String]
835
+ attr_accessor :update_time
836
+
837
+ def initialize(**args)
838
+ update!(**args)
839
+ end
840
+
841
+ # Update properties of this object
842
+ def update!(**args)
843
+ @attributes = args[:attributes] if args.key?(:attributes)
844
+ @create_time = args[:create_time] if args.key?(:create_time)
845
+ @description = args[:description] if args.key?(:description)
846
+ @display_name = args[:display_name] if args.key?(:display_name)
847
+ @interfaces = args[:interfaces] if args.key?(:interfaces)
848
+ @mcp_server_id = args[:mcp_server_id] if args.key?(:mcp_server_id)
849
+ @name = args[:name] if args.key?(:name)
850
+ @tools = args[:tools] if args.key?(:tools)
851
+ @update_time = args[:update_time] if args.key?(:update_time)
852
+ end
853
+ end
854
+
855
+ # The spec of the MCP Server.
856
+ class McpServerSpec
857
+ include Google::Apis::Core::Hashable
858
+
859
+ # Optional. The content of the MCP Server spec. This payload is validated
860
+ # against the schema for the specified type. The content size is limited to `
861
+ # 10KB`.
862
+ # Corresponds to the JSON property `content`
863
+ # @return [Hash<String,Object>]
864
+ attr_accessor :content
865
+
866
+ # Required. The type of the MCP Server spec content.
867
+ # Corresponds to the JSON property `type`
868
+ # @return [String]
869
+ attr_accessor :type
870
+
871
+ def initialize(**args)
872
+ update!(**args)
873
+ end
874
+
875
+ # Update properties of this object
876
+ def update!(**args)
877
+ @content = args[:content] if args.key?(:content)
878
+ @type = args[:type] if args.key?(:type)
879
+ end
880
+ end
881
+
882
+ # This resource represents a long-running operation that is the result of a
883
+ # network API call.
884
+ class Operation
885
+ include Google::Apis::Core::Hashable
886
+
887
+ # If the value is `false`, it means the operation is still in progress. If `true`
888
+ # , the operation is completed, and either `error` or `response` is available.
889
+ # Corresponds to the JSON property `done`
890
+ # @return [Boolean]
891
+ attr_accessor :done
892
+ alias_method :done?, :done
893
+
894
+ # The `Status` type defines a logical error model that is suitable for different
895
+ # programming environments, including REST APIs and RPC APIs. It is used by [
896
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
897
+ # data: error code, error message, and error details. You can find out more
898
+ # about this error model and how to work with it in the [API Design Guide](https:
899
+ # //cloud.google.com/apis/design/errors).
900
+ # Corresponds to the JSON property `error`
901
+ # @return [Google::Apis::AgentregistryV1::Status]
902
+ attr_accessor :error
903
+
904
+ # Service-specific metadata associated with the operation. It typically contains
905
+ # progress information and common metadata such as create time. Some services
906
+ # might not provide such metadata. Any method that returns a long-running
907
+ # operation should document the metadata type, if any.
908
+ # Corresponds to the JSON property `metadata`
909
+ # @return [Hash<String,Object>]
910
+ attr_accessor :metadata
911
+
912
+ # The server-assigned name, which is only unique within the same service that
913
+ # originally returns it. If you use the default HTTP mapping, the `name` should
914
+ # be a resource name ending with `operations/`unique_id``.
915
+ # Corresponds to the JSON property `name`
916
+ # @return [String]
917
+ attr_accessor :name
918
+
919
+ # The normal, successful response of the operation. If the original method
920
+ # returns no data on success, such as `Delete`, the response is `google.protobuf.
921
+ # Empty`. If the original method is standard `Get`/`Create`/`Update`, the
922
+ # response should be the resource. For other methods, the response should have
923
+ # the type `XxxResponse`, where `Xxx` is the original method name. For example,
924
+ # if the original method name is `TakeSnapshot()`, the inferred response type is
925
+ # `TakeSnapshotResponse`.
926
+ # Corresponds to the JSON property `response`
927
+ # @return [Hash<String,Object>]
928
+ attr_accessor :response
929
+
930
+ def initialize(**args)
931
+ update!(**args)
932
+ end
933
+
934
+ # Update properties of this object
935
+ def update!(**args)
936
+ @done = args[:done] if args.key?(:done)
937
+ @error = args[:error] if args.key?(:error)
938
+ @metadata = args[:metadata] if args.key?(:metadata)
939
+ @name = args[:name] if args.key?(:name)
940
+ @response = args[:response] if args.key?(:response)
941
+ end
942
+ end
943
+
944
+ # Represents the metadata of the long-running operation.
945
+ class OperationMetadata
946
+ include Google::Apis::Core::Hashable
947
+
948
+ # Output only. API version used to start the operation.
949
+ # Corresponds to the JSON property `apiVersion`
950
+ # @return [String]
951
+ attr_accessor :api_version
952
+
953
+ # Output only. The time the operation was created.
954
+ # Corresponds to the JSON property `createTime`
955
+ # @return [String]
956
+ attr_accessor :create_time
957
+
958
+ # Output only. The time the operation finished running.
959
+ # Corresponds to the JSON property `endTime`
960
+ # @return [String]
961
+ attr_accessor :end_time
962
+
963
+ # Output only. Identifies whether the user has requested cancellation of the
964
+ # operation. Operations that have been cancelled successfully have google.
965
+ # longrunning.Operation.error value with a google.rpc.Status.code of `1`,
966
+ # corresponding to `Code.CANCELLED`.
967
+ # Corresponds to the JSON property `requestedCancellation`
968
+ # @return [Boolean]
969
+ attr_accessor :requested_cancellation
970
+ alias_method :requested_cancellation?, :requested_cancellation
971
+
972
+ # Output only. Human-readable status of the operation, if any.
973
+ # Corresponds to the JSON property `statusMessage`
974
+ # @return [String]
975
+ attr_accessor :status_message
976
+
977
+ # Output only. Server-defined resource path for the target of the operation.
978
+ # Corresponds to the JSON property `target`
979
+ # @return [String]
980
+ attr_accessor :target
981
+
982
+ # Output only. Name of the verb executed by the operation.
983
+ # Corresponds to the JSON property `verb`
984
+ # @return [String]
985
+ attr_accessor :verb
986
+
987
+ def initialize(**args)
988
+ update!(**args)
989
+ end
990
+
991
+ # Update properties of this object
992
+ def update!(**args)
993
+ @api_version = args[:api_version] if args.key?(:api_version)
994
+ @create_time = args[:create_time] if args.key?(:create_time)
995
+ @end_time = args[:end_time] if args.key?(:end_time)
996
+ @requested_cancellation = args[:requested_cancellation] if args.key?(:requested_cancellation)
997
+ @status_message = args[:status_message] if args.key?(:status_message)
998
+ @target = args[:target] if args.key?(:target)
999
+ @verb = args[:verb] if args.key?(:verb)
1000
+ end
1001
+ end
1002
+
1003
+ # Represents the protocol of an Agent.
1004
+ class Protocol
1005
+ include Google::Apis::Core::Hashable
1006
+
1007
+ # Output only. The connection details for the Agent.
1008
+ # Corresponds to the JSON property `interfaces`
1009
+ # @return [Array<Google::Apis::AgentregistryV1::Interface>]
1010
+ attr_accessor :interfaces
1011
+
1012
+ # Output only. The version of the protocol, for example, the A2A Agent Card
1013
+ # version.
1014
+ # Corresponds to the JSON property `protocolVersion`
1015
+ # @return [String]
1016
+ attr_accessor :protocol_version
1017
+
1018
+ # Output only. The type of the protocol.
1019
+ # Corresponds to the JSON property `type`
1020
+ # @return [String]
1021
+ attr_accessor :type
1022
+
1023
+ def initialize(**args)
1024
+ update!(**args)
1025
+ end
1026
+
1027
+ # Update properties of this object
1028
+ def update!(**args)
1029
+ @interfaces = args[:interfaces] if args.key?(:interfaces)
1030
+ @protocol_version = args[:protocol_version] if args.key?(:protocol_version)
1031
+ @type = args[:type] if args.key?(:type)
1032
+ end
1033
+ end
1034
+
1035
+ # Message for searching Agents
1036
+ class SearchAgentsRequest
1037
+ include Google::Apis::Core::Hashable
1038
+
1039
+ # Optional. The maximum number of search results to return per page. The page
1040
+ # size is capped at `100`, even if a larger value is specified. A negative value
1041
+ # will result in an `INVALID_ARGUMENT` error. If unspecified or set to `0`, a
1042
+ # default value of `20` will be used. The server may return fewer results than
1043
+ # requested.
1044
+ # Corresponds to the JSON property `pageSize`
1045
+ # @return [Fixnum]
1046
+ attr_accessor :page_size
1047
+
1048
+ # Optional. If present, retrieve the next batch of results from the preceding
1049
+ # call to this method. `page_token` must be the value of `next_page_token` from
1050
+ # the previous response. The values of all other method parameters, must be
1051
+ # identical to those in the previous call.
1052
+ # Corresponds to the JSON property `pageToken`
1053
+ # @return [String]
1054
+ attr_accessor :page_token
1055
+
1056
+ # Optional. Search criteria used to select the Agents to return. If no search
1057
+ # criteria is specified then all accessible Agents will be returned. Search
1058
+ # expressions can be used to restrict results based upon searchable fields,
1059
+ # where the operators can be used along with the suffix wildcard symbol `*`. See
1060
+ # [instructions](https://docs.cloud.google.com/agent-registry/search-agents-and-
1061
+ # tools) for more details. Allowed operators: `=`, `:`, `NOT`, `AND`, `OR`, and `
1062
+ # ()`. Searchable fields: | Field | `=` | `:` | `*` | Keyword Search | |---------
1063
+ # -----------|-----|-----|-----|----------------| | agentId | Yes | Yes | Yes |
1064
+ # Included | | name | No | Yes | Yes | Included | | displayName | No | Yes | Yes
1065
+ # | Included | | description | No | Yes | No | Included | | skills | No | Yes |
1066
+ # No | Included | | skills.id | No | Yes | No | Included | | skills.name | No |
1067
+ # Yes | No | Included | | skills.description | No | Yes | No | Included | |
1068
+ # skills.tags | No | Yes | No | Included | | skills.examples | No | Yes | No |
1069
+ # Included | Examples: * `agentId="urn:agent:projects-123:projects:123:locations:
1070
+ # us-central1:reasoningEngines:1234"` to find the agent with the specified agent
1071
+ # ID. * `name:important` to find agents whose name contains `important` as a
1072
+ # word. * `displayName:works*` to find agents whose display name contains words
1073
+ # that start with `works`. * `skills.tags:test` to find agents whose skills tags
1074
+ # contain `test`. * `planner OR booking` to find agents whose metadata contains
1075
+ # the words `planner` or `booking`.
1076
+ # Corresponds to the JSON property `searchString`
1077
+ # @return [String]
1078
+ attr_accessor :search_string
1079
+
1080
+ def initialize(**args)
1081
+ update!(**args)
1082
+ end
1083
+
1084
+ # Update properties of this object
1085
+ def update!(**args)
1086
+ @page_size = args[:page_size] if args.key?(:page_size)
1087
+ @page_token = args[:page_token] if args.key?(:page_token)
1088
+ @search_string = args[:search_string] if args.key?(:search_string)
1089
+ end
1090
+ end
1091
+
1092
+ # Message for response to searching Agents
1093
+ class SearchAgentsResponse
1094
+ include Google::Apis::Core::Hashable
1095
+
1096
+ # A list of Agents that match the `search_string`.
1097
+ # Corresponds to the JSON property `agents`
1098
+ # @return [Array<Google::Apis::AgentregistryV1::Agent>]
1099
+ attr_accessor :agents
1100
+
1101
+ # If there are more results than those appearing in this response, then `
1102
+ # next_page_token` is included. To get the next set of results, call this method
1103
+ # again using the value of `next_page_token` as `page_token`.
1104
+ # Corresponds to the JSON property `nextPageToken`
1105
+ # @return [String]
1106
+ attr_accessor :next_page_token
1107
+
1108
+ def initialize(**args)
1109
+ update!(**args)
1110
+ end
1111
+
1112
+ # Update properties of this object
1113
+ def update!(**args)
1114
+ @agents = args[:agents] if args.key?(:agents)
1115
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1116
+ end
1117
+ end
1118
+
1119
+ # Message for searching MCP Servers
1120
+ class SearchMcpServersRequest
1121
+ include Google::Apis::Core::Hashable
1122
+
1123
+ # Optional. The maximum number of search results to return per page. The page
1124
+ # size is capped at `100`, even if a larger value is specified. A negative value
1125
+ # will result in an `INVALID_ARGUMENT` error. If unspecified or set to `0`, a
1126
+ # default value of `20` will be used. The server may return fewer results than
1127
+ # requested.
1128
+ # Corresponds to the JSON property `pageSize`
1129
+ # @return [Fixnum]
1130
+ attr_accessor :page_size
1131
+
1132
+ # Optional. If present, retrieve the next batch of results from the preceding
1133
+ # call to this method. `page_token` must be the value of `next_page_token` from
1134
+ # the previous response. The values of all other method parameters, must be
1135
+ # identical to those in the previous call.
1136
+ # Corresponds to the JSON property `pageToken`
1137
+ # @return [String]
1138
+ attr_accessor :page_token
1139
+
1140
+ # Optional. Search criteria used to select the MCP Servers to return. If no
1141
+ # search criteria is specified then all accessible MCP Servers will be returned.
1142
+ # Search expressions can be used to restrict results based upon searchable
1143
+ # fields, where the operators can be used along with the suffix wildcard symbol `
1144
+ # *`. See [instructions](https://docs.cloud.google.com/agent-registry/search-
1145
+ # agents-and-tools) for more details. Allowed operators: `=`, `:`, `NOT`, `AND`,
1146
+ # `OR`, and `()`. Searchable fields: | Field | `=` | `:` | `*` | Keyword Search |
1147
+ # |--------------------|-----|-----|-----|----------------| | mcpServerId | Yes
1148
+ # | Yes | Yes | Included | | name | No | Yes | Yes | Included | | displayName |
1149
+ # No | Yes | Yes | Included | Examples: * `mcpServerId="urn:mcp:projects-123:
1150
+ # projects:123:locations:us-central1:agentregistry:services:service-id"` to find
1151
+ # the MCP Server with the specified MCP Server ID. * `name:important` to find
1152
+ # MCP Servers whose name contains `important` as a word. * `displayName:works*`
1153
+ # to find MCP Servers whose display name contains words that start with `works`.
1154
+ # * `planner OR booking` to find MCP Servers whose metadata contains the words `
1155
+ # planner` or `booking`. * `mcpServerId:service-id AND (displayName:planner OR
1156
+ # displayName:booking)` to find MCP Servers whose MCP Server ID contains `
1157
+ # service-id` and whose display name contains `planner` or `booking`.
1158
+ # Corresponds to the JSON property `searchString`
1159
+ # @return [String]
1160
+ attr_accessor :search_string
1161
+
1162
+ def initialize(**args)
1163
+ update!(**args)
1164
+ end
1165
+
1166
+ # Update properties of this object
1167
+ def update!(**args)
1168
+ @page_size = args[:page_size] if args.key?(:page_size)
1169
+ @page_token = args[:page_token] if args.key?(:page_token)
1170
+ @search_string = args[:search_string] if args.key?(:search_string)
1171
+ end
1172
+ end
1173
+
1174
+ # Message for response to searching MCP Servers
1175
+ class SearchMcpServersResponse
1176
+ include Google::Apis::Core::Hashable
1177
+
1178
+ # A list of McpServers that match the `search_string`.
1179
+ # Corresponds to the JSON property `mcpServers`
1180
+ # @return [Array<Google::Apis::AgentregistryV1::McpServer>]
1181
+ attr_accessor :mcp_servers
1182
+
1183
+ # If there are more results than those appearing in this response, then `
1184
+ # next_page_token` is included. To get the next set of results, call this method
1185
+ # again using the value of `next_page_token` as `page_token`.
1186
+ # Corresponds to the JSON property `nextPageToken`
1187
+ # @return [String]
1188
+ attr_accessor :next_page_token
1189
+
1190
+ def initialize(**args)
1191
+ update!(**args)
1192
+ end
1193
+
1194
+ # Update properties of this object
1195
+ def update!(**args)
1196
+ @mcp_servers = args[:mcp_servers] if args.key?(:mcp_servers)
1197
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1198
+ end
1199
+ end
1200
+
1201
+ # Represents a user-defined Service.
1202
+ class Service
1203
+ include Google::Apis::Core::Hashable
1204
+
1205
+ # The spec of the agent.
1206
+ # Corresponds to the JSON property `agentSpec`
1207
+ # @return [Google::Apis::AgentregistryV1::AgentSpec]
1208
+ attr_accessor :agent_spec
1209
+
1210
+ # Output only. Create time.
1211
+ # Corresponds to the JSON property `createTime`
1212
+ # @return [String]
1213
+ attr_accessor :create_time
1214
+
1215
+ # Optional. User-defined description of an Service. Can have a maximum length of
1216
+ # `2048` characters.
1217
+ # Corresponds to the JSON property `description`
1218
+ # @return [String]
1219
+ attr_accessor :description
1220
+
1221
+ # Optional. User-defined display name for the Service. Can have a maximum length
1222
+ # of `63` characters.
1223
+ # Corresponds to the JSON property `displayName`
1224
+ # @return [String]
1225
+ attr_accessor :display_name
1226
+
1227
+ # The spec of the endpoint.
1228
+ # Corresponds to the JSON property `endpointSpec`
1229
+ # @return [Google::Apis::AgentregistryV1::EndpointSpec]
1230
+ attr_accessor :endpoint_spec
1231
+
1232
+ # Optional. The connection details for the Service.
1233
+ # Corresponds to the JSON property `interfaces`
1234
+ # @return [Array<Google::Apis::AgentregistryV1::Interface>]
1235
+ attr_accessor :interfaces
1236
+
1237
+ # The spec of the MCP Server.
1238
+ # Corresponds to the JSON property `mcpServerSpec`
1239
+ # @return [Google::Apis::AgentregistryV1::McpServerSpec]
1240
+ attr_accessor :mcp_server_spec
1241
+
1242
+ # Identifier. The resource name of the Service. Format: `projects/`project`/
1243
+ # locations/`location`/services/`service``.
1244
+ # Corresponds to the JSON property `name`
1245
+ # @return [String]
1246
+ attr_accessor :name
1247
+
1248
+ # Output only. The resource name of the resulting Agent, MCP Server, or Endpoint.
1249
+ # Format: * `projects/`project`/locations/`location`/mcpServers/`mcp_server`` *
1250
+ # `projects/`project`/locations/`location`/agents/`agent`` * `projects/`project`/
1251
+ # locations/`location`/endpoints/`endpoint``
1252
+ # Corresponds to the JSON property `registryResource`
1253
+ # @return [String]
1254
+ attr_accessor :registry_resource
1255
+
1256
+ # Output only. Update time.
1257
+ # Corresponds to the JSON property `updateTime`
1258
+ # @return [String]
1259
+ attr_accessor :update_time
1260
+
1261
+ def initialize(**args)
1262
+ update!(**args)
1263
+ end
1264
+
1265
+ # Update properties of this object
1266
+ def update!(**args)
1267
+ @agent_spec = args[:agent_spec] if args.key?(:agent_spec)
1268
+ @create_time = args[:create_time] if args.key?(:create_time)
1269
+ @description = args[:description] if args.key?(:description)
1270
+ @display_name = args[:display_name] if args.key?(:display_name)
1271
+ @endpoint_spec = args[:endpoint_spec] if args.key?(:endpoint_spec)
1272
+ @interfaces = args[:interfaces] if args.key?(:interfaces)
1273
+ @mcp_server_spec = args[:mcp_server_spec] if args.key?(:mcp_server_spec)
1274
+ @name = args[:name] if args.key?(:name)
1275
+ @registry_resource = args[:registry_resource] if args.key?(:registry_resource)
1276
+ @update_time = args[:update_time] if args.key?(:update_time)
1277
+ end
1278
+ end
1279
+
1280
+ # The source of the Binding.
1281
+ class Source
1282
+ include Google::Apis::Core::Hashable
1283
+
1284
+ # The identifier of the source Agent. Format: * `urn:agent:`publisher`:`
1285
+ # namespace`:`name``
1286
+ # Corresponds to the JSON property `identifier`
1287
+ # @return [String]
1288
+ attr_accessor :identifier
1289
+
1290
+ def initialize(**args)
1291
+ update!(**args)
1292
+ end
1293
+
1294
+ # Update properties of this object
1295
+ def update!(**args)
1296
+ @identifier = args[:identifier] if args.key?(:identifier)
1297
+ end
1298
+ end
1299
+
1300
+ # The `Status` type defines a logical error model that is suitable for different
1301
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1302
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1303
+ # data: error code, error message, and error details. You can find out more
1304
+ # about this error model and how to work with it in the [API Design Guide](https:
1305
+ # //cloud.google.com/apis/design/errors).
1306
+ class Status
1307
+ include Google::Apis::Core::Hashable
1308
+
1309
+ # The status code, which should be an enum value of google.rpc.Code.
1310
+ # Corresponds to the JSON property `code`
1311
+ # @return [Fixnum]
1312
+ attr_accessor :code
1313
+
1314
+ # A list of messages that carry the error details. There is a common set of
1315
+ # message types for APIs to use.
1316
+ # Corresponds to the JSON property `details`
1317
+ # @return [Array<Hash<String,Object>>]
1318
+ attr_accessor :details
1319
+
1320
+ # A developer-facing error message, which should be in English. Any user-facing
1321
+ # error message should be localized and sent in the google.rpc.Status.details
1322
+ # field, or localized by the client.
1323
+ # Corresponds to the JSON property `message`
1324
+ # @return [String]
1325
+ attr_accessor :message
1326
+
1327
+ def initialize(**args)
1328
+ update!(**args)
1329
+ end
1330
+
1331
+ # Update properties of this object
1332
+ def update!(**args)
1333
+ @code = args[:code] if args.key?(:code)
1334
+ @details = args[:details] if args.key?(:details)
1335
+ @message = args[:message] if args.key?(:message)
1336
+ end
1337
+ end
1338
+
1339
+ # The target of the Binding.
1340
+ class Target
1341
+ include Google::Apis::Core::Hashable
1342
+
1343
+ # The identifier of the target Agent, MCP Server, or Endpoint. Format: * `urn:
1344
+ # agent:`publisher`:`namespace`:`name`` * `urn:mcp:`publisher`:`namespace`:`name`
1345
+ # ` * `urn:endpoint:`publisher`:`namespace`:`name``
1346
+ # Corresponds to the JSON property `identifier`
1347
+ # @return [String]
1348
+ attr_accessor :identifier
1349
+
1350
+ def initialize(**args)
1351
+ update!(**args)
1352
+ end
1353
+
1354
+ # Update properties of this object
1355
+ def update!(**args)
1356
+ @identifier = args[:identifier] if args.key?(:identifier)
1357
+ end
1358
+ end
1359
+
1360
+ # Represents a single tool provided by an MCP Server.
1361
+ class Tool
1362
+ include Google::Apis::Core::Hashable
1363
+
1364
+ # Annotations describing the characteristics and behavior of a tool or operation.
1365
+ # Corresponds to the JSON property `annotations`
1366
+ # @return [Google::Apis::AgentregistryV1::Annotations]
1367
+ attr_accessor :annotations
1368
+
1369
+ # Output only. Description of what the tool does.
1370
+ # Corresponds to the JSON property `description`
1371
+ # @return [String]
1372
+ attr_accessor :description
1373
+
1374
+ # Output only. Human-readable name of the tool.
1375
+ # Corresponds to the JSON property `name`
1376
+ # @return [String]
1377
+ attr_accessor :name
1378
+
1379
+ def initialize(**args)
1380
+ update!(**args)
1381
+ end
1382
+
1383
+ # Update properties of this object
1384
+ def update!(**args)
1385
+ @annotations = args[:annotations] if args.key?(:annotations)
1386
+ @description = args[:description] if args.key?(:description)
1387
+ @name = args[:name] if args.key?(:name)
1388
+ end
1389
+ end
1390
+ end
1391
+ end
1392
+ end