{
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "kind": "discovery#restDescription",
  "title": "Storage Insights API",
  "baseUrl": "https://storageinsights.googleapis.com/",
  "ownerName": "Google",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "resources": {
            "reportConfigs": {
              "resources": {
                "reportDetails": {
                  "methods": {
                    "list": {
                      "description": "Lists the inventory reports in a given project for a given location.",
                      "httpMethod": "GET",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameters": {
                        "parent": {
                          "pattern": "^projects/[^/]+/locations/[^/]+/reportConfigs/[^/]+$",
                          "description": "Required. Parent value for `ListReportDetailsRequest`",
                          "type": "string",
                          "location": "path",
                          "required": true
                        },
                        "filter": {
                          "type": "string",
                          "location": "query",
                          "description": "Filtering results"
                        },
                        "pageToken": {
                          "type": "string",
                          "description": "A token identifying a page of results the server should return.",
                          "location": "query"
                        },
                        "pageSize": {
                          "description": "Requested page size. The server might return fewer items than requested. If unspecified, the server picks the default value.",
                          "type": "integer",
                          "location": "query",
                          "format": "int32"
                        },
                        "orderBy": {
                          "description": "Hint for how to order the results",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "path": "v1/{+parent}/reportDetails",
                      "id": "storageinsights.projects.locations.reportConfigs.reportDetails.list",
                      "response": {
                        "$ref": "ListReportDetailsResponse"
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs/{reportConfigsId}/reportDetails"
                    },
                    "get": {
                      "path": "v1/{+name}",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Required. Name of the resource",
                          "pattern": "^projects/[^/]+/locations/[^/]+/reportConfigs/[^/]+/reportDetails/[^/]+$"
                        }
                      },
                      "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs/{reportConfigsId}/reportDetails/{reportDetailsId}",
                      "id": "storageinsights.projects.locations.reportConfigs.reportDetails.get",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Gets an existing inventory report in a given project for a given location.",
                      "response": {
                        "$ref": "ReportDetail"
                      },
                      "httpMethod": "GET"
                    }
                  }
                }
              },
              "methods": {
                "delete": {
                  "response": {
                    "$ref": "Empty"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "DELETE",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs/{reportConfigsId}",
                  "description": "Deletes an existing inventory report configuration in a given project for a given location.",
                  "id": "storageinsights.projects.locations.reportConfigs.delete",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000)."
                    },
                    "force": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Optional. If set, all the inventory report details associated with this report configuration are deleted."
                    },
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/reportConfigs/[^/]+$",
                      "description": "Required. Name of the resource",
                      "type": "string",
                      "location": "path",
                      "required": true
                    }
                  }
                },
                "patch": {
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "requestId": {
                      "type": "string",
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000).",
                      "location": "query"
                    },
                    "name": {
                      "description": "Identifier. Name of resource. Format: `projects/{project_id}/locations/{location}/reportConfigs/{report-config-id}`.",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/reportConfigs/[^/]+$",
                      "type": "string"
                    },
                    "updateMask": {
                      "location": "query",
                      "description": "Required. A mask specifying a list of fields to be updated in the `ReportConfig` resource. The fields specified in the `update_mask` are relative to the resource, not the full request. A field is overwritten if it is in the mask. The `update_mask` is required.",
                      "type": "string",
                      "format": "google-fieldmask"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs/{reportConfigsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "ReportConfig"
                  },
                  "path": "v1/{+name}",
                  "request": {
                    "$ref": "ReportConfig"
                  },
                  "httpMethod": "PATCH",
                  "id": "storageinsights.projects.locations.reportConfigs.patch",
                  "description": "Updates an existing inventory report configuration in a given project for a given location."
                },
                "create": {
                  "parameters": {
                    "parent": {
                      "description": "Required. Value for parent.",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "type": "string"
                    },
                    "requestId": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000)."
                    }
                  },
                  "path": "v1/{+parent}/reportConfigs",
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "ReportConfig"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Creates a new inventory report configuration in a given project for a given location.",
                  "response": {
                    "$ref": "ReportConfig"
                  },
                  "id": "storageinsights.projects.locations.reportConfigs.create",
                  "httpMethod": "POST",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs"
                },
                "list": {
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "storageinsights.projects.locations.reportConfigs.list",
                  "description": "Lists the inventory report configurations in a given project for a given location.",
                  "response": {
                    "$ref": "ListReportConfigsResponse"
                  },
                  "parameters": {
                    "parent": {
                      "description": "Required. Parent value for `ListReportConfigsRequest`",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "filter": {
                      "description": "Filtering results",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "location": "query",
                      "type": "string",
                      "description": "Hint for how to order the results"
                    },
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "A token identifying a page of results the server should return."
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "Requested page size. Server may return fewer items than requested. If unspecified, the server picks the default value."
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs",
                  "path": "v1/{+parent}/reportConfigs",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "get": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/reportConfigs/{reportConfigsId}",
                  "description": "Gets the inventory report configuration in a given project for a given location.",
                  "httpMethod": "GET",
                  "id": "storageinsights.projects.locations.reportConfigs.get",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "ReportConfig"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/reportConfigs/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the resource",
                      "type": "string"
                    }
                  },
                  "path": "v1/{+name}"
                }
              }
            },
            "operations": {
              "methods": {
                "cancel": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "httpMethod": "POST",
                  "id": "storageinsights.projects.locations.operations.cancel",
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "CancelOperationRequest"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}:cancel",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "description": "The name of the operation resource to be cancelled.",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  }
                },
                "get": {
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "id": "storageinsights.projects.locations.operations.get",
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "description": "The name of the operation resource.",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  }
                },
                "delete": {
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "The name of the operation resource to be deleted.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "type": "string"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "response": {
                    "$ref": "Empty"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "storageinsights.projects.locations.operations.delete",
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE"
                },
                "list": {
                  "id": "storageinsights.projects.locations.operations.list",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}/operations",
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "pageToken": {
                      "description": "The standard list page token.",
                      "type": "string",
                      "location": "query"
                    },
                    "returnPartialSuccess": {
                      "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation.",
                      "type": "boolean",
                      "location": "query"
                    },
                    "filter": {
                      "description": "The standard list filter.",
                      "type": "string",
                      "location": "query"
                    },
                    "pageSize": {
                      "location": "query",
                      "description": "The standard list page size.",
                      "type": "integer",
                      "format": "int32"
                    },
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "The name of the operation's parent resource.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`."
                }
              }
            },
            "datasetConfigs": {
              "methods": {
                "create": {
                  "path": "v1/{+parent}/datasetConfigs",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs",
                  "parameterOrder": [
                    "parent"
                  ],
                  "parameters": {
                    "datasetConfigId": {
                      "description": "Required. ID of the requesting object. If auto-generating ID is enabled on the server-side, remove this field and `dataset_config_id` from the method_signature of Create RPC Note: The value should not contain any hyphens.",
                      "type": "string",
                      "location": "query"
                    },
                    "parent": {
                      "description": "Required. Value for parent.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "requestId": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000)."
                    }
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "description": "Creates a dataset configuration in a given project for a given location.",
                  "httpMethod": "POST",
                  "request": {
                    "$ref": "DatasetConfig"
                  },
                  "id": "storageinsights.projects.locations.datasetConfigs.create",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "unlinkDataset": {
                  "path": "v1/{+name}:unlinkDataset",
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "storageinsights.projects.locations.datasetConfigs.unlinkDataset",
                  "description": "Unlinks a dataset from BigQuery in a given project for a given location.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "request": {
                    "$ref": "UnlinkDatasetRequest"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs/{datasetConfigsId}:unlinkDataset",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/datasetConfigs/[^/]+$",
                      "description": "Required. Name of the resource"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "list": {
                  "httpMethod": "GET",
                  "description": "Lists the dataset configurations in a given project for a given location.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs",
                  "response": {
                    "$ref": "ListDatasetConfigsResponse"
                  },
                  "id": "storageinsights.projects.locations.datasetConfigs.list",
                  "path": "v1/{+parent}/datasetConfigs",
                  "parameters": {
                    "pageToken": {
                      "description": "A token identifying a page of results the server should return.",
                      "location": "query",
                      "type": "string"
                    },
                    "parent": {
                      "description": "Required. Parent value for ListDatasetConfigsRequest",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "Filtering results"
                    },
                    "pageSize": {
                      "format": "int32",
                      "type": "integer",
                      "location": "query",
                      "description": "Requested page size. Server might return fewer items than requested. If unspecified, server picks an appropriate default."
                    },
                    "orderBy": {
                      "description": "Hint for how to order the results",
                      "type": "string",
                      "location": "query"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ]
                },
                "patch": {
                  "path": "v1/{+name}",
                  "request": {
                    "$ref": "DatasetConfig"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs/{datasetConfigsId}",
                  "description": "Updates a dataset configuration in a given project for a given location.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "description": "Identifier. name of resource",
                      "pattern": "^projects/[^/]+/locations/[^/]+/datasetConfigs/[^/]+$"
                    },
                    "requestId": {
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000).",
                      "type": "string",
                      "location": "query"
                    },
                    "updateMask": {
                      "location": "query",
                      "description": "Required. Field mask is used to specify the fields to be overwritten in the `DatasetConfig` resource by the update. The fields specified in the `update_mask` are relative to the resource, not the full request. A field is overwritten if it is in the mask. If the user does not provide a mask then it returns an \"Invalid Argument\" error.",
                      "format": "google-fieldmask",
                      "type": "string"
                    }
                  },
                  "httpMethod": "PATCH",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "storageinsights.projects.locations.datasetConfigs.patch",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "delete": {
                  "httpMethod": "DELETE",
                  "id": "storageinsights.projects.locations.datasetConfigs.delete",
                  "description": "Deletes a dataset configuration in a given project for a given location.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "parameters": {
                    "requestId": {
                      "description": "Optional. A unique identifier for your request. Specify the request ID if you need to retry the request. If you retry the request with the same ID within 60 minutes, the server ignores the request if it has already completed the original request. For example, if your initial request times out and you retry the request using the same request ID, the server recognizes the original request and does not process the new request. The request ID must be a valid UUID and cannot be a zero UUID (00000000-0000-0000-0000-000000000000).",
                      "location": "query",
                      "type": "string"
                    },
                    "name": {
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/datasetConfigs/[^/]+$",
                      "description": "Required. Name of the resource",
                      "type": "string"
                    }
                  },
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs/{datasetConfigsId}"
                },
                "get": {
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs/{datasetConfigsId}",
                  "id": "storageinsights.projects.locations.datasetConfigs.get",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/datasetConfigs/[^/]+$",
                      "description": "Required. Name of the resource"
                    }
                  },
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Gets the dataset configuration in a given project for a given location.",
                  "response": {
                    "$ref": "DatasetConfig"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "GET"
                },
                "linkDataset": {
                  "path": "v1/{+name}:linkDataset",
                  "request": {
                    "$ref": "LinkDatasetRequest"
                  },
                  "httpMethod": "POST",
                  "description": "Links a dataset to BigQuery in a given project for a given location.",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/datasetConfigs/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the resource",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "storageinsights.projects.locations.datasetConfigs.linkDataset",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/datasetConfigs/{datasetConfigsId}:linkDataset"
                }
              }
            }
          },
          "methods": {
            "get": {
              "path": "v1/{+name}",
              "parameters": {
                "name": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "description": "Resource name for the location."
                }
              },
              "httpMethod": "GET",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              },
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "description": "Gets information about a location.",
              "id": "storageinsights.projects.locations.get",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "list": {
              "id": "storageinsights.projects.locations.list",
              "parameters": {
                "filter": {
                  "type": "string",
                  "location": "query",
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160)."
                },
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page."
                },
                "extraLocationTypes": {
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage.",
                  "location": "query",
                  "repeated": true,
                  "type": "string"
                },
                "name": {
                  "description": "The resource that owns the locations collection, if applicable.",
                  "type": "string",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "type": "integer",
                  "description": "The maximum number of results to return. If not set, the service selects a default."
                }
              },
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}/locations",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/projects/{projectsId}/locations",
              "httpMethod": "GET"
            }
          }
        }
      }
    }
  },
  "schemas": {
    "ListOperationsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        },
        "operations": {
          "items": {
            "$ref": "Operation"
          },
          "description": "A list of operations that matches the specified filter in the request.",
          "type": "array"
        },
        "unreachable": {
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations."
    },
    "DateTime": {
      "id": "DateTime",
      "properties": {
        "month": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month."
        },
        "minutes": {
          "description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.",
          "type": "integer",
          "format": "int32"
        },
        "seconds": {
          "type": "integer",
          "description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.",
          "format": "int32"
        },
        "hours": {
          "format": "int32",
          "description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
          "type": "integer"
        },
        "year": {
          "description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.",
          "type": "integer",
          "format": "int32"
        },
        "timeZone": {
          "description": "Time zone.",
          "$ref": "TimeZone"
        },
        "day": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day."
        },
        "nanos": {
          "description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.",
          "type": "integer",
          "format": "int32"
        },
        "utcOffset": {
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.",
          "type": "string",
          "format": "google-duration"
        }
      },
      "description": "Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user's timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application's limitations.",
      "type": "object"
    },
    "ReportStatsView": {
      "properties": {
        "reportDetailId": {
          "type": "string",
          "description": "ID of the ReportDetail for which the stats are generated"
        },
        "projectNumber": {
          "type": "string",
          "format": "int64",
          "description": "Project Number"
        },
        "reportConfigId": {
          "type": "string",
          "description": "ID of the parent ReportConfig for the corresponding ReportDetail"
        },
        "bytesWritten": {
          "type": "string",
          "format": "int64",
          "description": "Actual size in bytes for the report written, as reported by the underlying storage system"
        },
        "recordsProcessed": {
          "format": "int64",
          "description": "Actual records processed as reported by the underlying storage system",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Message to encapsulate the various statistics related to the generated Report Next ID: 6",
      "id": "ReportStatsView"
    },
    "ProjectErrors": {
      "properties": {
        "nonManagementHubEntitledProjectNumbers": {
          "description": "Optional. Subset of project numbers that are not subscribed to Storage Intelligence.",
          "deprecated": true,
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        },
        "destinationProjectOrgError": {
          "description": "Optional. Indicates if the destination project resides within the same organization as the source project.",
          "type": "boolean"
        },
        "internalErrorCount": {
          "format": "int64",
          "description": "Optional. Number of projects that encountered internal errors during validation and are automatically retried.",
          "type": "string"
        },
        "nonManagementHubEntitledErrorCount": {
          "description": "Optional. Count of projects that are not subscribed to Storage Intelligence.",
          "type": "string",
          "format": "int64",
          "deprecated": true
        },
        "nonStorageIntelligenceEntitledProjectNumbers": {
          "description": "Optional. Subset of project numbers that are not subscribed to Storage Intelligence.",
          "items": {
            "format": "int64",
            "type": "string"
          },
          "type": "array"
        },
        "validatedCount": {
          "format": "int64",
          "description": "Optional. Count of successfully validated projects.",
          "type": "string"
        },
        "destinationProjectCheckHasInternalError": {
          "type": "boolean",
          "description": "Optional. Indicates whether the destination project check failed due to an internal error. If `true`, the system automatically retries the check."
        },
        "outsideOrgProjectNumbers": {
          "type": "array",
          "items": {
            "format": "int64",
            "type": "string"
          },
          "description": "Optional. Subset of project numbers which are not in the same organization."
        },
        "nonStorageIntelligenceEntitledErrorCount": {
          "format": "int64",
          "description": "Optional. Count of projects that are not subscribed to Storage Intelligence.",
          "type": "string"
        },
        "outsideOrgErrorCount": {
          "type": "string",
          "description": "Optional. Count of projects which are not in the same organization.",
          "format": "int64"
        }
      },
      "id": "ProjectErrors",
      "description": "Provides a summary of the project level error statistics.",
      "type": "object"
    },
    "ParquetOptions": {
      "id": "ParquetOptions",
      "properties": {},
      "type": "object",
      "description": "Options to configure inventory reports in Parquet format."
    },
    "ListLocationsResponse": {
      "description": "The response message for Locations.ListLocations.",
      "type": "object",
      "id": "ListLocationsResponse",
      "properties": {
        "locations": {
          "description": "A list of locations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      }
    },
    "CloudStorageDestinationOptions": {
      "properties": {
        "destinationPath": {
          "description": "The destination path within the bucket where the inventory reports are stored.",
          "type": "string"
        },
        "bucket": {
          "type": "string",
          "description": "Optional. The destination bucket for the inventory reports."
        }
      },
      "type": "object",
      "description": "Options to store inventory reports in Cloud Storage.",
      "id": "CloudStorageDestinationOptions"
    },
    "BucketErrors": {
      "description": "Provides a summary of the bucket level error statistics.",
      "type": "object",
      "properties": {
        "permissionDeniedCount": {
          "format": "int64",
          "type": "string",
          "description": "Optional. Count of buckets with permission denied errors."
        },
        "nonManagementHubEntitledCount": {
          "format": "int64",
          "description": "Optional. Count of buckets that are not subscribed to Storage Intelligence.",
          "deprecated": true,
          "type": "string"
        },
        "nonStorageIntelligenceEntitledCount": {
          "description": "Optional. Count of buckets that are not subscribed to Storage Intelligence.",
          "format": "int64",
          "type": "string"
        },
        "validatedCount": {
          "type": "string",
          "description": "Optional. Count of successfully validated buckets.",
          "format": "int64"
        },
        "permissionDeniedBucketIds": {
          "type": "array",
          "description": "Optional. Subset of bucket names that have permission denied.",
          "items": {
            "type": "string"
          }
        },
        "internalErrorCount": {
          "type": "string",
          "format": "int64",
          "description": "Optional. Number of buckets that encountered internal errors during the validation process. These buckets are automatically retried in subsequent validation attempts."
        },
        "nonStorageIntelligenceEntitledBucketIds": {
          "type": "array",
          "description": "Optional. Subset of bucket names that are not subscribed to Storage Intelligence.",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "BucketErrors"
    },
    "Operation": {
      "id": "Operation",
      "properties": {
        "done": {
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
          "type": "boolean"
        },
        "response": {
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        },
        "metadata": {
          "type": "object",
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
        }
      },
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "type": "object"
    },
    "CancelOperationRequest": {
      "id": "CancelOperationRequest",
      "description": "The request message for Operations.CancelOperation.",
      "properties": {},
      "type": "object"
    },
    "ListDatasetConfigsResponse": {
      "properties": {
        "unreachable": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Locations that could not be reached."
        },
        "datasetConfigs": {
          "type": "array",
          "description": "The list of `DatasetConfigs`",
          "items": {
            "$ref": "DatasetConfig"
          }
        },
        "nextPageToken": {
          "description": "A token identifying a page of results the server should return.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "ListDatasetConfigsResponse",
      "description": "Response message for `ListDatasetConfigs`"
    },
    "ReportConfig": {
      "properties": {
        "labels": {
          "description": "Labels as key value pairs",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "createTime": {
          "description": "Output only. The UTC time at which the inventory report configuration was created. This is auto-populated.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "csvOptions": {
          "$ref": "CSVOptions",
          "description": "Options for CSV formatted reports."
        },
        "parquetOptions": {
          "$ref": "ParquetOptions",
          "description": "Options for Parquet formatted reports."
        },
        "displayName": {
          "description": "User provided display name that can be empty and limited to 256 characters that is editable..",
          "type": "string"
        },
        "frequencyOptions": {
          "$ref": "FrequencyOptions",
          "description": "The frequency of the inventory report generation."
        },
        "name": {
          "type": "string",
          "description": "Identifier. Name of resource. Format: `projects/{project_id}/locations/{location}/reportConfigs/{report-config-id}`."
        },
        "updateTime": {
          "format": "google-datetime",
          "type": "string",
          "readOnly": true,
          "description": "Output only. The UTC time at which the inventory report configuration was updated. This is auto-populated."
        },
        "objectMetadataReportOptions": {
          "description": "Options for including object metadata in an inventory report.",
          "$ref": "ObjectMetadataReportOptions"
        }
      },
      "description": "Message describing the `ReportConfig` object. `ReportConfig` is the configuration used to generate inventory reports. For information about how to set various fields, see [Create an inventory report configuration](https://cloud.google.com/storage/docs/insights/using-inventory-reports#create-report-config).",
      "id": "ReportConfig",
      "type": "object"
    },
    "ObjectMetadataReportOptions": {
      "id": "ObjectMetadataReportOptions",
      "type": "object",
      "properties": {
        "metadataFields": {
          "items": {
            "type": "string"
          },
          "description": "The metadata fields included in an inventory report.",
          "type": "array"
        },
        "storageDestinationOptions": {
          "$ref": "CloudStorageDestinationOptions",
          "description": "Options to store reports in Cloud Storage."
        },
        "storageFilters": {
          "$ref": "CloudStorageFilters",
          "description": "Filters buckets to generate inventory reports for Cloud Storage."
        }
      },
      "description": "Options for including metadata in an inventory report."
    },
    "CloudStorageFilters": {
      "id": "CloudStorageFilters",
      "description": "Filters buckets to generate inventory reports for Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Optional. Bucket for which the inventory report is generated."
        }
      },
      "type": "object"
    },
    "Metrics": {
      "type": "object",
      "description": "Metrics associated with the generated report.",
      "properties": {
        "processedRecordsCount": {
          "type": "string",
          "format": "int64",
          "description": "Count of Cloud Storage objects that are part of the inventory report."
        }
      },
      "id": "Metrics"
    },
    "ListReportDetailsResponse": {
      "description": "Response message for `ListReportDetails`.",
      "id": "ListReportDetailsResponse",
      "type": "object",
      "properties": {
        "unreachable": {
          "type": "array",
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          }
        },
        "nextPageToken": {
          "description": "A token identifying a page of results the server should return.",
          "type": "string"
        },
        "reportDetails": {
          "type": "array",
          "description": "The list of `ReportDetail`",
          "items": {
            "$ref": "ReportDetail"
          }
        }
      }
    },
    "UnlinkDatasetRequest": {
      "type": "object",
      "id": "UnlinkDatasetRequest",
      "description": "Request message for `UnlinkDataset`",
      "properties": {}
    },
    "LocationMetadata": {
      "properties": {
        "reportConfigAvailable": {
          "description": "If true, `storageinsights.googleapis.com/ReportConfig` resource is available at the location.",
          "type": "boolean"
        },
        "datasetConfigAvailable": {
          "description": "If true, `storageinsights.googleapis.com/DatasetConfig` resource is available at the location.",
          "type": "boolean"
        }
      },
      "id": "LocationMetadata",
      "type": "object",
      "description": "Metadata that helps discover which resources are available in a location."
    },
    "LinkDatasetRequest": {
      "id": "LinkDatasetRequest",
      "description": "Request message for `LinkDataset`",
      "properties": {},
      "type": "object"
    },
    "Date": {
      "id": "Date",
      "properties": {
        "day": {
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
          "format": "int32",
          "type": "integer"
        },
        "month": {
          "format": "int32",
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
          "type": "integer"
        },
        "year": {
          "type": "integer",
          "format": "int32",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp"
    },
    "OperationMetadata": {
      "id": "OperationMetadata",
      "description": "Represents the metadata of the long-running operation.",
      "type": "object",
      "properties": {
        "verb": {
          "readOnly": true,
          "description": "Output only. Name of the verb executed by the operation.",
          "type": "string"
        },
        "requestedCancellation": {
          "readOnly": true,
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have been cancelled successfully have an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
          "type": "boolean"
        },
        "createTime": {
          "description": "Output only. Operation create time.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "statusMessage": {
          "description": "Output only. Human-readable status of the operation, if any.",
          "type": "string",
          "readOnly": true
        },
        "endTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Operation end time."
        },
        "apiVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. API version used to start the operation."
        },
        "target": {
          "description": "Output only. Server-defined resource path for the target of the operation.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "CSVOptions": {
      "properties": {
        "recordSeparator": {
          "description": "Record separator characters in CSV.",
          "type": "string"
        },
        "delimiter": {
          "description": "Delimiter characters in CSV.",
          "type": "string"
        },
        "headerRequired": {
          "description": "If set, includes a header row in the CSV report.",
          "type": "boolean"
        }
      },
      "description": "Options to configure inventory reports in CSV format.",
      "type": "object",
      "id": "CSVOptions"
    },
    "Status": {
      "id": "Status",
      "type": "object",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "format": "int32",
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
          "type": "string"
        },
        "details": {
          "type": "array",
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "items": {
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            }
          }
        }
      }
    },
    "CloudStorageBuckets": {
      "properties": {
        "cloudStorageBuckets": {
          "type": "array",
          "items": {
            "$ref": "CloudStorageBucket"
          }
        }
      },
      "type": "object",
      "description": "Collection of Cloud Storage buckets.",
      "id": "CloudStorageBuckets"
    },
    "DatasetConfigInternalView": {
      "id": "DatasetConfigInternalView",
      "type": "object",
      "description": "Message to encapsulate the identifiers for a BigQuery insights dataset. Next ID: 3",
      "properties": {
        "bqDatasetInTenantProject": {
          "type": "string",
          "description": "The name of the internal BigQuery dataset created for insights."
        },
        "tenantProjectId": {
          "description": "The tenant project id of where the dataset is created.",
          "type": "string"
        }
      }
    },
    "FrequencyOptions": {
      "id": "FrequencyOptions",
      "type": "object",
      "properties": {
        "startDate": {
          "description": "The UTC date to start generating inventory reports. For example,`{\"day\": 15, \"month\": 8, \"year\": 2022}`.",
          "$ref": "Date"
        },
        "frequency": {
          "description": "Frequency of inventory report generation.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified.",
            "Inventory report is generated daily.",
            "Inventory report is generated weekly."
          ],
          "enum": [
            "FREQUENCY_UNSPECIFIED",
            "DAILY",
            "WEEKLY"
          ]
        },
        "endDate": {
          "description": "The UTC date to stop generating inventory reports. For example,`{\"day\": 15, \"month\": 8, \"year\": 2022}`.",
          "$ref": "Date"
        }
      },
      "description": "`FrequencyOptions` resource Frequency configuration for inventory report generation."
    },
    "ListReportConfigsResponse": {
      "id": "ListReportConfigsResponse",
      "description": "Response message for `ListReportConfigs`",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token identifying a page of results the server should return.",
          "type": "string"
        },
        "unreachable": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations that could not be reached."
        },
        "reportConfigs": {
          "description": "The list of `ReportConfig`",
          "items": {
            "$ref": "ReportConfig"
          },
          "type": "array"
        }
      }
    },
    "Identity": {
      "properties": {
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Name of the identity."
        },
        "type": {
          "type": "string",
          "enum": [
            "IDENTITY_TYPE_UNSPECIFIED",
            "IDENTITY_TYPE_PER_CONFIG",
            "IDENTITY_TYPE_PER_PROJECT"
          ],
          "description": "Type of identity to use for the datasetConfig.",
          "enumDescriptions": [
            "Default is unspecified and should not be used.",
            "Google managed service account per resource.",
            "Google managed service account per project."
          ]
        }
      },
      "description": "Identity lets the user provide the type of identity to use, and outputs the identity string that can be used for IAM policy changes.",
      "type": "object",
      "id": "Identity"
    },
    "CloudStorageLocations": {
      "type": "object",
      "id": "CloudStorageLocations",
      "description": "Collection of Cloud Storage locations.",
      "properties": {
        "locations": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "DatasetConfig": {
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "Output only. The UTC time at which the dataset configuration was last updated. This is auto-populated.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "includeNewlyCreatedBuckets": {
          "description": "If set to `true`, the request includes all the newly created buckets in the dataset that meet the inclusion and exclusion rules.",
          "type": "boolean"
        },
        "datasetConfigState": {
          "readOnly": true,
          "description": "Output only. State of the `datasetConfig`.",
          "enumDescriptions": [
            "Unspecified state.",
            "Active configuration indicates that the configuration is actively ingesting data.",
            "In this state, the configuration is being verified for various permissions.",
            "Configuration is created and further processing needs to happen.",
            "Configuration is under processing"
          ],
          "enum": [
            "CONFIG_STATE_UNSPECIFIED",
            "CONFIG_STATE_ACTIVE",
            "CONFIG_STATE_VERIFICATION_IN_PROGRESS",
            "CONFIG_STATE_CREATED",
            "CONFIG_STATE_PROCESSING"
          ],
          "type": "string"
        },
        "identity": {
          "$ref": "Identity",
          "description": "Identity used by this `datasetConfig`."
        },
        "uid": {
          "description": "Output only. System generated unique identifier for the resource.",
          "type": "string",
          "readOnly": true
        },
        "activityDataRetentionPeriodDays": {
          "description": "Optional. When set, overrides the retention period for activity data. Otherwise, the `retention_period_days` value is used for activity data as well.",
          "format": "int32",
          "type": "integer"
        },
        "excludeCloudStorageLocations": {
          "$ref": "CloudStorageLocations"
        },
        "sourceProjects": {
          "description": "Defines the options for providing source projects for the dataset.",
          "$ref": "SourceProjects"
        },
        "excludeCloudStorageBuckets": {
          "$ref": "CloudStorageBuckets"
        },
        "includeCloudStorageLocations": {
          "$ref": "CloudStorageLocations"
        },
        "name": {
          "description": "Identifier. name of resource",
          "type": "string"
        },
        "retentionPeriodDays": {
          "type": "integer",
          "description": "Number of days of history that must be retained.",
          "format": "int32"
        },
        "description": {
          "description": "Optional. A user-provided description for the dataset configuration. Maximum length: 256 characters.",
          "type": "string"
        },
        "cloudStorageObjectPath": {
          "type": "string",
          "description": "Input only. Cloud Storage object path containing a list of project or folder numbers to include in the dataset; it cannot contain a mix of project and folders. The object must be a text file where each line has one of the following entries: - Project number, formatted as `projects/{project_number}`, for example, `projects/1234567890`. - Folder identifier, formatted as `folders/{folder_number}`, for example, `folders/9876543210`. Path must be in the format `gs://{bucket_name}/{object_name}`."
        },
        "link": {
          "$ref": "Link",
          "description": "Details of the linked dataset."
        },
        "includeCloudStorageBuckets": {
          "$ref": "CloudStorageBuckets"
        },
        "status": {
          "readOnly": true,
          "$ref": "Status",
          "description": "Output only. Status of the `datasetConfig`."
        },
        "skipVerificationAndIngest": {
          "deprecated": true,
          "description": "Optional. If set to `false`, then all the permission checks must be successful before the system can start ingesting data. This field can only be updated before the system ingests data for the first time. Any attempt to modify the field after data ingestion starts results in an error.",
          "type": "boolean"
        },
        "labels": {
          "type": "object",
          "description": "Labels as key value pairs",
          "additionalProperties": {
            "type": "string"
          }
        },
        "sourceFolders": {
          "$ref": "SourceFolders",
          "description": "Defines the options for providing source folders for the dataset."
        },
        "organizationNumber": {
          "format": "int64",
          "description": "Optional. Organization resource ID that the source projects should belong to. Projects that do not belong to the provided organization are not considered when creating the dataset.",
          "type": "string"
        },
        "organizationScope": {
          "type": "boolean",
          "description": "Defines the options for providing a source organization for the dataset."
        },
        "createTime": {
          "type": "string",
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. The UTC time at which the dataset configuration was created. This is auto-populated."
        }
      },
      "id": "DatasetConfig",
      "description": "Message describing the dataset configuration properties. For more information, see [Dataset configuration properties](https://cloud.google.com/storage/docs/insights/datasets#dataset-config).",
      "type": "object"
    },
    "Location": {
      "description": "A resource that represents a Google Cloud location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}"
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object",
          "description": "Service-specific metadata. For example the available capacity at the given location."
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        }
      },
      "id": "Location"
    },
    "ValidationErrorsBeforeIngestion": {
      "type": "object",
      "id": "ValidationErrorsBeforeIngestion",
      "properties": {
        "projectErrors": {
          "description": "Optional. Provides a summary of the project level error stats.",
          "$ref": "ProjectErrors"
        },
        "bucketErrors": {
          "description": "Optional. Provides a summary of the bucket level error stats.",
          "$ref": "BucketErrors"
        }
      },
      "description": "Summary of validation errors that occurred during the verification phase."
    },
    "Link": {
      "id": "Link",
      "properties": {
        "linked": {
          "readOnly": true,
          "description": "Output only. State of the linked dataset.",
          "type": "boolean"
        },
        "dataset": {
          "description": "Output only. Dataset name for linked dataset.",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "Defines the details about the linked dataset.",
      "type": "object"
    },
    "SourceProjects": {
      "properties": {
        "projectNumbers": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        }
      },
      "type": "object",
      "description": "Collection of project numbers",
      "id": "SourceProjects"
    },
    "TimeZone": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "IANA Time Zone Database time zone. For example \"America/New_York\"."
        },
        "version": {
          "description": "Optional. IANA Time Zone Database version number. For example \"2019a\".",
          "type": "string"
        }
      },
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "id": "TimeZone"
    },
    "SourceFolders": {
      "id": "SourceFolders",
      "properties": {
        "folderNumbers": {
          "items": {
            "format": "int64",
            "type": "string"
          },
          "type": "array",
          "description": "Optional. The list of folder numbers to include in the dataset."
        }
      },
      "description": "Specifies a set of folders to include in the dataset",
      "type": "object"
    },
    "Empty": {
      "properties": {},
      "id": "Empty",
      "type": "object",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }"
    },
    "ReportDetail": {
      "type": "object",
      "id": "ReportDetail",
      "description": "Message describing the `ReportDetail` object. `ReportDetail` represents the metadata of the generated inventory report for a report configuration.",
      "properties": {
        "reportPathPrefix": {
          "description": "Prefix of the object name of each report's shard. This has the full prefix except the `extension` and `shard_id`. For example, if the `destination_path` is `{report-config-id}/dt={datetime}`, then the shard object name is `gs://my-insights/1A34-F2E456-12B456-1C3D/dt=2022-05-20T06:35/1A34-F2E456-12B456-1C3D_2022-05-20T06:35_5.csv` and the value of `reportPathPrefix` field is `gs://my-insights/1A34-F2E456-12B456-1C3D/dt=2022-05-20T06:35/1A34-F2E456-12B456-1C3D_2022-05-20T06:35_`.",
          "type": "string"
        },
        "reportMetrics": {
          "$ref": "Metrics",
          "description": "Metrics of the inventory report."
        },
        "snapshotTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "The snapshot time. All the inventory report data is referenced at this point of time."
        },
        "shardsCount": {
          "description": "Total shards generated for the inventory report.",
          "type": "string",
          "format": "int64"
        },
        "status": {
          "$ref": "Status",
          "description": "Status of the inventory report."
        },
        "targetDatetime": {
          "$ref": "DateTime",
          "description": "The date and time of the inventory report generation. This field is auto-populated. The time part of `target_datetime` is always `0`."
        },
        "name": {
          "type": "string",
          "description": "Name of resource. Format: `projects/{project_number}/locations/{location}/reportConfigs/{report-config-id}/reportDetails/{report-detail-id}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        }
      }
    },
    "CloudStorageBucket": {
      "id": "CloudStorageBucket",
      "description": "Defines the bucket by its name or a regex pattern to match buckets.",
      "type": "object",
      "properties": {
        "bucketPrefixRegex": {
          "description": "A regex pattern for bucket names matching the regex. Regex should follow the syntax specified in `google/re2` on GitHub.",
          "type": "string"
        },
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        }
      }
    }
  },
  "ownerDomain": "google.com",
  "batchPath": "batch",
  "version_module": true,
  "name": "storageinsights",
  "mtlsRootUrl": "https://storageinsights.mtls.googleapis.com/",
  "canonicalName": "Storage Insights",
  "basePath": "",
  "revision": "20260902",
  "discoveryVersion": "v1",
  "version": "v1",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "fullyEncodeReservedExpansion": true,
  "protocol": "rest",
  "id": "storageinsights:v1",
  "description": "Provides insights capability on Google Cloud Storage",
  "servicePath": "",
  "documentationLink": "https://cloud.google.com/storage/docs/metadata",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "callback": {
      "description": "JSONP",
      "type": "string",
      "location": "query"
    },
    "uploadType": {
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string"
    },
    "quotaUser": {
      "location": "query",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string"
    },
    "oauth_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth 2.0 token for the current user."
    },
    "prettyPrint": {
      "default": "true",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "location": "query"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "$.xgafv": {
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "description": "V1 error format.",
      "location": "query"
    },
    "key": {
      "location": "query",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "type": "string"
    },
    "alt": {
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query",
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ]
    }
  },
  "rootUrl": "https://storageinsights.googleapis.com/"
}
