API

레코드 수정

작성일 2026.03.24 | 수정일 2026.04.28

PATCH/crm-core/v1/records/{recordId}

레코드의 이름·속성값(data)·태그·담당자를 부분 업데이트합니다. 전달된 필드만 갱신되고 나머지는 유지됩니다. data 객체는 기존 값과 병합(merge)되며, 특정 속성을 초기화하려면 값을 null로 전달합니다. MEMBER 이상 권한이 필요합니다.

Path Params

NameTypeRequiredDescription
recordIdstring*수정할 레코드의 고유 ID

Body Params

NameTypeRequiredDescription
namestring레코드 이름 (최대 500자)
dataobject업데이트할 속성값 맵. 키는 속성 ID. null 값은 해당 속성 초기화
tagsarray<string>태그 목록 전체 교체 (최대 100개, 각 최대 256자)
ownerIdstring담당자 멤버 ID

Response

NameTypeRequiredDescription
recordIdstring*레코드 고유 ID
accountIdstring*계정 고유 ID
workspaceIdstring워크스페이스 ID (워크스페이스 환경에서만)
entityIdstring*소속 개체 ID
namestring*레코드 이름
dataobject*병합된 전체 속성값 맵
tagsarray<string>*태그 목록
ownerIdstring | null담당자 멤버 ID
profileImageobject | null대표 프로필 이미지
imagesarray<object>*이미지 첨부 배열
attachmentsarray<object>*파일 첨부 배열
createdBystring | null생성한 멤버 ID
updatedBystring | null마지막으로 수정한 멤버 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/records/CRMRC1260423081530123REC11122233', {
method: 'PATCH',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' },
body: JSON.stringify({
"name": "홍길동 (업데이트)",
"data": {
"CRMPP1260423081530123STAT1112223": "VIP"
}
})
});
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('https://api.solapi.com/crm-core/v1/records/CRMRC1260423081530123REC11122233', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, json={
"name": "홍길동 (업데이트)",
"data": {
"CRMPP1260423081530123STAT1112223": "VIP"
}
})
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/records/CRMRC1260423081530123REC11122233' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json" \
-d '{"name": "홍길동 (업데이트)", "data": {"CRMPP1260423081530123STAT1112223": "VIP"}}'

lightbulb

- `data` 객체는 **병합** 처리됩니다. 특정 속성만 지우려면 `{"propertyId": null}` 전달 - `tags`는 전체 **교체**입니다. 태그 추가만 원할 경우 기존 태그를 먼저 조회한 뒤 합쳐 보내세요 - `ownerId`를 빈 문자열로 전달하면 담당자가 해제됩니다

lightbulb

수정 이력은 레코드 변경 로그에 기록됩니다. `GET /crm-core/v1/records/{recordId}/logs`로 조회 가능합니다.

lightbulb

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