openapi: 3.0.3 info: title: 'API Qiroah' description: 'Here is a list of APIs used for integration to other Apps, for more information please see Documentation' version: 1.0.0 servers: - url: 'https://devapi.qiroah.com' paths: /api/auth/google: post: summary: 'Get Access Token via GoogleSignIn' operationId: getAccessTokenViaGoogleSignIn description: 'This endpoint allows you to get the token for user access to the authenticated endpoints using GoogleSignIn.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": {\n \"access_token\": string,\n \"token_type\": string,\n \"expires_at\": int,\n \"email\": string,\n \"is_profile_complete\": boolean,\n }\n}" 400: description: 'idToken is not verified' content: application/json: schema: type: object example: status: 400 message: 'idToken is not verified' error: true properties: status: type: integer example: 400 message: type: string example: 'idToken is not verified' error: type: boolean example: true 403: description: 'Account user not found' content: application/json: schema: type: object example: status: 403 message: 'Account user not found' error: true properties: status: type: integer example: 403 message: type: string example: 'Account user not found' error: type: boolean example: true 500: description: 'Internal Server Error' content: application/json: schema: type: object example: status: 500 message: 'Internal Server Error' error: true properties: status: type: integer example: 500 message: type: string example: 'Internal Server Error' error: type: boolean example: true tags: - Account requestBody: required: true content: application/json: schema: type: object properties: id_token: type: string description: 'Must be valid JWT GoogleID' example: null required: - id_token security: [] /api/auth/register: post: summary: 'Register via Form' operationId: registerViaForm description: 'This endpoint allows you to create user account via Registration Form.' parameters: [] responses: 201: description: Created content: application/json: schema: type: object example: status: 201 error: false properties: status: type: integer example: 201 error: type: boolean example: false 403: description: 'Email already registered' content: application/json: schema: type: object example: status: 403 message: 'Email already registered' error: true properties: status: type: integer example: 403 message: type: string example: 'Email already registered' error: type: boolean example: true 500: description: 'Internal Server Error' content: application/json: schema: type: object example: status: 500 message: 'Internal Server Error' error: true properties: status: type: integer example: 500 message: type: string example: 'Internal Server Error' error: type: boolean example: true tags: - Account requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address and not be greater than 100 characters.' example: null name: type: string description: 'Must not be greater than 50 characters.' example: null gender: type: string description: 'Must be one of Laki - Laki or Perempuan.' example: null whatsapp: type: number description: 'Must be at least 10.' example: 44 required: - email - name - gender - whatsapp security: [] /api/auth/logout: get: summary: 'Revoke The Access Token' operationId: revokeTheAccessToken description: 'This endpoint allows you to revoke the token.' parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: status: 200 error: false properties: status: type: integer example: 200 error: type: boolean example: false 401: description: Unauthorized content: application/json: schema: type: object example: status: 401 message: Unauthorized error: true properties: status: type: integer example: 401 message: type: string example: Unauthorized error: type: boolean example: true tags: - Account /api/users: get: summary: 'Get Profile User by ID' operationId: getProfileUserByID description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id\": int,\n \"name\": string,\n \"avatar\": string\n }\n ]\n}" 401: description: Unauthenticated content: application/json: schema: type: object example: status: 401 message: Unauthorized error: true properties: status: type: integer example: 401 message: type: string example: Unauthorized error: type: boolean example: true 404: description: 'Not Found' content: application/json: schema: type: object example: status: 401 message: 'Not Found' error: true properties: status: type: integer example: 401 message: type: string example: 'Not Found' error: type: boolean example: true tags: - Account put: summary: 'Update Profile User' operationId: updateProfileUser description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: [] status: 200 message: Success error: false properties: data: type: array example: [] status: type: integer example: 200 message: type: string example: Success error: type: boolean example: false 401: description: Unauthenticated content: application/json: schema: type: object example: data: [] status: 401 message: Unauthorized error: true properties: data: type: array example: [] status: type: integer example: 401 message: type: string example: Unauthorized error: type: boolean example: true 404: description: 'Not Found' content: application/json: schema: type: object example: data: [] status: 401 message: 'Not Found' error: true properties: data: type: array example: [] status: type: integer example: 401 message: type: string example: 'Not Found' error: type: boolean example: true tags: - Account /api/feedbacks: get: summary: 'Get list of Feedback' operationId: getListOfFeedback description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_feedback\": string,\n \"deskripsi\": string,\n \"daftar_pertanyaan\": [\n {\n \"id_pertanyaan\": string,\n \"id_feedback\": string,\n \"id_kategori\": string,\n \"id_content\": string,\n \"pertanyaan\": string,\n \"audio_ustadz\": string,\n \"image_soal\": string,\n \"true_sound_label\": string,\n \"daftar_content\": [\n {\n \"id_content\": string,\n \"nama_content\": string,\n \"deskripsi\": string,\n \"image\": string,\n \"video\": string,\n \"rekap\": string,\n \"intro_text\": string,\n }\n ],\n }\n ]\n }\n ]\n}" tags: - Lesson security: [] /api/pertanyaans: get: summary: 'Get list of Pertanyaan' operationId: getListOfPertanyaan description: '' parameters: - in: query name: id_content description: '' example: 2 required: false schema: type: integer description: '' example: 2 responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_pertanyaan\": string,\n \"id_feedback\": string,\n \"id_kategori\": string,\n \"id_content\": string,\n \"pertanyaan\": string,\n \"audio_ustadz\": string,\n \"image_soal\": string,\n \"true_sound_label\": string,\n \"daftar_feedbacks\": [\n {\n \"id_feedback\": string,\n \"deskripsi\": string\n }\n ],\n \"daftar_contents\": [\n {\n \"id_content\": string,\n \"nama_content\": string,\n \"deskripsi\": string,\n \"image\": string,\n \"video\": string,\n \"rekap\": string,\n \"intro_text\": string,\n }\n ],\n \"daftar_hurufs\": [\n {\n \"id_huruf\": string,\n \"huruf\": string,\n \"daftar_sifat\": [\n {\n \"id_sifatul_huruf\": string,\n \"nama_sifat\": string,\n \"deskripsi\": int\n }\n ]\n }\n ]\n }\n ]\n}" tags: - Lesson security: [] /api/hurufs: get: summary: 'Get list of Huruf' operationId: getListOfHuruf description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_huruf\": string,\n \"huruf\": string,\n \"daftar_sifat\": [\n {\n \"id_sifatul_huruf\": string,\n \"nama_sifat\": string,\n \"deskripsi\": int\n }\n ]\n }\n ]\n}" tags: - Lesson security: [] /api/kategoris: get: summary: 'Get list of Kategori' operationId: getListOfKategori description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_kategori\": string,\n \"nama_kategori\": string,\n \"deskripsi\": string,\n \"image\": string,\n \"deskripsi_panjang\": string,\n \"daftar_subkategori\": [\n {\n \"id_subkategori\": string,\n \"id_kategori\": string,\n \"bagian_mulut\": string,\n \"daftar_content\": [\n {\n \"id_content\": string,\n \"nama_content\": string,\n \"deskripsi\": string,\n \"image\": string,\n \"video\": string,\n \"rekap\": string,\n \"intro_text\": string\n }\n ]\n }\n ]\n }\n ]\n}" tags: - Lesson security: [] /api/kategoris/sub: get: summary: 'Get list of Sub Kategori' operationId: getListOfSubKategori description: '' parameters: - in: query name: id_kategori description: '' example: 1 required: false schema: type: integer description: '' example: 1 responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id_subkategori\": string,\n \"id_kategori\": string,\n \"bagian_mulut\": string,\n \"daftar_content\": [\n {\n \"id_content\": string,\n \"nama_content\": string,\n \"deskripsi\": string,\n \"image\": string,\n \"video\": string,\n \"rekap\": string,\n \"intro_text\": string\n }\n ]\n }\n ],\n \"status\": 200,\n \"error\": false\n}" tags: - Lesson security: [] /api/lembagas: get: summary: 'Get list of Lembaga' operationId: getListOfLembaga description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_lembaga\": string,\n \"info\": string,\n \"nama_lembaga\": string,\n \"alamat\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"nomor_telepon\": string,\n \"deskripsi\": string,\n \"instagram\": string,\n \"email\": string,\n \"web\": string\n }\n ]\n}" tags: - Talaqqi security: [] /api/pengajars: get: summary: 'Get list of Teacher' operationId: getListOfTeacher description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id_teacher\": int,\n \"id_user\": int,\n \"nama_pengajar\": string,\n \"info\": string,\n \"domisili\": string,\n \"instagram\": string,\n \"nomor_telepon\": string,\n \"profesi\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"sertifikats\": [\n {\n \"id_sertifikasipengajar\": string,\n \"id_pengajar\": string,\n \"sertifikasi\": string,\n \"sumber\": string\n }\n ],\n \"pengalamans\": [\n {\n \"id_pengalamanpengajar\": string,\n \"id_pengajar\": string,\n \"pengalaman\": string,\n \"tahun\": string,\n \"pengalaman_preview\": string\n }\n ],\n \"levels\": [\n {\n \"id_level\": int,\n \"level\": string,\n \"description\": string,\n \"s_active\": string\n }\n ],\n \"days\": [\n {\n \"id_day\": int,\n \"day\": string,\n \"times\": [\n {\n \"id_time\": int,\n \"time\": string,\n \"students\": [\n {\n \"id_student\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"status\": 200,\n \"error\": false\n}" tags: - Talaqqi security: [] /api/teachers: get: summary: 'Get list of Teacher' operationId: getListOfTeacher description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id_teacher\": int,\n \"id_user\": int,\n \"nama_pengajar\": string,\n \"info\": string,\n \"domisili\": string,\n \"instagram\": string,\n \"nomor_telepon\": string,\n \"profesi\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"sertifikats\": [\n {\n \"id_sertifikasipengajar\": string,\n \"id_pengajar\": string,\n \"sertifikasi\": string,\n \"sumber\": string\n }\n ],\n \"pengalamans\": [\n {\n \"id_pengalamanpengajar\": string,\n \"id_pengajar\": string,\n \"pengalaman\": string,\n \"tahun\": string,\n \"pengalaman_preview\": string\n }\n ],\n \"levels\": [\n {\n \"id_level\": int,\n \"level\": string,\n \"description\": string,\n \"s_active\": string\n }\n ],\n \"days\": [\n {\n \"id_day\": int,\n \"day\": string,\n \"times\": [\n {\n \"id_time\": int,\n \"time\": string,\n \"students\": [\n {\n \"id_student\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"status\": 200,\n \"error\": false\n}" tags: - Talaqqi security: [] '/api/teachers/{id}': get: summary: 'Get Teacher by ID' operationId: getTeacherByID description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id_teacher\": int,\n \"id_user\": int,\n \"nama_pengajar\": string,\n \"info\": string,\n \"domisili\": string,\n \"instagram\": string,\n \"nomor_telepon\": string,\n \"profesi\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"sertifikats\": [\n {\n \"id_sertifikasipengajar\": string,\n \"id_pengajar\": string,\n \"sertifikasi\": string,\n \"sumber\": string\n }\n ],\n \"pengalamans\": [\n {\n \"id_pengalamanpengajar\": string,\n \"id_pengajar\": string,\n \"pengalaman\": string,\n \"tahun\": string,\n \"pengalaman_preview\": string\n }\n ],\n \"levels\": [\n {\n \"id_level\": int,\n \"level\": string,\n \"description\": string,\n \"s_active\": string\n }\n ],\n \"days\": [\n {\n \"id_day\": int,\n \"day\": string,\n \"times\": [\n {\n \"id_time\": int,\n \"time\": string,\n \"students\": [\n {\n \"id_student\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"status\": 200,\n \"message\": \"Success\",\n \"error\": false\n}" tags: - Talaqqi security: [] parameters: - in: path name: id description: 'The ID of the teacher.' example: labore required: true schema: type: string /api/placement-test: get: summary: 'Get Placement Test' operationId: getPlacementTest description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_placement_test\": int,\n \"id_reviewer\": int,\n \"id_student\": int,\n \"test_schedule_at\": string,\n \"actual_tested_at\": string,\n \"level_result\": int,\n \"notes\": string,\n \"expired_date_at\": string,\n \"s_progress\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string,\n \"link_catatan\": string\n }\n ]\n}" tags: - 'Placement Test' /api/placement-test/register: post: summary: 'Register Placement Test' operationId: registerPlacementTest description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_placement_test\": int,\n \"id_reviewer\": int,\n \"id_student\": int,\n \"test_schedule_at\": string,\n \"actual_tested_at\": string,\n \"level_result\": int,\n \"notes\": string,\n \"expired_date_at\": string,\n \"s_progress\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string,\n \"link_catatan\": string\n }\n ]\n}" tags: - 'Placement Test' /api/packages: get: summary: 'Get list of Package' operationId: getListOfPackage description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_package\": int,\n \"name\": string,\n \"description\": string,\n \"price\": string,\n \"duration\": float,\n \"duration_in\": float,\n \"recurred_of_meeting\": string,\n \"level\": string,\n \"bill_type\": string,\n \"recurred_of_meeting_label\": string\n }\n ]\n}" tags: - Package security: [] '/api/packages/{id}': get: summary: 'Get Package by ID' operationId: getPackageByID description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_package\": int,\n \"name\": string,\n \"description\": string,\n \"price\": string,\n \"duration\": float,\n \"duration_in\": float,\n \"recurred_of_meeting\": string,\n \"level\": string,\n \"bill_type\": string,\n \"recurred_of_meeting_label\": string\n }\n ]\n}" tags: - Package security: [] parameters: - in: path name: id description: 'The ID of the package.' example: aliquam required: true schema: type: string /api/set-schedules: get: summary: '' operationId: getApiSetSchedules description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: status: 500 message: errorInfo: - 42S02 - 1146 - "Table 'u136005164_qiroah_dev.mpackage_students' doesn't exist" error: true properties: status: type: integer example: 500 message: type: object properties: errorInfo: type: array example: - 42S02 - 1146 - "Table 'u136005164_qiroah_dev.mpackage_students' doesn't exist" items: type: string error: type: boolean example: true tags: - Package security: [] /api/programs: get: summary: 'Get list of Program' operationId: getListOfProgram description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_program\": int,\n \"program_name\": string,\n \"url_register\": string,\n \"short_description\": string,\n \"description_html\": string,\n \"s_active\": int,\n \"program_type\": string,\n \"s_progress\": int\n }\n ]\n}" tags: - Program security: [] '/api/programs/{id}': get: summary: 'Get Program by ID' operationId: getProgramByID description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id_program\": int,\n \"program_name\": string,\n \"url_register\": string,\n \"short_description\": string,\n \"description_html\": string,\n \"s_active\": int,\n \"program_type\": string,\n \"s_progress\": int\n }\n ],\n \"status\": 200,\n \"message\": \"Success\",\n \"error\": false\n}" tags: - Program security: [] parameters: - in: path name: id description: 'The ID of the program.' example: rem required: true schema: type: string /api/teachers/slot-time: get: summary: 'Get List of Teacher Slot Time' operationId: getListOfTeacherSlotTime description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_teacher\": int,\n \"id_user\": int,\n \"nama_pengajar\": string,\n \"info\": string,\n \"domisili\": string,\n \"instagram\": string,\n \"nomor_telepon\": string,\n \"profesi\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"levels\": [\n {\n \"id_level\": int,\n \"level\": string,\n \"description\": string,\n \"s_active\": string\n }\n ],\n \"days\": [\n {\n \"id_day\": int,\n \"day\": string,\n \"times\": [\n {\n \"id_time\": int,\n \"time\": string,\n \"students\": [\n {\n \"id_student\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n}" tags: - 'Teacher Slot Time' security: [] '/api/teachers/{id}/slot-time': get: summary: 'Get Teacher Slot Time by ID' operationId: getTeacherSlotTimeByID description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"status\": 200,\n \"error\": false,\n \"data\": [\n {\n \"id_teacher\": int,\n \"id_user\": int,\n \"nama_pengajar\": string,\n \"info\": string,\n \"domisili\": string,\n \"instagram\": string,\n \"nomor_telepon\": string,\n \"profesi\": string,\n \"latitude\": string,\n \"longitude\": string,\n \"levels\": [\n {\n \"id_level\": int,\n \"level\": string,\n \"description\": string,\n \"s_active\": string\n }\n ],\n \"days\": [\n {\n \"id_day\": int,\n \"day\": string,\n \"times\": [\n {\n \"id_time\": int,\n \"time\": string,\n \"students\": [\n {\n \"id_student\": int,\n \"id_user\": int,\n \"name\": string,\n \"whatsapp\": string,\n \"gender\": string\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n}" tags: - 'Teacher Slot Time' security: [] parameters: - in: path name: id description: 'The ID of the teacher.' example: dolores required: true schema: type: string tags: - name: Account description: '' - name: Lesson description: '' - name: Talaqqi description: '' - name: 'Placement Test' description: '' - name: Package description: '' - name: Program description: '' - name: 'Teacher Slot Time' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by contacting the support of qiroah.com' security: - default: []