Medicasimple Public API

API documentation for connected clinic workflows.

Public API reference for developers building patient management, appointment, treatment planning, payment, inventory, and reporting integrations with Medicasimple.

Appointments & calendar

Calendar objects, appointment records, appointment types, and scheduling-related lookups.

10 operations
POST/api/v1/appointmentCreate appointment.
Example request
{
  "patientId": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "endDate": "2026-06-17T09:30:00Z",
  "description": "Clinic-facing example note.",
  "entryDate": "2026-06-17T09:30:00Z",
  "exitDate": "2026-06-17T09:30:00Z",
  "treatmentStartDate": "2026-06-17T09:30:00Z",
  "assigneeId": 12345,
  "statusId": 12345,
  "typeId": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "endDate": "2026-06-17T09:30:00Z",
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "code": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "entryDate": "2026-06-17T09:30:00Z",
  "exitDate": "2026-06-17T09:30:00Z"
}
POST/api/v1/appointment/daily/observationList daily patient observation reports.
Parametersquery:date, query:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "assigneeIds": [
    12345
  ],
  "statusIds": [
    12345
  ],
  "typeIds": [
    12345
  ],
  "isLate": true,
  "isPatientNullable": true,
  "isDebtor": true
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "appointment": {
          "id": "example",
          "clinicId": "example",
          "startDate": "example",
          "endDate": "example",
          "status": "example",
          "description": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "entryDate": "example",
          "exitDate": "example"
        },
        "activePlannedTreatmentAmount": 1250.0,
        "paidAmount": 1250.0,
        "completedTreatmentAmount": 1250.0,
        "activePlannedTreatmentCount": 12345,
        "paidCount": 12345,
        "completedTreatmentCount": 12345,
        "notes": [
          "example"
        ],
        "patientGroups": "example",
        "dailyCompletedTreatments": "example"
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
GET/api/v1/appointment/doctor/agendaView a doctor's daily agenda.
Parametersquery:doctorId*, query:date*, query:slotDuration
Example request
No request body.
Example response
{
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "doctorAgenda": [
    [
      "2026-06-17T09:30:00Z"
    ]
  ],
  "busySlots": "example"
}
POST/api/v1/appointment/filterSearch appointments.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "assigneeIds": [
    12345
  ],
  "statusIds": [
    12345
  ],
  "typeIds": [
    12345
  ],
  "isLate": true,
  "isPatientNullable": true,
  "isDebtor": true
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "startDate": "2026-06-17T09:30:00Z",
      "endDate": "2026-06-17T09:30:00Z",
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "code": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "entryDate": "2026-06-17T09:30:00Z",
      "exitDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/appointment/patient/{patientId}Get a patient's appointments.
Parameterspath:patientId*, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "startDate": "2026-06-17T09:30:00Z",
      "endDate": "2026-06-17T09:30:00Z",
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "description": "Clinic-facing example note.",
      "title": "Treatment plan",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "type": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "task": true,
        "durationAsMinute": 12345,
        "active": true,
        "color": "#1d78b8",
        "isDefault": true,
        "recall": true
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/appointment/{id}Get appointment by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "endDate": "2026-06-17T09:30:00Z",
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "code": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "entryDate": "2026-06-17T09:30:00Z",
  "exitDate": "2026-06-17T09:30:00Z"
}
PUT/api/v1/appointment/{id}Update appointment by ID.
Parameterspath:id*
Example request
{
  "patientId": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "endDate": "2026-06-17T09:30:00Z",
  "description": "Clinic-facing example note.",
  "entryDate": "2026-06-17T09:30:00Z",
  "exitDate": "2026-06-17T09:30:00Z",
  "treatmentStartDate": "2026-06-17T09:30:00Z",
  "assigneeId": 12345,
  "statusId": 12345,
  "typeId": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "endDate": "2026-06-17T09:30:00Z",
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "code": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "entryDate": "2026-06-17T09:30:00Z",
  "exitDate": "2026-06-17T09:30:00Z"
}
DELETE/api/v1/appointment/{id}Delete appointment by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
GET/api/v1/clinic/appointment/type/activeGet Active Task Management Types.
Parametersquery:task
Example request
No request body.
Example response
[
  {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "task": true,
    "durationAsMinute": 12345,
    "active": true,
    "color": "#1d78b8",
    "isDefault": true,
    "recall": true
  }
]
GET/api/v1/clinic/appointment/type/allGet All Task Management Types.
Parametersquery:task
Example request
No request body.
Example response
[
  {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "task": true,
    "durationAsMinute": 12345,
    "active": true,
    "color": "#1d78b8",
    "isDefault": true,
    "recall": true
  }
]

Patient profile

Patient records, patient groups, segments, custom forms, and profile-level data.

43 operations
POST/api/v1/clinic/contact-logCreate contact log.
Example request
{
  "status": "PENDING",
  "description": "Clinic-facing example note.",
  "userClinicId": 12345,
  "employeeClinicId": 12345,
  "type": "INCOMING_CALL",
  "interactionDate": "2026-06-17T09:30:00Z",
  "receiver": "example"
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "status": "PENDING",
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "employeeClinic": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "type": "INCOMING_CALL",
  "interactionDate": "2026-06-17T09:30:00Z"
}
GET/api/v1/clinic/contact-log/allList contact logs.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "status": "PENDING",
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "userClinic": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "employeeClinic": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "type": "INCOMING_CALL",
      "interactionDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/clinic/contact-log/filterSearch contact logs.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "userClinicIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "types": [
    "INCOMING_CALL"
  ]
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "status": "PENDING",
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "userClinic": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "employeeClinic": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "type": "INCOMING_CALL",
      "interactionDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/clinic/contact-log/{id}Get contact log by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "status": "PENDING",
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "employeeClinic": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "type": "INCOMING_CALL",
  "interactionDate": "2026-06-17T09:30:00Z"
}
PUT/api/v1/clinic/contact-log/{id}Update contact log by ID.
Parameterspath:id*
Example request
{
  "status": "PENDING",
  "description": "Clinic-facing example note.",
  "userClinicId": 12345,
  "employeeClinicId": 12345,
  "type": "INCOMING_CALL",
  "interactionDate": "2026-06-17T09:30:00Z",
  "receiver": "example"
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "status": "PENDING",
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "employeeClinic": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "type": "INCOMING_CALL",
  "interactionDate": "2026-06-17T09:30:00Z"
}
DELETE/api/v1/clinic/contact-log/{id}Delete contact log by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/form-responseCreate custom form.
Example request
{
  "templateId": 12345,
  "answersMap": "example",
  "userClinicId": 12345,
  "signature": "example"
}
Example response
{
  "id": 12345,
  "status": "CREATED",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "template": {
    "id": 12345,
    "email": "patient@example.com",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "type": "ANAMNESIS",
    "signatureRequired": true,
    "active": true,
    "customArea": "example",
    "questionList": [
      {
        "id": 12345,
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "question": "example",
        "type": "MULTI_CHOICE",
        "fillField": "FIRST_NAME",
        "fillFieldAction": "OVERRIDE",
        "containOtherOption": true,
        "answerOption": [
          "example"
        ],
        "index": 12345
      }
    ]
  },
  "answersMap": "example",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "count": 12345,
  "link": "example",
  "submitDate": "2026-06-17T09:30:00Z"
}
GET/api/v1/form-response/allList custom form responses.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "status": "CREATED",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "template": {
        "id": 12345,
        "email": "patient@example.com",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "type": "ANAMNESIS",
        "signatureRequired": true,
        "active": true,
        "customArea": "example",
        "questionList": [
          "example"
        ]
      },
      "answersMap": "example",
      "userClinic": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "count": 12345,
      "link": "example",
      "submitDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/form-response/filterSearch custom form responses.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "statuses": [
    "CREATED"
  ],
  "templateId": 12345
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "status": "CREATED",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "template": {
        "id": 12345,
        "email": "patient@example.com",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "type": "ANAMNESIS",
        "signatureRequired": true,
        "active": true,
        "customArea": "example",
        "questionList": [
          "example"
        ]
      },
      "answersMap": "example",
      "userClinic": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "count": 12345,
      "link": "example",
      "submitDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/form-response/linkCreate a shareable custom form link.
