> For the complete documentation index, see [llms.txt](https://docs.archisketch.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.archisketch.com/guide/dev-en/api-sdk/api/product.md).

# Product

## Get Single Product

> Retrieves product detailed information by ID.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}":{"get":{"tags":["Product"],"summary":"Get Single Product","description":"Retrieves product detailed information by ID.","operationId":"getSale","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseSaleResponse"}}}}}}}}}
```

## Update Full Product

> Modifies the full product details.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}":{"put":{"tags":["Product"],"summary":"Update Full Product","description":"Modifies the full product details.","operationId":"updateSale","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleCreateRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseSaleResponse"}}}}}}}}}
```

## Get Product List

> Retrieves the enterprise's product list with pagination.\
> \
> \### Pagination\
> \- Offset-based paging (starts from 0)\
> \- limit: page size (min 1, max 100)\
> \- Check existence of the next page using hasNext in the response\
> \
> \### Filter Conditions\
> \- userId: User ID filter\
> \- name: Name search keyword (partial match)\
> \- code: Code filter\
> \- sku: SKU filter\
> \- brandCode: Brand code filter\
> \- categoryIds: Category ID list filter\
> \- sortType: Sort criteria (ID\_DESC, ID\_ASC, NAME\_ASC, NAME\_DESC, UPDATED\_ASC, UPDATED\_DESC)

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales":{"get":{"tags":["Product"],"summary":"Get Product List","description":"Retrieves the enterprise's product list with pagination.\n\n### Pagination\n- Offset-based paging (starts from 0)\n- limit: page size (min 1, max 100)\n- Check existence of the next page using hasNext in the response\n\n### Filter Conditions\n- userId: User ID filter\n- name: Name search keyword (partial match)\n- code: Code filter\n- sku: SKU filter\n- brandCode: Brand code filter\n- categoryIds: Category ID list filter\n- sortType: Sort criteria (ID_DESC, ID_ASC, NAME_ASC, NAME_DESC, UPDATED_ASC, UPDATED_DESC)","operationId":"searchSales","parameters":[{"name":"offset","in":"query","description":"Page number (starts from 0, offset paging)","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size (min: 1, max: 100)","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"userId","in":"query","description":"User ID","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Name search keyword","required":false,"schema":{"type":"string"}},{"name":"code","in":"query","description":"Code","required":false,"schema":{"type":"string"}},{"name":"sku","in":"query","description":"SKU","required":false,"schema":{"type":"string"}},{"name":"brandCode","in":"query","description":"Brand Code","required":false,"schema":{"type":"string"}},{"name":"categoryIds","in":"query","description":"Category ID List","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"sortType","in":"query","description":"Sort Criteria","required":false,"schema":{"type":"string","default":"ID_DESC","description":"Sort Type","enum":["ID_DESC","ID_ASC","NAME_ASC","NAME_DESC","UPDATED_ASC","UPDATED_DESC"]}}],"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponsePageResponseSaleListItemResponse"}}}}}}}}}
```

## Create Product

> Creates a new product.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales":{"post":{"tags":["Product"],"summary":"Create Product","description":"Creates a new product.","operationId":"createSale","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleCreateRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseSaleResponse"}}}}}}}}}
```

## Add Product Options

> Adds options to a product.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}/options":{"post":{"tags":["Product"],"summary":"Add Product Options","description":"Adds options to a product.","operationId":"addSaleOptions","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleModifyOptionsRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## Delete Product Options

> Deletes options of a product.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}/options":{"delete":{"tags":["Product"],"summary":"Delete Product Options","description":"Deletes options of a product.","operationId":"deleteSaleOptions","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleDeleteOptionsRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## Modify Product Options

> Modifies options of a product.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}/options":{"patch":{"tags":["Product"],"summary":"Modify Product Options","description":"Modifies options of a product.","operationId":"modifySaleOptions","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleModifyOptionsRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## Merge Products

> Merges products.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/merge":{"post":{"tags":["Product"],"summary":"Merge Products","description":"Merges products.","operationId":"mergeSales","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleMergeRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseSaleResponse"}}}}}}}}}
```

## Decompose Products

> Decomposes products.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/decompose":{"post":{"tags":["Product"],"summary":"Decompose Products","description":"Decomposes products.","operationId":"decomposeSales","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleDecomposeRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseListSaleResponse"}}}}}}}}}
```

## Modify Product Option Price

> Modifies the price of a product option.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}/options/{componentId}/price":{"patch":{"tags":["Product"],"summary":"Modify Product Option Price","description":"Modifies the price of a product option.","operationId":"modifySaleOptionPrice","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}},{"name":"componentId","in":"path","description":"Component ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleModifyPriceRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## Modify Product Basic Information

> Modifies the basic information of a product.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"Product"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"paths":{"/api/v1/sales/{id}/info":{"patch":{"tags":["Product"],"summary":"Modify Product Basic Information","description":"Modifies the basic information of a product.","operationId":"modifySaleInfo","parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleModifyInfoRequest"}}},"required":true},"responses":{"200":{"description":"All responses return 200 (including success and failure) (5xx is exposed only in error conditions)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```
