```yaml
openapi: 3.0.3
info:
  title: Desa+ Mobile API
  description: API untuk aplikasi mobile Desa+ (berbasis kode client Axios).
  version: 1.0.0
  contact:
    name: API Support
    email: support@desa-plus.com

servers:
  - url: https://staging-darmasaba.wibudev.com/api
    description: Production server

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

  schemas:
    # Common Schemas
    User:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        phone:
          type: string
      required:
        - id

    Error:
      type: object
      properties:
        message:
          type: string
        status:
          type: integer

    # Auth
    PhoneLoginBody:
      type: object
      properties:
        phone:
          type: string
      required:
        - phone

    OtpBody:
      type: object
      properties:
        phone:
          type: string
        otp:
          type: integer
      required:
        - phone
        - otp

    # Banner
    Banner:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        image:
          type: string
        user:
          type: string
      required:
        - id

    # Group
    Group:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        user:
          type: string
        isActive:
          type: boolean
      required:
        - id
        - name

    GroupCreateBody:
      type: object
      properties:
        user:
          type: string
        name:
          type: string
      required:
        - user
        - name

    # Position
    Position:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        idGroup:
          type: string
        user:
          type: string
        isActive:
          type: boolean
      required:
        - id
        - name

    PositionCreateBody:
      type: object
      properties:
        user:
          type: string
        name:
          type: string
        idGroup:
          type: string
      required:
        - user
        - name
        - idGroup

    # User Management
    UserCreateBody:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        photo:
          type: string
      required:
        - name

    # Discussion General
    DiscussionGeneral:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        desc:
          type: string
        user:
          type: string
        status:
          type: integer
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - id
        - title

    DiscussionGeneralCreateBody:
      type: object
      properties:
        idGroup:
          type: string
        title:
          type: string
        desc:
          type: string
        user:
          type: string
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - idGroup
        - title
        - desc
        - user

    DiscussionGeneralCommentBody:
      type: object
      properties:
        desc:
          type: string
        user:
          type: string
      required:
        - desc
        - user

    # Announcement
    Announcement:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        desc:
          type: string
        user:
          type: string
        groups:
          type: array
          items:
            type: string
      required:
        - id
        - title

    AnnouncementCreateBody:
      type: object
      properties:
        title:
          type: string
        desc:
          type: string
        user:
          type: string
        groups:
          type: array
          items:
            type: string
      required:
        - title
        - desc
        - user
        - groups

    # Project
    Project:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        user:
          type: string
        status:
          type: integer
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - id
        - name

    ProjectCreateBody:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
      required:
        - name

    ProjectTaskCreateBody:
      type: object
      properties:
        name:
          type: string
        dateStart:
          type: string
        dateEnd:
          type: string
        user:
          type: string
        dataDetail:
          type: array
          items:
            type: object
      required:
        - name
        - dateStart
        - dateEnd
        - user

    ProjectUpdateStatusBody:
      type: object
      properties:
        user:
          type: string
        status:
          type: integer
        idProject:
          type: string
      required:
        - user
        - status
        - idProject

    # Division
    Division:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        desc:
          type: string
        user:
          type: string
        isActive:
          type: boolean
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - id
        - name

    DivisionCreateBody:
      type: object
      properties:
        data:
          type: object
          properties:
            idGroup:
              type: string
            name:
              type: string
            desc:
              type: string
          required:
            - idGroup
            - name
            - desc
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
        admin:
          type: array
          items:
            type: string
        user:
          type: string
      required:
        - data
        - member
        - admin
        - user

    DivisionMemberBody:
      type: object
      properties:
        user:
          type: string
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - user
        - member

    # Discussion
    Discussion:
      type: object
      properties:
        id:
          type: string
        desc:
          type: string
        user:
          type: string
        idDivision:
          type: string
        active:
          type: boolean
        status:
          type: integer
      required:
        - id
        - desc

    DiscussionCreateBody:
      type: object
      properties:
        user:
          type: string
        desc:
          type: string
        idDivision:
          type: string
      required:
        - user
        - desc
        - idDivision

    DiscussionCommentBody:
      type: object
      properties:
        user:
          type: string
        comment:
          type: string
      required:
        - user
        - comment

    DiscussionEditBody:
      type: object
      properties:
        user:
          type: string
        desc:
          type: string
      required:
        - user
        - desc

    # Calendar
    Calendar:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        desc:
          type: string
        timeStart:
          type: string
        timeEnd:
          type: string
        dateStart:
          type: string
        repeatEventTyper:
          type: string
        repeatValue:
          type: string
        linkMeet:
          type: string
        idDivision:
          type: string
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
        user:
          type: string
      required:
        - id
        - title
        - desc
        - timeStart
        - timeEnd
        - dateStart
        - idDivision
        - user

    CalendarCreateBody:
      type: object
      properties:
        idDivision:
          type: string
        title:
          type: string
        desc:
          type: string
        timeStart:
          type: string
        timeEnd:
          type: string
        dateStart:
          type: string
        repeatEventTyper:
          type: string
        repeatValue:
          type: string
        linkMeet:
          type: string
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
        user:
          type: string
      required:
        - idDivision
        - title
        - desc
        - timeStart
        - timeEnd
        - dateStart
        - user

    # Task
    Task:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        user:
          type: string
        status:
          type: integer
        idDivision:
          type: string
      required:
        - id
        - title

    TaskCreateBody:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
      required:
        - title

    TaskTugasCreateBody:
      type: object
      properties:
        title:
          type: string
        dateStart:
          type: string
        dateEnd:
          type: string
        user:
          type: string
        idDivision:
          type: string
        dataDetail:
          type: array
          items:
            type: object
      required:
        - title
        - dateStart
        - dateEnd
        - user
        - idDivision

    TaskMemberBody:
      type: object
      properties:
        user:
          type: string
        member:
          type: array
          items:
            $ref: '#/components/schemas/User'
        idDivision:
          type: string
      required:
        - user
        - member
        - idDivision

    # Document
    DocumentMoveBody:
      type: object
      properties:
        path:
          type: string
        dataItem:
          type: array
          items:
            type: object
        user:
          type: string
      required:
        - path
        - dataItem
        - user

    DocumentCopyBody:
      type: object
      properties:
        path:
          type: string
        dataItem:
          type: array
          items:
            type: object
        user:
          type: string
        idDivision:
          type: string
      required:
        - path
        - dataItem
        - user
        - idDivision

    DocumentShareBody:
      type: object
      properties:
        dataDivision:
          type: array
          items:
            type: object
        dataItem:
          type: array
          items:
            type: object
        user:
          type: string
      required:
        - dataDivision
        - dataItem
        - user

    DocumentRenameBody:
      type: object
      properties:
        name:
          type: string
        user:
          type: string
        id:
          type: string
        path:
          type: string
        idDivision:
          type: string
        extension:
          type: string
      required:
        - name
        - user
        - id
        - path
        - idDivision
        - extension

    DocumentFolderCreateBody:
      type: object
      properties:
        name:
          type: string
        path:
          type: string
        idDivision:
          type: string
        user:
          type: string
      required:
        - name
        - path
        - idDivision
        - user

    DocumentDeleteBody:
      type: object
      properties:
        user:
          type: string
        data:
          type: array
          items:
            type: object
      required:
        - user
        - data

    # Notification
    NotificationReadBody:
      type: object
      properties:
        user:
          type: string
        id:
          type: string
      required:
        - user
        - id

    # Token
    TokenBody:
      type: object
      properties:
        user:
          type: string
        token:
          type: string
      required:
        - user
        - token

    # Generic Response
    ApiResponse:
      type: object
      properties:
        data:
          type: object
        success:
          type: boolean
      required:
        - data

paths:
  # Auth
  /auth/login:
    post:
      tags:
        - Auth
      summary: Check phone for login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneLoginBody'
      responses:
        '200':
          description: Login data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  # Banner
  /mobile/banner:
    get:
      tags:
        - Banner
      summary: Get banners
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of banners
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Banner'
    post:
      tags:
        - Banner
      summary: Create banner
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                image:
                  type: string
                  format: binary
      responses:
        '200':
          description: Created banner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Banner'

  /mobile/banner/{id}:
    get:
      tags:
        - Banner
      summary: Get one banner
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Banner details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Banner'
    put:
      tags:
        - Banner
      summary: Edit banner
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                image:
                  type: string
                  format: binary
      responses:
        '200':
          description: Updated banner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Banner'
    delete:
      tags:
        - Banner
      summary: Delete banner
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Home Data
  /mobile/home:
    get:
      tags:
        - Home
      summary: Get home data by category
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [kegiatan, division, progress, dokumen, event, discussion, header, check-late-project]
      responses:
        '200':
          description: Home data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/home/search:
    get:
      tags:
        - Home
      summary: Search home
      parameters:
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object

  /mobile/home/notification:
    get:
      tags:
        - Notification
      summary: Get notifications
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of notifications
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
    put:
      tags:
        - Notification
      summary: Read one notification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationReadBody'
      responses:
        '200':
          description: Updated notification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Group
  /mobile/group:
    get:
      tags:
        - Group
      summary: Get groups
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Group'
    post:
      tags:
        - Group
      summary: Create group
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupCreateBody'
      responses:
        '200':
          description: Created group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'

  /mobile/group/{id}:
    put:
      tags:
        - Group
      summary: Edit group
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupCreateBody'
      responses:
        '200':
          description: Updated group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
    delete:
      tags:
        - Group
      summary: Delete group
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                isActive:
                  type: boolean
              required:
                - user
                - isActive
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/group/get-division:
    get:
      tags:
        - Group
      summary: Get division groups
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Division groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Group'

  # Position
  /mobile/position:
    get:
      tags:
        - Position
      summary: Get positions
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          required: true
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of positions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Position'
    post:
      tags:
        - Position
      summary: Create position
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PositionCreateBody'
      responses:
        '200':
          description: Created position
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Position'

  /mobile/position/{id}:
    put:
      tags:
        - Position
      summary: Edit position
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PositionCreateBody'
      responses:
        '200':
          description: Updated position
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Position'
    delete:
      tags:
        - Position
      summary: Delete position
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                isActive:
                  type: boolean
              required:
                - user
                - isActive
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # User
  /mobile/user:
    get:
      tags:
        - User
      summary: Get users
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          required: true
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
    post:
      tags:
        - User
      summary: Create user
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserCreateBody'
      responses:
        '200':
          description: Created user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'

  /mobile/user/{id}:
    get:
      tags:
        - User
      summary: Get profile
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: User profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
    put:
      tags:
        - User
      summary: Edit user
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                photo:
                  type: string
                  format: binary
      responses:
        '200':
          description: Updated user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
    delete:
      tags:
        - User
      summary: Delete user
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                isActive:
                  type: boolean
              required:
                - user
                - isActive
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/user/profile:
    put:
      tags:
        - User
      summary: Edit profile
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                photo:
                  type: string
                  format: binary
      responses:
        '200':
          description: Updated profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'

  # Discussion General
  /mobile/discussion-general:
    get:
      tags:
        - DiscussionGeneral
      summary: Get discussion general
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          required: true
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of discussions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscussionGeneral'
    post:
      tags:
        - DiscussionGeneral
      summary: Create discussion general
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscussionGeneralCreateBody'
      responses:
        '200':
          description: Created discussion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscussionGeneral'

  /mobile/discussion-general/{id}:
    get:
      tags:
        - DiscussionGeneral
      summary: Get one discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Discussion details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscussionGeneral'
    post:
      tags:
        - DiscussionGeneral
      summary: Update status discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: integer
                user:
                  type: string
              required:
                - status
                - user
      responses:
        '200':
          description: Updated status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscussionGeneral'
    put:
      tags:
        - DiscussionGeneral
      summary: Edit discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                title:
                  type: string
                desc:
                  type: string
              required:
                - user
                - title
                - desc
      responses:
        '200':
          description: Updated discussion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscussionGeneral'
    delete:
      tags:
        - DiscussionGeneral
      summary: Delete discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                active:
                  type: boolean
              required:
                - user
                - active
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/discussion-general/{id}/comment:
    post:
      tags:
        - DiscussionGeneral
      summary: Send comment to discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscussionGeneralCommentBody'
      responses:
        '200':
          description: Comment added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/discussion-general/{id}/member:
    post:
      tags:
        - DiscussionGeneral
      summary: Add members to discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DivisionMemberBody'
      responses:
        '200':
          description: Members added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - DiscussionGeneral
      summary: Delete member from discussion general
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idUser:
                  type: string
              required:
                - user
                - idUser
      responses:
        '200':
          description: Member deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Announcement
  /mobile/announcement:
    get:
      tags:
        - Announcement
      summary: Get announcements
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of announcements
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Announcement'
    post:
      tags:
        - Announcement
      summary: Create announcement
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnouncementCreateBody'
      responses:
        '200':
          description: Created announcement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Announcement'

  /mobile/announcement/{id}:
    get:
      tags:
        - Announcement
      summary: Get one announcement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Announcement details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Announcement'
    put:
      tags:
        - Announcement
      summary: Edit announcement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnouncementCreateBody'
      responses:
        '200':
          description: Updated announcement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Announcement'
    delete:
      tags:
        - Announcement
      summary: Delete announcement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Project
  /mobile/project:
    get:
      tags:
        - Project
      summary: Get projects
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: status
          in: query
          required: true
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of projects
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Project'
    post:
      tags:
        - Project
      summary: Create project
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ProjectCreateBody'
      responses:
        '200':
          description: Created project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'

  /mobile/project/{id}:
    get:
      tags:
        - Project
      summary: Get one project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [data, progress, task, file, member, link]
      responses:
        '200':
          description: Project details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
    put:
      tags:
        - Project
      summary: Edit project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                user:
                  type: string
              required:
                - name
                - user
      responses:
        '200':
          description: Updated project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
    post:
      tags:
        - Project
      summary: Create project task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectTaskCreateBody'
      responses:
        '200':
          description: Created task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Cancel project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                reason:
                  type: string
              required:
                - user
                - reason
      responses:
        '200':
          description: Canceled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/project/{id}/lainnya:
    put:
      tags:
        - Project
      summary: Report project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                report:
                  type: string
                user:
                  type: string
              required:
                - report
                - user
      responses:
        '200':
          description: Report added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Delete project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/project/detail/{id}:
    get:
      tags:
        - Project
      summary: Get project task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Task details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags:
        - Project
      summary: Update status project task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdateStatusBody'
      responses:
        '200':
          description: Status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags:
        - Project
      summary: Edit project task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectTaskCreateBody'
      responses:
        '200':
          description: Task updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Delete project task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idProject:
                  type: string
              required:
                - user
                - idProject
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/project/{id}/member:
    post:
      tags:
        - Project
      summary: Add members to project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DivisionMemberBody'
      responses:
        '200':
          description: Members added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Delete member from project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idUser:
                  type: string
              required:
                - user
                - idUser
      responses:
        '200':
          description: Member deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/project/{id}/link:
    post:
      tags:
        - Project
      summary: Add link to project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                link:
                  type: string
              required:
                - user
                - link
      responses:
        '200':
          description: Link added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Delete link from project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                idLink:
                  type: string
                user:
                  type: string
              required:
                - idLink
                - user
      responses:
        '200':
          description: Link deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/project/file/{id}:
    post:
      tags:
        - Project
      summary: Add file to project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags:
        - Project
      summary: Check/update file in project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Project
      summary: Delete file from project
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: File deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Division
  /mobile/division:
    get:
      tags:
        - Division
      summary: Get divisions
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of divisions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Division'
    post:
      tags:
        - Division
      summary: Create division
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DivisionCreateBody'
      responses:
        '200':
          description: Created division
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Division'

  /mobile/division/{id}:
    get:
      tags:
        - Division
      summary: Get one division detail
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Division details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Division'
    put:
      tags:
        - Division
      summary: Edit division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                name:
                  type: string
                desc:
                  type: string
              required:
                - user
                - name
                - desc
      responses:
        '200':
          description: Updated division
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Division'

  /mobile/division/{id}/detail:
    get:
      tags:
        - Division
      summary: Get division one feature
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [jumlah, today-task, new-file, new-discussion, check-member, check-admin]
      responses:
        '200':
          description: Feature data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags:
        - Division
      summary: Update status admin division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                id:
                  type: string
                isAdmin:
                  type: boolean
              required:
                - user
                - id
                - isAdmin
      responses:
        '200':
          description: Status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags:
        - Division
      summary: Add members to division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DivisionMemberBody'
      responses:
        '200':
          description: Members added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Division
      summary: Delete member from division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                id:
                  type: string
              required:
                - user
                - id
      responses:
        '200':
          description: Member deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/division/{id}/status:
    post:
      tags:
        - Division
      summary: Update status division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                isActive:
                  type: boolean
              required:
                - user
                - isActive
      responses:
        '200':
          description: Status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/division/{id}/member:
    get:
      tags:
        - Division
      summary: Get division members
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of members
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'

  /mobile/division/report:
    get:
      tags:
        - Division
      summary: Get division report
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [table-progress, lainnya]
        - name: date
          in: query
          required: true
          schema:
            type: string
        - name: date-end
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Report data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/division/more:
    get:
      tags:
        - Division
      summary: Get list division by id division
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of divisions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Division'

  # Discussion
  /mobile/discussion:
    get:
      tags:
        - Discussion
      summary: Get discussions
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: active
          in: query
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of discussions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Discussion'
    post:
      tags:
        - Discussion
      summary: Create discussion
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscussionCreateBody'
      responses:
        '200':
          description: Created discussion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discussion'

  /mobile/discussion/{id}:
    get:
      tags:
        - Discussion
      summary: Get one discussion
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [data, comment]
      responses:
        '200':
          description: Discussion details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discussion'
    post:
      tags:
        - Discussion
      summary: Edit discussion
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscussionEditBody'
      responses:
        '200':
          description: Updated discussion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Discussion'
    put:
      tags:
        - Discussion
      summary: Archive discussion
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                active:
                  type: boolean
              required:
                - user
                - active
      responses:
        '200':
          description: Archived
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Discussion
      summary: Open/close discussion
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                status:
                  type: integer
              required:
                - user
                - status
      responses:
        '200':
          description: Status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/discussion/{id}/comment:
    post:
      tags:
        - Discussion
      summary: Send comment to discussion
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscussionCommentBody'
      responses:
        '200':
          description: Comment added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Calendar
  /mobile/calendar:
    get:
      tags:
        - Calendar
      summary: Get calendar by date and division
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: date
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Calendar events
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Calendar'
    post:
      tags:
        - Calendar
      summary: Create calendar event
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarCreateBody'
      responses:
        '200':
          description: Created event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'

  /mobile/calendar/indicator:
    get:
      tags:
        - Calendar
      summary: Get calendar indicator
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: date
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Indicators
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/calendar/{id}:
    get:
      tags:
        - Calendar
      summary: Get one calendar event
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [data, member]
      responses:
        '200':
          description: Event details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'
    put:
      tags:
        - Calendar
      summary: Update calendar event
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                desc:
                  type: string
                timeStart:
                  type: string
                timeEnd:
                  type: string
                dateStart:
                  type: string
                repeatEventTyper:
                  type: string
                repeatValue:
                  type: number
                linkMeet:
                  type: string
                user:
                  type: string
              required:
                - title
                - desc
                - timeStart
                - timeEnd
                - dateStart
                - repeatEventTyper
                - repeatValue
                - linkMeet
                - user
      responses:
        '200':
          description: Updated event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar'
    delete:
      tags:
        - Calendar
      summary: Delete calendar event
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/calendar/{id}/member:
    post:
      tags:
        - Calendar
      summary: Add members to calendar
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DivisionMemberBody'
      responses:
        '200':
          description: Members added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Calendar
      summary: Delete member from calendar
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idUser:
                  type: string
              required:
                - user
                - idUser
      responses:
        '200':
          description: Member deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/calendar/history:
    get:
      tags:
        - Calendar
      summary: Get calendar history
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: History
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Calendar'

  # Task
  /mobile/task:
    get:
      tags:
        - Task
      summary: Get tasks
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: status
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: true
          schema:
            type: string
        - name: search
          in: query
          required: true
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: List of tasks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Task'
    post:
      tags:
        - Task
      summary: Create task
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TaskCreateBody'
      responses:
        '200':
          description: Created task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'

  /mobile/task/{id}:
    get:
      tags:
        - Task
      summary: Get one task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          required: true
          schema:
            type: string
            enum: [data, progress, task, file, member, link]
      responses:
        '200':
          description: Task details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
    put:
      tags:
        - Task
      summary: Edit task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                user:
                  type: string
              required:
                - title
                - user
      responses:
        '200':
          description: Updated task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
    post:
      tags:
        - Task
      summary: Create task tugas
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskTugasCreateBody'
      responses:
        '200':
          description: Created tugas
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Cancel task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                reason:
                  type: string
              required:
                - user
                - reason
      responses:
        '200':
          description: Canceled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/task/{id}/lainnya:
    put:
      tags:
        - Task
      summary: Report task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                report:
                  type: string
                user:
                  type: string
              required:
                - report
                - user
      responses:
        '200':
          description: Report added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Delete task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/task/detail/{id}:
    get:
      tags:
        - Task
      summary: Get task tugas
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: cat
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Tugas details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags:
        - Task
      summary: Update status task division
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdateStatusBody'
      responses:
        '200':
          description: Status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    post:
      tags:
        - Task
      summary: Edit task tugas
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskTugasCreateBody'
      responses:
        '200':
          description: Tugas updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Delete task tugas
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idProject:
                  type: string
              required:
                - user
                - idProject
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/task/{id}/member:
    post:
      tags:
        - Task
      summary: Add members to task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskMemberBody'
      responses:
        '200':
          description: Members added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Delete member from task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idUser:
                  type: string
              required:
                - user
                - idUser
      responses:
        '200':
          description: Member deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/task/{id}/link:
    post:
      tags:
        - Task
      summary: Add link to task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                link:
                  type: string
                idDivision:
                  type: string
              required:
                - user
                - link
                - idDivision
      responses:
        '200':
          description: Link added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Delete link from task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
                idLink:
                  type: string
              required:
                - user
                - idLink
      responses:
        '200':
          description: Link deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  /mobile/task/file/{id}:
    post:
      tags:
        - Task
      summary: Add file to task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    put:
      tags:
        - Task
      summary: Check/update file in task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
    delete:
      tags:
        - Task
      summary: Delete file from task
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  type: string
              required:
                - user
      responses:
        '200':
          description: File deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'

  # Document
  /mobile/document:
    get:
      tags:
        - Document
      summary: Get documents
      parameters:
        - name: user
          in: query
          required: true
          schema:
            type: string
        - name: path
          in: query
          required: true
          schema:
            type: string
        - name: division
          in: query
          required: