From 1fa944fb0f53b01170e69c7aa31e5bf08110df16 Mon Sep 17 00:00:00 2001 From: Yiwen Wu Date: Mon, 15 Apr 2024 17:25:36 -0700 Subject: [PATCH] release/studio: update studio.proto XXX_SKIP_CHECK_BREAKING - Update studio.proto due to the split studio.proto change Change-Id: I5363d01c09527a3fd85d902f3fa9c25a645c3132 --- arista/studio.v1/services.gen.proto | 962 ++-- arista/studio.v1/services.gen.swagger.json | 5107 +++++++++++--------- arista/studio.v1/studio-changelog.yaml | 5 + arista/studio.v1/studio.proto | 234 +- 4 files changed, 3149 insertions(+), 3159 deletions(-) diff --git a/arista/studio.v1/services.gen.proto b/arista/studio.v1/services.gen.proto index 68a6439b..10d7f85a 100644 --- a/arista/studio.v1/services.gen.proto +++ b/arista/studio.v1/services.gen.proto @@ -1,4 +1,4 @@ -// Copyright (c) 2020 Arista Networks, Inc. All rights reserved. +// Copyright (c) 2023 Arista Networks, Inc. All rights reserved. // Use of this source code is governed by the Apache License 2.0 // that can be found in the COPYING file. @@ -12,7 +12,7 @@ syntax = "proto3"; package arista.studio.v1; -option go_package = "arista/resources/arista/studio.v1;studio"; +option go_package = "github.com/aristanetworks/cloudvision-go/api/arista/studio.v1;studio"; import "arista/studio.v1/studio.proto"; import "arista/time/time.proto"; @@ -21,6 +21,20 @@ import "fmp/deletes.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; +message MetaResponse { + // Time holds the timestamp of the last item included in the metadata calculation. + google.protobuf.Timestamp time = 1; + + // Operation indicates how the value in this response should be considered. + // Under non-subscribe requests, this value should always be INITIAL. In a subscription, + // once all initial data is streamed and the client begins to receive modification updates, + // you should not see INITIAL again. + arista.subscriptions.Operation type = 2; + + // Count is the number of items present under the conditions of the request. + google.protobuf.UInt32Value count = 3; +}; + message AssignedTagsRequest { // Key uniquely identifies a AssignedTags instance to retrieve. // This value must be populated. @@ -43,6 +57,27 @@ message AssignedTagsResponse { google.protobuf.Timestamp time = 2; }; +message AssignedTagsSomeRequest { + repeated StudioKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message AssignedTagsSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + AssignedTags value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message AssignedTagsStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -87,8 +122,11 @@ message AssignedTagsStreamResponse { service AssignedTagsService { rpc GetOne (AssignedTagsRequest) returns (AssignedTagsResponse); + rpc GetSome (AssignedTagsSomeRequest) returns (stream AssignedTagsSomeResponse); rpc GetAll (AssignedTagsStreamRequest) returns (stream AssignedTagsStreamResponse); rpc Subscribe (AssignedTagsStreamRequest) returns (stream AssignedTagsStreamResponse); + rpc GetMeta (AssignedTagsStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (AssignedTagsStreamRequest) returns (stream MetaResponse); } message AssignedTagsConfigRequest { @@ -113,6 +151,27 @@ message AssignedTagsConfigResponse { google.protobuf.Timestamp time = 2; }; +message AssignedTagsConfigSomeRequest { + repeated StudioKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message AssignedTagsConfigSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + AssignedTagsConfig value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message AssignedTagsConfigStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -209,11 +268,27 @@ message AssignedTagsConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message AssignedTagsConfigDeleteSomeRequest { + // key contains a list of AssignedTagsConfig keys to delete + repeated StudioKey keys = 1; +}; + +// AssignedTagsConfigDeleteSomeResponse is only sent when there is an error. +message AssignedTagsConfigDeleteSomeResponse { + StudioKey key = 1; + string error = 2; +}; + message AssignedTagsConfigDeleteAllRequest { + // PartialEqFilter provides a way to server-side filter a DeleteAll. + // This requires all provided fields to be equal to the response. + // A filtered DeleteAll will use GetAll with filter to find things to delete. + repeated AssignedTagsConfig partial_eq_filter = 1; }; message AssignedTagsConfigDeleteAllResponse { // This describes the class of delete error. + // A DeleteAllResponse is only sent when there is an error. fmp.DeleteError type = 1; // This indicates the error message from the delete failure. google.protobuf.StringValue error = 2; @@ -225,11 +300,15 @@ message AssignedTagsConfigDeleteAllResponse { service AssignedTagsConfigService { rpc GetOne (AssignedTagsConfigRequest) returns (AssignedTagsConfigResponse); + rpc GetSome (AssignedTagsConfigSomeRequest) returns (stream AssignedTagsConfigSomeResponse); rpc GetAll (AssignedTagsConfigStreamRequest) returns (stream AssignedTagsConfigStreamResponse); rpc Subscribe (AssignedTagsConfigStreamRequest) returns (stream AssignedTagsConfigStreamResponse); + rpc GetMeta (AssignedTagsConfigStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (AssignedTagsConfigStreamRequest) returns (stream MetaResponse); rpc Set (AssignedTagsConfigSetRequest) returns (AssignedTagsConfigSetResponse); rpc SetSome (AssignedTagsConfigSetSomeRequest) returns (stream AssignedTagsConfigSetSomeResponse); rpc Delete (AssignedTagsConfigDeleteRequest) returns (AssignedTagsConfigDeleteResponse); + rpc DeleteSome (AssignedTagsConfigDeleteSomeRequest) returns (stream AssignedTagsConfigDeleteSomeResponse); rpc DeleteAll (AssignedTagsConfigDeleteAllRequest) returns (stream AssignedTagsConfigDeleteAllResponse); } @@ -255,6 +334,27 @@ message AutofillActionResponse { google.protobuf.Timestamp time = 2; }; +message AutofillActionSomeRequest { + repeated AutofillActionKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message AutofillActionSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + AutofillAction value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message AutofillActionStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -299,8 +399,11 @@ message AutofillActionStreamResponse { service AutofillActionService { rpc GetOne (AutofillActionRequest) returns (AutofillActionResponse); + rpc GetSome (AutofillActionSomeRequest) returns (stream AutofillActionSomeResponse); rpc GetAll (AutofillActionStreamRequest) returns (stream AutofillActionStreamResponse); rpc Subscribe (AutofillActionStreamRequest) returns (stream AutofillActionStreamResponse); + rpc GetMeta (AutofillActionStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (AutofillActionStreamRequest) returns (stream MetaResponse); } message AutofillActionConfigRequest { @@ -325,6 +428,27 @@ message AutofillActionConfigResponse { google.protobuf.Timestamp time = 2; }; +message AutofillActionConfigSomeRequest { + repeated AutofillActionKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message AutofillActionConfigSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + AutofillActionConfig value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message AutofillActionConfigStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -421,11 +545,27 @@ message AutofillActionConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message AutofillActionConfigDeleteSomeRequest { + // key contains a list of AutofillActionConfig keys to delete + repeated AutofillActionKey keys = 1; +}; + +// AutofillActionConfigDeleteSomeResponse is only sent when there is an error. +message AutofillActionConfigDeleteSomeResponse { + AutofillActionKey key = 1; + string error = 2; +}; + message AutofillActionConfigDeleteAllRequest { + // PartialEqFilter provides a way to server-side filter a DeleteAll. + // This requires all provided fields to be equal to the response. + // A filtered DeleteAll will use GetAll with filter to find things to delete. + repeated AutofillActionConfig partial_eq_filter = 1; }; message AutofillActionConfigDeleteAllResponse { // This describes the class of delete error. + // A DeleteAllResponse is only sent when there is an error. fmp.DeleteError type = 1; // This indicates the error message from the delete failure. google.protobuf.StringValue error = 2; @@ -437,11 +577,15 @@ message AutofillActionConfigDeleteAllResponse { service AutofillActionConfigService { rpc GetOne (AutofillActionConfigRequest) returns (AutofillActionConfigResponse); + rpc GetSome (AutofillActionConfigSomeRequest) returns (stream AutofillActionConfigSomeResponse); rpc GetAll (AutofillActionConfigStreamRequest) returns (stream AutofillActionConfigStreamResponse); rpc Subscribe (AutofillActionConfigStreamRequest) returns (stream AutofillActionConfigStreamResponse); + rpc GetMeta (AutofillActionConfigStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (AutofillActionConfigStreamRequest) returns (stream MetaResponse); rpc Set (AutofillActionConfigSetRequest) returns (AutofillActionConfigSetResponse); rpc SetSome (AutofillActionConfigSetSomeRequest) returns (stream AutofillActionConfigSetSomeResponse); rpc Delete (AutofillActionConfigDeleteRequest) returns (AutofillActionConfigDeleteResponse); + rpc DeleteSome (AutofillActionConfigDeleteSomeRequest) returns (stream AutofillActionConfigDeleteSomeResponse); rpc DeleteAll (AutofillActionConfigDeleteAllRequest) returns (stream AutofillActionConfigDeleteAllResponse); } @@ -467,6 +611,27 @@ message InputsResponse { google.protobuf.Timestamp time = 2; }; +message InputsSomeRequest { + repeated InputsKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message InputsSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + Inputs value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message InputsStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -511,8 +676,11 @@ message InputsStreamResponse { service InputsService { rpc GetOne (InputsRequest) returns (InputsResponse); + rpc GetSome (InputsSomeRequest) returns (stream InputsSomeResponse); rpc GetAll (InputsStreamRequest) returns (stream InputsStreamResponse); rpc Subscribe (InputsStreamRequest) returns (stream InputsStreamResponse); + rpc GetMeta (InputsStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (InputsStreamRequest) returns (stream MetaResponse); } message InputsConfigRequest { @@ -537,6 +705,27 @@ message InputsConfigResponse { google.protobuf.Timestamp time = 2; }; +message InputsConfigSomeRequest { + repeated InputsKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message InputsConfigSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + InputsConfig value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message InputsConfigStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -633,11 +822,27 @@ message InputsConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message InputsConfigDeleteSomeRequest { + // key contains a list of InputsConfig keys to delete + repeated InputsKey keys = 1; +}; + +// InputsConfigDeleteSomeResponse is only sent when there is an error. +message InputsConfigDeleteSomeResponse { + InputsKey key = 1; + string error = 2; +}; + message InputsConfigDeleteAllRequest { + // PartialEqFilter provides a way to server-side filter a DeleteAll. + // This requires all provided fields to be equal to the response. + // A filtered DeleteAll will use GetAll with filter to find things to delete. + repeated InputsConfig partial_eq_filter = 1; }; message InputsConfigDeleteAllResponse { // This describes the class of delete error. + // A DeleteAllResponse is only sent when there is an error. fmp.DeleteError type = 1; // This indicates the error message from the delete failure. google.protobuf.StringValue error = 2; @@ -649,11 +854,15 @@ message InputsConfigDeleteAllResponse { service InputsConfigService { rpc GetOne (InputsConfigRequest) returns (InputsConfigResponse); + rpc GetSome (InputsConfigSomeRequest) returns (stream InputsConfigSomeResponse); rpc GetAll (InputsConfigStreamRequest) returns (stream InputsConfigStreamResponse); rpc Subscribe (InputsConfigStreamRequest) returns (stream InputsConfigStreamResponse); + rpc GetMeta (InputsConfigStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (InputsConfigStreamRequest) returns (stream MetaResponse); rpc Set (InputsConfigSetRequest) returns (InputsConfigSetResponse); rpc SetSome (InputsConfigSetSomeRequest) returns (stream InputsConfigSetSomeResponse); rpc Delete (InputsConfigDeleteRequest) returns (InputsConfigDeleteResponse); + rpc DeleteSome (InputsConfigDeleteSomeRequest) returns (stream InputsConfigDeleteSomeResponse); rpc DeleteAll (InputsConfigDeleteAllRequest) returns (stream InputsConfigDeleteAllResponse); } @@ -679,6 +888,27 @@ message SecretInputResponse { google.protobuf.Timestamp time = 2; }; +message SecretInputSomeRequest { + repeated InputsKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message SecretInputSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + SecretInput value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message SecretInputStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -723,8 +953,11 @@ message SecretInputStreamResponse { service SecretInputService { rpc GetOne (SecretInputRequest) returns (SecretInputResponse); + rpc GetSome (SecretInputSomeRequest) returns (stream SecretInputSomeResponse); rpc GetAll (SecretInputStreamRequest) returns (stream SecretInputStreamResponse); rpc Subscribe (SecretInputStreamRequest) returns (stream SecretInputStreamResponse); + rpc GetMeta (SecretInputStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (SecretInputStreamRequest) returns (stream MetaResponse); } message StudioRequest { @@ -749,6 +982,27 @@ message StudioResponse { google.protobuf.Timestamp time = 2; }; +message StudioSomeRequest { + repeated StudioKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message StudioSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + Studio value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message StudioStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -793,8 +1047,11 @@ message StudioStreamResponse { service StudioService { rpc GetOne (StudioRequest) returns (StudioResponse); + rpc GetSome (StudioSomeRequest) returns (stream StudioSomeResponse); rpc GetAll (StudioStreamRequest) returns (stream StudioStreamResponse); rpc Subscribe (StudioStreamRequest) returns (stream StudioStreamResponse); + rpc GetMeta (StudioStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (StudioStreamRequest) returns (stream MetaResponse); } message StudioConfigRequest { @@ -819,6 +1076,27 @@ message StudioConfigResponse { google.protobuf.Timestamp time = 2; }; +message StudioConfigSomeRequest { + repeated StudioKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message StudioConfigSomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + StudioConfig value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message StudioConfigStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -915,11 +1193,27 @@ message StudioConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message StudioConfigDeleteSomeRequest { + // key contains a list of StudioConfig keys to delete + repeated StudioKey keys = 1; +}; + +// StudioConfigDeleteSomeResponse is only sent when there is an error. +message StudioConfigDeleteSomeResponse { + StudioKey key = 1; + string error = 2; +}; + message StudioConfigDeleteAllRequest { + // PartialEqFilter provides a way to server-side filter a DeleteAll. + // This requires all provided fields to be equal to the response. + // A filtered DeleteAll will use GetAll with filter to find things to delete. + repeated StudioConfig partial_eq_filter = 1; }; message StudioConfigDeleteAllResponse { // This describes the class of delete error. + // A DeleteAllResponse is only sent when there is an error. fmp.DeleteError type = 1; // This indicates the error message from the delete failure. google.protobuf.StringValue error = 2; @@ -931,11 +1225,15 @@ message StudioConfigDeleteAllResponse { service StudioConfigService { rpc GetOne (StudioConfigRequest) returns (StudioConfigResponse); + rpc GetSome (StudioConfigSomeRequest) returns (stream StudioConfigSomeResponse); rpc GetAll (StudioConfigStreamRequest) returns (stream StudioConfigStreamResponse); rpc Subscribe (StudioConfigStreamRequest) returns (stream StudioConfigStreamResponse); + rpc GetMeta (StudioConfigStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (StudioConfigStreamRequest) returns (stream MetaResponse); rpc Set (StudioConfigSetRequest) returns (StudioConfigSetResponse); rpc SetSome (StudioConfigSetSomeRequest) returns (stream StudioConfigSetSomeResponse); rpc Delete (StudioConfigDeleteRequest) returns (StudioConfigDeleteResponse); + rpc DeleteSome (StudioConfigDeleteSomeRequest) returns (stream StudioConfigDeleteSomeResponse); rpc DeleteAll (StudioConfigDeleteAllRequest) returns (stream StudioConfigDeleteAllResponse); } @@ -961,6 +1259,27 @@ message StudioSummaryResponse { google.protobuf.Timestamp time = 2; }; +message StudioSummarySomeRequest { + repeated StudioKey keys = 1; + + // Time indicates the time for which you are interested in the data. + // If no time is given, the server will use the time at which it makes the request. + google.protobuf.Timestamp time = 2; +}; + +message StudioSummarySomeResponse { + // Value is the value requested. + // This structure will be fully-populated as it exists in the datastore. If + // optional fields were not given at creation, these fields will be empty or + // set to default values. + StudioSummary value = 1; + + // Error is an optional field. + // It should be filled when there is an error in the GetSome process. + google.protobuf.StringValue error = 2; + google.protobuf.Timestamp time = 3; +}; + message StudioSummaryStreamRequest { // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. // This requires all provided fields to be equal to the response. @@ -1005,642 +1324,9 @@ message StudioSummaryStreamResponse { service StudioSummaryService { rpc GetOne (StudioSummaryRequest) returns (StudioSummaryResponse); + rpc GetSome (StudioSummarySomeRequest) returns (stream StudioSummarySomeResponse); rpc GetAll (StudioSummaryStreamRequest) returns (stream StudioSummaryStreamResponse); rpc Subscribe (StudioSummaryStreamRequest) returns (stream StudioSummaryStreamResponse); -} - -message TopologyInputRequest { - // Key uniquely identifies a TopologyInput instance to retrieve. - // This value must be populated. - TopologyInputKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyInput value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyInput instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyInput partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyInput at end. - // * Each TopologyInput response is fully-specified (all fields set). - // * start: Returns the state of each TopologyInput at start, followed by updates until now. - // * Each TopologyInput response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyInput at start, followed by updates - // until end. - // * Each TopologyInput response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyInputStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyInput value = 1; - - // Time holds the timestamp of this TopologyInput's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyInput value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -service TopologyInputService { - rpc GetOne (TopologyInputRequest) returns (TopologyInputResponse); - rpc GetAll (TopologyInputStreamRequest) returns (stream TopologyInputStreamResponse); - rpc Subscribe (TopologyInputStreamRequest) returns (stream TopologyInputStreamResponse); -} - -message TopologyInputConfigRequest { - // Key uniquely identifies a TopologyInputConfig instance to retrieve. - // This value must be populated. - TopologyInputKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputConfigResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyInputConfig value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyInputConfig instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputConfigStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyInputConfig partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyInputConfig at end. - // * Each TopologyInputConfig response is fully-specified (all fields set). - // * start: Returns the state of each TopologyInputConfig at start, followed by updates until now. - // * Each TopologyInputConfig response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyInputConfig at start, followed by updates - // until end. - // * Each TopologyInputConfig response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyInputConfigStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyInputConfig value = 1; - - // Time holds the timestamp of this TopologyInputConfig's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyInputConfig value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -message TopologyInputConfigSetRequest { - // TopologyInputConfig carries the value to set into the datastore. - // See the documentation on the TopologyInputConfig struct for which fields are required. - TopologyInputConfig value = 1; -}; - -message TopologyInputConfigSetResponse { - // Value carries all the values given in the TopologyInputConfigSetRequest as well - // as any server-generated values. - TopologyInputConfig value = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // creation. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==CreatedAt will include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputConfigSetSomeRequest { - // value contains a list of TopologyInputConfig values to write. - // It is possible to provide more values than can fit within either: - // - the maxiumum send size of the client - // - the maximum receive size of the server - // If this error occurs you must reduce the number of values sent. - // See gRPC "maximum message size" documentation for more information. - repeated TopologyInputConfig values = 1; -}; - -message TopologyInputConfigSetSomeResponse { - TopologyInputKey key = 1; - string error = 2; -}; - -message TopologyInputConfigDeleteRequest { - // Key indicates which TopologyInputConfig instance to remove. - // This field must always be set. - TopologyInputKey key = 1; -}; - -message TopologyInputConfigDeleteResponse { - // Key echoes back the key of the deleted TopologyInputConfig instance. - TopologyInputKey key = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // deletion. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==DeletedAt will not include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyInputConfigDeleteAllRequest { -}; - -message TopologyInputConfigDeleteAllResponse { - // This describes the class of delete error. - fmp.DeleteError type = 1; - // This indicates the error message from the delete failure. - google.protobuf.StringValue error = 2; - // This is the key of the TopologyInputConfig instance that failed to be deleted. - TopologyInputKey key = 3; - // Time indicates the (UTC) timestamp when the key was being deleted. - google.protobuf.Timestamp time = 4; -}; - -service TopologyInputConfigService { - rpc GetOne (TopologyInputConfigRequest) returns (TopologyInputConfigResponse); - rpc GetAll (TopologyInputConfigStreamRequest) returns (stream TopologyInputConfigStreamResponse); - rpc Subscribe (TopologyInputConfigStreamRequest) returns (stream TopologyInputConfigStreamResponse); - rpc Set (TopologyInputConfigSetRequest) returns (TopologyInputConfigSetResponse); - rpc SetSome (TopologyInputConfigSetSomeRequest) returns (stream TopologyInputConfigSetSomeResponse); - rpc Delete (TopologyInputConfigDeleteRequest) returns (TopologyInputConfigDeleteResponse); - rpc DeleteAll (TopologyInputConfigDeleteAllRequest) returns (stream TopologyInputConfigDeleteAllResponse); -} - -message TopologyUpdateRequest { - // Key uniquely identifies a TopologyUpdate instance to retrieve. - // This value must be populated. - TopologyUpdateKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyUpdate value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyUpdate instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyUpdate partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyUpdate at end. - // * Each TopologyUpdate response is fully-specified (all fields set). - // * start: Returns the state of each TopologyUpdate at start, followed by updates until now. - // * Each TopologyUpdate response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyUpdate at start, followed by updates - // until end. - // * Each TopologyUpdate response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyUpdateStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyUpdate value = 1; - - // Time holds the timestamp of this TopologyUpdate's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyUpdate value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -service TopologyUpdateService { - rpc GetOne (TopologyUpdateRequest) returns (TopologyUpdateResponse); - rpc GetAll (TopologyUpdateStreamRequest) returns (stream TopologyUpdateStreamResponse); - rpc Subscribe (TopologyUpdateStreamRequest) returns (stream TopologyUpdateStreamResponse); -} - -message TopologyUpdateConfigRequest { - // Key uniquely identifies a TopologyUpdateConfig instance to retrieve. - // This value must be populated. - TopologyUpdateKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateConfigResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyUpdateConfig value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyUpdateConfig instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateConfigStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyUpdateConfig partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyUpdateConfig at end. - // * Each TopologyUpdateConfig response is fully-specified (all fields set). - // * start: Returns the state of each TopologyUpdateConfig at start, followed by updates until now. - // * Each TopologyUpdateConfig response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyUpdateConfig at start, followed by updates - // until end. - // * Each TopologyUpdateConfig response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyUpdateConfigStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyUpdateConfig value = 1; - - // Time holds the timestamp of this TopologyUpdateConfig's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyUpdateConfig value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -message TopologyUpdateConfigSetRequest { - // TopologyUpdateConfig carries the value to set into the datastore. - // See the documentation on the TopologyUpdateConfig struct for which fields are required. - TopologyUpdateConfig value = 1; -}; - -message TopologyUpdateConfigSetResponse { - // Value carries all the values given in the TopologyUpdateConfigSetRequest as well - // as any server-generated values. - TopologyUpdateConfig value = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // creation. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==CreatedAt will include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateConfigSetSomeRequest { - // value contains a list of TopologyUpdateConfig values to write. - // It is possible to provide more values than can fit within either: - // - the maxiumum send size of the client - // - the maximum receive size of the server - // If this error occurs you must reduce the number of values sent. - // See gRPC "maximum message size" documentation for more information. - repeated TopologyUpdateConfig values = 1; -}; - -message TopologyUpdateConfigSetSomeResponse { - TopologyUpdateKey key = 1; - string error = 2; -}; - -message TopologyUpdateConfigDeleteRequest { - // Key indicates which TopologyUpdateConfig instance to remove. - // This field must always be set. - TopologyUpdateKey key = 1; -}; - -message TopologyUpdateConfigDeleteResponse { - // Key echoes back the key of the deleted TopologyUpdateConfig instance. - TopologyUpdateKey key = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // deletion. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==DeletedAt will not include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateConfigDeleteAllRequest { -}; - -message TopologyUpdateConfigDeleteAllResponse { - // This describes the class of delete error. - fmp.DeleteError type = 1; - // This indicates the error message from the delete failure. - google.protobuf.StringValue error = 2; - // This is the key of the TopologyUpdateConfig instance that failed to be deleted. - TopologyUpdateKey key = 3; - // Time indicates the (UTC) timestamp when the key was being deleted. - google.protobuf.Timestamp time = 4; -}; - -service TopologyUpdateConfigService { - rpc GetOne (TopologyUpdateConfigRequest) returns (TopologyUpdateConfigResponse); - rpc GetAll (TopologyUpdateConfigStreamRequest) returns (stream TopologyUpdateConfigStreamResponse); - rpc Subscribe (TopologyUpdateConfigStreamRequest) returns (stream TopologyUpdateConfigStreamResponse); - rpc Set (TopologyUpdateConfigSetRequest) returns (TopologyUpdateConfigSetResponse); - rpc SetSome (TopologyUpdateConfigSetSomeRequest) returns (stream TopologyUpdateConfigSetSomeResponse); - rpc Delete (TopologyUpdateConfigDeleteRequest) returns (TopologyUpdateConfigDeleteResponse); - rpc DeleteAll (TopologyUpdateConfigDeleteAllRequest) returns (stream TopologyUpdateConfigDeleteAllResponse); -} - -message TopologyUpdateSyncRequest { - // Key uniquely identifies a TopologyUpdateSync instance to retrieve. - // This value must be populated. - WorkspaceKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyUpdateSync value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyUpdateSync instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyUpdateSync partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyUpdateSync at end. - // * Each TopologyUpdateSync response is fully-specified (all fields set). - // * start: Returns the state of each TopologyUpdateSync at start, followed by updates until now. - // * Each TopologyUpdateSync response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyUpdateSync at start, followed by updates - // until end. - // * Each TopologyUpdateSync response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyUpdateSyncStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyUpdateSync value = 1; - - // Time holds the timestamp of this TopologyUpdateSync's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyUpdateSync value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -service TopologyUpdateSyncService { - rpc GetOne (TopologyUpdateSyncRequest) returns (TopologyUpdateSyncResponse); - rpc GetAll (TopologyUpdateSyncStreamRequest) returns (stream TopologyUpdateSyncStreamResponse); - rpc Subscribe (TopologyUpdateSyncStreamRequest) returns (stream TopologyUpdateSyncStreamResponse); -} - -message TopologyUpdateSyncConfigRequest { - // Key uniquely identifies a TopologyUpdateSyncConfig instance to retrieve. - // This value must be populated. - WorkspaceKey key = 1; - - // Time indicates the time for which you are interested in the data. - // If no time is given, the server will use the time at which it makes the request. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncConfigResponse { - // Value is the value requested. - // This structure will be fully-populated as it exists in the datastore. If - // optional fields were not given at creation, these fields will be empty or - // set to default values. - TopologyUpdateSyncConfig value = 1; - - // Time carries the (UTC) timestamp of the last-modification of the - // TopologyUpdateSyncConfig instance in this response. - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncConfigStreamRequest { - // PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. - // This requires all provided fields to be equal to the response. - // - // While transparent to users, this field also allows services to optimize internal - // subscriptions if filter(s) are sufficiently specific. - repeated TopologyUpdateSyncConfig partial_eq_filter = 1; - - // TimeRange allows limiting response data to within a specified time window. - // If this field is populated, at least one of the two time fields are required. - // - // For GetAll, the fields start and end can be used as follows: - // - // * end: Returns the state of each TopologyUpdateSyncConfig at end. - // * Each TopologyUpdateSyncConfig response is fully-specified (all fields set). - // * start: Returns the state of each TopologyUpdateSyncConfig at start, followed by updates until now. - // * Each TopologyUpdateSyncConfig response at start is fully-specified, but updates may be partial. - // * start and end: Returns the state of each TopologyUpdateSyncConfig at start, followed by updates - // until end. - // * Each TopologyUpdateSyncConfig response at start is fully-specified, but updates until end may - // be partial. - // - // This field is not allowed in the Subscribe RPC. - arista.time.TimeBounds time = 3; -}; - -message TopologyUpdateSyncConfigStreamResponse { - // Value is a value deemed relevant to the initiating request. - // This structure will always have its key-field populated. Which other fields are - // populated, and why, depends on the value of Operation and what triggered this notification. - TopologyUpdateSyncConfig value = 1; - - // Time holds the timestamp of this TopologyUpdateSyncConfig's last modification. - google.protobuf.Timestamp time = 2; - - // Operation indicates how the TopologyUpdateSyncConfig value in this response should be considered. - // Under non-subscribe requests, this value should always be INITIAL. In a subscription, - // once all initial data is streamed and the client begins to receive modification updates, - // you should not see INITIAL again. - arista.subscriptions.Operation type = 3; -}; - -message TopologyUpdateSyncConfigSetRequest { - // TopologyUpdateSyncConfig carries the value to set into the datastore. - // See the documentation on the TopologyUpdateSyncConfig struct for which fields are required. - TopologyUpdateSyncConfig value = 1; -}; - -message TopologyUpdateSyncConfigSetResponse { - // Value carries all the values given in the TopologyUpdateSyncConfigSetRequest as well - // as any server-generated values. - TopologyUpdateSyncConfig value = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // creation. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==CreatedAt will include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncConfigSetSomeRequest { - // value contains a list of TopologyUpdateSyncConfig values to write. - // It is possible to provide more values than can fit within either: - // - the maxiumum send size of the client - // - the maximum receive size of the server - // If this error occurs you must reduce the number of values sent. - // See gRPC "maximum message size" documentation for more information. - repeated TopologyUpdateSyncConfig values = 1; -}; - -message TopologyUpdateSyncConfigSetSomeResponse { - WorkspaceKey key = 1; - string error = 2; -}; - -message TopologyUpdateSyncConfigDeleteRequest { - // Key indicates which TopologyUpdateSyncConfig instance to remove. - // This field must always be set. - WorkspaceKey key = 1; -}; - -message TopologyUpdateSyncConfigDeleteResponse { - // Key echoes back the key of the deleted TopologyUpdateSyncConfig instance. - WorkspaceKey key = 1; - - // Time indicates the (UTC) timestamp at which the system recognizes the - // deletion. The only guarantees made about this timestamp are: - // - // - it is after the time the request was received - // - a time-ranged query with StartTime==DeletedAt will not include this instance. - // - google.protobuf.Timestamp time = 2; -}; - -message TopologyUpdateSyncConfigDeleteAllRequest { -}; - -message TopologyUpdateSyncConfigDeleteAllResponse { - // This describes the class of delete error. - fmp.DeleteError type = 1; - // This indicates the error message from the delete failure. - google.protobuf.StringValue error = 2; - // This is the key of the TopologyUpdateSyncConfig instance that failed to be deleted. - WorkspaceKey key = 3; - // Time indicates the (UTC) timestamp when the key was being deleted. - google.protobuf.Timestamp time = 4; -}; - -service TopologyUpdateSyncConfigService { - rpc GetOne (TopologyUpdateSyncConfigRequest) returns (TopologyUpdateSyncConfigResponse); - rpc GetAll (TopologyUpdateSyncConfigStreamRequest) returns (stream TopologyUpdateSyncConfigStreamResponse); - rpc Subscribe (TopologyUpdateSyncConfigStreamRequest) returns (stream TopologyUpdateSyncConfigStreamResponse); - rpc Set (TopologyUpdateSyncConfigSetRequest) returns (TopologyUpdateSyncConfigSetResponse); - rpc SetSome (TopologyUpdateSyncConfigSetSomeRequest) returns (stream TopologyUpdateSyncConfigSetSomeResponse); - rpc Delete (TopologyUpdateSyncConfigDeleteRequest) returns (TopologyUpdateSyncConfigDeleteResponse); - rpc DeleteAll (TopologyUpdateSyncConfigDeleteAllRequest) returns (stream TopologyUpdateSyncConfigDeleteAllResponse); + rpc GetMeta (StudioSummaryStreamRequest) returns (MetaResponse); + rpc SubscribeMeta (StudioSummaryStreamRequest) returns (stream MetaResponse); } diff --git a/arista/studio.v1/services.gen.swagger.json b/arista/studio.v1/services.gen.swagger.json index 14e7f597..b0a668e1 100644 --- a/arista/studio.v1/services.gen.swagger.json +++ b/arista/studio.v1/services.gen.swagger.json @@ -38,24 +38,6 @@ }, { "name": "StudioSummaryService" - }, - { - "name": "TopologyInputService" - }, - { - "name": "TopologyInputConfigService" - }, - { - "name": "TopologyUpdateService" - }, - { - "name": "TopologyUpdateConfigService" - }, - { - "name": "TopologyUpdateSyncService" - }, - { - "name": "TopologyUpdateSyncConfigService" } ], "schemes": [ @@ -200,6 +182,127 @@ ] } }, + "/api/resources/studio/v1/AssignedTags/getsome": { + "post": { + "operationId": "AssignedTagsService_GetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.AssignedTagsSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "AssignedTagsService" + ] + } + }, + "/api/resources/studio/v1/AssignedTags/metadata": { + "get": { + "operationId": "AssignedTagsService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "AssignedTagsService" + ] + }, + "post": { + "operationId": "AssignedTagsService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsStreamRequest" + } + } + ], + "tags": [ + "AssignedTagsService" + ] + } + }, "/api/resources/studio/v1/AssignedTags/watch": { "get": { "operationId": "AssignedTagsService_Subscribe", @@ -286,6 +389,92 @@ ] } }, + "/api/resources/studio/v1/AssignedTags/watchmetadata": { + "get": { + "operationId": "AssignedTagsService_SubscribeMeta", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "AssignedTagsService" + ] + }, + "post": { + "operationId": "AssignedTagsService_SubscribeMeta2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsStreamRequest" + } + } + ], + "tags": [ + "AssignedTagsService" + ] + } + }, "/api/resources/studio/v1/AssignedTagsConfig": { "get": { "operationId": "AssignedTagsConfigService_GetOne", @@ -514,9 +703,9 @@ ] } }, - "/api/resources/studio/v1/AssignedTagsConfig/watch": { - "get": { - "operationId": "AssignedTagsConfigService_Subscribe", + "/api/resources/studio/v1/AssignedTagsConfig/deletesome": { + "post": { + "operationId": "AssignedTagsConfigService_DeleteSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -524,13 +713,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigDeleteSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AssignedTagsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AssignedTagsConfigDeleteSomeResponse" } }, "default": { @@ -542,26 +731,27 @@ }, "parameters": [ { - "name": "time.start", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - }, - { - "name": "time.end", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "name": "keys", + "description": "key contains a list of AssignedTagsConfig keys to delete", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } + } } ], "tags": [ "AssignedTagsConfigService" ] - }, + } + }, + "/api/resources/studio/v1/AssignedTagsConfig/getsome": { "post": { - "operationId": "AssignedTagsConfigService_Subscribe2", + "operationId": "AssignedTagsConfigService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -569,13 +759,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AssignedTagsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AssignedTagsConfigSomeResponse" } }, "default": { @@ -587,12 +777,24 @@ }, "parameters": [ { - "name": "body", + "name": "keys", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ @@ -600,14 +802,14 @@ ] } }, - "/api/resources/studio/v1/AutofillAction": { + "/api/resources/studio/v1/AssignedTagsConfig/metadata": { "get": { - "operationId": "AutofillActionService_GetOne", + "operationId": "AssignedTagsConfigService_GetMeta", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -619,29 +821,14 @@ }, "parameters": [ { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id uniquely identifies the workspace in which the studio resides.", + "name": "time.start", "in": "query", - "required": true, - "type": "string" + "required": false, + "type": "string", + "format": "date-time" }, { - "name": "key.inputFieldId", - "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "name": "time.end", "in": "query", "required": false, "type": "string", @@ -649,13 +836,89 @@ } ], "tags": [ - "AutofillActionService" + "AssignedTagsConfigService" + ] + }, + "post": { + "operationId": "AssignedTagsConfigService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamRequest" + } + } + ], + "tags": [ + "AssignedTagsConfigService" ] } }, - "/api/resources/studio/v1/AutofillAction/all": { + "/api/resources/studio/v1/AssignedTagsConfig/some": { + "post": { + "operationId": "AssignedTagsConfigService_SetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigSetSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.AssignedTagsConfigSetSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "values", + "description": "value contains a list of AssignedTagsConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig" + } + } + } + ], + "tags": [ + "AssignedTagsConfigService" + ] + } + }, + "/api/resources/studio/v1/AssignedTagsConfig/watch": { "get": { - "operationId": "AutofillActionService_GetAll", + "operationId": "AssignedTagsConfigService_Subscribe", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -663,13 +926,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" + "title": "Stream result of arista.studio.v1.AssignedTagsConfigStreamResponse" } }, "default": { @@ -696,11 +959,11 @@ } ], "tags": [ - "AutofillActionService" + "AssignedTagsConfigService" ] }, "post": { - "operationId": "AutofillActionService_GetAll2", + "operationId": "AssignedTagsConfigService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -708,13 +971,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" + "title": "Stream result of arista.studio.v1.AssignedTagsConfigStreamResponse" } }, "default": { @@ -730,18 +993,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamRequest" } } ], "tags": [ - "AutofillActionService" + "AssignedTagsConfigService" ] } }, - "/api/resources/studio/v1/AutofillAction/watch": { + "/api/resources/studio/v1/AssignedTagsConfig/watchmetadata": { "get": { - "operationId": "AutofillActionService_Subscribe", + "operationId": "AssignedTagsConfigService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -749,13 +1012,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -782,11 +1045,11 @@ } ], "tags": [ - "AutofillActionService" + "AssignedTagsConfigService" ] }, "post": { - "operationId": "AutofillActionService_Subscribe2", + "operationId": "AssignedTagsConfigService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -794,13 +1057,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -816,23 +1079,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfigStreamRequest" } } ], "tags": [ - "AutofillActionService" + "AssignedTagsConfigService" ] } }, - "/api/resources/studio/v1/AutofillActionConfig": { + "/api/resources/studio/v1/AutofillAction": { "get": { - "operationId": "AutofillActionConfigService_GetOne", + "operationId": "AutofillActionService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionResponse" } }, "default": { @@ -874,87 +1137,13 @@ } ], "tags": [ - "AutofillActionConfigService" - ] - }, - "delete": { - "operationId": "AutofillActionConfigService_Delete", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id uniquely identifies the workspace in which the studio resides.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.inputFieldId", - "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`.", - "in": "query", - "required": true, - "type": "string" - } - ], - "tags": [ - "AutofillActionConfigService" - ] - }, - "post": { - "operationId": "AutofillActionConfigService_Set", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigSetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "value", - "description": "AutofillActionConfig carries the value to set into the datastore.\nSee the documentation on the AutofillActionConfig struct for which fields are required.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig" - } - } - ], - "tags": [ - "AutofillActionConfigService" + "AutofillActionService" ] } }, - "/api/resources/studio/v1/AutofillActionConfig/all": { + "/api/resources/studio/v1/AutofillAction/all": { "get": { - "operationId": "AutofillActionConfigService_GetAll", + "operationId": "AutofillActionService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -962,13 +1151,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" } }, "default": { @@ -995,11 +1184,11 @@ } ], "tags": [ - "AutofillActionConfigService" + "AutofillActionService" ] }, - "delete": { - "operationId": "AutofillActionConfigService_DeleteAll", + "post": { + "operationId": "AutofillActionService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1007,13 +1196,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigDeleteAllResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionConfigDeleteAllResponse" + "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" } }, "default": { @@ -1023,12 +1212,24 @@ } } }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" + } + } + ], "tags": [ - "AutofillActionConfigService" + "AutofillActionService" ] - }, + } + }, + "/api/resources/studio/v1/AutofillAction/getsome": { "post": { - "operationId": "AutofillActionConfigService_GetAll2", + "operationId": "AutofillActionService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1036,13 +1237,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionSomeResponse" } }, "default": { @@ -1054,36 +1255,39 @@ }, "parameters": [ { - "name": "body", + "name": "keys", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" + } } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ - "AutofillActionConfigService" + "AutofillActionService" ] } }, - "/api/resources/studio/v1/AutofillActionConfig/watch": { + "/api/resources/studio/v1/AutofillAction/metadata": { "get": { - "operationId": "AutofillActionConfigService_Subscribe", + "operationId": "AutofillActionService_GetMeta", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -1110,25 +1314,16 @@ } ], "tags": [ - "AutofillActionConfigService" + "AutofillActionService" ] }, "post": { - "operationId": "AutofillActionConfigService_Subscribe2", + "operationId": "AutofillActionService_GetMeta2", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -1144,75 +1339,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" - } - } - ], - "tags": [ - "AutofillActionConfigService" - ] - } - }, - "/api/resources/studio/v1/Inputs": { - "get": { - "operationId": "InputsService_GetOne", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" } } - }, - "parameters": [ - { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id uniquely identifies the workspace in which the studio resides.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.path.values", - "description": "The repeated string values.", - "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" - }, - { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - } ], "tags": [ - "InputsService" + "AutofillActionService" ] } }, - "/api/resources/studio/v1/Inputs/all": { + "/api/resources/studio/v1/AutofillAction/watch": { "get": { - "operationId": "InputsService_GetAll", + "operationId": "AutofillActionService_Subscribe", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1220,13 +1358,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" } }, "default": { @@ -1253,11 +1391,11 @@ } ], "tags": [ - "InputsService" + "AutofillActionService" ] }, "post": { - "operationId": "InputsService_GetAll2", + "operationId": "AutofillActionService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1265,13 +1403,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionStreamResponse" } }, "default": { @@ -1287,18 +1425,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" } } ], "tags": [ - "InputsService" + "AutofillActionService" ] } }, - "/api/resources/studio/v1/Inputs/watch": { + "/api/resources/studio/v1/AutofillAction/watchmetadata": { "get": { - "operationId": "InputsService_Subscribe", + "operationId": "AutofillActionService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1306,13 +1444,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -1339,11 +1477,11 @@ } ], "tags": [ - "InputsService" + "AutofillActionService" ] }, "post": { - "operationId": "InputsService_Subscribe2", + "operationId": "AutofillActionService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1351,13 +1489,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -1373,23 +1511,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AutofillActionStreamRequest" } } ], "tags": [ - "InputsService" + "AutofillActionService" ] } }, - "/api/resources/studio/v1/InputsConfig": { + "/api/resources/studio/v1/AutofillActionConfig": { "get": { - "operationId": "InputsConfigService_GetOne", + "operationId": "AutofillActionConfigService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigResponse" } }, "default": { @@ -1415,15 +1553,11 @@ "type": "string" }, { - "name": "key.path.values", - "description": "The repeated string values.", + "name": "key.inputFieldId", + "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`.", "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" + "required": true, + "type": "string" }, { "name": "time", @@ -1435,16 +1569,16 @@ } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] }, "delete": { - "operationId": "InputsConfigService_Delete", + "operationId": "AutofillActionConfigService_Delete", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigDeleteResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigDeleteResponse" } }, "default": { @@ -1470,28 +1604,24 @@ "type": "string" }, { - "name": "key.path.values", - "description": "The repeated string values.", + "name": "key.inputFieldId", + "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`.", "in": "query", - "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" + "required": true, + "type": "string" } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] }, "post": { - "operationId": "InputsConfigService_Set", + "operationId": "AutofillActionConfigService_Set", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigSetResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigSetResponse" } }, "default": { @@ -1504,22 +1634,22 @@ "parameters": [ { "name": "value", - "description": "InputsConfig carries the value to set into the datastore.\nSee the documentation on the InputsConfig struct for which fields are required.", + "description": "AutofillActionConfig carries the value to set into the datastore.\nSee the documentation on the AutofillActionConfig struct for which fields are required.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfig" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig" } } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] } }, - "/api/resources/studio/v1/InputsConfig/all": { + "/api/resources/studio/v1/AutofillActionConfig/all": { "get": { - "operationId": "InputsConfigService_GetAll", + "operationId": "AutofillActionConfigService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1527,13 +1657,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" } }, "default": { @@ -1560,11 +1690,11 @@ } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] }, "delete": { - "operationId": "InputsConfigService_DeleteAll", + "operationId": "AutofillActionConfigService_DeleteAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1572,13 +1702,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigDeleteAllResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigDeleteAllResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsConfigDeleteAllResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigDeleteAllResponse" } }, "default": { @@ -1589,11 +1719,11 @@ } }, "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] }, "post": { - "operationId": "InputsConfigService_GetAll2", + "operationId": "AutofillActionConfigService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1601,13 +1731,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" } }, "default": { @@ -1623,18 +1753,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" } } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] } }, - "/api/resources/studio/v1/InputsConfig/watch": { - "get": { - "operationId": "InputsConfigService_Subscribe", + "/api/resources/studio/v1/AutofillActionConfig/deletesome": { + "post": { + "operationId": "AutofillActionConfigService_DeleteSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1642,13 +1772,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigDeleteSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigDeleteSomeResponse" } }, "default": { @@ -1660,26 +1790,27 @@ }, "parameters": [ { - "name": "time.start", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - }, - { - "name": "time.end", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "name": "keys", + "description": "key contains a list of AutofillActionConfig keys to delete", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" + } + } } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] - }, + } + }, + "/api/resources/studio/v1/AutofillActionConfig/getsome": { "post": { - "operationId": "InputsConfigService_Subscribe2", + "operationId": "AutofillActionConfigService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1687,13 +1818,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigSomeResponse" } }, "default": { @@ -1705,27 +1836,39 @@ }, "parameters": [ { - "name": "body", + "name": "keys", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" + } } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ - "InputsConfigService" + "AutofillActionConfigService" ] } }, - "/api/resources/studio/v1/SecretInput": { + "/api/resources/studio/v1/AutofillActionConfig/metadata": { "get": { - "operationId": "SecretInputService_GetOne", + "operationId": "AutofillActionConfigService_GetMeta", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.SecretInputResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -1737,33 +1880,14 @@ }, "parameters": [ { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id uniquely identifies the workspace in which the studio resides.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.path.values", - "description": "The repeated string values.", + "name": "time.start", "in": "query", "required": false, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi" + "type": "string", + "format": "date-time" }, { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "name": "time.end", "in": "query", "required": false, "type": "string", @@ -1771,13 +1895,43 @@ } ], "tags": [ - "SecretInputService" + "AutofillActionConfigService" ] - } - }, - "/api/resources/studio/v1/SecretInput/all": { - "get": { - "operationId": "SecretInputService_GetAll", + }, + "post": { + "operationId": "AutofillActionConfigService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" + } + } + ], + "tags": [ + "AutofillActionConfigService" + ] + } + }, + "/api/resources/studio/v1/AutofillActionConfig/some": { + "post": { + "operationId": "AutofillActionConfigService_SetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1785,13 +1939,59 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigSetSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigSetSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "values", + "description": "value contains a list of AutofillActionConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig" + } + } + } + ], + "tags": [ + "AutofillActionConfigService" + ] + } + }, + "/api/resources/studio/v1/AutofillActionConfig/watch": { + "get": { + "operationId": "AutofillActionConfigService_Subscribe", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" } }, "default": { @@ -1818,11 +2018,11 @@ } ], "tags": [ - "SecretInputService" + "AutofillActionConfigService" ] }, "post": { - "operationId": "SecretInputService_GetAll2", + "operationId": "AutofillActionConfigService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1830,13 +2030,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" + "title": "Stream result of arista.studio.v1.AutofillActionConfigStreamResponse" } }, "default": { @@ -1852,18 +2052,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" } } ], "tags": [ - "SecretInputService" + "AutofillActionConfigService" ] } }, - "/api/resources/studio/v1/SecretInput/watch": { + "/api/resources/studio/v1/AutofillActionConfig/watchmetadata": { "get": { - "operationId": "SecretInputService_Subscribe", + "operationId": "AutofillActionConfigService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1871,13 +2071,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -1904,11 +2104,11 @@ } ], "tags": [ - "SecretInputService" + "AutofillActionConfigService" ] }, "post": { - "operationId": "SecretInputService_Subscribe2", + "operationId": "AutofillActionConfigService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1916,13 +2116,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -1938,23 +2138,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfigStreamRequest" } } ], "tags": [ - "SecretInputService" + "AutofillActionConfigService" ] } }, - "/api/resources/studio/v1/Studio": { + "/api/resources/studio/v1/Inputs": { "get": { - "operationId": "StudioService_GetOne", + "operationId": "InputsService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioResponse" + "$ref": "#/definitions/arista.studio.v1.InputsResponse" } }, "default": { @@ -1974,11 +2174,22 @@ }, { "name": "key.workspaceId", - "description": "workspace_id identifies the workspace within which the studio resides.", + "description": "workspace_id uniquely identifies the workspace in which the studio resides.", "in": "query", "required": true, "type": "string" }, + { + "name": "key.path.values", + "description": "The repeated string values.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, { "name": "time", "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", @@ -1989,13 +2200,13 @@ } ], "tags": [ - "StudioService" + "InputsService" ] } }, - "/api/resources/studio/v1/Studio/all": { + "/api/resources/studio/v1/Inputs/all": { "get": { - "operationId": "StudioService_GetAll", + "operationId": "InputsService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2003,13 +2214,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioStreamResponse" + "title": "Stream result of arista.studio.v1.InputsStreamResponse" } }, "default": { @@ -2036,11 +2247,11 @@ } ], "tags": [ - "StudioService" + "InputsService" ] }, "post": { - "operationId": "StudioService_GetAll2", + "operationId": "InputsService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2048,13 +2259,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioStreamResponse" + "title": "Stream result of arista.studio.v1.InputsStreamResponse" } }, "default": { @@ -2070,18 +2281,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" + "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" } } ], "tags": [ - "StudioService" + "InputsService" ] } }, - "/api/resources/studio/v1/Studio/watch": { - "get": { - "operationId": "StudioService_Subscribe", + "/api/resources/studio/v1/Inputs/getsome": { + "post": { + "operationId": "InputsService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2089,13 +2300,57 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioStreamResponse" + "title": "Stream result of arista.studio.v1.InputsSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.InputsKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "InputsService" + ] + } + }, + "/api/resources/studio/v1/Inputs/metadata": { + "get": { + "operationId": "InputsService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -2122,25 +2377,16 @@ } ], "tags": [ - "StudioService" + "InputsService" ] }, "post": { - "operationId": "StudioService_Subscribe2", + "operationId": "InputsService_GetMeta2", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.StudioStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -2156,23 +2402,32 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" + "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" } } ], "tags": [ - "StudioService" + "InputsService" ] } }, - "/api/resources/studio/v1/StudioConfig": { + "/api/resources/studio/v1/Inputs/watch": { "get": { - "operationId": "StudioConfigService_GetOne", + "operationId": "InputsService_Subscribe", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.InputsStreamResponse" } }, "default": { @@ -2184,22 +2439,14 @@ }, "parameters": [ { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace within which the studio resides.", + "name": "time.start", "in": "query", - "required": true, - "type": "string" + "required": false, + "type": "string", + "format": "date-time" }, { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "name": "time.end", "in": "query", "required": false, "type": "string", @@ -2207,16 +2454,25 @@ } ], "tags": [ - "StudioConfigService" + "InputsService" ] }, - "delete": { - "operationId": "StudioConfigService_Delete", + "post": { + "operationId": "InputsService_Subscribe2", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigDeleteResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.InputsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.InputsStreamResponse" } }, "default": { @@ -2228,59 +2484,22 @@ }, "parameters": [ { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace within which the studio resides.", - "in": "query", - "required": true, - "type": "string" - } - ], - "tags": [ - "StudioConfigService" - ] - }, - "post": { - "operationId": "StudioConfigService_Set", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigSetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "value", - "description": "StudioConfig carries the value to set into the datastore.\nSee the documentation on the StudioConfig struct for which fields are required.", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfig" + "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" } } ], "tags": [ - "StudioConfigService" + "InputsService" ] } }, - "/api/resources/studio/v1/StudioConfig/all": { + "/api/resources/studio/v1/Inputs/watchmetadata": { "get": { - "operationId": "StudioConfigService_GetAll", + "operationId": "InputsService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2288,13 +2507,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -2321,40 +2540,11 @@ } ], "tags": [ - "StudioConfigService" - ] - }, - "delete": { - "operationId": "StudioConfigService_DeleteAll", - "responses": { - "200": { - "description": "A successful response.(streaming responses)", - "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigDeleteAllResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.StudioConfigDeleteAllResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "tags": [ - "StudioConfigService" + "InputsService" ] }, "post": { - "operationId": "StudioConfigService_GetAll2", + "operationId": "InputsService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2362,13 +2552,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -2384,32 +2574,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" + "$ref": "#/definitions/arista.studio.v1.InputsStreamRequest" } } ], "tags": [ - "StudioConfigService" + "InputsService" ] } }, - "/api/resources/studio/v1/StudioConfig/watch": { + "/api/resources/studio/v1/InputsConfig": { "get": { - "operationId": "StudioConfigService_Subscribe", + "operationId": "InputsConfigService_GetOne", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigResponse" } }, "default": { @@ -2421,14 +2602,33 @@ }, "parameters": [ { - "name": "time.start", + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.workspaceId", + "description": "workspace_id uniquely identifies the workspace in which the studio resides.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.path.values", + "description": "The repeated string values.", "in": "query", "required": false, - "type": "string", - "format": "date-time" + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" }, { - "name": "time.end", + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", "in": "query", "required": false, "type": "string", @@ -2436,25 +2636,16 @@ } ], "tags": [ - "StudioConfigService" + "InputsConfigService" ] }, - "post": { - "operationId": "StudioConfigService_Subscribe2", + "delete": { + "operationId": "InputsConfigService_Delete", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigDeleteResponse" } }, "default": { @@ -2466,27 +2657,42 @@ }, "parameters": [ { - "name": "body", - "in": "body", + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", "required": true, - "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" - } + "type": "string" + }, + { + "name": "key.workspaceId", + "description": "workspace_id uniquely identifies the workspace in which the studio resides.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.path.values", + "description": "The repeated string values.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" } ], "tags": [ - "StudioConfigService" + "InputsConfigService" ] - } - }, - "/api/resources/studio/v1/StudioSummary": { - "get": { - "operationId": "StudioSummaryService_GetOne", + }, + "post": { + "operationId": "InputsConfigService_Set", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigSetResponse" } }, "default": { @@ -2498,36 +2704,23 @@ }, "parameters": [ { - "name": "key.studioId", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace within which the studio resides.", - "in": "query", + "name": "value", + "description": "InputsConfig carries the value to set into the datastore.\nSee the documentation on the InputsConfig struct for which fields are required.", + "in": "body", "required": true, - "type": "string" - }, - { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "schema": { + "$ref": "#/definitions/arista.studio.v1.InputsConfig" + } } ], "tags": [ - "StudioSummaryService" + "InputsConfigService" ] } }, - "/api/resources/studio/v1/StudioSummary/all": { + "/api/resources/studio/v1/InputsConfig/all": { "get": { - "operationId": "StudioSummaryService_GetAll", + "operationId": "InputsConfigService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2535,13 +2728,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" } }, "default": { @@ -2568,11 +2761,11 @@ } ], "tags": [ - "StudioSummaryService" + "InputsConfigService" ] }, - "post": { - "operationId": "StudioSummaryService_GetAll2", + "delete": { + "operationId": "InputsConfigService_DeleteAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2580,13 +2773,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigDeleteAllResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigDeleteAllResponse" } }, "default": { @@ -2596,24 +2789,12 @@ } } }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" - } - } - ], "tags": [ - "StudioSummaryService" + "InputsConfigService" ] - } - }, - "/api/resources/studio/v1/StudioSummary/watch": { - "get": { - "operationId": "StudioSummaryService_Subscribe", + }, + "post": { + "operationId": "InputsConfigService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2621,13 +2802,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" } }, "default": { @@ -2639,26 +2820,22 @@ }, "parameters": [ { - "name": "time.start", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - }, - { - "name": "time.end", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" + } } ], "tags": [ - "StudioSummaryService" + "InputsConfigService" ] - }, + } + }, + "/api/resources/studio/v1/InputsConfig/deletesome": { "post": { - "operationId": "StudioSummaryService_Subscribe2", + "operationId": "InputsConfigService_DeleteSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2666,13 +2843,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigDeleteSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigDeleteSomeResponse" } }, "default": { @@ -2684,27 +2861,41 @@ }, "parameters": [ { - "name": "body", + "name": "keys", + "description": "key contains a list of InputsConfig keys to delete", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.InputsKey" + } } } ], "tags": [ - "StudioSummaryService" + "InputsConfigService" ] } }, - "/api/resources/studio/v1/TopologyInput": { - "get": { - "operationId": "TopologyInputService_GetOne", + "/api/resources/studio/v1/InputsConfig/getsome": { + "post": { + "operationId": "InputsConfigService_GetSome", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.InputsConfigSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.InputsConfigSomeResponse" } }, "default": { @@ -2716,18 +2907,16 @@ }, "parameters": [ { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.deviceId", - "description": "device_id identifies the device uniquely.", - "in": "query", + "name": "keys", + "in": "body", "required": true, - "type": "string" + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.InputsKey" + } + } }, { "name": "time", @@ -2739,27 +2928,18 @@ } ], "tags": [ - "TopologyInputService" + "InputsConfigService" ] } }, - "/api/resources/studio/v1/TopologyInput/all": { + "/api/resources/studio/v1/InputsConfig/metadata": { "get": { - "operationId": "TopologyInputService_GetAll", + "operationId": "InputsConfigService_GetMeta", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.TopologyInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -2786,11 +2966,43 @@ } ], "tags": [ - "TopologyInputService" + "InputsConfigService" ] }, "post": { - "operationId": "TopologyInputService_GetAll2", + "operationId": "InputsConfigService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" + } + } + ], + "tags": [ + "InputsConfigService" + ] + } + }, + "/api/resources/studio/v1/InputsConfig/some": { + "post": { + "operationId": "InputsConfigService_SetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2798,13 +3010,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigSetSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigSetSomeResponse" } }, "default": { @@ -2816,22 +3028,27 @@ }, "parameters": [ { - "name": "body", + "name": "values", + "description": "value contains a list of InputsConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.InputsConfig" + } } } ], "tags": [ - "TopologyInputService" + "InputsConfigService" ] } }, - "/api/resources/studio/v1/TopologyInput/watch": { + "/api/resources/studio/v1/InputsConfig/watch": { "get": { - "operationId": "TopologyInputService_Subscribe", + "operationId": "InputsConfigService_Subscribe", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2839,13 +3056,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" } }, "default": { @@ -2872,11 +3089,11 @@ } ], "tags": [ - "TopologyInputService" + "InputsConfigService" ] }, "post": { - "operationId": "TopologyInputService_Subscribe2", + "operationId": "InputsConfigService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -2884,13 +3101,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamResponse" + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputStreamResponse" + "title": "Stream result of arista.studio.v1.InputsConfigStreamResponse" } }, "default": { @@ -2906,23 +3123,32 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputStreamRequest" + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" } } ], "tags": [ - "TopologyInputService" + "InputsConfigService" ] } }, - "/api/resources/studio/v1/TopologyInputConfig": { + "/api/resources/studio/v1/InputsConfig/watchmetadata": { "get": { - "operationId": "TopologyInputConfigService_GetOne", + "operationId": "InputsConfigService_SubscribeMeta", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -2934,22 +3160,14 @@ }, "parameters": [ { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.deviceId", - "description": "device_id identifies the device uniquely.", + "name": "time.start", "in": "query", - "required": true, - "type": "string" + "required": false, + "type": "string", + "format": "date-time" }, { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "name": "time.end", "in": "query", "required": false, "type": "string", @@ -2957,16 +3175,25 @@ } ], "tags": [ - "TopologyInputConfigService" + "InputsConfigService" ] }, - "delete": { - "operationId": "TopologyInputConfigService_Delete", + "post": { + "operationId": "InputsConfigService_SubscribeMeta2", "responses": { "200": { - "description": "A successful response.", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigDeleteResponse" + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -2978,31 +3205,27 @@ }, "parameters": [ { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.deviceId", - "description": "device_id identifies the device uniquely.", - "in": "query", + "name": "body", + "in": "body", "required": true, - "type": "string" + "schema": { + "$ref": "#/definitions/arista.studio.v1.InputsConfigStreamRequest" + } } ], "tags": [ - "TopologyInputConfigService" + "InputsConfigService" ] - }, - "post": { - "operationId": "TopologyInputConfigService_Set", + } + }, + "/api/resources/studio/v1/SecretInput": { + "get": { + "operationId": "SecretInputService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigSetResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputResponse" } }, "default": { @@ -3014,23 +3237,47 @@ }, "parameters": [ { - "name": "value", - "description": "TopologyInputConfig carries the value to set into the datastore.\nSee the documentation on the TopologyInputConfig struct for which fields are required.", - "in": "body", + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", "required": true, - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfig" - } + "type": "string" + }, + { + "name": "key.workspaceId", + "description": "workspace_id uniquely identifies the workspace in which the studio resides.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.path.values", + "description": "The repeated string values.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] } }, - "/api/resources/studio/v1/TopologyInputConfig/all": { + "/api/resources/studio/v1/SecretInput/all": { "get": { - "operationId": "TopologyInputConfigService_GetAll", + "operationId": "SecretInputService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3038,13 +3285,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputConfigStreamResponse" + "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" } }, "default": { @@ -3071,11 +3318,11 @@ } ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] }, - "delete": { - "operationId": "TopologyInputConfigService_DeleteAll", + "post": { + "operationId": "SecretInputService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3083,13 +3330,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigDeleteAllResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputConfigDeleteAllResponse" + "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" } }, "default": { @@ -3099,12 +3346,24 @@ } } }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" + } + } + ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] - }, + } + }, + "/api/resources/studio/v1/SecretInput/getsome": { "post": { - "operationId": "TopologyInputConfigService_GetAll2", + "operationId": "SecretInputService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3112,13 +3371,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyInputConfigStreamResponse" + "title": "Stream result of arista.studio.v1.SecretInputSomeResponse" } }, "default": { @@ -3130,36 +3389,39 @@ }, "parameters": [ { - "name": "body", + "name": "keys", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.InputsKey" + } } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] } }, - "/api/resources/studio/v1/TopologyInputConfig/watch": { + "/api/resources/studio/v1/SecretInput/metadata": { "get": { - "operationId": "TopologyInputConfigService_Subscribe", + "operationId": "SecretInputService_GetMeta", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.TopologyInputConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -3186,25 +3448,16 @@ } ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] }, "post": { - "operationId": "TopologyInputConfigService_Subscribe2", + "operationId": "SecretInputService_GetMeta2", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.TopologyInputConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -3220,64 +3473,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfigStreamRequest" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" } } ], "tags": [ - "TopologyInputConfigService" + "SecretInputService" ] } }, - "/api/resources/studio/v1/TopologyUpdate": { + "/api/resources/studio/v1/SecretInput/watch": { "get": { - "operationId": "TopologyUpdateService_GetOne", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.updateId", - "description": "update_id identifies the update uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - } - ], - "tags": [ - "TopologyUpdateService" - ] - } - }, - "/api/resources/studio/v1/TopologyUpdate/all": { - "get": { - "operationId": "TopologyUpdateService_GetAll", + "operationId": "SecretInputService_Subscribe", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3285,13 +3492,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateStreamResponse" + "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" } }, "default": { @@ -3318,11 +3525,11 @@ } ], "tags": [ - "TopologyUpdateService" + "SecretInputService" ] }, "post": { - "operationId": "TopologyUpdateService_GetAll2", + "operationId": "SecretInputService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3330,13 +3537,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamResponse" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateStreamResponse" + "title": "Stream result of arista.studio.v1.SecretInputStreamResponse" } }, "default": { @@ -3352,18 +3559,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamRequest" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" } } ], "tags": [ - "TopologyUpdateService" + "SecretInputService" ] } }, - "/api/resources/studio/v1/TopologyUpdate/watch": { + "/api/resources/studio/v1/SecretInput/watchmetadata": { "get": { - "operationId": "TopologyUpdateService_Subscribe", + "operationId": "SecretInputService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3371,13 +3578,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -3404,11 +3611,11 @@ } ], "tags": [ - "TopologyUpdateService" + "SecretInputService" ] }, "post": { - "operationId": "TopologyUpdateService_Subscribe2", + "operationId": "SecretInputService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3416,13 +3623,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -3438,23 +3645,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStreamRequest" + "$ref": "#/definitions/arista.studio.v1.SecretInputStreamRequest" } } ], "tags": [ - "TopologyUpdateService" + "SecretInputService" ] } }, - "/api/resources/studio/v1/TopologyUpdateConfig": { + "/api/resources/studio/v1/Studio": { "get": { - "operationId": "TopologyUpdateConfigService_GetOne", + "operationId": "StudioService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigResponse" + "$ref": "#/definitions/arista.studio.v1.StudioResponse" } }, "default": { @@ -3466,15 +3673,15 @@ }, "parameters": [ { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", "in": "query", "required": true, "type": "string" }, { - "name": "key.updateId", - "description": "update_id identifies the update uniquely.", + "name": "key.workspaceId", + "description": "workspace_id identifies the workspace within which the studio resides.", "in": "query", "required": true, "type": "string" @@ -3489,80 +3696,13 @@ } ], "tags": [ - "TopologyUpdateConfigService" - ] - }, - "delete": { - "operationId": "TopologyUpdateConfigService_Delete", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "key.updateId", - "description": "update_id identifies the update uniquely.", - "in": "query", - "required": true, - "type": "string" - } - ], - "tags": [ - "TopologyUpdateConfigService" - ] - }, - "post": { - "operationId": "TopologyUpdateConfigService_Set", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigSetResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" - } - } - }, - "parameters": [ - { - "name": "value", - "description": "TopologyUpdateConfig carries the value to set into the datastore.\nSee the documentation on the TopologyUpdateConfig struct for which fields are required.", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfig" - } - } - ], - "tags": [ - "TopologyUpdateConfigService" + "StudioService" ] } }, - "/api/resources/studio/v1/TopologyUpdateConfig/all": { + "/api/resources/studio/v1/Studio/all": { "get": { - "operationId": "TopologyUpdateConfigService_GetAll", + "operationId": "StudioService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3570,13 +3710,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioStreamResponse" } }, "default": { @@ -3603,11 +3743,11 @@ } ], "tags": [ - "TopologyUpdateConfigService" + "StudioService" ] }, - "delete": { - "operationId": "TopologyUpdateConfigService_DeleteAll", + "post": { + "operationId": "StudioService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3615,13 +3755,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigDeleteAllResponse" + "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateConfigDeleteAllResponse" + "title": "Stream result of arista.studio.v1.StudioStreamResponse" } }, "default": { @@ -3631,12 +3771,24 @@ } } }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" + } + } + ], "tags": [ - "TopologyUpdateConfigService" + "StudioService" ] - }, + } + }, + "/api/resources/studio/v1/Studio/getsome": { "post": { - "operationId": "TopologyUpdateConfigService_GetAll2", + "operationId": "StudioService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3644,13 +3796,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioSomeResponse" } }, "default": { @@ -3662,36 +3814,39 @@ }, "parameters": [ { - "name": "body", + "name": "keys", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" } ], "tags": [ - "TopologyUpdateConfigService" + "StudioService" ] } }, - "/api/resources/studio/v1/TopologyUpdateConfig/watch": { + "/api/resources/studio/v1/Studio/metadata": { "get": { - "operationId": "TopologyUpdateConfigService_Subscribe", + "operationId": "StudioService_GetMeta", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.TopologyUpdateConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -3718,25 +3873,16 @@ } ], "tags": [ - "TopologyUpdateConfigService" + "StudioService" ] }, "post": { - "operationId": "TopologyUpdateConfigService_Subscribe2", + "operationId": "StudioService_GetMeta2", "responses": { "200": { - "description": "A successful response.(streaming responses)", + "description": "A successful response.", "schema": { - "type": "object", - "properties": { - "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamResponse" - }, - "error": { - "$ref": "#/definitions/google.rpc.Status" - } - }, - "title": "Stream result of arista.studio.v1.TopologyUpdateConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -3752,57 +3898,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfigStreamRequest" - } - } - ], - "tags": [ - "TopologyUpdateConfigService" - ] - } - }, - "/api/resources/studio/v1/TopologyUpdateSync": { - "get": { - "operationId": "TopologyUpdateSyncService_GetOne", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/google.rpc.Status" + "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" } } - }, - "parameters": [ - { - "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", - "in": "query", - "required": true, - "type": "string" - }, - { - "name": "time", - "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", - "in": "query", - "required": false, - "type": "string", - "format": "date-time" - } ], "tags": [ - "TopologyUpdateSyncService" + "StudioService" ] } }, - "/api/resources/studio/v1/TopologyUpdateSync/all": { + "/api/resources/studio/v1/Studio/watch": { "get": { - "operationId": "TopologyUpdateSyncService_GetAll", + "operationId": "StudioService_Subscribe", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3810,13 +3917,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncStreamResponse" + "title": "Stream result of arista.studio.v1.StudioStreamResponse" } }, "default": { @@ -3843,11 +3950,11 @@ } ], "tags": [ - "TopologyUpdateSyncService" + "StudioService" ] }, "post": { - "operationId": "TopologyUpdateSyncService_GetAll2", + "operationId": "StudioService_Subscribe2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3855,13 +3962,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncStreamResponse" + "title": "Stream result of arista.studio.v1.StudioStreamResponse" } }, "default": { @@ -3877,18 +3984,18 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamRequest" + "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" } } ], "tags": [ - "TopologyUpdateSyncService" + "StudioService" ] } }, - "/api/resources/studio/v1/TopologyUpdateSync/watch": { + "/api/resources/studio/v1/Studio/watchmetadata": { "get": { - "operationId": "TopologyUpdateSyncService_Subscribe", + "operationId": "StudioService_SubscribeMeta", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3896,13 +4003,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -3929,11 +4036,11 @@ } ], "tags": [ - "TopologyUpdateSyncService" + "StudioService" ] }, "post": { - "operationId": "TopologyUpdateSyncService_Subscribe2", + "operationId": "StudioService_SubscribeMeta2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -3941,13 +4048,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamResponse" + "$ref": "#/definitions/arista.studio.v1.MetaResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncStreamResponse" + "title": "Stream result of arista.studio.v1.MetaResponse" } }, "default": { @@ -3963,23 +4070,23 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncStreamRequest" + "$ref": "#/definitions/arista.studio.v1.StudioStreamRequest" } } ], "tags": [ - "TopologyUpdateSyncService" + "StudioService" ] } }, - "/api/resources/studio/v1/TopologyUpdateSyncConfig": { + "/api/resources/studio/v1/StudioConfig": { "get": { - "operationId": "TopologyUpdateSyncConfigService_GetOne", + "operationId": "StudioConfigService_GetOne", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigResponse" } }, "default": { @@ -3990,9 +4097,16 @@ } }, "parameters": [ + { + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", + "required": true, + "type": "string" + }, { "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", + "description": "workspace_id identifies the workspace within which the studio resides.", "in": "query", "required": true, "type": "string" @@ -4007,16 +4121,16 @@ } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] }, "delete": { - "operationId": "TopologyUpdateSyncConfigService_Delete", + "operationId": "StudioConfigService_Delete", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigDeleteResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigDeleteResponse" } }, "default": { @@ -4027,25 +4141,32 @@ } }, "parameters": [ + { + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", + "required": true, + "type": "string" + }, { "name": "key.workspaceId", - "description": "workspace_id identifies the workspace uniquely.", + "description": "workspace_id identifies the workspace within which the studio resides.", "in": "query", "required": true, "type": "string" } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] }, "post": { - "operationId": "TopologyUpdateSyncConfigService_Set", + "operationId": "StudioConfigService_Set", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigSetResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigSetResponse" } }, "default": { @@ -4058,22 +4179,22 @@ "parameters": [ { "name": "value", - "description": "TopologyUpdateSyncConfig carries the value to set into the datastore.\nSee the documentation on the TopologyUpdateSyncConfig struct for which fields are required.", + "description": "StudioConfig carries the value to set into the datastore.\nSee the documentation on the StudioConfig struct for which fields are required.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfig" + "$ref": "#/definitions/arista.studio.v1.StudioConfig" } } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] } }, - "/api/resources/studio/v1/TopologyUpdateSyncConfig/all": { + "/api/resources/studio/v1/StudioConfig/all": { "get": { - "operationId": "TopologyUpdateSyncConfigService_GetAll", + "operationId": "StudioConfigService_GetAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -4081,13 +4202,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" } }, "default": { @@ -4114,11 +4235,11 @@ } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] }, "delete": { - "operationId": "TopologyUpdateSyncConfigService_DeleteAll", + "operationId": "StudioConfigService_DeleteAll", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -4126,13 +4247,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigDeleteAllResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigDeleteAllResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncConfigDeleteAllResponse" + "title": "Stream result of arista.studio.v1.StudioConfigDeleteAllResponse" } }, "default": { @@ -4143,11 +4264,11 @@ } }, "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] }, "post": { - "operationId": "TopologyUpdateSyncConfigService_GetAll2", + "operationId": "StudioConfigService_GetAll2", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -4155,13 +4276,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" } }, "default": { @@ -4177,18 +4298,64 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamRequest" + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" } } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] } }, - "/api/resources/studio/v1/TopologyUpdateSyncConfig/watch": { - "get": { - "operationId": "TopologyUpdateSyncConfigService_Subscribe", + "/api/resources/studio/v1/StudioConfig/deletesome": { + "post": { + "operationId": "StudioConfigService_DeleteSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigDeleteSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioConfigDeleteSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "description": "key contains a list of StudioConfig keys to delete", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } + } + } + ], + "tags": [ + "StudioConfigService" + ] + } + }, + "/api/resources/studio/v1/StudioConfig/getsome": { + "post": { + "operationId": "StudioConfigService_GetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -4196,13 +4363,57 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioConfigSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioConfigService" + ] + } + }, + "/api/resources/studio/v1/StudioConfig/metadata": { + "get": { + "operationId": "StudioConfigService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" } }, "default": { @@ -4229,11 +4440,43 @@ } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] }, "post": { - "operationId": "TopologyUpdateSyncConfigService_Subscribe2", + "operationId": "StudioConfigService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" + } + } + ], + "tags": [ + "StudioConfigService" + ] + } + }, + "/api/resources/studio/v1/StudioConfig/some": { + "post": { + "operationId": "StudioConfigService_SetSome", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -4241,13 +4484,13 @@ "type": "object", "properties": { "result": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "$ref": "#/definitions/arista.studio.v1.StudioConfigSetSomeResponse" }, "error": { "$ref": "#/definitions/google.rpc.Status" } }, - "title": "Stream result of arista.studio.v1.TopologyUpdateSyncConfigStreamResponse" + "title": "Stream result of arista.studio.v1.StudioConfigSetSomeResponse" } }, "default": { @@ -4259,312 +4502,687 @@ }, "parameters": [ { - "name": "body", + "name": "values", + "description": "value contains a list of StudioConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfigStreamRequest" + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioConfig" + } } } ], "tags": [ - "TopologyUpdateSyncConfigService" + "StudioConfigService" ] } - } - }, - "definitions": { - "arista.studio.v1.AssignedTags": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "key uniquely identifies the studio to which devices were assigned." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "created_at is the time at which the assignment was first created." - }, - "createdBy": { - "type": "string", - "description": "created_by is the name of the user that created the assignment." - }, - "lastModifiedAt": { - "type": "string", - "format": "date-time", - "description": "last_modified_at is the time at which the assignment was last modified." - }, - "lastModifiedBy": { - "type": "string", - "description": "last_modified_by is the name of the user that last modified the assignment." - }, - "query": { - "type": "string", - "description": "query is a tag query string that conforms to the CloudVision\ntag query language. See `AssignedTagsConfig`." - } - }, - "description": "AssignedTags can be used to retrieve additional metadata about a\nstudio's `AssignedTagsConfig`." }, - "arista.studio.v1.AssignedTagsConfig": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "key uniquely identifies the studio to which to assign devices." - }, - "remove": { - "type": "boolean", - "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the tag assignments involving the studio identified\nby the key if the encompassing workspace merges. Other data\nfields are not allowed if this field is set to true." + "/api/resources/studio/v1/StudioConfig/watch": { + "get": { + "operationId": "StudioConfigService_Subscribe", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "query": { - "type": "string", - "description": "query is a tag query string that conforms to the CloudVision\ntag query language. E.g., the query, `\"datacenter:NYC,SFO AND\nsflow:enabled\"`, matches all devices with sflow enabled in\ndata centers NYC and SFO." - } + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioConfigService" + ] }, - "description": "AssignedTagsConfig holds a configuration to assign a studio to a set of devices\nmatching a tag query." - }, - "arista.studio.v1.AssignedTagsConfigDeleteAllResponse": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." - }, - "error": { - "type": "string", - "description": "This indicates the error message from the delete failure." - }, - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "This is the key of the AssignedTagsConfig instance that failed to be deleted." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time indicates the (UTC) timestamp when the key was being deleted." - } - } - }, - "arista.studio.v1.AssignedTagsConfigDeleteResponse": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "Key echoes back the key of the deleted AssignedTagsConfig instance." + "post": { + "operationId": "StudioConfigService_Subscribe2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioConfigStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==DeletedAt will not include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ndeletion. The only guarantees made about this timestamp are:" - } + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" + } + } + ], + "tags": [ + "StudioConfigService" + ] } }, - "arista.studio.v1.AssignedTagsConfigResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + "/api/resources/studio/v1/StudioConfig/watchmetadata": { + "get": { + "operationId": "StudioConfigService_SubscribeMeta", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nAssignedTagsConfig instance in this response." - } + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioConfigService" + ] + }, + "post": { + "operationId": "StudioConfigService_SubscribeMeta2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioConfigStreamRequest" + } + } + ], + "tags": [ + "StudioConfigService" + ] } }, - "arista.studio.v1.AssignedTagsConfigSetResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", - "description": "Value carries all the values given in the AssignedTagsConfigSetRequest as well\nas any server-generated values." + "/api/resources/studio/v1/StudioSummary": { + "get": { + "operationId": "StudioSummaryService_GetOne", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==CreatedAt will include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ncreation. The only guarantees made about this timestamp are:" - } + "parameters": [ + { + "name": "key.studioId", + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.workspaceId", + "description": "workspace_id identifies the workspace within which the studio resides.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] } }, - "arista.studio.v1.AssignedTagsConfigSetSomeResponse": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey" + "/api/resources/studio/v1/StudioSummary/all": { + "get": { + "operationId": "StudioSummaryService_GetAll", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "error": { - "type": "string" - } + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] + }, + "post": { + "operationId": "StudioSummaryService_GetAll2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" + } + } + ], + "tags": [ + "StudioSummaryService" + ] } }, - "arista.studio.v1.AssignedTagsConfigStreamRequest": { - "type": "object", - "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig" + "/api/resources/studio/v1/StudioSummary/getsome": { + "post": { + "operationId": "StudioSummaryService_GetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioSummarySomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioSummarySomeResponse" + } }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AssignedTagsConfig at end.\n * Each AssignedTagsConfig response is fully-specified (all fields set).\n * start: Returns the state of each AssignedTagsConfig at start, followed by updates until now.\n * Each AssignedTagsConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AssignedTagsConfig at start, followed by updates\n until end.\n * Each AssignedTagsConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." - } + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.StudioKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] } }, - "arista.studio.v1.AssignedTagsConfigStreamResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + "/api/resources/studio/v1/StudioSummary/metadata": { + "get": { + "operationId": "StudioSummaryService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time holds the timestamp of this AssignedTagsConfig's last modification." + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] + }, + "post": { + "operationId": "StudioSummaryService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the AssignedTagsConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." - } + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" + } + } + ], + "tags": [ + "StudioSummaryService" + ] } }, - "arista.studio.v1.AssignedTagsResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AssignedTags", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + "/api/resources/studio/v1/StudioSummary/watch": { + "get": { + "operationId": "StudioSummaryService_Subscribe", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nAssignedTags instance in this response." - } - } - }, - "arista.studio.v1.AssignedTagsStreamRequest": { - "type": "object", - "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.AssignedTags" + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] + }, + "post": { + "operationId": "StudioSummaryService_Subscribe2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.StudioSummaryStreamResponse" + } }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AssignedTags at end.\n * Each AssignedTags response is fully-specified (all fields set).\n * start: Returns the state of each AssignedTags at start, followed by updates until now.\n * Each AssignedTags response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AssignedTags at start, followed by updates\n until end.\n * Each AssignedTags response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." - } + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" + } + } + ], + "tags": [ + "StudioSummaryService" + ] } }, - "arista.studio.v1.AssignedTagsStreamResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AssignedTags", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + "/api/resources/studio/v1/StudioSummary/watchmetadata": { + "get": { + "operationId": "StudioSummaryService_SubscribeMeta", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time holds the timestamp of this AssignedTags's last modification." + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "StudioSummaryService" + ] + }, + "post": { + "operationId": "StudioSummaryService_SubscribeMeta2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.studio.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.studio.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the AssignedTags value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." - } + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.studio.v1.StudioSummaryStreamRequest" + } + } + ], + "tags": [ + "StudioSummaryService" + ] } - }, - "arista.studio.v1.AutofillAction": { + } + }, + "definitions": { + "arista.studio.v1.AssignedTags": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", - "description": "key uniquely identifies the action-to-studio association." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "key uniquely identifies the studio to which devices were assigned." }, "createdAt": { "type": "string", "format": "date-time", - "description": "created_at is the time at which the inputs were first set." + "description": "created_at is the time at which the assignment was first created." }, "createdBy": { "type": "string", - "description": "created_by is the name of the user that first set the inputs." + "description": "created_by is the name of the user that created the assignment." }, "lastModifiedAt": { "type": "string", "format": "date-time", - "description": "last_modified_at is the time at which the inputs were last modified." + "description": "last_modified_at is the time at which the assignment was last modified." }, "lastModifiedBy": { "type": "string", - "description": "last_modified_by is the name of the user that last modified the inputs." - }, - "actionId": { - "type": "string", - "description": "action_id uniquely identifies the autofill action associated with the input field." + "description": "last_modified_by is the name of the user that last modified the assignment." }, - "description": { + "query": { "type": "string", - "description": "description is an optional field to describe the autofill action that will be\ndisplayed in a tooltip in the UI when the user hovers over the button to run\nthe autofill action." - }, - "argumentProviders": { - "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProviders", - "description": "argument_providers is an optional field that specifies how dynamic arguments are\nto be provided to the autofill action when executed. If an argument is omitted\nfrom the provider map, it will not be defined in the arguments passed to the scripts.\nIf the entire field is omitted, no additional argument values will be passed to the\nscript beyond any statically defined arguments and the system-provided arguments\nwhich are always set in an autofill action execution context (namely InputPath,\nStudioID, and WorkspaceID)." + "description": "query is a tag query string that conforms to the CloudVision\ntag query language. See `AssignedTagsConfig`." } }, - "description": "AutofillAction can be used to retrieve additional metadata about an autofill action." + "description": "AssignedTags can be used to retrieve additional metadata about a\nstudio's `AssignedTagsConfig`." }, - "arista.studio.v1.AutofillActionConfig": { + "arista.studio.v1.AssignedTagsConfig": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", - "description": "key uniquely identifies the action-to-studio association." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "key uniquely identifies the studio to which to assign devices." }, "remove": { "type": "boolean", - "description": "remove indicates whether to remove (`true`) or add (`false`, unset)\nthe autofill action configuration identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this field is set to true." - }, - "actionId": { - "type": "string", - "description": "action_id uniquely identifies the autofill action associated with the input field." + "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the tag assignments involving the studio identified\nby the key if the encompassing workspace merges. Other data\nfields are not allowed if this field is set to true." }, - "description": { + "query": { "type": "string", - "description": "description is an optional field to describe the autofill action that will be\ndisplayed in a tooltip in the UI when the user hovers over the button to run\nthe autofill action." - }, - "argumentProviders": { - "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProviders", - "description": "argument_providers is an optional field that specifies how dynamic arguments are\nto be provided to the autofill action when executed. If an argument is omitted\nfrom the provider map, it will not be defined in the arguments passed to the scripts.\nIf the entire field is omitted, no additional argument values will be passed to the\nscript beyond any statically defined arguments and the system-provided arguments\nwhich are always set in an autofill action execution context (namely InputPath,\nStudioId, and WorkspaceId)." + "description": "query is a tag query string that conforms to the CloudVision\ntag query language. E.g., the query, `\"datacenter:NYC,SFO AND\nsflow:enabled\"`, matches all devices with sflow enabled in\ndata centers NYC and SFO." } }, - "description": "AutofillActionConfig contains configuration information for an autofill action." + "description": "AssignedTagsConfig holds a configuration to assign a studio to a set of devices\nmatching a tag query." }, - "arista.studio.v1.AutofillActionConfigDeleteAllResponse": { + "arista.studio.v1.AssignedTagsConfigDeleteAllResponse": { "type": "object", "properties": { "type": { "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "description": "This describes the class of delete error.\nA DeleteAllResponse is only sent when there is an error." }, "error": { "type": "string", "description": "This indicates the error message from the delete failure." }, "key": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", - "description": "This is the key of the AutofillActionConfig instance that failed to be deleted." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "This is the key of the AssignedTagsConfig instance that failed to be deleted." }, "time": { "type": "string", @@ -4573,12 +5191,12 @@ } } }, - "arista.studio.v1.AutofillActionConfigDeleteResponse": { + "arista.studio.v1.AssignedTagsConfigDeleteResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", - "description": "Key echoes back the key of the deleted AutofillActionConfig instance." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "Key echoes back the key of the deleted AssignedTagsConfig instance." }, "time": { "type": "string", @@ -4588,388 +5206,182 @@ } } }, - "arista.studio.v1.AutofillActionConfigResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nAutofillActionConfig instance in this response." - } - } - }, - "arista.studio.v1.AutofillActionConfigSetResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", - "description": "Value carries all the values given in the AutofillActionConfigSetRequest as well\nas any server-generated values." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==CreatedAt will include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ncreation. The only guarantees made about this timestamp are:" - } - } - }, - "arista.studio.v1.AutofillActionConfigSetSomeResponse": { + "arista.studio.v1.AssignedTagsConfigDeleteSomeResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" + "$ref": "#/definitions/arista.studio.v1.StudioKey" }, "error": { "type": "string" } - } + }, + "description": "AssignedTagsConfigDeleteSomeResponse is only sent when there is an error." }, - "arista.studio.v1.AutofillActionConfigStreamRequest": { + "arista.studio.v1.AssignedTagsConfigResponse": { "type": "object", "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig" - }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + "value": { + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AutofillActionConfig at end.\n * Each AutofillActionConfig response is fully-specified (all fields set).\n * start: Returns the state of each AutofillActionConfig at start, followed by updates until now.\n * Each AutofillActionConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AutofillActionConfig at start, followed by updates\n until end.\n * Each AutofillActionConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "type": "string", + "format": "date-time", + "description": "Time carries the (UTC) timestamp of the last-modification of the\nAssignedTagsConfig instance in this response." } } }, - "arista.studio.v1.AutofillActionConfigStreamResponse": { + "arista.studio.v1.AssignedTagsConfigSetResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", + "description": "Value carries all the values given in the AssignedTagsConfigSetRequest as well\nas any server-generated values." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this AutofillActionConfig's last modification." - }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the AutofillActionConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==CreatedAt will include this instance.", + "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ncreation. The only guarantees made about this timestamp are:" } } }, - "arista.studio.v1.AutofillActionKey": { + "arista.studio.v1.AssignedTagsConfigSetSomeResponse": { "type": "object", "properties": { - "studioId": { - "type": "string", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`." - }, - "workspaceId": { - "type": "string", - "description": "workspace_id uniquely identifies the workspace in which the studio resides." + "key": { + "$ref": "#/definitions/arista.studio.v1.StudioKey" }, - "inputFieldId": { - "type": "string", - "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`." + "error": { + "type": "string" } - }, - "description": "AutofillActionKey identifies an autofill action.", - "required": [ - "studioId", - "workspaceId", - "inputFieldId" - ] + } }, - "arista.studio.v1.AutofillActionResponse": { + "arista.studio.v1.AssignedTagsConfigSomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.AutofillAction", + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, "time": { "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nAutofillAction instance in this response." + "format": "date-time" } } }, - "arista.studio.v1.AutofillActionStreamRequest": { + "arista.studio.v1.AssignedTagsConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.AutofillAction" + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AutofillAction at end.\n * Each AutofillAction response is fully-specified (all fields set).\n * start: Returns the state of each AutofillAction at start, followed by updates until now.\n * Each AutofillAction response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AutofillAction at start, followed by updates\n until end.\n * Each AutofillAction response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AssignedTagsConfig at end.\n * Each AssignedTagsConfig response is fully-specified (all fields set).\n * start: Returns the state of each AssignedTagsConfig at start, followed by updates until now.\n * Each AssignedTagsConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AssignedTagsConfig at start, followed by updates\n until end.\n * Each AssignedTagsConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.AutofillActionStreamResponse": { + "arista.studio.v1.AssignedTagsConfigStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.AutofillAction", + "$ref": "#/definitions/arista.studio.v1.AssignedTagsConfig", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this AutofillAction's last modification." + "description": "Time holds the timestamp of this AssignedTagsConfig's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the AutofillAction value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the AssignedTagsConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.AutofillArgumentProvider": { + "arista.studio.v1.AssignedTagsResponse": { "type": "object", "properties": { - "type": { - "$ref": "#/definitions/arista.studio.v1.AutofillProviderType", - "description": "type is the type of argument provider, describing how it is to be\nhandled when the associated action is called." - }, "value": { - "type": "string", - "description": "value is the value of the argument, if provided.\nWhen the provider type is PROVIDER_TYPE_USER_SPECIFIED, the field may be nil. If non-nil,\nthe field contains a default value for the user input.\nWhen the provider type is PROVIDER_TYPE_PREDEFINED, the field contains the predefined\nvalue.\nWhen the provider type is PROVIDER_TYPE_LINKED, the field contains the linked input\nfield's ID." - } - }, - "description": "AutofillArgumentProvider describes a particular dynamic argument's type\nand value (if applicable)." - }, - "arista.studio.v1.AutofillArgumentProviders": { - "type": "object", - "properties": { - "values": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProvider" - } - } - }, - "description": "AutofillArgumentProviders is a map of dynamic argument name to argument provider information." - }, - "arista.studio.v1.AutofillProviderType": { - "type": "string", - "enum": [ - "AUTOFILL_PROVIDER_TYPE_UNSPECIFIED", - "AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED", - "AUTOFILL_PROVIDER_TYPE_PREDEFINED", - "AUTOFILL_PROVIDER_TYPE_LINKED" - ], - "default": "AUTOFILL_PROVIDER_TYPE_UNSPECIFIED", - "description": "AutofillProviderType describes the set of possible provided argument types.\n\n - AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED: AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED is when an argument is to be\nprovided at runtime by the user.\n - AUTOFILL_PROVIDER_TYPE_PREDEFINED: AUTOFILL_PROVIDER_TYPE_PREDEFINED is when an argument has a predefined value.\n - AUTOFILL_PROVIDER_TYPE_LINKED: AUTOFILL_PROVIDER_TYPE_LINKED is when an argument is linked to another studio input field." - }, - "arista.studio.v1.BooleanInputFieldProps": { - "type": "object", - "properties": { - "defaultValue": { - "type": "boolean", - "description": "default_value is the default value of the boolean." - } - }, - "description": "BooleanInputFieldProps defines the set of properties for a single\nboolean field in a studio input schema." - }, - "arista.studio.v1.CollectionInputFieldProps": { - "type": "object", - "properties": { - "baseFieldId": { - "type": "string", - "description": "base_field_id (required) identifies the field in the schema\nthat should be used as the type for each element in the\ncollection." + "$ref": "#/definitions/arista.studio.v1.AssignedTags", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "key": { + "time": { "type": "string", - "description": "key can be used when `base_field_id` references a group field,\nand it identifies the field in that group that should be used\nas the key for each element in the collection. This is used\nfor display purposes only." + "format": "date-time", + "description": "Time carries the (UTC) timestamp of the last-modification of the\nAssignedTags instance in this response." } - }, - "description": "CollectionInputFieldProps defines the set of properties for a single\ncollection field in a studio input schema." + } }, - "arista.studio.v1.DeviceInfo": { + "arista.studio.v1.AssignedTagsSomeResponse": { "type": "object", "properties": { - "deviceId": { - "type": "string", - "description": "device_id identifies the device uniquely." + "value": { + "$ref": "#/definitions/arista.studio.v1.AssignedTags", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "modelName": { + "error": { "type": "string", - "description": "model_name indicates the model of the device." - }, - "macAddress": { - "$ref": "#/definitions/fmp.MACAddress", - "description": "mac_address indicates the MAC address of the device." + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." }, - "hostname": { + "time": { "type": "string", - "description": "hostname indicates the hostname of the device." - }, - "interfaceInfos": { - "$ref": "#/definitions/arista.studio.v1.InterfaceInfos", - "description": "interfaces_infos contains a list of the device's interfaces." + "format": "date-time" } - }, - "description": "DeviceInfo contains device properties." + } }, - "arista.studio.v1.FloatInputFieldProps": { + "arista.studio.v1.AssignedTagsStreamRequest": { "type": "object", "properties": { - "defaultValue": { - "type": "number", - "format": "float", - "description": "default_value is the default value of the float." - }, - "staticOptions": { - "$ref": "#/definitions/fmp.RepeatedFloat", - "description": "static_options defines the set of possible values for the float." - }, - "dynamicOptions": { - "$ref": "#/definitions/fmp.RepeatedString", - "description": "dynamic_options defines the set of possible values for the float\nbased on the possible values for other floats in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"floatField1ID\" },\n { \"fieldId\": \"floatField2ID\" }\n]\n```\nHere, the possible values for the floats identified by\n`\"floatField1ID\"` and `\"floatField2ID\"` are used as the\npossible values for this float." + "partialEqFilter": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.studio.v1.AssignedTags" + }, + "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, - "extraValuesAllowed": { - "type": "boolean", - "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." - } - }, - "description": "FloatInputFieldProps defines the set of properties for a single\nfloat field in a studio input schema." - }, - "arista.studio.v1.GroupInputFieldProps": { - "type": "object", - "properties": { - "members": { - "$ref": "#/definitions/fmp.RepeatedString", - "description": "members (required) identifies the member fields of the group\nas defined in the schema." + "time": { + "$ref": "#/definitions/arista.time.TimeBounds", + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AssignedTags at end.\n * Each AssignedTags response is fully-specified (all fields set).\n * start: Returns the state of each AssignedTags at start, followed by updates until now.\n * Each AssignedTags response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AssignedTags at start, followed by updates\n until end.\n * Each AssignedTags response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } - }, - "description": "GroupInputFieldProps defines the set of properties for a single\ngroup field in a studio input schema." + } }, - "arista.studio.v1.InputField": { + "arista.studio.v1.AssignedTagsStreamResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "id (required) uniquely identifies the field within the schema." - }, - "type": { - "$ref": "#/definitions/arista.studio.v1.InputFieldType", - "description": "type (required) specifies the type for the field." - }, - "name": { - "type": "string", - "description": "name (required) is the variable name by which the field can be\nreferenced in the template for the studio." - }, - "label": { - "type": "string", - "description": "label (required) is the label of the field as displayed on the UI." - }, - "description": { - "type": "string", - "description": "description is a short description of the field." - }, - "required": { - "type": "boolean", - "description": "required indicates whether the field always requires a value. This\nis `false` by default." - }, - "booleanProps": { - "$ref": "#/definitions/arista.studio.v1.BooleanInputFieldProps", - "description": "boolean_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_BOOLEAN`." - }, - "integerProps": { - "$ref": "#/definitions/arista.studio.v1.IntegerInputFieldProps", - "description": "integer_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_INTEGER`." - }, - "floatProps": { - "$ref": "#/definitions/arista.studio.v1.FloatInputFieldProps", - "description": "float_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_FLOAT`." - }, - "stringProps": { - "$ref": "#/definitions/arista.studio.v1.StringInputFieldProps", - "description": "string_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_STRING`." - }, - "groupProps": { - "$ref": "#/definitions/arista.studio.v1.GroupInputFieldProps", - "description": "group_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_GROUP`." - }, - "collectionProps": { - "$ref": "#/definitions/arista.studio.v1.CollectionInputFieldProps", - "description": "collection_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_COLLECTION`." - }, - "resolverProps": { - "$ref": "#/definitions/arista.studio.v1.ResolverInputFieldProps", - "description": "resolver_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_RESOLVER`." + "value": { + "$ref": "#/definitions/arista.studio.v1.AssignedTags", + "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, - "autoFillActionId": { + "time": { "type": "string", - "description": "auto_fill_action_id identifies the autofill action that can be\nused to automatically populate the value of this field on the\nUI." - }, - "tagMatcherProps": { - "$ref": "#/definitions/arista.studio.v1.TagMatcherInputFieldProps", - "description": "tag_matcher_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_TAG_MATCHER`." - } - }, - "description": "InputField defines the set of properties for a single field in a\nstudio input schema." - }, - "arista.studio.v1.InputFieldType": { - "type": "string", - "enum": [ - "INPUT_FIELD_TYPE_UNSPECIFIED", - "INPUT_FIELD_TYPE_BOOLEAN", - "INPUT_FIELD_TYPE_INTEGER", - "INPUT_FIELD_TYPE_FLOAT", - "INPUT_FIELD_TYPE_STRING", - "INPUT_FIELD_TYPE_GROUP", - "INPUT_FIELD_TYPE_COLLECTION", - "INPUT_FIELD_TYPE_RESOLVER", - "INPUT_FIELD_TYPE_TAG_MATCHER" - ], - "default": "INPUT_FIELD_TYPE_UNSPECIFIED", - "description": "InputFieldType defines the set of possible data types for\nvalues that can be input into a studio.\n\n - INPUT_FIELD_TYPE_BOOLEAN: INPUT_FIELD_TYPE_BOOLEAN is the data type for a boolean value.\n - INPUT_FIELD_TYPE_INTEGER: INPUT_FIELD_TYPE_INTEGER is the data type for an integer value.\n - INPUT_FIELD_TYPE_FLOAT: INPUT_FIELD_TYPE_FLOAT is the data type for a float value.\n - INPUT_FIELD_TYPE_STRING: INPUT_FIELD_TYPE_STRING is the data type for a string value.\n - INPUT_FIELD_TYPE_GROUP: INPUT_FIELD_TYPE_GROUP is the data type for an unordered group of\ninputs of any type. This type is used in cases where inputs are\nrequired to be consolidated into an object for use in the template\nor to attach multiple inputs under a resolver or collection.\n - INPUT_FIELD_TYPE_COLLECTION: INPUT_FIELD_TYPE_COLLECTION is the data type for an ordered collection\nof inputs of the same type. This type is used in cases where multiple\ninput values of the same type should be given for a field, and where\nordering matters.\n - INPUT_FIELD_TYPE_RESOLVER: INPUT_FIELD_TYPE_RESOLVER is the data type for an input that allows\nits member input to be assigned based on a tag query match. This\ntype is used in cases where the input value is conditional on a\ndevice or a group of devices. The query is resolved at run-time\nand each affected device is given the value that corresponds to\nthe tag it is assigned to.\n - INPUT_FIELD_TYPE_TAG_MATCHER: INPUT_FIELD_TYPE_TAG_MATCHER is the data type for an input that allows\nan unordered set of devices or interfaces to be selected. The set of\ndevices or interfaces that are to be selected are specified by a tag\nquery, resolved at run-time." - }, - "arista.studio.v1.InputFields": { - "type": "object", - "properties": { - "values": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/arista.studio.v1.InputField" - }, - "description": "values (required) is a map from input field ID to `InputField`." - } - }, - "description": "InputFields is a collection of `InputField`." - }, - "arista.studio.v1.InputSchema": { - "type": "object", - "properties": { - "fields": { - "$ref": "#/definitions/arista.studio.v1.InputFields", - "description": "fields (required) are the set of fields that make up the schema." + "format": "date-time", + "description": "Time holds the timestamp of this AssignedTags's last modification." }, - "layout": { - "$ref": "#/definitions/arista.studio.v1.Layout", - "description": "layout (UI only) defines the display properties for `fields`." + "type": { + "$ref": "#/definitions/arista.subscriptions.Operation", + "description": "Operation indicates how the AssignedTags value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } - }, - "description": "InputSchema defines an input schema for a studio, which determines\nthe values that can be input into the studio." + } }, - "arista.studio.v1.Inputs": { + "arista.studio.v1.AutofillAction": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey", - "description": "key uniquely identifies the set of inputs for the studio (at some path)." + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", + "description": "key uniquely identifies the action-to-studio association." }, "createdAt": { "type": "string", @@ -4989,45 +5401,61 @@ "type": "string", "description": "last_modified_by is the name of the user that last modified the inputs." }, - "inputs": { + "actionId": { "type": "string", - "description": "inputs is the value of the input field at the path as a JSON string.\n\nNOTE: For `GetAll` and `Subscribe`, if the JSON is too large, it will\nbe split across multiple messages such that each is less than the Resource\nAPI message size limit (1MB)." + "description": "action_id uniquely identifies the autofill action associated with the input field." + }, + "description": { + "type": "string", + "description": "description is an optional field to describe the autofill action that will be\ndisplayed in a tooltip in the UI when the user hovers over the button to run\nthe autofill action." + }, + "argumentProviders": { + "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProviders", + "description": "argument_providers is an optional field that specifies how dynamic arguments are\nto be provided to the autofill action when executed. If an argument is omitted\nfrom the provider map, it will not be defined in the arguments passed to the scripts.\nIf the entire field is omitted, no additional argument values will be passed to the\nscript beyond any statically defined arguments and the system-provided arguments\nwhich are always set in an autofill action execution context (namely InputPath,\nStudioID, and WorkspaceID)." } }, - "description": "Inputs is used to retrieve the existing inputs to a studio." + "description": "AutofillAction can be used to retrieve additional metadata about an autofill action." }, - "arista.studio.v1.InputsConfig": { + "arista.studio.v1.AutofillActionConfig": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey", - "description": "key uniquely identifies the set of inputs for the studio (at some path)." + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", + "description": "key uniquely identifies the action-to-studio association." }, "remove": { "type": "boolean", - "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the inputs identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this\nfield is set to true." + "description": "remove indicates whether to remove (`true`) or add (`false`, unset)\nthe autofill action configuration identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this field is set to true." }, - "inputs": { + "actionId": { "type": "string", - "description": "inputs is the value of the input field at the path as a\nJSON string. It can be the value for a simple or complex\ninput field.\n\nSimple types (booleans, integers, floats, strings) map to\ntheir JSON equivalents.\n\nComplex types map to either arrays or objects:\n\n* The group field type maps to a JSON object, where keys\n are group members.\n\n* The collection field type maps to a JSON array.\n\n* The resolver field type maps to a JSON array, where each\n element is an object of the form:\n ```\n {\n\t\"tags\": { \"query\": \u003cquery\u003e },\n\t\"inputs\": \u003cinput\u003e\n }\n ```\n Above, `\u003cinput\u003e` is the value of the base field of the resolver.\n E.g., if the base field is a group with one string member `\"A\"`,\n the resolver inputs would be specified as:\n ```\n \"inputs\": { \"A\": \u003cvalue\u003e }\n ```" + "description": "action_id uniquely identifies the autofill action associated with the input field." + }, + "description": { + "type": "string", + "description": "description is an optional field to describe the autofill action that will be\ndisplayed in a tooltip in the UI when the user hovers over the button to run\nthe autofill action." + }, + "argumentProviders": { + "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProviders", + "description": "argument_providers is an optional field that specifies how dynamic arguments are\nto be provided to the autofill action when executed. If an argument is omitted\nfrom the provider map, it will not be defined in the arguments passed to the scripts.\nIf the entire field is omitted, no additional argument values will be passed to the\nscript beyond any statically defined arguments and the system-provided arguments\nwhich are always set in an autofill action execution context (namely InputPath,\nStudioId, and WorkspaceId)." } }, - "description": "InputsConfig is used to input values into a studio.\n\nNOTE: Setting an input at a higher path overwrite any prior\n`Set`s at lower paths. E.g.,\n\n1. Set `[\"A\", \"X\"]` to `\"foo\"`\n2. Set `[\"A\", \"Y\"]` to `\"bar\"`\n3. Set `[\"A\"]` to `{\"X\": \"bar\"}`\n\nThe resulting inputs would be:\n```\n{ \"A\": { \"X\": \"bar\" } }\n```" + "description": "AutofillActionConfig contains configuration information for an autofill action." }, - "arista.studio.v1.InputsConfigDeleteAllResponse": { + "arista.studio.v1.AutofillActionConfigDeleteAllResponse": { "type": "object", "properties": { "type": { "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "description": "This describes the class of delete error.\nA DeleteAllResponse is only sent when there is an error." }, "error": { "type": "string", "description": "This indicates the error message from the delete failure." }, "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey", - "description": "This is the key of the InputsConfig instance that failed to be deleted." + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", + "description": "This is the key of the AutofillActionConfig instance that failed to be deleted." }, "time": { "type": "string", @@ -5036,12 +5464,12 @@ } } }, - "arista.studio.v1.InputsConfigDeleteResponse": { + "arista.studio.v1.AutofillActionConfigDeleteResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey", - "description": "Key echoes back the key of the deleted InputsConfig instance." + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey", + "description": "Key echoes back the key of the deleted AutofillActionConfig instance." }, "time": { "type": "string", @@ -5051,26 +5479,38 @@ } } }, - "arista.studio.v1.InputsConfigResponse": { + "arista.studio.v1.AutofillActionConfigDeleteSomeResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" + }, + "error": { + "type": "string" + } + }, + "description": "AutofillActionConfigDeleteSomeResponse is only sent when there is an error." + }, + "arista.studio.v1.AutofillActionConfigResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.InputsConfig", + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nInputsConfig instance in this response." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nAutofillActionConfig instance in this response." } } }, - "arista.studio.v1.InputsConfigSetResponse": { + "arista.studio.v1.AutofillActionConfigSetResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.InputsConfig", - "description": "Value carries all the values given in the InputsConfigSetRequest as well\nas any server-generated values." + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", + "description": "Value carries all the values given in the AutofillActionConfigSetRequest as well\nas any server-generated values." }, "time": { "type": "string", @@ -5080,435 +5520,475 @@ } } }, - "arista.studio.v1.InputsConfigSetSomeResponse": { + "arista.studio.v1.AutofillActionConfigSetSomeResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey" + "$ref": "#/definitions/arista.studio.v1.AutofillActionKey" }, "error": { "type": "string" } } }, - "arista.studio.v1.InputsConfigStreamRequest": { - "type": "object", - "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.InputsConfig" - }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." - }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each InputsConfig at end.\n * Each InputsConfig response is fully-specified (all fields set).\n * start: Returns the state of each InputsConfig at start, followed by updates until now.\n * Each InputsConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each InputsConfig at start, followed by updates\n until end.\n * Each InputsConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." - } - } - }, - "arista.studio.v1.InputsConfigStreamResponse": { + "arista.studio.v1.AutofillActionConfigSomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.InputsConfig", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time holds the timestamp of this InputsConfig's last modification." - }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the InputsConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." - } - } - }, - "arista.studio.v1.InputsKey": { - "type": "object", - "properties": { - "studioId": { - "type": "string", - "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`." + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "workspaceId": { + "error": { "type": "string", - "description": "workspace_id uniquely identifies the workspace in which the studio resides." - }, - "path": { - "$ref": "#/definitions/fmp.RepeatedString", - "description": "path is the sequence of elements that uniquely identify an input field.\nAn empty path (`[]`) stands for the root of the inputs, or the entire\nset of inputs for the studio.\n\nThe members of a group are referenced by field name. E.g., for a group\nA with a member B, the path to B would be `[\"A\", \"B\"]`.\n\nThe members of a collection or resolver are referenced by an integer\nstring. E.g., for a collection A with three members, the path to the\nsecond member would be `[\"A\", \"1\"]`." - } - }, - "description": "InputsKey identifies a set of inputs for a particular studio.", - "required": [ - "studioId", - "workspaceId", - "path" - ] - }, - "arista.studio.v1.InputsResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.Inputs", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." }, "time": { "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nInputs instance in this response." + "format": "date-time" } } }, - "arista.studio.v1.InputsStreamRequest": { + "arista.studio.v1.AutofillActionConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.Inputs" + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Inputs at end.\n * Each Inputs response is fully-specified (all fields set).\n * start: Returns the state of each Inputs at start, followed by updates until now.\n * Each Inputs response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Inputs at start, followed by updates\n until end.\n * Each Inputs response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AutofillActionConfig at end.\n * Each AutofillActionConfig response is fully-specified (all fields set).\n * start: Returns the state of each AutofillActionConfig at start, followed by updates until now.\n * Each AutofillActionConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AutofillActionConfig at start, followed by updates\n until end.\n * Each AutofillActionConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.InputsStreamResponse": { + "arista.studio.v1.AutofillActionConfigStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.Inputs", + "$ref": "#/definitions/arista.studio.v1.AutofillActionConfig", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this Inputs's last modification." + "description": "Time holds the timestamp of this AutofillActionConfig's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the Inputs value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the AutofillActionConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.IntegerInputFieldProps": { - "type": "object", - "properties": { - "defaultValue": { - "type": "string", - "format": "int64", - "description": "default_value is the default value of the integer." - }, - "staticOptions": { - "$ref": "#/definitions/fmp.RepeatedInt64", - "description": "static_options defines the set of possible values for the integer." - }, - "range": { - "type": "string", - "description": "range imposes a range (inclusive) on the value of the integer.\nThis should be of the form `\"\u003cmin\u003e..\u003cmax\u003e\"`. E.g., `\"-10..10\"`\nmeans the integer can be anything in between and including `-10`\nand `10`." - }, - "dynamicOptions": { - "$ref": "#/definitions/fmp.RepeatedString", - "description": "dynamic_options defines the set of possible values for the integer\nbased on the possible values for other integers in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"vlanFieldID\" },\n { \"fieldId\": \"vniFieldID\" }\n]\n```\nHere, the possible values for the integers identified by\n`\"vlanFieldID\"` and `\"vniFieldID\"` are used as the possible\nvalues for this integer." - }, - "extraValuesAllowed": { - "type": "boolean", - "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." - } - }, - "description": "IntegerInputFieldProps defines the set of properties for a single\ninteger field in a studio input schema." - }, - "arista.studio.v1.InterfaceInfo": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "name is the name of an interface." - }, - "neighborDeviceId": { - "type": "string", - "description": "neighbor_device_id indicates the device ID of the neighbor to which\nthis interface is connected." - }, - "neighborInterfaceName": { - "type": "string", - "description": "neighbor_device_name indicates the interface on the neighbor to which\nthis interface is connected." - }, - "topologyOperation": { - "$ref": "#/definitions/arista.studio.v1.TopologyOperation", - "description": "topology_operation indicates the type of operation to the interface." - } - }, - "description": "InterfaceInfo contains interface properties." - }, - "arista.studio.v1.InterfaceInfos": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.InterfaceInfo" - }, - "description": "values is a list of InterfaceInfo." - } - }, - "description": "InterfaceInfos is a list of InterfaceInfo." - }, - "arista.studio.v1.Layout": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "value is a JSON object containing the layout config." - } - }, - "description": "Layout specifies the display properties for input fields. This\nis intended for UI usage only." - }, - "arista.studio.v1.ResolverFieldDisplayMode": { - "type": "string", - "enum": [ - "RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED", - "RESOLVER_FIELD_DISPLAY_MODE_ALL", - "RESOLVER_FIELD_DISPLAY_MODE_SPARSE" - ], - "default": "RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED", - "description": "ResolverFieldDisplayMode defines the set of ways in which the matching\ndevices or interfaces should be displayed on the UI.\n\n - RESOLVER_FIELD_DISPLAY_MODE_ALL: RESOLVER_FIELD_DISPLAY_MODE_ALL instructs the UI to show all\nmatching devices or interfaces, including ones that have no\ninputs.\n - RESOLVER_FIELD_DISPLAY_MODE_SPARSE: RESOLVER_FIELD_DISPLAY_MODE_SPARSE instructs the UI to show\nonly matching devices or interfaces that have inputs." - }, - "arista.studio.v1.ResolverFieldInputMode": { - "type": "string", - "enum": [ - "RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED", - "RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG", - "RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG", - "RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG", - "RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG" - ], - "default": "RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED", - "description": "ResolverFieldInputMode defines the set of ways a resolver tag query\ncan be specified in a studio.\n\n - RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG: RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG allows devices to be\nselected based on a single tag label.\n - RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG: RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG allows interfaces\nto be selected based on a single tag label.\n - RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG: RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG allows devices to be\nselected based on any tag label.\n - RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG: RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG allows interfaces\nto be selected based on any tag label." - }, - "arista.studio.v1.ResolverInputFieldProps": { + "arista.studio.v1.AutofillActionKey": { "type": "object", "properties": { - "baseFieldId": { + "studioId": { "type": "string", - "description": "base_field_id (required) identifies the field in the schema\nto which the resolver query maps." - }, - "displayMode": { - "$ref": "#/definitions/arista.studio.v1.ResolverFieldDisplayMode", - "description": "display_mode (required) is the display mode of the resolver." - }, - "inputMode": { - "$ref": "#/definitions/arista.studio.v1.ResolverFieldInputMode", - "description": "input_mode (required) is the input mode of the resolver." + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`." }, - "inputTagLabel": { + "workspaceId": { "type": "string", - "description": "input_tag_label can be used when `input_mode` is one of\n`RESOLVER_FIELD_INPUT_MODE_SINGLE_*_TAG` and it specifies\nthe tag label must be used in the resolver query." + "description": "workspace_id uniquely identifies the workspace in which the studio resides." }, - "tagFilterQuery": { + "inputFieldId": { "type": "string", - "description": "tag_filter_query limits the set of elements that the\nresolver query can return. E.g., `\"device:D1,D2\"` will\nconstrain results to the devices D1 and D2." + "description": "input_field_id uniquely identifies the input field within the schema associated\nwith the action indicated by `action_id`." } }, - "description": "ResolverInputFieldProps defines the set of properties for a single\nresolver field in a studio input schema." + "description": "AutofillActionKey identifies an autofill action.", + "required": [ + "studioId", + "workspaceId", + "inputFieldId" + ] }, - "arista.studio.v1.SecretInput": { + "arista.studio.v1.AutofillActionResponse": { "type": "object", "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.InputsKey", - "description": "key identifies the secret in the studio inputs." + "value": { + "$ref": "#/definitions/arista.studio.v1.AutofillAction", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "plainText": { + "time": { "type": "string", - "description": "plain_text is the unmasked value of the secret." + "format": "date-time", + "description": "Time carries the (UTC) timestamp of the last-modification of the\nAutofillAction instance in this response." } - }, - "description": "SecretInput can be used to retrieve the unmasked value of\na secret in a studio." + } }, - "arista.studio.v1.SecretInputResponse": { + "arista.studio.v1.AutofillActionSomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.SecretInput", + "$ref": "#/definitions/arista.studio.v1.AutofillAction", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, "time": { "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nSecretInput instance in this response." + "format": "date-time" } } }, - "arista.studio.v1.SecretInputStreamRequest": { + "arista.studio.v1.AutofillActionStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.SecretInput" + "$ref": "#/definitions/arista.studio.v1.AutofillAction" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each SecretInput at end.\n * Each SecretInput response is fully-specified (all fields set).\n * start: Returns the state of each SecretInput at start, followed by updates until now.\n * Each SecretInput response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each SecretInput at start, followed by updates\n until end.\n * Each SecretInput response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each AutofillAction at end.\n * Each AutofillAction response is fully-specified (all fields set).\n * start: Returns the state of each AutofillAction at start, followed by updates until now.\n * Each AutofillAction response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each AutofillAction at start, followed by updates\n until end.\n * Each AutofillAction response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.SecretInputStreamResponse": { + "arista.studio.v1.AutofillActionStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.SecretInput", + "$ref": "#/definitions/arista.studio.v1.AutofillAction", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this SecretInput's last modification." + "description": "Time holds the timestamp of this AutofillAction's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the SecretInput value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the AutofillAction value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.StringInputFieldProps": { + "arista.studio.v1.AutofillArgumentProvider": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/arista.studio.v1.AutofillProviderType", + "description": "type is the type of argument provider, describing how it is to be\nhandled when the associated action is called." + }, + "value": { + "type": "string", + "description": "value is the value of the argument, if provided.\nWhen the provider type is PROVIDER_TYPE_USER_SPECIFIED, the field may be nil. If non-nil,\nthe field contains a default value for the user input.\nWhen the provider type is PROVIDER_TYPE_PREDEFINED, the field contains the predefined\nvalue.\nWhen the provider type is PROVIDER_TYPE_LINKED, the field contains the linked input\nfield's ID." + } + }, + "description": "AutofillArgumentProvider describes a particular dynamic argument's type\nand value (if applicable)." + }, + "arista.studio.v1.AutofillArgumentProviders": { + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/arista.studio.v1.AutofillArgumentProvider" + }, + "description": "values is a map of dynamic argument name to argument provider information." + } + }, + "description": "AutofillArgumentProviders is a map of dynamic argument name to argument provider information." + }, + "arista.studio.v1.AutofillProviderType": { + "type": "string", + "enum": [ + "AUTOFILL_PROVIDER_TYPE_UNSPECIFIED", + "AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED", + "AUTOFILL_PROVIDER_TYPE_PREDEFINED", + "AUTOFILL_PROVIDER_TYPE_LINKED" + ], + "default": "AUTOFILL_PROVIDER_TYPE_UNSPECIFIED", + "description": "AutofillProviderType describes the set of possible provided argument types.\n\n - AUTOFILL_PROVIDER_TYPE_UNSPECIFIED: AUTOFILL_PROVIDER_TYPE_UNSPECIFIED indicates that no provider type is specified.\n - AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED: AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED is when an argument is to be\nprovided at runtime by the user.\n - AUTOFILL_PROVIDER_TYPE_PREDEFINED: AUTOFILL_PROVIDER_TYPE_PREDEFINED is when an argument has a predefined value.\n - AUTOFILL_PROVIDER_TYPE_LINKED: AUTOFILL_PROVIDER_TYPE_LINKED is when an argument is linked to another studio input field." + }, + "arista.studio.v1.BooleanInputFieldProps": { "type": "object", "properties": { "defaultValue": { + "type": "boolean", + "description": "default_value is the default value of the boolean." + } + }, + "description": "BooleanInputFieldProps defines the set of properties for a single\nboolean field in a studio input schema." + }, + "arista.studio.v1.CollectionInputFieldProps": { + "type": "object", + "properties": { + "baseFieldId": { "type": "string", - "description": "default_value is the default value of the string." + "description": "base_field_id (required) identifies the field in the schema\nthat should be used as the type for each element in the\ncollection." + }, + "key": { + "type": "string", + "description": "key can be used when `base_field_id` references a group field,\nand it identifies the field in that group that should be used\nas the key for each element in the collection. This is used\nfor display purposes only." + } + }, + "description": "CollectionInputFieldProps defines the set of properties for a single\ncollection field in a studio input schema." + }, + "arista.studio.v1.Entities": { + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/arista.studio.v1.Entity" + }, + "description": "values is a map from entity type name to entity\nThe possible keys to this map are ENTITY_TYPE_STUDIO,\nENTITY_TYPE_INPUTS, ENTITY_TYPE_ASSIGNED_TAGS,\nENTITY_TYPE_BUILD_HOOK and ENTITY_TYPE_AUTOFILL_ACTION." + } + }, + "description": "Entities is a list of Entity." + }, + "arista.studio.v1.Entity": { + "type": "object", + "properties": { + "entityType": { + "$ref": "#/definitions/arista.studio.v1.EntityType", + "description": "EntityType is the type of the entity." + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "last_modified_at is the time at which the entity was last modified." + }, + "lastModifiedBy": { + "type": "string", + "description": "last_modified_by is the name of the user that last modified the entity." + }, + "removed": { + "type": "boolean", + "description": "removed indicates if the entity is removed." + } + }, + "description": "Entity holds the basic information of an entity." + }, + "arista.studio.v1.EntityType": { + "type": "string", + "enum": [ + "ENTITY_TYPE_UNSPECIFIED", + "ENTITY_TYPE_STUDIO", + "ENTITY_TYPE_INPUTS", + "ENTITY_TYPE_ASSIGNED_TAGS", + "ENTITY_TYPE_BUILD_HOOK", + "ENTITY_TYPE_AUTOFILL_ACTION" + ], + "default": "ENTITY_TYPE_UNSPECIFIED", + "description": "EntityType enumerates the set of entity types.\n\n - ENTITY_TYPE_UNSPECIFIED: ENTITY_TYPE_UNSPECIFIED indicates an unspecified entity type.\n - ENTITY_TYPE_STUDIO: ENTITY_TYPE_STUDIO indicates the Studio entity type.\n - ENTITY_TYPE_INPUTS: ENTITY_TYPE_INPUTS indicates the Inputs entity type.\n - ENTITY_TYPE_ASSIGNED_TAGS: ENTITY_TYPE_ASSIGNED_TAGS indicates the AssignedTags entity type.\n - ENTITY_TYPE_BUILD_HOOK: ENTITY_TYPE_BUILD_HOOK indicates the BuildHook entity type.\n - ENTITY_TYPE_AUTOFILL_ACTION: ENTITY_TYPE_AUTOFILL_ACTION indicates the AutofillAction entity type." + }, + "arista.studio.v1.FloatInputFieldProps": { + "type": "object", + "properties": { + "defaultValue": { + "type": "number", + "format": "float", + "description": "default_value is the default value of the float." }, "staticOptions": { - "$ref": "#/definitions/fmp.RepeatedString", - "description": "static_options defines the set of possible values for the string." + "$ref": "#/definitions/fmp.RepeatedFloat", + "description": "static_options defines the set of possible values for the float." }, "dynamicOptions": { "$ref": "#/definitions/fmp.RepeatedString", - "description": "dynamic_options defines the set of possible values for the string\nbased on the possible values for other strings in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"deviceFieldID\" },\n { \"fieldId\": \"ipFieldID\" }\n]\n```\nHere, the possible values for the strings identified by\n`\"deviceFieldID\"` and `\"ipFieldID\"` are used as the possible\nvalues for this string." + "description": "dynamic_options defines the set of possible values for the float\nbased on the possible values for other floats in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"floatField1ID\" },\n { \"fieldId\": \"floatField2ID\" }\n]\n```\nHere, the possible values for the floats identified by\n`\"floatField1ID\"` and `\"floatField2ID\"` are used as the\npossible values for this float." }, - "length": { + "extraValuesAllowed": { + "type": "boolean", + "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." + } + }, + "description": "FloatInputFieldProps defines the set of properties for a single\nfloat field in a studio input schema." + }, + "arista.studio.v1.GroupInputFieldProps": { + "type": "object", + "properties": { + "members": { + "$ref": "#/definitions/fmp.RepeatedString", + "description": "members (required) identifies the member fields of the group\nas defined in the schema." + } + }, + "description": "GroupInputFieldProps defines the set of properties for a single\ngroup field in a studio input schema." + }, + "arista.studio.v1.InputField": { + "type": "object", + "properties": { + "id": { "type": "string", - "description": "length imposes a length range (inclusive) on the value of the\nstring. The should be of the form `\"\u003cmin\u003e..\u003cmax\u003e\"`. E.g.,\n`\"3..7\"` means the value of the string can be three to seven\ncharacters long." + "description": "id (required) uniquely identifies the field within the schema." }, - "pattern": { + "type": { + "$ref": "#/definitions/arista.studio.v1.InputFieldType", + "description": "type (required) specifies the type for the field." + }, + "name": { "type": "string", - "description": "pattern imposes a regular expression matching constraint on\nthe value of the string. This should be a Google RE2-compliant\nregular expression (https://github.com/google/re2/wiki/Syntax)." + "description": "name (required) is the variable name by which the field can be\nreferenced in the template for the studio." }, - "format": { + "label": { "type": "string", - "description": "* `\"ip\"`: an IPv4 or IPv6 address\n* `\"ipv4\"`: an IPv4 address\n* `\"ipv6\"`: an IPv6 address\n* `\"mac\"`: a MAC address\n* `\"cidr\"`: an IPv4 or IPv6 address in CIDR notation (e.g. 10.1.1.1/24, 2001:db8:a0b::1/32)\n* `\"cidrv4\"`: an IPv4 address in CIDR notation (e.g. 10.1.1.1/24)\n* `\"cidrv6\"`: an IPv6 address in CIDR notation (e.g. 2001:db8:a0b::1/32)\n* `\"url\"`: a URL (e.g., http://www.google.com)", - "title": "format imposes a well-known format on the value of the string.\nThe supported formats are:" + "description": "label (required) is the label of the field as displayed on the UI." }, - "isSecret": { + "description": { + "type": "string", + "description": "description is a short description of the field." + }, + "required": { "type": "boolean", - "description": "is_secret specifies whether the string is a secret and its\nvalue should be masked. E.g., if this is set to `true` and\nthe value of the string is `\"secret-value-1\"`, it will be\nmasked as `\"**********\"`." + "description": "required indicates whether the field always requires a value. This\nis `false` by default." + }, + "booleanProps": { + "$ref": "#/definitions/arista.studio.v1.BooleanInputFieldProps", + "description": "boolean_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_BOOLEAN`." + }, + "integerProps": { + "$ref": "#/definitions/arista.studio.v1.IntegerInputFieldProps", + "description": "integer_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_INTEGER`." + }, + "floatProps": { + "$ref": "#/definitions/arista.studio.v1.FloatInputFieldProps", + "description": "float_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_FLOAT`." + }, + "stringProps": { + "$ref": "#/definitions/arista.studio.v1.StringInputFieldProps", + "description": "string_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_STRING`." + }, + "groupProps": { + "$ref": "#/definitions/arista.studio.v1.GroupInputFieldProps", + "description": "group_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_GROUP`." + }, + "collectionProps": { + "$ref": "#/definitions/arista.studio.v1.CollectionInputFieldProps", + "description": "collection_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_COLLECTION`." + }, + "resolverProps": { + "$ref": "#/definitions/arista.studio.v1.ResolverInputFieldProps", + "description": "resolver_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_RESOLVER`." + }, + "autoFillActionId": { + "type": "string", + "description": "auto_fill_action_id identifies the autofill action that can be\nused to automatically populate the value of this field on the\nUI." + }, + "tagMatcherProps": { + "$ref": "#/definitions/arista.studio.v1.TagMatcherInputFieldProps", + "description": "tag_matcher_props defines properties for the field if it is of type\n`INPUT_FIELD_TYPE_TAG_MATCHER`." + } + }, + "description": "InputField defines the set of properties for a single field in a\nstudio input schema." + }, + "arista.studio.v1.InputFieldType": { + "type": "string", + "enum": [ + "INPUT_FIELD_TYPE_UNSPECIFIED", + "INPUT_FIELD_TYPE_BOOLEAN", + "INPUT_FIELD_TYPE_INTEGER", + "INPUT_FIELD_TYPE_FLOAT", + "INPUT_FIELD_TYPE_STRING", + "INPUT_FIELD_TYPE_GROUP", + "INPUT_FIELD_TYPE_COLLECTION", + "INPUT_FIELD_TYPE_RESOLVER", + "INPUT_FIELD_TYPE_TAG_MATCHER" + ], + "default": "INPUT_FIELD_TYPE_UNSPECIFIED", + "description": "InputFieldType defines the set of possible data types for\nvalues that can be input into a studio.\n\n - INPUT_FIELD_TYPE_UNSPECIFIED: INPUT_FIELD_TYPE_UNSPECIFIED indicates an unspecified input data type.\n - INPUT_FIELD_TYPE_BOOLEAN: INPUT_FIELD_TYPE_BOOLEAN is the data type for a boolean value.\n - INPUT_FIELD_TYPE_INTEGER: INPUT_FIELD_TYPE_INTEGER is the data type for an integer value.\n - INPUT_FIELD_TYPE_FLOAT: INPUT_FIELD_TYPE_FLOAT is the data type for a float value.\n - INPUT_FIELD_TYPE_STRING: INPUT_FIELD_TYPE_STRING is the data type for a string value.\n - INPUT_FIELD_TYPE_GROUP: INPUT_FIELD_TYPE_GROUP is the data type for an unordered group of\ninputs of any type. This type is used in cases where inputs are\nrequired to be consolidated into an object for use in the template\nor to attach multiple inputs under a resolver or collection.\n - INPUT_FIELD_TYPE_COLLECTION: INPUT_FIELD_TYPE_COLLECTION is the data type for an ordered collection\nof inputs of the same type. This type is used in cases where multiple\ninput values of the same type should be given for a field, and where\nordering matters.\n - INPUT_FIELD_TYPE_RESOLVER: INPUT_FIELD_TYPE_RESOLVER is the data type for an input that allows\nits member input to be assigned based on a tag query match. This\ntype is used in cases where the input value is conditional on a\ndevice or a group of devices. The query is resolved at run-time\nand each affected device is given the value that corresponds to\nthe tag it is assigned to.\n - INPUT_FIELD_TYPE_TAG_MATCHER: INPUT_FIELD_TYPE_TAG_MATCHER is the data type for an input that allows\nan unordered set of devices or interfaces to be selected. The set of\ndevices or interfaces that are to be selected are specified by a tag\nquery, resolved at run-time." + }, + "arista.studio.v1.InputFields": { + "type": "object", + "properties": { + "values": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/arista.studio.v1.InputField" + }, + "description": "values (required) is a map from input field ID to `InputField`." + } + }, + "description": "InputFields is a collection of `InputField`." + }, + "arista.studio.v1.InputSchema": { + "type": "object", + "properties": { + "fields": { + "$ref": "#/definitions/arista.studio.v1.InputFields", + "description": "fields (required) are the set of fields that make up the schema." }, - "extraValuesAllowed": { - "type": "boolean", - "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." + "layout": { + "$ref": "#/definitions/arista.studio.v1.Layout", + "description": "layout (UI only) defines the display properties for `fields`." } }, - "description": "StringInputFieldProps defines the set of properties for a single\nstring field in a studio input schema." + "description": "InputSchema defines an input schema for a studio, which determines\nthe values that can be input into the studio." }, - "arista.studio.v1.Studio": { + "arista.studio.v1.Inputs": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "key uniquely identifies the studio." + "$ref": "#/definitions/arista.studio.v1.InputsKey", + "description": "key uniquely identifies the set of inputs for the studio (at some path)." }, "createdAt": { "type": "string", "format": "date-time", - "description": "created_at is the time at which the studio was created." + "description": "created_at is the time at which the inputs were first set." }, "createdBy": { "type": "string", - "description": "created_by is the name of the user that created the studio." + "description": "created_by is the name of the user that first set the inputs." }, "lastModifiedAt": { "type": "string", "format": "date-time", - "description": "last_modified_at is the time at which the studio was last modified." + "description": "last_modified_at is the time at which the inputs were last modified." }, "lastModifiedBy": { "type": "string", - "description": "last_modified_by is the name of the user that last modified the studio." - }, - "displayName": { - "type": "string", - "description": "display_name is the name of this studio as displayed on the UI." + "description": "last_modified_by is the name of the user that last modified the inputs." }, - "description": { + "inputs": { "type": "string", - "description": "description is a brief description of the studio." - }, - "template": { - "$ref": "#/definitions/arista.studio.v1.Template", - "description": "template is a script that builds the device configuration from the\ninputs that are described by `input_schema`." - }, - "inputSchema": { - "$ref": "#/definitions/arista.studio.v1.InputSchema", - "description": "input_schema is the schema for the studio inputs that are processed\nby `template`." + "description": "inputs is the value of the input field at the path as a JSON string.\n\nNOTE: For `GetAll` and `Subscribe`, if the JSON is too large, it will\nbe split across multiple messages such that each is less than the Resource\nAPI message size limit (1MB)." } }, - "description": "Studio holds the active state for a studio." + "description": "Inputs is used to retrieve the existing inputs to a studio." }, - "arista.studio.v1.StudioConfig": { + "arista.studio.v1.InputsConfig": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "key uniquely identifies the studio." + "$ref": "#/definitions/arista.studio.v1.InputsKey", + "description": "key uniquely identifies the set of inputs for the studio (at some path)." }, "remove": { "type": "boolean", - "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the studio identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this\nfield is set to true." - }, - "displayName": { - "type": "string", - "description": "display_name is the name of this studio as displayed on the UI." + "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the inputs identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this\nfield is set to true." }, - "description": { + "inputs": { "type": "string", - "description": "description is a brief description of the studio." - }, - "template": { - "$ref": "#/definitions/arista.studio.v1.Template", - "description": "template is a script that builds the device configuration from the\ninputs that are described by `input_schema`." - }, - "inputSchema": { - "$ref": "#/definitions/arista.studio.v1.InputSchema", - "description": "input_schema is the schema for the studio inputs that are processed\nby `template`." + "description": "inputs is the value of the input field at the path as a\nJSON string. It can be the value for a simple or complex\ninput field.\n\nSimple types (booleans, integers, floats, strings) map to\ntheir JSON equivalents.\n\nComplex types map to either arrays or objects:\n\n* The group field type maps to a JSON object, where keys\n are group members.\n\n* The collection field type maps to a JSON array.\n\n* The resolver field type maps to a JSON array, where each\n element is an object of the form:\n ```\n {\n\t\"tags\": { \"query\": \u003cquery\u003e },\n\t\"inputs\": \u003cinput\u003e\n }\n ```\n Above, `\u003cinput\u003e` is the value of the base field of the resolver.\n E.g., if the base field is a group with one string member `\"A\"`,\n the resolver inputs would be specified as:\n ```\n \"inputs\": { \"A\": \u003cvalue\u003e }\n ```" } }, - "description": "StudioConfig holds a configuration for a studio.\n\nChanges to fields other than `key` and `remove` are applied to\na copy of the mainline." + "description": "InputsConfig is used to input values into a studio.\n\nNOTE: Setting an input at a higher path overwrite any prior\n`Set`s at lower paths. E.g.,\n\n1. Set `[\"A\", \"X\"]` to `\"foo\"`\n2. Set `[\"A\", \"Y\"]` to `\"bar\"`\n3. Set `[\"A\"]` to `{\"X\": \"bar\"}`\n\nThe resulting inputs would be:\n```\n{ \"A\": { \"X\": \"bar\" } }\n```" }, - "arista.studio.v1.StudioConfigDeleteAllResponse": { + "arista.studio.v1.InputsConfigDeleteAllResponse": { "type": "object", "properties": { "type": { "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "description": "This describes the class of delete error.\nA DeleteAllResponse is only sent when there is an error." }, "error": { "type": "string", "description": "This indicates the error message from the delete failure." }, "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "This is the key of the StudioConfig instance that failed to be deleted." + "$ref": "#/definitions/arista.studio.v1.InputsKey", + "description": "This is the key of the InputsConfig instance that failed to be deleted." }, "time": { "type": "string", @@ -5517,12 +5997,12 @@ } } }, - "arista.studio.v1.StudioConfigDeleteResponse": { + "arista.studio.v1.InputsConfigDeleteResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "Key echoes back the key of the deleted StudioConfig instance." + "$ref": "#/definitions/arista.studio.v1.InputsKey", + "description": "Key echoes back the key of the deleted InputsConfig instance." }, "time": { "type": "string", @@ -5532,26 +6012,38 @@ } } }, - "arista.studio.v1.StudioConfigResponse": { + "arista.studio.v1.InputsConfigDeleteSomeResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.studio.v1.InputsKey" + }, + "error": { + "type": "string" + } + }, + "description": "InputsConfigDeleteSomeResponse is only sent when there is an error." + }, + "arista.studio.v1.InputsConfigResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.StudioConfig", + "$ref": "#/definitions/arista.studio.v1.InputsConfig", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudioConfig instance in this response." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nInputsConfig instance in this response." } } }, - "arista.studio.v1.StudioConfigSetResponse": { + "arista.studio.v1.InputsConfigSetResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.StudioConfig", - "description": "Value carries all the values given in the StudioConfigSetRequest as well\nas any server-generated values." + "$ref": "#/definitions/arista.studio.v1.InputsConfig", + "description": "Value carries all the values given in the InputsConfigSetRequest as well\nas any server-generated values." }, "time": { "type": "string", @@ -5561,53 +6053,70 @@ } } }, - "arista.studio.v1.StudioConfigSetSomeResponse": { + "arista.studio.v1.InputsConfigSetSomeResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey" + "$ref": "#/definitions/arista.studio.v1.InputsKey" }, "error": { "type": "string" } } }, - "arista.studio.v1.StudioConfigStreamRequest": { + "arista.studio.v1.InputsConfigSomeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.studio.v1.InputsConfig", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "arista.studio.v1.InputsConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.StudioConfig" + "$ref": "#/definitions/arista.studio.v1.InputsConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each StudioConfig at end.\n * Each StudioConfig response is fully-specified (all fields set).\n * start: Returns the state of each StudioConfig at start, followed by updates until now.\n * Each StudioConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each StudioConfig at start, followed by updates\n until end.\n * Each StudioConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each InputsConfig at end.\n * Each InputsConfig response is fully-specified (all fields set).\n * start: Returns the state of each InputsConfig at start, followed by updates until now.\n * Each InputsConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each InputsConfig at start, followed by updates\n until end.\n * Each InputsConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.StudioConfigStreamResponse": { + "arista.studio.v1.InputsConfigStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.StudioConfig", + "$ref": "#/definitions/arista.studio.v1.InputsConfig", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this StudioConfig's last modification." + "description": "Time holds the timestamp of this InputsConfig's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the StudioConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the InputsConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.StudioKey": { + "arista.studio.v1.InputsKey": { "type": "object", "properties": { "studioId": { @@ -5616,477 +6125,401 @@ }, "workspaceId": { "type": "string", - "description": "workspace_id identifies the workspace within which the studio resides." + "description": "workspace_id uniquely identifies the workspace in which the studio resides." + }, + "path": { + "$ref": "#/definitions/fmp.RepeatedString", + "description": "path is the sequence of elements that uniquely identify an input field.\nAn empty path (`[]`) stands for the root of the inputs, or the entire\nset of inputs for the studio.\n\nThe members of a group are referenced by field name. E.g., for a group\nA with a member B, the path to B would be `[\"A\", \"B\"]`.\n\nThe members of a collection or resolver are referenced by an integer\nstring. E.g., for a collection A with three members, the path to the\nsecond member would be `[\"A\", \"1\"]`." } }, - "description": "StudioKey uniquely identifies a studio.", + "description": "InputsKey identifies a set of inputs for a particular studio.", "required": [ "studioId", - "workspaceId" + "workspaceId", + "path" ] }, - "arista.studio.v1.StudioResponse": { + "arista.studio.v1.InputsResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.Studio", + "$ref": "#/definitions/arista.studio.v1.Inputs", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudio instance in this response." - } - } - }, - "arista.studio.v1.StudioStreamRequest": { - "type": "object", - "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.Studio" - }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." - }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Studio at end.\n * Each Studio response is fully-specified (all fields set).\n * start: Returns the state of each Studio at start, followed by updates until now.\n * Each Studio response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Studio at start, followed by updates\n until end.\n * Each Studio response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nInputs instance in this response." } } }, - "arista.studio.v1.StudioStreamResponse": { + "arista.studio.v1.InputsSomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.Studio", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time holds the timestamp of this Studio's last modification." - }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the Studio value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." - } - } - }, - "arista.studio.v1.StudioSummary": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.StudioKey", - "description": "key uniquely identifies the studio." - }, - "displayName": { - "type": "string", - "description": "display_name is the name of this studio as displayed on the UI." + "$ref": "#/definitions/arista.studio.v1.Inputs", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "description": { + "error": { "type": "string", - "description": "description is a brief description of the studio." - }, - "immutable": { - "type": "boolean", - "description": "immutable indicates if read-write studio management\naccess over a given studio is granted or not. \nIf studio is immutable, its display name, description,\nschema and template cannot be modified." - } - }, - "description": "StudioSummary holds basic information about a studio." - }, - "arista.studio.v1.StudioSummaryResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.StudioSummary", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." }, "time": { "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudioSummary instance in this response." + "format": "date-time" } } }, - "arista.studio.v1.StudioSummaryStreamRequest": { + "arista.studio.v1.InputsStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.StudioSummary" + "$ref": "#/definitions/arista.studio.v1.Inputs" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each StudioSummary at end.\n * Each StudioSummary response is fully-specified (all fields set).\n * start: Returns the state of each StudioSummary at start, followed by updates until now.\n * Each StudioSummary response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each StudioSummary at start, followed by updates\n until end.\n * Each StudioSummary response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Inputs at end.\n * Each Inputs response is fully-specified (all fields set).\n * start: Returns the state of each Inputs at start, followed by updates until now.\n * Each Inputs response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Inputs at start, followed by updates\n until end.\n * Each Inputs response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.StudioSummaryStreamResponse": { + "arista.studio.v1.InputsStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.StudioSummary", + "$ref": "#/definitions/arista.studio.v1.Inputs", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this StudioSummary's last modification." + "description": "Time holds the timestamp of this Inputs's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the StudioSummary value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the Inputs value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.TagMatcherFieldMode": { - "type": "string", - "enum": [ - "TAG_MATCHER_FIELD_MODE_UNSPECIFIED", - "TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG", - "TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG", - "TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG", - "TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG" - ], - "default": "TAG_MATCHER_FIELD_MODE_UNSPECIFIED", - "description": "TagMatcherFieldMode defines the set of ways a tag query for matching\ndevice or interfaces can be specified in a studio.\n\n - TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG: TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG allows devices to be\nselected based on a single tag label.\n - TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG: TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG allows interfaces\nto be selected based on a single tag label.\n - TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG: TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG allows devices to be\nselected based on any tag label.\n - TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG: TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG allows interfaces\nto be selected based on any tag label." - }, - "arista.studio.v1.TagMatcherInputFieldProps": { + "arista.studio.v1.IntegerInputFieldProps": { "type": "object", "properties": { - "tagMatcherMode": { - "$ref": "#/definitions/arista.studio.v1.TagMatcherFieldMode", - "description": "tag_matcher_mode (required) is the tag mode of the matcher." - }, - "tagMatcherLabel": { + "defaultValue": { "type": "string", - "description": "tag_matcher_label can be used when `tag_matcher_mode` is one of\n`TAG_MATCHER_FIELD_MODE_SINGLE_*_TAG` and it specifies\nthe tag label which must be used in the match query." + "format": "int64", + "description": "default_value is the default value of the integer." }, - "tagFilterQuery": { + "staticOptions": { + "$ref": "#/definitions/fmp.RepeatedInt64", + "description": "static_options defines the set of possible values for the integer." + }, + "range": { "type": "string", - "description": "tag_filter_query limits the set of devices that the\nmatch query can return. E.g., `\"device:D1,D2\"` will\nconstrain results to the devices D1 and D2." + "description": "range imposes a range (inclusive) on the value of the integer.\nThis should be of the form `\"\u003cmin\u003e..\u003cmax\u003e\"`. E.g., `\"-10..10\"`\nmeans the integer can be anything in between and including `-10`\nand `10`." }, - "resolverFilteringAllowed": { + "dynamicOptions": { + "$ref": "#/definitions/fmp.RepeatedString", + "description": "dynamic_options defines the set of possible values for the integer\nbased on the possible values for other integers in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"vlanFieldID\" },\n { \"fieldId\": \"vniFieldID\" }\n]\n```\nHere, the possible values for the integers identified by\n`\"vlanFieldID\"` and `\"vniFieldID\"` are used as the possible\nvalues for this integer." + }, + "extraValuesAllowed": { "type": "boolean", - "description": "resolver_filtering_allowed indicates whether results of the\nmatch query be filtered based on what any parent resolvers\nallow. This is `true` by default." + "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." } }, - "description": "TagMatcherInputFieldProps defines the set of properties for a single\nselector field in a studio input schema." + "description": "IntegerInputFieldProps defines the set of properties for a single\ninteger field in a studio input schema." }, - "arista.studio.v1.Template": { + "arista.studio.v1.Layout": { "type": "object", "properties": { - "type": { - "$ref": "#/definitions/arista.studio.v1.TemplateType", - "description": "type specifies the language that this template uses." - }, - "body": { + "value": { "type": "string", - "description": "body contains the actual source code of the template." + "description": "value is a JSON object containing the layout config." } }, - "description": "Template defines a template for a studio." + "description": "Layout specifies the display properties for input fields. This\nis intended for UI usage only." }, - "arista.studio.v1.TemplateType": { + "arista.studio.v1.MetaResponse": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time", + "description": "Time holds the timestamp of the last item included in the metadata calculation." + }, + "type": { + "$ref": "#/definitions/arista.subscriptions.Operation", + "description": "Operation indicates how the value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "Count is the number of items present under the conditions of the request." + } + } + }, + "arista.studio.v1.ResolverFieldDisplayMode": { "type": "string", "enum": [ - "TEMPLATE_TYPE_UNSPECIFIED", - "TEMPLATE_TYPE_MAKO", - "TEMPLATE_TYPE_JINJA", - "TEMPLATE_TYPE_GO" + "RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED", + "RESOLVER_FIELD_DISPLAY_MODE_ALL", + "RESOLVER_FIELD_DISPLAY_MODE_SPARSE" ], - "default": "TEMPLATE_TYPE_UNSPECIFIED", - "description": "TemplateType defines the set of supported languages that can\nbe used in studio templates.\n\n - TEMPLATE_TYPE_MAKO: TEMPLATE_TYPE_MAKO is the Mako templating language for Python.\nMore information: https://www.makotemplates.org\n - TEMPLATE_TYPE_JINJA: TEMPLATE_TYPE_JINJA is the Jinja templating language for Python.\nMore information: https://palletsprojects.com/p/jinja\n - TEMPLATE_TYPE_GO: TEMPLATE_TYPE_GO is the Go templating language.\nMore information: https://pkg.go.dev/text/template\n\nNOTE: Not all template functions are supported for this type." + "default": "RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED", + "description": "ResolverFieldDisplayMode defines the set of ways in which the matching\ndevices or interfaces should be displayed on the UI.\n\n - RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED: RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED indicates an unspecified resolver display mode.\n - RESOLVER_FIELD_DISPLAY_MODE_ALL: RESOLVER_FIELD_DISPLAY_MODE_ALL instructs the UI to show all\nmatching devices or interfaces, including ones that have no\ninputs.\n - RESOLVER_FIELD_DISPLAY_MODE_SPARSE: RESOLVER_FIELD_DISPLAY_MODE_SPARSE instructs the UI to show\nonly matching devices or interfaces that have inputs." }, - "arista.studio.v1.TopologyElement": { + "arista.studio.v1.ResolverFieldInputMode": { "type": "string", "enum": [ - "TOPOLOGY_ELEMENT_UNSPECIFIED", - "TOPOLOGY_ELEMENT_DEVICE", - "TOPOLOGY_ELEMENT_INTERFACE", - "TOPOLOGY_ELEMENT_CONNECTION" + "RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED", + "RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG", + "RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG", + "RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG", + "RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG" ], - "default": "TOPOLOGY_ELEMENT_UNSPECIFIED", - "description": "TopologyElememt defines the fundamental types of elements in topology.\n\n - TOPOLOGY_ELEMENT_DEVICE: TOPOLOGY_ELEMENT_DEVICE indicates a device.\n - TOPOLOGY_ELEMENT_INTERFACE: TOPOLOGY_ELEMENT_INTERFACE indicates an interface.\n - TOPOLOGY_ELEMENT_CONNECTION: TOPOLOGY_ELEMENT_CONNECTION indicates a connection." + "default": "RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED", + "description": "ResolverFieldInputMode defines the set of ways a resolver tag query\ncan be specified in a studio.\n\n - RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED: RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED indicates an unspecified resolver input mode.\n - RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG: RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG allows devices to be\nselected based on a single tag label.\n - RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG: RESOLVER_FIELD_INPUT_MODE_SINGLE_INTERFACE_TAG allows interfaces\nto be selected based on a single tag label.\n - RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG: RESOLVER_FIELD_INPUT_MODE_MULTI_DEVICE_TAG allows devices to be\nselected based on any tag label.\n - RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG: RESOLVER_FIELD_INPUT_MODE_MULTI_INTERFACE_TAG allows interfaces\nto be selected based on any tag label." }, - "arista.studio.v1.TopologyInput": { + "arista.studio.v1.ResolverInputFieldProps": { "type": "object", "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputKey", - "description": "key uniquely identifies the device in a given workspace." + "baseFieldId": { + "type": "string", + "description": "base_field_id (required) identifies the field in the schema\nto which the resolver query maps." }, - "deviceInfo": { - "$ref": "#/definitions/arista.studio.v1.DeviceInfo", - "description": "device_info contains device properties." - } - }, - "description": "TopologyInput is the state of a mainline and accepted topology inputs." - }, - "arista.studio.v1.TopologyInputConfig": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputKey", - "description": "key uniquely identifies the device ID for a given workspace." + "displayMode": { + "$ref": "#/definitions/arista.studio.v1.ResolverFieldDisplayMode", + "description": "display_mode (required) is the display mode of the resolver." }, - "deviceInfo": { - "$ref": "#/definitions/arista.studio.v1.DeviceInfo", - "description": "device_info contains device properties." - } - }, - "description": "TopologyInputConfig is the desired topology input for a device." - }, - "arista.studio.v1.TopologyInputConfigDeleteAllResponse": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "inputMode": { + "$ref": "#/definitions/arista.studio.v1.ResolverFieldInputMode", + "description": "input_mode (required) is the input mode of the resolver." }, - "error": { + "inputTagLabel": { "type": "string", - "description": "This indicates the error message from the delete failure." - }, - "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputKey", - "description": "This is the key of the TopologyInputConfig instance that failed to be deleted." + "description": "input_tag_label can be used when `input_mode` is one of\n`RESOLVER_FIELD_INPUT_MODE_SINGLE_*_TAG` and it specifies\nthe tag label must be used in the resolver query." }, - "time": { + "tagFilterQuery": { "type": "string", - "format": "date-time", - "description": "Time indicates the (UTC) timestamp when the key was being deleted." + "description": "tag_filter_query limits the set of elements that the\nresolver query can return. E.g., `\"device:D1,D2\"` will\nconstrain results to the devices D1 and D2." } - } + }, + "description": "ResolverInputFieldProps defines the set of properties for a single\nresolver field in a studio input schema." }, - "arista.studio.v1.TopologyInputConfigDeleteResponse": { + "arista.studio.v1.SecretInput": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputKey", - "description": "Key echoes back the key of the deleted TopologyInputConfig instance." + "$ref": "#/definitions/arista.studio.v1.InputsKey", + "description": "key identifies the secret in the studio inputs." }, - "time": { + "plainText": { "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==DeletedAt will not include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ndeletion. The only guarantees made about this timestamp are:" + "description": "plain_text is the unmasked value of the secret." } - } + }, + "description": "SecretInput can be used to retrieve the unmasked value of\na secret in a studio." }, - "arista.studio.v1.TopologyInputConfigResponse": { + "arista.studio.v1.SecretInputResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfig", + "$ref": "#/definitions/arista.studio.v1.SecretInput", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyInputConfig instance in this response." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nSecretInput instance in this response." } } }, - "arista.studio.v1.TopologyInputConfigSetResponse": { + "arista.studio.v1.SecretInputSomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfig", - "description": "Value carries all the values given in the TopologyInputConfigSetRequest as well\nas any server-generated values." + "$ref": "#/definitions/arista.studio.v1.SecretInput", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "time": { + "error": { "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==CreatedAt will include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ncreation. The only guarantees made about this timestamp are:" - } - } - }, - "arista.studio.v1.TopologyInputConfigSetSomeResponse": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputKey" + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." }, - "error": { - "type": "string" + "time": { + "type": "string", + "format": "date-time" } } }, - "arista.studio.v1.TopologyInputConfigStreamRequest": { + "arista.studio.v1.SecretInputStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfig" + "$ref": "#/definitions/arista.studio.v1.SecretInput" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyInputConfig at end.\n * Each TopologyInputConfig response is fully-specified (all fields set).\n * start: Returns the state of each TopologyInputConfig at start, followed by updates until now.\n * Each TopologyInputConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyInputConfig at start, followed by updates\n until end.\n * Each TopologyInputConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each SecretInput at end.\n * Each SecretInput response is fully-specified (all fields set).\n * start: Returns the state of each SecretInput at start, followed by updates until now.\n * Each SecretInput response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each SecretInput at start, followed by updates\n until end.\n * Each SecretInput response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.TopologyInputConfigStreamResponse": { + "arista.studio.v1.SecretInputStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyInputConfig", + "$ref": "#/definitions/arista.studio.v1.SecretInput", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this TopologyInputConfig's last modification." + "description": "Time holds the timestamp of this SecretInput's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyInputConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the SecretInput value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.TopologyInputKey": { + "arista.studio.v1.StringInputFieldProps": { "type": "object", "properties": { - "workspaceId": { + "defaultValue": { + "type": "string", + "description": "default_value is the default value of the string." + }, + "staticOptions": { + "$ref": "#/definitions/fmp.RepeatedString", + "description": "static_options defines the set of possible values for the string." + }, + "dynamicOptions": { + "$ref": "#/definitions/fmp.RepeatedString", + "description": "dynamic_options defines the set of possible values for the string\nbased on the possible values for other strings in the schema.\nEach field should be referenced by a JSON object of the form\n`{ \"fieldId\": \u003cfield_id\u003e }`.\n\nE.g,\n```\n[\n { \"fieldId\": \"deviceFieldID\" },\n { \"fieldId\": \"ipFieldID\" }\n]\n```\nHere, the possible values for the strings identified by\n`\"deviceFieldID\"` and `\"ipFieldID\"` are used as the possible\nvalues for this string." + }, + "length": { + "type": "string", + "description": "length imposes a length range (inclusive) on the value of the\nstring. The should be of the form `\"\u003cmin\u003e..\u003cmax\u003e\"`. E.g.,\n`\"3..7\"` means the value of the string can be three to seven\ncharacters long." + }, + "pattern": { "type": "string", - "description": "workspace_id identifies the workspace uniquely." + "description": "pattern imposes a regular expression matching constraint on\nthe value of the string. This should be a Google RE2-compliant\nregular expression (https://github.com/google/re2/wiki/Syntax)." }, - "deviceId": { + "format": { "type": "string", - "description": "device_id identifies the device uniquely." + "description": "* `\"ip\"`: an IPv4 or IPv6 address\n* `\"ipv4\"`: an IPv4 address\n* `\"ipv6\"`: an IPv6 address\n* `\"mac\"`: a MAC address\n* `\"cidr\"`: an IPv4 or IPv6 address in CIDR notation (e.g. 10.1.1.1/24, 2001:db8:a0b::1/32)\n* `\"cidrv4\"`: an IPv4 address in CIDR notation (e.g. 10.1.1.1/24)\n* `\"cidrv6\"`: an IPv6 address in CIDR notation (e.g. 2001:db8:a0b::1/32)\n* `\"url\"`: a URL (e.g., http://www.google.com)", + "title": "format imposes a well-known format on the value of the string.\nThe supported formats are:" + }, + "isSecret": { + "type": "boolean", + "description": "is_secret specifies whether the string is a secret and its\nvalue should be masked. E.g., if this is set to `true` and\nthe value of the string is `\"secret-value-1\"`, it will be\nmasked as `\"**********\"`." + }, + "extraValuesAllowed": { + "type": "boolean", + "description": "extra_values_allowed allows adding values to the field in\naddition to what's allowed by static_options/dynamic_options." } }, - "description": "TopologyInputKey is the set of inputs that uniquely identify\nthe device for a workspace.", - "required": [ - "workspaceId", - "deviceId" - ] + "description": "StringInputFieldProps defines the set of properties for a single\nstring field in a studio input schema." }, - "arista.studio.v1.TopologyInputResponse": { + "arista.studio.v1.Studio": { "type": "object", "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyInput", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + "key": { + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "key uniquely identifies the studio." }, - "time": { + "createdAt": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyInput instance in this response." - } - } - }, - "arista.studio.v1.TopologyInputStreamRequest": { - "type": "object", - "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyInput" - }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + "description": "created_at is the time at which the studio was created." }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyInput at end.\n * Each TopologyInput response is fully-specified (all fields set).\n * start: Returns the state of each TopologyInput at start, followed by updates until now.\n * Each TopologyInput response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyInput at start, followed by updates\n until end.\n * Each TopologyInput response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." - } - } - }, - "arista.studio.v1.TopologyInputStreamResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyInput", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + "createdBy": { + "type": "string", + "description": "created_by is the name of the user that created the studio." }, - "time": { + "lastModifiedAt": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this TopologyInput's last modification." + "description": "last_modified_at is the time at which the studio was last modified." }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyInput value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "lastModifiedBy": { + "type": "string", + "description": "last_modified_by is the name of the user that last modified the studio." + }, + "displayName": { + "type": "string", + "description": "display_name is the name of this studio as displayed on the UI.\nThis and remaining fields are config fields, with workspace changes applied on top of\nmainline. This resource will be present in the workspace only if\nthe studio is modified (via the `StudioConfig` resource)." + }, + "description": { + "type": "string", + "description": "description is a brief description of the studio." + }, + "template": { + "$ref": "#/definitions/arista.studio.v1.Template", + "description": "template is a script that builds the device configuration from the\ninputs that are described by `input_schema`." + }, + "inputSchema": { + "$ref": "#/definitions/arista.studio.v1.InputSchema", + "description": "input_schema is the schema for the studio inputs that are processed\nby `template`." + }, + "fromPackage": { + "type": "string", + "description": "from_package indicates that this studio was created by a package, and can only be modified\nby the packaging service." } - } - }, - "arista.studio.v1.TopologyOperation": { - "type": "string", - "enum": [ - "TOPOLOGY_OPERATION_UNSPECIFIED", - "TOPOLOGY_OPERATION_ADDED", - "TOPOLOGY_OPERATION_MODIFIED", - "TOPOLOGY_OPERATION_REMOVED" - ], - "default": "TOPOLOGY_OPERATION_UNSPECIFIED", - "description": "TopologyOperation defines the operations that may be performed on the topology.\n\n - TOPOLOGY_OPERATION_ADDED: TOPOLOGY_OPERATION_ADDED indicates addition of a TopologyElement.\n - TOPOLOGY_OPERATION_MODIFIED: TOPOLOGY_OPERATION_MODIFIED indicates modification of a TopologyElement.\n - TOPOLOGY_OPERATION_REMOVED: TOPOLOGY_OPERATION_REMOVED indicates removal of a TopologyElement." + }, + "description": "Studio holds the active state for a studio." }, - "arista.studio.v1.TopologyUpdate": { + "arista.studio.v1.StudioConfig": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateKey", - "description": "key uniquely identifies the update." - }, - "topologyElement": { - "$ref": "#/definitions/arista.studio.v1.TopologyElement", - "description": "topology_element indicates the type of a network element." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "key uniquely identifies the studio." }, - "topologyOperation": { - "$ref": "#/definitions/arista.studio.v1.TopologyOperation", - "description": "topology_operation indicates the type of operation on the topology update." + "remove": { + "type": "boolean", + "description": "remove indicates whether to remove (`true`) or add (`false`,\nunset) the studio identified by the key if the encompassing\nworkspace merges. Other data fields are not allowed if this\nfield is set to true." }, - "status": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStatus", - "description": "status indicates the status of the topology update." + "displayName": { + "type": "string", + "description": "display_name is the name of this studio as displayed on the UI.\nThis and remaining fields are config fields, with workspace changes to be applied\non top of mainline. The corresponding `Studio` will be present\nin the workspace only if the studio is modified (via this resource)." }, "description": { "type": "string", - "description": "description describes the topology update in short." - } - }, - "description": "TopologyUpdate represents an update on to the workspace." - }, - "arista.studio.v1.TopologyUpdateConfig": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateKey", - "description": "key uniquely identifies the update." + "description": "description is a brief description of the studio." }, - "status": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateStatus", - "description": "status indicates the status of the topology update." + "template": { + "$ref": "#/definitions/arista.studio.v1.Template", + "description": "template is a script that builds the device configuration from the\ninputs that are described by `input_schema`." + }, + "inputSchema": { + "$ref": "#/definitions/arista.studio.v1.InputSchema", + "description": "input_schema is the schema for the studio inputs that are processed\nby `template`." } }, - "description": "TopologyUpdateConfig contains the acceptance status of a TopologyUpdate." + "description": "StudioConfig holds a configuration for a studio.\n\nChanges to fields other than `key` and `remove` are applied to\na copy of the mainline." }, - "arista.studio.v1.TopologyUpdateConfigDeleteAllResponse": { + "arista.studio.v1.StudioConfigDeleteAllResponse": { "type": "object", "properties": { "type": { "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "description": "This describes the class of delete error.\nA DeleteAllResponse is only sent when there is an error." }, "error": { "type": "string", "description": "This indicates the error message from the delete failure." }, "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateKey", - "description": "This is the key of the TopologyUpdateConfig instance that failed to be deleted." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "This is the key of the StudioConfig instance that failed to be deleted." }, "time": { "type": "string", @@ -6095,12 +6528,12 @@ } } }, - "arista.studio.v1.TopologyUpdateConfigDeleteResponse": { + "arista.studio.v1.StudioConfigDeleteResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateKey", - "description": "Key echoes back the key of the deleted TopologyUpdateConfig instance." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "Key echoes back the key of the deleted StudioConfig instance." }, "time": { "type": "string", @@ -6110,26 +6543,38 @@ } } }, - "arista.studio.v1.TopologyUpdateConfigResponse": { + "arista.studio.v1.StudioConfigDeleteSomeResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.studio.v1.StudioKey" + }, + "error": { + "type": "string" + } + }, + "description": "StudioConfigDeleteSomeResponse is only sent when there is an error." + }, + "arista.studio.v1.StudioConfigResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfig", + "$ref": "#/definitions/arista.studio.v1.StudioConfig", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyUpdateConfig instance in this response." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudioConfig instance in this response." } } }, - "arista.studio.v1.TopologyUpdateConfigSetResponse": { + "arista.studio.v1.StudioConfigSetResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfig", - "description": "Value carries all the values given in the TopologyUpdateConfigSetRequest as well\nas any server-generated values." + "$ref": "#/definitions/arista.studio.v1.StudioConfig", + "description": "Value carries all the values given in the StudioConfigSetRequest as well\nas any server-generated values." }, "time": { "type": "string", @@ -6139,333 +6584,307 @@ } } }, - "arista.studio.v1.TopologyUpdateConfigSetSomeResponse": { + "arista.studio.v1.StudioConfigSetSomeResponse": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateKey" + "$ref": "#/definitions/arista.studio.v1.StudioKey" }, "error": { "type": "string" } } }, - "arista.studio.v1.TopologyUpdateConfigStreamRequest": { + "arista.studio.v1.StudioConfigSomeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.studio.v1.StudioConfig", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "arista.studio.v1.StudioConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfig" + "$ref": "#/definitions/arista.studio.v1.StudioConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyUpdateConfig at end.\n * Each TopologyUpdateConfig response is fully-specified (all fields set).\n * start: Returns the state of each TopologyUpdateConfig at start, followed by updates until now.\n * Each TopologyUpdateConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyUpdateConfig at start, followed by updates\n until end.\n * Each TopologyUpdateConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each StudioConfig at end.\n * Each StudioConfig response is fully-specified (all fields set).\n * start: Returns the state of each StudioConfig at start, followed by updates until now.\n * Each StudioConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each StudioConfig at start, followed by updates\n until end.\n * Each StudioConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.TopologyUpdateConfigStreamResponse": { + "arista.studio.v1.StudioConfigStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateConfig", + "$ref": "#/definitions/arista.studio.v1.StudioConfig", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this TopologyUpdateConfig's last modification." + "description": "Time holds the timestamp of this StudioConfig's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyUpdateConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the StudioConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.TopologyUpdateKey": { + "arista.studio.v1.StudioKey": { "type": "object", "properties": { - "workspaceId": { + "studioId": { "type": "string", - "description": "workspace_id identifies the workspace uniquely." + "description": "studio_id uniquely identifies the studio in the workspace indicated\nby `workspace_id`." }, - "updateId": { + "workspaceId": { "type": "string", - "description": "update_id identifies the update uniquely." + "description": "workspace_id identifies the workspace within which the studio resides." } }, - "description": "TopologyUpdateKey uniquely identifies a workspace topology update.", + "description": "StudioKey uniquely identifies a studio.", "required": [ - "workspaceId", - "updateId" + "studioId", + "workspaceId" ] }, - "arista.studio.v1.TopologyUpdateResponse": { + "arista.studio.v1.StudioResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdate", + "$ref": "#/definitions/arista.studio.v1.Studio", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyUpdate instance in this response." + "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudio instance in this response." } } }, - "arista.studio.v1.TopologyUpdateStatus": { - "type": "string", - "enum": [ - "TOPOLOGY_UPDATE_STATUS_UNSPECIFIED", - "TOPOLOGY_UPDATE_STATUS_NEW", - "TOPOLOGY_UPDATE_STATUS_ACCEPTED", - "TOPOLOGY_UPDATE_STATUS_IGNORED" - ], - "default": "TOPOLOGY_UPDATE_STATUS_UNSPECIFIED", - "description": "TopologyUpdateStatus defines the set of statuses that apply to individual topology updates.\n\n - TOPOLOGY_UPDATE_STATUS_NEW: TOPOLOGY_UPDATE_STATUS_NEW indicates the update is new.\n - TOPOLOGY_UPDATE_STATUS_ACCEPTED: TOPOLOGY_UPDATE_STATUS_ACCEPTED indicates the update is accepted.\n - TOPOLOGY_UPDATE_STATUS_IGNORED: TOPOLOGY_UPDATE_STATUS_IGNORED indicates the update is ignored." + "arista.studio.v1.StudioSomeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.studio.v1.Studio", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, + "time": { + "type": "string", + "format": "date-time" + } + } }, - "arista.studio.v1.TopologyUpdateStreamRequest": { + "arista.studio.v1.StudioStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyUpdate" + "$ref": "#/definitions/arista.studio.v1.Studio" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyUpdate at end.\n * Each TopologyUpdate response is fully-specified (all fields set).\n * start: Returns the state of each TopologyUpdate at start, followed by updates until now.\n * Each TopologyUpdate response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyUpdate at start, followed by updates\n until end.\n * Each TopologyUpdate response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Studio at end.\n * Each Studio response is fully-specified (all fields set).\n * start: Returns the state of each Studio at start, followed by updates until now.\n * Each Studio response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Studio at start, followed by updates\n until end.\n * Each Studio response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.TopologyUpdateStreamResponse": { + "arista.studio.v1.StudioStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdate", + "$ref": "#/definitions/arista.studio.v1.Studio", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this TopologyUpdate's last modification." + "description": "Time holds the timestamp of this Studio's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyUpdate value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the Studio value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.TopologyUpdateSync": { + "arista.studio.v1.StudioSummary": { "type": "object", "properties": { "key": { - "$ref": "#/definitions/arista.studio.v1.WorkspaceKey", - "description": "key uniquely identifies the workspace." + "$ref": "#/definitions/arista.studio.v1.StudioKey", + "description": "key uniquely identifies the studio." }, - "syncTime": { + "displayName": { "type": "string", - "format": "date-time", - "description": "sync_time indicates the time up to which the live topology is synchronized.\nAll updates that happened up to this timestamp will be accepted." - } - }, - "description": "TopologyUpdateSync model represents the state of topology updates,\nwhich consists of the time up to which updates are accepted." - }, - "arista.studio.v1.TopologyUpdateSyncConfig": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.WorkspaceKey", - "description": "key uniquely identifies the workspace." + "description": "display_name is the name of this studio as displayed on the UI." }, - "syncTime": { + "description": { "type": "string", - "format": "date-time", - "description": "sync_time indicates the desired synchronization time with the live topology.\nIf the sync_time indicated in the config takes effect without error,\nit will appear in the state model, and then all updates that occurred up to\nand including the timestamp in the state model will be accepted." - } - }, - "description": "TopologyUpdateSyncConfig model represents a point in time all updates\nare to be accepted." - }, - "arista.studio.v1.TopologyUpdateSyncConfigDeleteAllResponse": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/fmp.DeleteError", - "description": "This describes the class of delete error." + "description": "description is a brief description of the studio." }, - "error": { - "type": "string", - "description": "This indicates the error message from the delete failure." + "immutable": { + "type": "boolean", + "description": "immutable indicates if read-write studio management\naccess over a given studio is granted or not.\nIf studio is immutable, its display name, description,\nschema and template cannot be modified." }, - "key": { - "$ref": "#/definitions/arista.studio.v1.WorkspaceKey", - "description": "This is the key of the TopologyUpdateSyncConfig instance that failed to be deleted." + "entities": { + "$ref": "#/definitions/arista.studio.v1.Entities", + "description": "entities indicate all the entities of the studio." }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time indicates the (UTC) timestamp when the key was being deleted." + "inUse": { + "type": "boolean", + "description": "in_use indicates that the studio is in use, i.e. there are non-empty inputs,\nand assigned to some devices, either in a given workspace, or in mainline." } - } + }, + "description": "StudioSummary holds basic information about a studio." }, - "arista.studio.v1.TopologyUpdateSyncConfigDeleteResponse": { + "arista.studio.v1.StudioSummaryResponse": { "type": "object", "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.WorkspaceKey", - "description": "Key echoes back the key of the deleted TopologyUpdateSyncConfig instance." + "value": { + "$ref": "#/definitions/arista.studio.v1.StudioSummary", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, "time": { "type": "string", "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==DeletedAt will not include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ndeletion. The only guarantees made about this timestamp are:" + "description": "Time carries the (UTC) timestamp of the last-modification of the\nStudioSummary instance in this response." } } }, - "arista.studio.v1.TopologyUpdateSyncConfigResponse": { + "arista.studio.v1.StudioSummarySomeResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfig", + "$ref": "#/definitions/arista.studio.v1.StudioSummary", "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." }, - "time": { + "error": { "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyUpdateSyncConfig instance in this response." - } - } - }, - "arista.studio.v1.TopologyUpdateSyncConfigSetResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfig", - "description": "Value carries all the values given in the TopologyUpdateSyncConfigSetRequest as well\nas any server-generated values." + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." }, "time": { "type": "string", - "format": "date-time", - "description": "- it is after the time the request was received\n - a time-ranged query with StartTime==CreatedAt will include this instance.", - "title": "Time indicates the (UTC) timestamp at which the system recognizes the\ncreation. The only guarantees made about this timestamp are:" - } - } - }, - "arista.studio.v1.TopologyUpdateSyncConfigSetSomeResponse": { - "type": "object", - "properties": { - "key": { - "$ref": "#/definitions/arista.studio.v1.WorkspaceKey" - }, - "error": { - "type": "string" + "format": "date-time" } } }, - "arista.studio.v1.TopologyUpdateSyncConfigStreamRequest": { + "arista.studio.v1.StudioSummaryStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfig" + "$ref": "#/definitions/arista.studio.v1.StudioSummary" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyUpdateSyncConfig at end.\n * Each TopologyUpdateSyncConfig response is fully-specified (all fields set).\n * start: Returns the state of each TopologyUpdateSyncConfig at start, followed by updates until now.\n * Each TopologyUpdateSyncConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyUpdateSyncConfig at start, followed by updates\n until end.\n * Each TopologyUpdateSyncConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each StudioSummary at end.\n * Each StudioSummary response is fully-specified (all fields set).\n * start: Returns the state of each StudioSummary at start, followed by updates until now.\n * Each StudioSummary response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each StudioSummary at start, followed by updates\n until end.\n * Each StudioSummary response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, - "arista.studio.v1.TopologyUpdateSyncConfigStreamResponse": { + "arista.studio.v1.StudioSummaryStreamResponse": { "type": "object", "properties": { "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSyncConfig", + "$ref": "#/definitions/arista.studio.v1.StudioSummary", "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." }, "time": { "type": "string", "format": "date-time", - "description": "Time holds the timestamp of this TopologyUpdateSyncConfig's last modification." + "description": "Time holds the timestamp of this StudioSummary's last modification." }, "type": { "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyUpdateSyncConfig value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "description": "Operation indicates how the StudioSummary value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." } } }, - "arista.studio.v1.TopologyUpdateSyncResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSync", - "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." - }, - "time": { - "type": "string", - "format": "date-time", - "description": "Time carries the (UTC) timestamp of the last-modification of the\nTopologyUpdateSync instance in this response." - } - } + "arista.studio.v1.TagMatcherFieldMode": { + "type": "string", + "enum": [ + "TAG_MATCHER_FIELD_MODE_UNSPECIFIED", + "TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG", + "TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG", + "TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG", + "TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG" + ], + "default": "TAG_MATCHER_FIELD_MODE_UNSPECIFIED", + "description": "TagMatcherFieldMode defines the set of ways a tag query for matching\ndevice or interfaces can be specified in a studio.\n\n - TAG_MATCHER_FIELD_MODE_UNSPECIFIED: TAG_MATCHER_FIELD_MODE_UNSPECIFIED indicates an unspecified tag matcher mode.\n - TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG: TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG allows devices to be\nselected based on a single tag label.\n - TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG: TAG_MATCHER_FIELD_MODE_SINGLE_INTERFACE_TAG allows interfaces\nto be selected based on a single tag label.\n - TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG: TAG_MATCHER_FIELD_MODE_MULTI_DEVICE_TAG allows devices to be\nselected based on any tag label.\n - TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG: TAG_MATCHER_FIELD_MODE_MULTI_INTERFACE_TAG allows interfaces\nto be selected based on any tag label." }, - "arista.studio.v1.TopologyUpdateSyncStreamRequest": { + "arista.studio.v1.TagMatcherInputFieldProps": { "type": "object", "properties": { - "partialEqFilter": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSync" - }, - "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + "tagMatcherMode": { + "$ref": "#/definitions/arista.studio.v1.TagMatcherFieldMode", + "description": "tag_matcher_mode (required) is the tag mode of the matcher." }, - "time": { - "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TopologyUpdateSync at end.\n * Each TopologyUpdateSync response is fully-specified (all fields set).\n * start: Returns the state of each TopologyUpdateSync at start, followed by updates until now.\n * Each TopologyUpdateSync response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TopologyUpdateSync at start, followed by updates\n until end.\n * Each TopologyUpdateSync response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." - } - } - }, - "arista.studio.v1.TopologyUpdateSyncStreamResponse": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/arista.studio.v1.TopologyUpdateSync", - "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + "tagMatcherLabel": { + "type": "string", + "description": "tag_matcher_label can be used when `tag_matcher_mode` is one of\n`TAG_MATCHER_FIELD_MODE_SINGLE_*_TAG` and it specifies\nthe tag label which must be used in the match query." }, - "time": { + "tagFilterQuery": { "type": "string", - "format": "date-time", - "description": "Time holds the timestamp of this TopologyUpdateSync's last modification." + "description": "tag_filter_query limits the set of devices that the\nmatch query can return. E.g., `\"device:D1,D2\"` will\nconstrain results to the devices D1 and D2." }, - "type": { - "$ref": "#/definitions/arista.subscriptions.Operation", - "description": "Operation indicates how the TopologyUpdateSync value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + "resolverFilteringAllowed": { + "type": "boolean", + "description": "resolver_filtering_allowed indicates whether results of the\nmatch query be filtered based on what any parent resolvers\nallow. This is `true` by default." } - } + }, + "description": "TagMatcherInputFieldProps defines the set of properties for a single\nselector field in a studio input schema." }, - "arista.studio.v1.WorkspaceKey": { + "arista.studio.v1.Template": { "type": "object", "properties": { - "workspaceId": { + "type": { + "$ref": "#/definitions/arista.studio.v1.TemplateType", + "description": "type specifies the language that this template uses." + }, + "body": { "type": "string", - "description": "workspace_id identifies the workspace uniquely." + "description": "body contains the actual source code of the template." } }, - "description": "WorkspaceKey uniquely identifies the workspace.", - "required": [ - "workspaceId" - ] + "description": "Template defines a template for a studio." + }, + "arista.studio.v1.TemplateType": { + "type": "string", + "enum": [ + "TEMPLATE_TYPE_UNSPECIFIED", + "TEMPLATE_TYPE_MAKO", + "TEMPLATE_TYPE_JINJA", + "TEMPLATE_TYPE_GO" + ], + "default": "TEMPLATE_TYPE_UNSPECIFIED", + "description": "TemplateType defines the set of supported languages that can\nbe used in studio templates.\n\n - TEMPLATE_TYPE_UNSPECIFIED: TEMPLATE_TYPE_UNSPECIFIED indicates an unspecified template type.\n - TEMPLATE_TYPE_MAKO: TEMPLATE_TYPE_MAKO is the Mako templating language for Python.\nMore information: https://www.makotemplates.org\n - TEMPLATE_TYPE_JINJA: TEMPLATE_TYPE_JINJA is the Jinja templating language for Python.\nMore information: https://palletsprojects.com/p/jinja\n - TEMPLATE_TYPE_GO: TEMPLATE_TYPE_GO is the Go templating language.\nMore information: https://pkg.go.dev/text/template\n\nNOTE: Not all template functions are supported for this type." }, "arista.subscriptions.Operation": { "type": "string", @@ -6503,14 +6922,6 @@ "default": "DELETE_ERROR_UNSPECIFIED", "description": "DeleteError defines the set of delete error types.\n\n - DELETE_ERROR_UNSPECIFIED: DELETE_ERROR_UNSPECIFIED indicates that the delete error\nis not specified.\n - DELETE_ERROR_UNAUTHORIZED: DELETE_ERROR_UNAUTHORIZED indicates that the user is not authorized\nto perform the specified delete.\n - DELETE_ERROR_INTERNAL: DELETE_ERROR_INTERNAL indicates that the server encountered an\nunrecoverable error on the specified delete.\n - DELETE_ERROR_UNDELETABLE_KEY: DELETE_ERROR_UNDELETABLE_KEY indicates that the specified error is\nnot allowed by the service." }, - "fmp.MACAddress": { - "type": "object", - "properties": { - "value": { - "type": "string" - } - } - }, "fmp.RepeatedFloat": { "type": "object", "properties": { diff --git a/arista/studio.v1/studio-changelog.yaml b/arista/studio.v1/studio-changelog.yaml index 607cf222..86a45731 100644 --- a/arista/studio.v1/studio-changelog.yaml +++ b/arista/studio.v1/studio-changelog.yaml @@ -7,6 +7,11 @@ # New entries go on top. Changes: + - date: 2024-03-04 + description: Split the studio proto into three studio files + version: 1.3.0 + cvaas: true + - date: 2023-03-31 description: Add SetSome to all Config services version: 1.2.2 diff --git a/arista/studio.v1/studio.proto b/arista/studio.v1/studio.proto index 5afd5c04..53184150 100644 --- a/arista/studio.v1/studio.proto +++ b/arista/studio.v1/studio.proto @@ -1,4 +1,4 @@ -// Copyright (c) 2020 Arista Networks, Inc. All rights reserved. +// Copyright (c) 2023 Arista Networks, Inc. All rights reserved. // Use of this source code is governed by the Apache License 2.0 // that can be found in the COPYING file. @@ -8,11 +8,10 @@ syntax = "proto3"; package arista.studio.v1; -option go_package = "arista/resources/arista/studio.v1;studio"; +option go_package = "github.com/aristanetworks/cloudvision-go/api/arista/studio.v1;studio"; import "fmp/extensions.proto"; import "fmp/wrappers.proto"; -import "fmp/yang.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; @@ -44,12 +43,10 @@ message StudioConfig { // workspace merges. Other data fields are not allowed if this // field is set to true. google.protobuf.BoolValue remove = 2; - - // Below are config fields, with workspace changes to be applied + // display_name is the name of this studio as displayed on the UI. + // This and remaining fields are config fields, with workspace changes to be applied // on top of mainline. The corresponding `Studio` will be present // in the workspace only if the studio is modified (via this resource). - - // display_name is the name of this studio as displayed on the UI. google.protobuf.StringValue display_name = 3; // description is a brief description of the studio. google.protobuf.StringValue description = 4; @@ -66,16 +63,58 @@ message StudioSummary { option (fmp.model) = "ro"; // key uniquely identifies the studio. - StudioKey key =1; + StudioKey key = 1; // display_name is the name of this studio as displayed on the UI. google.protobuf.StringValue display_name = 2; // description is a brief description of the studio. google.protobuf.StringValue description = 3; // immutable indicates if read-write studio management - // access over a given studio is granted or not. + // access over a given studio is granted or not. // If studio is immutable, its display name, description, // schema and template cannot be modified. google.protobuf.BoolValue immutable = 4; + // entities indicate all the entities of the studio. + Entities entities = 5; + // in_use indicates that the studio is in use, i.e. there are non-empty inputs, + // and assigned to some devices, either in a given workspace, or in mainline. + google.protobuf.BoolValue in_use = 6; +} + +// Entity holds the basic information of an entity. +message Entity { + // EntityType is the type of the entity. + EntityType entity_type = 1; + // last_modified_at is the time at which the entity was last modified. + google.protobuf.Timestamp last_modified_at = 2; + // last_modified_by is the name of the user that last modified the entity. + google.protobuf.StringValue last_modified_by = 3; + // removed indicates if the entity is removed. + google.protobuf.BoolValue removed = 4; +} + +// Entities is a list of Entity. +message Entities { + // values is a map from entity type name to entity + // The possible keys to this map are ENTITY_TYPE_STUDIO, + // ENTITY_TYPE_INPUTS, ENTITY_TYPE_ASSIGNED_TAGS, + // ENTITY_TYPE_BUILD_HOOK and ENTITY_TYPE_AUTOFILL_ACTION. + map values = 1; +} + +// EntityType enumerates the set of entity types. +enum EntityType { + // ENTITY_TYPE_UNSPECIFIED indicates an unspecified entity type. + ENTITY_TYPE_UNSPECIFIED = 0; + // ENTITY_TYPE_STUDIO indicates the Studio entity type. + ENTITY_TYPE_STUDIO = 1; + // ENTITY_TYPE_INPUTS indicates the Inputs entity type. + ENTITY_TYPE_INPUTS = 2; + // ENTITY_TYPE_ASSIGNED_TAGS indicates the AssignedTags entity type. + ENTITY_TYPE_ASSIGNED_TAGS = 3; + // ENTITY_TYPE_BUILD_HOOK indicates the BuildHook entity type. + ENTITY_TYPE_BUILD_HOOK = 4; + // ENTITY_TYPE_AUTOFILL_ACTION indicates the AutofillAction entity type. + ENTITY_TYPE_AUTOFILL_ACTION = 5; } // Studio holds the active state for a studio. @@ -92,12 +131,10 @@ message Studio { google.protobuf.Timestamp last_modified_at = 4; // last_modified_by is the name of the user that last modified the studio. google.protobuf.StringValue last_modified_by = 5; - - // Below are config fields, with workspace changes applied on top of + // display_name is the name of this studio as displayed on the UI. + // This and remaining fields are config fields, with workspace changes applied on top of // mainline. This resource will be present in the workspace only if // the studio is modified (via the `StudioConfig` resource). - - // display_name is the name of this studio as displayed on the UI. google.protobuf.StringValue display_name = 6; // description is a brief description of the studio. google.protobuf.StringValue description = 7; @@ -108,6 +145,9 @@ message Studio { // by `template`. InputSchema input_schema = 9; reserved 10; + // from_package indicates that this studio was created by a package, and can only be modified + // by the packaging service. + google.protobuf.StringValue from_package = 11; } // AssignedTagsConfig holds a configuration to assign a studio to a set of devices @@ -196,7 +236,7 @@ message InputsConfig { // inputs is the value of the input field at the path as a // JSON string. It can be the value for a simple or complex // input field. - // + // // Simple types (booleans, integers, floats, strings) map to // their JSON equivalents. // @@ -249,6 +289,7 @@ message Inputs { // TemplateType defines the set of supported languages that can // be used in studio templates. enum TemplateType { + // TEMPLATE_TYPE_UNSPECIFIED indicates an unspecified template type. TEMPLATE_TYPE_UNSPECIFIED = 0; // TEMPLATE_TYPE_MAKO is the Mako templating language for Python. // More information: https://www.makotemplates.org @@ -274,6 +315,7 @@ message Template { // InputFieldType defines the set of possible data types for // values that can be input into a studio. enum InputFieldType { + // INPUT_FIELD_TYPE_UNSPECIFIED indicates an unspecified input data type. INPUT_FIELD_TYPE_UNSPECIFIED = 0; // INPUT_FIELD_TYPE_BOOLEAN is the data type for a boolean value. INPUT_FIELD_TYPE_BOOLEAN = 1; @@ -311,6 +353,7 @@ enum InputFieldType { // ResolverFieldInputMode defines the set of ways a resolver tag query // can be specified in a studio. enum ResolverFieldInputMode { + // RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED indicates an unspecified resolver input mode. RESOLVER_FIELD_INPUT_MODE_UNSPECIFIED = 0; // RESOLVER_FIELD_INPUT_MODE_SINGLE_DEVICE_TAG allows devices to be // selected based on a single tag label. @@ -329,6 +372,7 @@ enum ResolverFieldInputMode { // ResolverFieldDisplayMode defines the set of ways in which the matching // devices or interfaces should be displayed on the UI. enum ResolverFieldDisplayMode { + // RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED indicates an unspecified resolver display mode. RESOLVER_FIELD_DISPLAY_MODE_UNSPECIFIED = 0; // RESOLVER_FIELD_DISPLAY_MODE_ALL instructs the UI to show all // matching devices or interfaces, including ones that have no @@ -342,6 +386,7 @@ enum ResolverFieldDisplayMode { // TagMatcherFieldMode defines the set of ways a tag query for matching // device or interfaces can be specified in a studio. enum TagMatcherFieldMode { + // TAG_MATCHER_FIELD_MODE_UNSPECIFIED indicates an unspecified tag matcher mode. TAG_MATCHER_FIELD_MODE_UNSPECIFIED = 0; // TAG_MATCHER_FIELD_MODE_SINGLE_DEVICE_TAG allows devices to be // selected based on a single tag label. @@ -620,165 +665,6 @@ message SecretInput { google.protobuf.StringValue plain_text = 2; } -// TopologyElememt defines the fundamental types of elements in topology. -enum TopologyElement { - TOPOLOGY_ELEMENT_UNSPECIFIED = 0; - // TOPOLOGY_ELEMENT_DEVICE indicates a device. - TOPOLOGY_ELEMENT_DEVICE = 1; - // TOPOLOGY_ELEMENT_INTERFACE indicates an interface. - TOPOLOGY_ELEMENT_INTERFACE = 2; - // TOPOLOGY_ELEMENT_CONNECTION indicates a connection. - TOPOLOGY_ELEMENT_CONNECTION = 3; -} - -// TopologyOperation defines the operations that may be performed on the topology. -enum TopologyOperation { - TOPOLOGY_OPERATION_UNSPECIFIED = 0; - // TOPOLOGY_OPERATION_ADDED indicates addition of a TopologyElement. - TOPOLOGY_OPERATION_ADDED = 1; - // TOPOLOGY_OPERATION_MODIFIED indicates modification of a TopologyElement. - TOPOLOGY_OPERATION_MODIFIED = 2; - // TOPOLOGY_OPERATION_REMOVED indicates removal of a TopologyElement. - TOPOLOGY_OPERATION_REMOVED = 3; -} - -// TopologyUpdateStatus defines the set of statuses that apply to individual topology updates. -enum TopologyUpdateStatus { - TOPOLOGY_UPDATE_STATUS_UNSPECIFIED = 0; - // TOPOLOGY_UPDATE_STATUS_NEW indicates the update is new. - TOPOLOGY_UPDATE_STATUS_NEW = 1; - // TOPOLOGY_UPDATE_STATUS_ACCEPTED indicates the update is accepted. - TOPOLOGY_UPDATE_STATUS_ACCEPTED = 2; - // TOPOLOGY_UPDATE_STATUS_IGNORED indicates the update is ignored. - TOPOLOGY_UPDATE_STATUS_IGNORED = 3; -} - -// DeviceInfo contains device properties. -message DeviceInfo { - // device_id identifies the device uniquely. - google.protobuf.StringValue device_id = 1; - // model_name indicates the model of the device. - google.protobuf.StringValue model_name = 2; - // mac_address indicates the MAC address of the device. - fmp.MACAddress mac_address = 3; - // hostname indicates the hostname of the device. - google.protobuf.StringValue hostname = 4; - // interfaces_infos contains a list of the device's interfaces. - InterfaceInfos interface_infos = 5; -} - -// InterfaceInfo contains interface properties. -message InterfaceInfo { - // name is the name of an interface. - google.protobuf.StringValue name = 1; - // neighbor_device_id indicates the device ID of the neighbor to which - // this interface is connected. - google.protobuf.StringValue neighbor_device_id = 2; - // neighbor_device_name indicates the interface on the neighbor to which - // this interface is connected. - google.protobuf.StringValue neighbor_interface_name = 3; - // topology_operation indicates the type of operation to the interface. - TopologyOperation topology_operation = 4; -} - -// InterfaceInfos is a list of InterfaceInfo. -message InterfaceInfos { - // values is a list of InterfaceInfo. - repeated InterfaceInfo values = 1; -} - -// TopologyInputKey is the set of inputs that uniquely identify -// the device for a workspace. -message TopologyInputKey{ - option (fmp.model_key) = true; - // workspace_id identifies the workspace uniquely. - google.protobuf.StringValue workspace_id = 1; - // device_id identifies the device uniquely. - google.protobuf.StringValue device_id = 2; -} - -// TopologyInputConfig is the desired topology input for a device. -message TopologyInputConfig { - option (fmp.model) = "rw"; - // key uniquely identifies the device ID for a given workspace. - TopologyInputKey key = 1; - // device_info contains device properties. - DeviceInfo device_info = 2; -} - -// TopologyInput is the state of a mainline and accepted topology inputs. -message TopologyInput { - option (fmp.model) = "ro"; - // key uniquely identifies the device in a given workspace. - TopologyInputKey key = 1; - // device_info contains device properties. - DeviceInfo device_info = 2; -} - -// TopologyUpdateKey uniquely identifies a workspace topology update. -message TopologyUpdateKey { - option (fmp.model_key) = true; - // workspace_id identifies the workspace uniquely. - google.protobuf.StringValue workspace_id = 1; - // update_id identifies the update uniquely. - google.protobuf.StringValue update_id = 2; -} - -// TopologyUpdateConfig contains the acceptance status of a TopologyUpdate. -message TopologyUpdateConfig { - option (fmp.model) = "rw"; - // key uniquely identifies the update. - TopologyUpdateKey key = 1; - // status indicates the status of the topology update. - TopologyUpdateStatus status = 2; -} - -// TopologyUpdate represents an update on to the workspace. -message TopologyUpdate { - option (fmp.model) = "ro"; - // key uniquely identifies the update. - TopologyUpdateKey key = 1; - // topology_element indicates the type of a network element. - TopologyElement topology_element = 2; - // topology_operation indicates the type of operation on the topology update. - TopologyOperation topology_operation = 3; - // status indicates the status of the topology update. - TopologyUpdateStatus status = 4; - // description describes the topology update in short. - google.protobuf.StringValue description = 5; -} - -// WorkspaceKey uniquely identifies the workspace. -message WorkspaceKey { - option (fmp.model_key) = true; - // workspace_id identifies the workspace uniquely. - google.protobuf.StringValue workspace_id = 1; -} - -// TopologyUpdateSyncConfig model represents a point in time all updates -// are to be accepted. -message TopologyUpdateSyncConfig { - option (fmp.model) = "rw"; - // key uniquely identifies the workspace. - WorkspaceKey key = 1; - // sync_time indicates the desired synchronization time with the live topology. - // If the sync_time indicated in the config takes effect without error, - // it will appear in the state model, and then all updates that occurred up to - // and including the timestamp in the state model will be accepted. - google.protobuf.Timestamp sync_time = 2; -} - -// TopologyUpdateSync model represents the state of topology updates, -// which consists of the time up to which updates are accepted. -message TopologyUpdateSync { - option (fmp.model) = "ro"; - // key uniquely identifies the workspace. - WorkspaceKey key = 1; - // sync_time indicates the time up to which the live topology is synchronized. - // All updates that happened up to this timestamp will be accepted. - google.protobuf.Timestamp sync_time = 2; -} - // AutofillActionKey identifies an autofill action. message AutofillActionKey { option (fmp.model_key) = true; @@ -848,6 +734,7 @@ message AutofillAction { // AutofillArgumentProviders is a map of dynamic argument name to argument provider information. message AutofillArgumentProviders { + // values is a map of dynamic argument name to argument provider information. map values = 1; } @@ -869,6 +756,7 @@ message AutofillArgumentProvider { // AutofillProviderType describes the set of possible provided argument types. enum AutofillProviderType { + // AUTOFILL_PROVIDER_TYPE_UNSPECIFIED indicates that no provider type is specified. AUTOFILL_PROVIDER_TYPE_UNSPECIFIED = 0; // AUTOFILL_PROVIDER_TYPE_USER_SPECIFIED is when an argument is to be // provided at runtime by the user.