Implementation Overview
Implementation Type: Direct API IntegrationNote Format: Plain Text
Status: Production Ready
Configuration
| Property | Value |
|---|---|
| Provider Enum | tracker |
| Note Format | PLAIN |
| Disposition Reasons | Not Supported |
| All Application Stages | Not Supported |
| API Key | MW Resources specific |
Feature Summary
Direct API integration with comprehensive functionality. Notable limitations in disposition reasons and stage enumeration.Streaming Operations (All Supported)
Streaming Operations (All Supported)
- Stream Jobs (Custom Implementation)
- Stream Applications (Custom Implementation)
- Stream Candidates (Custom Implementation)
Custom timezone adjustment logic subtracts 8 hours from
updated_after timestamps because Tracker returns local time instead of UTC.Application Management
Application Management
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 SupportMethod:
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.Job Management (All Supported)
Job Management (All Supported)
- Get Job by ID (Custom Implementation)
- Get Enhanced Job (Custom Implementation)
- Batch Job Operations (Custom Implementation)
Candidate Management (All Supported)
Candidate Management (All Supported)
- Get Candidate by ID (Custom Implementation)
- Find by Details (Custom Implementation with advanced search)
- Get Resume (Custom Implementation)
Notes & Attachments (All Supported)
Notes & Attachments (All Supported)
- Application Notes (Custom Implementation)
- Candidate Notes (Custom Implementation)
- Application Attachments (Custom Implementation)
- Candidate Attachments (Custom Implementation)
Custom Fields (All Supported)
Custom Fields (All Supported)
- Application Custom Fields (Custom Implementation)
- Candidate Custom Fields (Custom Implementation)
- Job Custom Fields (Custom Implementation)
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.
Metadata Management
Tracker uses a metadata system (TrackerMetaData) that caches:
- Available job categories
- Application statuses
- Workflow configurations
Library Architecture
UsesTrackerAtsLibrary 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.
Related Files
- 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
- ATS Coverage Matrix
- Tracker Workable Wrapper - Hybrid client for MW Resources