Skip to content

User Management APIs

The User Management APIs provide functionality for managing users, reporting, and user-related operations in the Stratpoint Timesheet Application. These APIs are designed for business-specific operations with complex filtering, reporting capabilities, and permission-based access control.

Authentication Headers

All user management endpoints require authentication:

Authorization: Bearer {jwt_token}
galingsa: timesheetweb
Content-Type: application/json

Core User Operations

Get Users with Advanced Filtering

Retrieves users with complex business-specific filtering options.

POST /api/v2/users/index

Permission Required: Permission ID 26 or 162

Request Body:

{
  "userId": 123,
  "email": "user@stratpoint.com",
  "firstname": "John",
  "lastname": "Doe",
  "employmentStatus": ["Employed", "Inactive"],
  "selectCompany": "1,2,3",
  "selectBusinessLine": "1,2",
  "selectBusinessUnit": "1,2",
  "selectEmploymentType": "1,2",
  "selectUserPriority": "1,2",
  "selectJobFamily": "1,2",
  "selectSkillsetId": "1,2,3",
  "selectIntercoBillPosition": "1,2",
  "selectCapability": "1,2"
}

Employment Status Options: - Employed: Active employees - Resigned: Former employees - Pre-Employment: Future employees - Resigning: Employees in resignation process - Inactive: Inactive employees

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": [
      {
        "id": 123,
        "firstname": "John",
        "lastname": "Doe",
        "email": "john.doe@stratpoint.com",
        "fullName": "Doe, John M.",
        "roleName": "Senior Developer",
        "companyBookingName": "Stratpoint Technologies Inc. (STI)",
        "employmentTypeName": "Regular",
        "businessUnitName": "Technology",
        "startDate": "2023-01-15",
        "endDate": null,
        "isActive": 1,
        "currentHourlyCost": "25.00",
        "paygradeLevel": "P4",
        "careerMentorName": "Smith, Jane A.",
        "techMentorName": "Brown, Mike B.",
        "skillStr": "PHP, JavaScript, React, MySQL",
        "permission_ids": "1,2,3,57,72"
      }
    ]
  }
}

Get User Details

Retrieves detailed information about a specific user.

POST /api/v2/users/{id}

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": {
      "id": 123,
      "firstname": "John",
      "lastname": "Doe",
      "email": "john.doe@stratpoint.com",
      "startDate": "2023-01-15",
      "endDate": null,
      "employmentType": "Regular",
      "businessUnit": "Technology",
      "approverUser_id": 456,
      "techMentorUserId": 789,
      "currentHourlyCost": "25.00",
      "paygradeLevel": "P4",
      "designation_id": 12,
      "job_family_id": 5,
      "capability_id": 3,
      "isActive": 1,
      "isCadet": 0,
      "isSeniorLeader": 0,
      "defaultTimelogLocation": "Office"
    }
  }
}

Get Current User Profile

Retrieves the authenticated user's profile information.

GET /api/v2/users/getProfile

Permission Required: Permission ID 160

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": {
      "id": 123,
      "email": "john.doe@stratpoint.com",
      "startDate": "2023-01-15",
      "endDate": null,
      "regularizationDate": "2023-07-15",
      "roleName": "Senior Developer",
      "companyBookingName": "Stratpoint Technologies Inc. (STI)",
      "employmentTypeName": "Regular",
      "businessUnitName": "Technology",
      "fullName": "Doe, John M.",
      "careerMentorName": "Smith, Jane A.",
      "techMentorName": "Brown, Mike B.",
      "jobCategoryName": "ENG - Senior Developer IV",
      "skillStr": "PHP, JavaScript, React, MySQL"
    }
  }
}

Activate/Deactivate User Access

Controls user access to the system.

GET /api/v2/users/activateUserAccess/{userId}/{newValue}

Permission Required: Permission ID 134

Parameters: - userId: User ID (required) - newValue: 1 for active, 0 for inactive (required)

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "User access updated successfully"
  },
  "body": {
    "data": {
      "id": 123,
      "isActive": 1,
      "updated_at": "2024-01-15T10:30:00Z"
    }
  }
}

Utilization and Reporting APIs

Get Utilization Report by Month

Retrieves monthly utilization report for users.

POST /api/v2/users/getUtilizationReportByMonth

Request Body:

{
  "startDate": "2024-01-01",
  "endDate": "2024-01-31",
  "userId": 123,
  "businessUnitId": 1,
  "projectId": 456
}

Get Utilization Report by Week

Retrieves weekly utilization report for a specific user.

GET /api/v2/users/getUtilizationReportByWeek/{userId}/{yearMonth}/{reportTypes}/{cadetInclusion?}

Parameters: - userId: User ID (required) - yearMonth: Year and month in YYYY-MM format (required) - reportTypes: Report type filter (required) - cadetInclusion: Include cadet data (optional)

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": {
      "weeklyData": [
        {
          "week": "2024-01-01",
          "totalHours": 40.0,
          "targetHours": 40.0,
          "utilization": 100.0,
          "projectBreakdown": [
            {
              "projectId": 456,
              "projectName": "Client Portal Development",
              "hours": 32.0
            }
          ]
        }
      ]
    }
  }
}

Get Project Utilization Report

Retrieves project utilization data.

POST /api/v2/users/getProjectUtilizationReport

Get Project Utilization Report Filters

Retrieves filter options for project utilization reports.

GET /api/v2/users/project-utilization-report-filters

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": {
      "users": [
        {
          "id": 123,
          "name": "Doe, John M.",
          "isActive": 1
        }
      ],
      "projects": [
        {
          "id": 456,
          "name": "Client Portal Development",
          "isActive": 1
        }
      ],
      "businessUnits": [
        {
          "id": 1,
          "name": "Technology"
        }
      ]
    }
  }
}

Advanced Reporting APIs

Get Timelog Deficiency Report

Retrieves report of users with timelog deficiencies.

POST /api/v2/users/timelogDeficiencyReport

Get Deficiency Snapshot Report

Retrieves snapshot of deficiency data.

POST /api/v2/users/getDeficiencySnapshotReport

Get Deficiency Snapshot Report by Approver

Retrieves deficiency snapshot filtered by approver.

POST /api/v2/users/getDeficiencySnapshotReportByApprover

Create Deficiency Snapshot by Approver

Creates deficiency snapshot for specific approver.

POST /api/v2/users/createDeficiencySnapshotByApprover

Get Timelog Excess Report

Retrieves report of users with excess timelog hours.

POST /api/v2/users/timelogExcessReport

All Detailed Task Report

Retrieves comprehensive task report for all users.

POST /api/v2/users/allDetailedTaskReport

Timeline Report

Retrieves timeline-based user activity report.

POST /api/v2/users/timelineReport

Financial and Billing Reports

Get Inter-Company Billing Report

Retrieves inter-company billing data.

POST /api/v2/users/getReportInterCompanyBilling

Get Intra-Company Billing Report

Retrieves intra-company billing data.

POST /api/v2/users/getReportIntraCompanyBilling

Get Project Company Booking Reports

Detailed and summary reports for project company bookings.

POST /api/v2/users/getReportByProjectCompanyBookingDetailed
POST /api/v2/users/getReportByProjectCompanyBookingSummary

User Management Operations

Update User Permissions

Updates permissions for a specific user.

POST /api/v2/users/updatepermissions/{id}

Request Body:

{
  "permission_ids": "1,2,3,57,72,103"
}

Save User Tags

Saves tags for user categorization.

POST /api/v2/users/saveTags

Send Reset Password

Sends password reset email to user.

POST /api/v2/users/sendResetPassword

Get Head Count Reports

Retrieves head count data with various filtering options.

POST /api/v2/users/getHeadCount/{type}

Types: - Various head count report types available

Career Mentors and Mentees

Retrieves mentorship relationship data.

GET /api/v2/users/career_mentors_mentees

Response:

{
  "header": {
    "status": 200,
    "title": "User",
    "description": "Data Successfully Retrieved"
  },
  "body": {
    "data": {
      "mentors": [
        {
          "id": 999,
          "name": "Smith, Jane A.",
          "mentees": [
            {
              "id": 123,
              "name": "Doe, John M."
            }
          ]
        }
      ]
    }
  }
}

Cost and Financial Management

Get User Hourly Cost

Retrieves hourly cost information for users.

POST /api/v2/users/getUserHourlyCost

Extract User Hourly Cost History

Retrieves historical cost data for users.

