API

레코드 전문 검색

작성일 2026.04.23 | 수정일 2026.04.29

GET/crm-core/v1/records/search/fulltext/{entityId}

특정 개체 내에서 레코드 이름(name 필드)을 기준으로 부분 일치 검색을 수행합니다. 자동 완성(autocomplete) 또는 빠른 탐색 UI에 적합합니다. 결과는 마스킹 정책과 소유권 규칙이 적용된 후 반환됩니다.

Path Params

NameTypeRequiredDescription
entityIdstring*검색 대상 개체 ID

Query Params

NameTypeRequiredDescription
qstring*검색어. 이름 필드에 대해 대소문자 무시 부분 일치 검색 수행
limitnumber최대 결과 수. 기본값 20, 상한 권장 100

Response

NameTypeRequiredDescription
[]array<object>*매칭된 레코드 배열 (마스킹·서명 URL이 반영됨)
recordIdstring*레코드 ID
entityIdstring*개체 ID
namestring*레코드 이름
dataobject속성값 맵 (마스킹 적용)
tagsarray<string>태그 배열
profileImageobject | null프로필 이미지 메타 (서명 URL)
dateCreateddate*생성 시각

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/fulltext/CRMET1260423081530123XYZ11122233?q=%ED%99%8D%EA%B8%B8%EB%8F%99&limit=20', {
method: 'GET',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }
});
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.get('https://api.solapi.com/crm-core/v1/records/search/fulltext/CRMET1260423081530123XYZ11122233', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, params={
"q": "홍길동",
"limit": 20
})
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 GET 'https://api.solapi.com/crm-core/v1/records/search/fulltext/CRMET1260423081530123XYZ11122233?q=%ED%99%8D%EA%B8%B8%EB%8F%99&limit=20' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json"

lightbulb

검색 대상은 레코드 `name` 필드 한정이며 속성값(`data.&#42;`)은 검색 대상에 포함되지 않습니다. 속성값 기반 검색이 필요하면 `POST /crm-core/v1/records/search/advanced`의 `contains` 조건을 사용하세요.

lightbulb

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