---
title: "Paginated and filterable operator ranking"
method: GET
path: "/api/analytics/operators/ranking"
tags: ["analytics"]
---

# Paginated and filterable operator ranking

`GET /api/analytics/operators/ranking`

Returns a backend-filtered, sorted and paginated expert ranking with patient metrics, ticket-state filters and assigned supervisors. Admin: all. Supervisor: only supervised operators. Coordinator: only operators under assigned supervisors.

## Query parameters

- `search` string, nullable — Case-insensitive search on operator name.
- `role` 'psychologist' | 'nutritionist', nullable
- `supervisor_id` string, uuid, nullable — Admin-only supervisor filter.
- `status` 'active' | 'inactive' | 'new' | 'reported' | 'warned', nullable
- `ticket_status` 'open' | 'closed', nullable — Used only when status is reported or warned.
- `sort_by` 'operator_name' | 'total_patients' | 'sessions_total' | 'avg_sessions_per_patient' | 'patients_ok' | 'patients_below_frequency' | 'compliance_perc' | 'patients_dropout' | 'patients_never_started' | 'patients_concluded' | 'patients_monitoring' | 'patients_follow_up'
- `sort_dir` 'asc' | 'desc'
- `per_page` integer — Page size.
- `page` integer — Page number (1-based).

## Response `200`

Successful Response

- OperatorRankingResponse — Operator ranking response model.
  - `items` OperatorRankingRow[], required — Filtered and sorted operator page
    - `operator_id` string, uuid, required — Operator UUID
    - `role` string, required — psychologist | nutritionist
    - `operator_name` string, required — Operator display name
    - `operator_status` string, nullable — Operator status
    - `patients_ok` integer, required — Patients in path and compliant
    - `patients_below_frequency` integer, required — Patients in path but below frequency
    - `patients_dropout` integer, required — Dropout patients
    - `patients_never_started` integer, required — Never started
    - `patients_never_paid` integer, required — Never paid
    - `patients_concluded` integer, required — Concluded
    - `patients_monitoring` integer, required — Monitoring
    - `patients_follow_up` integer, required — Follow-up
    - `patients_grave` integer, required — Grave
    - `total_patients` integer, required — Total patients assigned
    - `avg_sessions_per_patient` number, required — Average sessions per assigned patient
    - `compliance_perc` string, nullable — Compliance percentage (ordered by this)
    - `patients_detail` object, nullable — Detail: all, compliant, non_compliant, dropout, etc.
    - `sessions_total` integer, required — Total sessions (DA_FARE + FATTO)
    - `created_at` string, date-time, nullable — Operator/user created_at
    - `supervisor_ids` string[] — Assigned supervisor operator UUIDs
    - `supervisor_names` string[] — Assigned supervisor display names
  - `total` integer, required — Operators matching filters before pagination
  - `per_page` integer, required — Page size
  - `page` integer, required — Page number (1-based)

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/corabea/apis/corabea-api.md) · [All operations](https://skmtc.dev/corabea/apis/corabea-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/corabea/corabea-api/revisions/13c1bce1bdc4/schema)
