{
  "info": {
    "_postman_id": "talentscale-full-v5",
    "name": "TalentScale SaaS — Full CRUD Workflow",
    "description": "Comprehensive API collection with Full CRUD for all entities.\nBase URL: http://localhost:8080/api/v1",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "http://localhost:8080/api/v1" },
    { "key": "token", "value": "" },
    { "key": "company_id", "value": "" },
    { "key": "package_id", "value": "" },
    { "key": "candidate_id", "value": "" },
    { "key": "session_id", "value": "" },
    { "key": "role_id", "value": "" },
    { "key": "permission_id", "value": "" },
    { "key": "subscription_id", "value": "" },
    { "key": "invoice_id", "value": "" },
    { "key": "payment_id", "value": "" }
  ],
  "item": [
    {
      "name": "🔒 1. Auth",
      "item": [
        { "name": "Register", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"name\":\"Admin\",\"email\":\"admin@test.com\",\"password\":\"Pass123!\"}" }, "url": "{{base_url}}/auth/register" } },
        { "name": "Login", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"email\":\"admin@test.com\",\"password\":\"Pass123!\"}" }, "url": "{{base_url}}/auth/login" } },
        { "name": "Get My Sessions", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/auth/sessions" } },
        { "name": "Forgot Password", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"email\":\"admin@test.com\"}" }, "url": "{{base_url}}/auth/forgot-password" } }
      ]
    },
    {
      "name": "📦 2. Packages",
      "item": [
        { "name": "List Packages", "request": { "method": "GET", "url": "{{base_url}}/packages" } },
        { "name": "Get Package by ID", "request": { "method": "GET", "url": "{{base_url}}/packages/{{package_id}}" } },
        { "name": "Create Package", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Pro\",\"price\":1000000,\"limit_candidate\":100}" }, "url": "{{base_url}}/packages" } },
        { "name": "Update Package", "request": { "method": "PUT", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Pro Plus\",\"price\":1200000,\"limit_candidate\":150}" }, "url": "{{base_url}}/packages/{{package_id}}" } },
        { "name": "Delete Package", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/packages/{{package_id}}" } }
      ]
    },
    {
      "name": "🛡️ 3. Roles & Permissions",
      "item": [
        {
          "name": "Roles",
          "item": [
            { "name": "List Roles", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/roles" } },
            { "name": "Get Role by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/roles/{{role_id}}" } },
            { "name": "Create Role", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Recruiter\",\"description\":\"Standard Recruiter Access\"}" }, "url": "{{base_url}}/roles" } },
            { "name": "Update Role", "request": { "method": "PUT", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Senior Recruiter\",\"description\":\"Extended Access\"}" }, "url": "{{base_url}}/roles/{{role_id}}" } },
            { "name": "Delete Role", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/roles/{{role_id}}" } },
            { "name": "Assign Permission to Role", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/roles/{{role_id}}/permissions/{{permission_id}}" } },
            { "name": "Remove Permission from Role", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/roles/{{role_id}}/permissions/{{permission_id}}" } }
          ]
        },
        {
          "name": "Permissions",
          "item": [
            { "name": "List Permissions", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/permissions" } },
            { "name": "Get Permission by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/permissions/{{permission_id}}" } },
            { "name": "Create Permission", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"candidate:view\",\"description\":\"Can view candidates\"}" }, "url": "{{base_url}}/permissions" } },
            { "name": "Update Permission", "request": { "method": "PUT", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"candidate:read\",\"description\":\"Can read candidates\"}" }, "url": "{{base_url}}/permissions/{{permission_id}}" } },
            { "name": "Delete Permission", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/permissions/{{permission_id}}" } }
          ]
        }
      ]
    },
    {
      "name": "👥 4. Candidates",
      "item": [
        { "name": "List Candidates", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/candidates" } },
        { "name": "Get Candidate by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/candidates/{{candidate_id}}" } },
        { "name": "Create Candidate", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Budi Santoso\",\"email\":\"budi@test.com\",\"phone\":\"0812345678\"}" }, "url": "{{base_url}}/candidates" } },
        { "name": "Update Candidate", "request": { "method": "PUT", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"Budi Updated\",\"email\":\"budi_upd@test.com\"}" }, "url": "{{base_url}}/candidates/{{candidate_id}}" } },
        { "name": "Delete Candidate", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/candidates/{{candidate_id}}" } }
      ]
    },
    {
      "name": "📜 5. Subscriptions",
      "item": [
        { "name": "List Subscriptions", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/subscriptions" } },
        { "name": "Get Active Subscription", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/subscriptions/active" } },
        { "name": "Get Subscription by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/subscriptions/{{subscription_id}}" } },
        { "name": "Subscribe to Package", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"package_id\":\"{{package_id}}\"}" }, "url": "{{base_url}}/subscriptions" } },
        { "name": "Update Subscription Status", "request": { "method": "PATCH", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"status\":\"EXPIRED\"}" }, "url": "{{base_url}}/subscriptions/{{subscription_id}}/status" } },
        { "name": "Delete Subscription", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/subscriptions/{{subscription_id}}" } }
      ]
    },
    {
      "name": "🧾 6. Invoices",
      "item": [
        { "name": "List Invoices", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/invoices" } },
        { "name": "Get Invoice by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/invoices/{{invoice_id}}" } },
        { "name": "Get Invoice Items", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/invoices/{{invoice_id}}/items" } },
        { "name": "Delete Invoice", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/invoices/{{invoice_id}}" } }
      ]
    },
    {
      "name": "💳 7. Payments",
      "item": [
        { "name": "List All Transactions", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/payments/transactions" } },
        { "name": "Get Transaction by Order ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/payments/transactions/:order_id" } },
        { "name": "Create Payment Transaction", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"amount\":1000000}" }, "url": "{{base_url}}/payments/create" } },
        { "name": "List Payment History", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/payments/history" } },
        { "name": "Get History by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/payments/history/{{payment_id}}" } }
      ]
    },
    {
      "name": "🗂️ 8. Master Categories",
      "item": [
        {
          "name": "CFIT",
          "item": [
            { "name": "List", "request": { "method": "GET", "url": "{{base_url}}/master/categories/cfit" } },
            { "name": "Create", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"min_score\":0, \"max_score\":10, \"iq\":90, \"category\":\"Low\", \"description\":\"...\"}" }, "url": "{{base_url}}/master/categories/cfit" } },
            { "name": "Update", "request": { "method": "PUT", "url": "{{base_url}}/master/categories/cfit/:id" } },
            { "name": "Delete", "request": { "method": "DELETE", "url": "{{base_url}}/master/categories/cfit/:id" } }
          ]
        },
        {
          "name": "DISC",
          "item": [
            { "name": "List", "request": { "method": "GET", "url": "{{base_url}}/master/categories/disc" } },
            { "name": "Create", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"code\":\"D\", \"name\":\"Dominance\", \"color\":\"Red\"}" }, "url": "{{base_url}}/master/categories/disc" } },
            { "name": "Update", "request": { "method": "PUT", "url": "{{base_url}}/master/categories/disc/:id" } },
            { "name": "Delete", "request": { "method": "DELETE", "url": "{{base_url}}/master/categories/disc/:id" } }
          ]
        },
        {
          "name": "MBTI",
          "item": [
            { "name": "List", "request": { "method": "GET", "url": "{{base_url}}/master/categories/mbti" } },
            { "name": "Create", "request": { "method": "POST", "body": { "mode": "raw", "raw": "{\"code\":\"INTJ\", \"name\":\"Architect\"}" }, "url": "{{base_url}}/master/categories/mbti" } },
            { "name": "Update", "request": { "method": "PUT", "url": "{{base_url}}/master/categories/mbti/:id" } },
            { "name": "Delete", "request": { "method": "DELETE", "url": "{{base_url}}/master/categories/mbti/:id" } }
          ]
        }
      ]
    },
    {
      "name": "👤 9. Users",
      "item": [
        { "name": "List Users", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/users" } },
        { "name": "Get User by ID", "request": { "method": "GET", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/users/{{user_id}}" } },
        { "name": "Create User", "request": { "method": "POST", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"John Doe\",\"email\":\"john@example.com\",\"password\":\"secret\",\"phone\":\"1234567890\",\"role_id\":\"{{role_id}}\"}" }, "url": "{{base_url}}/users" } },
        { "name": "Update User", "request": { "method": "PUT", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "body": { "mode": "raw", "raw": "{\"name\":\"John Updated\",\"email\":\"john_upd@example.com\",\"phone\":\"0987654321\"}" }, "url": "{{base_url}}/users/{{user_id}}" } },
        { "name": "Delete User", "request": { "method": "DELETE", "header": [{ "key": "Authorization", "value": "Bearer {{token}}" }], "url": "{{base_url}}/users/{{user_id}}" } }
      ]
    }
  ]
}
