Tài liệu API

Vị trí tuyển dụng

Một job là một vị trí đang mở. Nó định nghĩa vai trò, pipeline tuyển dụng mà ứng viên đi qua, và nơi tin tuyển dụng công khai xuất hiện.

Object Job

json
{
  "id": "8a3d2f1c-...-9b0e",
  "code": "JOB-2026-0001",
  "title": "Senior Backend Engineer",
  "slug": "senior-backend-engineer",
  "department": "Engineering",
  "employment_type": "full_time",
  "work_setup": "hybrid",
  "location_display": "Ho Chi Minh City, Vietnam",
  "salary_min": 30000000,
  "salary_max": 50000000,
  "currency": "VND",
  "status": "open",
  "description_html": "<p>...</p>",
  "pipeline_template_id": "...",
  "is_public": true,
  "created_at": "2026-05-01T03:00:00.000Z",
  "published_at": "2026-05-02T08:00:00.000Z"
}

Trường chính

TrườngKiểuMô tả
statusstringVòng đời: `draft`, `open`, `paused`, `closed`. Chỉ job ở trạng thái `open` mới nhận đơn qua endpoint công khai.
is_publicbooleanKhi true, job xuất hiện trên các endpoint trang tuyển dụng công khai.
employment_typestringMột trong `full_time`, `part_time`, `contract`, `internship`.
work_setupstringMột trong `onsite`, `hybrid`, `remote`.
pipeline_template_iduuidTemplate mà các vòng của job được tạo từ đó. Bản thân các vòng nằm trong `pipeline_stages` và được tham chiếu bởi đơn ứng tuyển.

Liệt kê job

GET /api/v1/jobs trả về danh sách phân trang job trong tenant của bạn. Endpoint list chấp nhận page, page_size, và một status_filter duy nhất — không hỗ trợ repeat-to-OR, và tìm kiếm văn bản tự do nằm trên endpoint ứng viên, không phải job.

shell
curl "https://tickup-api.onrender.com/api/v1/jobs?page=1&page_size=20&status_filter=open" \
  -H "Authorization: Bearer $TICKUP_TOKEN"

Tạo job

POST /api/v1/jobs tạo một job mới. Slug được suy ra tự động từ title nếu bạn bỏ trống. Mã sinh tự động theo pattern JOB-YYYY-XXXX.

shell
curl -X POST https://tickup-api.onrender.com/api/v1/jobs \
  -H "Authorization: Bearer $TICKUP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Senior Backend Engineer",
    "department": "Engineering",
    "employment_type": "full_time",
    "work_setup": "hybrid",
    "location_display": "Ho Chi Minh City, Vietnam",
    "salary_min": 30000000,
    "salary_max": 50000000,
    "currency": "VND",
    "description_html": "<p>We are looking for...</p>"
  }'

Vòng đời: open, pause, close

Vòng đời job là một trường status duy nhất, điều khiển qua PATCH /api/v1/jobs/{job_id}/status. Không có verb riêng /publish, /pause, hay /close — truyền status đích vào body.

shell
# Open a job (sets status=open + is_public=true)
curl -X PATCH https://tickup-api.onrender.com/api/v1/jobs/$JOB_ID/status \
  -H "Authorization: Bearer $TICKUP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "status": "open" }'

# Pause: new public applications rejected; existing applications keep moving
# Close: applications can no longer be created via any endpoint
# Body: { "status": "paused" } or { "status": "closed" }

Endpoint job công khai

Các endpoint này không cần xác thực. Dùng chúng để render job đang mở trên website marketing mà không phơi access token ra trình duyệt.

shell
# List all is_public + open jobs for a tenant
curl https://tickup-api.onrender.com/api/v1/public/jobs/$TENANT_CODE

# Fetch one published job by slug or code
curl https://tickup-api.onrender.com/api/v1/public/jobs/$TENANT_CODE/$JOB_IDENTIFIER

Vòng pipeline

Mỗi job có pipeline vòng riêng — ví dụ Mới → Phone screen → Phỏng vấn → Offer → Đã tuyển. Các vòng được tạo từ template khi job được tạo và có thể tùy biến theo từng job.

Lấy danh sách có thứ tự bằng GET /api/v1/jobs/{job_id}/pipeline. Đơn ứng tuyển mang một current_stage_id trỏ tới một trong các vòng đó. Để di chuyển đơn ứng tuyển, xem di chuyển đơn ứng tuyển.

Xóa job

DELETE /api/v1/jobs/{job_id} xóa mềm job. Đơn ứng tuyển hiện có vẫn truy cập được nhưng không thể tạo đơn mới. Trả về 409 Conflict nếu job đang open — đóng nó trước.

  • Đơn ứng tuyển — gắn ứng viên vào job và di chuyển qua pipeline.
  • Tài liệu đầy đủ — mọi endpoint job với schema request/response chính xác, bao gồm chuyển trạng thái, tùy biến pipeline, và các thao tác hàng loạt không có ở đây.
    Vị trí tuyển dụng | Tick Up Developers