Employee Endpoints

Job Recommendations

  • Endpoint: GET /reco-jobs

  • Description: Get personalized job recommendations based on employee's skills and disability status. Uses content-based and collaborative filtering algorithms.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Request: No body required

  • Sample Request (curl):

    curl -X GET "http://your-api-url/reco-jobs" \
      -H "Authorization: Bearer <access_token>"
  • Sample Response:

    {
      "recommendations": [
        {
          "id": 13,
          "user_id": "148cc1c6-2e81-4037-913c-7617564baa33",
          "title": "Transcriptionist",
          "job_description": "Transcribe audio content to text",
          "skill_1": "Grammar",
          "skill_2": "Transcription Tools",
          "skill_3": "Listening",
          "skill_4": "Detail Orientation",
          "skill_5": "Typing",
          "pwd_friendly": false,
          "created_at": "2025-06-05T12:57:47.917283+00:00",
          "company_name": "TechCorp",
          "location": "Remote",
          "job_type": "Part-time",
          "industry": "Technology",
          "experience": "Entry Level",
          "min_salary": 400.0,
          "max_salary": 600.0,
          "skill_match_score": 0.6,
          "matched_skills": ["typing", "listening", "grammar"]
        }
      ]
    }
  • React Native Implementation:

    const getJobRecommendations = async () => {
      try {
        const token = await AsyncStorage.getItem('sessionKey');
        
        const response = await fetch('http://your-api-url/reco-jobs', {
          method: 'GET',
          headers: {
            'Authorization': `Bearer ${token}`,
            'Content-Type': 'application/json'
          }
        });
        
        const data = await response.json();
        
        if (data.recommendations) {
          return data.recommendations;
        } else {
          throw new Error(data.Message || 'No recommendations available');
        }
      } catch (error) {
        console.error('Recommendations error:', error);
        throw error;
      }
    };

Resume Management

Upload Resume

  • Endpoint: POST /upload-resume

  • Description: Upload or update employee resume. Only PDF files are accepted.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Request (multipart/form-data):

    • file (file, required, PDF only, max 5MB)

  • Sample Request (curl):

    curl -X POST "http://your-api-url/upload-resume" \
      -H "Authorization: Bearer <access_token>" \
      -F "file=@/path/to/resume.pdf"
  • Sample Response:

    {
      "Status": "Success",
      "Message": "Resume uploaded successfully",
      "ResumeURL": "https://.../resumes/user_id/resume.pdf"
    }
  • Error Responses:

    {
      "Status": "Error",
      "Message": "Only PDF files are allowed"
    }
    {
      "Status": "Error",
      "Message": "File size must be less than 5MB"
    }
  • React Native Implementation:

    const uploadResume = async (resumeUri) => {
      try {
        const token = await AsyncStorage.getItem('sessionKey');
        
        const formData = new FormData();
        formData.append('file', {
          uri: resumeUri,
          type: 'application/pdf',
          name: 'resume.pdf'
        });
        
        const response = await fetch('http://your-api-url/upload-resume', {
          method: 'POST',
          headers: {
            'Authorization': `Bearer ${token}`,
            'Content-Type': 'multipart/form-data'
          },
          body: formData
        });
        
        const data = await response.json();
        
        if (data.Status === 'Success') {
          return data;
        } else {
          throw new Error(data.Message);
        }
      } catch (error) {
        console.error('Resume upload error:', error);
        throw error;
      }
    };

Job Applications

Apply for Job

  • Endpoint: POST /apply-job/{job_id}

  • Description: Apply for a specific job. Employee must be authenticated.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Parameters:

    • job_id (path parameter, required) - The ID of the job to apply for

  • Request: No body required

  • Sample Request (curl):

    curl -X POST "http://your-api-url/apply-job/16" \
      -H "Authorization: Bearer <access_token>"
  • Sample Response:

    {
      "Status": "Successfull",
      "Message": "You applied to job 16",
      "Details": [
        {
          "id": 1,
          "user_id": "f9b86db6-93dc-4e29-a1be-6dfcb114b8f7",
          "job_id": "16",
          "status": "under_review",
          "created_at": "2025-06-05T14:13:35.947101+00:00"
        }
      ]
    }
  • Error Response:

    {
      "Status": "Error",
      "Message": "Can't find the user"
    }
  • React Native Implementation:

    const applyForJob = async (jobId) => {
      try {
        const token = await AsyncStorage.getItem('sessionKey');
        
        const response = await fetch(`http://your-api-url/apply-job/${jobId}`, {
          method: 'POST',
          headers: {
            'Authorization': `Bearer ${token}`,
            'Content-Type': 'application/json'
          }
        });
        
        const data = await response.json();
        
        if (data.Status === 'Successfull') {
          return data;
        } else {
          throw new Error(data.Message);
        }
      } catch (error) {
        console.error('Job application error:', error);
        throw error;
      }
    };

