{
  "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": {
      "description": "OAuth access token.",
      "type": "string",
      "location": "query"
    },
    "prettyPrint": {
      "default": "true",
      "location": "query",
      "description": "Returns response with indentations and line breaks.",
      "type": "boolean"
    },
    "callback": {
      "location": "query",
      "description": "JSONP",
      "type": "string"
    },
    "alt": {
      "location": "query",
      "description": "Data format for response.",
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "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"
      ]
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string"
    },
    "quotaUser": {
      "location": "query",
      "type": "string",
      "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."
    },
    "key": {
      "location": "query",
      "type": "string",
      "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."
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "$.xgafv": {
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query",
      "description": "V1 error format.",
      "type": "string",
      "enum": [
        "1",
        "2"
      ]
    },
    "uploadType": {
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string"
    }
  },
  "version_module": true,
  "schemas": {
    "ListLogicalProductsResponse": {
      "id": "ListLogicalProductsResponse",
      "properties": {
        "logicalProducts": {
          "type": "array",
          "description": "Matched LogicalProducts",
          "items": {
            "$ref": "LogicalProduct"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response message for ListLogicalProducts.",
      "type": "object"
    },
    "ListProductSuitesResponse": {
      "id": "ListProductSuitesResponse",
      "description": "Response message for ListProductSuites.",
      "properties": {
        "productSuites": {
          "type": "array",
          "description": "Matched ProductSuites",
          "items": {
            "$ref": "ProductSuite"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ProductSuite": {
      "type": "object",
      "description": "Represents a unified grouping of products sharing a common brand and market positioning.",
      "properties": {
        "title": {
          "type": "string",
          "description": "Title of the ProductSuite."
        },
        "name": {
          "description": "Identifier. The resource name of the ProductSuite. Format: productSuites/{product_suite}",
          "type": "string"
        },
        "replaced": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Indicates whether the product suite has been replaced. If `false`, the product suite is active. If `true`, the product suite has been replaced by another type, and the `replacement` field contains the resource name of that replacement."
        },
        "replacement": {
          "description": "Output only. The resource name of the Logical Entity that the product suite is replaced by. This field is only populated when this product suite is replaced by some other type. Eg: logicalProducts/{logical_product}, logicalProducts/{logical_product}/variants/{variant}, etc.",
          "readOnly": true,
          "type": "string"
        },
        "logicalProducts": {
          "readOnly": true,
          "items": {
            "type": "string"
          },
          "description": "Output only. LogicalProducts under this suite. Format: logicalProducts/{logical_product}",
          "type": "array"
        }
      },
      "id": "ProductSuite"
    },
    "LogicalProductVariant": {
      "id": "LogicalProductVariant",
      "type": "object",
      "properties": {
        "replaced": {
          "description": "Output only. Indicates whether the logical product variant has been replaced. If `false`, the variant is active. If `true`, the variant has been replaced by another type, and the `replacement` field contains the resource name of that replacement.",
          "type": "boolean",
          "readOnly": true
        },
        "lifecycleState": {
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false
          ],
          "readOnly": true,
          "type": "string",
          "enum": [
            "LIFECYCLE_STATE_UNSPECIFIED",
            "LIFECYCLE_STATE_PUBLIC_PREVIEW",
            "LIFECYCLE_STATE_PRIVATE_GA",
            "LIFECYCLE_STATE_GA",
            "LIFECYCLE_STATE_DEPRECATED"
          ],
          "enumDescriptions": [
            "The default value. This value is used if the lifecycle state is not set.",
            "The entity is in Public Preview. It is available to all customers, but may not be feature-complete or have full support guarantees.",
            "Deprecated: Private General Availability entities are not exposed. The entity is in Private General Availability. It is fully supported and stable, but only available to a select group of customers.",
            "The entity is Generally Available. It is fully supported, stable, and available to all customers.",
            "The entity is deprecated. It is no longer recommended for use and may be removed in a future version."
          ],
          "description": "Output only. Current Lifecycle state of the logical product variant."
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the LogicalProductVariant. Format: logicalProducts/{logical_product}/variants/{variant}"
        },
        "replacement": {
          "readOnly": true,
          "description": "Output only. The resource name of the Logical Entity that the logical product variant is replaced by. This field is only populated when this logical product variant is replaced by some other type. Eg: logicalProducts/{logical_product}, productSuites/{product_suite}, etc.",
          "type": "string"
        },
        "title": {
          "type": "string",
          "description": "Display name of the LogicalProductVariant."
        }
      },
      "description": "Represents a distinct offering derived from a primary product that retains core functionalities but offers specialized features for a specific market segment."
    },
    "LookupEntityResponse": {
      "id": "LookupEntityResponse",
      "type": "object",
      "description": "Response message for LookupEntity.",
      "properties": {
        "logicalProduct": {
          "$ref": "LogicalProduct",
          "description": "Matched LogicalProduct."
        },
        "logicalProductVariant": {
          "$ref": "LogicalProductVariant",
          "description": "Matched LogicalProductVariant."
        },
        "productSuite": {
          "description": "Matched ProductSuite.",
          "$ref": "ProductSuite"
        }
      }
    },
    "ListLogicalProductVariantsResponse": {
      "description": "Response message for ListLogicalProductVariants.",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "logicalProductVariants": {
          "type": "array",
          "items": {
            "$ref": "LogicalProductVariant"
          },
          "description": "Matched LogicalProductVariants"
        }
      },
      "type": "object",
      "id": "ListLogicalProductVariantsResponse"
    },
    "LogicalProduct": {
      "type": "object",
      "id": "LogicalProduct",
      "properties": {
        "replacement": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The resource name of the Logical Entity that the logical product is replaced by. This field is only populated when this logical product is replaced by some other type. Eg: logicalProducts/{logical_product}/variants/{variant}, productSuites/{product_suite}, etc."
        },
        "replaced": {
          "description": "Output only. Indicates whether the logical product has been replaced. If `false`, the product is active. If `true`, the product has been replaced by another type, and the `replacement` field contains the resource name of that replacement.",
          "readOnly": true,
          "type": "boolean"
        },
        "lifecycleState": {
          "enumDescriptions": [
            "The default value. This value is used if the lifecycle state is not set.",
            "The entity is in Public Preview. It is available to all customers, but may not be feature-complete or have full support guarantees.",
            "Deprecated: Private General Availability entities are not exposed. The entity is in Private General Availability. It is fully supported and stable, but only available to a select group of customers.",
            "The entity is Generally Available. It is fully supported, stable, and available to all customers.",
            "The entity is deprecated. It is no longer recommended for use and may be removed in a future version."
          ],
          "description": "Output only. Current Lifecycle state of the logical product.",
          "enumDeprecated": [
            false,
            false,
            true,
            false,
            false
          ],
          "readOnly": true,
          "type": "string",
          "enum": [
            "LIFECYCLE_STATE_UNSPECIFIED",
            "LIFECYCLE_STATE_PUBLIC_PREVIEW",
            "LIFECYCLE_STATE_PRIVATE_GA",
            "LIFECYCLE_STATE_GA",
            "LIFECYCLE_STATE_DEPRECATED"
          ]
        },
        "variants": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "readOnly": true,
          "description": "Output only. Child variant resource references. Format: logicalProducts/{logical_product}/variants/{variant}"
        },
        "name": {
          "description": "Identifier. The resource name of the LogicalProduct. Format: logicalProducts/{logical_product}.",
          "type": "string"
        },
        "productSuite": {
          "description": "Product suite associated with the logical product. Format: productSuites/{product_suite}.",
          "type": "string"
        },
        "title": {
          "description": "Display name of the LogicalProduct.",
          "type": "string"
        }
      },
      "description": "Represents an independent service offering that can be provisioned by a customer."
    }
  },
  "canonicalName": "Cloud Product Registry",
  "title": "Cloud Product Registry API",
  "kind": "discovery#restDescription",
  "ownerName": "Google",
  "discoveryVersion": "v1",
  "id": "cloudproductregistry:v1",
  "protocol": "rest",
  "rootUrl": "https://cloudproductregistry.googleapis.com/",
  "servicePath": "",
  "baseUrl": "https://cloudproductregistry.googleapis.com/",
  "basePath": "",
  "resources": {
    "logicalProducts": {
      "methods": {
        "get": {
          "httpMethod": "GET",
          "flatPath": "v1/logicalProducts/{logicalProductsId}",
          "response": {
            "$ref": "LogicalProduct"
          },
          "parameterOrder": [
            "name"
          ],
          "description": "Gets details of a LogicalProduct.",
          "path": "v1/{+name}",
          "id": "cloudproductregistry.logicalProducts.get",
          "parameters": {
            "name": {
              "type": "string",
              "required": true,
              "description": "Required. The name of the LogicalProduct to retrieve. Format: logicalProducts/{logical_product}",
              "pattern": "^logicalProducts/[^/]+$",
              "location": "path"
            }
          }
        },
        "list": {
          "parameters": {
            "pageSize": {
              "description": "Optional. The maximum number of logical products to return. The service may return fewer than this value. If unspecified, at most 100 logical products will be returned. The maximum value is 500; values above 500 will be coerced to 500.",
              "format": "int32",
              "location": "query",
              "type": "integer"
            },
            "filter": {
              "description": "Optional. The filter expression for listing logical products. Filter syntax: https://google.aip.dev/160 Supported fields: suite_id",
              "type": "string",
              "location": "query"
            },
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "Optional. A page token, received from a previous `ListLogicalProducts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListLogicalProducts` must match the call that provided the page token."
            }
          },
          "parameterOrder": [],
          "path": "v1/logicalProducts",
          "id": "cloudproductregistry.logicalProducts.list",
          "response": {
            "$ref": "ListLogicalProductsResponse"
          },
          "flatPath": "v1/logicalProducts",
          "httpMethod": "GET",
          "description": "Lists LogicalProducts matching given criteria."
        },
        "lookupEntity": {
          "path": "v1/{+lookupUri}:lookupEntity",
          "description": "Look up entities.",
          "parameters": {
            "lookupUri": {
              "required": true,
              "type": "string",
              "location": "path",
              "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
              "pattern": "^logicalProducts/[^/]+$"
            }
          },
          "httpMethod": "GET",
          "parameterOrder": [
            "lookupUri"
          ],
          "flatPath": "v1/logicalProducts/{logicalProductsId}:lookupEntity",
          "id": "cloudproductregistry.logicalProducts.lookupEntity",
          "response": {
            "$ref": "LookupEntityResponse"
          }
        }
      },
      "resources": {
        "variants": {
          "methods": {
            "get": {
              "parameters": {
                "name": {
                  "description": "Required. The name of the LogicalProductVariant to retrieve. Format: logicalProducts/{logical_product}/variants/{variant}",
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^logicalProducts/[^/]+/variants/[^/]+$"
                }
              },
              "description": "Get details of a LogicalProductVariant.",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "id": "cloudproductregistry.logicalProducts.variants.get",
              "httpMethod": "GET",
              "response": {
                "$ref": "LogicalProductVariant"
              },
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants/{variantsId}"
            },
            "lookupEntity": {
              "httpMethod": "GET",
              "id": "cloudproductregistry.logicalProducts.variants.lookupEntity",
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants/{variantsId}:lookupEntity",
              "response": {
                "$ref": "LookupEntityResponse"
              },
              "description": "Look up entities.",
              "parameterOrder": [
                "lookupUri"
              ],
              "path": "v1/{+lookupUri}:lookupEntity",
              "parameters": {
                "lookupUri": {
                  "type": "string",
                  "pattern": "^logicalProducts/[^/]+/variants/[^/]+$",
                  "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
                  "location": "path",
                  "required": true
                }
              }
            },
            "list": {
              "path": "v1/{+parent}/variants",
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants",
              "parameters": {
                "pageSize": {
                  "format": "int32",
                  "description": "Optional. The maximum number of logical product variants to return. The service may return fewer than this value. If unspecified, at most 100 logical product variants will be returned. The maximum value is 500; values above 500 will be coerced to 500.",
                  "location": "query",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "Optional. A page token, received from a previous `ListLogicalProductVariants` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListLogicalProductVariants` must match the call that provided the page token.",
                  "type": "string",
                  "location": "query"
                },
                "parent": {
                  "type": "string",
                  "location": "path",
                  "pattern": "^logicalProducts/[^/]+$",
                  "description": "Required. Parent logical product id. Format: logicalProducts/{logical_product}",
                  "required": true
                }
              },
              "response": {
                "$ref": "ListLogicalProductVariantsResponse"
              },
              "id": "cloudproductregistry.logicalProducts.variants.list",
              "httpMethod": "GET",
              "parameterOrder": [
                "parent"
              ],
              "description": "Lists LogicalProductVariants matching given criteria."
            }
          }
        }
      }
    },
    "productSuites": {
      "methods": {
        "list": {
          "description": "Lists ProductSuites.",
          "id": "cloudproductregistry.productSuites.list",
          "parameterOrder": [],
          "httpMethod": "GET",
          "parameters": {
            "pageSize": {
              "location": "query",
              "type": "integer",
              "description": "Optional. The maximum number of suites to return. The service may return fewer than this value. If unspecified, at most 100 suites will be returned. The maximum value is 500; values above 500 will be coerced to 500.",
              "format": "int32"
            },
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "Optional. A page token, received from a previous `ListProductSuites` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListProductSuites` must match the call that provided the page token."
            }
          },
          "response": {
            "$ref": "ListProductSuitesResponse"
          },
          "flatPath": "v1/productSuites",
          "path": "v1/productSuites"
        },
        "get": {
          "parameters": {
            "name": {
              "required": true,
              "type": "string",
              "description": "Required. The name of the ProductSuite to retrieve. Format: productSuites/{product_suite}",
              "pattern": "^productSuites/[^/]+$",
              "location": "path"
            }
          },
          "description": "Get details of a ProductSuite.",
          "flatPath": "v1/productSuites/{productSuitesId}",
          "parameterOrder": [
            "name"
          ],
          "id": "cloudproductregistry.productSuites.get",
          "path": "v1/{+name}",
          "response": {
            "$ref": "ProductSuite"
          },
          "httpMethod": "GET"
        },
        "lookupEntity": {
          "parameters": {
            "lookupUri": {
              "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
              "type": "string",
              "location": "path",
              "required": true,
              "pattern": "^productSuites/[^/]+$"
            }
          },
          "path": "v1/{+lookupUri}:lookupEntity",
          "id": "cloudproductregistry.productSuites.lookupEntity",
          "parameterOrder": [
            "lookupUri"
          ],
          "description": "Look up entities.",
          "response": {
            "$ref": "LookupEntityResponse"
          },
          "flatPath": "v1/productSuites/{productSuitesId}:lookupEntity",
          "httpMethod": "GET"
        }
      }
    }
  },
  "batchPath": "batch",
  "mtlsRootUrl": "https://cloudproductregistry.mtls.googleapis.com/",
  "fullyEncodeReservedExpansion": true,
  "documentationLink": "https://docs.cloud.google.com/product-registry",
  "ownerDomain": "google.com",
  "description": "Cloud Product Registry API provides capabilities to access all first Google Cloud products.",
  "revision": "20261021",
  "version": "v1",
  "name": "cloudproductregistry"
}