Parametersquery:templateId*, query:userClinicId*
Example request
No request body.
Example response
"example"
GET/api/v1/form-response/patient/{patientId}Review submitted custom form responses.
Parameterspath:patientId*, query:templateId, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "status": "CREATED",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "template": {
        "id": 12345,
        "email": "patient@example.com",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "type": "ANAMNESIS",
        "signatureRequired": true,
        "active": true,
        "customArea": "example",
        "questionList": [
          "example"
        ]
      },
      "answersMap": "example",
      "userClinic": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "count": 12345,
      "link": "example",
      "submitDate": "2026-06-17T09:30:00Z"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/form-response/template/filterSearch custom form responses.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "statuses": [
    "CREATED"
  ],
  "templateId": 12345
}
Example response
{
  "responseList": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "status": "CREATED",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "template": {
          "id": "example",
          "email": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "title": "example",
          "type": "example",
          "signatureRequired": "example",
          "active": "example",
          "customArea": "example",
          "questionList": "example"
        },
        "answersMap": "example",
        "userClinic": {
          "id": "example",
          "firstName": "example",
          "lastName": "example",
          "email": "example",
          "phoneNumber": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "title": "example",
          "photo": "example",
          "clinicFormId": "example"
        },
        "count": 12345,
        "link": "example",
        "submitDate": "2026-06-17T09:30:00Z"
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "questionList": [
    {
      "id": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "question": "example",
      "type": "MULTI_CHOICE",
      "fillField": "FIRST_NAME",
      "fillFieldAction": "OVERRIDE",
      "containOtherOption": true,
      "answerOption": [
        "example"
      ],
      "index": 12345
    }
  ],
  "formTemplateResource": {
    "id": 12345,
    "email": "patient@example.com",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "type": "ANAMNESIS",
    "signatureRequired": true,
    "active": true,
    "customArea": "example",
    "questionList": [
      {
        "id": 12345,
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "question": "example",
        "type": "MULTI_CHOICE",
        "fillField": "FIRST_NAME",
        "fillFieldAction": "OVERRIDE",
        "containOtherOption": true,
        "answerOption": [
          "example"
        ],
        "index": 12345
      }
    ]
  }
}
GET/api/v1/form-response/user-clinic/templatesList custom form templates with response counts.
Parametersquery:userClinicId*
Example request
No request body.
Example response
[
  {
    "id": 12345,
    "status": "CREATED",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "template": {
      "id": 12345,
      "email": "patient@example.com",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "type": "ANAMNESIS",
      "signatureRequired": true,
      "active": true,
      "customArea": "example",
      "questionList": [
        {
          "id": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "question": "example",
          "type": "example",
          "fillField": "example",
          "fillFieldAction": "example",
          "containOtherOption": "example",
          "answerOption": "example",
          "index": "example"
        }
      ]
    },
    "answersMap": "example",
    "userClinic": {
      "id": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "photo": "example",
      "clinicFormId": 12345
    },
    "count": 12345,
    "link": "example",
    "submitDate": "2026-06-17T09:30:00Z"
  }
]
GET/api/v1/form-response/{id}Get custom form by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "status": "CREATED",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "template": {
    "id": 12345,
    "email": "patient@example.com",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "type": "ANAMNESIS",
    "signatureRequired": true,
    "active": true,
    "customArea": "example",
    "questionList": [
      {
        "id": 12345,
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "question": "example",
        "type": "MULTI_CHOICE",
        "fillField": "FIRST_NAME",
        "fillFieldAction": "OVERRIDE",
        "containOtherOption": true,
        "answerOption": [
          "example"
        ],
        "index": 12345
      }
    ]
  },
  "answersMap": "example",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "count": 12345,
  "link": "example",
  "submitDate": "2026-06-17T09:30:00Z"
}
PUT/api/v1/form-response/{id}Update custom form by ID.
Parameterspath:id*
Example request
{
  "templateId": 12345,
  "answersMap": "example",
  "userClinicId": 12345,
  "signature": "example"
}
Example response
{
  "id": 12345,
  "status": "CREATED",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "template": {
    "id": 12345,
    "email": "patient@example.com",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "type": "ANAMNESIS",
    "signatureRequired": true,
    "active": true,
    "customArea": "example",
    "questionList": [
      {
        "id": 12345,
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "question": "example",
        "type": "MULTI_CHOICE",
        "fillField": "FIRST_NAME",
        "fillFieldAction": "OVERRIDE",
        "containOtherOption": true,
        "answerOption": [
          "example"
        ],
        "index": 12345
      }
    ]
  },
  "answersMap": "example",
  "userClinic": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "count": 12345,
  "link": "example",
  "submitDate": "2026-06-17T09:30:00Z"
}
DELETE/api/v1/form-response/{id}Delete custom form by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/employee/clinic/filterSearch Employee Clinics.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "onlyEnabled": true,
  "positionId": 12345,
  "permissionId": 12345
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "nationalId": 12345,
      "appointmentDoctors": [
        12345
      ],
      "premiumPercentage": 123.45,
      "availableHours": [
        [
          "example"
        ]
      ]
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/employee/clinic/{id}Get Employee Clinic by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "nationalId": 12345,
  "appointmentDoctors": [
    12345
  ],
  "premiumPercentage": 123.45,
  "availableHours": [
    [
      "example"
    ]
  ]
}
PUT/api/v1/employee/clinic/{id}/permissionUpdate employee.
Parameterspath:id*, query:permission*, query:dailyBalanceAccessDays
Example request
No request body.
Example response
{
  "status": 12345,
  "body": "example",
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/clinic/organizationCreate institution.
Example request
{
  "name": "Jane Doe",
  "email": "patient@example.com",
  "organizationId": 12345,
  "subId": 12345,
  "address": "Example clinic address",
  "country": "example",
  "city": "example",
  "district": "example",
  "gsm": "example",
  "tax": "example"
}
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "email": "patient@example.com",
  "organization": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "subId": 12345,
  "address": "Example clinic address",
  "country": "example",
  "city": "example",
  "district": "example",
  "gsm": "example"
}
GET/api/v1/clinic/organization/allList clinic organizations.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "name": "Jane Doe",
      "email": "patient@example.com",
      "organization": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "subId": 12345,
      "address": "Example clinic address",
      "country": "example",
      "city": "example",
      "district": "example",
      "gsm": "example"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/clinic/organization/filterSearch clinic organizations.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "organizationIds": [
    12345
  ],
  "onlyActive": true,
  "expiryStartDate": 12345,
  "expiryEndDate": 12345,
  "currencyId": 12345,
  "onlyNonZeroBalance": true
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "name": "Jane Doe",
      "email": "patient@example.com",
      "organization": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "subId": 12345,
      "address": "Example clinic address",
      "country": "example",
      "city": "example",
      "district": "example",
      "gsm": "example"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/clinic/organization/{id}Get institution by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "email": "patient@example.com",
  "organization": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "subId": 12345,
  "address": "Example clinic address",
  "country": "example",
  "city": "example",
  "district": "example",
  "gsm": "example"
}
PUT/api/v1/clinic/organization/{id}Update institution by ID.
Parameterspath:id*
Example request
{
  "name": "Jane Doe",
  "email": "patient@example.com",
  "organizationId": 12345,
  "subId": 12345,
  "address": "Example clinic address",
  "country": "example",
  "city": "example",
  "district": "example",
  "gsm": "example",
  "tax": "example"
}
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "email": "patient@example.com",
  "organization": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "subId": 12345,
  "address": "Example clinic address",
  "country": "example",
  "city": "example",
  "district": "example",
  "gsm": "example"
}
DELETE/api/v1/clinic/organization/{id}Delete institution by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/media/filterFilter clinic media.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "isFile": true,
  "minSize": 12345,
  "maxSize": 12345,
  "userClinicId": 12345,
  "mediaType": "IMAGE",
  "xrayType": "JUSTIFICATION",
  "xrayGrade": "ACCEPTABLE"
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "mediaUrl": "https://example.com/resource",
      "title": "Treatment plan",
      "note": "Clinic-facing example note.",
      "isFile": true,
      "extension": "example",
      "transcribedText": "example"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/media/upload-mediaUpload patient media.
