> ## 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.

# Read a represented athlete's profile

> What the Edit Profile modal prefills its inputs with (ENG-1474). The counterpart to the PUT below: every field that endpoint accepts is readable here, so the modal never shows a value it cannot save back. Authorization runs through the active agent_athletes relationship, so an agent can only read an athlete on their own roster, and an athlete they do not represent is reported the same way as one that does not exist.
     *
     * The response is the same body `POST /getAthleteDetail` returns for the athlete's own edit screen, produced by the same resource, so both sides share one field mapping. Two names differ from the PUT: date of birth is returned as `DOB` and hometown as `location`.
     *
     * Not returned: the athlete's password, and nothing here lets an agent reach their login.



## OpenAPI

````yaml /storage/api-docs/api-docs.json get /agent/athletes/{athleteId}/profile
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, conversation history, read
      state, and clarification drafts
  - name: Athlete - AI Waitlist
    description: AI Athlete Assistant waitlist status, social proof, and joining
  - 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 - Pay
    description: 'Agent-wide payout feed: money MOGL sends the agent through Stripe Express'
  - name: Agent - Contracts
    description: Agent athlete contract management
  - name: Agent - Availability Confirmation
    description: Agent managing athlete job availability
  - name: Agent - Roster Import
    description: >-
      CSV client list import through CSVBox (ENG-1619 / ENG-1702): session,
      CSVBox webhook, progress, row results, retry
  - name: Agent - Roster Pages
    description: >-
      ENG-1685: My Roster Link, public roster directory, public roster page, and
      roster SEO URL resolution. A roster is the agent's current linked
      athletes; nothing is stored separately.
  - 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: Internal / AI Assistant Tools
    description: >-
      Server-to-server Athlete Assistant tool gateway used by mogl-ai-service.
      Eight Laravel tools share POST /internal/ai-assistant/tools/{tool}.
      search_kb is Python-local and is not in this path enum.
  - name: Internal / QA Scenario Lab
    description: >-
      Feature-flagged DEV/STAGING-only endpoints called by the authorized Back
      Office QA Scenario Lab.
  - name: Affiliate
    description: Athlete affiliate links & tracking
  - name: Internal
    description: Internal
  - name: Public - Social Linking
    description: Public - Social Linking
paths:
  /agent/athletes/{athleteId}/profile:
    get:
      tags:
        - Agent - Athletes
      summary: Read a represented athlete's profile
      description: >-
        What the Edit Profile modal prefills its inputs with (ENG-1474). The
        counterpart to the PUT below: every field that endpoint accepts is
        readable here, so the modal never shows a value it cannot save back.
        Authorization runs through the active agent_athletes relationship, so an
        agent can only read an athlete on their own roster, and an athlete they
        do not represent is reported the same way as one that does not exist.
             *
             * The response is the same body `POST /getAthleteDetail` returns for the athlete's own edit screen, produced by the same resource, so both sides share one field mapping. Two names differ from the PUT: date of birth is returned as `DOB` and hometown as `location`.
             *
             * Not returned: the athlete's password, and nothing here lets an agent reach their login.
      operationId: agentGetAthleteProfile
      parameters:
        - name: athleteId
          in: path
          description: Athlete user id. Must be on the authenticated agent's roster.
          required: true
          schema:
            type: integer
            example: 28550
        - name: isJob
          in: query
          description: >-
            Whether to include the athlete's full job history in `jobs`. Off by
            default here because the modal never shows it and it is the one
            field that grows without bound. The key is always present and always
            an array.
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Athlete profile
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties:
                      id:
                        type: integer
                        example: 28550
                      first_name:
                        type: string
                        example: Ayden
                      last_name:
                        type: string
                        example: Syal
                      name:
                        type: string
                        example: Ayden Syal
                      email:
                        description: Read only. The PUT does not accept it.
                        type: string
                        example: ayden@example.edu
                      contact_number:
                        type: string
                        example: '4155551809'
                        nullable: true
                      jersey_no:
                        type: string
                        example: '15'
                        nullable: true
                      DOB:
                        description: Sent back to the PUT as `dob`.
                        type: string
                        format: date
                        example: '1998-04-29'
                        nullable: true
                      location:
                        description: The Hometown field.
                        type: string
                        example: Berkeley, CA, USA
                        nullable: true
                      is_private:
                        type: string
                        enum:
                          - 'Y'
                          - 'N'
                        example: 'N'
                        nullable: true
                      sport_category_id:
                        type: integer
                        example: 12
                        nullable: true
                      sport_category_name:
                        description: Display name for sport_category_id.
                        type: string
                        example: Football
                      bio:
                        type: string
                        example: Junior wide receiver.
                      highlights:
                        description: The Career Highlights field.
                        type: string
                        example: All-American NCAA D1AA 2023
                      university_id:
                        type: integer
                        example: 340
                        nullable: true
                      school:
                        description: Display name for university_id.
                        type: string
                        example: University of California
                      height:
                        description: >-
                          Total inches. The modal splits it into feet and
                          inches.
                        type: number
                        example: 70
                        nullable: true
                      weight:
                        description: Pounds.
                        type: number
                        example: 200
                        nullable: true
                      skills:
                        type: string
                        example: Cooking, Acting, Public Speaking
                      hat_size:
                        type: string
                        example: 7 1/2
                      shirt_size:
                        type: string
                        example: XL
                      pants_size:
                        type: string
                        example: '34'
                      shoes_size:
                        type: string
                        example: '11.5'
                      gender:
                        type: string
                        example: Male
                      expected_graduation_date:
                        type: string
                        example: '2027'
                      us_citizen:
                        type: string
                        enum:
                          - 'Y'
                          - 'N'
                        example: 'Y'
                      profile_photo:
                        description: >-
                          Changed through POST
                          /agent/athletes/{athleteId}/photo, not the PUT.
                        type: string
                        example: storage/images/profile_photo/28550.png
                        nullable: true
                      UserSocialMediaStatistics:
                        description: >-
                          Connected accounts and their follower counts. Changed
                          through the Link Social Media flow, not the PUT.
                        type: object
                        nullable: true
                      jobs:
                        description: Empty unless isJob=true.
                        type: array
                        items:
                          type: object
                        example: []
                    type: object
                type: object
        '400':
          description: The agent is not approved, or does not represent this athlete.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: You can only manage athletes you represent.
                  error_code:
                    type: string
                    enum:
                      - AGENT_NOT_APPROVED
                      - ATHLETE_NOT_LINKED
                    example: ATHLETE_NOT_LINKED
                type: object
      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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.