{
  "swagger": "2.0",
  "info": {
    "title": "Product",
    "version": "version not set"
  },
  "tags": [
    {
      "name": "ProductService"
    },
    {
      "name": "ProductCategoryService"
    },
    {
      "name": "BrandService"
    },
    {
      "name": "ProductInternalService"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1/product": {
      "get": {
        "operationId": "ProductService_ListProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProductReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.id.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.id.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$like",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.name.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.name.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$like",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.internal.$eq",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.internal.$neq",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.internal.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.internal.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProductService"
        ]
      },
      "post": {
        "operationId": "ProductService_CreateProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Product"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1CreateProductRequest"
            }
          }
        ],
        "tags": [
          "ProductService"
        ]
      }
    },
    "/v1/product/brand": {
      "post": {
        "operationId": "BrandService_CreateBrand",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Brand"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1CreateBrandRequest"
            }
          }
        ],
        "tags": [
          "BrandService"
        ]
      }
    },
    "/v1/product/brand/list": {
      "post": {
        "operationId": "BrandService_ListBrand2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListBrandReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ListBrandRequest"
            }
          }
        ],
        "tags": [
          "BrandService"
        ]
      }
    },
    "/v1/product/brand/{brand.id}": {
      "put": {
        "operationId": "BrandService_UpdateBrand",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Brand"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "brand.id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "brand": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "logo": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "desc": {
                      "type": "string"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "BrandService"
        ]
      },
      "patch": {
        "operationId": "BrandService_UpdateBrand2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Brand"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "brand.id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "brand": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "logo": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "desc": {
                      "type": "string"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "BrandService"
        ]
      }
    },
    "/v1/product/brand/{id}": {
      "get": {
        "operationId": "BrandService_GetBrand",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Brand"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "BrandService"
        ]
      },
      "delete": {
        "operationId": "BrandService_DeleteBrand",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteBrandReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "BrandService"
        ]
      }
    },
    "/v1/product/brands": {
      "get": {
        "operationId": "BrandService_ListBrand",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListBrandReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.id.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.id.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.id.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.id.$like",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.code.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.code.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.code.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.code.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.code.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.code.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.code.$like",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "BrandService"
        ]
      }
    },
    "/v1/product/category": {
      "get": {
        "operationId": "ProductCategoryService_ListProductCategory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProductCategoryReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.key.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.key.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.key.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.key.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.key.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.key.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.key.$like",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.name.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.name.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.name.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.name.$like",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$eq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$neq",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$contains",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$starts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$nstarts_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$ends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$nends_with",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter.parent.$in",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.parent.$nin",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "filter.parent.$null",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.parent.$nnull",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.parent.$empty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.parent.$nempty",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter.parent.$like",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      },
      "post": {
        "operationId": "ProductCategoryService_CreateProductCategory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProductCategory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1CreateProductCategoryRequest"
            }
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      }
    },
    "/v1/product/category/list": {
      "post": {
        "operationId": "ProductCategoryService_ListProductCategory2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProductCategoryReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ListProductCategoryRequest"
            }
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      }
    },
    "/v1/product/category/{category.key}": {
      "put": {
        "operationId": "ProductCategoryService_UpdateProductCategory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProductCategory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "category.key",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "category": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      },
      "patch": {
        "operationId": "ProductCategoryService_UpdateProductCategory2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProductCategory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "category.key",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "category": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      }
    },
    "/v1/product/category/{key}": {
      "get": {
        "operationId": "ProductCategoryService_GetProductCategory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProductCategory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      },
      "delete": {
        "operationId": "ProductCategoryService_DeleteProductCategory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteProductCategoryReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ProductCategoryService"
        ]
      }
    },
    "/v1/product/list": {
      "post": {
        "operationId": "ProductService_ListProduct2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProductReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ListProductRequest"
            }
          }
        ],
        "tags": [
          "ProductService"
        ]
      }
    },
    "/v1/product/{id}": {
      "get": {
        "operationId": "ProductService_GetProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Product"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ProductService"
        ]
      },
      "delete": {
        "operationId": "ProductService_DeleteProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteProductReply"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ProductService"
        ]
      }
    },
    "/v1/product/{product.id}": {
      "put": {
        "operationId": "ProductService_UpdateProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Product"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "product.id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "product": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "shortDesc": {
                      "type": "string"
                    },
                    "desc": {
                      "type": "string"
                    },
                    "mainPic": {
                      "$ref": "#/definitions/v1ProductMedia"
                    },
                    "medias": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1ProductMedia"
                      }
                    },
                    "badges": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Badge"
                      }
                    },
                    "visibleFrom": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "visibleTo": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "isNew": {
                      "type": "boolean"
                    },
                    "mainCategoryKey": {
                      "type": "string",
                      "x-nullable": true
                    },
                    "categoryKeys": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "barcode": {
                      "type": "string"
                    },
                    "model": {
                      "type": "string"
                    },
                    "brandId": {
                      "type": "string",
                      "x-nullable": true
                    },
                    "isSaleable": {
                      "type": "boolean"
                    },
                    "saleableFrom": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "saleableTo": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "keywords": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Keyword"
                      }
                    },
                    "prices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1PriceParams"
                      },
                      "title": "could update or create new prices"
                    },
                    "isGiveaway": {
                      "type": "boolean"
                    },
                    "attributes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1ProductAttribute"
                      }
                    },
                    "campaignRules": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1CampaignRule"
                      }
                    },
                    "needShipping": {
                      "type": "boolean"
                    },
                    "stocks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Stock"
                      }
                    },
                    "content": {
                      "type": "object"
                    },
                    "active": {
                      "type": "boolean"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ]
            }
          }
        ],
        "tags": [
          "ProductService"
        ]
      },
      "patch": {
        "operationId": "ProductService_UpdateProduct2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Product"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "product.id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "product": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "shortDesc": {
                      "type": "string"
                    },
                    "desc": {
                      "type": "string"
                    },
                    "mainPic": {
                      "$ref": "#/definitions/v1ProductMedia"
                    },
                    "medias": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1ProductMedia"
                      }
                    },
                    "badges": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Badge"
                      }
                    },
                    "visibleFrom": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "visibleTo": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "isNew": {
                      "type": "boolean"
                    },
                    "mainCategoryKey": {
                      "type": "string",
                      "x-nullable": true
                    },
                    "categoryKeys": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "barcode": {
                      "type": "string"
                    },
                    "model": {
                      "type": "string"
                    },
                    "brandId": {
                      "type": "string",
                      "x-nullable": true
                    },
                    "isSaleable": {
                      "type": "boolean"
                    },
                    "saleableFrom": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "saleableTo": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "keywords": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Keyword"
                      }
                    },
                    "prices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1PriceParams"
                      },
                      "title": "could update or create new prices"
                    },
                    "isGiveaway": {
                      "type": "boolean"
                    },
                    "attributes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1ProductAttribute"
                      }
                    },
                    "campaignRules": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1CampaignRule"
                      }
                    },
                    "needShipping": {
                      "type": "boolean"
                    },
                    "stocks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/definitions/v1Stock"
                      }
                    },
                    "content": {
                      "type": "object"
                    },
                    "active": {
                      "type": "boolean"
                    }
                  }
                },
                "updateMask": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ]
            }
          }
        ],
        "tags": [
          "ProductService"
        ]
      }
    }
  },
  "definitions": {
    "googlerpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "operationBooleanFilterOperators": {
      "type": "object",
      "properties": {
        "$eq": {
          "type": "boolean",
          "x-nullable": true
        },
        "$neq": {
          "type": "boolean",
          "x-nullable": true
        },
        "$null": {
          "type": "boolean",
          "x-nullable": true
        },
        "$nnull": {
          "type": "boolean",
          "x-nullable": true
        }
      }
    },
    "operationStringFilterOperation": {
      "type": "object",
      "properties": {
        "$eq": {
          "type": "string",
          "x-nullable": true
        },
        "$neq": {
          "type": "string",
          "x-nullable": true
        },
        "$contains": {
          "type": "string",
          "x-nullable": true
        },
        "$starts_with": {
          "type": "string",
          "x-nullable": true
        },
        "$nstarts_with": {
          "type": "string",
          "x-nullable": true
        },
        "$ends_with": {
          "type": "string",
          "x-nullable": true
        },
        "$nends_with": {
          "type": "string",
          "x-nullable": true
        },
        "$in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "$nin": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "$null": {
          "type": "boolean",
          "x-nullable": true
        },
        "$nnull": {
          "type": "boolean",
          "x-nullable": true
        },
        "$empty": {
          "type": "boolean",
          "x-nullable": true
        },
        "$nempty": {
          "type": "boolean",
          "x-nullable": true
        },
        "$like": {
          "type": "string",
          "x-nullable": true
        }
      }
    },
    "pricePricePb": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "int64"
        },
        "currencyCode": {
          "type": "string"
        },
        "digits": {
          "type": "integer",
          "format": "int32"
        },
        "text": {
          "type": "string"
        },
        "amountDecimal": {
          "type": "string"
        }
      }
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "v1Badge": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      }
    },
    "v1Brand": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logo": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        }
      }
    },
    "v1BrandFilter": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/operationStringFilterOperation"
        },
        "code": {
          "$ref": "#/definitions/operationStringFilterOperation"
        }
      }
    },
    "v1CampaignRule": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "rule": {
          "type": "string"
        },
        "extra": {
          "type": "object"
        }
      }
    },
    "v1CreateBrandRequest": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logo": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        }
      },
      "required": [
        "code"
      ]
    },
    "v1CreateProductCategoryRequest": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "parent": {
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    },
    "v1CreateProductRequest": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "shortDesc": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        },
        "mainPic": {
          "$ref": "#/definitions/v1ProductMedia"
        },
        "medias": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductMedia"
          }
        },
        "badges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Badge"
          }
        },
        "visibleFrom": {
          "type": "string",
          "format": "date-time"
        },
        "visibleTo": {
          "type": "string",
          "format": "date-time"
        },
        "isNew": {
          "type": "boolean"
        },
        "mainCategoryKey": {
          "type": "string",
          "x-nullable": true
        },
        "categoryKeys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "barcode": {
          "type": "string"
        },
        "model": {
          "type": "string"
        },
        "brandId": {
          "type": "string",
          "x-nullable": true
        },
        "isSaleable": {
          "type": "boolean"
        },
        "saleableFrom": {
          "type": "string",
          "format": "date-time"
        },
        "saleableTo": {
          "type": "string",
          "format": "date-time"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Keyword"
          }
        },
        "prices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceParams"
          }
        },
        "isGiveaway": {
          "type": "boolean"
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductAttribute"
          }
        },
        "multiSku": {
          "type": "boolean"
        },
        "campaignRules": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CampaignRule"
          }
        },
        "needShipping": {
          "type": "boolean"
        },
        "stocks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Stock"
          }
        },
        "content": {
          "type": "object"
        },
        "active": {
          "type": "boolean"
        }
      },
      "required": [
        "title"
      ]
    },
    "v1DeleteBrandReply": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      }
    },
    "v1DeleteInternalProductReply": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "v1DeleteProductCategoryReply": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "v1DeleteProductReply": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "v1Keyword": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "refer": {
          "type": "string"
        }
      }
    },
    "v1ListBrandReply": {
      "type": "object",
      "properties": {
        "totalSize": {
          "type": "integer",
          "format": "int32"
        },
        "filterSize": {
          "type": "integer",
          "format": "int32"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Brand"
          }
        }
      }
    },
    "v1ListBrandRequest": {
      "type": "object",
      "properties": {
        "pageOffset": {
          "type": "integer",
          "format": "int32"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32"
        },
        "search": {
          "type": "string"
        },
        "sort": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fields": {
          "type": "string"
        },
        "filter": {
          "$ref": "#/definitions/v1BrandFilter"
        }
      }
    },
    "v1ListProductCategoryReply": {
      "type": "object",
      "properties": {
        "totalSize": {
          "type": "integer",
          "format": "int32"
        },
        "filterSize": {
          "type": "integer",
          "format": "int32"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductCategory"
          }
        }
      }
    },
    "v1ListProductCategoryRequest": {
      "type": "object",
      "properties": {
        "pageOffset": {
          "type": "integer",
          "format": "int32"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32"
        },
        "search": {
          "type": "string"
        },
        "sort": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fields": {
          "type": "string"
        },
        "filter": {
          "$ref": "#/definitions/v1ProductCategoryFilter"
        }
      }
    },
    "v1ListProductReply": {
      "type": "object",
      "properties": {
        "totalSize": {
          "type": "integer",
          "format": "int32"
        },
        "filterSize": {
          "type": "integer",
          "format": "int32"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Product"
          }
        }
      }
    },
    "v1ListProductRequest": {
      "type": "object",
      "properties": {
        "pageOffset": {
          "type": "integer",
          "format": "int32"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32"
        },
        "search": {
          "type": "string"
        },
        "sort": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fields": {
          "type": "string"
        },
        "filter": {
          "$ref": "#/definitions/v1ProductFilter"
        }
      }
    },
    "v1Price": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "tenantId": {
          "type": "string"
        },
        "ownerType": {
          "type": "string",
          "title": "product/product_sku"
        },
        "ownerId": {
          "type": "string"
        },
        "productId": {
          "type": "string"
        },
        "currencyCode": {
          "type": "string"
        },
        "default": {
          "$ref": "#/definitions/pricePricePb"
        },
        "discounted": {
          "$ref": "#/definitions/pricePricePb"
        },
        "discountText": {
          "type": "string"
        },
        "denyMoreDiscounts": {
          "type": "boolean"
        },
        "billingScheme": {
          "type": "string"
        },
        "currencyOptions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceCurrencyOption"
          }
        },
        "recurring": {
          "$ref": "#/definitions/v1PriceRecurring"
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceTier"
          }
        },
        "tiersMode": {
          "type": "string"
        },
        "transformQuantity": {
          "$ref": "#/definitions/v1PriceTransformQuantity"
        },
        "type": {
          "type": "string"
        },
        "stripePriceId": {
          "type": "string",
          "x-nullable": true
        }
      }
    },
    "v1PriceCurrencyOption": {
      "type": "object",
      "properties": {
        "currencyCode": {
          "type": "string"
        },
        "default": {
          "$ref": "#/definitions/pricePricePb"
        },
        "discounted": {
          "$ref": "#/definitions/pricePricePb"
        },
        "discountText": {
          "type": "string"
        },
        "denyMoreDiscounts": {
          "type": "boolean"
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceCurrencyOptionTier"
          }
        }
      }
    },
    "v1PriceCurrencyOptionParams": {
      "type": "object",
      "properties": {
        "currencyCode": {
          "type": "string"
        },
        "defaultAmountDecimal": {
          "type": "string"
        },
        "discountedAmountDecimal": {
          "type": "string",
          "x-nullable": true
        },
        "discountText": {
          "type": "string"
        },
        "denyMoreDiscounts": {
          "type": "boolean"
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceCurrencyOptionTierParams"
          }
        }
      }
    },
    "v1PriceCurrencyOptionTier": {
      "type": "object",
      "properties": {
        "flat": {
          "$ref": "#/definitions/pricePricePb"
        },
        "unit": {
          "$ref": "#/definitions/pricePricePb"
        },
        "upTo": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1PriceCurrencyOptionTierParams": {
      "type": "object",
      "properties": {
        "flatAmountDecimal": {
          "type": "string"
        },
        "unitAmountDecimal": {
          "type": "string"
        },
        "upTo": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1PriceParams": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "currencyCode": {
          "type": "string"
        },
        "defaultAmountDecimal": {
          "type": "string"
        },
        "discountedAmountDecimal": {
          "type": "string",
          "x-nullable": true
        },
        "discountText": {
          "type": "string"
        },
        "denyMoreDiscounts": {
          "type": "boolean"
        },
        "billingScheme": {
          "type": "string"
        },
        "currencyOptions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceCurrencyOptionParams"
          }
        },
        "recurring": {
          "$ref": "#/definitions/v1PriceRecurring"
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceTierParams"
          }
        },
        "tiersMode": {
          "type": "string"
        },
        "transformQuantity": {
          "$ref": "#/definitions/v1PriceTransformQuantity"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "billingScheme",
        "type"
      ]
    },
    "v1PriceRecurring": {
      "type": "object",
      "properties": {
        "interval": {
          "type": "string"
        },
        "intervalCount": {
          "type": "string",
          "format": "int64"
        },
        "trialPeriodDays": {
          "type": "string",
          "format": "int64"
        },
        "aggregateUsage": {
          "type": "string"
        },
        "usageType": {
          "type": "string"
        }
      },
      "required": [
        "interval"
      ]
    },
    "v1PriceTier": {
      "type": "object",
      "properties": {
        "flat": {
          "$ref": "#/definitions/pricePricePb"
        },
        "unit": {
          "$ref": "#/definitions/pricePricePb"
        },
        "upTo": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1PriceTierParams": {
      "type": "object",
      "properties": {
        "flatAmountDecimal": {
          "type": "string"
        },
        "unitAmountDecimal": {
          "type": "string"
        },
        "upTo": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1PriceTransformQuantity": {
      "type": "object",
      "properties": {
        "divideBy": {
          "type": "string",
          "format": "int64"
        },
        "round": {
          "type": "string"
        }
      },
      "required": [
        "round"
      ]
    },
    "v1Product": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "tenantId": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "shortDesc": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        },
        "mainPic": {
          "$ref": "#/definitions/v1ProductMedia"
        },
        "medias": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductMedia"
          }
        },
        "badges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Badge"
          }
        },
        "visibleFrom": {
          "type": "string",
          "format": "date-time"
        },
        "visibleTo": {
          "type": "string",
          "format": "date-time"
        },
        "isNew": {
          "type": "boolean"
        },
        "barcode": {
          "type": "string"
        },
        "model": {
          "type": "string"
        },
        "brandId": {
          "type": "string",
          "x-nullable": true
        },
        "saleableFrom": {
          "type": "string",
          "format": "date-time"
        },
        "saleableTo": {
          "type": "string",
          "format": "date-time"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Keyword"
          }
        },
        "prices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Price"
          }
        },
        "isGiveaway": {
          "type": "boolean"
        },
        "mainCategoryKey": {
          "type": "string"
        },
        "mainCategory": {
          "$ref": "#/definitions/v1ProductCategory"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductCategory"
          }
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductAttribute"
          }
        },
        "multiSku": {
          "type": "boolean"
        },
        "campaignRules": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CampaignRule"
          }
        },
        "needShipping": {
          "type": "boolean"
        },
        "stocks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Stock"
          }
        },
        "content": {
          "type": "object"
        },
        "manageInfo": {
          "$ref": "#/definitions/v1ProductManageInfo"
        },
        "active": {
          "type": "boolean"
        }
      }
    },
    "v1ProductAttribute": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        }
      }
    },
    "v1ProductCategory": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "parent": {
          "type": "string"
        }
      }
    },
    "v1ProductCategoryFilter": {
      "type": "object",
      "properties": {
        "key": {
          "$ref": "#/definitions/operationStringFilterOperation"
        },
        "name": {
          "$ref": "#/definitions/operationStringFilterOperation"
        },
        "parent": {
          "$ref": "#/definitions/operationStringFilterOperation"
        }
      }
    },
    "v1ProductFilter": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/operationStringFilterOperation"
        },
        "name": {
          "$ref": "#/definitions/operationStringFilterOperation"
        },
        "internal": {
          "$ref": "#/definitions/operationBooleanFilterOperators"
        }
      }
    },
    "v1ProductManageInfo": {
      "type": "object",
      "properties": {
        "managed": {
          "type": "boolean"
        },
        "managedBy": {
          "type": "string"
        },
        "lastSyncTime": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "v1ProductMedia": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "mimeType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "v1Stock": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "inStock": {
          "type": "boolean"
        },
        "level": {
          "type": "string"
        },
        "amount": {
          "type": "integer",
          "format": "int32"
        },
        "deliveryCode": {
          "type": "string"
        }
      }
    },
    "v1UpdateBrand": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "code": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "logo": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ]
    },
    "v1UpdateProduct": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "shortDesc": {
          "type": "string"
        },
        "desc": {
          "type": "string"
        },
        "mainPic": {
          "$ref": "#/definitions/v1ProductMedia"
        },
        "medias": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductMedia"
          }
        },
        "badges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Badge"
          }
        },
        "visibleFrom": {
          "type": "string",
          "format": "date-time"
        },
        "visibleTo": {
          "type": "string",
          "format": "date-time"
        },
        "isNew": {
          "type": "boolean"
        },
        "mainCategoryKey": {
          "type": "string",
          "x-nullable": true
        },
        "categoryKeys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "barcode": {
          "type": "string"
        },
        "model": {
          "type": "string"
        },
        "brandId": {
          "type": "string",
          "x-nullable": true
        },
        "isSaleable": {
          "type": "boolean"
        },
        "saleableFrom": {
          "type": "string",
          "format": "date-time"
        },
        "saleableTo": {
          "type": "string",
          "format": "date-time"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Keyword"
          }
        },
        "prices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PriceParams"
          },
          "title": "could update or create new prices"
        },
        "isGiveaway": {
          "type": "boolean"
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProductAttribute"
          }
        },
        "campaignRules": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CampaignRule"
          }
        },
        "needShipping": {
          "type": "boolean"
        },
        "stocks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Stock"
          }
        },
        "content": {
          "type": "object"
        },
        "active": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "title"
      ]
    },
    "v1UpdateProductCategory": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "key"
      ]
    }
  },
  "securityDefinitions": {
    "bearer": {
      "type": "apiKey",
      "description": "Authentication token, prefixed by Bearer: Bearer \u003ctoken\u003e",
      "name": "Authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "bearer": []
    }
  ]
}