Parametersquery:note, query:title, query:userClinicId, query:mediaType, query:xrayType, query:xrayGrade, query:hidden
Example request
{
  "file": "example"
}
Example response
"example"
GET/api/v1/media/user-clinic/{id}Get media by patient ID.
Parameterspath:id*, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "mediaUrl": "https://example.com/resource",
      "title": "Treatment plan",
      "note": "Clinic-facing example note.",
      "isFile": true,
      "extension": "example",
      "transcribedText": "example"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
DELETE/api/v1/media/{id}Delete media.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/clinic/userCreate a new patient.
Example request
{
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "mainDoctorId": 12345,
  "title": "Treatment plan",
  "clinicFormId": 12345,
  "location": {
    "id": 12345,
    "country": "example",
    "province": "example",
    "county": "example",
    "neighborhood": "example",
    "addressLine1": "Example clinic address",
    "postalCode": "example"
  },
  "countryCode": "example",
  "nationality": "example"
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "mainDoctor": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "foreignPatientType": "HEALTH_TOURISM"
}
GET/api/v1/clinic/user/allList clinic team members.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "mainDoctor": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "foreignPatientType": "HEALTH_TOURISM"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/clinic/user/balanceGet patient balance by patient ID.
Parametersquery:id*
Example request
No request body.
Example response
"example"
GET/api/v1/clinic/user/by-contactGet patient list by contact value.
Parametersquery:contactValue*, query:countryCode
Example request
No request body.
Example response
[
  {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "mainDoctor": {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "nationalId": 12345,
      "appointmentDoctors": [
        12345
      ],
      "premiumPercentage": 123.45,
      "availableHours": [
        [
          "example"
        ]
      ]
    },
    "foreignPatientType": "HEALTH_TOURISM"
  }
]
POST/api/v1/clinic/user/filterSearch clinic team members.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example"
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "mainDoctor": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "foreignPatientType": "HEALTH_TOURISM"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/clinic/user/patient-id-listCreate patient.
Example request
{
  "objectList": [
    12345
  ]
}
Example response
"example"
GET/api/v1/clinic/user/searchSearch patient records by text query.
Parametersquery:page, query:size, query:sort, query:query, query:externalId
Example request
No request body.
Example response
{
  "result": [
    {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "mainDoctor": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "foreignPatientType": "HEALTH_TOURISM"
    }
  ],
  "count": 12345
}
GET/api/v1/clinic/user/{id}Get patient by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "mainDoctor": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "foreignPatientType": "HEALTH_TOURISM"
}
PUT/api/v1/clinic/user/{id}Update patient by ID.
Parameterspath:id*
Example request
{
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "mainDoctorId": 12345,
  "title": "Treatment plan",
  "clinicFormId": 12345,
  "location": {
    "id": 12345,
    "country": "example",
    "province": "example",
    "county": "example",
    "neighborhood": "example",
    "addressLine1": "Example clinic address",
    "postalCode": "example"
  },
  "countryCode": "example",
  "nationality": "example"
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "firstName": "Jane",
  "lastName": "Doe",
  "email": "patient@example.com",
  "phoneNumber": "+905*********",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "mainDoctor": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "foreignPatientType": "HEALTH_TOURISM"
}
DELETE/api/v1/clinic/user/{id}Delete patient by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
PUT/api/v1/clinic/user/{id}/external-idUpdate the external ID of a patient.
Parameterspath:id*, query:externalId*
Example request
No request body.
Example response
{
  "success": true
}
PUT/api/v1/clinic/user/{id}/main-doctorUpdate the main doctor of a patient.
Parameterspath:id*, query:mainDoctorId*
Example request
No request body.
Example response
{
  "success": true
}
GET/api/v1/clinic/user/{id}/patient/groupGet patient group assignments of a patient.
Parameterspath:id*
Example request
No request body.
Example response
{
  "clinicPatientGroupList": [
    {
      "id": 12345,
      "name": "Jane Doe",
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "createdBy": 12345,
      "updatedBy": 12345,
      "createdByUser": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "createdBy": 12345,
        "updatedBy": 12345
      },
      "deleted": true,
      "discount": 123.45
    }
  ],
  "groupIdList": [
    12345
  ]
}
POST/api/v1/clinic/user/{id}/patient/groupAssign patient groups to a patient.
Parameterspath:id*, query:groupIdList*
Example request
No request body.
Example response
{
  "success": true
}

Treatment planning

Treatment plans, treatment plan details, treatment items, and treatment sessions.

32 operations
POST/api/v1/treatment-plan-detailCreate treatment item.
Example request
{
  "treatmentPlanId": 12345,
  "clinicOperationId": 12345,
  "statusId": 12345,
  "currencyId": 12345,
  "assigneeId": 12345,
  "treatmentSessionId": 12345,
  "targetTooth": 12345,
  "duration": 12345,
  "exchangedAmount": 1250.0,
  "progressPaymentAmount": 1250.0
}
Example response
{
  "id": 12345,
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example",
    "trName": "Jane Doe",
    "enName": "Jane Doe"
  },
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "treatmentPlanId": 12345,
  "clinicOperation": {
    "id": 12345,
    "name": "Jane Doe",
    "currency": {
      "id": 12345,
      "code": "example",
      "factor": 123.45,
      "symbol": "example",
      "isoCode": "example"
    },
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "price": 1250.0,
    "trName": "Jane Doe",
    "enName": "Jane Doe",
    "defaultDuration": 12345,
    "active": true
  },
  "rawPrice": 1250.0,
  "rawCurrency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "progressPaymentAmount": 1250.0
}
GET/api/v1/treatment-plan-detail/allList treatment plan details.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe",
        "enName": "Jane Doe"
      },
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "treatmentPlanId": 12345,
      "clinicOperation": {
        "id": 12345,
        "name": "Jane Doe",
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "price": 1250.0,
        "trName": "Jane Doe",
        "enName": "Jane Doe",
        "defaultDuration": 12345,
        "active": true
      },
      "rawPrice": 1250.0,
      "rawCurrency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "progressPaymentAmount": 1250.0
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/treatment-plan-detail/allCreate multiple treatment plan details.
Example request
[
  {
    "treatmentPlanId": 12345,
    "clinicOperationId": 12345,
    "statusId": 12345,
    "currencyId": 12345,
    "assigneeId": 12345,
    "treatmentSessionId": 12345,
    "targetTooth": 12345,
    "duration": 12345,
    "exchangedAmount": 1250.0,
    "progressPaymentAmount": 1250.0
  }
]
Example response
{
  "status": 12345,
  "body": [
    {
      "id": 12345,
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe",
        "enName": "Jane Doe"
      },
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "treatmentPlanId": 12345,
      "clinicOperation": {
        "id": 12345,
        "name": "Jane Doe",
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "price": 1250.0,
        "trName": "Jane Doe",
        "enName": "Jane Doe",
        "defaultDuration": 12345,
        "active": true
      },
      "rawPrice": 1250.0,
      "rawCurrency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "progressPaymentAmount": 1250.0
    }
  ],
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
PUT/api/v1/treatment-plan-detail/completed-atSet Completion Date for Treatment Plan Detail.
Parametersquery:date*, query:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/treatment-plan-detail/completed-reportGet Completed Treatments Report.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "clinicOperationIds": [
    12345
  ],
  "minPrice": 1250.0,
  "maxPrice": 1250.0,
  "currencyId": 12345
}
Example response
{
  "page": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "status": {
          "id": "example",
          "name": "example",
          "code": "example",
          "trName": "example",
          "enName": "example"
        },
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "treatmentPlanId": 12345,
        "clinicOperation": {
          "id": "example",
          "name": "example",
          "currency": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "price": "example",
          "trName": "example",
          "enName": "example",
          "defaultDuration": "example",
          "active": "example"
        },
        "rawPrice": 1250.0,
        "rawCurrency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "progressPaymentAmount": 1250.0
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "totalPrices": 1250,
  "currencyBasedExchangedAmounts": 1250,
  "totalExchangedAmount": 1250.0,
  "totalPatientCount": 1250
}
POST/api/v1/treatment-plan-detail/filterSearch treatment plan details.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "clinicOperationIds": [
    12345
  ],
  "minPrice": 1250.0,
  "maxPrice": 1250.0,
  "currencyId": 12345
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe",
        "enName": "Jane Doe"
      },
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "treatmentPlanId": 12345,
      "clinicOperation": {
        "id": 12345,
        "name": "Jane Doe",
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "price": 1250.0,
        "trName": "Jane Doe",
        "enName": "Jane Doe",
        "defaultDuration": 12345,
        "active": true
      },
      "rawPrice": 1250.0,
      "rawCurrency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "progressPaymentAmount": 1250.0
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/treatment-plan-detail/patient/{patientId}Get treatment item.
Parameterspath:patientId*
Example request
No request body.
Example response
{
  "status": 12345,
  "body": [
    {
      "id": 12345,
      "status": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe",
        "enName": "Jane Doe"
      },
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "treatmentPlanId": 12345,
      "clinicOperation": {
        "id": 12345,
        "name": "Jane Doe",
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "price": 1250.0,
        "trName": "Jane Doe",
        "enName": "Jane Doe",
        "defaultDuration": 12345,
        "active": true
      },
      "rawPrice": 1250.0,
      "rawCurrency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "progressPaymentAmount": 1250.0
    }
  ],
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
PUT/api/v1/treatment-plan-detail/statusUpdate Status of Treatment Plan Details.
Parametersquery:ids*, query:statusId*
Example request
No request body.
Example response
true
PUT/api/v1/treatment-plan-detail/toothUpdate Target Tooth of Treatment Plan Detail.
Parametersquery:id*, query:targetTooth*
Example request
No request body.
Example response
true
GET/api/v1/treatment-plan-detail/{id}Get treatment item by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example",
    "trName": "Jane Doe",
    "enName": "Jane Doe"
  },
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "treatmentPlanId": 12345,
  "clinicOperation": {
    "id": 12345,
    "name": "Jane Doe",
    "currency": {
      "id": 12345,
      "code": "example",
      "factor": 123.45,
      "symbol": "example",
      "isoCode": "example"
    },
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "price": 1250.0,
    "trName": "Jane Doe",
    "enName": "Jane Doe",
    "defaultDuration": 12345,
    "active": true
  },
  "rawPrice": 1250.0,
  "rawCurrency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "progressPaymentAmount": 1250.0
}
PUT/api/v1/treatment-plan-detail/{id}Update treatment item by ID.
Parameterspath:id*
Example request
{
  "treatmentPlanId": 12345,
  "clinicOperationId": 12345,
  "statusId": 12345,
  "currencyId": 12345,
  "assigneeId": 12345,
  "treatmentSessionId": 12345,
  "targetTooth": 12345,
  "duration": 12345,
  "exchangedAmount": 1250.0,
  "progressPaymentAmount": 1250.0
}
Example response
{
  "id": 12345,
  "status": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example",
    "trName": "Jane Doe",
    "enName": "Jane Doe"
  },
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "treatmentPlanId": 12345,
  "clinicOperation": {
    "id": 12345,
    "name": "Jane Doe",
    "currency": {
      "id": 12345,
      "code": "example",
      "factor": 123.45,
      "symbol": "example",
      "isoCode": "example"
    },
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "price": 1250.0,
    "trName": "Jane Doe",
    "enName": "Jane Doe",
    "defaultDuration": 12345,
    "active": true
  },
  "rawPrice": 1250.0,
  "rawCurrency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "progressPaymentAmount": 1250.0
}
DELETE/api/v1/treatment-plan-detail/{id}Delete treatment item by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/treatment-planCreate treatment plan.
Example request
{
  "patientId": 12345,
  "assigneeId": 12345,
  "title": "Treatment plan",
  "active": true,
  "diagnosis": true
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "patient": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "paidAmount": 1250.0,
  "progressPaymentAmount": 1250.0,
  "totalAmount": 1250.0,
  "title": "Treatment plan"
}
GET/api/v1/treatment-plan/allList treatment plans.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "patient": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "paidAmount": 1250.0,
      "progressPaymentAmount": 1250.0,
      "totalAmount": 1250.0,
      "title": "Treatment plan"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
