Skip to main content
POST
/
deal-folder
/
{dealFolder}
/
files
/
complete
iOS — Complete direct-to-S3 multipart upload (new file slot)
curl --request POST \
  --url http://localhost/mogl/mogl-backend/api/deal-folder/{dealFolder}/files/complete \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "session_id": 501,
  "parts": [
    {
      "part_number": 1,
      "etag": "\"9bb58f26192e4ba00f01e2e7b136bbd8\""
    }
  ]
}
'
{
  "status": "success",
  "message": "File uploaded successfully.",
  "data": {
    "id": 5,
    "deal_folder_id": 12,
    "milestone_athlete_rel_id": 88,
    "slot_number": 1,
    "status": 1,
    "status_label": "Needs Approval",
    "uploaded_by_user_id": 42,
    "current_version": {
      "id": 11,
      "deal_folder_file_id": 5,
      "file_path": "deal-folders/12/slot-1/v1/foo.mp4",
      "file_name": "foo.mp4",
      "file_size": 8421376,
      "file_mime_type": "video/mp4",
      "thumbnail_path": null,
      "version_number": 1,
      "is_current": true,
      "uploaded_by_user_id": 42,
      "created_at": "2026-04-01T12:00:00Z",
      "updated_at": "2026-04-01T12:00:00Z"
    },
    "created_at": "2026-04-01T12:00:00Z",
    "updated_at": "2026-04-01T12:05:00Z",
    "deleted_at": null
  }
}

Authorizations

Authorization
string
header
required

JWT Bearer token authentication. Use the /api/login endpoint to obtain a token.

Path Parameters

dealFolder
integer
required

Deal folder ID

Example:

12

Body

application/json
session_id
integer
required

session_id returned from /initiate.

Example:

501

parts
object[]
required

One entry per uploaded part. Order does not matter; the server sorts by part_number before calling S3 CompleteMultipartUpload.

Minimum array length: 1

Response

File finalised

status
string
Example:

"success"

message
string
Example:

"File uploaded successfully."

data
object

A Deal Folder file slot (workflow unit). The integer status field and its rolled-up string equivalents (deal_folder_file_status at the milestone level, deal_folder_status at the folder level) all draw from the same App\Enums\DealFolderStatus values.