View Application History

  • Endpoint: GET /my-applications

  • Description: Get all job applications submitted by the current employee.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Request: No body required

  • Sample Request (curl):

    curl -X GET "http://your-api-url/my-applications" \
      -H "Authorization: Bearer <access_token>"
  • Sample Response:

    {
      "Status": "Successfull",
      "Message": [
        {
          "id": 1,
          "user_id": "f9b86db6-93dc-4e29-a1be-6dfcb114b8f7",
          "job_id": "16",
          "status": "under_review",
          "created_at": "2025-06-05T14:13:35.947101+00:00"
        },
        {
          "id": 2,
          "user_id": "f9b86db6-93dc-4e29-a1be-6dfcb114b8f7",
          "job_id": "14",
          "status": "accepted",
          "created_at": "2025-06-04T10:30:22.123456+00:00"
        }
      ]
    }
  • React Native Implementation:

    const getMyApplications = async () => {
      try {
        const token = await AsyncStorage.getItem('sessionKey');
        
        const response = await fetch('http://your-api-url/my-applications', {
          method: 'GET',
          headers: {
            'Authorization': `Bearer ${token}`,
            'Content-Type': 'application/json'
          }
        });
        
        const data = await response.json();
        
        if (data.Status === 'Successfull') {
          return data.Message; // Contains the applications array
        } else {
          throw new Error(data.Message);
        }
      } catch (error) {
        console.error('Applications history error:', error);
        throw error;
      }
    };

Decline Job Application

  • Endpoint: POST /decline-application/{application_id}

  • Description: Allow an employee to decline a job application. Creates a record in the declined_jobs table.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Parameters:

    • application_id (path parameter, required) - The ID of the job to decline

  • Sample Request (curl):

curl -X POST "http://your-api-url/decline-application/123" \
  -H "Authorization: Bearer <access_token>"
  • Sample Response:

{
  "Status": "Successfull",
  "Message": "Application declined successfully"
}
  • Error Response:

{
  "Status": "Error",
  "Message": "Failed to decline application"
}
  • React Native Implementation:

const declineJob = async (applicationId) => {
  try {
    const token = await AsyncStorage.getItem('Token');
    
    const response = await fetch(`http://your-api-url/decline-application/${applicationId}`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    const data = await response.json();
    
    if (data.Status === 'Successfull') {
      return data;
    } else {
      throw new Error(data.Message);
    }
  } catch (error) {
    console.error('Job decline error:', error);
    throw error;
  }
};

View Declined Applications

  • Endpoint: GET /declined-applications

  • Description: Get all job applications that have been declined by the employee.

  • Headers Required:

    • Authorization: Bearer <access_token>

  • Request: No body required

  • Sample Request (curl):

curl -X GET "http://your-api-url/declined-applications" \
  -H "Authorization: Bearer <access_token>"
  • Sample Response:

{
  "Status": "Successfull",
  "Message": [
    {
      "id": 1,
      "user_id": "f5cf5a60-f6d7-4754-b7cc-31ed083b0dd3",
      "job_id": "123",
      "created_at": "2025-06-26T07:24:44.275143+00:00"
    }
  ]
}
  • Error Response:

{
  "Status": "Error",
  "Message": "No Data Found"
}
  • React Native Implementation:

const getDeclinedApplications = async () => {
  try {
    const token = await AsyncStorage.getItem('Token');
    
    const response = await fetch('http://your-api-url/declined-applications', {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    const data = await response.json();
    
    if (data.Status === 'Successfull') {
      return data.Message;
    } else {
      throw new Error(data.Message);
    }
  } catch (error) {
    console.error('Declined applications fetch error:', error);
    throw error;
  }
};

Last updated