PUT/api/v1/treatment-plan/assigneeUpdate treatment plan assignee.
Parametersquery:planId*, query:assigneeId*
Example request
No request body.
Example response
true
POST/api/v1/treatment-plan/copyCopy treatment plan to another patient.
Parametersquery:sourcePlanId*, query:targetPatientId*, query:customTitle
Example request
No request body.
Example response
{
  "status": 12345,
  "body": {
    "id": 12345,
    "clinicId": 12345,
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "assignee": {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "nationalId": 12345,
      "appointmentDoctors": [
        12345
      ],
      "premiumPercentage": 123.45,
      "availableHours": [
        [
          "example"
        ]
      ]
    },
    "patient": {
      "id": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "photo": "example",
      "clinicFormId": 12345
    },
    "paidAmount": 1250.0,
    "progressPaymentAmount": 1250.0,
    "totalAmount": 1250.0,
    "title": "Treatment plan"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
GET/api/v1/treatment-plan/detailedGet Treatment Plan, Sessions inside of plan and TreatmentPlanDetails inside of Sessions.
Parametersquery:planId*
Example request
No request body.
Example response
{
  "id": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "treatmentPlan": {
    "id": 12345,
    "clinicId": 12345,
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "assignee": {
      "id": 12345,
      "clinicId": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "nationalId": 12345,
      "appointmentDoctors": [
        12345
      ],
      "premiumPercentage": 123.45,
      "availableHours": [
        [
          "example"
        ]
      ]
    },
    "patient": {
      "id": 12345,
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "patient@example.com",
      "phoneNumber": "+905*********",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "photo": "example",
      "clinicFormId": 12345
    },
    "paidAmount": 1250.0,
    "progressPaymentAmount": 1250.0,
    "totalAmount": 1250.0,
    "title": "Treatment plan"
  },
  "sessionGroupList": [
    {
      "session": {
        "id": 12345,
        "startDate": "2026-06-17T09:30:00Z",
        "assignee": {
          "id": "example",
          "clinicId": "example",
          "firstName": "example",
          "lastName": "example",
          "email": "example",
          "phoneNumber": "example",
          "nationalId": "example",
          "appointmentDoctors": "example",
          "premiumPercentage": "example",
          "availableHours": "example"
        }
      },
      "groupMap": "example",
      "statistics": {
        "completedCount": 12345,
        "totalCount": 1250,
        "totalProgressPaymentAmount": 1250.0,
        "totalExchangedAmount": 1250.0,
        "completedProgressPaymentAmount": 1250.0,
        "completedExchangedAmount": 1250.0
      },
      "currencyBasedCompletion": "TRY"
    }
  ],
  "statistics": {
    "completedCount": 12345,
    "totalCount": 1250,
    "totalProgressPaymentAmount": 1250.0,
    "totalExchangedAmount": 1250.0,
    "completedProgressPaymentAmount": 1250.0,
    "completedExchangedAmount": 1250.0
  },
  "currencyBasedCompletion": "TRY"
}
POST/api/v1/treatment-plan/filterSearch treatment plans.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "clinicOperationIds": [
    12345
  ],
  "diagnosis": true,
  "active": true,
  "treatmentPlanStatus": "UNCOMPLETED"
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "patient": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "paidAmount": 1250.0,
      "progressPaymentAmount": 1250.0,
      "totalAmount": 1250.0,
      "title": "Treatment plan"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
PUT/api/v1/treatment-plan/lock-statusUpdate treatment plan lock status.
Parametersquery:planId*, query:lock*
Example request
No request body.
Example response
{
  "status": 12345,
  "body": true,
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
GET/api/v1/treatment-plan/patient/{patientId}List treatment plans.
Parameterspath:patientId*, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      },
      "patient": {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "title": "Treatment plan",
        "photo": "example",
        "clinicFormId": 12345
      },
      "paidAmount": 1250.0,
      "progressPaymentAmount": 1250.0,
      "totalAmount": 1250.0,
      "title": "Treatment plan"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/treatment-plan/shareGet Treatment Plan share url by id.
Parametersquery:planId*, query:proformaTemplateId
Example request
No request body.
Example response
"example"
PUT/api/v1/treatment-plan/statusUpdate treatment plan status.
Parametersquery:planId*, query:active*
Example request
No request body.
Example response
true
PUT/api/v1/treatment-plan/titleUpdate treatment plan title.
Parametersquery:planId*, query:title*
Example request
No request body.
Example response
true
GET/api/v1/treatment-plan/{id}Get treatment plan by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "patient": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "paidAmount": 1250.0,
  "progressPaymentAmount": 1250.0,
  "totalAmount": 1250.0,
  "title": "Treatment plan"
}
PUT/api/v1/treatment-plan/{id}Update treatment plan by ID.
Parameterspath:id*
Example request
{
  "patientId": 12345,
  "assigneeId": 12345,
  "title": "Treatment plan",
  "active": true,
  "diagnosis": true
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  },
  "patient": {
    "id": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "title": "Treatment plan",
    "photo": "example",
    "clinicFormId": 12345
  },
  "paidAmount": 1250.0,
  "progressPaymentAmount": 1250.0,
  "totalAmount": 1250.0,
  "title": "Treatment plan"
}
DELETE/api/v1/treatment-plan/{id}Delete treatment plan by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/treatment-sessionCreate treatment session.
Example request
{
  "startDate": "2026-06-17T09:30:00Z",
  "assigneeId": 12345,
  "treatmentPlanId": 12345
}
Example response
{
  "id": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  }
}
GET/api/v1/treatment-session/allList treatment sessions.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "startDate": "2026-06-17T09:30:00Z",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/treatment-session/filterSearch treatment sessions.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example"
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "startDate": "2026-06-17T09:30:00Z",
      "assignee": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/treatment-session/{id}Get treatment session by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  }
}
PUT/api/v1/treatment-session/{id}Update treatment session by ID.
Parameterspath:id*
Example request
{
  "startDate": "2026-06-17T09:30:00Z",
  "assigneeId": 12345,
  "treatmentPlanId": 12345
}
Example response
{
  "id": 12345,
  "startDate": "2026-06-17T09:30:00Z",
  "assignee": {
    "id": 12345,
    "clinicId": 12345,
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "patient@example.com",
    "phoneNumber": "+905*********",
    "nationalId": 12345,
    "appointmentDoctors": [
      12345
    ],
    "premiumPercentage": 123.45,
    "availableHours": [
      [
        "example"
      ]
    ]
  }
}
DELETE/api/v1/treatment-session/{id}Delete treatment session by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}

Payments & accounts

Payments, payment plans, payment notes, proformas, and current-account workflows.

18 operations
POST/api/v1/financeCreate Finance Record.
Example request
{
  "description": "Clinic-facing example note.",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "clinicOrganizationId": 12345,
  "financeTransactionTypeId": 12345,
  "financeActionTypeId": 12345,
  "portfolioId": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "expiryDate": "2026-06-17T09:30:00Z",
  "currencyId": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "clinicOrganization": {
    "id": 12345,
    "name": "Jane Doe",
    "email": "patient@example.com",
    "organization": {
      "id": 12345,
      "name": "Jane Doe",
      "code": "example"
    },
    "subId": 12345,
    "address": "Example clinic address",
    "country": "example",
    "city": "example",
    "district": "example",
    "gsm": "example"
  },
  "financeTransactionType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "financeActionType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example",
    "trName": "Jane Doe"
  }
}
POST/api/v1/finance/filterFilter finance operations by startDate, endDate, patientIds, employeeClinicIds, clinicOrganizationIds, financeActionTypes, financeTransactionTypes, minPrice, maxPrice, currencyId.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "clinicOrganizationIds": [
    12345
  ],
  "organizationIds": [
    12345
  ],
  "financeActionTypeIds": [
    12345
  ],
  "financeTransactionTypeIds": [
    12345
  ],
  "categoryIds": [
    12345
  ]
}
Example response
{
  "finances": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "paidAmount": 1250.0,
        "clinicOrganization": {
          "id": "example",
          "name": "example",
          "email": "example",
          "organization": "example",
          "subId": "example",
          "address": "example",
          "country": "example",
          "city": "example",
          "district": "example",
          "gsm": "example"
        },
        "financeTransactionType": {
          "id": "example",
          "name": "example",
          "code": "example"
        },
        "financeActionType": {
          "id": "example",
          "name": "example",
          "code": "example",
          "trName": "example"
        }
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "totalPrices": [
    {
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "totalPrice": 1250.0,
      "actionType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe"
      },
      "exchangedAmount": 1250.0
    }
  ]
}
PUT/api/v1/finance/{id}Update Finance Record.
Parameterspath:id*
Example request
{
  "description": "Clinic-facing example note.",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "clinicOrganizationId": 12345,
  "financeTransactionTypeId": 12345,
  "financeActionTypeId": 12345,
  "portfolioId": 12345,
  "createdAt": "2026-06-17T09:30:00Z",
  "expiryDate": "2026-06-17T09:30:00Z",
  "currencyId": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "clinicOrganization": {
    "id": 12345,
    "name": "Jane Doe",
    "email": "patient@example.com",
    "organization": {
      "id": 12345,
      "name": "Jane Doe",
      "code": "example"
    },
    "subId": 12345,
    "address": "Example clinic address",
    "country": "example",
    "city": "example",
    "district": "example",
    "gsm": "example"
  },
  "financeTransactionType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "financeActionType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example",
    "trName": "Jane Doe"
  }
}
DELETE/api/v1/finance/{id}Delete Finance Record.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
POST/api/v1/paymentCreate a New Payment Transaction.
Example request
{
  "patientId": 12345,
  "doctorId": 12345,
  "description": "Clinic-facing example note.",
  "treatmentPlanId": 12345,
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "currencyId": 12345,
  "treatmentPlanDetailId": 12345,
  "paymentTypeId": 12345,
  "createdBy": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "paymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "returnPaymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  }
}
POST/api/v1/payment/end-of-dayGenerate Payment Report for a Date Range.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "doctorIds": [
    12345
  ],
  "paymentTypeIdList": [
    12345
  ],
  "minPrice": 1250.0,
  "maxPrice": 1250.0,
  "currencyId": 12345,
  "clinicPatientGroupIdList": [
    12345
  ]
}
Example response
{
  "payments": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "paidAmount": 1250.0,
        "exchangedAmount": 1250.0,
        "paymentType": {
          "id": "example",
          "name": "example",
          "code": "example"
        },
        "returnPaymentType": {
          "id": "example",
          "name": "example",
          "code": "example"
        }
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "typeAmount": [
    {
      "amount": 1250.0,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "type": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "exchangedAmount": 1250.0
    }
  ],
  "typeOrganizationAmounts": [
    {
      "amount": 1250.0,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "type": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "portfolio": {
        "id": 12345,
        "name": "Jane Doe",
        "email": "patient@example.com",
        "organization": {
          "id": "example",
          "name": "example",
          "code": "example"
        },
        "subId": 12345,
        "address": "Example clinic address",
        "country": "example",
        "city": "example",
        "district": "example",
        "gsm": "example"
      },
      "exchangedAmount": 1250.0
    }
  ],
  "totalMap": 1250,
  "financeTotalPrices": [
    {
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "totalPrice": 1250.0,
      "actionType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example",
        "trName": "Jane Doe"
      },
      "exchangedAmount": 1250.0
    }
  ]
}
POST/api/v1/payment/filterSearch payments.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "doctorIds": [
    12345
  ],
  "paymentTypeIdList": [
    12345
  ],
  "minPrice": 1250.0,
  "maxPrice": 1250.0,
  "currencyId": 12345,
  "clinicPatientGroupIdList": [
    12345
  ]
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "paidAmount": 1250.0,
      "exchangedAmount": 1250.0,
      "paymentType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "returnPaymentType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/payment/patient/{patientId}List payment transactions for a clinic.
Parameterspath:patientId*, query:all, query:onlyPaid, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "paidAmount": 1250.0,
      "exchangedAmount": 1250.0,
      "paymentType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      },
      "returnPaymentType": {
        "id": 12345,
        "name": "Jane Doe",
        "code": "example"
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
PUT/api/v1/payment/previous/{id}Update Payment Creation Date.
Parametersquery:createdAt*, path:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "paymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "returnPaymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  }
}
PUT/api/v1/payment/{id}Update an Existing Payment Transaction.
Parameterspath:id*
Example request
{
  "patientId": 12345,
  "doctorId": 12345,
  "description": "Clinic-facing example note.",
  "treatmentPlanId": 12345,
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "currencyId": 12345,
  "treatmentPlanDetailId": 12345,
  "paymentTypeId": 12345,
  "createdBy": 12345
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "paymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "returnPaymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  }
}
DELETE/api/v1/payment/{id}Delete a Payment Transaction.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "paidAmount": 1250.0,
  "exchangedAmount": 1250.0,
  "paymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  },
  "returnPaymentType": {
    "id": 12345,
    "name": "Jane Doe",
    "code": "example"
  }
}
POST/api/v1/payment-planCreate payment plan.
Example request
{
  "patientId": 12345,
  "amount": 1250.0,
  "description": "Clinic-facing example note.",
  "title": "Treatment plan",
  "date": "2026-06-17T09:30:00Z",
  "currencyId": 12345,
  "installmentCount": 12345,
  "paid": true
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "amount": 1250.0,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "title": "Treatment plan",
  "date": "2026-06-17T09:30:00Z",
  "paid": true
}
GET/api/v1/payment-plan/allList payment plans.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "amount": 1250.0,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "date": "2026-06-17T09:30:00Z",
      "paid": true
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/payment-plan/filterSearch payment plans.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "minPrice": 1250.0,
  "maxPrice": 1250.0,
  "currencyId": 12345,
  "paid": true
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "amount": 1250.0,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "date": "2026-06-17T09:30:00Z",
      "paid": true
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/payment-plan/patient/{patientId}Get Payment Plans for a Patient.
Parameterspath:patientId*, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "clinicId": 12345,
      "amount": 1250.0,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "description": "Clinic-facing example note.",
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "title": "Treatment plan",
      "date": "2026-06-17T09:30:00Z",
      "paid": true
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/payment-plan/{id}Get payment plan by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "amount": 1250.0,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "title": "Treatment plan",
  "date": "2026-06-17T09:30:00Z",
  "paid": true
}
PUT/api/v1/payment-plan/{id}Update payment plan by ID.
Parameterspath:id*
Example request
{
  "patientId": 12345,
  "amount": 1250.0,
  "description": "Clinic-facing example note.",
  "title": "Treatment plan",
  "date": "2026-06-17T09:30:00Z",
  "currencyId": 12345,
  "installmentCount": 12345,
  "paid": true
}
Example response
{
  "id": 12345,
  "clinicId": 12345,
  "amount": 1250.0,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "description": "Clinic-facing example note.",
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "title": "Treatment plan",
  "date": "2026-06-17T09:30:00Z",
  "paid": true
}
DELETE/api/v1/payment-plan/{id}Delete payment plan by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}

Stock & inventory

Stock items, stock types, and stock operation endpoints.

17 operations
POST/api/v1/stockCreate stock.
Example request
{
  "barcode": "example",
  "name": "Jane Doe",
  "unit": "CC",
  "price": 1250.0,
  "vatRate": 123.45,
  "currencyId": 12345,
  "typeId": 12345,
  "criticalLimit": 123.45
}
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "barcode": "example",
  "price": 1250.0,
  "vatRate": 123.45,
  "type": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  },
  "unit": "CC"
}
GET/api/v1/stock/allList stock items.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "name": "Jane Doe",
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "barcode": "example",
      "price": 1250.0,
      "vatRate": 123.45,
      "type": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z"
      },
      "unit": "CC"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/stock/by-barcodeFind stock by barcode.
Parametersquery:barcode*
Example request
No request body.
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "barcode": "example",
  "price": 1250.0,
  "vatRate": 123.45,
  "type": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  },
  "unit": "CC"
}
POST/api/v1/stock/filterSearch stock items.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "typeIds": [
    12345
  ],
  "minUnitPrice": 1250.0,
  "maxUnitPrice": 1250.0,
  "unit": "CC",
  "currencyId": 12345,
  "minQuantity": 12345,
  "maxQuantity": 12345
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "name": "Jane Doe",
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "barcode": "example",
      "price": 1250.0,
      "vatRate": 123.45,
      "type": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z"
      },
      "unit": "CC"
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/stock/{id}Get stock by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "barcode": "example",
  "price": 1250.0,
  "vatRate": 123.45,
  "type": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  },
  "unit": "CC"
}
PUT/api/v1/stock/{id}Update stock by ID.
Parameterspath:id*
Example request
{
  "barcode": "example",
  "name": "Jane Doe",
  "unit": "CC",
  "price": 1250.0,
  "vatRate": 123.45,
  "currencyId": 12345,
  "typeId": 12345,
  "criticalLimit": 123.45
}
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "barcode": "example",
  "price": 1250.0,
  "vatRate": 123.45,
  "type": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  },
  "unit": "CC"
}
DELETE/api/v1/stock/{id}Delete stock by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
PUT/api/v1/stock/{id}/expire-dateUpdate Stock Expiration Date and Quantity Mapping.
Parameterspath:id*, query:expireDate*, query:quantity*
Example request
No request body.
Example response
{
  "id": 12345,
  "name": "Jane Doe",
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "barcode": "example",
  "price": 1250.0,
  "vatRate": 123.45,
  "type": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  },
  "unit": "CC"
}
POST/api/v1/stock-operationCreate stock operation.
Example request
{
  "quantity": 123.45,
  "type": "USING",
  "totalPaidAmount": 1250.0,
  "operationTime": "2026-06-17T09:30:00Z",
  "explanation": "example",
  "totalExchangedAmount": 1250.0,
  "currencyId": 12345,
  "stockId": 12345,
  "exitPointId": 12345,
  "organizationId": 12345
}
Example response
{
  "id": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "totalPaidAmount": 1250.0,
  "quantity": 123.45,
  "operationTime": "2026-06-17T09:30:00Z",
  "explanation": "example",
  "totalExchangedAmount": 1250.0,
  "exitPoint": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "active": true
  }
}
GET/api/v1/stock-operation/allList stock operations.
Parametersquery:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "totalPaidAmount": 1250.0,
      "quantity": 123.45,
      "operationTime": "2026-06-17T09:30:00Z",
      "explanation": "example",
      "totalExchangedAmount": 1250.0,
      "exitPoint": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "active": true
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
GET/api/v1/stock-operation/by-barcodeFind stock operations by barcode.
Parametersquery:barcode*, query:page, query:size, query:sort
Example request
No request body.
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "totalPaidAmount": 1250.0,
      "quantity": 123.45,
      "operationTime": "2026-06-17T09:30:00Z",
      "explanation": "example",
      "totalExchangedAmount": 1250.0,
      "exitPoint": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "active": true
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/stock-operation/filterSearch stock operations.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "stockIds": [
    12345
  ],
  "exitPointIds": [
    12345
  ],
  "clinicOrganizationIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "stockOperationTypes": [
    "USING"
  ],
  "stockTypeIds": [
    12345
  ],
  "minPrice": 1250.0
}
Example response
{
  "totalElements": 1250,
  "totalPages": 1250,
  "size": 12345,
  "content": [
    {
      "id": 12345,
      "currency": {
        "id": 12345,
        "code": "example",
        "factor": 123.45,
        "symbol": "example",
        "isoCode": "example"
      },
      "createdAt": "2026-06-17T09:30:00Z",
      "updatedAt": "2026-06-17T09:30:00Z",
      "totalPaidAmount": 1250.0,
      "quantity": 123.45,
      "operationTime": "2026-06-17T09:30:00Z",
      "explanation": "example",
      "totalExchangedAmount": 1250.0,
      "exitPoint": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "active": true
      }
    }
  ],
  "number": 12345,
  "sort": {
    "sorted": true,
    "unsorted": true,
    "empty": true
  },
  "first": true,
  "pageable": {
    "offset": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "pageNumber": 12345,
    "pageSize": 12345,
    "paged": true,
    "unpaged": true
  },
  "last": true,
  "numberOfElements": 12345
}
POST/api/v1/stock-operation/filter/statisticsSearch stock operations.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "stockIds": [
    12345
  ],
  "exitPointIds": [
    12345
  ],
  "clinicOrganizationIds": [
    12345
  ],
  "employeeClinicIds": [
    12345
  ],
  "stockOperationTypes": [
    "USING"
  ],
  "stockTypeIds": [
    12345
  ],
  "minPrice": 1250.0
}
Example response
{
  "totalInput": 1250.0,
  "totalOutput": 1250.0,
  "empClinicBasedUsageAmount": [
    {
      "amount": 1250.0,
      "consumer": {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "nationalId": 12345,
        "appointmentDoctors": [
          "example"
        ],
        "premiumPercentage": 123.45,
        "availableHours": [
          "example"
        ]
      }
    }
  ],
  "typeBasedAmount": [
    {
      "amount": 1250.0,
      "consumer": "USING"
    }
  ],
  "exitPointBasedUsageAmount": [
    {
      "amount": 1250.0,
      "consumer": {
        "id": 12345,
        "name": "Jane Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "active": true
      }
    }
  ],
  "topUsed10Stocks": [
    {
      "amount": 1250.0,
      "consumer": {
        "id": 12345,
        "name": "Jane Doe",
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "barcode": "example",
        "price": 1250.0,
        "vatRate": 123.45,
        "type": {
          "id": "example",
          "name": "example",
          "createdAt": "example",
          "updatedAt": "example"
        },
        "unit": "CC"
      }
    }
  ]
}
GET/api/v1/stock-operation/{id}Get stock operation by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "id": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "totalPaidAmount": 1250.0,
  "quantity": 123.45,
  "operationTime": "2026-06-17T09:30:00Z",
  "explanation": "example",
  "totalExchangedAmount": 1250.0,
  "exitPoint": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "active": true
  }
}
PUT/api/v1/stock-operation/{id}Update stock operation by ID.
Parameterspath:id*
Example request
{
  "quantity": 123.45,
  "type": "USING",
  "totalPaidAmount": 1250.0,
  "operationTime": "2026-06-17T09:30:00Z",
  "explanation": "example",
  "totalExchangedAmount": 1250.0,
  "currencyId": 12345,
  "stockId": 12345,
  "exitPointId": 12345,
  "organizationId": 12345
}
Example response
{
  "id": 12345,
  "currency": {
    "id": 12345,
    "code": "example",
    "factor": 123.45,
    "symbol": "example",
    "isoCode": "example"
  },
  "createdAt": "2026-06-17T09:30:00Z",
  "updatedAt": "2026-06-17T09:30:00Z",
  "totalPaidAmount": 1250.0,
  "quantity": 123.45,
  "operationTime": "2026-06-17T09:30:00Z",
  "explanation": "example",
  "totalExchangedAmount": 1250.0,
  "exitPoint": {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z",
    "active": true
  }
}
DELETE/api/v1/stock-operation/{id}Delete stock operation by ID.
Parameterspath:id*
Example request
No request body.
Example response
{
  "success": true
}
GET/api/v1/stock-type/allGet all stock types.
Example request
No request body.
Example response
[
  {
    "id": 12345,
    "name": "Jane Doe",
    "createdAt": "2026-06-17T09:30:00Z",
    "updatedAt": "2026-06-17T09:30:00Z"
  }
]

