Skip to content

📋 [TASK] Add pagination to all collection endpoints #3183

@maxxgx

Description

@maxxgx

Describe the task

Affected endpoints:

  • GET /jobs
  • GET /images
  • GET /models
  • GET /projects
  • GET /sinks
  • GET /sources
  • GET /snapshots

Acceptance Criteria

Example of proposed response with pagination:
curl -X GET 'http://localhost:8000/api/jobs?limit=3&offset=10' | jq .

{
  "jobs": [
    {
      "id": "e0e10d3d-94b1-4038-abac-dba5db0b4fef",
      "project_id": "c9f94915-39bf-4f1d-846f-d157759d43dc",
      "type": "training",
      "progress": 100,
      "status": "failed",
      "payload": {
        "model_name": "padim",
        "device": "mps",
        "dataset_snapshot_id": null
      },
      "message": "Job aborted due to application shutdown",
      "start_time": "2025-12-01T14:45:50",
      "end_time": "2025-12-02T13:49:29.896859"
    },
    {
      "id": "9ffea121-88bb-4131-a603-67328eea987c",
      "project_id": "c9f94915-39bf-4f1d-846f-d157759d43dc",
      "type": "training",
      "progress": 100,
      "status": "failed",
      "payload": {
        "model_name": "padim",
        "device": "mps",
        "dataset_snapshot_id": null
      },
      "message": "Job aborted due to application shutdown",
      "start_time": "2025-12-01T14:47:13",
      "end_time": "2025-12-02T13:49:29.899600"
    },
    {
      "id": "1cdceca6-ed08-404b-bfc9-662732919419",
      "project_id": "c9f94915-39bf-4f1d-846f-d157759d43dc",
      "type": "training",
      "progress": 100,
      "status": "completed",
      "payload": {
        "model_name": "padim",
        "device": "mps",
        "dataset_snapshot_id": null
      },
      "message": "Training completed successfully",
      "start_time": "2025-12-01T14:48:48",
      "end_time": "2025-12-01T14:49:35.513296"
    }
  ],
  "pagination": {
    "offset": 10,
    "limit": 3,
    "count": 3,
    "total": 16
  }
}

Priority

High

Related Epic

#3066

Estimated Time

?

Current Status

In Progress

Additional Information

No response

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions