# 프로젝트

## 프로젝트 조회

> 프로젝트 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":{"ApiResponseProjectDetailResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/ProjectDetailResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ProjectDetailResponse":{"type":"object","properties":{"id":{"type":"string","description":"프로젝트 ID"},"name":{"type":"string","description":"프로젝트 이름"},"enterpriseId":{"type":"string","description":"엔터프라이즈 ID"},"floorplans":{"type":"array","description":"도면 목록","items":{}},"images":{"type":"array","description":"프로젝트 이미지 목록","items":{"$ref":"#/components/schemas/ProjectImage"}},"mapFloorplanDetail":{"$ref":"#/components/schemas/MapFloorplanDetailResponse","description":"맵 도면 상세"},"ownerUser":{"$ref":"#/components/schemas/ProjectUser","description":"소유자 정보"},"projectAccessUsers":{"type":"array","description":"공유 사용자 목록","items":{"$ref":"#/components/schemas/AccessUserResponse"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["createdAt","floorplans","id","images","name","ownerUser","projectAccessUsers","updatedAt"]},"ProjectImage":{"type":"object","properties":{"type":{"type":"string","description":"이미지 유형 (DEFAULT: 프로젝트 기본 이미지, THUMBNAIL: 프로젝트 썸네일 이미지, RENDER: 프로젝트 랜더샷 이미지)","enum":["DEFAULT","THUMBNAIL","RENDER"]},"imageId":{"type":"string","description":"이미지 ID"},"url":{"type":"string","description":"이미지 URL"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["imageId","order","type","url"]},"MapFloorplanDetailResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"mapFloorplanId":{"type":"string","description":"맵 도면 ID"},"floorplanDetailId":{"type":"string","description":"도면 상세 ID"},"enterpriseId":{"type":"string","description":"엔터프라이즈 ID"},"userId":{"type":"string","description":"사용자 ID"},"access":{"type":"string","description":"접근 권한 타입"},"lat":{"type":"number","format":"double","description":"위도"},"lng":{"type":"number","format":"double","description":"경도"},"floorplanDetails":{"type":"array","description":"도면 상세 목록","items":{"$ref":"#/components/schemas/FloorplanDetailResponse"}},"address":{"$ref":"#/components/schemas/MapFloorplanAddress","description":"주소"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"}},"required":["access","address","createdAt","enterpriseId","floorplanDetailId","floorplanDetails","id","lat","lng","mapFloorplanId","userId"]},"FloorplanDetailResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID"},"mapFloorplanId":{"type":"string","description":"맵 도면 ID"},"preview":{"type":"string","description":"미리보기 이미지 URL"},"status":{"type":"string","description":"도면 상태","enum":["CREATED","WORKING","TESTING","COMPLETED","FAILED"]},"areaInfo":{"$ref":"#/components/schemas/MapFloorplanAreaInfo","description":"면적 정보"},"assign":{"$ref":"#/components/schemas/MapFloorplanAssign","description":"담당자 정보"},"oldMapId":{"type":"integer","format":"int32","description":"이전 맵 ID"},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["areaInfo","createdAt","id","mapFloorplanId","status","updatedAt"]},"MapFloorplanAreaInfo":{"type":"object","properties":{"areaType":{"type":"string","description":"면적 타입"},"area":{"type":"string","description":"면적"},"supplyArea":{"type":"string","description":"공급 면적"},"exclusiveArea":{"type":"string","description":"전용 면적"}},"required":["area","areaType","exclusiveArea","supplyArea"]},"MapFloorplanAssign":{"type":"object","properties":{"userId":{"type":"string","description":"담당자 사용자 ID"},"email":{"type":"string","description":"담당자 이메일"}}},"MapFloorplanAddress":{"type":"object","properties":{"id":{"type":"string","description":"주소 ID"},"parentId":{"type":"string","description":"상위 주소 ID"},"userId":{"type":"string","description":"사용자 ID"},"enterpriseId":{"type":"string","description":"엔터프라이즈 ID"},"numberAddress":{"type":"string","description":"지번 주소"},"roadAddress":{"type":"string","description":"도로명 주소"},"zipcode":{"type":"string","description":"우편번호"},"danjiCode":{"type":"string","description":"단지 코드"},"adminCode":{"type":"string","description":"행정 코드"},"roadCode":{"type":"string","description":"도로 코드"},"buildingCode":{"type":"string","description":"건물 코드"},"buildingName":{"type":"string","description":"건물명"}},"required":["id","parentId","userId"]},"ProjectUser":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"}},"required":["email","id","name"]},"AccessUserResponse":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"},"accessType":{"type":"string","description":"접근 권한 유형 (EDIT: 수정, VIEW: 보기)","enum":["EDIT","VIEW"]}},"required":["accessType","email","id","name"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/projects/{id}":{"get":{"tags":["프로젝트"],"summary":"프로젝트 조회","description":"프로젝트 ID로 프로젝트 상세 정보를 조회합니다.","operationId":"getProjectDetail","parameters":[{"name":"id","in":"path","description":"프로젝트 ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseProjectDetailResponse"}}}}}}}}}
```

## 프로젝트 수정

> 프로젝트 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":{"UpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"프로젝트 이름"}},"required":["name"]},"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/projects/{id}":{"put":{"tags":["프로젝트"],"summary":"프로젝트 수정","description":"프로젝트 ID로 프로젝트 이름을 수정합니다.","operationId":"updateProject","parameters":[{"name":"id","in":"path","description":"프로젝트 ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 휴지통 프로젝트 노출 상태 보이기로 변경

> 프로젝트 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":{"RestoreRequest":{"type":"object","properties":{"ids":{"type":"array","description":"복구할 프로젝트 ID 목록","items":{"type":"string"}}},"required":["ids"]},"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/projects/restore":{"post":{"tags":["프로젝트"],"summary":"휴지통 프로젝트 노출 상태 보이기로 변경","description":"프로젝트 ID 목록으로 휴지통 프로젝트를 복원합니다.","operationId":"restoreProjects","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 북마크 프로젝트 목록 조회

> 북마크된 프로젝트 목록을 조회합니다.\
> \
> \### 사용처\
> \- 사용자가 북마크한 프로젝트 목록 확인\
> \- 기업/개인별 북마크 프로젝트 관리\
> \- 북마크 프로젝트 검색 및 필터링\
> \
> \### 페이지네이션\
> \- offset 기반 페이징 (0부터 시작)\
> \- limit: 페이지 크기 (최소 1, 최대 100)\
> \- 응답의 hasNext로 다음 페이지 존재 여부 확인\
> \
> \### 필터 조건\
> \- bookmarkOwnerType: 북마크 소유자 유형 (필수)\
> \- projectDirectoryType: 프로젝트 디렉토리 유형 (필수)\
> \- userId: PERSONAL 타입일 때 필수\
> \- directoryId: 특정 디렉토리 내 조회\
> \- targetType: 사용자 검색 유형\
> \- keyword: 프로젝트 이름 검색\
> \- sortType: 정렬 기준 (기본값: ID\_DESC)\
> \- status: 프로젝트 상태 (기본값: ACTIVE)

```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":{"ApiResponsePageResponseProjectResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/PageResponseProjectResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"PageResponseProjectResponse":{"type":"object","properties":{"content":{"type":"array","description":"콘텐츠 목록","items":{"$ref":"#/components/schemas/ProjectResponse"}},"hasNext":{"type":"boolean","description":"다음 페이지 존재 여부"},"totalCount":{"type":"integer","format":"int64","description":"전체 개수"}},"required":["content","hasNext","totalCount"]},"ProjectResponse":{"type":"object","properties":{"id":{"type":"string","description":"프로젝트 ID"},"name":{"type":"string","description":"프로젝트 이름"},"images":{"type":"array","description":"프로젝트 이미지 목록","items":{"$ref":"#/components/schemas/ProjectImage"}},"bookmarked":{"type":"boolean","description":"북마크 여부"},"ownerUser":{"$ref":"#/components/schemas/ProjectUser","description":"소유자 정보"},"projectAccessUsers":{"type":"array","description":"공유 사용자 목록","items":{"$ref":"#/components/schemas/AccessUserResponse"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["bookmarked","createdAt","id","images","name","ownerUser","projectAccessUsers","updatedAt"]},"ProjectImage":{"type":"object","properties":{"type":{"type":"string","description":"이미지 유형 (DEFAULT: 프로젝트 기본 이미지, THUMBNAIL: 프로젝트 썸네일 이미지, RENDER: 프로젝트 랜더샷 이미지)","enum":["DEFAULT","THUMBNAIL","RENDER"]},"imageId":{"type":"string","description":"이미지 ID"},"url":{"type":"string","description":"이미지 URL"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["imageId","order","type","url"]},"ProjectUser":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"}},"required":["email","id","name"]},"AccessUserResponse":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"},"accessType":{"type":"string","description":"접근 권한 유형 (EDIT: 수정, VIEW: 보기)","enum":["EDIT","VIEW"]}},"required":["accessType","email","id","name"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/bookmark-projects":{"get":{"tags":["프로젝트"],"summary":"북마크 프로젝트 목록 조회","description":"북마크된 프로젝트 목록을 조회합니다.\n\n### 사용처\n- 사용자가 북마크한 프로젝트 목록 확인\n- 기업/개인별 북마크 프로젝트 관리\n- 북마크 프로젝트 검색 및 필터링\n\n### 페이지네이션\n- offset 기반 페이징 (0부터 시작)\n- limit: 페이지 크기 (최소 1, 최대 100)\n- 응답의 hasNext로 다음 페이지 존재 여부 확인\n\n### 필터 조건\n- bookmarkOwnerType: 북마크 소유자 유형 (필수)\n- projectDirectoryType: 프로젝트 디렉토리 유형 (필수)\n- userId: PERSONAL 타입일 때 필수\n- directoryId: 특정 디렉토리 내 조회\n- targetType: 사용자 검색 유형\n- keyword: 프로젝트 이름 검색\n- sortType: 정렬 기준 (기본값: ID_DESC)\n- status: 프로젝트 상태 (기본값: ACTIVE)","operationId":"getBookmarkProjects","parameters":[{"name":"userId","in":"query","description":"사용자 ID (PERSONAL 타입 필수)","required":false,"schema":{"type":"string"}},{"name":"bookmarkOwnerType","in":"query","description":"북마크 소유자 유형","required":true,"schema":{"type":"string","description":"북마크 소유자 유형","enum":["PERSONAL","ENTERPRISE"]}},{"name":"projectDirectoryType","in":"query","description":"프로젝트 디렉토리 유형","required":true,"schema":{"type":"string","description":"프로젝트 디렉토리 타입","enum":["ENTERPRISE","PERSONAL"]}},{"name":"directoryId","in":"query","description":"디렉토리 ID","required":false,"schema":{"type":"string"}},{"name":"targetType","in":"query","description":"사용자 검색 유형","required":false,"schema":{"type":"string","description":"사용자 검색 대상 타입","enum":["NAME","EMAIL"]}},{"name":"keyword","in":"query","description":"검색어","required":false,"schema":{"type":"string"}},{"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":"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"]}},{"name":"status","in":"query","description":"프로젝트 상태","required":false,"schema":{"type":"string","default":"ACTIVE","description":"활성 상태","enum":["ACTIVE","DELETE"]}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponsePageResponseProjectResponse"}}}}}}}}}
```

## 프로젝트 북마크 적용

> 프로젝트에 북마크를 추가하거나 제거합니다.

```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":{"ApplyRequest":{"type":"object","properties":{"projectId":{"type":"string","description":"프로젝트 ID"},"ownerType":{"type":"string","description":"북마크 소유자 유형","enum":["PERSONAL","ENTERPRISE"]},"type":{"type":"string","description":"북마크 유형 (BOOKMARKED: 북마크, UNBOOKMARKED: 북마크 제거)","enum":["BOOKMARKED","UNBOOKMARKED"]},"userId":{"type":"string","description":"사용자 ID (PERSONAL 타입 시 필수)"}},"required":["ownerType","projectId","type"]},"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/bookmark-projects":{"post":{"tags":["프로젝트"],"summary":"프로젝트 북마크 적용","description":"프로젝트에 북마크를 추가하거나 제거합니다.","operationId":"applyBookmarkProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyRequest"}}},"required":true},"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseUnit"}}}}}}}}}
```

## 공유 프로젝트 목록 조회

> 공유된 프로젝트 목록을 조회합니다.\
> \
> \### 사용처\
> \- 사용자가 공유한/공유받은 프로젝트 목록 확인\
> \- 공유 방향별 프로젝트 관리\
> \- 공유 프로젝트 검색\
> \
> \### 페이지네이션\
> \- offset 기반 페이징 (0부터 시작)\
> \- limit: 페이지 크기 (최소 1, 최대 100)\
> \- 응답의 hasNext로 다음 페이지 존재 여부 확인\
> \
> \### 필터 조건\
> \- userId: 사용자 ID (필수)\
> \- shareDirection: 공유 방향 (필수)\
> \- keyword: 프로젝트 이름 검색\
> \- sortType: 정렬 기준 (기본값: ID\_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":{"ApiResponsePageResponseProjectResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/PageResponseProjectResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"PageResponseProjectResponse":{"type":"object","properties":{"content":{"type":"array","description":"콘텐츠 목록","items":{"$ref":"#/components/schemas/ProjectResponse"}},"hasNext":{"type":"boolean","description":"다음 페이지 존재 여부"},"totalCount":{"type":"integer","format":"int64","description":"전체 개수"}},"required":["content","hasNext","totalCount"]},"ProjectResponse":{"type":"object","properties":{"id":{"type":"string","description":"프로젝트 ID"},"name":{"type":"string","description":"프로젝트 이름"},"images":{"type":"array","description":"프로젝트 이미지 목록","items":{"$ref":"#/components/schemas/ProjectImage"}},"bookmarked":{"type":"boolean","description":"북마크 여부"},"ownerUser":{"$ref":"#/components/schemas/ProjectUser","description":"소유자 정보"},"projectAccessUsers":{"type":"array","description":"공유 사용자 목록","items":{"$ref":"#/components/schemas/AccessUserResponse"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["bookmarked","createdAt","id","images","name","ownerUser","projectAccessUsers","updatedAt"]},"ProjectImage":{"type":"object","properties":{"type":{"type":"string","description":"이미지 유형 (DEFAULT: 프로젝트 기본 이미지, THUMBNAIL: 프로젝트 썸네일 이미지, RENDER: 프로젝트 랜더샷 이미지)","enum":["DEFAULT","THUMBNAIL","RENDER"]},"imageId":{"type":"string","description":"이미지 ID"},"url":{"type":"string","description":"이미지 URL"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["imageId","order","type","url"]},"ProjectUser":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"}},"required":["email","id","name"]},"AccessUserResponse":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"},"accessType":{"type":"string","description":"접근 권한 유형 (EDIT: 수정, VIEW: 보기)","enum":["EDIT","VIEW"]}},"required":["accessType","email","id","name"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/share-projects":{"get":{"tags":["프로젝트"],"summary":"공유 프로젝트 목록 조회","description":"공유된 프로젝트 목록을 조회합니다.\n\n### 사용처\n- 사용자가 공유한/공유받은 프로젝트 목록 확인\n- 공유 방향별 프로젝트 관리\n- 공유 프로젝트 검색\n\n### 페이지네이션\n- offset 기반 페이징 (0부터 시작)\n- limit: 페이지 크기 (최소 1, 최대 100)\n- 응답의 hasNext로 다음 페이지 존재 여부 확인\n\n### 필터 조건\n- userId: 사용자 ID (필수)\n- shareDirection: 공유 방향 (필수)\n- keyword: 프로젝트 이름 검색\n- sortType: 정렬 기준 (기본값: ID_DESC)","operationId":"getShareProjects","parameters":[{"name":"userId","in":"query","description":"사용자 ID","required":true,"schema":{"type":"string"}},{"name":"shareDirection","in":"query","description":"공유 방향","required":true,"schema":{"type":"string","description":"공유 타입","enum":["SHARED_BY_ME","SHARED_WITH_ME"]}},{"name":"keyword","in":"query","description":"프로젝트 이름 검색어","required":false,"schema":{"type":"string"}},{"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":"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/ApiResponsePageResponseProjectResponse"}}}}}}}}}
```

## 프로젝트 목록 조회

> 프로젝트 디렉토리 유형에 따른 프로젝트 목록을 조회합니다.\
> \
> \### 사용처\
> \- 기업/개인 디렉토리별 프로젝트 목록 조회\
> \- 특정 디렉토리 내 프로젝트 필터링\
> \- 사용자별, 키워드별 프로젝트 검색\
> \
> \### 페이지네이션\
> \- offset 기반 페이징 (0부터 시작)\
> \- limit: 페이지 크기 (최소 1, 최대 100)\
> \- 응답의 hasNext로 다음 페이지 존재 여부 확인\
> \
> \### 필터 조건\
> \- projectDirectoryType: 프로젝트 디렉토리 유형 (필수)\
> \- userId: PERSONAL 타입일 때 필수\
> \- directoryId: 특정 디렉토리 내 조회\
> \- targetType: 사용자 검색 유형\
> \- keyword: 프로젝트 이름 검색\
> \- sortType: 정렬 기준 (기본값: ID\_DESC)\
> \- status: 프로젝트 상태 (기본값: ACTIVE)

```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":{"ApiResponsePageResponseProjectResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/PageResponseProjectResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"PageResponseProjectResponse":{"type":"object","properties":{"content":{"type":"array","description":"콘텐츠 목록","items":{"$ref":"#/components/schemas/ProjectResponse"}},"hasNext":{"type":"boolean","description":"다음 페이지 존재 여부"},"totalCount":{"type":"integer","format":"int64","description":"전체 개수"}},"required":["content","hasNext","totalCount"]},"ProjectResponse":{"type":"object","properties":{"id":{"type":"string","description":"프로젝트 ID"},"name":{"type":"string","description":"프로젝트 이름"},"images":{"type":"array","description":"프로젝트 이미지 목록","items":{"$ref":"#/components/schemas/ProjectImage"}},"bookmarked":{"type":"boolean","description":"북마크 여부"},"ownerUser":{"$ref":"#/components/schemas/ProjectUser","description":"소유자 정보"},"projectAccessUsers":{"type":"array","description":"공유 사용자 목록","items":{"$ref":"#/components/schemas/AccessUserResponse"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"},"updatedAt":{"type":"string","format":"date-time","description":"수정일시"}},"required":["bookmarked","createdAt","id","images","name","ownerUser","projectAccessUsers","updatedAt"]},"ProjectImage":{"type":"object","properties":{"type":{"type":"string","description":"이미지 유형 (DEFAULT: 프로젝트 기본 이미지, THUMBNAIL: 프로젝트 썸네일 이미지, RENDER: 프로젝트 랜더샷 이미지)","enum":["DEFAULT","THUMBNAIL","RENDER"]},"imageId":{"type":"string","description":"이미지 ID"},"url":{"type":"string","description":"이미지 URL"},"order":{"type":"integer","format":"int32","description":"순서"}},"required":["imageId","order","type","url"]},"ProjectUser":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"}},"required":["email","id","name"]},"AccessUserResponse":{"type":"object","properties":{"id":{"type":"string","description":"사용자 ID"},"name":{"type":"string","description":"이름"},"email":{"type":"string","description":"이메일"},"imageUrl":{"type":"string","description":"프로필 이미지 URL"},"accessType":{"type":"string","description":"접근 권한 유형 (EDIT: 수정, VIEW: 보기)","enum":["EDIT","VIEW"]}},"required":["accessType","email","id","name"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/projects":{"get":{"tags":["프로젝트"],"summary":"프로젝트 목록 조회","description":"프로젝트 디렉토리 유형에 따른 프로젝트 목록을 조회합니다.\n\n### 사용처\n- 기업/개인 디렉토리별 프로젝트 목록 조회\n- 특정 디렉토리 내 프로젝트 필터링\n- 사용자별, 키워드별 프로젝트 검색\n\n### 페이지네이션\n- offset 기반 페이징 (0부터 시작)\n- limit: 페이지 크기 (최소 1, 최대 100)\n- 응답의 hasNext로 다음 페이지 존재 여부 확인\n\n### 필터 조건\n- projectDirectoryType: 프로젝트 디렉토리 유형 (필수)\n- userId: PERSONAL 타입일 때 필수\n- directoryId: 특정 디렉토리 내 조회\n- targetType: 사용자 검색 유형\n- keyword: 프로젝트 이름 검색\n- sortType: 정렬 기준 (기본값: ID_DESC)\n- status: 프로젝트 상태 (기본값: ACTIVE)","operationId":"getProjects","parameters":[{"name":"projectDirectoryType","in":"query","description":"프로젝트 디렉토리 유형","required":true,"schema":{"type":"string","description":"프로젝트 디렉토리 타입","enum":["ENTERPRISE","PERSONAL"]}},{"name":"userId","in":"query","description":"사용자 ID (PERSONAL 타입 필수)","required":false,"schema":{"type":"string"}},{"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":"directoryId","in":"query","description":"디렉토리 ID","required":false,"schema":{"type":"string"}},{"name":"targetType","in":"query","description":"사용자 검색 유형","required":false,"schema":{"type":"string","description":"사용자 검색 대상 타입","enum":["NAME","EMAIL"]}},{"name":"keyword","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"]}},{"name":"status","in":"query","description":"프로젝트 상태","required":false,"schema":{"type":"string","default":"ACTIVE","description":"활성 상태","enum":["ACTIVE","DELETE"]}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponsePageResponseProjectResponse"}}}}}}}}}
```

## 프로젝트 견적 조회

> 프로젝트의 현재 견적 데이터를 조회합니다.

```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":{"ApiResponseProjectEstimateResponse":{"type":"object","properties":{"result":{"type":"string","description":"응답 결과 타입","enum":["SUCCESS","FAIL"]},"data":{"$ref":"#/components/schemas/ProjectEstimateResponse","description":"응답 데이터"},"error":{"$ref":"#/components/schemas/ErrorMessage","description":"에러 응답, result FAIL 시 제공"}},"required":["result"]},"ProjectEstimateResponse":{"type":"object","properties":{"projectId":{"type":"string","description":"프로젝트 ID"},"projectName":{"type":"string","description":"프로젝트 이름"},"userId":{"type":"string","description":"사용자 ID"},"userName":{"type":"string","description":"사용자 이름"},"userEmail":{"type":"string","description":"사용자 이메일"},"furnitureItems":{"type":"array","description":"가구 아이템 목록","items":{"$ref":"#/components/schemas/FurnitureItem"}},"finishItems":{"type":"array","description":"마감재 아이템 목록","items":{"$ref":"#/components/schemas/FinishItem"}},"createdAt":{"type":"string","format":"date-time","description":"생성일시"}},"required":["createdAt","finishItems","furnitureItems","projectId","projectName","userEmail","userId","userName"]},"FurnitureItem":{"type":"object","properties":{"floorId":{"type":"string","description":"층 ID"},"floorName":{"type":"string","description":"층 이름"},"roomId":{"type":"string","description":"룸 ID"},"roomType":{"type":"string","description":"룸 유형"},"componentId":{"type":"string","description":"컴포넌트 ID"},"code":{"type":"string","description":"제품 코드"},"previewImage":{"type":"string","description":"미리보기 이미지 URL"},"name":{"type":"string","description":"제품명"},"colorName":{"type":"string","description":"색상명"},"colorCode":{"type":"string","description":"색상 코드"},"brand":{"type":"string","description":"브랜드"},"dimensionInch":{"$ref":"#/components/schemas/Dimension","description":"인치 단위 치수"},"dimensionMm":{"$ref":"#/components/schemas/Dimension","description":"밀리미터 단위 치수"},"quantity":{"type":"integer","format":"int32","description":"수량"},"retailPrice":{"$ref":"#/components/schemas/PriceInfo","description":"소비자가"},"factoryPrice":{"$ref":"#/components/schemas/PriceInfo","description":"공장가"},"totalPrice":{"$ref":"#/components/schemas/PriceInfo","description":"합계 금액"}},"required":["componentId","floorId","floorName","name","quantity","retailPrice","totalPrice"]},"Dimension":{"type":"object","properties":{"width":{"type":"number","format":"double","description":"너비"},"height":{"type":"number","format":"double","description":"높이"},"depth":{"type":"number","format":"double","description":"깊이"}},"required":["height","width"]},"PriceInfo":{"type":"object","properties":{"value":{"type":"number","format":"double","description":"금액"},"currency":{"type":"string","description":"통화 코드","enum":["KRW","USD","EUR","JPY","GBP","CNY","VND","TWD"]}},"required":["currency","value"]},"FinishItem":{"type":"object","properties":{"floorId":{"type":"string","description":"층 ID"},"floorName":{"type":"string","description":"층 이름"},"roomId":{"type":"string","description":"룸 ID"},"roomType":{"type":"string","description":"룸 유형"},"productId":{"type":"string","description":"제품 ID"},"previewImage":{"type":"string","description":"미리보기 이미지 URL"},"name":{"type":"string","description":"제품명"},"colorName":{"type":"string","description":"색상명"},"colorCode":{"type":"string","description":"색상 코드"},"dimensionInch":{"$ref":"#/components/schemas/Dimension","description":"인치 단위 치수"},"dimensionMm":{"$ref":"#/components/schemas/Dimension","description":"밀리미터 단위 치수"},"quantity":{"type":"integer","format":"int32","description":"수량 (박스)"},"tileQuantity":{"type":"integer","format":"int32","description":"타일 수량"},"tileQuantityMin":{"type":"integer","format":"int32","description":"타일 최소 수량"},"tileQuantityMax":{"type":"integer","format":"int32","description":"타일 최대 수량"},"targetType":{"type":"string","description":"시공 대상 유형"},"targetArea":{"type":"number","format":"double","description":"시공 대상 면적 (㎡)"},"retailPrice":{"$ref":"#/components/schemas/PriceInfo","description":"소비자가"},"totalPrice":{"$ref":"#/components/schemas/PriceInfo","description":"합계 금액"}},"required":["floorId","floorName","name","productId","quantity","retailPrice","targetArea","targetType","tileQuantity","tileQuantityMax","tileQuantityMin","totalPrice"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string","description":"에러 코드","enum":["INTERNAL_ERROR","BAD_REQUEST","NOT_FOUND","CONFLICT","FORBIDDEN"]},"message":{"type":"string","description":"에러 메시지"}}}}},"paths":{"/api/v1/project/{id}/estimates":{"get":{"tags":["프로젝트"],"summary":"프로젝트 견적 조회","description":"프로젝트의 현재 견적 데이터를 조회합니다.","operationId":"getProjectEstimate","parameters":[{"name":"id","in":"path","description":"프로젝트 ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"모든 응답은 200으로 내려갑니다 (성공 실패 포함) (장애상황에서만 5xx 노출)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponseProjectEstimateResponse"}}}}}}}}}
```


---

# 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-3.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.
