{
	"info": {
		"_postman_id": "recruitment-new-endpoints-2026",
		"name": "Recruitment - New Candidate Management Endpoints",
		"description": "Postman collection for new candidate management interface endpoints including filtering, bulk actions, interviews, and messaging",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "Job Openings - Candidates",
			"item": [
				{
					"name": "Get Candidates (Enhanced Filtering)",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/job-openings/:job_id/candidates?stage_id=&min_score=0&max_score=100&min_experience=&max_experience=&min_salary=&max_salary=&available_from=&available_to=&city=&cities[]=&status=&candidate_status=&meets_ats_criteria=&favorites_only=&search=&sort_by=match_score&sort_order=desc&page=1&per_page=15",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"job-openings",
								":job_id",
								"candidates"
							],
							"query": [
								{
									"key": "stage_id",
									"value": "",
									"description": "Filter by hiring stage ID"
								},
								{
									"key": "min_score",
									"value": "0",
									"description": "Minimum match score"
								},
								{
									"key": "max_score",
									"value": "100",
									"description": "Maximum match score"
								},
								{
									"key": "min_experience",
									"value": "",
									"description": "Minimum years of experience"
								},
								{
									"key": "max_experience",
									"value": "",
									"description": "Maximum years of experience"
								},
								{
									"key": "min_salary",
									"value": "",
									"description": "Minimum expected salary"
								},
								{
									"key": "max_salary",
									"value": "",
									"description": "Maximum expected salary"
								},
								{
									"key": "available_from",
									"value": "",
									"description": "Available date from (YYYY-MM-DD)"
								},
								{
									"key": "available_to",
									"value": "",
									"description": "Available date to (YYYY-MM-DD)"
								},
								{
									"key": "city",
									"value": "",
									"description": "Filter by city"
								},
								{
									"key": "cities[]",
									"value": "",
									"description": "Filter by multiple cities (array)"
								},
								{
									"key": "status",
									"value": "",
									"description": "Application status: applied, screening, interview, rejected, approved"
								},
								{
									"key": "candidate_status",
									"value": "",
									"description": "Candidate global status"
								},
								{
									"key": "meets_ats_criteria",
									"value": "",
									"description": "Boolean: filter candidates meeting ATS criteria"
								},
								{
									"key": "favorites_only",
									"value": "",
									"description": "Boolean: show only favorites"
								},
								{
									"key": "search",
									"value": "",
									"description": "Search in name, email, phone"
								},
								{
									"key": "sort_by",
									"value": "match_score",
									"description": "Sort by: match_score, experience, salary, available_date, created_at"
								},
								{
									"key": "sort_order",
									"value": "desc",
									"description": "Sort order: asc, desc"
								},
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "per_page",
									"value": "15",
									"description": "Items per page"
								}
							],
							"variable": [
								{
									"key": "job_id",
									"value": "1",
									"description": "Job Opening ID"
								}
							]
						},
						"description": "Get candidates for a job opening with comprehensive filtering options"
					}
				},
				{
					"name": "Get Candidates Summary",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/job-openings/:job_id/candidates/summary",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"job-openings",
								":job_id",
								"candidates",
								"summary"
							],
							"variable": [
								{
									"key": "job_id",
									"value": "1"
								}
							]
						},
						"description": "Get summary statistics for candidates in a job opening"
					}
				},
				{
					"name": "Get Match Details",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/job-openings/:job_id/candidates/:candidate_id/match-details",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"job-openings",
								":job_id",
								"candidates",
								":candidate_id",
								"match-details"
							],
							"variable": [
								{
									"key": "job_id",
									"value": "1"
								},
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Get detailed ATS match analysis for a candidate"
					}
				}
			]
		},
		{
			"name": "Candidates - Actions",
			"item": [
				{
					"name": "Move Candidate to Stage",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"job_opening_id\": 1,\n    \"stage_id\": 2\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/move-stage",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"move-stage"
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Move candidate to a specific hiring stage"
					}
				},
				{
					"name": "Schedule Interview",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"candidate_id\": 1,\n    \"job_opening_id\": 1,\n    \"hiring_stage_id\": 2,\n    \"scheduled_at\": \"2026-02-15 10:00:00\",\n    \"duration_minutes\": 60,\n    \"location\": \"Conference Room A\",\n    \"interviewer_id\": 1,\n    \"notes\": \"Technical interview\",\n    \"send_invitation\": true\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/schedule-interview",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"schedule-interview"
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Schedule an interview for a candidate"
					}
				},
				{
					"name": "Send Acceptance Message",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"job_opening_id\": 1,\n    \"message_type\": \"acceptance\",\n    \"custom_message\": \"Congratulations! We are pleased to inform you...\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/send-acceptance",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"send-acceptance"
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Send acceptance message to candidate (WhatsApp or Email)"
					}
				},
				{
					"name": "Send Rejection Message",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"job_opening_id\": 1,\n    \"message_type\": \"rejection\",\n    \"reason\": \"Does not meet experience requirements\",\n    \"custom_message\": \"Thank you for your interest...\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/send-rejection",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"send-rejection"
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Send rejection message to candidate (WhatsApp or Email)"
					}
				},
				{
					"name": "Toggle Favorite",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"job_opening_id\": 1\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/toggle-favorite",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"toggle-favorite"
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Add or remove candidate from favorites"
					}
				},
				{
					"name": "Get Match Details",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/:candidate_id/match-details?job_opening_id=1",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								":candidate_id",
								"match-details"
							],
							"query": [
								{
									"key": "job_opening_id",
									"value": "1",
									"description": "Job Opening ID"
								}
							],
							"variable": [
								{
									"key": "candidate_id",
									"value": "1"
								}
							]
						},
						"description": "Get ATS match details for a candidate"
					}
				}
			]
		},
		{
			"name": "Bulk Actions",
			"item": [
				{
					"name": "Bulk Accept",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"action\": \"accept\",\n    \"candidate_ids\": [1, 2, 3],\n    \"job_opening_id\": 1,\n    \"message\": \"Custom acceptance message (optional)\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/bulk-actions",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								"bulk-actions"
							]
						},
						"description": "Bulk accept multiple candidates"
					}
				},
				{
					"name": "Bulk Reject",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"action\": \"reject\",\n    \"candidate_ids\": [1, 2, 3],\n    \"job_opening_id\": 1,\n    \"reason\": \"Does not meet requirements\",\n    \"message\": \"Custom rejection message (optional)\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/bulk-actions",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								"bulk-actions"
							]
						},
						"description": "Bulk reject multiple candidates"
					}
				},
				{
					"name": "Bulk Move to Stage",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"action\": \"move_stage\",\n    \"candidate_ids\": [1, 2, 3],\n    \"job_opening_id\": 1,\n    \"stage_id\": 2\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/bulk-actions",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								"bulk-actions"
							]
						},
						"description": "Bulk move multiple candidates to a specific stage"
					}
				},
				{
					"name": "Bulk Add to Favorites",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"action\": \"add_to_favorites\",\n    \"candidate_ids\": [1, 2, 3],\n    \"job_opening_id\": 1\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/bulk-actions",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								"bulk-actions"
							]
						},
						"description": "Bulk add candidates to favorites"
					}
				},
				{
					"name": "Bulk Remove from Favorites",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"action\": \"remove_from_favorites\",\n    \"candidate_ids\": [1, 2, 3],\n    \"job_opening_id\": 1\n}",
							"options": {
								"raw": "json"
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/candidates/bulk-actions",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"candidates",
								"bulk-actions"
							]
						},
						"description": "Bulk remove candidates from favorites"
					}
				}
			]
		},
		{
			"name": "Interviews",
			"item": [
				{
					"name": "List Interviews",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews?job_opening_id=&candidate_id=&status=&scheduled_from=&scheduled_to=&page=1&per_page=15",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews"
							],
							"query": [
								{
									"key": "job_opening_id",
									"value": "",
									"description": "Filter by job opening ID"
								},
								{
									"key": "candidate_id",
									"value": "",
									"description": "Filter by candidate ID"
								},
								{
									"key": "status",
									"value": "",
									"description": "Filter by status: scheduled, completed, cancelled, rescheduled"
								},
								{
									"key": "scheduled_from",
									"value": "",
									"description": "Filter interviews scheduled from date"
								},
								{
									"key": "scheduled_to",
									"value": "",
									"description": "Filter interviews scheduled to date"
								},
								{
									"key": "page",
									"value": "1",
									"description": "Page number"
								},
								{
									"key": "per_page",
									"value": "15",
									"description": "Items per page"
								}
							]
						},
						"description": "Get list of interviews with optional filters"
					}
				},
				{
					"name": "Create Interview",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"candidate_id\": 1,\n    \"job_opening_id\": 1,\n    \"hiring_stage_id\": 2,\n    \"scheduled_at\": \"2026-02-15 10:00:00\",\n    \"duration_minutes\": 60,\n    \"location\": \"Conference Room A\",\n    \"interviewer_id\": 1,\n    \"notes\": \"Technical interview focusing on problem-solving skills\",\n    \"send_invitation\": true\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews"
							]
						},
						"description": "Schedule a new interview"
					}
				},
				{
					"name": "Get Interview",
					"request": {
						"method": "GET",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							}
						],
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews/:interview_id",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews",
								":interview_id"
							],
							"variable": [
								{
									"key": "interview_id",
									"value": "1"
								}
							]
						},
						"description": "Get interview details"
					}
				},
				{
					"name": "Update Interview",
					"request": {
						"method": "PATCH",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"scheduled_at\": \"2026-02-16 14:00:00\",\n    \"duration_minutes\": 90,\n    \"location\": \"Conference Room B\",\n    \"interviewer_id\": 2,\n    \"notes\": \"Updated interview details\",\n    \"send_invitation\": false\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews/:interview_id",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews",
								":interview_id"
							],
							"variable": [
								{
									"key": "interview_id",
									"value": "1"
								}
							]
						},
						"description": "Update interview details"
					}
				},
				{
					"name": "Cancel Interview",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"reason\": \"Candidate requested to reschedule\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews/:interview_id/cancel",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews",
								":interview_id",
								"cancel"
							],
							"variable": [
								{
									"key": "interview_id",
									"value": "1"
								}
							]
						},
						"description": "Cancel an interview"
					}
				},
				{
					"name": "Reschedule Interview",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Authorization",
								"value": "Bearer {{token}}",
								"type": "text"
							},
							{
								"key": "Accept",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"scheduled_at\": \"2026-02-20 11:00:00\",\n    \"duration_minutes\": 60,\n    \"location\": \"Conference Room C\",\n    \"interviewer_id\": 1,\n    \"notes\": \"Rescheduled due to availability\",\n    \"send_invitation\": true\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{BASE_URL}}/recruitment/interviews/:interview_id/reschedule",
							"host": [
								"{{BASE_URL}}"
							],
							"path": [
								"recruitment",
								"interviews",
								":interview_id",
								"reschedule"
							],
							"variable": [
								{
									"key": "interview_id",
									"value": "1"
								}
							]
						},
						"description": "Reschedule an interview"
					}
				}
			]
		}
	],
	"variable": [
		{
			"key": "BASE_URL",
			"value": "http://localhost:8000/api/v1",
			"type": "string"
		},
		{
			"key": "token",
			"value": "",
			"type": "string"
		}
	]
}
