# Job Data Points

## Query project job data points

`JobDataPointListPageResponse JobDataPoints.List(JobDataPointListParamsparameters, CancellationTokencancellationToken = default)`

**get** `/api/v1/job-data-points`

Returns paginated job data points for the current project.

### Parameters

- `JobDataPointListParams parameters`

  - `required JobType jobType`

    Job type to query.

    - `"classify"Classify`

    - `"extract"Extract`

    - `"parse"Parse`

  - `DateTimeOffset? createdAtOnOrAfter`

    Include items created at or after this timestamp (inclusive)

  - `DateTimeOffset? createdAtOnOrBefore`

    Include items created at or before this timestamp (inclusive)

  - `Long hours`

    Hours of history to include.

  - `string? organizationID`

  - `Long? pageSize`

    Number of items per page.

  - `string? pageToken`

    Cursor token for the next page.

  - `string? projectID`

  - `IReadOnlyList<string>? status`

    Filter by status.

### Returns

- `class JobDataPointListPageResponse:`

  Paginated list of job data points.

  - `required IReadOnlyList<JobDataPoint> Items`

    The list of items.

    - `required string ID`

      Job ID.

    - `required DateTimeOffset CreatedAt`

      Created timestamp.

    - `required string CustomTag`

      Custom tag.

    - `required string ProjectID`

      Project ID.

    - `required string Status`

      Job status.

    - `required DateTimeOffset UpdatedAt`

      Updated timestamp.

    - `string? ErrorMessage`

      Error message, if any.

    - `StateTransitions StateTransitions`

      Job state transition timestamps.

      - `DateTimeOffset? CancelledAt`

      - `DateTimeOffset? CompletedAt`

      - `DateTimeOffset? FailedAt`

      - `DateTimeOffset? PendingAt`

      - `DateTimeOffset? RunningAt`

      - `DateTimeOffset? ThrottledAt`

  - `string? NextPageToken`

    A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.

  - `Long? TotalSize`

    The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only.

### Example

```csharp
JobDataPointListParams parameters = new() { JobType = JobType.Parse };

var page = await client.JobDataPoints.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response

```json
{
  "items": [
    {
      "id": "pjb-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
      "created_at": "2026-04-29T18:00:00Z",
      "custom_tag": "premium",
      "project_id": "11111111-1111-1111-1111-111111111111",
      "status": "completed",
      "updated_at": "2026-04-29T18:01:00Z",
      "error_message": "Failed to process file.",
      "state_transitions": {
        "cancelled_at": "2026-04-29T18:01:00Z",
        "completed_at": "2026-04-29T18:01:00Z",
        "failed_at": "2026-04-29T18:01:00Z",
        "pending_at": "2026-04-29T18:00:00Z",
        "running_at": "2026-04-29T18:00:05Z",
        "throttled_at": "2026-04-29T18:00:02Z"
      }
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## Domain Types

### Job Data Point

- `class JobDataPoint:`

  A job data point.

  - `required string ID`

    Job ID.

  - `required DateTimeOffset CreatedAt`

    Created timestamp.

  - `required string CustomTag`

    Custom tag.

  - `required string ProjectID`

    Project ID.

  - `required string Status`

    Job status.

  - `required DateTimeOffset UpdatedAt`

    Updated timestamp.

  - `string? ErrorMessage`

    Error message, if any.

  - `StateTransitions StateTransitions`

    Job state transition timestamps.

    - `DateTimeOffset? CancelledAt`

    - `DateTimeOffset? CompletedAt`

    - `DateTimeOffset? FailedAt`

    - `DateTimeOffset? PendingAt`

    - `DateTimeOffset? RunningAt`

    - `DateTimeOffset? ThrottledAt`
