본문으로 건너뛰기
Sursa Developers

객체 ID

API의 모든 객체에는 id가 있어요. 나중에 그 객체를 다시 찾아야 한다면 시스템에 저장해 두세요. 이름과 제목은 바뀔 수 있지만 ID는 절대 바뀌지 않아요.

객체id예
카드, 폴더문자열"3f2c9a7e-5b1d-4c8e-9f0a-1b2c3d4e5f60"
이벤트접두사가 evt_인 문자열"evt_0123456789abcdef0123456789abcdef"
업로드접두사가 upl_인 문자열"upl_8b0c…"
OAuth 애플리케이션접두사가 app_인 문자열"app_5f1c…"
컬렉션, 사용자, 그룹, API 키, 웹훅, 작업 등 대부분의 객체정수3

ID는 불투명한 값으로 다루세요. 파싱하지 말고, 타입 외의 형식을 가정하지 마세요. 문자열 ID는 필드가 허용하는 길이 안에서 어떤 문자열이든 될 수 있어요.

회사의 시스템에서 가리킬 가능성이 높은 새로운 종류의 객체에는 종류를 나타내는 짧은 접두사 뒤에 16진수 32자가 붙은 문자열 ID가 부여돼요.

객체 간 참조

객체는 <object>_id 형식의 이름을 가진 필드로 서로를 ID로 가리켜요. 예: collection_id, owner_id, folder_id. 관련 객체를 같은 응답에서 받으려면 expand[]를 사용하세요.

ID를 받는 경로 파라미터도 같은 방식으로 이름을 지어요. 예: {card_id}, {webhook_id}, {upload_id}.

ID로 컬렉션 지정하기

컬렉션에는 id와 support 같은 고유한 name이 모두 있어요. ID를 우선하기 전부터 있던 경로는 컬렉션 이름을 받아요.

GET /v1/collections/support/stats

같은 경로는 id:<number> 형식으로 쓴 ID도 받아요.

curl https://api.sursa.com/v1/collections/id:3/stats \
  -H "Authorization: Bearer $SURSA_API_KEY"

새 코드에서는 id: 형식을 쓰세요. 관리자가 컬렉션 이름을 바꿀 수 있지만 ID는 그대로예요. /v1/collections/3처럼 숫자만 있는 세그먼트는 여전히 이름이 3인 컬렉션을 뜻해요. 컬렉션 이름에는 :를 쓸 수 없으므로 두 형식이 섞이지 않아요.

요청 본문과 쿼리 파라미터에서는 collection_id를 이전의 collection(이름)과 나란히 쓸 수 있어요. 둘 다 보내면 collection_id가 우선해요. 조직에 없거나 키가 볼 수 없는 collection_id는 404 상태와 collections.not_found 코드를 반환해요.

curl -G https://api.sursa.com/v1/cards \
  -H "Authorization: Bearer $SURSA_API_KEY" \
  --data-urlencode "collection_id=3"

직접 정한 ID

카드에는 회사 시스템에 있는 원본 항목의 ID를 external_id에 담을 수 있어요. 최대 512자이며 조직의 카드 사이에서 고유해야 해요. 이 값을 쓰면 카드의 Sursa ID를 저장할 필요가 없어요.

엔드포인트하는 일
PUT /v1/cards-by-external-id/{external_id}카드를 생성하거나, 이미 있으면 내용을 교체해요.
GET /v1/cards-by-external-id/{external_id}카드를 읽어요.
GET /v1/cards?external_id=…다른 필터와 함께 목록에서 카드를 찾아요.

external_id가 경로의 일부일 때는 URL 인코딩하세요. crm/A-1042는 crm%2FA-1042가 돼요.

사용자 지정 소스의 문서에는 그 소스 안에서 쓰는 별도의 external_id가 있어요. 둘은 충돌하지 않아요. 사용자 지정 소스의 카드를 바꾸려면 문서를 그 소스로 다시 보내세요. 그런 카드에 PUT /v1/cards-by-external-id/…를 호출하면 409 상태와 cards.managed_by_source 코드로 응답해요.