{
  "openapi": "3.0.1",
  "info": {
    "title": "Store Items",
    "description": "Create and administer a collection of store items.",
    "version": "9.1.20.0",
    "x-introduced": "9.1.0.0"
  },
  "servers": [
    {
      "url": "https://{hostname}:{port}/rest/admin/v2",
      "variables": {
        "port": {
          "default": "443",
          "enum": [
            "443",
            "8000"
          ]
        },
        "hostname": {
          "default": "localhost",
          "enum": [
            "localhost",
            "test.hcl.com"
          ]
        }
      }
    }
  ],
  "paths": {
    "/store-items": {
      "get": {
        "tags": [
          "store-items"
        ],
        "description": "Get a collection of store items.",
        "operationId": "getStoreItems",
        "parameters": [
          {
            "name": "storeId",
            "in": "query",
            "description": "The reference ID of the store this store item associated with.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "baseItemId",
            "in": "query",
            "description": "The base item of this store item associated with.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "trackInventory",
            "in": "query",
            "description": "Controls whether or not inventory is tracked in the RECEIPT table. N = Inventory is not tracked (there are no entries in the RECEIPT table). Y = Inventory is tracked in the RECEIPT table. E = Inventory is tracked externally. Default Y.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "releaseSeparately",
            "in": "query",
            "description": "Controls how order items for specified items for this store item are released. N = Order items may be released along with other Order Items. Y = Order items must be released separately (in their own boxes). Default N.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "foreignSystem",
            "in": "query",
            "description": "The foreign System.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "foreignSKU",
            "in": "query",
            "description": "The foreign SKU.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updatedDateTime",
            "in": "query",
            "description": "The most recent time this store item was updated.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "forceBackOrder",
            "in": "query",
            "description": "The force Back order.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "backOrderable",
            "in": "query",
            "description": "Can be used to indicate that specified items for this store item cannot be back-ordered. N = Items may not be back-ordered. Y = Items may be back-ordered.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minimumQtyForSplit",
            "in": "query",
            "description": "Order items will not be automatically split during inventory allocation if the remaining unallocated quantity would be less than the specified minimum quantity. Default 0.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "creditable",
            "in": "query",
            "description": "Whether the merchant will, without an override, issue a credit for this item. N = Sold as-is. Y = Creditable. The requirement for the return of merchandise is evaluated separately. Default Y.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnNotDesired",
            "in": "query",
            "description": "Item return not wanted, even if customer is willing or able to return it. For example, perishable food items. N = Request for credit evaluated based on the customers intention to return the item, and customer is required to return merchandise. Y = Request for credit evaluated as if return is expected, but customer is not required to return merchandise. Default N.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The position within the resulting dataset where the query begins returning item records. If the offset is \"5\", the records that returned begin with the sixth record that matches the query parameters. If the offset is \"0\", the records that are returned begin with the first record that matches the query parameters.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "The comma-separated set of properties to be returned. If no properties are specified, all properties are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "The comma-separated set of related resources referenced in the links to be returned. If no related resources are specified, no related resources are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The comma-separated set of properties which controls the order of the items being listed, prefixed by either (-) to sort by descending order, or optionally (+) to sort by ascending order. For example, sort=name,-d which means, order the items based on the name value in ascending order, then by the id value in descending order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of store items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItemCollection"
                }
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "store-items"
        ],
        "description": "Create a store item.",
        "operationId": "createStoreItem",
        "requestBody": {
          "description": "The store item.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreItems"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The operation was successful.",
            "content": {},
            "headers": {
              "Location": {
                "description": "The URI of the Store Items.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "links": {
              "GetStoreItemsByStoreIdAndBaseItemId": {
                "operationRef": "#/paths/~1store-items~1storeId:{storeId},baseItemId:{baseItemId}/get",
                "parameters": {
                  "storeId": "$request.body#/storeId",
                  "baseItemId": "$request.body#/baseItemId"
                },
                "description": "The `storeId` and `baseItemId` value used in the request body can be used as the `storeId` and `baseItemId` parameter in `GET /store-items/storeId:{storeId},baseItemId:{baseItemId}`.\n"
              },
              "DeleteStoreItemsByStoreIdAndBaseItemId": {
                "operationRef": "#/paths/~1store-items~1storeId:{storeId},baseItemId:{baseItemId}/delete",
                "parameters": {
                  "storeId": "$request.body#/storeId",
                  "baseItemId": "$request.body#/baseItemId"
                },
                "description": "The `storeId` and `baseItemId` value used in the request body can be used as the `storeId` and `baseItemId` parameter in `DELETE /store-items/storeId:{storeId},baseItemId:{baseItemId}`.\n"
              },
              "UpdateStoreItemsByStoreIdAndBaseItemId": {
                "operationRef": "#/paths/~1store-items~1storeId:{storeId},baseItemId:{baseItemId}/patch",
                "parameters": {
                  "storeId": "$request.body#/storeId",
                  "baseItemId": "$request.body#/baseItemId"
                },
                "description": "The `storeId` and `baseItemId` value used in the request body can be used as the `storeId` and `baseItemId` parameter in `PATCH /store-items/storeId:{storeId},baseItemId:{baseItemId}`.  \n"
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "StoreItem"
      }
    },
    "/store-items/storeId:{storeId},baseItemId:{baseItemId}": {
      "get": {
        "tags": [
          "store-items"
        ],
        "description": "Get a store item.",
        "operationId": "getStoreItemById",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "The reference ID of the store this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "baseItemId",
            "in": "path",
            "description": "The base item of this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "The comma-separated set of properties to be returned. If no properties are specified, all properties are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "The comma-separated set of related resources referenced in the links to be returned. If no related resources are specified, no related resources are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The comma-separated set of properties which controls the order of the items being listed, prefixed by either (-) to sort by descending order, or optionally (+) to sort by ascending order. For example, sort=name,-d which means, order the items based on the name value in ascending order, then by the id value in descending order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The store item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItem"
                }
              }
            }
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "store-items"
        ],
        "description": "Delete a store item.",
        "operationId": "deleteStoreItemById",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "The reference ID of the store this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "baseItemId",
            "in": "path",
            "description": "The base item of this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The operation was successful.",
            "content": {}
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "store-items"
        ],
        "description": "Update a store item.",
        "operationId": "updateStoreItemById",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "The reference ID of the store this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "baseItemId",
            "in": "path",
            "description": "The base item of this store item associated with.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The store item.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreItems"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The operation was successful.",
            "content": {}
          },
          "400": {
            "description": "There was a client error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          },
          "404": {
            "description": "The resource was not found.",
            "content": {}
          },
          "500": {
            "description": "There was a server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseContainer"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "StoreItem"
      }
    }
  },
  "components": {
    "schemas": {
      "Link": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "The URL of the link.",
            "format": "uri"
          }
        },
        "description": "Links to related resources."
      },
      "Error": {
        "type": "object",
        "properties": {
          "errorCode": {
            "type": "string",
            "description": "The error message code."
          },
          "errorMessage": {
            "type": "string",
            "description": "The error message."
          },
          "errorKey": {
            "type": "string",
            "description": "The error message key."
          },
          "errorParameters": {
            "type": "array",
            "description": "The arguments used to construct the error message.",
            "items": {
              "type": "object",
              "properties": {}
            }
          },
          "errorLevel": {
            "type": "string",
            "description": "The error level."
          },
          "errorHref": {
            "type": "string",
            "description": "The error hypertext reference."
          }
        },
        "description": "The error message item model."
      },
      "ErrorResponseContainer": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "The request identifier."
          },
          "errors": {
            "type": "array",
            "description": "The errors.",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The error message model."
      },
      "StoreItems": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "integer",
            "description": "The reference ID of the store this store item associated with.",
            "format": "int32"
          },
          "baseItemId": {
            "type": "integer",
            "description": "The base item of this store item associated with.",
            "format": "int64"
          },
          "trackInventory": {
            "type": "string",
            "description": "Controls whether or not inventory is tracked in the RECEIPT table. N = Inventory is not tracked (there are no entries in the RECEIPT table). Y = Inventory is tracked in the RECEIPT table. E = Inventory is tracked externally. Default Y."
          },
          "releaseSeparately": {
            "type": "string",
            "description": "Controls how order items for specified items for this store item are released. N = Order items may be released along with other Order Items. Y = Order items must be released separately (in their own boxes). Default N."
          },
          "foreignSystem": {
            "type": "integer",
            "description": "The foreign System.",
            "format": "int64"
          },
          "foreignSKU": {
            "type": "string",
            "description": "The foreign SKU."
          },
          "updatedDateTime": {
            "type": "string",
            "description": "The most recent time this store item was updated.",
            "format": "date-time"
          },
          "forceBackOrder": {
            "type": "string",
            "description": "The force Back order."
          },
          "backOrderable": {
            "type": "string",
            "description": "Can be used to indicate that specified items for this store item cannot be back-ordered. N = Items may not be back-ordered. Y = Items may be back-ordered."
          },
          "minimumQtyForSplit": {
            "type": "integer",
            "description": "Order items will not be automatically split during inventory allocation if the remaining unallocated quantity would be less than the specified minimum quantity. Default 0.",
            "format": "int32"
          },
          "creditable": {
            "type": "string",
            "description": "Whether the merchant will, without an override, issue a credit for this item. N = Sold as-is. Y = Creditable. The requirement for the return of merchandise is evaluated separately. Default Y."
          },
          "returnNotDesired": {
            "type": "string",
            "description": "Item return not wanted, even if customer is willing or able to return it. For example, perishable food items. N = Request for credit evaluated based on the customers intention to return the item, and customer is required to return merchandise. Y = Request for credit evaluated as if return is expected, but customer is not required to return merchandise. Default N."
          }
        }
      },
      "StoreItem": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "integer",
            "description": "The reference ID of the store this store item associated with.",
            "format": "int32"
          },
          "baseItemId": {
            "type": "integer",
            "description": "The base item of this store item associated with.",
            "format": "int64"
          },
          "trackInventory": {
            "type": "string",
            "description": "Controls whether or not inventory is tracked in the RECEIPT table. N = Inventory is not tracked (there are no entries in the RECEIPT table). Y = Inventory is tracked in the RECEIPT table. E = Inventory is tracked externally. Default Y."
          },
          "releaseSeparately": {
            "type": "string",
            "description": "Controls how order items for specified items for this store item are released. N = Order items may be released along with other Order Items. Y = Order items must be released separately (in their own boxes). Default N."
          },
          "foreignSystem": {
            "type": "integer",
            "description": "The foreign System.",
            "format": "int64"
          },
          "foreignSKU": {
            "type": "string",
            "description": "The foreign SKU."
          },
          "updatedDateTime": {
            "type": "string",
            "description": "The most recent time this store item was updated.",
            "format": "date-time"
          },
          "forceBackOrder": {
            "type": "string",
            "description": "The force Back order."
          },
          "backOrderable": {
            "type": "string",
            "description": "Can be used to indicate that specified items for this store item cannot be back-ordered. N = Items may not be back-ordered. Y = Items may be back-ordered."
          },
          "minimumQtyForSplit": {
            "type": "integer",
            "description": "Order items will not be automatically split during inventory allocation if the remaining unallocated quantity would be less than the specified minimum quantity. Default 0.",
            "format": "int32"
          },
          "creditable": {
            "type": "string",
            "description": "Whether the merchant will, without an override, issue a credit for this item. N = Sold as-is. Y = Creditable. The requirement for the return of merchandise is evaluated separately. Default Y."
          },
          "returnNotDesired": {
            "type": "string",
            "description": "Item return not wanted, even if customer is willing or able to return it. For example, perishable food items. N = Request for credit evaluated based on the customers intention to return the item, and customer is required to return merchandise. Y = Request for credit evaluated as if return is expected, but customer is not required to return merchandise. Default N."
          },
          "links": {
            "type": "object",
            "properties": {
              "self": {
                "type": "object",
                "properties": {
                  "href": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "description": "The store item."
      },
      "StoreItemCollection": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "description": "The total number of items.",
            "format": "int64"
          },
          "items": {
            "type": "array",
            "description": "The items.",
            "items": {
              "$ref": "#/components/schemas/StoreItem"
            }
          }
        },
        "description": "A collection of store items."
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  },
  "security": [
    {
      "basicAuth": []
    }
  ],
  "x-components": {}
}
