레코드 고급 검색
/crm-core/v1/records/search/advanced복합 필터 조건(AND/OR 중첩), 정렬, 커서 기반 페이지네이션을 지원하는 검색 엔드포인트입니다. 시스템 필드(name, tags 등)와 속성(data.*) 필드를 혼합한 조건을 구성할 수 있습니다. 속성값 기반 조건은 내부적으로 record_values 컬렉션의 2단계 쿼리로 처리됩니다.
Body Params
Response
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/search/advanced', {
method: 'POST',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' },
body: JSON.stringify({
"entityId": "CRMET1260423081530123XYZ11122233",
"conditionGroup": {
"operator": "AND",
"conditions": [
{
"field": "name",
"operator": "contains",
"value": "홍"
}
]
},
"sortFields": [
"-dateCreated"
],
"limit": 50
})
});
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.post('https://api.solapi.com/crm-core/v1/records/search/advanced', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, json={
"entityId": "CRMET1260423081530123XYZ11122233",
"conditionGroup": {
"operator": "AND",
"conditions": [
{
"field": "name",
"operator": "contains",
"value": "홍"
}
]
},
"sortFields": [
"-dateCreated"
],
"limit": 50
})
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 POST 'https://api.solapi.com/crm-core/v1/records/search/advanced' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json" \
-d '{"entityId": "CRMET1260423081530123XYZ11122233", "conditionGroup": {"operator": "AND", "conditions": [{"field": "name", "operator": "contains", "value": "홍"}]}, "sortFields": ["-dateCreated"], "limit": 50}'
지원 연산자: `equals`, `not_equals`, `contains`, `not_contains`, `starts_with`, `ends_with`, `is_empty`, `is_not_empty`, `greater_than`, `less_than`, `greater_or_equal`, `less_or_equal`, `between`, `before`, `after`, `in_last_days`, `in_next_days`, `in_last_minutes`, `in_next_minutes`, `before_last_days`, `after_next_days`, `before_last_minutes`, `after_next_minutes`, `this_week`, `this_month`, `this_year`, `includes`, `excludes`, `includes_all`, `includes_any`.
조건 그룹은 최대 50개의 하위 조건을 가질 수 있습니다. 깊은 중첩은 쿼리 성능에 영향을 주므로 3단계 이상 중첩은 지양하세요.
`sortFields`는 콜론(`:`) 표기를 지원하지 않습니다. 내림차순은 반드시 `-` 접두어를 사용하세요(`-dateCreated`).
**401 응답**: `{ "errorCode": "Unauthorized", "errorMessage": "권한이 없습니다." }`