# 컴포넌트

## 컴포넌트 목록 조회

> 엔터프라이즈의 컴포넌트 목록을 페이지네이션으로 조회합니다.\
> \
> \### 페이지네이션\
> \- offset 기반 페이징 (0부터 시작)\
> \- limit: 페이지 크기 (최소 1, 최대 100)\
> \- 응답의 hasNext로 다음 페이지 존재 여부 확인\
> \
> \### 필터 조건\
> \- categoryId: 카테고리 ID 필터\
> \- name: 이름 검색어 (부분 일치)\
> \- sortType: 정렬 기준 (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":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ApiResponsePageResponseComponentListItem":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/PageResponseComponentListItem","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"PageResponseComponentListItem":{"type":"object","properties":{"content":{"type":"array","description":"콘텐츠 목록","items":{"$ref":"#/components/schemas/ComponentListItem"}},"hasNext":{"type":"boolean","description":"다음 페이지 존재 여부"},"totalCount":{"type":"integer","format":"int64","description":"전체 개수"}},"required":["content","hasNext","totalCount"]},"ComponentListItem":{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"name":{"type":"string","description":"이름"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedName"}},"code":{"type":"string","description":"코드"},"sku":{"type":"string","description":"SKU"},"brand":{"type":"string","description":"브랜드"},"color":{"$ref":"#/components/schemas/ComponentColor","description":"색상"},"retailPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"previewImage":{"type":"string","description":"대표 이미지 URL"},"showInEditor":{"type":"boolean","description":"에디터 노출 여부"},"usageInEditor":{"type":"string","description":"에디터 사용 용도"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["createdAt","dimension","id","name","showInEditor","translatedNames","updatedAt","usageInEditor"]},"ComponentTranslatedName":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentColor":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentPrice":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"ComponentDimension":{"type":"object","properties":{"mmWidth":{"type":"number","description":"mm 너비"},"mmDepth":{"type":"number","description":"mm 깊이"},"mmHeight":{"type":"number","description":"mm 높이"},"inchWidth":{"type":"number","description":"인치 너비"},"inchDepth":{"type":"number","description":"인치 깊이"},"inchHeight":{"type":"number","description":"인치 높이"}},"required":["inchDepth","inchHeight","inchWidth","mmDepth","mmHeight","mmWidth"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components":{"get":{"tags":["컴포넌트"],"summary":"컴포넌트 목록 조회","description":"엔터프라이즈의 컴포넌트 목록을 페이지네이션으로 조회합니다.\n\n### 페이지네이션\n- offset 기반 페이징 (0부터 시작)\n- limit: 페이지 크기 (최소 1, 최대 100)\n- 응답의 hasNext로 다음 페이지 존재 여부 확인\n\n### 필터 조건\n- categoryId: 카테고리 ID 필터\n- name: 이름 검색어 (부분 일치)\n- sortType: 정렬 기준 (ID_DESC, ID_ASC, NAME_ASC, NAME_DESC, UPDATED_ASC, UPDATED_DESC)","operationId":"searchComponents","parameters":[{"name":"offset","in":"query","description":"페이지 번호 (0부터 시작, offset 페이징)","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"페이지 크기 (최소: 1, 최대: 100)","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"categoryId","in":"query","description":"카테고리 ID","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"이름 검색어","required":false,"schema":{"type":"string"}},{"name":"sortType","in":"query","description":"정렬 기준","required":false,"schema":{"type":"string","default":"ID_DESC","description":"정렬 타입","enum":["ID_DESC","ID_ASC","NAME_ASC","NAME_DESC","UPDATED_ASC","UPDATED_DESC"]}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponsePageResponseComponentListItem"}}}}}}}}}
```

## 컴포넌트 생성

> 새 컴포넌트를 생성한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ComponentCreateRequest":{"type":"object","properties":{"name":{"type":"string","description":"이름"},"code":{"type":"string","description":"코드"},"brandCode":{"type":"string","description":"브랜드 코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColorRequest","description":"색상"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedNameRequest"}},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"dimension":{"$ref":"#/components/schemas/ComponentDimensionRequest","description":"치수"},"retailPrice":{"$ref":"#/components/schemas/ComponentPriceRequest","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPriceRequest","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"},"isFinal":{"type":"boolean","description":"최종 부품 여부"},"previewImage":{"type":"string","description":"대표 이미지 URL"},"images":{"type":"array","description":"이미지 URL 목록","items":{"type":"string"}},"isPersonal":{"type":"boolean","default":false,"description":"개인 라이브러리 업로드 여부"},"modelingId":{"type":"string","description":"모델링 ID"},"editorSetting":{"$ref":"#/components/schemas/EditorSettingRequest","description":"에디터 설정"},"childComponents":{"type":"array","description":"자식 컴포넌트 목록","items":{"$ref":"#/components/schemas/ChildComponentRequest"}},"category":{"$ref":"#/components/schemas/CategoryRequest","description":"카테고리"},"codeRelations":{"type":"array","description":"코드 관계 목록","items":{"$ref":"#/components/schemas/CodeRelationRequest"}}},"required":["childComponents","codeRelations","dimension","images","isFinal","name","translatedNames"]},"ComponentColorRequest":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentTranslatedNameRequest":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentDimensionRequest":{"type":"object","properties":{"mm":{"$ref":"#/components/schemas/ComponentDimensionValue","description":"mm 단위 치수"},"inch":{"$ref":"#/components/schemas/ComponentDimensionValue","description":"인치 단위 치수"}}},"ComponentDimensionValue":{"type":"object","properties":{"width":{"type":"number","description":"너비"},"depth":{"type":"number","description":"깊이"},"height":{"type":"number","description":"높이"}},"required":["depth","height","width"]},"ComponentPriceRequest":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"EditorSettingRequest":{"type":"object","properties":{"usageCode":{"type":"integer","format":"int32","default":20,"description":"에디터 타입 코드"},"showInEditor":{"type":"boolean","default":true,"description":"에디터 노출 여부"},"dimensionLock":{"$ref":"#/components/schemas/DimensionLockRequest","description":"치수 잠금"},"door":{"$ref":"#/components/schemas/DoorRequest","description":"문 설정"}},"required":["dimensionLock"]},"DimensionLockRequest":{"type":"object","properties":{"width":{"type":"boolean","default":false,"description":"너비 잠금"},"depth":{"type":"boolean","default":false,"description":"깊이 잠금"},"height":{"type":"boolean","default":false,"description":"높이 잠금"}}},"DoorRequest":{"type":"object","properties":{"isOpen":{"type":"boolean","description":"열림 여부"},"openDirection":{"type":"string","description":"열림 방향"},"handlePosition":{"type":"string","description":"손잡이 위치"}},"required":["handlePosition","isOpen","openDirection"]},"ChildComponentRequest":{"type":"object","properties":{"id":{"type":"string","description":"자식 컴포넌트 ID"},"quantity":{"type":"string","description":"수량"},"matrices":{"type":"array","description":"변환 행렬 목록","items":{"type":"array","items":{"type":"string"}}},"isRequired":{"type":"boolean","description":"필수 여부"}},"required":["id","isRequired","quantity"]},"CategoryRequest":{"type":"object","properties":{"categoryIds":{"type":"array","description":"카테고리 ID 목록","items":{"type":"string"}}},"required":["categoryIds"]},"CodeRelationRequest":{"type":"object","properties":{"options":{"type":"array","description":"옵션 목록","items":{"$ref":"#/components/schemas/OptionRequest"}},"targetType":{"type":"string","description":"대상 타입"},"targetCode":{"type":"string","description":"대상 코드"}},"required":["options","targetCode","targetType"]},"OptionRequest":{"type":"object","properties":{"key":{"type":"string","description":"키"},"value":{"type":"string","description":"값"}},"required":["key","value"]},"ApiResponseComponentDetailResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/ComponentDetailResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ComponentDetailResponse":{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"code":{"type":"string","description":"코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColor","description":"색상"},"name":{"type":"string","description":"이름"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedName"}},"parametricType":{"type":"string","description":"파라메트릭 타입"},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"retailPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"brandCode":{"type":"string","description":"브랜드 코드"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"isRaw":{"type":"boolean","description":"원자재 여부"},"isFinal":{"type":"boolean","description":"완제품 여부"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"},"modelingId":{"type":"string","description":"모델링 ID"},"previewImage":{"$ref":"#/components/schemas/ComponentAsset","description":"대표 이미지"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"hdViewerAssets":{"type":"array","description":"HD 뷰어 에셋 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"dxfAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"DXF 에셋"},"arAsset":{"$ref":"#/components/schemas/ComponentArAsset","description":"AR 에셋"},"editorSetting":{"$ref":"#/components/schemas/ComponentEditorSetting","description":"에디터 설정"},"childComponents":{"type":"array","description":"자식 컴포넌트 목록","items":{"$ref":"#/components/schemas/ChildComponent"}},"categories":{"type":"array","description":"카테고리 목록","items":{"$ref":"#/components/schemas/ComponentCategory"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"},"modeling":{"$ref":"#/components/schemas/ComponentModelingInfo","description":"모델링 정보"}},"required":["categories","childComponents","createdAt","dimension","hdViewerAssets","id","images","isFinal","isRaw","name","translatedNames","updatedAt","userId"]},"ComponentColor":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentTranslatedName":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentPrice":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"ComponentDimension":{"type":"object","properties":{"mmWidth":{"type":"number","description":"mm 너비"},"mmDepth":{"type":"number","description":"mm 깊이"},"mmHeight":{"type":"number","description":"mm 높이"},"inchWidth":{"type":"number","description":"인치 너비"},"inchDepth":{"type":"number","description":"인치 깊이"},"inchHeight":{"type":"number","description":"인치 높이"}},"required":["inchDepth","inchHeight","inchWidth","mmDepth","mmHeight","mmWidth"]},"ComponentAsset":{"type":"object","properties":{"id":{"type":"string","description":"에셋 ID"},"name":{"type":"string","description":"에셋 이름"},"url":{"type":"string","description":"에셋 URL"}},"required":["id","name","url"]},"ComponentArAsset":{"type":"object","properties":{"ios":{"$ref":"#/components/schemas/ComponentAsset","description":"iOS AR 에셋"},"android":{"$ref":"#/components/schemas/ComponentAsset","description":"Android AR 에셋"}}},"ComponentEditorSetting":{"type":"object","properties":{"editorType":{"type":"string","description":"에디터 타입","enum":["FLOOR_ITEM","STANDING_ITEM","WALL_ITEM","CEILING_ITEM","SWING_DOOR","SLIDING_DOOR","FOLDING_DOOR","GARAGE_DOOR","SWING_WINDOW","SLIDING_WINDOW","FOLDING_WINDOW","STANDARD_WINDOW","SPACE"]},"showInEditor":{"type":"boolean","description":"에디터 노출 여부"},"dimensionLock":{"$ref":"#/components/schemas/ComponentDimensionLock","description":"치수 잠금"},"door":{"$ref":"#/components/schemas/ComponentEditorDoor","description":"문 설정"}},"required":["dimensionLock","editorType","showInEditor"]},"ComponentDimensionLock":{"type":"object","properties":{"width":{"type":"boolean","description":"너비 잠금 여부"},"depth":{"type":"boolean","description":"깊이 잠금 여부"},"height":{"type":"boolean","description":"높이 잠금 여부"}},"required":["depth","height","width"]},"ComponentEditorDoor":{"type":"object","properties":{"isOpen":{"type":"boolean","description":"열림 여부"},"openDirection":{"type":"string","description":"열림 방향","enum":["PULL","PUSH"]},"handlePosition":{"type":"string","description":"손잡이 위치","enum":["LEFT","RIGHT"]}},"required":["handlePosition","isOpen","openDirection"]},"ChildComponent":{"oneOf":[{"$ref":"#/components/schemas/ChildNonParametricComponent"},{"$ref":"#/components/schemas/ChildParametricComponent"}]},"ChildNonParametricComponent":{"allOf":[{"$ref":"#/components/schemas/ChildComponent"},{"type":"object","properties":{"id":{"type":"string","description":"자식 컴포넌트 ID"},"quantity":{"type":"string","description":"수량"},"matrices":{"type":"array","description":"변환 행렬 목록","items":{"type":"array","items":{"type":"string"}}},"isRequired":{"type":"boolean","description":"필수 여부"}}}],"required":["id","isRequired","matrices","quantity"]},"ChildParametricComponent":{"allOf":[{"$ref":"#/components/schemas/ChildComponent"},{"type":"object","properties":{"id":{"type":"string","description":"자식 컴포넌트 ID"},"parametricComponentCompositionId":{"type":"string","description":"파라메트릭 컴포지션 ID"},"options":{"type":"array","description":"옵션 목록","items":{"$ref":"#/components/schemas/ChildComponentOption"}}}}],"required":["id","parametricComponentCompositionId"]},"ChildComponentOption":{"type":"object","properties":{"key":{"type":"string","description":"키"},"value":{"type":"string","description":"값"}},"required":["key","value"]},"ComponentCategory":{"type":"object","properties":{"categoryId":{"type":"string","description":"카테고리 ID"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["categoryId","order"]},"ComponentModelingInfo":{"type":"object","properties":{"id":{"type":"string","description":"모델링 ID"},"name":{"type":"string","description":"모델링 이름"},"renderingStatus":{"type":"string","description":"렌더링 상태","enum":["WAITING","PROCESSING","COMPLETED","FAILED"]},"renderingStartedAt":{"type":"string","format":"date-time","description":"렌더링 시작일시"},"renderingFinishedAt":{"type":"string","format":"date-time","description":"렌더링 완료일시"},"renderingFailedAt":{"type":"string","format":"date-time","description":"렌더링 실패일시"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"file":{"$ref":"#/components/schemas/ComponentAsset","description":"원본 파일"},"editorAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"에디터 에셋"},"renderAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"렌더 에셋"},"decimateAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"데시메이트 에셋"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["createdAt","dimension","id","images","name","renderingStatus","updatedAt"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components":{"post":{"tags":["컴포넌트"],"summary":"컴포넌트 생성","description":"새 컴포넌트를 생성한다.","operationId":"createComponent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentCreateRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseComponentDetailResponse"}}}}}}}}}
```

## 컴포넌트 에셋 업로드

> 컴포넌트의 에셋을 업로드한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ApiResponseAssetUploadResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/AssetUploadResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"AssetUploadResponse":{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"assetType":{"type":"string","description":"에셋 타입"},"assets":{"type":"array","description":"업로드된 에셋 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}}},"required":["assetType","assets","id"]},"ComponentAsset":{"type":"object","properties":{"id":{"type":"string","description":"에셋 ID"},"name":{"type":"string","description":"에셋 이름"},"url":{"type":"string","description":"에셋 URL"}},"required":["id","name","url"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}/assets":{"post":{"tags":["컴포넌트"],"summary":"컴포넌트 에셋 업로드","description":"컴포넌트의 에셋을 업로드한다.","operationId":"uploadComponentAssets","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"assetType":{"type":"string","description":"컴포넌트 에셋 타입","enum":["PREVIEW_IMAGE","IMAGE","HD_VIEWER","DXF","AR_IOS","AR_ANDROID"]},"files":{"type":"array","description":"파일 목록","items":{"type":"string","format":"binary"}}},"required":["assetType","files"]}}}},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseAssetUploadResponse"}}}}}}}}}
```

## 컴포넌트 단건 조회

> ID로 컴포넌트와 모델링 정보를 조회한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ApiResponseComponentDetailResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/ComponentDetailResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ComponentDetailResponse":{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"code":{"type":"string","description":"코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColor","description":"색상"},"name":{"type":"string","description":"이름"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedName"}},"parametricType":{"type":"string","description":"파라메트릭 타입"},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"retailPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"brandCode":{"type":"string","description":"브랜드 코드"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"isRaw":{"type":"boolean","description":"원자재 여부"},"isFinal":{"type":"boolean","description":"완제품 여부"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"},"modelingId":{"type":"string","description":"모델링 ID"},"previewImage":{"$ref":"#/components/schemas/ComponentAsset","description":"대표 이미지"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"hdViewerAssets":{"type":"array","description":"HD 뷰어 에셋 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"dxfAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"DXF 에셋"},"arAsset":{"$ref":"#/components/schemas/ComponentArAsset","description":"AR 에셋"},"editorSetting":{"$ref":"#/components/schemas/ComponentEditorSetting","description":"에디터 설정"},"childComponents":{"type":"array","description":"자식 컴포넌트 목록","items":{"$ref":"#/components/schemas/ChildComponent"}},"categories":{"type":"array","description":"카테고리 목록","items":{"$ref":"#/components/schemas/ComponentCategory"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"},"modeling":{"$ref":"#/components/schemas/ComponentModelingInfo","description":"모델링 정보"}},"required":["categories","childComponents","createdAt","dimension","hdViewerAssets","id","images","isFinal","isRaw","name","translatedNames","updatedAt","userId"]},"ComponentColor":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentTranslatedName":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentPrice":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"ComponentDimension":{"type":"object","properties":{"mmWidth":{"type":"number","description":"mm 너비"},"mmDepth":{"type":"number","description":"mm 깊이"},"mmHeight":{"type":"number","description":"mm 높이"},"inchWidth":{"type":"number","description":"인치 너비"},"inchDepth":{"type":"number","description":"인치 깊이"},"inchHeight":{"type":"number","description":"인치 높이"}},"required":["inchDepth","inchHeight","inchWidth","mmDepth","mmHeight","mmWidth"]},"ComponentAsset":{"type":"object","properties":{"id":{"type":"string","description":"에셋 ID"},"name":{"type":"string","description":"에셋 이름"},"url":{"type":"string","description":"에셋 URL"}},"required":["id","name","url"]},"ComponentArAsset":{"type":"object","properties":{"ios":{"$ref":"#/components/schemas/ComponentAsset","description":"iOS AR 에셋"},"android":{"$ref":"#/components/schemas/ComponentAsset","description":"Android AR 에셋"}}},"ComponentEditorSetting":{"type":"object","properties":{"editorType":{"type":"string","description":"에디터 타입","enum":["FLOOR_ITEM","STANDING_ITEM","WALL_ITEM","CEILING_ITEM","SWING_DOOR","SLIDING_DOOR","FOLDING_DOOR","GARAGE_DOOR","SWING_WINDOW","SLIDING_WINDOW","FOLDING_WINDOW","STANDARD_WINDOW","SPACE"]},"showInEditor":{"type":"boolean","description":"에디터 노출 여부"},"dimensionLock":{"$ref":"#/components/schemas/ComponentDimensionLock","description":"치수 잠금"},"door":{"$ref":"#/components/schemas/ComponentEditorDoor","description":"문 설정"}},"required":["dimensionLock","editorType","showInEditor"]},"ComponentDimensionLock":{"type":"object","properties":{"width":{"type":"boolean","description":"너비 잠금 여부"},"depth":{"type":"boolean","description":"깊이 잠금 여부"},"height":{"type":"boolean","description":"높이 잠금 여부"}},"required":["depth","height","width"]},"ComponentEditorDoor":{"type":"object","properties":{"isOpen":{"type":"boolean","description":"열림 여부"},"openDirection":{"type":"string","description":"열림 방향","enum":["PULL","PUSH"]},"handlePosition":{"type":"string","description":"손잡이 위치","enum":["LEFT","RIGHT"]}},"required":["handlePosition","isOpen","openDirection"]},"ChildComponent":{"oneOf":[{"$ref":"#/components/schemas/ChildNonParametricComponent"},{"$ref":"#/components/schemas/ChildParametricComponent"}]},"ChildNonParametricComponent":{"allOf":[{"$ref":"#/components/schemas/ChildComponent"},{"type":"object","properties":{"id":{"type":"string","description":"자식 컴포넌트 ID"},"quantity":{"type":"string","description":"수량"},"matrices":{"type":"array","description":"변환 행렬 목록","items":{"type":"array","items":{"type":"string"}}},"isRequired":{"type":"boolean","description":"필수 여부"}}}],"required":["id","isRequired","matrices","quantity"]},"ChildParametricComponent":{"allOf":[{"$ref":"#/components/schemas/ChildComponent"},{"type":"object","properties":{"id":{"type":"string","description":"자식 컴포넌트 ID"},"parametricComponentCompositionId":{"type":"string","description":"파라메트릭 컴포지션 ID"},"options":{"type":"array","description":"옵션 목록","items":{"$ref":"#/components/schemas/ChildComponentOption"}}}}],"required":["id","parametricComponentCompositionId"]},"ChildComponentOption":{"type":"object","properties":{"key":{"type":"string","description":"키"},"value":{"type":"string","description":"값"}},"required":["key","value"]},"ComponentCategory":{"type":"object","properties":{"categoryId":{"type":"string","description":"카테고리 ID"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["categoryId","order"]},"ComponentModelingInfo":{"type":"object","properties":{"id":{"type":"string","description":"모델링 ID"},"name":{"type":"string","description":"모델링 이름"},"renderingStatus":{"type":"string","description":"렌더링 상태","enum":["WAITING","PROCESSING","COMPLETED","FAILED"]},"renderingStartedAt":{"type":"string","format":"date-time","description":"렌더링 시작일시"},"renderingFinishedAt":{"type":"string","format":"date-time","description":"렌더링 완료일시"},"renderingFailedAt":{"type":"string","format":"date-time","description":"렌더링 실패일시"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"file":{"$ref":"#/components/schemas/ComponentAsset","description":"원본 파일"},"editorAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"에디터 에셋"},"renderAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"렌더 에셋"},"decimateAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"데시메이트 에셋"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["createdAt","dimension","id","images","name","renderingStatus","updatedAt"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}":{"get":{"tags":["컴포넌트"],"summary":"컴포넌트 단건 조회","description":"ID로 컴포넌트와 모델링 정보를 조회한다.","operationId":"getComponent","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseComponentDetailResponse"}}}}}}}}}
```

