From 58d2b77fbbf6834c0b5ae15846616b304e850e00 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 10 Dec 2019 10:26:53 -0800 Subject: [PATCH] refactor: update field options (#180) --- .../cloud/securitycenter/v1/asset.proto | 8 +- .../cloud/securitycenter/v1/finding.proto | 32 +- .../v1/organization_settings.proto | 10 +- .../v1/run_asset_discovery_response.proto | 3 +- .../securitycenter/v1/security_marks.proto | 20 +- .../v1/securitycenter_service.proto | 304 +++++++++++------- .../cloud/securitycenter/v1/source.proto | 27 +- .../protos/protos.json | 257 ++++++++++----- .../cloud/securitycenter/v1/doc_asset.js | 2 +- .../cloud/securitycenter/v1/doc_finding.js | 23 +- .../v1/doc_organization_settings.js | 2 +- .../securitycenter/v1/doc_security_marks.js | 13 +- .../v1/doc_securitycenter_service.js | 146 ++++----- .../cloud/securitycenter/v1/doc_source.js | 19 +- .../src/v1/security_center_client.js | 264 +++++++-------- .../synth.metadata | 6 +- 16 files changed, 661 insertions(+), 475 deletions(-) diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/asset.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/asset.proto index 74ec9b2138a..3b99d35d11d 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/asset.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/asset.proto @@ -18,6 +18,7 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/resource.proto"; import "google/cloud/securitycenter/v1/security_marks.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; @@ -36,6 +37,11 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // GCP resource. All modifications to an Asset are only within the context of // Cloud SCC and don't affect the referenced GCP resource. message Asset { + option (google.api.resource) = { + type: "securitycenter.googleapis.com/Asset" + pattern: "organizations/{organization}/assets/{asset}" + }; + // Cloud SCC managed properties. These properties are managed by Cloud SCC and // cannot be modified by the user. message SecurityCenterProperties { @@ -75,7 +81,7 @@ message Asset { // The relative resource name of this asset. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Example: - // "organizations/123/assets/456". + // "organizations/{organization_id}/assets/{asset_id}". string name = 1; // Cloud SCC managed properties. These properties are managed by diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/finding.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/finding.proto index e75247e88e8..0c64d4d79fe 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/finding.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/finding.proto @@ -18,6 +18,8 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; import "google/cloud/securitycenter/v1/security_marks.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; @@ -31,11 +33,17 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // Cloud Security Command Center (Cloud SCC) finding. // -// A finding is a record of assessment data (security, risk, health or privacy) -// ingested into Cloud SCC for presentation, notification, analysis, -// policy testing, and enforcement. For example, an XSS vulnerability in an -// App Engine application is a finding. +// A finding is a record of assessment data like security, risk, health, or +// privacy, that is ingested into Cloud SCC for presentation, notification, +// analysis, policy testing, and enforcement. For example, a +// cross-site scripting (XSS) vulnerability in an App Engine application is a +// finding. message Finding { + option (google.api.resource) = { + type: "securitycenter.googleapis.com/Finding" + pattern: "organizations/{organization}/sources/{source}/findings/{finding}" + }; + // The state of the finding. enum State { // Unspecified state. @@ -52,19 +60,21 @@ message Finding { // The relative resource name of this finding. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Example: - // "organizations/123/sources/456/findings/789" + // "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}" string name = 1; // The relative resource name of the source the finding belongs to. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // This field is immutable after creation time. // For example: - // "organizations/123/sources/456" + // "organizations/{organization_id}/sources/{source_id}" string parent = 2; - // The full resource name of the Google Cloud Platform (GCP) resource this - // finding is for. See: + // For findings on Google Cloud Platform (GCP) resources, the full resource + // name of the GCP resource this finding is for. See: // https://cloud.google.com/apis/design/resource_names#full_resource_name + // When the finding is for a non-GCP resource, the resourceName can be a + // customer or partner defined string. // This field is immutable after creation time. string resource_name = 3; @@ -90,11 +100,11 @@ message Finding { // Output only. User specified security marks. These marks are entirely // managed by the user and come from the SecurityMarks resource that belongs // to the finding. - SecurityMarks security_marks = 8; + SecurityMarks security_marks = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // The time at which the event took place. For example, if the finding - // represents an open firewall it would capture the time the open firewall was - // detected. + // represents an open firewall it would capture the time the detector believes + // the firewall became open. The accuracy is determined by the detector. google.protobuf.Timestamp event_time = 9; // The time at which the finding was created in Cloud SCC. diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/organization_settings.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/organization_settings.proto index e975e566cba..db2097048c5 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/organization_settings.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/organization_settings.proto @@ -18,6 +18,7 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/resource.proto"; option csharp_namespace = "Google.Cloud.SecurityCenter.V1"; option go_package = "google.golang.org/genproto/googleapis/cloud/securitycenter/v1;securitycenter"; @@ -29,6 +30,11 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // User specified settings that are attached to the Cloud Security Command // Center (Cloud SCC) organization. message OrganizationSettings { + option (google.api.resource) = { + type: "securitycenter.googleapis.com/OrganizationSettings" + pattern: "organizations/{organization}/organizationSettings" + }; + // The configuration used for Asset Discovery runs. message AssetDiscoveryConfig { // The mode of inclusion when running Asset Discovery. @@ -63,7 +69,7 @@ message OrganizationSettings { // The relative resource name of the settings. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Example: - // "organizations/123/organizationSettings". + // "organizations/{organization_id}/organizationSettings". string name = 1; // A flag that indicates if Asset Discovery should be enabled. If the flag is @@ -74,6 +80,4 @@ message OrganizationSettings { // The configuration used for Asset Discovery runs. AssetDiscoveryConfig asset_discovery_config = 3; - - reserved 4, 5; } diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/run_asset_discovery_response.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/run_asset_discovery_response.proto index 1cbba38e713..93fb58b1172 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/run_asset_discovery_response.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/run_asset_discovery_response.proto @@ -17,9 +17,8 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; import "google/api/annotations.proto"; +import "google/protobuf/duration.proto"; option csharp_namespace = "Google.Cloud.SecurityCenter.V1"; option go_package = "google.golang.org/genproto/googleapis/cloud/securitycenter/v1;securitycenter"; diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/security_marks.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/security_marks.proto index 97b3f93775b..b3ad429811a 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/security_marks.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/security_marks.proto @@ -18,6 +18,7 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/resource.proto"; option csharp_namespace = "Google.Cloud.SecurityCenter.V1"; option go_package = "google.golang.org/genproto/googleapis/cloud/securitycenter/v1;securitycenter"; @@ -31,19 +32,26 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // SCC organization -- they can be modified and viewed by all users who have // proper permissions on the organization. message SecurityMarks { + option (google.api.resource) = { + type: "securitycenter.googleapis.com/SecurityMarks" + pattern: "organizations/{organization}/assets/{asset}/securityMarks" + pattern: "organizations/{organization}/sources/{source}/findings/{finding}/securityMarks" + }; + // The relative resource name of the SecurityMarks. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Examples: - // "organizations/123/assets/456/securityMarks" - // "organizations/123/sources/456/findings/789/securityMarks". + // "organizations/{organization_id}/assets/{asset_id}/securityMarks" + // "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks". string name = 1; // Mutable user specified security marks belonging to the parent resource. // Constraints are as follows: - // - Keys and values are treated as case insensitive - // - Keys must be between 1 - 256 characters (inclusive) - // - Keys must be letters, numbers, underscores, or dashes - // - Values have leading and trailing whitespace trimmed, remaining + // + // * Keys and values are treated as case insensitive + // * Keys must be between 1 - 256 characters (inclusive) + // * Keys must be letters, numbers, underscores, or dashes + // * Values have leading and trailing whitespace trimmed, remaining // characters must be between 1 - 4096 characters (inclusive) map marks = 2; } diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/securitycenter_service.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/securitycenter_service.proto index 0687928f3ba..811fca5d653 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/securitycenter_service.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/securitycenter_service.proto @@ -18,6 +18,9 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; import "google/cloud/securitycenter/v1/asset.proto"; import "google/cloud/securitycenter/v1/finding.proto"; import "google/cloud/securitycenter/v1/organization_settings.proto"; @@ -42,12 +45,16 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // V1 APIs for Security Center service. service SecurityCenter { + option (google.api.default_host) = "securitycenter.googleapis.com"; + option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + // Creates a source. rpc CreateSource(CreateSourceRequest) returns (Source) { option (google.api.http) = { post: "/v1/{parent=organizations/*}/sources" body: "source" }; + option (google.api.method_signature) = "parent,source"; } // Creates a finding. The corresponding source must exist for finding creation @@ -57,23 +64,24 @@ service SecurityCenter { post: "/v1/{parent=organizations/*/sources/*}/findings" body: "finding" }; + option (google.api.method_signature) = "parent,finding_id,finding"; } // Gets the access control policy on the specified Source. - rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) - returns (google.iam.v1.Policy) { + rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) { option (google.api.http) = { post: "/v1/{resource=organizations/*/sources/*}:getIamPolicy" body: "*" }; + option (google.api.method_signature) = "resource"; } // Gets the settings for an organization. - rpc GetOrganizationSettings(GetOrganizationSettingsRequest) - returns (OrganizationSettings) { + rpc GetOrganizationSettings(GetOrganizationSettingsRequest) returns (OrganizationSettings) { option (google.api.http) = { get: "/v1/{name=organizations/*/organizationSettings}" }; + option (google.api.method_signature) = "name"; } // Gets a source. @@ -81,6 +89,7 @@ service SecurityCenter { option (google.api.http) = { get: "/v1/{name=organizations/*/sources/*}" }; + option (google.api.method_signature) = "name"; } // Filters an organization's assets and groups them by their specified @@ -96,12 +105,13 @@ service SecurityCenter { // specified properties. // // To group across all sources provide a `-` as the source id. - // Example: /v1/organizations/123/sources/-/findings + // Example: /v1/organizations/{organization_id}/sources/-/findings rpc GroupFindings(GroupFindingsRequest) returns (GroupFindingsResponse) { option (google.api.http) = { post: "/v1/{parent=organizations/*/sources/*}/findings:group" body: "*" }; + option (google.api.method_signature) = "parent,group_by"; } // Lists an organization's assets. @@ -114,7 +124,7 @@ service SecurityCenter { // Lists an organization or source's findings. // // To list across all sources provide a `-` as the source id. - // Example: /v1/organizations/123/sources/-/findings + // Example: /v1/organizations/{organization_id}/sources/-/findings rpc ListFindings(ListFindingsRequest) returns (ListFindingsResponse) { option (google.api.http) = { get: "/v1/{parent=organizations/*/sources/*}/findings" @@ -126,6 +136,7 @@ service SecurityCenter { option (google.api.http) = { get: "/v1/{parent=organizations/*}/sources" }; + option (google.api.method_signature) = "parent"; } // Runs asset discovery. The discovery is tracked with a long-running @@ -134,12 +145,16 @@ service SecurityCenter { // This API can only be called with limited frequency for an organization. If // it is called too frequently the caller will receive a TOO_MANY_REQUESTS // error. - rpc RunAssetDiscovery(RunAssetDiscoveryRequest) - returns (google.longrunning.Operation) { + rpc RunAssetDiscovery(RunAssetDiscoveryRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=organizations/*}/assets:runDiscovery" body: "*" }; + option (google.api.method_signature) = "parent"; + option (google.longrunning.operation_info) = { + response_type: "google.cloud.securitycenter.v1.RunAssetDiscoveryResponse" + metadata_type: "google.protobuf.Empty" + }; } // Updates the state of a finding. @@ -148,24 +163,25 @@ service SecurityCenter { post: "/v1/{name=organizations/*/sources/*/findings/*}:setState" body: "*" }; + option (google.api.method_signature) = "name,state,start_time"; } // Sets the access control policy on the specified Source. - rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) - returns (google.iam.v1.Policy) { + rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) { option (google.api.http) = { post: "/v1/{resource=organizations/*/sources/*}:setIamPolicy" body: "*" }; + option (google.api.method_signature) = "resource,policy"; } // Returns the permissions that a caller has on the specified source. - rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) - returns (google.iam.v1.TestIamPermissionsResponse) { + rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) { option (google.api.http) = { post: "/v1/{resource=organizations/*/sources/*}:testIamPermissions" body: "*" }; + option (google.api.method_signature) = "resource,permissions"; } // Creates or updates a finding. The corresponding source must exist for a @@ -175,15 +191,16 @@ service SecurityCenter { patch: "/v1/{finding.name=organizations/*/sources/*/findings/*}" body: "finding" }; + option (google.api.method_signature) = "finding"; } // Updates an organization's settings. - rpc UpdateOrganizationSettings(UpdateOrganizationSettingsRequest) - returns (OrganizationSettings) { + rpc UpdateOrganizationSettings(UpdateOrganizationSettingsRequest) returns (OrganizationSettings) { option (google.api.http) = { patch: "/v1/{organization_settings.name=organizations/*/organizationSettings}" body: "organization_settings" }; + option (google.api.method_signature) = "organization_settings"; } // Updates a source. @@ -192,6 +209,7 @@ service SecurityCenter { patch: "/v1/{source.name=organizations/*/sources/*}" body: "source" }; + option (google.api.method_signature) = "source"; } // Updates security marks. @@ -204,55 +222,81 @@ service SecurityCenter { body: "security_marks" } }; + option (google.api.method_signature) = "security_marks"; } } // Request message for creating a finding. message CreateFindingRequest { - // Resource name of the new finding's parent. Its format should be + // Required. Resource name of the new finding's parent. Its format should be // "organizations/[organization_id]/sources/[source_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/Source" + } + ]; - // Unique identifier provided by the client within the parent scope. + // Required. Unique identifier provided by the client within the parent scope. // It must be alphanumeric and less than or equal to 32 characters and // greater than 0 characters in length. - string finding_id = 2; + string finding_id = 2 [(google.api.field_behavior) = REQUIRED]; - // The Finding being created. The name and security_marks will be ignored as + // Required. The Finding being created. The name and security_marks will be ignored as // they are both output only fields on this resource. - Finding finding = 3; + Finding finding = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for creating a source. message CreateSourceRequest { - // Resource name of the new source's parent. Its format should be + // Required. Resource name of the new source's parent. Its format should be // "organizations/[organization_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Organization" + } + ]; - // The Source being created, only the display_name and description will be + // Required. The Source being created, only the display_name and description will be // used. All other fields will be ignored. - Source source = 2; + Source source = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for getting organization settings. message GetOrganizationSettingsRequest { - // Name of the organization to get organization settings for. Its format is + // Required. Name of the organization to get organization settings for. Its format is // "organizations/[organization_id]/organizationSettings". - string name = 1; + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/OrganizationSettings" + } + ]; } // Request message for getting a source. message GetSourceRequest { - // Relative resource name of the source. Its format is + // Required. Relative resource name of the source. Its format is // "organizations/[organization_id]/source/[source_id]". - string name = 1; + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/Source" + } + ]; } // Request message for grouping by assets. message GroupAssetsRequest { - // Name of the organization to groupBy. Its format is + // Required. Name of the organization to groupBy. Its format is // "organizations/[organization_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Organization" + } + ]; // Expression that defines the filter to apply across assets. // The expression is a list of zero or more restrictions combined via logical @@ -281,34 +325,35 @@ message GroupAssetsRequest { // * boolean literals `true` and `false` without quotes. // // The following field and operator combinations are supported: - // name | '=' - // update_time | '=', '>', '<', '>=', '<=' + // + // * name: `=` + // * update_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "update_time = \"2019-06-10T16:07:18-07:00\"" // "update_time = 1560208038000" // - // create_time | '=', '>', '<', '>=', '<=' + // * create_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "create_time = \"2019-06-10T16:07:18-07:00\"" // "create_time = 1560208038000" // - // iam_policy.policy_blob | '=', ':' - // resource_properties | '=', ':', '>', '<', '>=', '<=' - // security_marks | '=', ':' - // security_center_properties.resource_name | '=', ':' - // security_center_properties.resource_type | '=', ':' - // security_center_properties.resource_parent | '=', ':' - // security_center_properties.resource_project | '=', ':' - // security_center_properties.resource_owners | '=', ':' + // * iam_policy.policy_blob: `=`, `:` + // * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + // * security_marks.marks: `=`, `:` + // * security_center_properties.resource_name: `=`, `:` + // * security_center_properties.resource_type: `=`, `:` + // * security_center_properties.resource_parent: `=`, `:` + // * security_center_properties.resource_project: `=`, `:` + // * security_center_properties.resource_owners: `=`, `:` // // For example, `resource_properties.size = 100` is a valid filter string. string filter = 2; - // Expression that defines what assets fields to use for grouping. The string + // Required. Expression that defines what assets fields to use for grouping. The string // value should follow SQL syntax: comma separated list of fields. For // example: // "security_center_properties.resource_project,security_center_properties.project". @@ -322,7 +367,7 @@ message GroupAssetsRequest { // The following fields are supported when compare_duration is set: // // * security_center_properties.resource_type - string group_by = 3; + string group_by = 3 [(google.api.field_behavior) = REQUIRED]; // When compare_duration is set, the GroupResult's "state_change" property is // updated to indicate whether the asset was added, removed, or remained @@ -367,8 +412,6 @@ message GroupAssetsRequest { // The maximum number of results to return in a single response. Default is // 10, minimum is 1, maximum is 1000. int32 page_size = 8; - - reserved 6; } // Response message for grouping by assets. @@ -391,11 +434,16 @@ message GroupAssetsResponse { // Request message for grouping by findings. message GroupFindingsRequest { - // Name of the source to groupBy. Its format is + // Required. Name of the source to groupBy. Its format is // "organizations/[organization_id]/sources/[source_id]". To groupBy across // all sources provide a source_id of `-`. For example: - // organizations/123/sources/- - string parent = 1; + // organizations/{organization_id}/sources/- + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/Source" + } + ]; // Expression that defines the filter to apply across findings. // The expression is a list of one or more restrictions combined via logical @@ -422,26 +470,27 @@ message GroupFindingsRequest { // * boolean literals `true` and `false` without quotes. // // The following field and operator combinations are supported: - // name | `=` - // parent | '=', ':' - // resource_name | '=', ':' - // state | '=', ':' - // category | '=', ':' - // external_uri | '=', ':' - // event_time | `=`, `>`, `<`, `>=`, `<=` + // + // * name: `=` + // * parent: `=`, `:` + // * resource_name: `=`, `:` + // * state: `=`, `:` + // * category: `=`, `:` + // * external_uri: `=`, `:` + // * event_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "event_time = \"2019-06-10T16:07:18-07:00\"" // "event_time = 1560208038000" // - // security_marks | '=', ':' - // source_properties | '=', ':', `>`, `<`, `>=`, `<=` + // * security_marks.marks: `=`, `:` + // * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` // // For example, `source_properties.size = 100` is a valid filter string. string filter = 2; - // Expression that defines what assets fields to use for grouping (including + // Required. Expression that defines what assets fields to use for grouping (including // `state_change`). The string value should follow SQL syntax: comma separated // list of fields. For example: "parent,resource_name". // @@ -455,7 +504,7 @@ message GroupFindingsRequest { // The following fields are supported when compare_duration is set: // // * state_change - string group_by = 3; + string group_by = 3 [(google.api.field_behavior) = REQUIRED]; // Time used as a reference point when filtering findings. The filter is // limited to findings existing at the supplied time and their values are @@ -499,8 +548,6 @@ message GroupFindingsRequest { // The maximum number of results to return in a single response. Default is // 10, minimum is 1, maximum is 1000. int32 page_size = 8; - - reserved 6; } // Response message for group by findings. @@ -532,9 +579,14 @@ message GroupResult { // Request message for listing sources. message ListSourcesRequest { - // Resource name of the parent of sources to list. Its format should be + // Required. Resource name of the parent of sources to list. Its format should be // "organizations/[organization_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Organization" + } + ]; // The value returned by the last `ListSourcesResponse`; indicates // that this is a continuation of a prior `ListSources` call, and @@ -558,9 +610,14 @@ message ListSourcesResponse { // Request message for listing assets. message ListAssetsRequest { - // Name of the organization assets should belong to. Its format is + // Required. Name of the organization assets should belong to. Its format is // "organizations/[organization_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Organization" + } + ]; // Expression that defines the filter to apply across assets. // The expression is a list of zero or more restrictions combined via logical @@ -589,29 +646,30 @@ message ListAssetsRequest { // * boolean literals `true` and `false` without quotes. // // The following are the allowed field and operator combinations: - // name | `=` - // update_time | `=`, `>`, `<`, `>=`, `<=` + // + // * name: `=` + // * update_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "update_time = \"2019-06-10T16:07:18-07:00\"" // "update_time = 1560208038000" // - // create_time | `=`, `>`, `<`, `>=`, `<=` + // * create_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "create_time = \"2019-06-10T16:07:18-07:00\"" // "create_time = 1560208038000" // - // iam_policy.policy_blob | '=', ':' - // resource_properties | '=', ':', `>`, `<`, `>=`, `<=` - // security_marks | '=', ':' - // security_center_properties.resource_name | '=', ':' - // security_center_properties.resource_type | '=', ':' - // security_center_properties.resource_parent | '=', ':' - // security_center_properties.resource_project | '=', ':' - // security_center_properties.resource_owners | '=', ':' + // * iam_policy.policy_blob: `=`, `:` + // * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + // * security_marks.marks: `=`, `:` + // * security_center_properties.resource_name: `=`, `:` + // * security_center_properties.resource_type: `=`, `:` + // * security_center_properties.resource_parent: `=`, `:` + // * security_center_properties.resource_project: `=`, `:` + // * security_center_properties.resource_owners: `=`, `:` // // For example, `resource_properties.size = 100` is a valid filter string. string filter = 2; @@ -629,7 +687,7 @@ message ListAssetsRequest { // name // update_time // resource_properties - // security_marks + // security_marks.marks // security_center_properties.resource_name // security_center_properties.resource_parent // security_center_properties.resource_project @@ -668,12 +726,10 @@ message ListAssetsRequest { // read_time. google.protobuf.Duration compare_duration = 5; - // Optional. - // - // A field mask to specify the ListAssetsResult fields to be listed in the + // Optional. A field mask to specify the ListAssetsResult fields to be listed in the // response. // An empty field mask will list all fields. - google.protobuf.FieldMask field_mask = 7; + google.protobuf.FieldMask field_mask = 7 [(google.api.field_behavior) = OPTIONAL]; // The value returned by the last `ListAssetsResponse`; indicates // that this is a continuation of a prior `ListAssets` call, and @@ -683,8 +739,6 @@ message ListAssetsRequest { // The maximum number of results to return in a single response. Default is // 10, minimum is 1, maximum is 1000. int32 page_size = 9; - - reserved 6; } // Response message for listing assets. @@ -734,11 +788,16 @@ message ListAssetsResponse { // Request message for listing findings. message ListFindingsRequest { - // Name of the source the findings belong to. Its format is + // Required. Name of the source the findings belong to. Its format is // "organizations/[organization_id]/sources/[source_id]". To list across all // sources provide a source_id of `-`. For example: - // organizations/123/sources/- - string parent = 1; + // organizations/{organization_id}/sources/- + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/Source" + } + ]; // Expression that defines the filter to apply across findings. // The expression is a list of one or more restrictions combined via logical @@ -765,21 +824,22 @@ message ListFindingsRequest { // * boolean literals `true` and `false` without quotes. // // The following field and operator combinations are supported: - // name | `=` - // parent | '=', ':' - // resource_name | '=', ':' - // state | '=', ':' - // category | '=', ':' - // external_uri | '=', ':' - // event_time | `=`, `>`, `<`, `>=`, `<=` + // + // name: `=` + // parent: `=`, `:` + // resource_name: `=`, `:` + // state: `=`, `:` + // category: `=`, `:` + // external_uri: `=`, `:` + // event_time: `=`, `>`, `<`, `>=`, `<=` // // Usage: This should be milliseconds since epoch or an RFC3339 string. // Examples: // "event_time = \"2019-06-10T16:07:18-07:00\"" // "event_time = 1560208038000" // - // security_marks | '=', ':' - // source_properties | '=', ':', `>`, `<`, `>=`, `<=` + // security_marks.marks: `=`, `:` + // source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` // // For example, `source_properties.size = 100` is a valid filter string. string filter = 2; @@ -801,7 +861,7 @@ message ListFindingsRequest { // resource_name // event_time // source_properties - // security_marks + // security_marks.marks string order_by = 3; // Time used as a reference point when filtering findings. The filter is @@ -836,11 +896,9 @@ message ListFindingsRequest { // read_time. google.protobuf.Duration compare_duration = 5; - // Optional. - // - // A field mask to specify the Finding fields to be listed in the response. + // Optional. A field mask to specify the Finding fields to be listed in the response. // An empty field mask will list all fields. - google.protobuf.FieldMask field_mask = 7; + google.protobuf.FieldMask field_mask = 7 [(google.api.field_behavior) = OPTIONAL]; // The value returned by the last `ListFindingsResponse`; indicates // that this is a continuation of a prior `ListFindings` call, and @@ -850,8 +908,6 @@ message ListFindingsRequest { // The maximum number of results to return in a single response. Default is // 10, minimum is 1, maximum is 1000. int32 page_size = 9; - - reserved 6; } // Response message for listing findings. @@ -909,35 +965,45 @@ message ListFindingsResponse { // Request message for updating a finding's state. message SetFindingStateRequest { - // The relative resource name of the finding. See: + // Required. The relative resource name of the finding. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Example: - // "organizations/123/sources/456/finding/789". - string name = 1; + // "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "securitycenter.googleapis.com/Finding" + } + ]; - // The desired State of the finding. - Finding.State state = 2; + // Required. The desired State of the finding. + Finding.State state = 2 [(google.api.field_behavior) = REQUIRED]; - // The time at which the updated state takes effect. - google.protobuf.Timestamp start_time = 3; + // Required. The time at which the updated state takes effect. + google.protobuf.Timestamp start_time = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for running asset discovery for an organization. message RunAssetDiscoveryRequest { - // Name of the organization to run asset discovery for. Its format is + // Required. Name of the organization to run asset discovery for. Its format is // "organizations/[organization_id]". - string parent = 1; + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "cloudresourcemanager.googleapis.com/Organization" + } + ]; } // Request message for updating or creating a finding. message UpdateFindingRequest { - // The finding resource to update or create if it does not already exist. + // Required. The finding resource to update or create if it does not already exist. // parent, security_marks, and update_time will be ignored. // // In the case of creation, the finding id portion of the name must be // alphanumeric and less than or equal to 32 characters and greater than 0 // characters in length. - Finding finding = 1; + Finding finding = 1 [(google.api.field_behavior) = REQUIRED]; // The FieldMask to use when updating the finding resource. This field should // not be specified when creating a finding. @@ -951,8 +1017,8 @@ message UpdateFindingRequest { // Request message for updating an organization's settings. message UpdateOrganizationSettingsRequest { - // The organization settings resource to update. - OrganizationSettings organization_settings = 1; + // Required. The organization settings resource to update. + OrganizationSettings organization_settings = 1 [(google.api.field_behavior) = REQUIRED]; // The FieldMask to use when updating the settings resource. // @@ -962,8 +1028,8 @@ message UpdateOrganizationSettingsRequest { // Request message for updating a source. message UpdateSourceRequest { - // The source resource to update. - Source source = 1; + // Required. The source resource to update. + Source source = 1 [(google.api.field_behavior) = REQUIRED]; // The FieldMask to use when updating the source resource. // @@ -973,8 +1039,8 @@ message UpdateSourceRequest { // Request message for updating a SecurityMarks resource. message UpdateSecurityMarksRequest { - // The security marks resource to update. - SecurityMarks security_marks = 1; + // Required. The security marks resource to update. + SecurityMarks security_marks = 1 [(google.api.field_behavior) = REQUIRED]; // The FieldMask to use when updating the security marks resource. // diff --git a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/source.proto b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/source.proto index 26b0d5a64d1..4ceff737fc6 100644 --- a/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/source.proto +++ b/packages/google-cloud-securitycenter/protos/google/cloud/securitycenter/v1/source.proto @@ -18,6 +18,7 @@ syntax = "proto3"; package google.cloud.securitycenter.v1; import "google/api/annotations.proto"; +import "google/api/resource.proto"; option csharp_namespace = "Google.Cloud.SecurityCenter.V1"; option go_package = "google.golang.org/genproto/googleapis/cloud/securitycenter/v1;securitycenter"; @@ -28,31 +29,33 @@ option ruby_package = "Google::Cloud::SecurityCenter::V1"; // Cloud Security Command Center's (Cloud SCC) finding source. A finding source // is an entity or a mechanism that can produce a finding. A source is like a -// container of findings that come from the same scanner, logger, monitor, etc. +// container of findings that come from the same scanner, logger, monitor, and +// other tools. message Source { + option (google.api.resource) = { + type: "securitycenter.googleapis.com/Source" + pattern: "organizations/{organization}/sources/{source}" + }; + // The relative resource name of this source. See: // https://cloud.google.com/apis/design/resource_names#relative_resource_name // Example: - // "organizations/123/sources/456" + // "organizations/{organization_id}/sources/{source_id}" string name = 1; - // The source’s display name. - // A source’s display name must be unique amongst its siblings, for example, + // The source's display name. + // A source's display name must be unique amongst its siblings, for example, // two sources with the same parent can't share the same display name. - // The display name must start and end with a letter or digit, may contain - // letters, digits, spaces, hyphens, and underscores, and can be no longer - // than 32 characters. This is captured by the regular expression: - // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,30}[\p{L}\p{N}])?. + // The display name must have a length between 1 and 64 characters + // (inclusive). string display_name = 2; // The description of the source (max of 1024 characters). // Example: - // "Cloud Security Scanner is a web security scanner for common + // "Web Security Scanner is a web security scanner for common // vulnerabilities in App Engine applications. It can automatically // scan and detect four common vulnerabilities, including cross-site-scripting // (XSS), Flash injection, mixed content (HTTP in HTTPS), and - // outdated/insecure libraries." + // outdated or insecure libraries." string description = 3; - - reserved 4; } diff --git a/packages/google-cloud-securitycenter/protos/protos.json b/packages/google-cloud-securitycenter/protos/protos.json index bb0f91ca4c4..99c331d5af8 100644 --- a/packages/google-cloud-securitycenter/protos/protos.json +++ b/packages/google-cloud-securitycenter/protos/protos.json @@ -17,13 +17,18 @@ }, "nested": { "SecurityCenter": { + "options": { + "(google.api.default_host)": "securitycenter.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform" + }, "methods": { "CreateSource": { "requestType": "CreateSourceRequest", "responseType": "Source", "options": { "(google.api.http).post": "/v1/{parent=organizations/*}/sources", - "(google.api.http).body": "source" + "(google.api.http).body": "source", + "(google.api.method_signature)": "parent,source" } }, "CreateFinding": { @@ -31,7 +36,8 @@ "responseType": "Finding", "options": { "(google.api.http).post": "/v1/{parent=organizations/*/sources/*}/findings", - "(google.api.http).body": "finding" + "(google.api.http).body": "finding", + "(google.api.method_signature)": "parent,finding_id,finding" } }, "GetIamPolicy": { @@ -39,21 +45,24 @@ "responseType": "google.iam.v1.Policy", "options": { "(google.api.http).post": "/v1/{resource=organizations/*/sources/*}:getIamPolicy", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "resource" } }, "GetOrganizationSettings": { "requestType": "GetOrganizationSettingsRequest", "responseType": "OrganizationSettings", "options": { - "(google.api.http).get": "/v1/{name=organizations/*/organizationSettings}" + "(google.api.http).get": "/v1/{name=organizations/*/organizationSettings}", + "(google.api.method_signature)": "name" } }, "GetSource": { "requestType": "GetSourceRequest", "responseType": "Source", "options": { - "(google.api.http).get": "/v1/{name=organizations/*/sources/*}" + "(google.api.http).get": "/v1/{name=organizations/*/sources/*}", + "(google.api.method_signature)": "name" } }, "GroupAssets": { @@ -69,7 +78,8 @@ "responseType": "GroupFindingsResponse", "options": { "(google.api.http).post": "/v1/{parent=organizations/*/sources/*}/findings:group", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "parent,group_by" } }, "ListAssets": { @@ -90,7 +100,8 @@ "requestType": "ListSourcesRequest", "responseType": "ListSourcesResponse", "options": { - "(google.api.http).get": "/v1/{parent=organizations/*}/sources" + "(google.api.http).get": "/v1/{parent=organizations/*}/sources", + "(google.api.method_signature)": "parent" } }, "RunAssetDiscovery": { @@ -98,7 +109,10 @@ "responseType": "google.longrunning.Operation", "options": { "(google.api.http).post": "/v1/{parent=organizations/*}/assets:runDiscovery", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "parent", + "(google.longrunning.operation_info).response_type": "google.cloud.securitycenter.v1.RunAssetDiscoveryResponse", + "(google.longrunning.operation_info).metadata_type": "google.protobuf.Empty" } }, "SetFindingState": { @@ -106,7 +120,8 @@ "responseType": "Finding", "options": { "(google.api.http).post": "/v1/{name=organizations/*/sources/*/findings/*}:setState", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "name,state,start_time" } }, "SetIamPolicy": { @@ -114,7 +129,8 @@ "responseType": "google.iam.v1.Policy", "options": { "(google.api.http).post": "/v1/{resource=organizations/*/sources/*}:setIamPolicy", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "resource,policy" } }, "TestIamPermissions": { @@ -122,7 +138,8 @@ "responseType": "google.iam.v1.TestIamPermissionsResponse", "options": { "(google.api.http).post": "/v1/{resource=organizations/*/sources/*}:testIamPermissions", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "resource,permissions" } }, "UpdateFinding": { @@ -130,7 +147,8 @@ "responseType": "Finding", "options": { "(google.api.http).patch": "/v1/{finding.name=organizations/*/sources/*/findings/*}", - "(google.api.http).body": "finding" + "(google.api.http).body": "finding", + "(google.api.method_signature)": "finding" } }, "UpdateOrganizationSettings": { @@ -138,7 +156,8 @@ "responseType": "OrganizationSettings", "options": { "(google.api.http).patch": "/v1/{organization_settings.name=organizations/*/organizationSettings}", - "(google.api.http).body": "organization_settings" + "(google.api.http).body": "organization_settings", + "(google.api.method_signature)": "organization_settings" } }, "UpdateSource": { @@ -146,7 +165,8 @@ "responseType": "Source", "options": { "(google.api.http).patch": "/v1/{source.name=organizations/*/sources/*}", - "(google.api.http).body": "source" + "(google.api.http).body": "source", + "(google.api.method_signature)": "source" } }, "UpdateSecurityMarks": { @@ -156,7 +176,8 @@ "(google.api.http).patch": "/v1/{security_marks.name=organizations/*/assets/*/securityMarks}", "(google.api.http).body": "security_marks", "(google.api.http).additional_bindings.patch": "/v1/{security_marks.name=organizations/*/sources/*/findings/*/securityMarks}", - "(google.api.http).additional_bindings.body": "security_marks" + "(google.api.http).additional_bindings.body": "security_marks", + "(google.api.method_signature)": "security_marks" } } } @@ -165,15 +186,25 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/Source" + } }, "findingId": { "type": "string", - "id": 2 + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "finding": { "type": "Finding", - "id": 3 + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -181,11 +212,18 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Organization" + } }, "source": { "type": "Source", - "id": 2 + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -193,7 +231,11 @@ "fields": { "name": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/OrganizationSettings" + } } } }, @@ -201,7 +243,11 @@ "fields": { "name": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/Source" + } } } }, @@ -209,7 +255,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Organization" + } }, "filter": { "type": "string", @@ -217,7 +267,10 @@ }, "groupBy": { "type": "string", - "id": 3 + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "compareDuration": { "type": "google.protobuf.Duration", @@ -235,13 +288,7 @@ "type": "int32", "id": 8 } - }, - "reserved": [ - [ - 6, - 6 - ] - ] + } }, "GroupAssetsResponse": { "fields": { @@ -268,7 +315,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/Source" + } }, "filter": { "type": "string", @@ -276,7 +327,10 @@ }, "groupBy": { "type": "string", - "id": 3 + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "readTime": { "type": "google.protobuf.Timestamp", @@ -294,13 +348,7 @@ "type": "int32", "id": 8 } - }, - "reserved": [ - [ - 6, - 6 - ] - ] + } }, "GroupFindingsResponse": { "fields": { @@ -340,7 +388,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Organization" + } }, "pageToken": { "type": "string", @@ -369,7 +421,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Organization" + } }, "filter": { "type": "string", @@ -389,7 +445,10 @@ }, "fieldMask": { "type": "google.protobuf.FieldMask", - "id": 7 + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } }, "pageToken": { "type": "string", @@ -399,13 +458,7 @@ "type": "int32", "id": 9 } - }, - "reserved": [ - [ - 6, - 6 - ] - ] + } }, "ListAssetsResponse": { "fields": { @@ -456,7 +509,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/Source" + } }, "filter": { "type": "string", @@ -476,7 +533,10 @@ }, "fieldMask": { "type": "google.protobuf.FieldMask", - "id": 7 + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } }, "pageToken": { "type": "string", @@ -486,13 +546,7 @@ "type": "int32", "id": 9 } - }, - "reserved": [ - [ - 6, - 6 - ] - ] + } }, "ListFindingsResponse": { "fields": { @@ -544,15 +598,25 @@ "fields": { "name": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "securitycenter.googleapis.com/Finding" + } }, "state": { "type": "Finding.State", - "id": 2 + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "startTime": { "type": "google.protobuf.Timestamp", - "id": 3 + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -560,7 +624,11 @@ "fields": { "parent": { "type": "string", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Organization" + } } } }, @@ -568,7 +636,10 @@ "fields": { "finding": { "type": "Finding", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "updateMask": { "type": "google.protobuf.FieldMask", @@ -580,7 +651,10 @@ "fields": { "organizationSettings": { "type": "OrganizationSettings", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "updateMask": { "type": "google.protobuf.FieldMask", @@ -592,7 +666,10 @@ "fields": { "source": { "type": "Source", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "updateMask": { "type": "google.protobuf.FieldMask", @@ -604,7 +681,10 @@ "fields": { "securityMarks": { "type": "SecurityMarks", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "updateMask": { "type": "google.protobuf.FieldMask", @@ -617,6 +697,10 @@ } }, "Asset": { + "options": { + "(google.api.resource).type": "securitycenter.googleapis.com/Asset", + "(google.api.resource).pattern": "organizations/{organization}/assets/{asset}" + }, "fields": { "name": { "type": "string", @@ -685,6 +769,10 @@ } }, "SecurityMarks": { + "options": { + "(google.api.resource).type": "securitycenter.googleapis.com/SecurityMarks", + "(google.api.resource).pattern": "organizations/{organization}/sources/{source}/findings/{finding}/securityMarks" + }, "fields": { "name": { "type": "string", @@ -698,6 +786,10 @@ } }, "Finding": { + "options": { + "(google.api.resource).type": "securitycenter.googleapis.com/Finding", + "(google.api.resource).pattern": "organizations/{organization}/sources/{source}/findings/{finding}" + }, "fields": { "name": { "type": "string", @@ -730,7 +822,10 @@ }, "securityMarks": { "type": "SecurityMarks", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } }, "eventTime": { "type": "google.protobuf.Timestamp", @@ -752,6 +847,10 @@ } }, "OrganizationSettings": { + "options": { + "(google.api.resource).type": "securitycenter.googleapis.com/OrganizationSettings", + "(google.api.resource).pattern": "organizations/{organization}/organizationSettings" + }, "fields": { "name": { "type": "string", @@ -766,16 +865,6 @@ "id": 3 } }, - "reserved": [ - [ - 4, - 4 - ], - [ - 5, - 5 - ] - ], "nested": { "AssetDiscoveryConfig": { "fields": { @@ -824,6 +913,10 @@ } }, "Source": { + "options": { + "(google.api.resource).type": "securitycenter.googleapis.com/Source", + "(google.api.resource).pattern": "organizations/{organization}/sources/{source}" + }, "fields": { "name": { "type": "string", @@ -837,13 +930,7 @@ "type": "string", "id": 3 } - }, - "reserved": [ - [ - 4, - 4 - ] - ] + } } } }, diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_asset.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_asset.js index db52a32f282..285508ee5da 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_asset.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_asset.js @@ -27,7 +27,7 @@ * The relative resource name of this asset. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/assets/456". + * "organizations/{organization_id}/assets/{asset_id}". * * @property {Object} securityCenterProperties * Cloud SCC managed properties. These properties are managed by diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_finding.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_finding.js index 4a275e7c35c..2e2170cd5e3 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_finding.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_finding.js @@ -18,28 +18,31 @@ /** * Cloud Security Command Center (Cloud SCC) finding. * - * A finding is a record of assessment data (security, risk, health or privacy) - * ingested into Cloud SCC for presentation, notification, analysis, - * policy testing, and enforcement. For example, an XSS vulnerability in an - * App Engine application is a finding. + * A finding is a record of assessment data like security, risk, health, or + * privacy, that is ingested into Cloud SCC for presentation, notification, + * analysis, policy testing, and enforcement. For example, a + * cross-site scripting (XSS) vulnerability in an App Engine application is a + * finding. * * @property {string} name * The relative resource name of this finding. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/sources/456/findings/789" + * "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}" * * @property {string} parent * The relative resource name of the source the finding belongs to. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * This field is immutable after creation time. * For example: - * "organizations/123/sources/456" + * "organizations/{organization_id}/sources/{source_id}" * * @property {string} resourceName - * The full resource name of the Google Cloud Platform (GCP) resource this - * finding is for. See: + * For findings on Google Cloud Platform (GCP) resources, the full resource + * name of the GCP resource this finding is for. See: * https://cloud.google.com/apis/design/resource_names#full_resource_name + * When the finding is for a non-GCP resource, the resourceName can be a + * customer or partner defined string. * This field is immutable after creation time. * * @property {number} state @@ -72,8 +75,8 @@ * * @property {Object} eventTime * The time at which the event took place. For example, if the finding - * represents an open firewall it would capture the time the open firewall was - * detected. + * represents an open firewall it would capture the time the detector believes + * the firewall became open. The accuracy is determined by the detector. * * This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp} * diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_organization_settings.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_organization_settings.js index 734d0306e4f..be8bd7e92dd 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_organization_settings.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_organization_settings.js @@ -23,7 +23,7 @@ * The relative resource name of the settings. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/organizationSettings". + * "organizations/{organization_id}/organizationSettings". * * @property {boolean} enableAssetDiscovery * A flag that indicates if Asset Discovery should be enabled. If the flag is diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_security_marks.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_security_marks.js index 30114cbe6b6..d0e39768ca5 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_security_marks.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_security_marks.js @@ -25,16 +25,17 @@ * The relative resource name of the SecurityMarks. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Examples: - * "organizations/123/assets/456/securityMarks" - * "organizations/123/sources/456/findings/789/securityMarks". + * "organizations/{organization_id}/assets/{asset_id}/securityMarks" + * "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks". * * @property {Object.} marks * Mutable user specified security marks belonging to the parent resource. * Constraints are as follows: - * - Keys and values are treated as case insensitive - * - Keys must be between 1 - 256 characters (inclusive) - * - Keys must be letters, numbers, underscores, or dashes - * - Values have leading and trailing whitespace trimmed, remaining + * + * * Keys and values are treated as case insensitive + * * Keys must be between 1 - 256 characters (inclusive) + * * Keys must be letters, numbers, underscores, or dashes + * * Values have leading and trailing whitespace trimmed, remaining * characters must be between 1 - 4096 characters (inclusive) * * @typedef SecurityMarks diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_securitycenter_service.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_securitycenter_service.js index 5e52ff07702..304ab23f148 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_securitycenter_service.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_securitycenter_service.js @@ -19,16 +19,16 @@ * Request message for creating a finding. * * @property {string} parent - * Resource name of the new finding's parent. Its format should be + * Required. Resource name of the new finding's parent. Its format should be * "organizations/[organization_id]/sources/[source_id]". * * @property {string} findingId - * Unique identifier provided by the client within the parent scope. + * Required. Unique identifier provided by the client within the parent scope. * It must be alphanumeric and less than or equal to 32 characters and * greater than 0 characters in length. * * @property {Object} finding - * The Finding being created. The name and security_marks will be ignored as + * Required. The Finding being created. The name and security_marks will be ignored as * they are both output only fields on this resource. * * This object should have the same structure as [Finding]{@link google.cloud.securitycenter.v1.Finding} @@ -45,11 +45,11 @@ const CreateFindingRequest = { * Request message for creating a source. * * @property {string} parent - * Resource name of the new source's parent. Its format should be + * Required. Resource name of the new source's parent. Its format should be * "organizations/[organization_id]". * * @property {Object} source - * The Source being created, only the display_name and description will be + * Required. The Source being created, only the display_name and description will be * used. All other fields will be ignored. * * This object should have the same structure as [Source]{@link google.cloud.securitycenter.v1.Source} @@ -66,7 +66,7 @@ const CreateSourceRequest = { * Request message for getting organization settings. * * @property {string} name - * Name of the organization to get organization settings for. Its format is + * Required. Name of the organization to get organization settings for. Its format is * "organizations/[organization_id]/organizationSettings". * * @typedef GetOrganizationSettingsRequest @@ -81,7 +81,7 @@ const GetOrganizationSettingsRequest = { * Request message for getting a source. * * @property {string} name - * Relative resource name of the source. Its format is + * Required. Relative resource name of the source. Its format is * "organizations/[organization_id]/source/[source_id]". * * @typedef GetSourceRequest @@ -96,7 +96,7 @@ const GetSourceRequest = { * Request message for grouping by assets. * * @property {string} parent - * Name of the organization to groupBy. Its format is + * Required. Name of the organization to groupBy. Its format is * "organizations/[organization_id]". * * @property {string} filter @@ -127,34 +127,35 @@ const GetSourceRequest = { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | '=' - * update_time | '=', '>', '<', '>=', '<=' + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | '=', '>', '<', '>=', '<=' + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', '>', '<', '>=', '<=' - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * * @property {string} groupBy - * Expression that defines what assets fields to use for grouping. The string + * Required. Expression that defines what assets fields to use for grouping. The string * value should follow SQL syntax: comma separated list of fields. For * example: * "security_center_properties.resource_project,security_center_properties.project". @@ -259,10 +260,10 @@ const GroupAssetsResponse = { * Request message for grouping by findings. * * @property {string} parent - * Name of the source to groupBy. Its format is + * Required. Name of the source to groupBy. Its format is * "organizations/[organization_id]/sources/[source_id]". To groupBy across * all sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * * @property {string} filter * Expression that defines the filter to apply across findings. @@ -290,26 +291,27 @@ const GroupAssetsResponse = { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * parent: `=`, `:` + * * resource_name: `=`, `:` + * * state: `=`, `:` + * * category: `=`, `:` + * * external_uri: `=`, `:` + * * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * * @property {string} groupBy - * Expression that defines what assets fields to use for grouping (including + * Required. Expression that defines what assets fields to use for grouping (including * `state_change`). The string value should follow SQL syntax: comma separated * list of fields. For example: "parent,resource_name". * @@ -430,7 +432,7 @@ const GroupResult = { * Request message for listing sources. * * @property {string} parent - * Resource name of the parent of sources to list. Its format should be + * Required. Resource name of the parent of sources to list. Its format should be * "organizations/[organization_id]". * * @property {string} pageToken @@ -474,7 +476,7 @@ const ListSourcesResponse = { * Request message for listing assets. * * @property {string} parent - * Name of the organization assets should belong to. Its format is + * Required. Name of the organization assets should belong to. Its format is * "organizations/[organization_id]". * * @property {string} filter @@ -505,29 +507,30 @@ const ListSourcesResponse = { * * boolean literals `true` and `false` without quotes. * * The following are the allowed field and operator combinations: - * name | `=` - * update_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | `=`, `>`, `<`, `>=`, `<=` + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', `>`, `<`, `>=`, `<=` - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * @@ -545,7 +548,7 @@ const ListSourcesResponse = { * name * update_time * resource_properties - * security_marks + * security_marks.marks * security_center_properties.resource_name * security_center_properties.resource_parent * security_center_properties.resource_project @@ -588,9 +591,7 @@ const ListSourcesResponse = { * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * * @property {Object} fieldMask - * Optional. - * - * A field mask to specify the ListAssetsResult fields to be listed in the + * Optional. A field mask to specify the ListAssetsResult fields to be listed in the * response. * An empty field mask will list all fields. * @@ -700,10 +701,10 @@ const ListAssetsResponse = { * Request message for listing findings. * * @property {string} parent - * Name of the source the findings belong to. Its format is + * Required. Name of the source the findings belong to. Its format is * "organizations/[organization_id]/sources/[source_id]". To list across all * sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * * @property {string} filter * Expression that defines the filter to apply across findings. @@ -731,21 +732,22 @@ const ListAssetsResponse = { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * name: `=` + * parent: `=`, `:` + * resource_name: `=`, `:` + * state: `=`, `:` + * category: `=`, `:` + * external_uri: `=`, `:` + * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * security_marks.marks: `=`, `:` + * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * @@ -767,7 +769,7 @@ const ListAssetsResponse = { * resource_name * event_time * source_properties - * security_marks + * security_marks.marks * * @property {Object} readTime * Time used as a reference point when filtering findings. The filter is @@ -806,9 +808,7 @@ const ListAssetsResponse = { * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * * @property {Object} fieldMask - * Optional. - * - * A field mask to specify the Finding fields to be listed in the response. + * Optional. A field mask to specify the Finding fields to be listed in the response. * An empty field mask will list all fields. * * This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask} @@ -927,18 +927,18 @@ const ListFindingsResponse = { * Request message for updating a finding's state. * * @property {string} name - * The relative resource name of the finding. See: + * Required. The relative resource name of the finding. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/sources/456/finding/789". + * "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". * * @property {number} state - * The desired State of the finding. + * Required. The desired State of the finding. * * The number should be among the values of [State]{@link google.cloud.securitycenter.v1.State} * * @property {Object} startTime - * The time at which the updated state takes effect. + * Required. The time at which the updated state takes effect. * * This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp} * @@ -954,7 +954,7 @@ const SetFindingStateRequest = { * Request message for running asset discovery for an organization. * * @property {string} parent - * Name of the organization to run asset discovery for. Its format is + * Required. Name of the organization to run asset discovery for. Its format is * "organizations/[organization_id]". * * @typedef RunAssetDiscoveryRequest @@ -969,7 +969,7 @@ const RunAssetDiscoveryRequest = { * Request message for updating or creating a finding. * * @property {Object} finding - * The finding resource to update or create if it does not already exist. + * Required. The finding resource to update or create if it does not already exist. * parent, security_marks, and update_time will be ignored. * * In the case of creation, the finding id portion of the name must be @@ -1001,7 +1001,7 @@ const UpdateFindingRequest = { * Request message for updating an organization's settings. * * @property {Object} organizationSettings - * The organization settings resource to update. + * Required. The organization settings resource to update. * * This object should have the same structure as [OrganizationSettings]{@link google.cloud.securitycenter.v1.OrganizationSettings} * @@ -1024,7 +1024,7 @@ const UpdateOrganizationSettingsRequest = { * Request message for updating a source. * * @property {Object} source - * The source resource to update. + * Required. The source resource to update. * * This object should have the same structure as [Source]{@link google.cloud.securitycenter.v1.Source} * @@ -1047,7 +1047,7 @@ const UpdateSourceRequest = { * Request message for updating a SecurityMarks resource. * * @property {Object} securityMarks - * The security marks resource to update. + * Required. The security marks resource to update. * * This object should have the same structure as [SecurityMarks]{@link google.cloud.securitycenter.v1.SecurityMarks} * diff --git a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_source.js b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_source.js index 98b8fc3568c..ba85e2bab35 100644 --- a/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_source.js +++ b/packages/google-cloud-securitycenter/src/v1/doc/google/cloud/securitycenter/v1/doc_source.js @@ -18,31 +18,30 @@ /** * Cloud Security Command Center's (Cloud SCC) finding source. A finding source * is an entity or a mechanism that can produce a finding. A source is like a - * container of findings that come from the same scanner, logger, monitor, etc. + * container of findings that come from the same scanner, logger, monitor, and + * other tools. * * @property {string} name * The relative resource name of this source. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/sources/456" + * "organizations/{organization_id}/sources/{source_id}" * * @property {string} displayName - * The source’s display name. - * A source’s display name must be unique amongst its siblings, for example, + * The source's display name. + * A source's display name must be unique amongst its siblings, for example, * two sources with the same parent can't share the same display name. - * The display name must start and end with a letter or digit, may contain - * letters, digits, spaces, hyphens, and underscores, and can be no longer - * than 32 characters. This is captured by the regular expression: - * `\[\p{L}\p{N}]({\p{L}\p{N}_- ]{0,30}[\p{L}\p{N}])?`. + * The display name must have a length between 1 and 64 characters + * (inclusive). * * @property {string} description * The description of the source (max of 1024 characters). * Example: - * "Cloud Security Scanner is a web security scanner for common + * "Web Security Scanner is a web security scanner for common * vulnerabilities in App Engine applications. It can automatically * scan and detect four common vulnerabilities, including cross-site-scripting * (XSS), Flash injection, mixed content (HTTP in HTTPS), and - * outdated/insecure libraries." + * outdated or insecure libraries." * * @typedef Source * @memberof google.cloud.securitycenter.v1 diff --git a/packages/google-cloud-securitycenter/src/v1/security_center_client.js b/packages/google-cloud-securitycenter/src/v1/security_center_client.js index a407069fc4c..a26bd809107 100644 --- a/packages/google-cloud-securitycenter/src/v1/security_center_client.js +++ b/packages/google-cloud-securitycenter/src/v1/security_center_client.js @@ -320,10 +320,10 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Resource name of the new source's parent. Its format should be + * Required. Resource name of the new source's parent. Its format should be * "organizations/[organization_id]". * @param {Object} request.source - * The Source being created, only the display_name and description will be + * Required. The Source being created, only the display_name and description will be * used. All other fields will be ignored. * * This object should have the same structure as [Source]{@link google.cloud.securitycenter.v1.Source} @@ -386,14 +386,14 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Resource name of the new finding's parent. Its format should be + * Required. Resource name of the new finding's parent. Its format should be * "organizations/[organization_id]/sources/[source_id]". * @param {string} request.findingId - * Unique identifier provided by the client within the parent scope. + * Required. Unique identifier provided by the client within the parent scope. * It must be alphanumeric and less than or equal to 32 characters and * greater than 0 characters in length. * @param {Object} request.finding - * The Finding being created. The name and security_marks will be ignored as + * Required. The Finding being created. The name and security_marks will be ignored as * they are both output only fields on this resource. * * This object should have the same structure as [Finding]{@link google.cloud.securitycenter.v1.Finding} @@ -517,7 +517,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.name - * Name of the organization to get organization settings for. Its format is + * Required. Name of the organization to get organization settings for. Its format is * "organizations/[organization_id]/organizationSettings". * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, @@ -576,7 +576,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.name - * Relative resource name of the source. Its format is + * Required. Relative resource name of the source. Its format is * "organizations/[organization_id]/source/[source_id]". * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, @@ -632,10 +632,10 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the organization to groupBy. Its format is + * Required. Name of the organization to groupBy. Its format is * "organizations/[organization_id]". * @param {string} request.groupBy - * Expression that defines what assets fields to use for grouping. The string + * Required. Expression that defines what assets fields to use for grouping. The string * value should follow SQL syntax: comma separated list of fields. For * example: * "security_center_properties.resource_project,security_center_properties.project". @@ -677,29 +677,30 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | '=' - * update_time | '=', '>', '<', '>=', '<=' + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | '=', '>', '<', '>=', '<=' + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', '>', '<', '>=', '<=' - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * @param {Object} [request.compareDuration] @@ -860,10 +861,10 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the organization to groupBy. Its format is + * Required. Name of the organization to groupBy. Its format is * "organizations/[organization_id]". * @param {string} request.groupBy - * Expression that defines what assets fields to use for grouping. The string + * Required. Expression that defines what assets fields to use for grouping. The string * value should follow SQL syntax: comma separated list of fields. For * example: * "security_center_properties.resource_project,security_center_properties.project". @@ -905,29 +906,30 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | '=' - * update_time | '=', '>', '<', '>=', '<=' + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | '=', '>', '<', '>=', '<=' + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', '>', '<', '>=', '<=' - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * @param {Object} [request.compareDuration] @@ -1015,17 +1017,17 @@ class SecurityCenterClient { * specified properties. * * To group across all sources provide a `-` as the source id. - * Example: /v1/organizations/123/sources/-/findings + * Example: /v1/organizations/{organization_id}/sources/-/findings * * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the source to groupBy. Its format is + * Required. Name of the source to groupBy. Its format is * "organizations/[organization_id]/sources/[source_id]". To groupBy across * all sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * @param {string} request.groupBy - * Expression that defines what assets fields to use for grouping (including + * Required. Expression that defines what assets fields to use for grouping (including * `state_change`). The string value should follow SQL syntax: comma separated * list of fields. For example: "parent,resource_name". * @@ -1065,21 +1067,22 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * parent: `=`, `:` + * * resource_name: `=`, `:` + * * state: `=`, `:` + * * category: `=`, `:` + * * external_uri: `=`, `:` + * * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * @param {Object} [request.readTime] @@ -1239,12 +1242,12 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the source to groupBy. Its format is + * Required. Name of the source to groupBy. Its format is * "organizations/[organization_id]/sources/[source_id]". To groupBy across * all sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * @param {string} request.groupBy - * Expression that defines what assets fields to use for grouping (including + * Required. Expression that defines what assets fields to use for grouping (including * `state_change`). The string value should follow SQL syntax: comma separated * list of fields. For example: "parent,resource_name". * @@ -1284,21 +1287,22 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * parent: `=`, `:` + * * resource_name: `=`, `:` + * * state: `=`, `:` + * * category: `=`, `:` + * * external_uri: `=`, `:` + * * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * @param {Object} [request.readTime] @@ -1386,7 +1390,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the organization assets should belong to. Its format is + * Required. Name of the organization assets should belong to. Its format is * "organizations/[organization_id]". * @param {string} [request.filter] * Expression that defines the filter to apply across assets. @@ -1416,29 +1420,30 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following are the allowed field and operator combinations: - * name | `=` - * update_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | `=`, `>`, `<`, `>=`, `<=` + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', `>`, `<`, `>=`, `<=` - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * @param {string} [request.orderBy] @@ -1455,7 +1460,7 @@ class SecurityCenterClient { * name * update_time * resource_properties - * security_marks + * security_marks.marks * security_center_properties.resource_name * security_center_properties.resource_parent * security_center_properties.resource_project @@ -1495,9 +1500,7 @@ class SecurityCenterClient { * * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * @param {Object} [request.fieldMask] - * Optional. - * - * A field mask to specify the ListAssetsResult fields to be listed in the + * Optional. A field mask to specify the ListAssetsResult fields to be listed in the * response. * An empty field mask will list all fields. * @@ -1613,7 +1616,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the organization assets should belong to. Its format is + * Required. Name of the organization assets should belong to. Its format is * "organizations/[organization_id]". * @param {string} [request.filter] * Expression that defines the filter to apply across assets. @@ -1643,29 +1646,30 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following are the allowed field and operator combinations: - * name | `=` - * update_time | `=`, `>`, `<`, `>=`, `<=` + * + * * name: `=` + * * update_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "update_time = \"2019-06-10T16:07:18-07:00\"" * "update_time = 1560208038000" * - * create_time | `=`, `>`, `<`, `>=`, `<=` + * * create_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "create_time = \"2019-06-10T16:07:18-07:00\"" * "create_time = 1560208038000" * - * iam_policy.policy_blob | '=', ':' - * resource_properties | '=', ':', `>`, `<`, `>=`, `<=` - * security_marks | '=', ':' - * security_center_properties.resource_name | '=', ':' - * security_center_properties.resource_type | '=', ':' - * security_center_properties.resource_parent | '=', ':' - * security_center_properties.resource_project | '=', ':' - * security_center_properties.resource_owners | '=', ':' + * * iam_policy.policy_blob: `=`, `:` + * * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` + * * security_marks.marks: `=`, `:` + * * security_center_properties.resource_name: `=`, `:` + * * security_center_properties.resource_type: `=`, `:` + * * security_center_properties.resource_parent: `=`, `:` + * * security_center_properties.resource_project: `=`, `:` + * * security_center_properties.resource_owners: `=`, `:` * * For example, `resource_properties.size = 100` is a valid filter string. * @param {string} [request.orderBy] @@ -1682,7 +1686,7 @@ class SecurityCenterClient { * name * update_time * resource_properties - * security_marks + * security_marks.marks * security_center_properties.resource_name * security_center_properties.resource_parent * security_center_properties.resource_project @@ -1722,9 +1726,7 @@ class SecurityCenterClient { * * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * @param {Object} [request.fieldMask] - * Optional. - * - * A field mask to specify the ListAssetsResult fields to be listed in the + * Optional. A field mask to specify the ListAssetsResult fields to be listed in the * response. * An empty field mask will list all fields. * @@ -1771,15 +1773,15 @@ class SecurityCenterClient { * Lists an organization or source's findings. * * To list across all sources provide a `-` as the source id. - * Example: /v1/organizations/123/sources/-/findings + * Example: /v1/organizations/{organization_id}/sources/-/findings * * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the source the findings belong to. Its format is + * Required. Name of the source the findings belong to. Its format is * "organizations/[organization_id]/sources/[source_id]". To list across all * sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * @param {string} [request.filter] * Expression that defines the filter to apply across findings. * The expression is a list of one or more restrictions combined via logical @@ -1806,21 +1808,22 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * name: `=` + * parent: `=`, `:` + * resource_name: `=`, `:` + * state: `=`, `:` + * category: `=`, `:` + * external_uri: `=`, `:` + * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * security_marks.marks: `=`, `:` + * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * @param {string} [request.orderBy] @@ -1841,7 +1844,7 @@ class SecurityCenterClient { * resource_name * event_time * source_properties - * security_marks + * security_marks.marks * @param {Object} [request.readTime] * Time used as a reference point when filtering findings. The filter is * limited to findings existing at the supplied time and their values are @@ -1877,9 +1880,7 @@ class SecurityCenterClient { * * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * @param {Object} [request.fieldMask] - * Optional. - * - * A field mask to specify the Finding fields to be listed in the response. + * Optional. A field mask to specify the Finding fields to be listed in the response. * An empty field mask will list all fields. * * This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask} @@ -1994,10 +1995,10 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the source the findings belong to. Its format is + * Required. Name of the source the findings belong to. Its format is * "organizations/[organization_id]/sources/[source_id]". To list across all * sources provide a source_id of `-`. For example: - * organizations/123/sources/- + * organizations/{organization_id}/sources/- * @param {string} [request.filter] * Expression that defines the filter to apply across findings. * The expression is a list of one or more restrictions combined via logical @@ -2024,21 +2025,22 @@ class SecurityCenterClient { * * boolean literals `true` and `false` without quotes. * * The following field and operator combinations are supported: - * name | `=` - * parent | '=', ':' - * resource_name | '=', ':' - * state | '=', ':' - * category | '=', ':' - * external_uri | '=', ':' - * event_time | `=`, `>`, `<`, `>=`, `<=` + * + * name: `=` + * parent: `=`, `:` + * resource_name: `=`, `:` + * state: `=`, `:` + * category: `=`, `:` + * external_uri: `=`, `:` + * event_time: `=`, `>`, `<`, `>=`, `<=` * * Usage: This should be milliseconds since epoch or an RFC3339 string. * Examples: * "event_time = \"2019-06-10T16:07:18-07:00\"" * "event_time = 1560208038000" * - * security_marks | '=', ':' - * source_properties | '=', ':', `>`, `<`, `>=`, `<=` + * security_marks.marks: `=`, `:` + * source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` * * For example, `source_properties.size = 100` is a valid filter string. * @param {string} [request.orderBy] @@ -2059,7 +2061,7 @@ class SecurityCenterClient { * resource_name * event_time * source_properties - * security_marks + * security_marks.marks * @param {Object} [request.readTime] * Time used as a reference point when filtering findings. The filter is * limited to findings existing at the supplied time and their values are @@ -2095,9 +2097,7 @@ class SecurityCenterClient { * * This object should have the same structure as [Duration]{@link google.protobuf.Duration} * @param {Object} [request.fieldMask] - * Optional. - * - * A field mask to specify the Finding fields to be listed in the response. + * Optional. A field mask to specify the Finding fields to be listed in the response. * An empty field mask will list all fields. * * This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask} @@ -2145,7 +2145,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Resource name of the parent of sources to list. Its format should be + * Required. Resource name of the parent of sources to list. Its format should be * "organizations/[organization_id]". * @param {number} [request.pageSize] * The maximum number of resources contained in the underlying API @@ -2258,7 +2258,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Resource name of the parent of sources to list. Its format should be + * Required. Resource name of the parent of sources to list. Its format should be * "organizations/[organization_id]". * @param {number} [request.pageSize] * The maximum number of resources contained in the underlying API @@ -2309,7 +2309,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.parent - * Name of the organization to run asset discovery for. Its format is + * Required. Name of the organization to run asset discovery for. Its format is * "organizations/[organization_id]". * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, @@ -2408,16 +2408,16 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {string} request.name - * The relative resource name of the finding. See: + * Required. The relative resource name of the finding. See: * https://cloud.google.com/apis/design/resource_names#relative_resource_name * Example: - * "organizations/123/sources/456/finding/789". + * "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". * @param {number} request.state - * The desired State of the finding. + * Required. The desired State of the finding. * * The number should be among the values of [State]{@link google.cloud.securitycenter.v1.State} * @param {Object} request.startTime - * The time at which the updated state takes effect. + * Required. The time at which the updated state takes effect. * * This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp} * @param {Object} [options] @@ -2613,7 +2613,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {Object} request.finding - * The finding resource to update or create if it does not already exist. + * Required. The finding resource to update or create if it does not already exist. * parent, security_marks, and update_time will be ignored. * * In the case of creation, the finding id portion of the name must be @@ -2684,7 +2684,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {Object} request.organizationSettings - * The organization settings resource to update. + * Required. The organization settings resource to update. * * This object should have the same structure as [OrganizationSettings]{@link google.cloud.securitycenter.v1.OrganizationSettings} * @param {Object} [request.updateMask] @@ -2750,7 +2750,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {Object} request.source - * The source resource to update. + * Required. The source resource to update. * * This object should have the same structure as [Source]{@link google.cloud.securitycenter.v1.Source} * @param {Object} [request.updateMask] @@ -2812,7 +2812,7 @@ class SecurityCenterClient { * @param {Object} request * The request object that will be sent. * @param {Object} request.securityMarks - * The security marks resource to update. + * Required. The security marks resource to update. * * This object should have the same structure as [SecurityMarks]{@link google.cloud.securitycenter.v1.SecurityMarks} * @param {Object} [request.updateMask] diff --git a/packages/google-cloud-securitycenter/synth.metadata b/packages/google-cloud-securitycenter/synth.metadata index af52ca90bab..db8fd3cfa40 100644 --- a/packages/google-cloud-securitycenter/synth.metadata +++ b/packages/google-cloud-securitycenter/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-11-19T12:26:58.400457Z", + "updateTime": "2019-12-10T12:23:11.737877Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "d8dd7fe8d5304f7bd1c52207703d7f27d5328c5a", - "internalRef": "281088257" + "sha": "6cc9499e225a4f6a5e34fe07e390f67055d7991c", + "internalRef": "284643689" } }, {