지원서
지원서, 답변, 매칭 점수, 스크리닝 상태, 이력서, 그리고 지원서 이동, 탈락 처리, 메모.
지원서는 채용 공고 하나와 사람 한 명을 연결합니다. ATS 연동에 필요한 정보는 대부분 지원서에 달려 있습니다. 단계, 양식 답변, Tahoe의 매칭 점수, 전화 사전 스크리닝 상태, 이력서가 그렇습니다. 아래 아홉 개 엔드포인트로 이 정보를 읽습니다. 지원서를 바꾸는 엔드포인트도 다섯 개 있습니다. 다른 단계로 옮기기, 탈락 처리, 탈락 취소, 메모 추가, 평가표 추가입니다. 아래에서 설명합니다. 공고에 후보자를 추가하려면 지원서 만들기를 참고하세요.
GET/applicationsapplications:read
워크스페이스 전체의 지원서를 최근 수정된 순서로 보여 줍니다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
job_id | handle | 공고 하나에 대한 지원서만 반환합니다. |
applicant_id | handle | 지원자 한 명의 지원서만 반환합니다. |
status | string | 쉼표로 구분합니다. new, in_review, advanced, rejected, withdrawn, hired. |
stage_id | handle | 지금 특정 파이프라인 단계에 있는 지원서만 반환합니다. |
applied_after | timestamp | 이 시점 이후 제출된 지원서만 반환합니다. |
updated_after | timestamp | 이 시점 이후 변경된 지원서만 반환합니다. 증분 동기화에 쓰세요. |
limit | integer | 기본값 25, 최대 100. |
cursor | string | 이전 페이지에서 받은 값입니다. 같은 필터를 함께 보내세요. |
curl "https://tahoe.workonward.com/api/partner/v1/applications?job_id=job_7Kd2mXq4Rp8v&updated_after=2026-09-01T00:00:00Z" \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "list",
"data": [
{
"object": "application",
"id": "app_6Qm2xKd4Rp8v",
"workspace_id": "wsp_4Kd8sPm2Qx7L",
"job_id": "job_7Kd2mXq4Rp8v",
"applicant_id": "apl_5Nx3jLm7Qd2s",
"stage_id": "stg_3Rp8vKd2mXq4",
"status": "in_review",
"source": "public_board",
"applied_at": "2026-09-02T14:21:09.115Z",
"updated_at": "2026-09-07T09:44:31.002Z",
"parse_status": "parsed",
"has_resume": true,
"voice_screening_opted_out": false,
"links": {
"self": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v",
"answers": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v/answers",
"score": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v/score",
"resume": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v/resume",
"screening": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v/screening",
"stage_transitions": "/api/partner/v1/applications/app_6Qm2xKd4Rp8v/stage-transitions"
},
"restricted": ["rejection_reason"],
"restricted_reason": {
"rejection_reason": "scope_required:applications:internal:read"
}
}
],
"has_more": true,
"next_cursor": "cur_eyJrIjoiMjAyNi0wOS0wN1QwOTo0NDozMVoi..."
}applicant_id는null일 수 있습니다. 지원자와의 연결이 항상 있다고 가정하지 말고null을 처리하세요.parse_status는 이력서 분석 진행 상태입니다.pending,parsing,parsed,failed중 하나입니다.voice_screening_opted_out은 후보자가 전화 사전 스크리닝을 거절했을 때true입니다. 전화 스크리닝 때문에 후보자에게 연락하는 워크플로가 있다면 이 값을 반드시 지켜야 합니다.rejection_reason을 읽으려면applications:internal:read가 필요합니다. 없으면 이 필드가restricted에 표시됩니다.
GET/jobs/{job_handle}/applicationsapplications:read
같은 형태의 행을 공고 하나에 대해 반환합니다. status, stage_id, applied_after, limit, cursor를 받습니다. 전체를 읽은 뒤 직접 걸러 내는 것보다 이 엔드포인트를 쓰는 편이 좋습니다.
GET/applications/{application_handle}applications:read
목록 행과 같은 형태의 지원서 하나입니다. 이력서가 있는 지원서라면 단건 조회에 resume_access도 들어 있으며, 아래에서 설명합니다.
{
"object": "application",
"id": "app_6Qm2xKd4Rp8v",
"status": "in_review",
"applied_at": "2026-09-02T14:21:09.115Z",
"has_resume": true,
"resume_access": {
"state": "open",
"free_until": "2026-12-01T14:21:09.115Z",
"view_until": "2026-12-31T14:21:09.115Z",
"state_changes_at": "2026-12-01T14:21:09.115Z",
"unlock_credits": 50,
"can_view": true,
"can_download": true
},
"restricted": ["rejection_reason"],
"restricted_reason": {
"rejection_reason": "scope_required:applications:internal:read"
}
}GET/applications/{application_handle}/answersapplications:answers:read
지원자가 지원서 양식에 입력한 내용을 필드 id를 키로 반환합니다. 라벨과 유형을 알려면 공고의 지원서 양식에서 ID를 찾아보세요.
{
"object": "application_answers",
"application_id": "app_6Qm2xKd4Rp8v",
"answers": {
"why_this_role": "I have run night shifts for three years and want to lead a larger team.",
"shift_preference": ["Evening", "Night"]
}
}GET/applications/{application_handle}/scoreapplications:read
이 공고에 대한 이 지원서의 Tahoe AI 매칭 점수입니다. 0~100 사이의 match_pct와 찾아낸 부족한 점인 gaps를 반환합니다. 아직 점수가 매겨지지 않은 지원서는 404를 반환합니다.
{
"object": "application_score",
"application_id": "app_6Qm2xKd4Rp8v",
"match_pct": 82,
"gaps": ["No forklift certification stated"],
"restricted": ["rationale", "model_version"],
"restricted_reason": {
"rationale": "scope_required:applications:internal:read",
"model_version": "scope_required:applications:internal:read"
}
}점수의 근거를 적은 글은 특정인에 관한 내용이므로, rationale과 model_version을 읽으려면 applications:internal:read가 필요합니다. 리크루터에게 match_pct를 보여 준다면 Tahoe의 평가라고 표시하세요.
GET/applications/{application_handle}/screeningscreening:metadata:read
후보자가 전화 사전 스크리닝을 받았는지, 결과가 어땠는지 알려 줍니다. 통화 상태, 어디까지 완료했는지, 통화 시간, 동의 여부입니다. 이 사실만 반환합니다. 녹음, 녹취록, 답변은 어떤 스코프로도 반환하지 않습니다.
{
"object": "screening",
"application_id": "app_6Qm2xKd4Rp8v",
"has_screening": true,
"call_status": "completed",
"completion_state": "complete",
"duration_sec": 412,
"consent_state": "granted",
"ambiguous_caller": false,
"started_at": "2026-09-04T11:02:18.440Z",
"ended_at": "2026-09-04T11:09:10.771Z",
"restricted": ["responses", "transcript", "audio"],
"restricted_reason": {
"responses": "never_exposed:consent_scope",
"transcript": "never_exposed:consent_scope",
"audio": "never_exposed:consent_scope"
}
}사전 스크리닝이 없었다면 404가 아니라 has_screening: false가 담긴 일반 200 응답을 반환합니다. 그래서 동기화 과정에서 “아직 통화 없음”을 하나의 데이터로 다룰 수 있습니다.
{
"object": "screening",
"application_id": "app_6Qm2xKd4Rp8v",
"has_screening": false
}GET/applications/{application_handle}/stage-transitionsapplications:internal:read
파이프라인 단계 사이의 이동과 그 시점을 오래된 순서로 보여 줍니다. 단계별 소요 시간이나 자체 퍼널을 다시 계산하기에 충분합니다. 단계 핸들은 공고의 파이프라인 단계에서 확인하세요.
{
"object": "list",
"data": [
{
"object": "stage_transition",
"from_stage_id": null,
"to_stage_id": "stg_9Kd2mXq4Rp8v",
"at": "2026-09-02T14:21:09.115Z"
},
{
"object": "stage_transition",
"from_stage_id": "stg_9Kd2mXq4Rp8v",
"to_stage_id": "stg_3Rp8vKd2mXq4",
"at": "2026-09-05T16:38:52.309Z"
}
],
"has_more": false,
"next_cursor": null
}응답에는 이동시킨 사람과 자유 텍스트가 없습니다. 누가 후보자를 옮겼는지, 그때 남긴 메모는 포함되지 않습니다.
이력서와 무료 열람 기간
Tahoe는 지원 후 일정 기간 동안 지원자의 이력서를 무료로 제공하며, API는 대시보드와 똑같은 규칙을 따릅니다. API를 쓴다고 이력서를 더 싸게 얻을 수는 없습니다.
| 상태 | 시기 | 분석된 프로필 | 파일 다운로드 |
|---|---|---|---|
open | 지원 후 처음 90일 | 예 | 예 |
view_only | 90일째부터 120일째까지 | 예 | 아니요 |
locked | 120일 이후 | 아니요 | 아니요 |
unlocked | 워크스페이스가 잠금을 해제한 뒤, 언제든 | 예 | 예 |
잠금 해제에는 50크레딧이 한 번 들며, 효과는 영구적입니다. 잠금 해제는 API가 아니라 Tahoe에서 합니다. 모든 resume_access 블록의 unlock_credits에 가격이 있으므로, 사용자에게 잠금 해제 비용을 알려 줄 수 있습니다.
resume_access 블록
| 필드 | 의미 |
|---|---|
state | 위의 네 가지 상태 중 하나입니다. |
free_until | 무료 기간이 끝나는 시점입니다(지원 후 90일). |
view_until | 보기 전용 기간이 끝나는 시점입니다(지원 후 120일). |
state_changes_at | 다음에 상태가 저절로 바뀌는 시점입니다. 더 이상 바뀌지 않는다면 null입니다. |
unlock_credits | 잠금 해제 비용입니다. 50크레딧. |
can_view, can_download | 지금 분석된 프로필과 파일을 읽을 수 있는지 여부입니다. |
GET/applications/{application_handle}/resumeresume:read
이력서 파일 정보, resume_access 블록, Tahoe가 이력서에서 분석한 프로필을 반환합니다. 이력서가 없는 지원서는 404를 반환합니다.
curl https://tahoe.workonward.com/api/partner/v1/applications/app_8Lp3wNc5Tz1k/resume \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "resume",
"id": "res_2Kd8sPm4Qx7L",
"application_id": "app_8Lp3wNc5Tz1k",
"filename": "dana-whitfield-resume.pdf",
"mime": "application/pdf",
"bytes": 184320,
"parse_status": "parsed",
"resume_access": {
"state": "view_only",
"free_until": "2026-08-30T14:21:09.115Z",
"view_until": "2026-09-29T14:21:09.115Z",
"state_changes_at": "2026-09-29T14:21:09.115Z",
"unlock_credits": 50,
"can_view": true,
"can_download": false
},
"links": {
"download": "/api/partner/v1/applications/app_8Lp3wNc5Tz1k/resume/download"
},
"parsed": {
"current_title": "Shift Supervisor",
"current_company": "Northwind Logistics",
"seniority": "senior",
"total_years_experience": 7,
"city": "Columbus",
"country": "US",
"remote_ok": false,
"education_level": "bachelors",
"skills": ["Team leadership", "Inventory control", "Workplace safety"],
"languages": ["English", "Spanish"],
"extraction_confidence": 0.94,
"parsed_at": "2026-06-01T14:23:41.088Z",
"structured": { "experience": [], "education": [] },
"work_authorization": null,
"visa_required": null
},
"restricted": ["parsed.raw_text"],
"restricted_reason": {
"parsed.raw_text": "scope_required:resume:raw_text:read"
}
}structured에는 Tahoe가 문서에서 읽은 경력과 학력이 자유 텍스트로 들어 있습니다. 날짜가 정규화되어 있다고 가정하지 마세요.- 이력서 전문인
parsed.raw_text를 읽으려면resume:raw_text:read가 필요합니다. 일일 개인 데이터 한도에 포함됩니다. - 상태가
locked이면 이 엔드포인트는 프로필 대신403 resume_locked를 반환합니다. 오류에는state와unlock_credits가 담깁니다.
{
"detail": {
"code": "resume_locked",
"type": "payment_required",
"message": "This resume is not currently viewable by the workspace that owns it.",
"state": "locked",
"unlock_credits": 50
}
}GET/applications/{application_handle}/resume/downloadresume:download
이력서 파일을 받을 수 있는, 잠깐만 유효한 서명된 링크를 반환합니다. download 속도 제한 등급(분당 30건)에 속하며, 호출할 때마다 일일 개인 데이터 한도에서 1건이 차감되고 감사 로그에 기록됩니다. 상태가 open이나 unlocked가 아니면 403 resume_locked를 반환합니다.
curl https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/resume/download \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "resume_download",
"application_id": "app_6Qm2xKd4Rp8v",
"url": "https://files.example.com/resumes/6f2c9a...?signature=...",
"expires_in": 300,
"filename": "jordan-rivera-resume.pdf",
"mime": "application/pdf",
"bytes": 184320
}url은 expires_in초(300초) 안에 가져오고, 저장하지 마세요. 링크를 가진 사람은 누구나 만료 전까지 그 파일을 내려받을 수 있습니다. 지원서 핸들을 저장해 두었다가, 파일이 다시 필요할 때 새 링크를 요청하세요.
지원서 변경하기
이 다섯 가지 호출은 리크루터가 대시보드에서 하는 일을 그대로 합니다. 카드를 다른 단계로 끌어 옮기고, 후보자를 탈락시키고, 탈락을 취소하고, 메모를 쓰고, 평가표를 채웁니다. 모두 POST이며 무엇도 삭제하지 않습니다.
- API 키만 쓸 수 있습니다. Tahoe 사용자가 만든 키는 쓸 수 있습니다. Sign in with Tahoe 토큰은
403 write_requires_api_key를 받습니다. 연결된 앱의 쓰기가 켜져 있으면 예외입니다. - 필요한 스코프가 호출마다 다릅니다. 이동, 탈락, 탈락 취소는
applications:write가 필요합니다. 메모는notes:write, 평가표는scorecards:write가 필요합니다. 모두 유료 플랜 스코프입니다. - 리크루터는 누가 했는지 볼 수 있습니다. 변경은 키를 만든 사람이 한 것으로 기록되고, 지원서의 활동에는 API에서 온 변경임을 표시하는 항목이 하나 더 남습니다. 쓰기는 누가 한 것으로 기록되는가를 참고하세요.
- 후보자에게는 아무것도 가지 않습니다. 이 호출들은 이메일, 문자 메시지, 알림을 보내지 않습니다. 후보자에게 연락하려면 POST /messages를 쓰세요.
- 키를 보내면 재시도해도 안전합니다. Idempotency-Key 헤더를 보내세요. 이 다섯 호출에서는 선택 사항입니다.
형식이 잘못되었거나 다른 워크스페이스에 속한 핸들은 404 not_found를 반환합니다. 이 호출들은 일반 속도 제한 등급을 씁니다.
POST/applications/{application_handle}/moveapplications:write
카드를 끌어 놓는 것처럼 지원서를 같은 공고의 다른 단계로 옮깁니다. 응답은 GET /applications/{application_handle}가 반환하는 것과 같은 지원서이며, 새 stage_id와 새 updated_at이 들어 있습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
stage_id | 핸들, 필수 | 이 지원서가 속한 공고의 단계입니다. 핸들은 공고의 파이프라인 단계에서 읽으세요. |
expected_updated_at | 타임스탬프 | 선택. 동시 수정을 참고하세요. |
curl -X POST https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/move \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-H "Idempotency-Key: move-6Qm2-to-screen-0001" \
-H "Content-Type: application/json" \
-d '{
"stage_id": "stg_3Rp8vKd2mXq4",
"expected_updated_at": "2026-10-08T21:15:51.327Z"
}'{
"object": "application",
"id": "app_6Qm2xKd4Rp8v",
"job_id": "job_7Kd2mXq4Rp8v",
"stage_id": "stg_3Rp8vKd2mXq4",
"status": "in_review",
"updated_at": "2026-10-08T21:15:53.378Z",
"restricted": ["rejection_reason"]
}400 invalid_stage는 핸들의 형식이 잘못되었거나, 단계가 없거나, 다른 공고나 워크스페이스의 단계라는 뜻입니다. 세 경우 모두 같은 응답을 받습니다.- 지원서가 이미 있는 단계로 옮기면
200을 반환하고, 아무것도 쓰지 않으며 이벤트도 보내지 않습니다. 그래서 멱등성 키 없이 같은 이동을 반복해도 문제가 없습니다. - Hired나 Rejected 같은 마지막 단계로 옮겨도 대시보드와 마찬가지로 단계만 바뀝니다.
status는 바뀌지 않습니다. 결과를 기록하려면 탈락 처리를 쓰세요. - 이동은 지원서의 활동에 두 번 기록됩니다. 한 항목은 대시보드가 쓰는 것과 같은 종류인
application_updated이며 이전 단계와 새 단계가 들어 있습니다. 다른 항목의 종류는partner_api_stage_move입니다. 단계 이력에는 API로 한 이동이 나타나고, 대시보드에서 한 이동은 나타나지 않습니다. application.stage_changed이벤트를 보냅니다. 파이프라인 화면과 분석은 바로 갱신됩니다.
POST/applications/{application_handle}/rejectapplications:write
status를 rejected로 바꾸고 내부용 사유를 저장합니다. 사유는 팀을 위한 것이며 후보자에게 보이지 않습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
reason | string, 필수 | 1~2,000자. |
expected_updated_at | 타임스탬프 | 선택. 동시 수정을 참고하세요. |
curl -X POST https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/reject \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Not enough experience with distributed systems",
"expected_updated_at": "2026-10-08T21:15:51.327Z"
}'{
"object": "application",
"id": "app_6Qm2xKd4Rp8v",
"status": "rejected",
"rejection_reason": "Not enough experience with distributed systems",
"updated_at": "2026-10-08T21:20:07.114Z"
}- 키에
applications:internal:read도 있어야 응답에rejection_reason이 들어갑니다. 없으면 방금 보낸 값이라도 이 필드는restricted에 이름만 표시됩니다. 409 invalid_application_state는 지원서가 이미rejected이거나withdrawn또는hired라는 뜻입니다. 두 번째 탈락 처리는 첫 사유를 덮어쓸 수 없습니다. withdrawn은 후보자의 결정이고 hired는 채용 결정이므로 탈락시킬 수 없습니다.- 대시보드의 탈락 처리와 마찬가지로 단계는 바뀌지 않으며, 탈락 이메일도 보내지 않습니다.
- 이전 상태는 활동 항목에 저장되어, 탈락 취소 때 복원됩니다. 종류가
partner_api_reject인 두 번째 항목은 API에서 온 변경임을 표시합니다. application.status_changed이벤트를 보냅니다. 이벤트에는 사유가 들어가지 않습니다.
POST/applications/{application_handle}/reopenapplications:write
탈락을 취소합니다. 본문은 선택 사항입니다. {}를 보내거나, 아무것도 보내지 않거나, expected_updated_at을 보내세요.
curl -X POST https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/reopen \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "expected_updated_at": "2026-10-08T21:20:07.114Z" }'- 응답은 복원된 상태와
rejection_reason: null이 들어 있는 지원서입니다. 탈락 처리와 마찬가지로rejection_reason이restricted에 표시될 수도 있습니다. - API로 탈락시킨 경우 상태는 탈락 전으로 돌아갑니다. 대시보드에서 탈락시킨 경우에는 이전 상태가 기록되지 않으므로 지원서가
in_review로 돌아갑니다. - 사유는 지원서에서 지워지고 활동 이력에는 남습니다. 단계는 바뀌지 않습니다.
409 invalid_application_state는 지원서가 탈락 상태가 아니라는 뜻입니다.- 복원된 상태로
application.status_changed이벤트를 보냅니다.
POST/applications/{application_handle}/notesnotes:write
지원서에 메모를 추가합니다. 201을 반환합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
body | string, 필수 | 메모 내용입니다. 1~10,000자이며 앞뒤 공백은 잘립니다. |
curl -X POST https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/notes \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-H "Idempotency-Key: note-6Qm2-referrer-0001" \
-H "Content-Type: application/json" \
-d '{ "body": "Spoke to the referrer. Strong recommendation." }'{
"object": "note",
"application_id": "app_6Qm2xKd4Rp8v",
"body": "Spoke to the referrer. Strong recommendation.",
"created_at": "2026-10-08T21:15:51.327Z",
"created_via": "api"
}- 메모는 키를 만든 사람의 이름으로 나타납니다. 지원서를 볼 수 있는 워크스페이스 사람 모두가 봅니다. 활동 탭에는
partner_api_note_added항목이 따로 나타나며, 여기에는 키 ID와 요청 ID가 들어 있고 메모 내용은 없습니다. - 응답에는
id와 작성자가 없고, 메모를 다시 읽는 엔드포인트도 없습니다.mentions필드가 없으므로 아무에게도 알림이 가지 않습니다. Idempotency-Key없이 같은 요청을 두 번 보내면 메모가 두 개 만들어집니다. 이벤트는 보내지 않습니다.
POST/applications/{application_handle}/scorecardsscorecards:write
대시보드의 평가표와 같은 필드로 면접 평가표를 추가합니다. 201을 반환합니다. 세 필드 모두 선택이지만 하나는 보내야 합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
overall | string | strong_yes, yes, no, strong_no 중 하나. |
ratings | object | 최대 30개 항목. 이름은 1~100자이고, 값은 숫자, 불리언, 또는 200자 이하 문자열입니다. 중첩된 객체와 목록은 받지 않습니다. 대시보드는 어떤 객체든 받지만 API는 일부러 더 엄격합니다. |
comment | string | 최대 10,000자. |
curl -X POST https://tahoe.workonward.com/api/partner/v1/applications/app_6Qm2xKd4Rp8v/scorecards \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-H "Idempotency-Key: scorecard-6Qm2-onsite-0001" \
-H "Content-Type: application/json" \
-d '{
"overall": "yes",
"ratings": { "communication": 4, "system design": "strong" },
"comment": "Clear thinker, thin on scale."
}'{
"object": "scorecard",
"application_id": "app_6Qm2xKd4Rp8v",
"ratings": { "communication": 4, "system design": "strong" },
"overall": "yes",
"comment": "Clear thinker, thin on scale.",
"created_at": "2026-10-08T21:15:51.327Z",
"created_via": "api"
}평가표는 키를 만든 사람이 쓴 것으로 기록되고, 활동 탭에 partner_api_scorecard_added 항목이 함께 나타납니다. 지원서의 상태나 단계는 바뀌지 않으며 이벤트도 보내지 않습니다.
동시 수정
move, reject, reopen은 선택 항목인 expected_updated_at을 받습니다. 마지막으로 읽은 updated_at 값입니다. API가 돌려주는 정밀도인 밀리초 단위로 비교합니다. 그 사이 지원서가 바뀌었다면 호출은 409 stale_resource를 반환하고 아무것도 바꾸지 않습니다. 지원서를 다시 읽고 변경이 아직 유효한지 판단하세요.
{
"detail": {
"code": "stale_resource",
"type": "conflict",
"message": "The application changed after the time you sent in expected_updated_at.",
"param": null
}
}보내지 않으면 현재 상태를 기준으로 처리합니다. 어느 쪽이든 한 지원서에 대한 동시 호출은 차례로 실행됩니다. 잠금과 쓰기 사이에 행이 바뀌는 드문 경우에는 409 application_modified_concurrently를 받습니다. 다시 시도하세요.
이 호출들의 오류
| 상태 | 코드 | 조치 |
|---|---|---|
| 400 | invalid_request | 본문 검증에 실패했습니다. 빠졌거나, 알 수 없거나, 너무 긴 필드입니다. errors 목록에 필드가 하나씩 표시됩니다. |
| 400 | invalid_stage | move에서만 발생합니다. 이 지원서가 속한 공고의 단계 핸들을 쓰세요. |
| 400 | invalid_idempotency_key | Idempotency-Key 헤더가 허용된 문자 8~255자가 아닙니다. |
| 403 | insufficient_scope | required_scope에 적힌 스코프가 키에 없습니다. |
| 403 | write_requires_api_key | Sign in with Tahoe 토큰이거나, Tahoe 사용자와 연결되지 않은 자격 증명입니다. |
| 404 | not_found | 이 워크스페이스에 그런 지원서가 없습니다. |
| 409 | invalid_application_state | 현재 상태에서는 탈락 처리나 탈락 취소를 할 수 없습니다. 지원서를 먼저 읽으세요. |
| 409 | stale_resource | expected_updated_at이 더 이상 맞지 않습니다. 지원서를 다시 읽으세요. |
| 409 | application_modified_concurrently | 쓰는 도중 행이 바뀌었습니다. 다시 시도하세요. |
| 409 | idempotency_key_reused | 같은 키를 다른 본문과 함께 썼습니다. |
| 409 | idempotency_in_flight | 같은 키의 첫 요청이 아직 실행 중입니다. 잠시 후 다시 시도하세요. |
모든 코드는 오류에서 설명합니다.
관련 이벤트
application.created, application.updated, application.status_changed, application.stage_changed, application.withdrawn, application.deleted, application.scored는 applications:read가 필요합니다. application.resume_parsed와 resume.access_changed는 resume:read가, application.screening_completed는 screening:metadata:read가 필요합니다. 읽는 방법은 변경 피드를 참고하세요.
API로 한 변경도 Tahoe에서 한 변경과 같은 이벤트를 만듭니다. 이벤트마다 origin이 들어 있으므로, 연동 프로그램이 자기가 쓴 변경의 에코를 알아보고 건너뛸 수 있습니다. 이벤트의 출처를 참고하세요.