API

개체 수정

작성일 2026.04.23 | 수정일 2026.04.29

PATCH/crm-core/v1/entities/{entityId}

개체의 속성(이름·슬러그·설명·소속 속성 ID 목록·접근 권한·소유자)을 부분 업데이트합니다. 전달된 필드만 갱신되며 나머지는 유지됩니다. 기본 MEMBER 이상 권한이 필요하며 일부 필드는 추가 권한을 요구합니다.

lightbulb

다음 필드는 **CRM OWNER 전용**: - `recordAccess` 변경 - `ownerId` 변경 (새 ownerId 는 유효한 CRM 멤버여야 함)

Path Params

NameTypeRequiredDescription
entityIdstring*수정할 개체의 고유 ID

Body Params

NameTypeRequiredDescription
namestring개체 이름
slugstringURL 친화적 식별자 (계정 내 고유)
descriptionstring개체 설명
propertyIdsarray속성 ID 목록 (표시 순서 포함)
recordAccessstring레코드 접근 권한 (PUBLIC / ENTITY_OWNER_ONLY / ADMIN_ONLY) — CRM OWNER 전용
ownerIdstring개체 소유자 멤버 ID — CRM OWNER 전용. 새 ownerId 는 유효한 CRM 멤버여야 함
viewSettingsobject뷰 설정 (TABLE / BOARD / CALENDAR). 콘솔 UI 편집 권장
modestring기본 뷰 모드 (TABLE / BOARD / CALENDAR)
tableobject테이블 뷰 설정
pageSizenumber페이지당 레코드 수
boardobject보드 뷰 설정
groupByPropertyIdstring보드 컬럼 그룹화 기준 속성 ID
sumPropertyIdstring보드 합계 집계 기준 속성 ID
weightPropertyIdstring가중치 집계 기준 속성 ID
aggregationTypestring집계 방식 (SUM / AVG / MAX / COUNT)
sortByPropertyIdstring정렬 기준 속성 ID
sortOrderstring정렬 방향 (ASC / DESC)
closedWonValuesarrayClosed-Won 으로 간주할 컬럼 값 목록
closedLostValuesarrayClosed-Lost 로 간주할 컬럼 값 목록
dealRottingobjectDeal Rotting 설정 (일정 기간 변동 없는 카드 강조)
enabledbooleanDeal Rotting 활성 여부
daysnumber변동 없음으로 간주할 일수 (기본 14)
calendarobject캘린더 뷰 설정
datePropertyIdstring캘린더 날짜 속성 ID
titlePropertyIdstring캘린더 제목 속성 ID
colorPropertyIdstring캘린더 색상 속성 ID
insightWidgetsarray인사이트 위젯 목록 (콘솔 UI 편집 권장)

Response

NameTypeRequiredDescription
entityIdstring*개체 고유 ID
accountIdstring*계정 고유 ID
workspaceIdstring워크스페이스 ID (워크스페이스 환경에서만)
namestring*개체 이름
slugstring개체 슬러그 (URL 식별자)
descriptionstring개체 설명
propertyIdsarray*개체에 포함된 속성 ID 목록 (표시 순서)
viewSettingsobject*뷰 설정
modestring*기본 뷰 모드 (TABLE / BOARD / CALENDAR)
tableobject*테이블 뷰 설정
pageSizenumber*테이블 뷰 페이지당 레코드 수
boardobject*보드 뷰 설정
groupByPropertyIdstring보드 컬럼 그룹화 기준 속성 ID
sumPropertyIdstring보드 합계 집계 기준 속성 ID
weightPropertyIdstring가중치 집계 기준 속성 ID
aggregationTypestring집계 방식 (SUM / AVG / MAX / COUNT)
sortByPropertyIdstring정렬 기준 속성 ID
sortOrderstring정렬 방향 (ASC / DESC)
closedWonValuesarrayClosed-Won 으로 간주할 컬럼 값 목록
closedLostValuesarrayClosed-Lost 로 간주할 컬럼 값 목록
dealRottingobjectDeal Rotting 설정 (일정 기간 변동 없는 카드 강조)
enabledbooleanDeal Rotting 활성 여부
daysnumber변동 없음으로 간주할 일수 (기본 14)
calendarobject캘린더 뷰 설정
datePropertyIdstring캘린더 날짜 속성 ID
titlePropertyIdstring캘린더 제목 속성 ID
colorPropertyIdstring캘린더 색상 속성 ID
insightWidgetsarray*레코드 인사이트 대시보드 위젯 목록
recordAccessstring*레코드 접근 권한 (PUBLIC / ENTITY_OWNER_ONLY / ADMIN_ONLY)
ownerIdstring개체 소유자 멤버 ID
prioritynumber*사이드바 표시 순서
isDeletedboolean*삭제 여부 (휴지통 플래그)
createdBystring생성한 멤버 ID
updatedBystring마지막으로 수정한 멤버 ID
dateCreateddate*최초 생성 시각 (UTC)
dateUpdateddate*최근 수정 시각 (UTC)

Structure

코드 예제

const crypto = require('crypto');

const apiKey = 'NCSXXXXXXXXXXXXX';
const apiSecret = 'YOUR_API_SECRET';
const dateTime = new Date().toISOString();
const salt = crypto.randomBytes(16).toString('hex');
const signature = crypto.createHmac('sha256', apiSecret).update(dateTime + salt).digest('hex');
const authHeader = HMAC-SHA256 apiKey=${apiKey}, date=${dateTime}, salt=${salt}, signature=${signature};

const response = await fetch(https://api.solapi.com/crm-core/v1/entities/${entityId}, {
method: 'PATCH',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' },
body: JSON.stringify({ description: 'B2B/B2C 통합 고객 개체' })
});
const data = await response.json();

import hmac, hashlib, secrets, requests
from datetime import datetime, timezone

api_key = 'NCSXXXXXXXXXXXXX'
api_secret = 'YOUR_API_SECRET'
date_time = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
salt = secrets.token_hex(16)
signature = hmac.new(api_secret.encode(), (date_time + salt).encode(), hashlib.sha256).hexdigest()
auth_header = f'HMAC-SHA256 apiKey={api_key}, date={date_time}, salt={salt}, signature={signature}'

response = requests.patch(f'https://api.solapi.com/crm-core/v1/entities/{entity_id}', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, json={'description': 'B2B/B2C 통합 고객 개체'})
data = response.json()

API_KEY="NCSXXXXXXXXXXXXX"
API_SECRET="YOUR_API_SECRET"
DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
SALT=$(openssl rand -hex 16)
SIGNATURE=$(echo -n "${DATE}${SALT}" | openssl dgst -sha256 -hmac "${API_SECRET}" | awk '{print $NF}')
AUTH="HMAC-SHA256 apiKey=${API_KEY}, date=${DATE}, salt=${SALT}, signature=${SIGNATURE}"

curl -X PATCH 'https://api.solapi.com/crm-core/v1/entities/CRMET1260423081530123XYZ11122233' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json" \
-d '{"description":"B2B/B2C 통합 고객 개체"}'

lightbulb

`slug` 변경 시 계정 내 다른 개체와 충돌하면 `409 DuplicateEntity` 가 반환됩니다. `propertyIds` 배열 순서는 테이블 뷰의 컬럼 순서로 반영됩니다.

lightbulb

**401 응답**: `{ "errorCode": "Unauthorized", "errorMessage": "권한이 없습니다." }`