```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: