Skip to main content

Implementation Overview

Implementation Type: Direct API Integration
Note Format: Plain Text
Status: Production Ready

Configuration

PropertyValue
Provider Enumtracker
Note FormatPLAIN
Disposition ReasonsNot Supported
All Application StagesNot Supported
API KeyMW Resources specific

Feature Summary

Direct API integration with comprehensive functionality. Notable limitations in disposition reasons and stage enumeration.

Streaming Operations (All Supported)

  • Stream Jobs (Custom Implementation)
  • Stream Applications (Custom Implementation)
  • Stream Candidates (Custom Implementation)
Implementation Notes:
Custom timezone adjustment logic subtracts 8 hours from updated_after timestamps because Tracker returns local time instead of UTC.

Move to Stage

Status: Supported (Custom Implementation)
Method: _move_application_to_stage(application, stage)
Moves applications between stages using Tracker’s API. Works with known stage IDs.

Get Rejection Reasons

Status: Not Supported (Tracker API Limitation)
Method: get_disposition_reasons()
Tracker’s API does not provide an endpoint to enumerate available rejection reasons. The method raises NotImplementedError. Application rejection must use basic status updates without detailed rejection reasons.

Reject Application

Status: Limited Support
Method: reject_application(application_id, reason_id)
Can reject applications using basic status updates, but without detailed rejection reasons since Tracker doesn’t support disposition reason enumeration.

Bulk Reject Applications

Status: Supported (Custom Implementation)
Method: bulk_reject_applications(application_ids, reason_id)
Bulk rejection of multiple applications using Tracker’s API.

Create Application

Status: Supported (Custom Implementation)
Method: _create_application_for_candidate(candidate, job)
Creates new application records for candidates in Tracker.

Get All Application Stages

Status: Not Supported (Tracker API Limitation)
Method: _get_all_application_stages()
Tracker’s API does not provide an endpoint to fetch all available application stages. The method raises NotImplementedError. Stage management relies on pre-configured stage IDs known to the system rather than dynamic enumeration.
  • Get Job by ID (Custom Implementation)
  • Get Enhanced Job (Custom Implementation)
  • Batch Job Operations (Custom Implementation)
Job data includes Tracker-specific metadata like categories and custom workflows.
  • Get Candidate by ID (Custom Implementation)
  • Find by Details (Custom Implementation with advanced search)
  • Get Resume (Custom Implementation)
Advanced candidate search with multiple criteria and pagination support.
  • Application Notes (Custom Implementation)
  • Candidate Notes (Custom Implementation)
  • Application Attachments (Custom Implementation)
  • Candidate Attachments (Custom Implementation)
Full support for notes and attachments through Tracker’s document API.
  • Application Custom Fields (Custom Implementation)
  • Candidate Custom Fields (Custom Implementation)
  • Job Custom Fields (Custom Implementation)
Tracker has rich custom field support across all entities.

Implementation Notes

Timezone Handling

Critical implementation detail:
Tracker API returns timestamps in local time (not UTC). The client automatically adjusts updated_after parameters by subtracting 8 hours to cover all US timezones and prevent data loss.
# Example: 2025-01-15T00:00:00Z becomes 2025-01-14T16:00:00Z
adjusted_dt = dt - timedelta(hours=8)

Metadata Management

Tracker uses a metadata system (TrackerMetaData) that caches:
  • Available job categories
  • Application statuses
  • Workflow configurations
Metadata is loaded once per client instance for performance.

Library Architecture

Uses TrackerAtsLibrary for API communication with MW Resources API key configuration.

Known Limitations

The following features are not available due to Tracker API limitations:
  • Rejection Reason Enumeration: Tracker’s API doesn’t provide an endpoint to list available rejection reasons (supports_disposition_reasons = False)
  • Stage Enumeration: Tracker’s API doesn’t provide an endpoint to list all application stages (supports_get_all_application_stages = False)
  • Local Time Handling: All timestamp comparisons must account for Tracker’s local time (non-UTC) responses. The 8-hour adjustment is a precautionary measure to prevent data loss across US timezones.
  • Implementation: server/ats/tracker_ats/tracker_ats_client.py (~1,200 lines)
  • Library: server/ats/tracker_ats/tracker_library.py
  • Models: server/ats/tracker_ats/tracker_models.py
  • Field Mappings: server/ats/field_type_mapper.py (TRACKER_FIELD_MAPPINGS)
  • Base Class: server/ats/base_ats_client.py

See Also