{
  "version": "v1alpha",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "parameters": {
    "access_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth access token."
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "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.",
      "type": "string",
      "location": "query"
    },
    "uploadType": {
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string"
    },
    "alt": {
      "default": "json",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "description": "Data format for response.",
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "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"
    },
    "prettyPrint": {
      "default": "true",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "callback": {
      "location": "query",
      "type": "string",
      "description": "JSONP"
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "type": "string",
      "location": "query"
    }
  },
  "basePath": "",
  "mtlsRootUrl": "https://enterprisepurchasing.mtls.googleapis.com/",
  "canonicalName": "Enterprise Purchasing",
  "description": "",
  "baseUrl": "https://enterprisepurchasing.googleapis.com/",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "get": {
              "response": {
                "$ref": "Location"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "enterprisepurchasing.projects.locations.get",
              "path": "v1alpha/{+name}",
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "description": "Resource name for the location.",
                  "required": true,
                  "location": "path"
                }
              },
              "httpMethod": "GET",
              "description": "Gets information about a location.",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}"
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "type": "string",
                  "description": "The resource that owns the locations collection, if applicable.",
                  "required": true,
                  "pattern": "^projects/[^/]+$"
                },
                "pageToken": {
                  "type": "string",
                  "location": "query",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page."
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "type": "integer"
                },
                "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)."
                },
                "extraLocationTypes": {
                  "location": "query",
                  "repeated": true,
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "path": "v1alpha/{+name}/locations",
              "flatPath": "v1alpha/projects/{projectsId}/locations",
              "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.",
              "id": "enterprisepurchasing.projects.locations.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ]
            }
          },
          "resources": {
            "gcveCuds": {
              "methods": {
                "list": {
                  "httpMethod": "GET",
                  "path": "v1alpha/{+parent}/gcveCuds",
                  "description": "List GcveCuds in a given project and location.",
                  "response": {
                    "$ref": "ListGcveCudsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameters": {
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. A token identifying a page of results the server should return."
                    },
                    "parent": {
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent which owns the GcveCuds. Format: projects/{project}/locations/{location}"
                    },
                    "pageSize": {
                      "type": "integer",
                      "description": "Optional. The maximum number of GcveCuds to return. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
                      "format": "int32",
                      "location": "query"
                    }
                  },
                  "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/gcveCuds",
                  "id": "enterprisepurchasing.projects.locations.gcveCuds.list",
                  "parameterOrder": [
                    "parent"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "revision": "20260928",
  "kind": "discovery#restDescription",
  "schemas": {
    "GcveCud": {
      "id": "GcveCud",
      "properties": {
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of this GcveCud. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: projects/{project}/locations/{location}/gcveCuds/{gcve_cud}"
        },
        "state": {
          "description": "Output only. The state of the GcveCud.",
          "enumDescriptions": [
            "The GcveCud state is unspecified.",
            "The GcveCud is being created and not yet effective.",
            "The GcveCud has a subscription created and waiting for the subscription to be effective.",
            "The GcveCud is effective.",
            "The GcveCud is updating but update not yet effective.",
            "The GcveCud is cancelling and cancellation not yet effective.",
            "The GcveCud was cancelled.",
            "The GcveCud has expired."
          ],
          "readOnly": true,
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "PENDING_ACTIVATION",
            "ACTIVE",
            "UPDATING",
            "CANCELLING",
            "CANCELLED",
            "EXPIRED"
          ]
        },
        "enterpriseDiscountPercentage": {
          "description": "Required. The EDP discount applied to the GcveCud in percentage.",
          "$ref": "Decimal"
        },
        "termMonths": {
          "type": "integer",
          "description": "Required. The term length of the GcveCud in months.",
          "format": "int32"
        },
        "cancelTime": {
          "format": "google-datetime",
          "description": "Deprecated: use `end_time` instead. Cancellation time at which the GcveCud got cancelled.",
          "type": "string",
          "deprecated": true
        },
        "hourlyCommitmentCost": {
          "$ref": "Money",
          "readOnly": true,
          "description": "Output only. The hourly commitment cost of the GcveCud. This is the hourly cost that customers pay for the GcveCud with all applicable discounts (including edp, general and custom cud discount) applied."
        },
        "hourlyOnDemandCommitment": {
          "readOnly": true,
          "$ref": "Money",
          "description": "Output only. The hourly on-demand committed price of the GcveCud."
        },
        "hourlySavings": {
          "$ref": "Money",
          "description": "Optional. The hourly savings of the GcveCud."
        },
        "billingAccount": {
          "description": "Output only. The billing account name which owns the GcveCud and receives the bill. For example, billingAccounts/012345-567890-ABCDEF.",
          "readOnly": true,
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Start time at which the GcveCud is effective.",
          "format": "google-datetime"
        },
        "gcveNodeCommitments": {
          "type": "array",
          "items": {
            "$ref": "GcveNodeCommitment"
          },
          "description": "Required. The gcve nodes committed in the GcveCud."
        },
        "expireTime": {
          "deprecated": true,
          "format": "google-datetime",
          "description": "Deprecated: use `end_time` instead. Expire time at which the GcveCud is ineffective.",
          "type": "string"
        },
        "createTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. Creation time of this GcveCud.",
          "readOnly": true
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Last update timestamp of this GcveCud.",
          "format": "google-datetime"
        },
        "endTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. End time at which the GcveCud was terminated/cancelled or expect to be terminated if it's not terminated yet.",
          "format": "google-datetime"
        },
        "paymentType": {
          "description": "Required. The payment type of the GcveCud.",
          "enumDescriptions": [
            "Payment type is unspecified.",
            "Post-payment.",
            "Pre-payment."
          ],
          "type": "string",
          "enum": [
            "PAYMENT_TYPE_UNSPECIFIED",
            "POST_PAYMENT",
            "PRE_PAYMENT"
          ]
        }
      },
      "type": "object",
      "description": "GcveCud represents a GCVE Committed Use Discount."
    },
    "Decimal": {
      "type": "object",
      "description": "A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's [BigDecimal](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html) or Python's [decimal.Decimal](https://docs.python.org/3/library/decimal.html).",
      "properties": {
        "value": {
          "description": "The decimal value, as a string. The string representation consists of an optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of zero or more decimal digits (\"the integer\"), optionally followed by a fraction, optionally followed by an exponent. An empty string **should** be interpreted as `0`. The fraction consists of a decimal point followed by zero or more decimal digits. The string must contain at least one digit in either the integer or the fraction. The number formed by the sign, the integer and the fraction is referred to as the significand. The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or more decimal digits. Services **should** normalize decimal values before storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -\u003e `2.5`). - Replacing a zero-length integer value with `0` (`.5` -\u003e `0.5`). - Coercing the exponent character to upper-case, with explicit sign (`2.5e8` -\u003e `2.5E+8`). - Removing an explicitly-provided zero exponent (`2.5E0` -\u003e `2.5`). Services **may** perform additional normalization based on its own needs and the internal decimal implementation selected, such as shifting the decimal point and exponent value together (example: `2.5E-1` \u003c-\u003e `0.25`). Additionally, services **may** preserve trailing zeroes in the fraction to indicate increased precision, but are not required to do so. Note that only the `.` character is supported to divide the integer and the fraction; `,` **should not** be supported regardless of locale. Additionally, thousand separators **should not** be supported. If a service does support them, values **must** be normalized. The ENBF grammar is: DecimalString = '' | [Sign] Significand [Exponent]; Sign = '+' | '-'; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [Sign] Digits; Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; Services **should** clearly document the range of supported values, the maximum supported precision (total number of digits), and, if applicable, the scale (number of digits after the decimal point), as well as how it behaves when receiving out-of-bounds values. Services **may** choose to accept values passed as input even when the value has a higher precision or scale than the service supports, and **should** round the value to fit the supported scale. Alternatively, the service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service receives a value outside of the supported range.",
          "type": "string"
        }
      },
      "id": "Decimal"
    },
    "GcveNodePricingInfo": {
      "properties": {
        "listPaygoHourlyPrice": {
          "readOnly": true,
          "$ref": "Money",
          "description": "Output only. The list PAYGO price for this node."
        },
        "name": {
          "description": "Identifier. The resource name of this GcveNodePricingInfo. This is derived from vmwareengine.googleapis.com/v1/projects/*/locations/*/nodeTypes.nodeTypeId Format: projects/{project}/locations/{location}/gcveNodePricingInfo/standard-72 projects/{project}/locations/{location}/gcveNodePricingInfo/storage-only-standard-72 projects/{project}/locations/{location}/gcveNodePricingInfo/standard-128",
          "type": "string"
        },
        "contractPaygoHourlyPrice": {
          "$ref": "Money",
          "readOnly": true,
          "description": "Output only. The contractual PAYGO price for this node (i.e. list PAYGO with edp applied)."
        },
        "nodeDescription": {
          "readOnly": true,
          "description": "Output only. A human readable description of the node.",
          "type": "string"
        },
        "enterpriseDiscountPercentage": {
          "readOnly": true,
          "$ref": "Decimal",
          "description": "Output only. The EDP discount applied to the gcve node in percentage."
        },
        "postpayPricingInfoPerTerm": {
          "description": "Output only. The postpay pricing info of the gcve node for each selected term length. Terms are represented in months. Supported keys: 12, 36 with corresponding values representing pricing info for 1Y commitment and 3Y commitment.",
          "additionalProperties": {
            "$ref": "TermPricingInfo"
          },
          "readOnly": true,
          "type": "object"
        },
        "pricingInfoPerCommitmentModel": {
          "type": "array",
          "readOnly": true,
          "description": "Output only. The pricing info of the gcve node for each commitment model. This field will replace fields 2-5, 7 in the future with the introduction of FLEX, BYOL commitment models.",
          "items": {
            "$ref": "CommitmentModelPricingInfo"
          }
        },
        "prepayPricingInfoPerTerm": {
          "additionalProperties": {
            "$ref": "TermPricingInfo"
          },
          "description": "Output only. The prepay pricing info of the gcve node for each selected term length. Terms are represented in months. Supported keys: 12, 36 with corresponding values representing pricing info for 1Y commitment and 3Y commitment.",
          "readOnly": true,
          "type": "object"
        }
      },
      "description": "GcveNodePricingInfo represents the pricing information of a gcve node.",
      "type": "object",
      "id": "GcveNodePricingInfo"
    },
    "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.",
          "items": {
            "$ref": "Location"
          },
          "type": "array"
        },
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        }
      }
    },
    "Money": {
      "id": "Money",
      "properties": {
        "units": {
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
          "format": "int64",
          "type": "string"
        },
        "currencyCode": {
          "description": "The three-letter currency code defined in ISO 4217.",
          "type": "string"
        },
        "nanos": {
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
          "format": "int32",
          "type": "integer"
        }
      },
      "description": "Represents an amount of money with its currency type.",
      "type": "object"
    },
    "ListGcveCudsResponse": {
      "properties": {
        "gcveCuds": {
          "type": "array",
          "description": "The GcveCuds owned by the specified parent.",
          "items": {
            "$ref": "GcveCud"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page.",
          "type": "string"
        }
      },
      "id": "ListGcveCudsResponse",
      "description": "Message for response to listing GcveCuds.",
      "type": "object"
    },
    "GcveNodeCommitment": {
      "description": "GcveNodeCommitment represents a committed gcve node in a GcveCud.",
      "id": "GcveNodeCommitment",
      "type": "object",
      "properties": {
        "customCudDiscountPercentage": {
          "description": "Optional. The additional contractual discount applied to the node's CUD.",
          "$ref": "Decimal"
        },
        "gcveNodePricingInfo": {
          "$ref": "GcveNodePricingInfo",
          "description": "Required. The pricing info of the gcve node which is committed."
        },
        "committedNodeCount": {
          "deprecated": true,
          "type": "integer",
          "description": "Optional. Deprecated: use `committed_node_count_decimal` instead. The quantity committed for the gcve node.",
          "format": "int32"
        },
        "utilizedNodeCount": {
          "$ref": "Decimal",
          "description": "Output only. The utilized node count of the gcve node.",
          "readOnly": true
        },
        "commitmentModel": {
          "description": "Required. The commitment model of the gcve node.",
          "type": "string",
          "enum": [
            "COMMITMENT_MODEL_UNSPECIFIED",
            "BYOL",
            "FLEX",
            "VCF",
            "LEGACY"
          ],
          "enumDescriptions": [
            "Unspecified commitment model.",
            "BYOL commitment model which allows customers to bring their VCF license to GCVE.",
            "Flex commitment model which allows customers to cancel under certain conditions.",
            "VCF commitment model which customers buy entire stack from Google.",
            "Legacy commitment model which customers buy entire stack from Google. This offering is EoS and replaced by VCF."
          ]
        },
        "committedNodeCountDecimal": {
          "$ref": "Decimal",
          "description": "Optional. The quantity committed for the gcve node in decimal format."
        }
      }
    },
    "CommitmentModelPricingInfo": {
      "properties": {
        "postpayPricingInfoPerTerm": {
          "readOnly": true,
          "type": "object",
          "description": "Output only. The postpay pricing info of the gcve node for each selected term length. Terms are represented in months. Supported keys: 12, 36 with corresponding values representing pricing info for 1Y commitment and 3Y commitment.",
          "additionalProperties": {
            "$ref": "TermPricingInfo"
          }
        },
        "contractPaygoHourlyPrice": {
          "$ref": "Money",
          "description": "Output only. The contractual PAYGO price for this node (i.e. list PAYGO with edp applied).",
          "readOnly": true
        },
        "prepayPricingInfoPerTerm": {
          "readOnly": true,
          "description": "Output only. The prepay pricing info of the gcve node for each selected term length. Terms are represented in months. Supported keys: 12, 36 with corresponding values representing pricing info for 1Y commitment and 3Y commitment.",
          "additionalProperties": {
            "$ref": "TermPricingInfo"
          },
          "type": "object"
        },
        "enterpriseDiscountPercentage": {
          "readOnly": true,
          "$ref": "Decimal",
          "description": "Output only. The EDP discount applied to the gcve node in percentage."
        },
        "commitmentModel": {
          "type": "string",
          "enum": [
            "COMMITMENT_MODEL_UNSPECIFIED",
            "BYOL",
            "FLEX",
            "VCF",
            "LEGACY"
          ],
          "enumDescriptions": [
            "Unspecified commitment model.",
            "BYOL commitment model which allows customers to bring their VCF license to GCVE.",
            "Flex commitment model which allows customers to cancel under certain conditions.",
            "VCF commitment model which customers buy entire stack from Google.",
            "Legacy commitment model which customers buy entire stack from Google. This offering is EoS and replaced by VCF."
          ],
          "description": "Output only. The commitment model for the pricing info.",
          "readOnly": true
        },
        "listPaygoHourlyPrice": {
          "$ref": "Money",
          "description": "Output only. The list PAYGO price for this node.",
          "readOnly": true
        }
      },
      "id": "CommitmentModelPricingInfo",
      "type": "object",
      "description": "CommitmentModelPricingInfo contains pricing info of a gcve node for a specific commitment model."
    },
    "TermPricingInfo": {
      "type": "object",
      "description": "TermPricingInfo contains pricing info of a gcve node for a specific term length.",
      "id": "TermPricingInfo",
      "properties": {
        "listCudHourlyPrice": {
          "description": "Output only. Hourly price of the gcve node with only general CUD discount (without customer-specific discounts, such as edp or custom CUD discount) applied for the selected term.",
          "$ref": "Money",
          "readOnly": true
        },
        "customCudDiscountPercentage": {
          "$ref": "Decimal",
          "readOnly": true,
          "description": "Output only. The additional contractual discount applied to the commitment of the node."
        },
        "contractCudHourlyPrice": {
          "description": "Output only. Hourly price of the gcve node with all applicable discounts (including edp, general and custom cud discount) applied for the selected term.",
          "readOnly": true,
          "$ref": "Money"
        }
      }
    },
    "Location": {
      "id": "Location",
      "description": "A resource that represents a Google Cloud location.",
      "properties": {
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "type": "object"
        },
        "metadata": {
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          }
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`"
        },
        "displayName": {
          "type": "string",
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\"."
        }
      },
      "type": "object"
    }
  },
  "ownerDomain": "google.com",
  "rootUrl": "https://enterprisepurchasing.googleapis.com/",
  "discoveryVersion": "v1",
  "servicePath": "",
  "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."
        }
      }
    }
  },
  "name": "enterprisepurchasing",
  "protocol": "rest",
  "fullyEncodeReservedExpansion": true,
  "id": "enterprisepurchasing:v1alpha",
  "batchPath": "batch",
  "version_module": true,
  "documentationLink": "https://cloud.google.com/bare-metal",
  "ownerName": "Google",
  "title": "Enterprise Purchasing API"
}
