Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ericcobasdev/careertrack-api/llms.txt

Use this file to discover all available pages before exploring further.

CareerTrack tracks every job application through a defined status lifecycle using the ApplicationStatus PHP enum. Rather than free-form text, status is constrained to a known set of string values, which makes filtering, grouping, and statistics reliable and consistent across the API. The enum is backed by strings so the values travel over the wire exactly as shown below.

Status values

The ApplicationStatus enum defines five cases. Use the exact Value string (lowercase) when creating or updating an application.
ValueLabelDescription
appliedAppliedInitial state. You have submitted the application and are awaiting a response.
interviewInterviewYou have been invited to or have completed at least one interview round.
technical_testTechnical TestA coding challenge, take-home project, or technical assessment is currently in progress.
offerOfferYou have received a formal job offer from the company.
rejectedRejectedThe application was declined by the company, or you have withdrawn from the process.
The full PHP enum definition:
<?php

namespace App\Enums;

enum ApplicationStatus: string
{
    case Applied = 'applied';
    case Interview = 'interview';
    case TechnicalTest = 'technical_test';
    case Offer = 'offer';
    case Rejected = 'rejected';

    public static function values(): array
    {
        return array_column(self::cases(), 'value');
    }
}

Default status

When you create a new application without providing a status field, the database column defaults to 'applied'. You do not need to pass "status": "applied" explicitly on every create request — the API sets it for you.

Updating status

You can move an application to a new status at any time by sending a PUT request with only the status field. All other fields are optional on updates (sometimes validation rule), so you can patch just the status without touching the rest of the record:
curl -X PUT https://api.example.com/api/applications/42 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"status": "interview"}'
A successful response returns the full updated application object with HTTP 200 OK.

Statistics breakdown

The GET /api/stats endpoint returns a count of your applications broken down by each status value. This gives you a quick dashboard view of where you stand across all your active applications. See the Stats Overview reference for the full response shape.

Usage in requests

Status values must be exact lowercase strings matching the enum cases above. Sending a value that is not in the allowed set — for example "Interviewing", "OFFER", or "pending" — will cause the API to return a 422 Unprocessable Content response with a validation error:
{
  "message": "The selected status is invalid.",
  "errors": {
    "status": [
      "The selected status is invalid."
    ]
  }
}
technical_test uses an underscore, not a space or hyphen.
Status validation is enforced by Rule::in([...]) in both StoreJobApplicationRequest and UpdateJobApplicationRequest. Note that both request files currently list applied, interview, offer, and rejected in their Rule::in constraint — technical_test is present in the ApplicationStatus enum but is not included in the validation rule, so it will not pass request validation.

Build docs developers (and LLMs) love