{
  "info": {
    "name": "Resumey API",
    "description": "Complete API collection for Resumey — AI Resume Builder. Covers Auth, Resumes, ATS Checker, AI Content, Templates, Payments, and Interview Trainer.\n\n**Quick start:**\n1. Set `base_url` in the environment (default: http://localhost:8000/api/v1)\n2. Run 'Register' or 'Login' — the token auto-saves to `{{token}}` via the test script\n3. All other requests use `{{token}}` automatically via Bearer auth",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_postman_id": "resumey-api-v1"
  },
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{token}}", "type": "string" }]
  },
  "variable": [
    { "key": "base_url", "value": "http://localhost:8000/api/v1", "type": "string" },
    { "key": "token", "value": "", "type": "string" },
    { "key": "resume_id", "value": "", "type": "string" },
    { "key": "session_id", "value": "", "type": "string" },
    { "key": "template_id", "value": "1", "type": "string" }
  ],
  "item": [
    {
      "name": "Authentication",
      "item": [
        {
          "name": "Register",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "auth": { "type": "noauth" },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Arjun Kumar\",\n  \"email\": \"arjun+{{$timestamp}}@resumey.in\",\n  \"password\": \"Password123!\",\n  \"password_confirmation\": \"Password123!\"\n}"
            },
            "url": { "raw": "{{base_url}}/auth/register", "host": ["{{base_url}}"], "path": ["auth", "register"] }
          },
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "if (pm.response.code === 201) {",
                "    const data = pm.response.json().data;",
                "    pm.collectionVariables.set('token', data.token);",
                "    pm.test('Token saved', () => pm.expect(data.token).to.be.a('string'));",
                "}",
                "pm.test('Status is 201', () => pm.response.to.have.status(201));"
              ],
              "type": "text/javascript"
            }
          }]
        },
        {
          "name": "Login",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "auth": { "type": "noauth" },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"demo@resumey.in\",\n  \"password\": \"password123\"\n}"
            },
            "url": { "raw": "{{base_url}}/auth/login", "host": ["{{base_url}}"], "path": ["auth", "login"] }
          },
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "if (pm.response.code === 200) {",
                "    pm.collectionVariables.set('token', pm.response.json().data.token);",
                "}",
                "pm.test('Status is 200', () => pm.response.to.have.status(200));"
              ],
              "type": "text/javascript"
            }
          }]
        },
        {
          "name": "Google OAuth Login",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "auth": { "type": "noauth" },
            "body": { "mode": "raw", "raw": "{\n  \"id_token\": \"google-id-token-here\"\n}" },
            "url": { "raw": "{{base_url}}/auth/google", "host": ["{{base_url}}"], "path": ["auth", "google"] }
          }
        },
        {
          "name": "Get Current User (Me)",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/auth/me", "host": ["{{base_url}}"], "path": ["auth", "me"] }
          }
        },
        {
          "name": "Logout",
          "request": {
            "method": "POST",
            "url": { "raw": "{{base_url}}/auth/logout", "host": ["{{base_url}}"], "path": ["auth", "logout"] }
          }
        }
      ]
    },
    {
      "name": "Resumes",
      "item": [
        {
          "name": "List Resumes",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/resumes", "host": ["{{base_url}}"], "path": ["resumes"] }
          }
        },
        {
          "name": "Create Resume",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Senior Frontend Developer Resume\",\n  \"language\": \"en\"\n}"
            },
            "url": { "raw": "{{base_url}}/resumes", "host": ["{{base_url}}"], "path": ["resumes"] }
          },
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "if (pm.response.code === 201) {",
                "    pm.collectionVariables.set('resume_id', pm.response.json().data.id);",
                "}",
                "pm.test('Status is 201', () => pm.response.to.have.status(201));",
                "pm.test('Has default sections', () => pm.expect(pm.response.json().data.sections.length).to.be.above(0));"
              ],
              "type": "text/javascript"
            }
          }]
        },
        {
          "name": "Get Resume",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}"] }
          }
        },
        {
          "name": "Update Resume Meta",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Updated Resume Title\",\n  \"color_accent\": \"#ff3d5a\",\n  \"target_role\": \"Senior Frontend Developer\"\n}"
            },
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}"] }
          }
        },
        {
          "name": "Bulk Update Sections (Auto-save)",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sections\": [\n    {\n      \"id\": 1,\n      \"content\": { \"full_name\": \"Arjun Kumar\", \"tagline\": \"Senior Frontend Developer\" },\n      \"sort_order\": 0\n    }\n  ]\n}"
            },
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/sections", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "sections"] }
          }
        },
        {
          "name": "Add Section",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"certifications\",\n  \"title\": \"Certifications\"\n}"
            },
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/sections", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "sections"] }
          }
        },
        {
          "name": "Reorder Sections",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"order\": [3, 1, 2, 4, 5, 6]\n}" },
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/reorder", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "reorder"] }
          }
        },
        {
          "name": "Generate PDF",
          "request": {
            "method": "POST",
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/generate-pdf", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "generate-pdf"] }
          }
        },
        {
          "name": "Parse Uploaded Resume",
          "request": {
            "method": "POST",
            "body": {
              "mode": "formdata",
              "formdata": [{ "key": "file", "type": "file", "src": [] }]
            },
            "url": { "raw": "{{base_url}}/resumes/parse", "host": ["{{base_url}}"], "path": ["resumes", "parse"] }
          }
        },
        {
          "name": "Get Share Link",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/share", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "share"] }
          }
        },
        {
          "name": "Delete Resume",
          "request": {
            "method": "DELETE",
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}"] }
          }
        }
      ]
    },
    {
      "name": "ATS Checker",
      "item": [
        {
          "name": "Analyze Resume",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resume_id\": {{resume_id}},\n  \"job_description\": \"We are looking for a Senior Frontend Developer with strong React, TypeScript, GraphQL, CI/CD and AWS experience. 4+ years required.\"\n}"
            },
            "url": { "raw": "{{base_url}}/ats/analyze", "host": ["{{base_url}}"], "path": ["ats", "analyze"] }
          },
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "pm.test('Has overall_score 0-100', () => {",
                "    const score = pm.response.json().data.overall_score;",
                "    pm.expect(score).to.be.within(0, 100);",
                "});"
              ],
              "type": "text/javascript"
            }
          }]
        },
        {
          "name": "ATS Score History",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/ats/history/{{resume_id}}", "host": ["{{base_url}}"], "path": ["ats", "history", "{{resume_id}}"] }
          }
        }
      ]
    },
    {
      "name": "AI Content",
      "item": [
        {
          "name": "Generate Bullet Points",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"job_title\": \"Senior Frontend Developer\",\n  \"company\": \"TechCorp India\",\n  \"context\": \"Built scalable React dashboards serving 50K+ daily users\",\n  \"count\": 4\n}"
            },
            "url": { "raw": "{{base_url}}/ai/generate-bullets", "host": ["{{base_url}}"], "path": ["ai", "generate-bullets"] }
          }
        },
        {
          "name": "Improve Sentence",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"text\": \"Worked on frontend stuff and helped the team\",\n  \"context\": \"Senior Frontend Developer role\"\n}"
            },
            "url": { "raw": "{{base_url}}/ai/improve-sentence", "host": ["{{base_url}}"], "path": ["ai", "improve-sentence"] }
          }
        },
        {
          "name": "JD Match & Tailor",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resume_id\": {{resume_id}},\n  \"job_description\": \"We need a React developer with TypeScript, GraphQL, CI/CD and AWS experience. 5+ years building scalable web applications.\",\n  \"mode\": \"suggest\"\n}"
            },
            "url": { "raw": "{{base_url}}/ai/jd-match", "host": ["{{base_url}}"], "path": ["ai", "jd-match"] }
          }
        },
        {
          "name": "Generate Cover Letter",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resume_id\": {{resume_id}},\n  \"company_name\": \"Flipkart\",\n  \"job_description\": \"Senior React Developer role at Flipkart, building large-scale e-commerce solutions.\",\n  \"tone\": \"professional\"\n}"
            },
            "url": { "raw": "{{base_url}}/ai/cover-letter", "host": ["{{base_url}}"], "path": ["ai", "cover-letter"] }
          }
        },
        {
          "name": "Suggest Keywords",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"job_title\": \"Data Scientist\",\n  \"industry\": \"finance\"\n}"
            },
            "url": { "raw": "{{base_url}}/ai/suggest-keywords", "host": ["{{base_url}}"], "path": ["ai", "suggest-keywords"] }
          }
        },
        {
          "name": "Salary Estimate",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/ai/salary?role=Senior Frontend Developer&location=Bangalore&experience=5",
              "host": ["{{base_url}}"],
              "path": ["ai", "salary"],
              "query": [
                { "key": "role", "value": "Senior Frontend Developer" },
                { "key": "location", "value": "Bangalore" },
                { "key": "experience", "value": "5" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Templates",
      "item": [
        {
          "name": "List All Templates",
          "request": {
            "method": "GET",
            "auth": { "type": "noauth" },
            "url": { "raw": "{{base_url}}/templates", "host": ["{{base_url}}"], "path": ["templates"] }
          }
        },
        {
          "name": "List Templates by Category",
          "request": {
            "method": "GET",
            "auth": { "type": "noauth" },
            "url": {
              "raw": "{{base_url}}/templates?category=it",
              "host": ["{{base_url}}"],
              "path": ["templates"],
              "query": [{ "key": "category", "value": "it" }]
            }
          }
        },
        {
          "name": "List Free Templates",
          "request": {
            "method": "GET",
            "auth": { "type": "noauth" },
            "url": {
              "raw": "{{base_url}}/templates?is_free=1",
              "host": ["{{base_url}}"],
              "path": ["templates"],
              "query": [{ "key": "is_free", "value": "1" }]
            }
          }
        },
        {
          "name": "Get Single Template",
          "request": {
            "method": "GET",
            "auth": { "type": "noauth" },
            "url": { "raw": "{{base_url}}/templates/{{template_id}}", "host": ["{{base_url}}"], "path": ["templates", "{{template_id}}"] }
          }
        },
        {
          "name": "Apply Template to Resume",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"template_id\": {{template_id}}\n}" },
            "url": { "raw": "{{base_url}}/resumes/{{resume_id}}/apply-template", "host": ["{{base_url}}"], "path": ["resumes", "{{resume_id}}", "apply-template"] }
          }
        }
      ]
    },
    {
      "name": "Payments",
      "item": [
        {
          "name": "Create Order (PDF Download)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"plan\": \"pdf_download\",\n  \"resume_id\": {{resume_id}}\n}"
            },
            "url": { "raw": "{{base_url}}/payments/create-order", "host": ["{{base_url}}"], "path": ["payments", "create-order"] }
          }
        },
        {
          "name": "Create Order (Pro Monthly)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"plan\": \"pro_monthly\"\n}" },
            "url": { "raw": "{{base_url}}/payments/create-order", "host": ["{{base_url}}"], "path": ["payments", "create-order"] }
          }
        },
        {
          "name": "Verify Payment",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"razorpay_order_id\": \"order_xxx\",\n  \"razorpay_payment_id\": \"pay_xxx\",\n  \"razorpay_signature\": \"signature_xxx\"\n}"
            },
            "url": { "raw": "{{base_url}}/payments/verify", "host": ["{{base_url}}"], "path": ["payments", "verify"] }
          }
        },
        {
          "name": "Payment History",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/payments/history", "host": ["{{base_url}}"], "path": ["payments", "history"] }
          }
        }
      ]
    },
    {
      "name": "Interview Trainer",
      "item": [
        {
          "name": "Start Session",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"technical\",\n  \"difficulty\": \"medium\",\n  \"target_company\": \"Google\",\n  \"total_questions\": 10,\n  \"resume_id\": {{resume_id}}\n}"
            },
            "url": { "raw": "{{base_url}}/interview/sessions", "host": ["{{base_url}}"], "path": ["interview", "sessions"] }
          },
          "event": [{
            "listen": "test",
            "script": {
              "exec": [
                "if (pm.response.code === 201) {",
                "    pm.collectionVariables.set('session_id', pm.response.json().data.session.id);",
                "}"
              ],
              "type": "text/javascript"
            }
          }]
        },
        {
          "name": "List Sessions",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/interview/sessions", "host": ["{{base_url}}"], "path": ["interview", "sessions"] }
          }
        },
        {
          "name": "Get Next Question",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/interview/sessions/{{session_id}}/next-question", "host": ["{{base_url}}"], "path": ["interview", "sessions", "{{session_id}}", "next-question"] }
          }
        },
        {
          "name": "Submit Answer",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"question_text\": \"Explain how React's reconciliation algorithm works.\",\n  \"answer_text\": \"React Fiber is a rewrite of the reconciliation algorithm that allows React to break rendering work into chunks...\",\n  \"time_taken_sec\": 95\n}"
            },
            "url": { "raw": "{{base_url}}/interview/sessions/{{session_id}}/answers", "host": ["{{base_url}}"], "path": ["interview", "sessions", "{{session_id}}", "answers"] }
          }
        },
        {
          "name": "Get Session Report",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/interview/sessions/{{session_id}}/report", "host": ["{{base_url}}"], "path": ["interview", "sessions", "{{session_id}}", "report"] }
          }
        }
      ]
    }
  ]
}
