> ## Documentation Index
> Fetch the complete documentation index at: https://developer.mogl.online/llms.txt
> Use this file to discover all available pages before exploring further.

# Create or edit a job/deal

> Create (isEdit=0) or edit (isEdit=1) a job. Uses nested objects for different sections of the job form. If editing a job with hired athletes, only deliverable due dates are updated.



## OpenAPI

````yaml /storage/api-docs/api-docs.json post /add-job
openapi: 3.0.0
info:
  title: MOGL Core API
  description: >-
    MOGL Platform Core API — powering athlete NIL deals, brand partnerships,
    agent management, payments, messaging, and more.
     *
     * ## Authentication
     * - **JWT Bearer Token**: Most endpoints require a Bearer token obtained via `/api/login`.
     * - **Server-to-Server API Key**: Internal/lambda/cron endpoints use an `X-API-KEY` header.
     *
     * ## Rate Limiting
     * - Registration & login endpoints: 4–15 requests per minute
     * - Public/influencer endpoints: 200 requests per minute
     * - Authenticated endpoints: standard Laravel throttle
  version: 1.0.0
servers:
  - url: http://localhost/mogl/mogl-backend/api
    description: Local
  - url: https://dev-api.mogl.online/api
    description: Dev
  - url: https://staging-api.mogl.online/api
    description: Staging
  - url: https://api.mogl.online/api
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Login, registration, password reset
  - name: User Registration - Common
    description: Common user registration & email check
  - name: User Registration - Athlete
    description: Athlete registration & onboarding steps
  - name: User Registration - Partner
    description: Partner/Brand registration & onboarding steps
  - name: User Registration - Agent
    description: Agent registration & onboarding steps
  - name: User Registration - Fan
    description: Fan registration & onboarding steps
  - name: User Profile
    description: User profile management, settings, social media
  - name: Athlete
    description: 'Athlete-specific endpoints: search, details, availability'
  - name: Athlete - Availability Confirmation
    description: Post-hiring availability confirmation workflow
  - name: Athlete - NIL Feed
    description: Athlete NIL feed and partner search
  - name: Athlete - AI Assistant
    description: AI-powered job assistant for athletes — chat and conversation history
  - name: Partner
    description: Partner/Brand-specific endpoints
  - name: Partner - External Job
    description: External job link & applicant management
  - name: Partner - Deliverable Report
    description: Deliverable detail reports for brands
  - name: Partner - Screening Questions
    description: Screening question reports
  - name: Partner - Contract Management
    description: Brand contract management with athletes
  - name: Partner - Content Library
    description: Brand content library for deliverable assets
  - name: Agent
    description: Agent profile, athlete management, contracts
  - name: Agent - Athletes
    description: Agent-athlete relationship management
  - name: Agent - Stripe
    description: Agent payment methods & billing via Stripe
  - name: Agent - Contracts
    description: Agent athlete contract management
  - name: Agent - Availability Confirmation
    description: Agent managing athlete job availability
  - name: Jobs
    description: Job/deal CRUD, search, invitations, hiring, deliverables
  - name: Deals
    description: Deal listing, my deals, bulk operations
  - name: Deal Folder
    description: >-
      Deal folder file workflow — uploads, replacements, approvals, revisions,
      comments. Accessible by athlete, partner/brand, agent, and iOS clients
      (per-action authorisation enforced server-side).
  - name: Deal Folder iOS API
    description: >-
      iOS-only direct-to-S3 multipart upload endpoints for deal folder files
      (initiate/complete for new uploads and replacements). Web clients should
      use the standard `Deal Folder` upload/replace endpoints instead.
  - name: Chat
    description: Messaging, chat contacts, notifications
  - name: Notifications
    description: Notification preferences, in-app notifications
  - name: Payments
    description: Stripe payments, payment history, cards, bulk pay
  - name: Subscription
    description: Brand subscription plans & management
  - name: Public Pages
    description: Public content endpoints (no auth required)
  - name: Public - Influencer/SEO
    description: Public influencer discovery, sitemaps, directories
  - name: Services
    description: Athlete service marketplace
  - name: iOS Device
    description: iOS device tokens, live activities
  - name: Onboarding Tutorial
    description: Onboarding tutorial progress
  - name: MOGL Rosters
    description: Roster management & display
  - name: Internal / Cron
    description: Server-to-server and cron job endpoints
  - name: Affiliate
    description: Athlete affiliate links & tracking
