curl --request POST \
--url http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker \
--header 'Content-Type: application/json' \
--data '
{
"token": "abc123def456",
"page": 1,
"limit": 15,
"athlete_id": null,
"date_filter_range": "All",
"sort_column": "hired_date",
"sort_order": "desc",
"timezone_diff": 5.5,
"filter": {
"athlete": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"university": {
"filterType": "text",
"type": "contains",
"filter": "Abilene"
},
"sport": {
"filterType": "text",
"type": "contains",
"filter": "Foot"
},
"score": {
"filterType": "number",
"type": "lessThan",
"filter": 50
},
"hired_date": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"availability": [
{
"id": "Confirmed",
"name": "Confirmed"
},
{
"id": "Unconfirmed",
"name": "Unconfirmed"
}
],
"instagram": {
"filterType": "number",
"type": "greaterThan",
"filter": 100
},
"tiktok": {
"filterType": "number",
"type": "greaterThan",
"filter": 0
},
"twitter": {
"filterType": "number",
"type": "equals",
"filter": 1
},
"deliverable_name": {
"filterType": "text",
"type": "contains",
"filter": "Instagram Post"
},
"deliverable_type": {
"filterType": "text",
"type": "contains",
"filter": "Video"
},
"deliverable_due_date": {
"filterType": "date",
"type": "lessThan",
"dateFrom": "2025-12-31"
},
"deliverable_status": [
{
"id": "Needs Approval",
"name": "Needs Approval"
},
{
"id": "Approved",
"name": "Approved"
}
],
"deliverable_live_link": {
"filterType": "text",
"type": "contains",
"filter": "instagram.com"
},
"file_name": {
"filterType": "text",
"type": "contains",
"filter": ".mp4"
},
"file_preview": [
{
"id": "Preview",
"name": "Preview"
},
{
"id": "No Preview",
"name": "No Preview"
}
],
"file_uploaded_at": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"file_uploaded_by": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"revision_comments": {
"filterType": "text",
"type": "contains",
"filter": "please redo"
},
"file_status": [
{
"id": "Revision Requested",
"name": "Revision Requested"
},
{
"id": "Voided",
"name": "Voided"
}
]
}
}
'import requests
url = "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker"
payload = {
"token": "abc123def456",
"page": 1,
"limit": 15,
"athlete_id": None,
"date_filter_range": "All",
"sort_column": "hired_date",
"sort_order": "desc",
"timezone_diff": 5.5,
"filter": {
"athlete": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"university": {
"filterType": "text",
"type": "contains",
"filter": "Abilene"
},
"sport": {
"filterType": "text",
"type": "contains",
"filter": "Foot"
},
"score": {
"filterType": "number",
"type": "lessThan",
"filter": 50
},
"hired_date": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"availability": [
{
"id": "Confirmed",
"name": "Confirmed"
},
{
"id": "Unconfirmed",
"name": "Unconfirmed"
}
],
"instagram": {
"filterType": "number",
"type": "greaterThan",
"filter": 100
},
"tiktok": {
"filterType": "number",
"type": "greaterThan",
"filter": 0
},
"twitter": {
"filterType": "number",
"type": "equals",
"filter": 1
},
"deliverable_name": {
"filterType": "text",
"type": "contains",
"filter": "Instagram Post"
},
"deliverable_type": {
"filterType": "text",
"type": "contains",
"filter": "Video"
},
"deliverable_due_date": {
"filterType": "date",
"type": "lessThan",
"dateFrom": "2025-12-31"
},
"deliverable_status": [
{
"id": "Needs Approval",
"name": "Needs Approval"
},
{
"id": "Approved",
"name": "Approved"
}
],
"deliverable_live_link": {
"filterType": "text",
"type": "contains",
"filter": "instagram.com"
},
"file_name": {
"filterType": "text",
"type": "contains",
"filter": ".mp4"
},
"file_preview": [
{
"id": "Preview",
"name": "Preview"
},
{
"id": "No Preview",
"name": "No Preview"
}
],
"file_uploaded_at": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"file_uploaded_by": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"revision_comments": {
"filterType": "text",
"type": "contains",
"filter": "please redo"
},
"file_status": [
{
"id": "Revision Requested",
"name": "Revision Requested"
},
{
"id": "Voided",
"name": "Voided"
}
]
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
token: 'abc123def456',
page: 1,
limit: 15,
athlete_id: null,
date_filter_range: 'All',
sort_column: 'hired_date',
sort_order: 'desc',
timezone_diff: 5.5,
filter: {
athlete: {filterType: 'text', type: 'contains', filter: 'rehan'},
university: {filterType: 'text', type: 'contains', filter: 'Abilene'},
sport: {filterType: 'text', type: 'contains', filter: 'Foot'},
score: {filterType: 'number', type: 'lessThan', filter: 50},
hired_date: {
filterType: 'date',
type: 'inRange',
dateFrom: '2025-10-01',
dateTo: '2025-10-31'
},
availability: [{id: 'Confirmed', name: 'Confirmed'}, {id: 'Unconfirmed', name: 'Unconfirmed'}],
instagram: {filterType: 'number', type: 'greaterThan', filter: 100},
tiktok: {filterType: 'number', type: 'greaterThan', filter: 0},
twitter: {filterType: 'number', type: 'equals', filter: 1},
deliverable_name: {filterType: 'text', type: 'contains', filter: 'Instagram Post'},
deliverable_type: {filterType: 'text', type: 'contains', filter: 'Video'},
deliverable_due_date: {filterType: 'date', type: 'lessThan', dateFrom: '2025-12-31'},
deliverable_status: [
{id: 'Needs Approval', name: 'Needs Approval'},
{id: 'Approved', name: 'Approved'}
],
deliverable_live_link: {filterType: 'text', type: 'contains', filter: 'instagram.com'},
file_name: {filterType: 'text', type: 'contains', filter: '.mp4'},
file_preview: [{id: 'Preview', name: 'Preview'}, {id: 'No Preview', name: 'No Preview'}],
file_uploaded_at: {
filterType: 'date',
type: 'inRange',
dateFrom: '2025-10-01',
dateTo: '2025-10-31'
},
file_uploaded_by: {filterType: 'text', type: 'contains', filter: 'rehan'},
revision_comments: {filterType: 'text', type: 'contains', filter: 'please redo'},
file_status: [
{id: 'Revision Requested', name: 'Revision Requested'},
{id: 'Voided', name: 'Voided'}
]
}
})
};
fetch('http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'token' => 'abc123def456',
'page' => 1,
'limit' => 15,
'athlete_id' => null,
'date_filter_range' => 'All',
'sort_column' => 'hired_date',
'sort_order' => 'desc',
'timezone_diff' => 5.5,
'filter' => [
'athlete' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'rehan'
],
'university' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Abilene'
],
'sport' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Foot'
],
'score' => [
'filterType' => 'number',
'type' => 'lessThan',
'filter' => 50
],
'hired_date' => [
'filterType' => 'date',
'type' => 'inRange',
'dateFrom' => '2025-10-01',
'dateTo' => '2025-10-31'
],
'availability' => [
[
'id' => 'Confirmed',
'name' => 'Confirmed'
],
[
'id' => 'Unconfirmed',
'name' => 'Unconfirmed'
]
],
'instagram' => [
'filterType' => 'number',
'type' => 'greaterThan',
'filter' => 100
],
'tiktok' => [
'filterType' => 'number',
'type' => 'greaterThan',
'filter' => 0
],
'twitter' => [
'filterType' => 'number',
'type' => 'equals',
'filter' => 1
],
'deliverable_name' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Instagram Post'
],
'deliverable_type' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Video'
],
'deliverable_due_date' => [
'filterType' => 'date',
'type' => 'lessThan',
'dateFrom' => '2025-12-31'
],
'deliverable_status' => [
[
'id' => 'Needs Approval',
'name' => 'Needs Approval'
],
[
'id' => 'Approved',
'name' => 'Approved'
]
],
'deliverable_live_link' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'instagram.com'
],
'file_name' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => '.mp4'
],
'file_preview' => [
[
'id' => 'Preview',
'name' => 'Preview'
],
[
'id' => 'No Preview',
'name' => 'No Preview'
]
],
'file_uploaded_at' => [
'filterType' => 'date',
'type' => 'inRange',
'dateFrom' => '2025-10-01',
'dateTo' => '2025-10-31'
],
'file_uploaded_by' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'rehan'
],
'revision_comments' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'please redo'
],
'file_status' => [
[
'id' => 'Revision Requested',
'name' => 'Revision Requested'
],
[
'id' => 'Voided',
'name' => 'Voided'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker"
payload := strings.NewReader("{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyGet external job Campaign Tracker (hired athletes)
Paginated Campaign Tracker list for the external hired view. One row per hired, non-voided athlete + deliverable + file (milestones and files are merged into flat rows). Supports date range, sort, athlete filter, and rich AG-Grid style column filters. Requires valid external token (middleware).
curl --request POST \
--url http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker \
--header 'Content-Type: application/json' \
--data '
{
"token": "abc123def456",
"page": 1,
"limit": 15,
"athlete_id": null,
"date_filter_range": "All",
"sort_column": "hired_date",
"sort_order": "desc",
"timezone_diff": 5.5,
"filter": {
"athlete": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"university": {
"filterType": "text",
"type": "contains",
"filter": "Abilene"
},
"sport": {
"filterType": "text",
"type": "contains",
"filter": "Foot"
},
"score": {
"filterType": "number",
"type": "lessThan",
"filter": 50
},
"hired_date": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"availability": [
{
"id": "Confirmed",
"name": "Confirmed"
},
{
"id": "Unconfirmed",
"name": "Unconfirmed"
}
],
"instagram": {
"filterType": "number",
"type": "greaterThan",
"filter": 100
},
"tiktok": {
"filterType": "number",
"type": "greaterThan",
"filter": 0
},
"twitter": {
"filterType": "number",
"type": "equals",
"filter": 1
},
"deliverable_name": {
"filterType": "text",
"type": "contains",
"filter": "Instagram Post"
},
"deliverable_type": {
"filterType": "text",
"type": "contains",
"filter": "Video"
},
"deliverable_due_date": {
"filterType": "date",
"type": "lessThan",
"dateFrom": "2025-12-31"
},
"deliverable_status": [
{
"id": "Needs Approval",
"name": "Needs Approval"
},
{
"id": "Approved",
"name": "Approved"
}
],
"deliverable_live_link": {
"filterType": "text",
"type": "contains",
"filter": "instagram.com"
},
"file_name": {
"filterType": "text",
"type": "contains",
"filter": ".mp4"
},
"file_preview": [
{
"id": "Preview",
"name": "Preview"
},
{
"id": "No Preview",
"name": "No Preview"
}
],
"file_uploaded_at": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"file_uploaded_by": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"revision_comments": {
"filterType": "text",
"type": "contains",
"filter": "please redo"
},
"file_status": [
{
"id": "Revision Requested",
"name": "Revision Requested"
},
{
"id": "Voided",
"name": "Voided"
}
]
}
}
'import requests
url = "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker"
payload = {
"token": "abc123def456",
"page": 1,
"limit": 15,
"athlete_id": None,
"date_filter_range": "All",
"sort_column": "hired_date",
"sort_order": "desc",
"timezone_diff": 5.5,
"filter": {
"athlete": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"university": {
"filterType": "text",
"type": "contains",
"filter": "Abilene"
},
"sport": {
"filterType": "text",
"type": "contains",
"filter": "Foot"
},
"score": {
"filterType": "number",
"type": "lessThan",
"filter": 50
},
"hired_date": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"availability": [
{
"id": "Confirmed",
"name": "Confirmed"
},
{
"id": "Unconfirmed",
"name": "Unconfirmed"
}
],
"instagram": {
"filterType": "number",
"type": "greaterThan",
"filter": 100
},
"tiktok": {
"filterType": "number",
"type": "greaterThan",
"filter": 0
},
"twitter": {
"filterType": "number",
"type": "equals",
"filter": 1
},
"deliverable_name": {
"filterType": "text",
"type": "contains",
"filter": "Instagram Post"
},
"deliverable_type": {
"filterType": "text",
"type": "contains",
"filter": "Video"
},
"deliverable_due_date": {
"filterType": "date",
"type": "lessThan",
"dateFrom": "2025-12-31"
},
"deliverable_status": [
{
"id": "Needs Approval",
"name": "Needs Approval"
},
{
"id": "Approved",
"name": "Approved"
}
],
"deliverable_live_link": {
"filterType": "text",
"type": "contains",
"filter": "instagram.com"
},
"file_name": {
"filterType": "text",
"type": "contains",
"filter": ".mp4"
},
"file_preview": [
{
"id": "Preview",
"name": "Preview"
},
{
"id": "No Preview",
"name": "No Preview"
}
],
"file_uploaded_at": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"file_uploaded_by": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"revision_comments": {
"filterType": "text",
"type": "contains",
"filter": "please redo"
},
"file_status": [
{
"id": "Revision Requested",
"name": "Revision Requested"
},
{
"id": "Voided",
"name": "Voided"
}
]
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
token: 'abc123def456',
page: 1,
limit: 15,
athlete_id: null,
date_filter_range: 'All',
sort_column: 'hired_date',
sort_order: 'desc',
timezone_diff: 5.5,
filter: {
athlete: {filterType: 'text', type: 'contains', filter: 'rehan'},
university: {filterType: 'text', type: 'contains', filter: 'Abilene'},
sport: {filterType: 'text', type: 'contains', filter: 'Foot'},
score: {filterType: 'number', type: 'lessThan', filter: 50},
hired_date: {
filterType: 'date',
type: 'inRange',
dateFrom: '2025-10-01',
dateTo: '2025-10-31'
},
availability: [{id: 'Confirmed', name: 'Confirmed'}, {id: 'Unconfirmed', name: 'Unconfirmed'}],
instagram: {filterType: 'number', type: 'greaterThan', filter: 100},
tiktok: {filterType: 'number', type: 'greaterThan', filter: 0},
twitter: {filterType: 'number', type: 'equals', filter: 1},
deliverable_name: {filterType: 'text', type: 'contains', filter: 'Instagram Post'},
deliverable_type: {filterType: 'text', type: 'contains', filter: 'Video'},
deliverable_due_date: {filterType: 'date', type: 'lessThan', dateFrom: '2025-12-31'},
deliverable_status: [
{id: 'Needs Approval', name: 'Needs Approval'},
{id: 'Approved', name: 'Approved'}
],
deliverable_live_link: {filterType: 'text', type: 'contains', filter: 'instagram.com'},
file_name: {filterType: 'text', type: 'contains', filter: '.mp4'},
file_preview: [{id: 'Preview', name: 'Preview'}, {id: 'No Preview', name: 'No Preview'}],
file_uploaded_at: {
filterType: 'date',
type: 'inRange',
dateFrom: '2025-10-01',
dateTo: '2025-10-31'
},
file_uploaded_by: {filterType: 'text', type: 'contains', filter: 'rehan'},
revision_comments: {filterType: 'text', type: 'contains', filter: 'please redo'},
file_status: [
{id: 'Revision Requested', name: 'Revision Requested'},
{id: 'Voided', name: 'Voided'}
]
}
})
};
fetch('http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'token' => 'abc123def456',
'page' => 1,
'limit' => 15,
'athlete_id' => null,
'date_filter_range' => 'All',
'sort_column' => 'hired_date',
'sort_order' => 'desc',
'timezone_diff' => 5.5,
'filter' => [
'athlete' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'rehan'
],
'university' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Abilene'
],
'sport' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Foot'
],
'score' => [
'filterType' => 'number',
'type' => 'lessThan',
'filter' => 50
],
'hired_date' => [
'filterType' => 'date',
'type' => 'inRange',
'dateFrom' => '2025-10-01',
'dateTo' => '2025-10-31'
],
'availability' => [
[
'id' => 'Confirmed',
'name' => 'Confirmed'
],
[
'id' => 'Unconfirmed',
'name' => 'Unconfirmed'
]
],
'instagram' => [
'filterType' => 'number',
'type' => 'greaterThan',
'filter' => 100
],
'tiktok' => [
'filterType' => 'number',
'type' => 'greaterThan',
'filter' => 0
],
'twitter' => [
'filterType' => 'number',
'type' => 'equals',
'filter' => 1
],
'deliverable_name' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Instagram Post'
],
'deliverable_type' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'Video'
],
'deliverable_due_date' => [
'filterType' => 'date',
'type' => 'lessThan',
'dateFrom' => '2025-12-31'
],
'deliverable_status' => [
[
'id' => 'Needs Approval',
'name' => 'Needs Approval'
],
[
'id' => 'Approved',
'name' => 'Approved'
]
],
'deliverable_live_link' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'instagram.com'
],
'file_name' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => '.mp4'
],
'file_preview' => [
[
'id' => 'Preview',
'name' => 'Preview'
],
[
'id' => 'No Preview',
'name' => 'No Preview'
]
],
'file_uploaded_at' => [
'filterType' => 'date',
'type' => 'inRange',
'dateFrom' => '2025-10-01',
'dateTo' => '2025-10-31'
],
'file_uploaded_by' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'rehan'
],
'revision_comments' => [
'filterType' => 'text',
'type' => 'contains',
'filter' => 'please redo'
],
'file_status' => [
[
'id' => 'Revision Requested',
'name' => 'Revision Requested'
],
[
'id' => 'Voided',
'name' => 'Voided'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker"
payload := strings.NewReader("{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost/mogl/mogl-backend/api/external/getExternalJobCampaignTracker")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"abc123def456\",\n \"page\": 1,\n \"limit\": 15,\n \"athlete_id\": null,\n \"date_filter_range\": \"All\",\n \"sort_column\": \"hired_date\",\n \"sort_order\": \"desc\",\n \"timezone_diff\": 5.5,\n \"filter\": {\n \"athlete\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"university\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Abilene\"\n },\n \"sport\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Foot\"\n },\n \"score\": {\n \"filterType\": \"number\",\n \"type\": \"lessThan\",\n \"filter\": 50\n },\n \"hired_date\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"availability\": [\n {\n \"id\": \"Confirmed\",\n \"name\": \"Confirmed\"\n },\n {\n \"id\": \"Unconfirmed\",\n \"name\": \"Unconfirmed\"\n }\n ],\n \"instagram\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 100\n },\n \"tiktok\": {\n \"filterType\": \"number\",\n \"type\": \"greaterThan\",\n \"filter\": 0\n },\n \"twitter\": {\n \"filterType\": \"number\",\n \"type\": \"equals\",\n \"filter\": 1\n },\n \"deliverable_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Instagram Post\"\n },\n \"deliverable_type\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"Video\"\n },\n \"deliverable_due_date\": {\n \"filterType\": \"date\",\n \"type\": \"lessThan\",\n \"dateFrom\": \"2025-12-31\"\n },\n \"deliverable_status\": [\n {\n \"id\": \"Needs Approval\",\n \"name\": \"Needs Approval\"\n },\n {\n \"id\": \"Approved\",\n \"name\": \"Approved\"\n }\n ],\n \"deliverable_live_link\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"instagram.com\"\n },\n \"file_name\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \".mp4\"\n },\n \"file_preview\": [\n {\n \"id\": \"Preview\",\n \"name\": \"Preview\"\n },\n {\n \"id\": \"No Preview\",\n \"name\": \"No Preview\"\n }\n ],\n \"file_uploaded_at\": {\n \"filterType\": \"date\",\n \"type\": \"inRange\",\n \"dateFrom\": \"2025-10-01\",\n \"dateTo\": \"2025-10-31\"\n },\n \"file_uploaded_by\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"rehan\"\n },\n \"revision_comments\": {\n \"filterType\": \"text\",\n \"type\": \"contains\",\n \"filter\": \"please redo\"\n },\n \"file_status\": [\n {\n \"id\": \"Revision Requested\",\n \"name\": \"Revision Requested\"\n },\n {\n \"id\": \"Voided\",\n \"name\": \"Voided\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyBody
External job link token (required by middleware).
"abc123def456"
Page number (default 1).
1
Items per page, max 100 (default 12).
15
Filter to a single athlete ID.
null
Date range: All, last_30_days, last_week, this_week, or MM/DD/YYYY-MM/DD/YYYY.
"All"
Column to sort by (e.g. hired_date, athlete, score).
"hired_date"
asc, desc, ASC, DESC "desc"
Client timezone offset (hours).
5.5
AG-Grid style column filters. Each key is a column name; the value is either a text/number/date filter object ({filterType, type, filter | dateFrom, dateTo}) or an array of {id, name} entries for enum-style columns (availability, deliverable_status, file_preview, file_status).
{
"athlete": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"university": {
"filterType": "text",
"type": "contains",
"filter": "Abilene"
},
"sport": {
"filterType": "text",
"type": "contains",
"filter": "Foot"
},
"score": {
"filterType": "number",
"type": "lessThan",
"filter": 50
},
"hired_date": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"availability": [
{ "id": "Confirmed", "name": "Confirmed" },
{
"id": "Unconfirmed",
"name": "Unconfirmed"
}
],
"instagram": {
"filterType": "number",
"type": "greaterThan",
"filter": 100
},
"tiktok": {
"filterType": "number",
"type": "greaterThan",
"filter": 0
},
"twitter": {
"filterType": "number",
"type": "equals",
"filter": 1
},
"deliverable_name": {
"filterType": "text",
"type": "contains",
"filter": "Instagram Post"
},
"deliverable_type": {
"filterType": "text",
"type": "contains",
"filter": "Video"
},
"deliverable_due_date": {
"filterType": "date",
"type": "lessThan",
"dateFrom": "2025-12-31"
},
"deliverable_status": [
{
"id": "Needs Approval",
"name": "Needs Approval"
},
{ "id": "Approved", "name": "Approved" }
],
"deliverable_live_link": {
"filterType": "text",
"type": "contains",
"filter": "instagram.com"
},
"file_name": {
"filterType": "text",
"type": "contains",
"filter": ".mp4"
},
"file_preview": [
{ "id": "Preview", "name": "Preview" },
{ "id": "No Preview", "name": "No Preview" }
],
"file_uploaded_at": {
"filterType": "date",
"type": "inRange",
"dateFrom": "2025-10-01",
"dateTo": "2025-10-31"
},
"file_uploaded_by": {
"filterType": "text",
"type": "contains",
"filter": "rehan"
},
"revision_comments": {
"filterType": "text",
"type": "contains",
"filter": "please redo"
},
"file_status": [
{
"id": "Revision Requested",
"name": "Revision Requested"
},
{ "id": "Voided", "name": "Voided" }
]
}
Response
Campaign Tracker paginated list (hired athletes + deliverable/file merge)