openapi: 3.0.3
info:
  title: 'Oman Academy API Documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'http://localhost'
tags:
  -
    name: Endpoints
    description: ''
paths:
  /api/user:
    get:
      summary: ''
      operationId: getApiUser
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Server Error'
                properties:
                  message:
                    type: string
                    example: 'Server Error'
      tags:
        - Endpoints
      security: []
  '/api/admin/courses/{course_id}/students':
    get:
      summary: ''
      operationId: getApiAdminCoursesCourse_idStudents
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/attendances:
    get:
      summary: ''
      operationId: getApiAdminAttendances
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminAttendances
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_no:
                  type: integer
                  description: ''
                  example: 17
                attendances:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      enrollment_id:
                        type: string
                        description: 'The <code>id</code> of an existing record in the enrollments table.'
                        example: consequatur
                      is_present:
                        type: string
                        description: ''
                        example: 1
                        enum:
                          - 0
                          - 1
                    required:
                      - enrollment_id
                      - is_present
              required:
                - session_no
                - attendances
      security: []
  /api/admin/attendances/today:
    get:
      summary: ''
      operationId: getApiAdminAttendancesToday
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/admin/cv-field-templates:
    get:
      summary: ''
      operationId: getApiAdminCvFieldTemplates
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminCvFieldTemplates
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  type: string
                  description: ''
                  example: Student
                  enum:
                    - Student
                    - Instructor
                    - Trainer
                templates:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: vmqeopfuudtdsufvyvddq
                      field_key:
                        type: string
                        description: 'Must match the regex /^[a-z_]+$/. Must not be greater than 255 characters.'
                        example: amniihfqcoynlazghdtqt
                      is_required:
                        type: boolean
                        description: ''
                        example: true
                      order:
                        type: integer
                        description: 'Must be at least 0.'
                        example: 80
                      placeholder:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: bajwbpilpmufinllwloau
                        nullable: true
                      is_active:
                        type: boolean
                        description: ''
                        example: false
                    required:
                      - label
                      - field_key
              required:
                - role
                - templates
      security: []
  '/api/admin/cv-field-templates/{id}':
    delete:
      summary: ''
      operationId: deleteApiAdminCvFieldTemplatesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the cv field template.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/cv-field-templates/update:
    post:
      summary: ''
      operationId: postApiAdminCvFieldTemplatesUpdate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                role:
                  type: string
                  description: ''
                  example: Student
                  enum:
                    - Student
                    - Instructor
                    - Trainer
                templates:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: vmqeopfuudtdsufvyvddq
                      field_key:
                        type: string
                        description: 'Must match the regex /^[a-z_]+$/. Must not be greater than 255 characters.'
                        example: amniihfqcoynlazghdtqt
                      is_required:
                        type: boolean
                        description: ''
                        example: true
                      order:
                        type: integer
                        description: 'Must be at least 0.'
                        example: 80
                      placeholder:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: bajwbpilpmufinllwloau
                        nullable: true
                      is_active:
                        type: boolean
                        description: ''
                        example: false
                    required:
                      - label
                      - field_key
              required:
                - role
                - templates
      security: []
  '/api/admin/cv-field-templates/{cvFieldTemplate_id}/toggle-activate':
    post:
      summary: ''
      operationId: postApiAdminCvFieldTemplatesCvFieldTemplate_idToggleActivate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: cvFieldTemplate_id
        description: 'The ID of the cvFieldTemplate.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/cvs:
    get:
      summary: 'Get all CVs with user information and answers'
      operationId: getAllCVsWithUserInformationAndAnswers
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/admin/cvs/{id}':
    get:
      summary: 'Get a specific CV with detailed answers'
      operationId: getASpecificCVWithDetailedAnswers
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the cv.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/cv:
    get:
      summary: ''
      operationId: getApiCv
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiCv
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/cv/update:
    post:
      summary: ''
      operationId: postApiCvUpdate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/contact:
    post:
      summary: ''
      operationId: postApiContact
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                last_name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: amniihfqcoynlazghdtqt
                email:
                  type: string
                  description: 'Must be a valid email address. Must not be greater than 255 characters.'
                  example: andreanne00@example.org
                phone:
                  type: string
                  description: 'Must not be greater than 15 characters.'
                  example: wbpilpmufinll
                message:
                  type: string
                  description: ''
                  example: consequatur
              required:
                - first_name
                - last_name
                - email
                - phone
                - message
      security: []
  /api/admin/search:
    get:
      summary: ''
      operationId: getApiAdminSearch
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: ''
                  example: null
                limit:
                  type: integer
                  description: 'Must be at least 1. Must not be greater than 100.'
                  example: 21
      security: []
  /api/search:
    get:
      summary: ''
      operationId: getApiSearch
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Search completed successfully'
                  data:
                    total_results: 0
                    query: ''
                    results: []
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Search completed successfully'
                  data:
                    type: object
                    properties:
                      total_results:
                        type: integer
                        example: 0
                      query:
                        type: string
                        example: ''
                      results:
                        type: array
                        example: []
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: ''
                  example: null
                limit:
                  type: integer
                  description: 'Must be at least 1. Must not be greater than 100.'
                  example: 21
      security: []
  /api/intros:
    get:
      summary: ''
      operationId: getApiIntros
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Intros fetched successfully'
                  data:
                    data: []
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Intros fetched successfully'
                  data:
                    type: object
                    properties:
                      data:
                        type: array
                        example: []
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiIntros
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title_ar:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                title_en:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: amniihfqcoynlazghdtqt
                  nullable: true
                description_ar:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                description_en:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                section:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                details:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: object
                    nullable: true
                    properties:
                      title_ar:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: mqeopfuudtdsufvyvddqa
                        nullable: true
                      title_en:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: mniihfqcoynlazghdtqtq
                        nullable: true
                      description_ar:
                        type: string
                        description: ''
                        example: consequatur
                        nullable: true
                      description_en:
                        type: string
                        description: ''
                        example: consequatur
                        nullable: true
                      image:
                        type: string
                        format: binary
                        description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                        nullable: true
      security: []
  '/api/intros/{id}':
    delete:
      summary: ''
      operationId: deleteApiIntrosId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the intro.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/intros/{intro_id}':
    post:
      summary: ''
      operationId: postApiIntrosIntro_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title_ar:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                title_en:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: amniihfqcoynlazghdtqt
                  nullable: true
                description_ar:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                description_en:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                section:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                details:
                  type: array
                  description: ''
                  example: null
                  items:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: string
                        description: 'This field is required when <code>details</code> is present. Must not be greater than 255 characters.'
                        example: mqeopfuudtdsufvyvddqa
                      title_ar:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: mniihfqcoynlazghdtqtq
                        nullable: true
                      title_en:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: xbajwbpilpmufinllwloa
                        nullable: true
                      description_ar:
                        type: string
                        description: ''
                        example: consequatur
                        nullable: true
                      description_en:
                        type: string
                        description: ''
                        example: consequatur
                        nullable: true
                      image:
                        type: string
                        format: binary
                        description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                        nullable: true
      security: []
    parameters:
      -
        in: path
        name: intro_id
        description: 'The ID of the intro.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/settings:
    get:
      summary: ''
      operationId: getApiAdminSettings
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Settings retrieved successfully'
                  data:
                    facebook: ''
                    x: ''
                    tiktok: ''
                    snapchat: ''
                    email: ''
                    whatsapp: ''
                    instagram: ''
                    youtube: ''
                    phone: ''
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Settings retrieved successfully'
                  data:
                    type: object
                    properties:
                      facebook:
                        type: string
                        example: ''
                      x:
                        type: string
                        example: ''
                      tiktok:
                        type: string
                        example: ''
                      snapchat:
                        type: string
                        example: ''
                      email:
                        type: string
                        example: ''
                      whatsapp:
                        type: string
                        example: ''
                      instagram:
                        type: string
                        example: ''
                      youtube:
                        type: string
                        example: ''
                      phone:
                        type: string
                        example: ''
      tags:
        - Endpoints
      security: []
    put:
      summary: ''
      operationId: putApiAdminSettings
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/admin/courses/import:
    post:
      summary: ''
      operationId: postApiAdminCoursesImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 2048 kilobytes.'
              required:
                - file
      security: []
  /api/admin/courses:
    get:
      summary: ''
      operationId: getApiAdminCourses
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminCourses
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                description:
                  type: string
                  description: ''
                  example: 'Dolores dolorum amet iste laborum eius est dolor.'
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                trainer_id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the users table.'
                  example: consequatur
                sessions_no:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 45
                  nullable: true
                price:
                  type: number
                  description: 'Must be at least 0.'
                  example: 56
                  nullable: true
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:09'
                  nullable: true
                survey_file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                details_file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                student:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                instructor:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                trainer:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
              required:
                - title
                - trainer_id
      security: []
  '/api/admin/courses/{id}':
    delete:
      summary: ''
      operationId: deleteApiAdminCoursesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/courses/{course_id}':
    post:
      summary: ''
      operationId: postApiAdminCoursesCourse_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                description:
                  type: string
                  description: ''
                  example: 'Dolores dolorum amet iste laborum eius est dolor.'
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                trainer_id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the users table.'
                  example: consequatur
                sessions_no:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 45
                  nullable: true
                price:
                  type: number
                  description: 'Must be at least 0.'
                  example: 56
                  nullable: true
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:09'
                  nullable: true
                survey_file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                details_file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                student:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                instructor:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                trainer:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
              required:
                - title
                - trainer_id
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/courses/{course_id}/toggle-activate':
    post:
      summary: ''
      operationId: postApiAdminCoursesCourse_idToggleActivate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/courses/{course_id}/accept':
    post:
      summary: ''
      operationId: postApiAdminCoursesCourse_idAccept
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/courses/notes:
    get:
      summary: ''
      operationId: getApiAdminCoursesNotes
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/admin/courses/notes/{note_id}/update-status':
    post:
      summary: ''
      operationId: postApiAdminCoursesNotesNote_idUpdateStatus
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
                  description: ''
                  example: reviewed
                  enum:
                    - reviewed
                    - in_progress
                    - cancelled
              required:
                - status
      security: []
    parameters:
      -
        in: path
        name: note_id
        description: 'The ID of the note.'
        example: 17
        required: true
        schema:
          type: integer
  /api/courses:
    get:
      summary: ''
      operationId: getApiCourses
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Courses Fetched Successfully.'
                  data: []
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Courses Fetched Successfully.'
                  data:
                    type: array
                    example: []
      tags:
        - Endpoints
      security: []
  /api/courses/notes:
    get:
      summary: ''
      operationId: getApiCoursesNotes
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/courses/{course_id}/notes':
    post:
      summary: ''
      operationId: postApiCoursesCourse_idNotes
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                note:
                  type: string
                  description: ''
                  example: consequatur
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
              required:
                - note
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/courses/{course_id}/notes/{id}':
    delete:
      summary: ''
      operationId: deleteApiCoursesCourse_idNotesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
      -
        in: path
        name: id
        description: 'The ID of the note.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/courses/{course_id}/notes/{note_id}':
    post:
      summary: ''
      operationId: postApiCoursesCourse_idNotesNote_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                note:
                  type: string
                  description: ''
                  example: consequatur
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
              required:
                - note
      security: []
    parameters:
      -
        in: path
        name: course_id
        description: 'The ID of the course.'
        example: 17
        required: true
        schema:
          type: integer
      -
        in: path
        name: note_id
        description: 'The ID of the note.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/enrollments:
    get:
      summary: ''
      operationId: getApiAdminEnrollments
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/admin/enrollments/{enrollment_id}':
    post:
      summary: ''
      operationId: postApiAdminEnrollmentsEnrollment_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: enrollment_id
        description: 'The ID of the enrollment.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/enrollments/notes:
    get:
      summary: ''
      operationId: getApiAdminEnrollmentsNotes
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/admin/enrollments/notes/{note_id}/update-status':
    post:
      summary: ''
      operationId: postApiAdminEnrollmentsNotesNote_idUpdateStatus
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
                  description: ''
                  example: reviewed
                  enum:
                    - reviewed
                    - in_progress
                    - cancelled
              required:
                - status
      security: []
    parameters:
      -
        in: path
        name: note_id
        description: 'The ID of the note.'
        example: 17
        required: true
        schema:
          type: integer
  /api/enrollments:
    get:
      summary: ''
      operationId: getApiEnrollments
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiEnrollments
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                course_id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the courses table.'
                  example: consequatur
              required:
                - course_id
      security: []
  /api/enrollments/notes:
    get:
      summary: ''
      operationId: getApiEnrollmentsNotes
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/enrollments/{enrollment_id}/notes':
    post:
      summary: ''
      operationId: postApiEnrollmentsEnrollment_idNotes
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                note:
                  type: string
                  description: ''
                  example: consequatur
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
              required:
                - note
      security: []
    parameters:
      -
        in: path
        name: enrollment_id
        description: 'The ID of the enrollment.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/enrollments/{enrollment_id}/notes/{note_id}':
    post:
      summary: ''
      operationId: postApiEnrollmentsEnrollment_idNotesNote_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                note:
                  type: string
                  description: ''
                  example: consequatur
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
              required:
                - note
      security: []
    parameters:
      -
        in: path
        name: enrollment_id
        description: 'The ID of the enrollment.'
        example: 17
        required: true
        schema:
          type: integer
      -
        in: path
        name: note_id
        description: 'The ID of the note.'
        example: 17
        required: true
        schema:
          type: integer
  /api/admin/exams/import:
    post:
      summary: ''
      operationId: postApiAdminExamsImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 2048 kilobytes.'
              required:
                - file
      security: []
  /api/admin/exams:
    get:
      summary: ''
      operationId: getApiAdminExams
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  '/api/admin/exams/{id}':
    delete:
      summary: ''
      operationId: deleteApiAdminExamsId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                exams:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: vmqeopfuudtdsufvyvddq
                      score:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 1
                      total:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 13
                    required:
                      - title
                      - score
                      - total
              required:
                - exams
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the exam.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/exams/{exam_id}':
    post:
      summary: ''
      operationId: postApiAdminExamsExam_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                exams:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: vmqeopfuudtdsufvyvddq
                      score:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 1
                      total:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 13
                    required:
                      - title
                      - score
                      - total
              required:
                - exams
      security: []
    parameters:
      -
        in: path
        name: exam_id
        description: 'The ID of the exam.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/exams/{exam_id}/toggle-activate':
    post:
      summary: ''
      operationId: postApiAdminExamsExam_idToggleActivate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: exam_id
        description: 'The ID of the exam.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/enrollments/{enrollment_id}/exams':
    post:
      summary: ''
      operationId: postApiAdminEnrollmentsEnrollment_idExams
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                exams:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        description: 'Must not be greater than 255 characters.'
                        example: vmqeopfuudtdsufvyvddq
                      score:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 1
                      total:
                        type: number
                        description: 'Must be at least 0. Must not be greater than 255.'
                        example: 13
                    required:
                      - title
                      - score
                      - total
              required:
                - exams
      security: []
    parameters:
      -
        in: path
        name: enrollment_id
        description: 'The ID of the enrollment.'
        example: 17
        required: true
        schema:
          type: integer
  /api/exams:
    get:
      summary: ''
      operationId: getApiExams
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/admin/question-categories:
    get:
      summary: ''
      operationId: getApiAdminQuestionCategories
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminQuestionCategories
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                questions:
                  type: array
                  description: 'This field is required when <code>questions</code> is present.'
                  example:
                    - consequatur
                  items:
                    type: string
                instructor_id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the users table.'
                  example: null
                  nullable: true
      security: []
  '/api/admin/question-categories/{id}':
    delete:
      summary: ''
      operationId: deleteApiAdminQuestionCategoriesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the question category.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/question-categories/{questionCategory_id}':
    post:
      summary: ''
      operationId: postApiAdminQuestionCategoriesQuestionCategory_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                questions:
                  type: array
                  description: 'This field is required when <code>questions</code> is present.'
                  example:
                    - consequatur
                  items:
                    type: string
                instructor_id:
                  type: string
                  description: 'The <code>id</code> of an existing record in the users table.'
                  example: null
                  nullable: true
      security: []
    parameters:
      -
        in: path
        name: questionCategory_id
        description: 'The ID of the questionCategory.'
        example: 17
        required: true
        schema:
          type: integer
  '/api/admin/questions/{question_id}':
    delete:
      summary: ''
      operationId: deleteApiAdminQuestionsQuestion_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: question_id
        description: 'The ID of the question.'
        example: 17
        required: true
        schema:
          type: integer
  /api/survey/questions:
    get:
      summary: ''
      operationId: getApiSurveyQuestions
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/survey/answers:
    post:
      summary: ''
      operationId: postApiSurveyAnswers
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                answers:
                  type: array
                  description: ''
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      survey_question_id:
                        type: string
                        description: 'The <code>id</code> of an existing record in the survey_questions table.'
                        example: consequatur
                      answer:
                        type: string
                        description: ''
                        example: consequatur
                    required:
                      - survey_question_id
                      - answer
                answerable_type:
                  type: string
                  description: ''
                  example: course
                  enum:
                    - course
                    - instructor
                    - trainer
                  nullable: true
                answerable_id:
                  type: integer
                  description: 'This field is required when <code>answerable_type</code> is present.'
                  example: 17
                  nullable: true
              required:
                - answers
      security: []
  /api/survey/my-submissions:
    get:
      summary: ''
      operationId: getApiSurveyMySubmissions
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/admin/survey/answers:
    get:
      summary: ''
      operationId: getApiAdminSurveyAnswers
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/admin/survey/answers/by-category:
    get:
      summary: ''
      operationId: getApiAdminSurveyAnswersByCategory
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
  /api/user/auth/login:
    post:
      summary: 'Get a JWT via given credentials.'
      operationId: getAJWTViaGivenCredentials
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                identity_number:
                  type: string
                  description: 'The <code>identity_number</code> of an existing record in the users table.'
                  example: consequatur
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - identity_number
                - password
      security: []
  /api/user/auth/logout:
    post:
      summary: 'Log the user out (Invalidate the token).'
      operationId: logTheUserOutInvalidateTheToken
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/user/auth/refresh:
    post:
      summary: 'Refresh a token.'
      operationId: refreshAToken
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/user/auth/me:
    post:
      summary: 'Get the authenticated User.'
      operationId: getTheAuthenticatedUser
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/user/change-password:
    post:
      summary: ''
      operationId: postApiUserChangePassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                current_password:
                  type: string
                  description: ''
                  example: consequatur
                new_password:
                  type: string
                  description: ''
                  example: consequatur
              required:
                - current_password
                - new_password
      security: []
  /api/user/update-profile:
    post:
      summary: ''
      operationId: postApiUserUpdateProfile
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                phone:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: carolyne.luettgen@example.org
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
      security: []
  /api/user/forgot-password:
    post:
      summary: ''
      operationId: postApiUserForgotPassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: 'Must be a valid email address. The <code>email</code> of an existing record in the users table.'
                  example: qkunze@example.com
              required:
                - email
      security: []
  /api/user/validate-reset-token:
    post:
      summary: ''
      operationId: postApiUserValidateResetToken
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: ''
                  example: consequatur
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: carolyne.luettgen@example.org
              required:
                - token
                - email
      security: []
  /api/user/reset-password:
    post:
      summary: ''
      operationId: postApiUserResetPassword
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  description: ''
                  example: consequatur
                email:
                  type: string
                  description: 'Must be a valid email address. The <code>email</code> of an existing record in the users table.'
                  example: carolyne.luettgen@example.org
                password:
                  type: string
                  description: 'Must be at least 6 characters.'
                  example: ij-e/dl4m
              required:
                - token
                - email
                - password
      security: []
  /api/admin/academies:
    get:
      summary: ''
      operationId: getApiAdminAcademies
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Server Error'
                properties:
                  message:
                    type: string
                    example: 'Server Error'
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminAcademies
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
              required:
                - name
      security: []
  '/api/admin/academies/{id}':
    get:
      summary: ''
      operationId: getApiAdminAcademiesId
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Server Error'
                properties:
                  message:
                    type: string
                    example: 'Server Error'
      tags:
        - Endpoints
      security: []
    delete:
      summary: ''
      operationId: deleteApiAdminAcademiesId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: id
        description: 'The ID of the academy.'
        example: consequatur
        required: true
        schema:
          type: string
  '/api/admin/academies/{academy}':
    post:
      summary: ''
      operationId: postApiAdminAcademiesAcademy
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
      security: []
    parameters:
      -
        in: path
        name: academy
        description: 'The academy.'
        example: consequatur
        required: true
        schema:
          type: string
  /api/admin/trainers/import:
    post:
      summary: ''
      operationId: postApiAdminTrainersImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 2048 kilobytes.'
              required:
                - file
      security: []
  /api/admin/trainers:
    get:
      summary: ''
      operationId: getApiAdminTrainers
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminTrainers
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
  '/api/admin/trainers/{user_id}':
    post:
      summary: ''
      operationId: postApiAdminTrainersUser_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
    parameters:
      -
        in: path
        name: user_id
        description: 'The ID of the user.'
        example: 1
        required: true
        schema:
          type: integer
  /api/admin/instructors/import:
    post:
      summary: ''
      operationId: postApiAdminInstructorsImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 2048 kilobytes.'
              required:
                - file
      security: []
  /api/admin/instructors:
    get:
      summary: ''
      operationId: getApiAdminInstructors
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: true
                  message: 'Instructors Fetched Successfully.'
                  data: []
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: 'Instructors Fetched Successfully.'
                  data:
                    type: array
                    example: []
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminInstructors
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
  '/api/admin/instructors/{user_id}':
    post:
      summary: ''
      operationId: postApiAdminInstructorsUser_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
    parameters:
      -
        in: path
        name: user_id
        description: 'The ID of the user.'
        example: 1
        required: true
        schema:
          type: integer
  /api/admin/students/import:
    post:
      summary: ''
      operationId: postApiAdminStudentsImport
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 2048 kilobytes.'
              required:
                - file
      security: []
  /api/admin/students:
    get:
      summary: ''
      operationId: getApiAdminStudents
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: false
                  message: 'Unauthorized. Please login first.'
                  data: null
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: 'Unauthorized. Please login first.'
                  data:
                    type: string
                    example: null
                    nullable: true
      tags:
        - Endpoints
      security: []
    post:
      summary: ''
      operationId: postApiAdminStudents
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
  '/api/admin/students/{user_id}':
    post:
      summary: ''
      operationId: postApiAdminStudentsUser_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: vmqeopfuudtdsufvyvddq
                  nullable: true
                image:
                  type: string
                  format: binary
                  description: 'Must be an image. Must not be greater than 1024 kilobytes.'
                  nullable: true
                birth_date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-06-01T13:47:10'
                  nullable: true
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 1024 kilobytes.'
                  nullable: true
                email:
                  type: string
                  description: 'Must be a valid email address.'
                  example: kunde.eloisa@example.com
                  nullable: true
                phone:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: hfqcoynlazghdtqtqxbaj
                  nullable: true
                username:
                  type: string
                  description: ''
                  example: consequatur
                identity_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                national_number:
                  type: string
                  description: ''
                  example: consequatur
                  nullable: true
                password:
                  type: string
                  description: ''
                  example: 'O[2UZ5ij-e/dl4m{o,'
              required:
                - username
                - password
      security: []
    parameters:
      -
        in: path
        name: user_id
        description: 'The ID of the user.'
        example: 1
        required: true
        schema:
          type: integer
  '/api/admin/users/{user_id}/toggle-activate':
    post:
      summary: ''
      operationId: postApiAdminUsersUser_idToggleActivate
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: user_id
        description: 'The ID of the user.'
        example: 1
        required: true
        schema:
          type: integer