Reporting & dashboards

Dashboard and reporting endpoints for structured clinic analytics.

17 operations
POST/api/v1/dashboard/acquisition-sourcePatient Acquisition Source Analytics.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/acquisition-source/listPatient Records by Acquisition Source.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "email": "patient@example.com",
        "phoneNumber": "+905*********",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "mainDoctor": {
          "id": "example",
          "clinicId": "example",
          "firstName": "example",
          "lastName": "example",
          "email": "example",
          "phoneNumber": "example",
          "nationalId": "example",
          "appointmentDoctors": "example",
          "premiumPercentage": "example",
          "availableHours": "example"
        },
        "foreignPatientType": "HEALTH_TOURISM"
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/appointmentAppointment Performance Report.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": "example",
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/appointment-typeAppointment Type Analytics.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example",
    "idNameMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/appointment-type/listAppointment Type Detail List.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345,
  "typeId": 12345
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "startDate": "2026-06-17T09:30:00Z",
        "endDate": "2026-06-17T09:30:00Z",
        "status": {
          "id": "example",
          "name": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "code": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "entryDate": "2026-06-17T09:30:00Z",
        "exitDate": "2026-06-17T09:30:00Z"
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/appointment/listList appointment details with occurrence status.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345,
  "sortBy": "example",
  "direction": "ASC"
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "startDate": "2026-06-17T09:30:00Z",
        "endDate": "2026-06-17T09:30:00Z",
        "status": {
          "id": "example",
          "name": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "code": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "entryDate": "2026-06-17T09:30:00Z",
        "exitDate": "2026-06-17T09:30:00Z"
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/patient-acceptanceOverall Patient Acceptance Analytics.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY",
  "cohortStrategy": "FIRST_APPOINTMENT",
  "grouping": "NONE"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/patient-acceptance/listNew Patients Detail List.
Parametersquery:page, query:size, query:sort
Example request
{
  "cohortStrategy": "FIRST_APPOINTMENT",
  "groupByDoctor": "NONE",
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345,
  "doctorIds": [
    12345
  ]
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "firstName": "Jane",
        "lastName": "Doe",
        "createdAt": "2026-06-17T09:30:00Z",
        "assigneeId": 12345,
        "assigneePhoto": "example",
        "assigneeFirstName": "Jane",
        "assigneeLastName": "Doe",
        "accepted": true
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/payment-typePayment Type Distribution Report.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/profitProfit Analytics Report.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/recallRecall Analytics Report.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/recall/listRecall Detail List.
Parametersquery:page, query:size, query:sort
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "query": "example",
  "patientIds": [
    12345
  ],
  "assigneeIds": [
    12345
  ],
  "createdByIds": [
    12345
  ],
  "statusIds": [
    12345
  ],
  "typeIds": [
    12345
  ],
  "isRecall": true,
  "createdAtStart": 12345
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "startDate": "2026-06-17T09:30:00Z",
        "endDate": "2026-06-17T09:30:00Z",
        "status": {
          "id": "example",
          "name": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "code": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "completedAt": "2026-06-17T09:30:00Z",
        "assignee": {
          "id": "example",
          "clinicId": "example",
          "firstName": "example",
          "lastName": "example",
          "email": "example",
          "phoneNumber": "example",
          "nationalId": "example",
          "appointmentDoctors": "example",
          "premiumPercentage": "example",
          "availableHours": "example"
        }
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/revenueRevenue Analytics Report.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": "example",
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/revenue/listRevenue Transaction List.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "clinicId": 12345,
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "description": "Clinic-facing example note.",
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "paidAmount": 1250.0,
        "exchangedAmount": 1250.0,
        "paymentType": {
          "id": "example",
          "name": "example",
          "code": "example"
        },
        "returnPaymentType": {
          "id": "example",
          "name": "example",
          "code": "example"
        }
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/treatment-plan-detailTreatment Plan Distribution Analytics.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY"
}
Example response
{
  "status": 12345,
  "body": {
    "nameSet": [
      "example"
    ],
    "resultMap": "example"
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/treatment-plan-detail/countTreatment Plan Count Analytics.
Example request
{
  "startDate": 12345,
  "endDate": 12345,
  "interval": "DAILY",
  "doctorBased": true
}
Example response
{
  "status": 12345,
  "body": [
    "example"
  ],
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}
POST/api/v1/dashboard/treatment-plan-detail/count/listTreatment Plan Detail Records.
Example request
{
  "doctorId": 12345,
  "startDate": 12345,
  "endDate": 12345,
  "page": 12345,
  "pageSize": 12345,
  "doctorBased": true,
  "clinicOperationId": 12345
}
Example response
{
  "status": 12345,
  "body": {
    "totalElements": 1250,
    "totalPages": 1250,
    "size": 12345,
    "content": [
      {
        "id": 12345,
        "status": {
          "id": "example",
          "name": "example",
          "code": "example",
          "trName": "example",
          "enName": "example"
        },
        "currency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "createdAt": "2026-06-17T09:30:00Z",
        "updatedAt": "2026-06-17T09:30:00Z",
        "treatmentPlanId": 12345,
        "clinicOperation": {
          "id": "example",
          "name": "example",
          "currency": "example",
          "createdAt": "example",
          "updatedAt": "example",
          "price": "example",
          "trName": "example",
          "enName": "example",
          "defaultDuration": "example",
          "active": "example"
        },
        "rawPrice": 1250.0,
        "rawCurrency": {
          "id": "example",
          "code": "example",
          "factor": "example",
          "symbol": "example",
          "isoCode": "example"
        },
        "progressPaymentAmount": 1250.0
      }
    ],
    "number": 12345,
    "sort": {
      "sorted": true,
      "unsorted": true,
      "empty": true
    },
    "first": true,
    "pageable": {
      "offset": 12345,
      "sort": {
        "sorted": true,
        "unsorted": true,
        "empty": true
      },
      "pageNumber": 12345,
      "pageSize": 12345,
      "paged": true,
      "unpaged": true
    },
    "last": true,
    "numberOfElements": 12345
  },
  "message": "example",
  "info": "example",
  "exception": {
    "cause": {
      "stackTrace": [
        {
          "classLoaderName": "example",
          "moduleName": "example",
          "moduleVersion": "example",
          "methodName": "example",
          "fileName": "example",
          "lineNumber": "example",
          "className": "example",
          "nativeMethod": "example"
        }
      ],
      "message": "example",
      "suppressed": [
        {
          "stackTrace": "example",
          "message": "example",
          "localizedMessage": "example"
        }
      ],
      "localizedMessage": "example"
    },
    "stackTrace": [
      {
        "classLoaderName": "Jane Doe",
        "moduleName": "Jane Doe",
        "moduleVersion": "example",
        "methodName": "Jane Doe",
        "fileName": "Jane Doe",
        "lineNumber": 12345,
        "className": "Jane Doe",
        "nativeMethod": true
      }
    ],
    "message": "example",
    "suppressed": [
      {
        "stackTrace": [
          "example"
        ],
        "message": "example",
        "localizedMessage": "example"
      }
    ],
    "localizedMessage": "example"
  },
  "moment": 12345
}