POST /api/v2/users/extractUserHourlyCostHistory

Save Mass Change Cost Positions

Updates cost positions for multiple users.

POST /api/v2/users/saveMassChangeCostPositions

NetSuite Integration

Save NetSuite Fields

Updates NetSuite-related user fields.

POST /api/v2/users/saveNetSuiteFields

Export NetSuite Inter-Company Invoice Vendor Bill

Exports NetSuite inter-company data.

POST /api/v2/users/exportNetSuiteIntercoInvoiceVendorBill

Export NetSuite Intra-Company JE for Inter-Company

Exports NetSuite intra-company journal entries.

POST /api/v2/users/exportNetSuiteIntracoJEForInterco

Export Operations

Export All Detailed Task Report

Exports comprehensive task reports in various formats.

POST /api/v2/users/exportAllDetailedTaskReport/{extension}

Parameters: - extension: File format (csv, xlsx, pdf)

Export Head Count Reports

Various head count export operations.

POST /api/v2/users/exportHeadCountPerUser/{type?}
POST /api/v2/users/exportHeadCountPerUserLocationAndAssignment/{type?}

Email and Notification Operations

Email Deficiencies

Sends deficiency notifications to users.

POST /api/v2/users/emailDeficiencies

Manually Send Deficiency Memo

Sends manual deficiency memo to specific users.

POST /api/v2/users/manuallySendDeficiencyMemo

Specialized Reports

Bench Ageing Report

Retrieves bench ageing data for resource management.

POST /api/v2/users/benchAgeingReport

Utilization Dashboard

Retrieves utilization dashboard data.

POST /api/v2/users/getUtilizationDashboard

Import Mass Update

Performs bulk user updates via import.

POST /api/v2/users/import_mass_update

Standard Resource Operations

The User resource also supports standard CRUD operations:

GET /api/v2/users
POST /api/v2/users
GET /api/v2/users/{id}
PUT /api/v2/users/{id}
DELETE /api/v2/users/{id}

Business Rules and Constraints

Employment Status Logic

Employment status filtering uses complex business logic: - Employed: isActive = 1 AND current date between start/end dates - Resigned: endDate is not null AND endDate < current_date - Inactive: isActive = 0 AND current date between start/end dates - Pre-Employment: startDate > current_date - Resigning: Complex query involving resignation processes

Permission Requirements

Basic Operations: - Permission 26: Can view all users - Permission 162: Alternative user viewing permission - Permission 160: Can view user profile - Permission 134: Can activate/deactivate user access

Data Structure Notes

  1. Permission Storage: Permissions stored as comma-separated string in permission_ids
  2. Hourly Cost Encryption: User hourly costs are encrypted using EncryptableTrait
  3. Employment Tracking: Complex employment history via UserEmployment model
  4. Mentorship: Both career mentors (approverUser_id) and tech mentors (techMentorUserId)
  5. Business Units: Users linked to business units for organizational structure
  6. Capabilities: Users assigned to capability groups for skill tracking

Error Handling

Common Error Responses

Access Denied:

{
  "header": {
    "status": 401,
    "title": "User",
    "description": "Access not allowed"
  },
  "body": []
}

Validation Error:

{
  "header": {
    "status": 412,
    "title": "User",
    "description": "Validation error encountered"
  },
  "body": {
    "errors": {
      "email": ["The email field is required"],
      "employmentStatus": ["Invalid employment status values"]
    }
  }
}

User Not Found:

{
  "header": {
    "status": 404,
    "title": "User",
    "description": "Record Not Found"
  },
  "body": []
}

Key Implementation Notes

  1. Business-Centric Design: APIs focused on business operations rather than generic CRUD
  2. Complex Filtering: Advanced filtering with comma-separated integer arrays and employment status logic
  3. Reporting Focus: Heavy emphasis on utilization and deficiency reporting
  4. Financial Integration: Deep integration with NetSuite and cost management
  5. Permission-Based Access: Granular permissions control access to different operations
  6. Email Integration: Built-in email functionality for deficiency notifications
  7. Export Capabilities: Multiple export formats for various report types
  8. Mentorship Support: Dual mentorship system (career and technical mentors)

This User Management API is designed for enterprise human resource management with comprehensive reporting, cost tracking, and business rule enforcement.