{
  "basePath": "",
  "protocol": "rest",
  "kind": "discovery#restDescription",
  "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": "cloudproductregistry:v1",
  "servicePath": "",
  "title": "Cloud Product Registry API",
  "description": "cloudproductregistry.googleapis.com API.",
  "revision": "20260603",
  "version_module": true,
  "schemas": {
    "ProductSuite": {
      "id": "ProductSuite",
      "description": "Represents a unified grouping of products sharing a common brand and market positioning.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The resource name of the ProductSuite. Format: productSuites/{product_suite}",
          "type": "string"
        },
        "title": {
          "description": "Title of the ProductSuite.",
          "type": "string"
        },
        "logicalProducts": {
          "description": "Output only. LogicalProducts under this suite. Format: logicalProducts/{logical_product}",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "replaced": {
          "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.",
          "readOnly": true,
          "type": "boolean"
        },
        "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"
        }
      }
    },
    "ListProductSuitesResponse": {
      "id": "ListProductSuitesResponse",
      "description": "Response message for ListProductSuites.",
      "type": "object",
      "properties": {
        "productSuites": {
          "description": "Matched ProductSuites",
          "type": "array",
          "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"
        }
      }
    },
    "LogicalProduct": {
      "id": "LogicalProduct",
      "description": "Represents an independent service offering that can be provisioned by a customer.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The resource name of the LogicalProduct. Format: logicalProducts/{logical_product}.",
          "type": "string"
        },
        "title": {
          "description": "Display name of the LogicalProduct.",
          "type": "string"
        },
        "productSuite": {
          "description": "Product suite associated with the logical product. Format: productSuites/{product_suite}.",
          "type": "string"
        },
        "variants": {
          "description": "Output only. Child variant resource references. Format: logicalProducts/{logical_product}/variants/{variant}",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "lifecycleState": {
          "description": "Output only. Current Lifecycle state of the logical product.",
          "readOnly": true,
          "type": "string",
          "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.",
            "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."
          ],
          "enum": [
            "LIFECYCLE_STATE_UNSPECIFIED",
            "LIFECYCLE_STATE_PUBLIC_PREVIEW",
            "LIFECYCLE_STATE_PRIVATE_GA",
            "LIFECYCLE_STATE_GA",
            "LIFECYCLE_STATE_DEPRECATED"
          ]
        },
        "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"
        },
        "replacement": {
          "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.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ListLogicalProductsResponse": {
      "id": "ListLogicalProductsResponse",
      "description": "Response message for ListLogicalProducts.",
      "type": "object",
      "properties": {
        "logicalProducts": {
          "description": "Matched LogicalProducts",
          "type": "array",
          "items": {
            "$ref": "LogicalProduct"
          }
        },
        "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"
        }
      }
    },
    "LogicalProductVariant": {
      "id": "LogicalProductVariant",
      "description": "Represents a distinct offering derived from a primary product that retains core functionalities but offers specialized features for a specific market segment.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The resource name of the LogicalProductVariant. Format: logicalProducts/{logical_product}/variants/{variant}",
          "type": "string"
        },
        "title": {
          "description": "Display name of the LogicalProductVariant.",
          "type": "string"
        },
        "lifecycleState": {
          "description": "Output only. Current Lifecycle state of the logical product variant.",
          "readOnly": true,
          "type": "string",
          "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.",
            "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."
          ],
          "enum": [
            "LIFECYCLE_STATE_UNSPECIFIED",
            "LIFECYCLE_STATE_PUBLIC_PREVIEW",
            "LIFECYCLE_STATE_PRIVATE_GA",
            "LIFECYCLE_STATE_GA",
            "LIFECYCLE_STATE_DEPRECATED"
          ]
        },
        "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.",
          "readOnly": true,
          "type": "boolean"
        },
        "replacement": {
          "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.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ListLogicalProductVariantsResponse": {
      "id": "ListLogicalProductVariantsResponse",
      "description": "Response message for ListLogicalProductVariants.",
      "type": "object",
      "properties": {
        "logicalProductVariants": {
          "description": "Matched LogicalProductVariants",
          "type": "array",
          "items": {
            "$ref": "LogicalProductVariant"
          }
        },
        "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"
        }
      }
    },
    "LookupEntityResponse": {
      "id": "LookupEntityResponse",
      "description": "Response message for LookupEntity.",
      "type": "object",
      "properties": {
        "logicalProduct": {
          "description": "Matched LogicalProduct.",
          "$ref": "LogicalProduct"
        },
        "logicalProductVariant": {
          "description": "Matched LogicalProductVariant.",
          "$ref": "LogicalProductVariant"
        },
        "productSuite": {
          "description": "Matched ProductSuite.",
          "$ref": "ProductSuite"
        }
      }
    }
  },
  "resources": {
    "productSuites": {
      "methods": {
        "get": {
          "id": "cloudproductregistry.productSuites.get",
          "path": "v1/{+name}",
          "flatPath": "v1/productSuites/{productSuitesId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. The name of the ProductSuite to retrieve. Format: productSuites/{product_suite}",
              "pattern": "^productSuites/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "ProductSuite"
          },
          "description": "Get details of a ProductSuite."
        },
        "list": {
          "id": "cloudproductregistry.productSuites.list",
          "path": "v1/productSuites",
          "flatPath": "v1/productSuites",
          "httpMethod": "GET",
          "parameters": {
            "pageSize": {
              "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.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "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.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [],
          "response": {
            "$ref": "ListProductSuitesResponse"
          },
          "description": "Lists ProductSuites."
        },
        "lookupEntity": {
          "id": "cloudproductregistry.productSuites.lookupEntity",
          "path": "v1/{+lookupUri}:lookupEntity",
          "flatPath": "v1/productSuites/{productSuitesId}:lookupEntity",
          "httpMethod": "GET",
          "parameters": {
            "lookupUri": {
              "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
              "pattern": "^productSuites/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "lookupUri"
          ],
          "response": {
            "$ref": "LookupEntityResponse"
          },
          "description": "Look up entities."
        }
      }
    },
    "logicalProducts": {
      "methods": {
        "get": {
          "id": "cloudproductregistry.logicalProducts.get",
          "path": "v1/{+name}",
          "flatPath": "v1/logicalProducts/{logicalProductsId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. The name of the LogicalProduct to retrieve. Format: logicalProducts/{logical_product}",
              "pattern": "^logicalProducts/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "LogicalProduct"
          },
          "description": "Gets details of a LogicalProduct."
        },
        "list": {
          "id": "cloudproductregistry.logicalProducts.list",
          "path": "v1/logicalProducts",
          "flatPath": "v1/logicalProducts",
          "httpMethod": "GET",
          "parameters": {
            "filter": {
              "description": "Optional. The filter expression for listing logical products. Filter syntax: https://google.aip.dev/160 Supported fields: suite_id",
              "location": "query",
              "type": "string"
            },
            "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.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "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.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [],
          "response": {
            "$ref": "ListLogicalProductsResponse"
          },
          "description": "Lists LogicalProducts matching given criteria."
        },
        "lookupEntity": {
          "id": "cloudproductregistry.logicalProducts.lookupEntity",
          "path": "v1/{+lookupUri}:lookupEntity",
          "flatPath": "v1/logicalProducts/{logicalProductsId}:lookupEntity",
          "httpMethod": "GET",
          "parameters": {
            "lookupUri": {
              "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
              "pattern": "^logicalProducts/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "lookupUri"
          ],
          "response": {
            "$ref": "LookupEntityResponse"
          },
          "description": "Look up entities."
        }
      },
      "resources": {
        "variants": {
          "methods": {
            "get": {
              "id": "cloudproductregistry.logicalProducts.variants.get",
              "path": "v1/{+name}",
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants/{variantsId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the LogicalProductVariant to retrieve. Format: logicalProducts/{logical_product}/variants/{variant}",
                  "pattern": "^logicalProducts/[^/]+/variants/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "LogicalProductVariant"
              },
              "description": "Get details of a LogicalProductVariant."
            },
            "list": {
              "id": "cloudproductregistry.logicalProducts.variants.list",
              "path": "v1/{+parent}/variants",
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "Required. Parent logical product id. Format: logicalProducts/{logical_product}",
                  "pattern": "^logicalProducts/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "pageSize": {
                  "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",
                  "format": "int32"
                },
                "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.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListLogicalProductVariantsResponse"
              },
              "description": "Lists LogicalProductVariants matching given criteria."
            },
            "lookupEntity": {
              "id": "cloudproductregistry.logicalProducts.variants.lookupEntity",
              "path": "v1/{+lookupUri}:lookupEntity",
              "flatPath": "v1/logicalProducts/{logicalProductsId}/variants/{variantsId}:lookupEntity",
              "httpMethod": "GET",
              "parameters": {
                "lookupUri": {
                  "description": "Required. Entity uri to look up. Supported Formats: logicalProducts/{logical_product} logicalProducts/{logical_product}/variants/{variant} productSuites/{product_suite}",
                  "pattern": "^logicalProducts/[^/]+/variants/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "lookupUri"
              ],
              "response": {
                "$ref": "LookupEntityResponse"
              },
              "description": "Look up entities."
            }
          }
        }
      }
    }
  },
  "canonicalName": "Cloud Product Registry",
  "documentationLink": "https://docs.cloud.google.com/product-registry",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "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"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "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.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "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.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "version": "v1",
  "discoveryVersion": "v1",
  "mtlsRootUrl": "https://cloudproductregistry.mtls.googleapis.com/",
  "ownerName": "Google",
  "ownerDomain": "google.com",
  "rootUrl": "https://cloudproductregistry.googleapis.com/",
  "name": "cloudproductregistry",
  "baseUrl": "https://cloudproductregistry.googleapis.com/",
  "batchPath": "batch"
}