## 컴포넌트 기본정보 수정

> 컴포넌트의 기본정보를 수정한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ComponentUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"이름"},"code":{"type":"string","description":"코드"},"brandCode":{"type":"string","description":"브랜드 코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColorRequest","description":"색상"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedNameRequest"}},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"dimension":{"$ref":"#/components/schemas/ComponentDimensionRequest","description":"치수"},"retailPrice":{"$ref":"#/components/schemas/ComponentPriceRequest","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPriceRequest","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"}},"required":["dimension","name","translatedNames"]},"ComponentColorRequest":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentTranslatedNameRequest":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentDimensionRequest":{"type":"object","properties":{"mm":{"$ref":"#/components/schemas/ComponentDimensionValue","description":"mm 단위 치수"},"inch":{"$ref":"#/components/schemas/ComponentDimensionValue","description":"인치 단위 치수"}}},"ComponentDimensionValue":{"type":"object","properties":{"width":{"type":"number","description":"너비"},"depth":{"type":"number","description":"깊이"},"height":{"type":"number","description":"높이"}},"required":["depth","height","width"]},"ComponentPriceRequest":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"ApiResponseUnit":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}":{"patch":{"tags":["컴포넌트"],"summary":"컴포넌트 기본정보 수정","description":"컴포넌트의 기본정보를 수정한다.","operationId":"updateComponent","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentUpdateRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 컴포넌트 모델링 수정

> 컴포넌트에 연결된 모델링 정보를 수정한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ComponentUpdateModelingRequest":{"type":"object","properties":{"modelingId":{"type":"string","description":"연결할 모델링 ID (null이면 연결 해제)"}}},"ApiResponseUnit":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}/modeling":{"patch":{"tags":["컴포넌트"],"summary":"컴포넌트 모델링 수정","description":"컴포넌트에 연결된 모델링 정보를 수정한다.","operationId":"updateComponentModeling","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentUpdateModelingRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 컴포넌트 에디터 설정 수정

> 컴포넌트의 에디터 설정을 수정한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ComponentUpdateEditorRequest":{"type":"object","properties":{"editorType":{"type":"string","description":"에디터 타입","enum":["FLOOR_ITEM","STANDING_ITEM","WALL_ITEM","CEILING_ITEM","SWING_DOOR","SLIDING_DOOR","FOLDING_DOOR","GARAGE_DOOR","SWING_WINDOW","SLIDING_WINDOW","FOLDING_WINDOW","STANDARD_WINDOW","SPACE"]},"showInEditor":{"type":"boolean","description":"에디터 노출 여부"},"dimensionLock":{"$ref":"#/components/schemas/DimensionLockRequest","description":"치수 잠금 설정"},"door":{"$ref":"#/components/schemas/DoorRequest","description":"문 설정"}},"required":["dimensionLock","editorType","showInEditor"]},"DimensionLockRequest":{"type":"object","properties":{"width":{"type":"boolean","default":false,"description":"너비 잠금"},"depth":{"type":"boolean","default":false,"description":"깊이 잠금"},"height":{"type":"boolean","default":false,"description":"높이 잠금"}}},"DoorRequest":{"type":"object","properties":{"isOpen":{"type":"boolean","description":"열림 여부"},"openDirection":{"type":"string","description":"열림 방향"},"handlePosition":{"type":"string","description":"손잡이 위치"}},"required":["handlePosition","isOpen","openDirection"]},"ApiResponseUnit":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}/editor":{"patch":{"tags":["컴포넌트"],"summary":"컴포넌트 에디터 설정 수정","description":"컴포넌트의 에디터 설정을 수정한다.","operationId":"updateComponentEditor","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentUpdateEditorRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 컴포넌트 BOM 조회

> ID로 컴포넌트의 flat BOM 구조를 조회한다.

```json
{"openapi":"3.1.0","info":{"title":"Open API","version":"snapshot"},"tags":[{"name":"컴포넌트"}],"servers":[{"url":"https://openapi.archisketch.com"}],"security":[{"open-api-key":[]}],"components":{"securitySchemes":{"open-api-key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"ApiResponseFlatBomResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/FlatBomResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"FlatBomResponse":{"type":"object","properties":{"parentChildrenRelation":{"type":"array","description":"부모-자식 관계 목록","items":{"$ref":"#/components/schemas/ComponentParentChildrenRelation"}},"componentMap":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/BomParametricComponent"},{"$ref":"#/components/schemas/BomStaticComponent"}]},"description":"컴포넌트 맵 (ID → 컴포넌트 정보)"},"modelingMap":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/BomParametricModeling"},{"$ref":"#/components/schemas/BomStaticModeling"}]},"description":"모델링 맵 (ID → 모델링 정보)"},"compositionMap":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/BomParametricComposition"},{"$ref":"#/components/schemas/BomStaticComposition"}]},"description":"컴포지션 맵 (ID → 컴포지션 정보)"}},"required":["componentMap","compositionMap","modelingMap","parentChildrenRelation"]},"ComponentParentChildrenRelation":{"type":"object","properties":{"compositionId":{"type":"string","description":"컴포지션 ID"},"parentId":{"type":"string","description":"부모 컴포넌트 ID"},"childId":{"type":"string","description":"자식 컴포넌트 ID"},"recipeId":{"type":"string","description":"레시피 ID"}},"required":["childId","compositionId","parentId"]},"BomParametricComponent":{"allOf":[{"$ref":"#/components/schemas/BomComponent"},{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"code":{"type":"string","description":"코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColor","description":"색상"},"name":{"type":"string","description":"이름"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedName"}},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"retailPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"brandCode":{"type":"string","description":"브랜드 코드"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"isRaw":{"type":"boolean","description":"원자재 여부"},"isFinal":{"type":"boolean","description":"완제품 여부"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"},"modelingId":{"type":"string","description":"모델링 ID"},"parametricModelingId":{"type":"string","description":"파라메트릭 모델링 ID"},"previewImage":{"$ref":"#/components/schemas/ComponentAsset","description":"대표 이미지"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"hdViewerAssets":{"type":"array","description":"HD 뷰어 에셋 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"dxfAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"DXF 에셋"},"arAsset":{"$ref":"#/components/schemas/ComponentArAsset","description":"AR 에셋"},"editorSetting":{"$ref":"#/components/schemas/ComponentEditorSetting","description":"에디터 설정"},"categories":{"type":"array","description":"카테고리 목록","items":{"$ref":"#/components/schemas/ComponentCategory"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"},"parametricType":{"type":"string","description":"파라메트릭 타입"},"parameters":{"type":"array","description":"파라미터 목록","items":{"$ref":"#/components/schemas/BomParameter"}}}}],"required":["categories","createdAt","dimension","hdViewerAssets","id","images","isFinal","isRaw","name","parameters","parametricType","translatedNames","updatedAt","userId"]},"BomComponent":{},"ComponentColor":{"type":"object","properties":{"code":{"type":"string","description":"색상 코드"},"name":{"type":"string","description":"색상 이름"}},"required":["code","name"]},"ComponentTranslatedName":{"type":"object","properties":{"code":{"type":"string","description":"언어 코드"},"value":{"type":"string","description":"번역된 이름"}},"required":["code","value"]},"ComponentPrice":{"type":"object","properties":{"value":{"type":"number","description":"가격"},"unit":{"type":"string","description":"통화 단위","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["unit","value"]},"ComponentDimension":{"type":"object","properties":{"mmWidth":{"type":"number","description":"mm 너비"},"mmDepth":{"type":"number","description":"mm 깊이"},"mmHeight":{"type":"number","description":"mm 높이"},"inchWidth":{"type":"number","description":"인치 너비"},"inchDepth":{"type":"number","description":"인치 깊이"},"inchHeight":{"type":"number","description":"인치 높이"}},"required":["inchDepth","inchHeight","inchWidth","mmDepth","mmHeight","mmWidth"]},"ComponentAsset":{"type":"object","properties":{"id":{"type":"string","description":"에셋 ID"},"name":{"type":"string","description":"에셋 이름"},"url":{"type":"string","description":"에셋 URL"}},"required":["id","name","url"]},"ComponentArAsset":{"type":"object","properties":{"ios":{"$ref":"#/components/schemas/ComponentAsset","description":"iOS AR 에셋"},"android":{"$ref":"#/components/schemas/ComponentAsset","description":"Android AR 에셋"}}},"ComponentEditorSetting":{"type":"object","properties":{"editorType":{"type":"string","description":"에디터 타입","enum":["FLOOR_ITEM","STANDING_ITEM","WALL_ITEM","CEILING_ITEM","SWING_DOOR","SLIDING_DOOR","FOLDING_DOOR","GARAGE_DOOR","SWING_WINDOW","SLIDING_WINDOW","FOLDING_WINDOW","STANDARD_WINDOW","SPACE"]},"showInEditor":{"type":"boolean","description":"에디터 노출 여부"},"dimensionLock":{"$ref":"#/components/schemas/ComponentDimensionLock","description":"치수 잠금"},"door":{"$ref":"#/components/schemas/ComponentEditorDoor","description":"문 설정"}},"required":["dimensionLock","editorType","showInEditor"]},"ComponentDimensionLock":{"type":"object","properties":{"width":{"type":"boolean","description":"너비 잠금 여부"},"depth":{"type":"boolean","description":"깊이 잠금 여부"},"height":{"type":"boolean","description":"높이 잠금 여부"}},"required":["depth","height","width"]},"ComponentEditorDoor":{"type":"object","properties":{"isOpen":{"type":"boolean","description":"열림 여부"},"openDirection":{"type":"string","description":"열림 방향","enum":["PULL","PUSH"]},"handlePosition":{"type":"string","description":"손잡이 위치","enum":["LEFT","RIGHT"]}},"required":["handlePosition","isOpen","openDirection"]},"ComponentCategory":{"type":"object","properties":{"categoryId":{"type":"string","description":"카테고리 ID"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["categoryId","order"]},"BomParameter":{"type":"object","properties":{"id":{"type":"string","description":"파라미터 ID"},"displayName":{"type":"string","description":"표시 이름"},"referenceName":{"type":"string","description":"참조 이름"},"type":{"type":"string","description":"파라미터 타입","enum":["SYSTEM","BASIC","CUSTOM","INTERNAL"]},"valueInfo":{"$ref":"#/components/schemas/BomParameterValueInfo","description":"파라미터 값 정보"},"priority":{"type":"integer","format":"int32","description":"우선순위"},"description":{"type":"string","description":"설명"},"hideCondition":{"type":"string","description":"숨김 조건"},"enterpriseParameterId":{"type":"string","description":"엔터프라이즈 파라미터 ID"}},"required":["displayName","id","priority","referenceName","type","valueInfo"]},"BomParameterValueInfo":{"type":"object","properties":{"usage":{"type":"string","description":"값 사용 용도 (text, number, materials, components 등)"},"value":{"type":"string","description":"파라미터 값"},"optionType":{"type":"string","description":"옵션 타입 (candidate, category, range, unlimited, formula)"},"options":{"$ref":"#/components/schemas/BomParameterOption","description":"옵션 정보"}},"required":["usage","value"]},"BomParameterOption":{"oneOf":[{"$ref":"#/components/schemas/BomParameterRangeOption"},{"$ref":"#/components/schemas/BomParameterValuesOption"},{"$ref":"#/components/schemas/BomParameterTextWithImagesOption"},{"$ref":"#/components/schemas/BomParameterUnlimitedOption"},{"$ref":"#/components/schemas/BomParameterFormulaOption"}]},"BomParameterRangeOption":{"allOf":[{"$ref":"#/components/schemas/BomParameterOption"},{"type":"object","properties":{"min":{"type":"string","description":"최솟값"},"max":{"type":"string","description":"최댓값"},"stepSize":{"type":"string","description":"단계 크기"}}}],"required":["max","min","stepSize"]},"BomParameterValuesOption":{"allOf":[{"$ref":"#/components/schemas/BomParameterOption"},{"type":"object","properties":{"values":{"type":"array","description":"선택 가능한 값 목록","items":{"type":"string"}}}}],"required":["values"]},"BomParameterTextWithImagesOption":{"allOf":[{"$ref":"#/components/schemas/BomParameterOption"},{"type":"object","properties":{"values":{"type":"array","description":"텍스트+이미지 목록","items":{"$ref":"#/components/schemas/BomParameterTextWithImagesItem"}}}}],"required":["values"]},"BomParameterTextWithImagesItem":{"type":"object","properties":{"text":{"type":"string","description":"텍스트"},"imageUrl":{"type":"string","description":"이미지 URL"}},"required":["imageUrl","text"]},"BomParameterUnlimitedOption":{"allOf":[{"$ref":"#/components/schemas/BomParameterOption"},{"type":"object","properties":{"values":{"type":"array","description":"값 목록","items":{"type":"string"}}}}],"required":["values"]},"BomParameterFormulaOption":{"allOf":[{"$ref":"#/components/schemas/BomParameterOption"},{"type":"object","properties":{"formulaExpression":{"type":"string","description":"수식 표현식"}}}],"required":["formulaExpression"]},"BomStaticComponent":{"allOf":[{"$ref":"#/components/schemas/BomComponent"},{"type":"object","properties":{"id":{"type":"string","description":"컴포넌트 ID"},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"code":{"type":"string","description":"코드"},"namespace":{"type":"string","description":"네임스페이스"},"color":{"$ref":"#/components/schemas/ComponentColor","description":"색상"},"name":{"type":"string","description":"이름"},"translatedNames":{"type":"array","description":"다국어 이름","items":{"$ref":"#/components/schemas/ComponentTranslatedName"}},"type":{"type":"string","description":"타입"},"status":{"type":"string","description":"상태"},"sku":{"type":"string","description":"SKU"},"retailPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/ComponentPrice","description":"공장가"},"mainMaterial":{"type":"string","description":"주재료"},"subMaterial":{"type":"string","description":"부재료"},"rawMaterial":{"type":"string","description":"원재료"},"brandCode":{"type":"string","description":"브랜드 코드"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"isRaw":{"type":"boolean","description":"원자재 여부"},"isFinal":{"type":"boolean","description":"완제품 여부"},"unit":{"type":"string","description":"단위"},"version":{"type":"string","description":"버전"},"extra":{"type":"object","additionalProperties":{},"description":"추가 정보"},"modelingId":{"type":"string","description":"모델링 ID"},"parametricModelingId":{"type":"string","description":"파라메트릭 모델링 ID"},"previewImage":{"$ref":"#/components/schemas/ComponentAsset","description":"대표 이미지"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"hdViewerAssets":{"type":"array","description":"HD 뷰어 에셋 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"dxfAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"DXF 에셋"},"arAsset":{"$ref":"#/components/schemas/ComponentArAsset","description":"AR 에셋"},"editorSetting":{"$ref":"#/components/schemas/ComponentEditorSetting","description":"에디터 설정"},"categories":{"type":"array","description":"카테고리 목록","items":{"$ref":"#/components/schemas/ComponentCategory"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}}}],"required":["categories","createdAt","dimension","hdViewerAssets","id","images","isFinal","isRaw","name","translatedNames","updatedAt","userId"]},"BomParametricModeling":{"allOf":[{"$ref":"#/components/schemas/BomModeling"},{"type":"object","properties":{"id":{"type":"string","description":"모델링 ID"},"type":{"type":"string","description":"모델링 타입","enum":["STATIC_MODELING","PARAMETRIC_MODELING"]},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"path":{"type":"string","description":"경로"},"json":{"type":"string","description":"JSON"}}}],"required":["id","name","path","type","userId"]},"BomModeling":{},"BomStaticModeling":{"allOf":[{"$ref":"#/components/schemas/BomModeling"},{"type":"object","properties":{"id":{"type":"string","description":"모델링 ID"},"type":{"type":"string","description":"모델링 타입","enum":["STATIC_MODELING","PARAMETRIC_MODELING"]},"enterpriseId":{"type":"string","description":"기업 ID"},"userId":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"renderingStatus":{"type":"string","description":"렌더링 상태","enum":["WAITING","PROCESSING","COMPLETED","FAILED"]},"renderingStartedAt":{"type":"string","format":"date-time","description":"렌더링 시작일시"},"renderingFinishedAt":{"type":"string","format":"date-time","description":"렌더링 완료일시"},"renderingFailedAt":{"type":"string","format":"date-time","description":"렌더링 실패일시"},"dimension":{"$ref":"#/components/schemas/ComponentDimension","description":"치수"},"images":{"type":"array","description":"이미지 목록","items":{"$ref":"#/components/schemas/ComponentAsset"}},"file":{"$ref":"#/components/schemas/ComponentAsset","description":"원본 파일"},"editorAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"에디터 에셋"},"renderAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"렌더 에셋"},"decimateAsset":{"$ref":"#/components/schemas/ComponentAsset","description":"데시메이트 에셋"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}}}],"required":["createdAt","dimension","id","images","name","renderingStatus","type","updatedAt","userId"]},"BomParametricComposition":{"allOf":[{"$ref":"#/components/schemas/BomComposition"},{"type":"object","properties":{"parametricComponentCompositionId":{"type":"string","description":"파라메트릭 컴포지션 ID"},"recipeId":{"type":"string","description":"레시피 ID"},"recipePath":{"type":"string","description":"레시피 경로"},"json":{"type":"string","description":"JSON"},"options":{"type":"array","description":"옵션 목록","items":{"$ref":"#/components/schemas/BomOption"}},"animation":{"description":"애니메이션","oneOf":[{"$ref":"#/components/schemas/BomAxisRotationAnimation"},{"$ref":"#/components/schemas/BomTranslationAnimation"}]}}}],"required":["options","parametricComponentCompositionId"]},"BomComposition":{},"BomOption":{"type":"object","properties":{"key":{"type":"string","description":"키"},"value":{"type":"string","description":"값"}},"required":["key","value"]},"BomAxisRotationAnimation":{"allOf":[{"$ref":"#/components/schemas/BomAnimation"},{"type":"object","properties":{"type":{"type":"string","description":"애니메이션 타입","enum":["TRANSLATION","AXIS_ROTATION"]},"animationName":{"type":"string","description":"애니메이션 이름"},"animationDuration":{"type":"number","format":"double","description":"지속 시간(초)"},"animationDelay":{"type":"number","format":"double","description":"지연 시간(초)"},"animationDirection":{"type":"string","description":"방향","enum":["NORMAL","ALTERNATE"]},"animationIterationCount":{"type":"integer","format":"int32","description":"반복 횟수"},"pivot":{"type":"array","description":"회전 피벗","items":{"$ref":"#/components/schemas/BomDimensionValue"}},"axis":{"type":"array","description":"회전 축","items":{"type":"number","format":"double"}},"angle":{"type":"number","format":"double","description":"회전 각도"}}}],"required":["angle","animationDelay","animationDirection","animationDuration","animationIterationCount","animationName","axis","pivot","type"]},"BomAnimation":{},"BomDimensionValue":{"oneOf":[{"$ref":"#/components/schemas/BomDimensionValueNumeric"},{"$ref":"#/components/schemas/BomDimensionValueSymbolic"}]},"BomDimensionValueNumeric":{"allOf":[{"$ref":"#/components/schemas/BomDimensionValue"},{"type":"object","properties":{"value":{"type":"number","format":"double"}}}],"required":["value"]},"BomDimensionValueSymbolic":{"allOf":[{"$ref":"#/components/schemas/BomDimensionValue"},{"type":"object","properties":{"expression":{"type":"string"}}}],"required":["expression"]},"BomTranslationAnimation":{"allOf":[{"$ref":"#/components/schemas/BomAnimation"},{"type":"object","properties":{"type":{"type":"string","description":"애니메이션 타입","enum":["TRANSLATION","AXIS_ROTATION"]},"animationName":{"type":"string","description":"애니메이션 이름"},"animationDuration":{"type":"number","format":"double","description":"지속 시간(초)"},"animationDelay":{"type":"number","format":"double","description":"지연 시간(초)"},"animationDirection":{"type":"string","description":"방향","enum":["NORMAL","ALTERNATE"]},"animationIterationCount":{"type":"integer","format":"int32","description":"반복 횟수"},"direction":{"type":"array","description":"이동 방향 벡터","items":{"type":"number","format":"double"}},"distance":{"$ref":"#/components/schemas/BomDimensionValue","description":"이동 거리"}}}],"required":["animationDelay","animationDirection","animationDuration","animationIterationCount","animationName","direction","distance","type"]},"BomStaticComposition":{"allOf":[{"$ref":"#/components/schemas/BomComposition"},{"type":"object","properties":{"quantity":{"type":"string","description":"수량"},"matrices":{"type":"array","description":"변환 행렬 목록","items":{"type":"array","items":{"type":"string"}}},"isRequired":{"type":"boolean","description":"필수 여부"}}}],"required":["isRequired","matrices","quantity"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/components/{id}/bom":{"get":{"tags":["컴포넌트"],"summary":"컴포넌트 BOM 조회","description":"ID로 컴포넌트의 flat BOM 구조를 조회한다.","operationId":"getComponentFlatBom","parameters":[{"name":"id","in":"path","description":"컴포넌트 ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseFlatBomResponse"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.archisketch.com/dev/api-3/undefined-9.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