paths:
  /add-job:
    post:
      tags:
        - Jobs
      summary: Create or edit a job/deal
      description: >-
        Create (isEdit=0) or edit (isEdit=1) a job. Uses nested objects for
        different sections of the job form. If editing a job with hired
        athletes, only deliverable due dates are updated.
      operationId: addJob
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                isEdit:
                  description: 0 = create, 1 = edit
                  type: integer
                  example: 0
                id:
                  description: Job ID (required for edit)
                  type: integer
                  example: 1
                  nullable: true
                jobType:
                  description: Job type identifier
                  type: string
                  example: short-term
                jobFor:
                  description: 'Target audience: ''All'' or ''Univ'''
                  type: string
                  example: All
                  nullable: true
                name:
                  description: Agreement signer name (create only)
                  type: string
                  example: Test skl
                  nullable: true
                fbp:
                  description: Facebook browser ID (frontend)
                  type: string
                  example: fb.1.1771826224285.758247182288672553
                  nullable: true
                require_proof_of_work:
                  description: Require proof of work
                  type: boolean
                  example: true
                  nullable: true
                dueDateUpdateOnly:
                  description: Frontend hint for due-date-only edits
                  type: string
                  enum:
                    - 'Yes'
                    - 'No'
                  example: 'No'
                  nullable: true
                addTitleAndDescription:
                  properties:
                    jobName:
                      description: Job title
                      type: string
                      example: Test job dev 002
                    jobDescription:
                      description: HTML job description
                      type: string
                      example: <p>Test job description</p>
                    levelOfExperience:
                      description: Experience level
                      type: string
                      example: ''
                      nullable: true
                    skillsAndExpertise:
                      type: array
                      items:
                        type: object
                      example: []
                      nullable: true
                    additionalSkills:
                      type: array
                      items:
                        type: object
                      example: []
                      nullable: true
                    is_exclusive:
                      description: Exclusive deal flag
                      type: string
                      enum:
                        - 'Y'
                        - 'N'
                      example: 'N'
                    specifics_exclusive_deal:
                      description: Exclusivity details
                      type: string
                      example: ''
                      nullable: true
                    totalCompensation:
                      description: Frontend-computed total (not stored directly)
                      type: string
                      example: '10.00'
                      nullable: true
                    numberOfPeopleNeedForJob:
                      description: Frontend copy of addVisiblity field
                      type: string
                      enum:
                        - One Athlete
                        - More
                      example: More
                      nullable: true
                    jobCategoryName:
                      description: Boolean flags for category selection (frontend state)
                      type: array
                      items:
                        type: boolean
                      example:
                        - false
                        - true
                        - true
                        - true
                        - false
                        - false
                        - true
                        - true
                        - false
                        - false
                        - false
                        - false
                        - false
                        - false
                        - false
                        - false
                      nullable: true
                    jobCategoryNames:
                      description: Category objects with skills (frontend metadata)
                      type: array
                      items:
                        properties:
                          id:
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: Category
                          skill_name:
                            type: array
                            items:
                              properties:
                                id:
                                  type: integer
                                  example: 1
                                name:
                                  type: string
                                  example: Skill
                                job_category_id:
                                  type: integer
                                  example: 1
                              type: object
                            example: []
                        type: object
                      example: []
                      nullable: true
                    jobCategoriesSelected:
                      description: Selected category IDs (frontend state)
                      type: array
                      items:
                        type: integer
                      example:
                        - 14
                        - 15
                        - 35
                        - 17
                        - 37
                      nullable: true
                    deliverableList:
                      type: array
                      items:
                        properties:
                          id:
                            description: Milestone ID (present on edit)
                            type: integer
                            example: 1
                            nullable: true
                          name:
                            description: Deliverable name (e.g. '1st Deliverable')
                            type: string
                            example: 1st Deliverable
                          price:
                            description: Price (used when payment_mode=C)
                            type: number
                            example: 100
                          payment_mode:
                            description: C=Cash, P=Product
                            type: string
                            enum:
                              - C
                              - P
                            example: C
                          product_detail:
                            description: Product details (used when payment_mode=P)
                            type: string
                            example: Product details
                            nullable: true
                          description:
                            description: HTML deliverable description
                            type: string
                            example: <p>Deliverable details</p>
                          deliverable_type_id:
                            description: Deliverable type ID
                            type: integer
                            example: 1
                            nullable: true
                          due_date:
                            description: Specific due date
                            type: string
                            format: date-time
                            example: '2026-04-15T12:00:00Z'
                            nullable: true
                          due_date_number:
                            description: Due date number (e.g. 4)
                            type: integer
                            example: 4
                            nullable: true
                          due_date_type:
                            description: Due date unit
                            type: string
                            enum:
                              - Day
                              - Week
                              - Month
                            example: Week
                            nullable: true
                          beginning_date:
                            description: >-
                              Deliverable start date (UTC, cannot be >15min in
                              past)
                            type: string
                            format: date-time
                            example: '2026-04-01T12:00:00Z'
                            nullable: true
                          when_deliverable_due:
                            description: 'Frontend: how due date is specified'
                            type: string
                            enum:
                              - time_frame
                              - specific_date
                            example: time_frame
                            nullable: true
                          earliest_due_date:
                            description: 'Frontend: earliest allowed due date'
                            type: string
                            format: date-time
                            example: '2026-04-10T12:00:00Z'
                            nullable: true
                        type: object
                      example: []
                    additionalAttachment:
                      description: Base64-encoded document attachments
                      type: array
                      items:
                        type: string
                      example: []
                      nullable: true
                    removedImg:
                      description: 'Frontend state: removed image tracking'
                      type: array
                      items:
                        type: integer
                      example: []
                      nullable: true
                  type: object
                addDetails:
                  properties:
                    projectType:
                      description: Project type identifier
                      type: string
                      example: '1'
                    screeningQuestions:
                      description: Frontend screening question objects
                      type: array
                      items:
                        properties:
                          id:
                            type: string
                            example: '1'
                          questions:
                            type: string
                            example: Why are you interested?
                            nullable: true
                        type: object
                      example: []
                      nullable: true
                    questionsAsked:
                      description: Screening questions (backend reads this)
                      type: array
                      items:
                        properties:
                          questions:
                            type: string
                            example: Why are you interested?
                        type: object
                      example: []
                      nullable: true
                    additionalAttachment:
                      description: Base64-encoded detail documents
                      type: array
                      items:
                        type: string
                      example: []
                      nullable: true
                    require_proof_of_work:
                      description: Frontend copy of root-level field
                      type: boolean
                      example: true
                      nullable: true
                  type: object
                addExpertise:
                  description: >-
                    Job categories and skills (backend reads skillsAndExpertise
                    and additionalSkills from here)
                  properties:
                    skillsAndExpertise:
                      type: array
                      items:
                        properties:
                          id:
                            description: Category ID
                            type: integer
                            example: 1
                          name:
                            type: string
                            example: Marketing
                          skill_name:
                            description: >-
                              Skills within category (empty array if no
                              sub-skills)
                            type: array
                            items:
                              properties:
                                id:
                                  description: Skill ID
                                  type: integer
                                  example: 1
                                job_category_id:
                                  type: integer
                                  example: 1
                                name:
                                  type: string
                                  example: Social media
                                status:
                                  type: string
                                  example: active
                              type: object
                            example: []
                        type: object
                      example: []
                      nullable: true
                    additionalSkills:
                      type: array
                      items:
                        properties:
                          label:
                            type: string
                            example: Custom skill
                        type: object
                      example: []
                      nullable: true
                    jobCategoriesSelected:
                      description: 'Frontend state: selected category IDs'
                      type: array
                      items:
                        type: integer
                      example:
                        - 14
                        - 15
                      nullable: true
                  type: object
                addLocation:
                  properties:
                    talentLeague:
                      type: string
                      example: null
                      nullable: true
                    talentState:
                      type: string
                      example: Los Angeles, CA, USA
                      nullable: true
                    poc_name:
                      description: Point of contact name
                      type: string
                      example: Test user
                      nullable: true
                    poc_email:
                      description: Point of contact email
                      type: string
                      example: testpartner@gmail.com
                      nullable: true
                    location_utc_offset:
                      description: JSON-encoded {lat, lng} object
                      type: string
                      example: '{}'
                      nullable: true
                    university:
                      description: University IDs
                      type: array
                      items:
                        type: integer
                      example:
                        - 1
                        - 222
                      nullable: true
                    universityName:
                      description: Frontend display name
                      type: string
                      example: Example University
                      nullable: true
                    division:
                      description: Division IDs
                      type: array
                      items:
                        type: integer
                      nullable: true
                    conference:
                      description: Conference IDs
                      type: array
                      items:
                        type: integer
                      nullable: true
                    sports:
                      description: Sport category IDs
                      type: array
                      items:
                        type: integer
                      example:
                        - 24
                        - 18
                        - 10
                        - 30
                      nullable: true
                    skills:
                      description: Skill IDs
                      type: array
                      items:
                        type: integer
                      nullable: true
                    gender:
                      description: Gender filter values
                      type: array
                      items:
                        type: string
                      example:
                        - Male
                        - Female
                      nullable: true
                    instagram_min:
                      type: integer
                      nullable: true
                    instagram_max:
                      type: integer
                      nullable: true
                    tiktok_min:
                      type: integer
                      nullable: true
                    tiktok_max:
                      type: integer
                      nullable: true
                    x_min:
                      type: integer
                      nullable: true
                    x_max:
                      type: integer
                      nullable: true
                  type: object
                addBudgetaddTitle:
                  properties:
                    paymentTypePreference:
                      description: e.g. 'Fixed'
                      type: string
                      example: Fixed
                    estimateBudget:
                      description: e.g. 'notDef'
                      type: string
                      example: notDef
                    hourlyRateFrom:
                      description: Total compensation amount
                      type: string
                      example: '10.00'
                      nullable: true
                    hourlyRateTo:
                      type: string
                      example: 0
                      nullable: true
                    monthlyPaymentPreference:
                      description: e.g. 'lessThan1'
                      type: string
                      example: lessThan1
                      nullable: true
                  type: object
                addVisiblity:
                  properties:
                    jobViewPreference:
                      description: e.g. 'All MOGL Athletes', 'Invite only'
                      type: string
                      example: All MOGL Athletes
                    numberOfPeopleNeedForJob:
                      type: string
                      enum:
                        - One Athlete
                        - More
                      example: More
                    preferPersonOrteam:
                      type: array
                      items:
                        type: object
                      example: []
                      nullable: true
                    preferTalent:
                      type: string
                      example: ''
                      nullable: true
                    talentPreference:
                      type: array
                      items:
                        properties:
                          preference:
                            type: string
                            example: experienced
                            nullable: true
                        type: object
                      example: []
                      nullable: true
                  type: object
                remainimage:
                  description: 'Edit only: document IDs to delete'
                  type: array
                  items:
                    type: integer
                  example: []
                  nullable: true
              type: object
      responses:
        '200':
          description: Job created/updated
        '401':
          description: Unauthenticated
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        JWT Bearer token authentication. Use the /api/login endpoint to obtain a
        token.
      scheme: bearer
      bearerFormat: JWT

````