Milestone-wise deal folder content for one athlete+job
curl --request POST \
--url http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"athlete_id": 42,
"job_id": 100
}
'import requests
url = "http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details"
payload = {
"athlete_id": 42,
"job_id": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({athlete_id: 42, job_id: 100})
};
fetch('http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details', 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/deal-folder/athlete-job-details",
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([
'athlete_id' => 42,
'job_id' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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/deal-folder/athlete-job-details"
payload := strings.NewReader("{\n \"athlete_id\": 42,\n \"job_id\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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/deal-folder/athlete-job-details")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"athlete_id\": 42,\n \"job_id\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"athlete_id\": 42,\n \"job_id\": 100\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"deal_folder": {
"id": 12,
"is_active": true,
"activated_at": "2026-04-01T12:00:00Z",
"deal_folder_status": "Needs Approval",
"job": {
"id": 100,
"name": "Spring NIL Campaign",
"assets_files": [
{
"id": 1,
"type": "brief",
"file_name": "brief.pdf",
"file_url": "https://cdn.mogl.online/.../brief.pdf"
}
],
"total_unread_comment_count": 3
},
"partner": {
"id": 7,
"name": "Acme Brand",
"profile_photo": "https://cdn.mogl.online/.../partner.jpg",
"category": "Apparel"
},
"athlete": {
"id": 42,
"name": "Jane Doe",
"profile_photo": "https://cdn.mogl.online/.../athlete.jpg",
"sport_name": "Basketball",
"college_name": "UCLA"
},
"milestones": [
{
"milestone_athlete_rel_id": 88,
"milestone_id": 200,
"milestone_name": "1st Deliverable",
"deliverable_type_name": "Instagram Post",
"description": "<p>Post a 30s reel</p>",
"price": 100,
"payment_mode": "C",
"due_date": "2026-04-15T12:00:00Z",
"due_date_number": 4,
"due_date_type": "Week",
"due_date_athlete": "2026-04-15T12:00:00Z",
"is_paid": "N",
"payment_status": "pending",
"amount_paid": 0,
"deal_folder_file_status": "Needs Approval",
"unread_comment_count": 1,
"files": [
{
"id": 5,
"slot_number": 1,
"status": 1,
"status_label": "Needs Approval",
"unread_comment_count": 1,
"uploaded_by": {
"id": 42,
"name": "Jane Doe"
},
"current_version": {
"id": 11,
"file_name": "reel.mp4",
"file_url": "https://cdn.mogl.online/.../reel.mp4",
"file_size": 8421376,
"file_mime_type": "video/mp4",
"version_number": 1,
"uploaded_at": "2026-04-01T12:00:00Z"
},
"created_at": "2026-04-01T12:00:00Z",
"updated_at": "2026-04-01T12:05:00Z"
}
]
}
]
}
}
}{
"message": "Unauthenticated."
}{
"message": "The given data was invalid.",
"errors": {}
}Milestone-wise deal folder content for one athlete+job
Returns the full deal folder payload for one athlete on one job, organised by milestone, with all file slots, current versions, status labels, and unread comment counts. Accessible by the athlete, the brand of the job, or an agent representing the athlete.
POST
/
deal-folder
/
athlete-job-details
Milestone-wise deal folder content for one athlete+job
curl --request POST \
--url http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"athlete_id": 42,
"job_id": 100
}
'import requests
url = "http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details"
payload = {
"athlete_id": 42,
"job_id": 100
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({athlete_id: 42, job_id: 100})
};
fetch('http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details', 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/deal-folder/athlete-job-details",
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([
'athlete_id' => 42,
'job_id' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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/deal-folder/athlete-job-details"
payload := strings.NewReader("{\n \"athlete_id\": 42,\n \"job_id\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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/deal-folder/athlete-job-details")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"athlete_id\": 42,\n \"job_id\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost/mogl/mogl-backend/api/deal-folder/athlete-job-details")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"athlete_id\": 42,\n \"job_id\": 100\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"deal_folder": {
"id": 12,
"is_active": true,
"activated_at": "2026-04-01T12:00:00Z",
"deal_folder_status": "Needs Approval",
"job": {
"id": 100,
"name": "Spring NIL Campaign",
"assets_files": [
{
"id": 1,
"type": "brief",
"file_name": "brief.pdf",
"file_url": "https://cdn.mogl.online/.../brief.pdf"
}
],
"total_unread_comment_count": 3
},
"partner": {
"id": 7,
"name": "Acme Brand",
"profile_photo": "https://cdn.mogl.online/.../partner.jpg",
"category": "Apparel"
},
"athlete": {
"id": 42,
"name": "Jane Doe",
"profile_photo": "https://cdn.mogl.online/.../athlete.jpg",
"sport_name": "Basketball",
"college_name": "UCLA"
},
"milestones": [
{
"milestone_athlete_rel_id": 88,
"milestone_id": 200,
"milestone_name": "1st Deliverable",
"deliverable_type_name": "Instagram Post",
"description": "<p>Post a 30s reel</p>",
"price": 100,
"payment_mode": "C",
"due_date": "2026-04-15T12:00:00Z",
"due_date_number": 4,
"due_date_type": "Week",
"due_date_athlete": "2026-04-15T12:00:00Z",
"is_paid": "N",
"payment_status": "pending",
"amount_paid": 0,
"deal_folder_file_status": "Needs Approval",
"unread_comment_count": 1,
"files": [
{
"id": 5,
"slot_number": 1,
"status": 1,
"status_label": "Needs Approval",
"unread_comment_count": 1,
"uploaded_by": {
"id": 42,
"name": "Jane Doe"
},
"current_version": {
"id": 11,
"file_name": "reel.mp4",
"file_url": "https://cdn.mogl.online/.../reel.mp4",
"file_size": 8421376,
"file_mime_type": "video/mp4",
"version_number": 1,
"uploaded_at": "2026-04-01T12:00:00Z"
},
"created_at": "2026-04-01T12:00:00Z",
"updated_at": "2026-04-01T12:05:00Z"
}
]
}
]
}
}
}{
"message": "Unauthenticated."
}{
"message": "The given data was invalid.",
"errors": {}
}Authorizations
JWT Bearer token authentication. Use the /api/login endpoint to obtain a token.
Body
application/json