{
  "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."
        }
      }
    }
  },
  "basePath": "",
  "baseUrl": "https://baremetalsolution.googleapis.com/",
  "batchPath": "batch",
  "description": "Provides ways to manage Bare Metal Solution hardware installed in a regional extension located near a Google Cloud data center.",
  "discoveryVersion": "v1",
  "documentationLink": "https://cloud.google.com/bare-metal",
  "fullyEncodeReservedExpansion": true,
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "id": "baremetalsolution:v1alpha1",
  "kind": "discovery#restDescription",
  "mtlsRootUrl": "https://baremetalsolution.mtls.googleapis.com/",
  "name": "baremetalsolution",
  "ownerDomain": "google.com",
  "ownerName": "Google",
  "parameters": {
    "$.xgafv": {
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query",
      "type": "string"
    },
    "access_token": {
      "description": "OAuth access token.",
      "location": "query",
      "type": "string"
    },
    "alt": {
      "default": "json",
      "description": "Data format for response.",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "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"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "key": {
      "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.",
      "location": "query",
      "type": "string"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "type": "boolean"
    },
    "quotaUser": {
      "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.",
      "location": "query",
      "type": "string"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    }
  },
  "protocol": "rest",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "submitProvisioningConfig": {
              "description": "Submit a provisiong configuration for a given project.",
              "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}:submitProvisioningConfig",
              "httpMethod": "POST",
              "id": "baremetalsolution.projects.locations.submitProvisioningConfig",
              "parameterOrder": [
                "project",
                "location"
              ],
              "parameters": {
                "location": {
                  "description": "Required. The target location of the provisioning request.",
                  "location": "path",
                  "pattern": "^locations/[^/]+$",
                  "required": true,
                  "type": "string"
                },
                "project": {
                  "description": "Required. The target project of the provisioning request.",
                  "location": "path",
                  "pattern": "^projects/[^/]+$",
                  "required": true,
                  "type": "string"
                }
              },
              "path": "v1alpha1/{+project}/{+location}:submitProvisioningConfig",
              "request": {
                "$ref": "SubmitProvisioningConfigRequest"
              },
              "response": {
                "$ref": "ProvisioningConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        },
        "provisioningQuotas": {
          "methods": {
            "list": {
              "description": "List the budget details to provision resources on a given project.",
              "flatPath": "v1alpha1/projects/{projectsId}/provisioningQuotas",
              "httpMethod": "GET",
              "id": "baremetalsolution.projects.provisioningQuotas.list",
              "parameterOrder": [
                "parent"
              ],
              "parameters": {
                "pageSize": {
                  "description": "The maximum number of items to return.",
                  "format": "int32",
                  "location": "query",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "The next_page_token value returned from a previous List request, if any.",
                  "location": "query",
                  "type": "string"
                },
                "parent": {
                  "description": "Required. The parent project containing the provisioning quotas.",
                  "location": "path",
                  "pattern": "^projects/[^/]+$",
                  "required": true,
                  "type": "string"
                }
              },
              "path": "v1alpha1/{+parent}/provisioningQuotas",
              "response": {
                "$ref": "ListProvisioningQuotasResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        }
      }
    }
  },
  "revision": "20220829",
  "rootUrl": "https://baremetalsolution.googleapis.com/",
  "schemas": {
    "InstanceConfig": {
      "description": "Configuration parameters for a new instance.",
      "id": "InstanceConfig",
      "properties": {
        "clientNetwork": {
          "$ref": "NetworkAddress",
          "description": "Client network address."
        },
        "hyperthreading": {
          "description": "Whether the instance should be provisioned with Hyperthreading enabled.",
          "type": "boolean"
        },
        "id": {
          "description": "A transient unique identifier to idenfity an instance within an ProvisioningConfig request.",
          "type": "string"
        },
        "instanceType": {
          "description": "Instance type.",
          "type": "string"
        },
        "location": {
          "description": "Location where to deploy the instance.",
          "type": "string"
        },
        "osImage": {
          "description": "OS image to initialize the instance.",
          "type": "string"
        },
        "privateNetwork": {
          "$ref": "NetworkAddress",
          "description": "Private network address, if any."
        },
        "userNote": {
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
          "type": "string"
        }
      },
      "type": "object"
    },
    "InstanceQuota": {
      "description": "A resource budget.",
      "id": "InstanceQuota",
      "properties": {
        "availableMachineCount": {
          "description": "Number of machines than can be created for the given location and instance_type.",
          "format": "int32",
          "type": "integer"
        },
        "instanceType": {
          "description": "Instance type.",
          "type": "string"
        },
        "location": {
          "description": "Location where the quota applies.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ListProvisioningQuotasResponse": {
      "description": "Response for ListProvisioningQuotas.",
      "id": "ListProvisioningQuotasResponse",
      "properties": {
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        },
        "provisioningQuotas": {
          "description": "The provisioning quotas registered in this project.",
          "items": {
            "$ref": "ProvisioningQuota"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "LunRange": {
      "description": "A LUN range.",
      "id": "LunRange",
      "properties": {
        "quantity": {
          "description": "Number of LUNs to create.",
          "format": "int32",
          "type": "integer"
        },
        "sizeGb": {
          "description": "The requested size of each LUN, in GB.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "NetworkAddress": {
      "description": "A network.",
      "id": "NetworkAddress",
      "properties": {
        "address": {
          "description": "IP address to be assigned to the server.",
          "type": "string"
        },
        "existingNetworkId": {
          "description": "Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.",
          "type": "string"
        },
        "networkId": {
          "description": "Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "NetworkConfig": {
      "description": "Configuration parameters for a new network.",
      "id": "NetworkConfig",
      "properties": {
        "bandwidth": {
          "description": "Interconnect bandwidth. Set only when type is CLIENT.",
          "enum": [
            "BANDWIDTH_UNSPECIFIED",
            "BW_1_GBPS",
            "BW_2_GBPS",
            "BW_5_GBPS",
            "BW_10_GBPS"
          ],
          "enumDescriptions": [
            "Unspecified value.",
            "1 Gbps.",
            "2 Gbps.",
            "5 Gbps.",
            "10 Gbps."
          ],
          "type": "string"
        },
        "cidr": {
          "description": "CIDR range of the network.",
          "type": "string"
        },
        "id": {
          "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
          "type": "string"
        },
        "location": {
          "description": "Location where to deploy the network.",
          "type": "string"
        },
        "serviceCidr": {
          "description": "Service CIDR, if any.",
          "enum": [
            "SERVICE_CIDR_UNSPECIFIED",
            "DISABLED",
            "HIGH_26",
            "HIGH_27",
            "HIGH_28"
          ],
          "enumDescriptions": [
            "Unspecified value.",
            "Services are disabled for the given network.",
            "Use the highest /26 block of the network to host services.",
            "Use the highest /27 block of the network to host services.",
            "Use the highest /28 block of the network to host services."
          ],
          "type": "string"
        },
        "type": {
          "description": "The type of this network.",
          "enum": [
            "TYPE_UNSPECIFIED",
            "CLIENT",
            "PRIVATE"
          ],
          "enumDescriptions": [
            "Unspecified value.",
            "Client network, that is a network peered to a GCP VPC.",
            "Private network, that is a network local to the BMS POD."
          ],
          "type": "string"
        },
        "userNote": {
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
          "type": "string"
        },
        "vlanAttachments": {
          "description": "List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).",
          "items": {
            "$ref": "VlanAttachment"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "NfsExport": {
      "description": "A NFS export entry.",
      "id": "NfsExport",
      "properties": {
        "allowDev": {
          "description": "Allow dev.",
          "type": "boolean"
        },
        "allowSuid": {
          "description": "Allow the setuid flag.",
          "type": "boolean"
        },
        "cidr": {
          "description": "A CIDR range.",
          "type": "string"
        },
        "machineId": {
          "description": "Either a single machine, identified by an ID, or a comma-separated list of machine IDs.",
          "type": "string"
        },
        "networkId": {
          "description": "Network to use to publish the export.",
          "type": "string"
        },
        "noRootSquash": {
          "description": "Disable root squashing.",
          "type": "boolean"
        },
        "permissions": {
          "description": "Export permissions.",
          "enum": [
            "PERMISSIONS_UNSPECIFIED",
            "READ_ONLY",
            "READ_WRITE"
          ],
          "enumDescriptions": [
            "Unspecified value.",
            "Read-only permission.",
            "Read-write permission."
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "ProvisioningConfig": {
      "description": "An provisioning configuration.",
      "id": "ProvisioningConfig",
      "properties": {
        "instances": {
          "description": "Instances to be created.",
          "items": {
            "$ref": "InstanceConfig"
          },
          "type": "array"
        },
        "networks": {
          "description": "Networks to be created.",
          "items": {
            "$ref": "NetworkConfig"
          },
          "type": "array"
        },
        "ticketId": {
          "description": "A reference to track the request.",
          "type": "string"
        },
        "volumes": {
          "description": "Volumes to be created.",
          "items": {
            "$ref": "VolumeConfig"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "ProvisioningQuota": {
      "description": "A provisioning quota for a given project.",
      "id": "ProvisioningQuota",
      "properties": {
        "instanceQuota": {
          "$ref": "InstanceQuota",
          "description": "Instance quota."
        }
      },
      "type": "object"
    },
    "SubmitProvisioningConfigRequest": {
      "description": "Request for SubmitProvisioningConfig.",
      "id": "SubmitProvisioningConfigRequest",
      "properties": {
        "email": {
          "description": "Optional. Email provided to send a confirmation with provisioning config to.",
          "type": "string"
        },
        "provisioningConfig": {
          "$ref": "ProvisioningConfig",
          "description": "Required. The ProvisioningConfig to submit."
        }
      },
      "type": "object"
    },
    "VlanAttachment": {
      "description": "A GCP vlan attachment.",
      "id": "VlanAttachment",
      "properties": {
        "id": {
          "description": "Identifier of the VLAN attachment.",
          "type": "string"
        },
        "pairingKey": {
          "description": "Attachment pairing key.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "VolumeConfig": {
      "description": "Configuration parameters for a new volume.",
      "id": "VolumeConfig",
      "properties": {
        "id": {
          "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
          "type": "string"
        },
        "location": {
          "description": "Location where to deploy the volume.",
          "type": "string"
        },
        "lunRanges": {
          "description": "LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.",
          "items": {
            "$ref": "LunRange"
          },
          "type": "array"
        },
        "machineIds": {
          "description": "Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "nfsExports": {
          "description": "NFS exports. Set only when protocol is PROTOCOL_NFS.",
          "items": {
            "$ref": "NfsExport"
          },
          "type": "array"
        },
        "protocol": {
          "description": "Volume protocol.",
          "enum": [
            "PROTOCOL_UNSPECIFIED",
            "PROTOCOL_FC",
            "PROTOCOL_NFS"
          ],
          "enumDescriptions": [
            "Unspecified value.",
            "Fibre channel.",
            "Network file system."
          ],
          "type": "string"
        },
        "sizeGb": {
          "description": "The requested size of this volume, in GB. This will be updated in a later iteration with a generic size field.",
          "format": "int32",
          "type": "integer"
        },
        "snapshotsEnabled": {
          "description": "Whether snapshots should be enabled.",
          "type": "boolean"
        },
        "type": {
          "description": "The type of this Volume.",
          "enum": [
            "TYPE_UNSPECIFIED",
            "FLASH",
            "DISK"
          ],
          "enumDescriptions": [
            "The unspecified type.",
            "This Volume is on flash.",
            "This Volume is on disk."
          ],
          "type": "string"
        },
        "userNote": {
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "servicePath": "",
  "title": "Bare Metal Solution API",
  "version": "v1alpha1",
  "version_module": true
}