# Classify

## Create Classify Job

`ClassifyCreateResponse Classify.Create(ClassifyCreateParams?parameters, CancellationTokencancellationToken = default)`

**post** `/api/v2/classify`

Create a classify job.

Classifies a document against a set of rules. Set `file_input`
to a file ID (`dfl-...`) or parse job ID (`pjb-...`), and provide
either inline `configuration` with rules or a `configuration_id`
referencing a saved preset.

Each rule has a `type` (the label to assign) and a `description`
(natural language criteria). The classifier returns the best
matching rule with a confidence score.

The job runs asynchronously. Poll `GET /classify/{job_id}` to
check status and retrieve results.

### Parameters

- `ClassifyCreateParams parameters`

  - `string? organizationID`

    Query param

  - `string? projectID`

    Query param

  - `ClassifyConfiguration? configuration`

    Body param: Configuration for a classify job.

  - `string? configurationID`

    Body param: Saved configuration ID

  - `string? fileID`

    Body param: Deprecated: use file_input instead

  - `string? fileInput`

    Body param: File ID or parse job ID to classify

  - `string? parseJobID`

    Body param: Deprecated: use file_input instead

  - `string? transactionID`

    Body param: Idempotency key scoped to the project. Reusing a key returns the original job; the new request body is ignored.

  - `IReadOnlyList<WebhookConfiguration>? webhookConfigurations`

    Body param: Outbound webhook endpoints to notify on job status changes

    - `IReadOnlyList<WebhookEvent>? WebhookEvents`

      Events to subscribe to (e.g. 'parse.success', 'extract.error'). If null, all events are delivered.

      - `"classify.cancelled"ClassifyCancelled`

      - `"classify.error"ClassifyError`

      - `"classify.partial_success"ClassifyPartialSuccess`

      - `"classify.pending"ClassifyPending`

      - `"classify.running"ClassifyRunning`

      - `"classify.success"ClassifySuccess`

      - `"extract.cancelled"ExtractCancelled`

      - `"extract.error"ExtractError`

      - `"extract.partial_success"ExtractPartialSuccess`

      - `"extract.pending"ExtractPending`

      - `"extract.success"ExtractSuccess`

      - `"parse.cancelled"ParseCancelled`

      - `"parse.error"ParseError`

      - `"parse.partial_success"ParsePartialSuccess`

      - `"parse.pending"ParsePending`

      - `"parse.running"ParseRunning`

      - `"parse.success"ParseSuccess`

      - `"sheets.cancelled"SheetsCancelled`

      - `"sheets.error"SheetsError`

      - `"sheets.partial_success"SheetsPartialSuccess`

      - `"sheets.pending"SheetsPending`

      - `"sheets.success"SheetsSuccess`

      - `"split.cancelled"SplitCancelled`

      - `"split.error"SplitError`

      - `"split.pending"SplitPending`

      - `"split.processing"SplitProcessing`

      - `"split.success"SplitSuccess`

      - `"unmapped_event"UnmappedEvent`

    - `IReadOnlyDictionary<string, string>? WebhookHeaders`

      Custom HTTP headers sent with each webhook request (e.g. auth tokens)

    - `string? WebhookOutputFormat`

      Response format sent to the webhook: 'string' (default) or 'json'

    - `string? WebhookSigningSecret`

      Shared signing secret used to sign webhook deliveries. When set, each request includes an HMAC-SHA256 signature of the request body in the 'LC-Signature' header (value 'sha256=<hex>'). Recompute the HMAC over the raw request body with this secret to verify the delivery is authentic.

    - `string? WebhookUrl`

      URL to receive webhook POST notifications

### Returns

- `class ClassifyCreateResponse:`

  Response for a classify job.

  - `required string ID`

    Unique identifier

  - `required ClassifyConfiguration Configuration`

    Classify configuration used for this job

    - `required IReadOnlyList<Rule> Rules`

      Classify rules to evaluate against the document (at least one required)

      - `required string Description`

        Natural language criteria for matching this rule

      - `required string Type`

        Document type to assign when rule matches

    - `Mode Mode`

      Classify execution mode

      - `"FAST"Fast`

    - `ParsingConfiguration? ParsingConfiguration`

      Parsing configuration for classify jobs.

      - `string Lang`

        ISO 639-1 language code for the document

      - `Long? MaxPages`

        Maximum number of pages to process. Omit for no limit.

      - `string? TargetPages`

        Comma-separated page numbers or ranges to process (1-based). Omit to process all pages.

  - `required DocumentInputType DocumentInputType`

    Whether the input was a file or parse job (FILE or PARSE_JOB)

    - `"file_id"FileID`

    - `"parse_job_id"ParseJobID`

    - `"url"Url`

  - `required string FileInput`

    ID of the input file or parse job

  - `required string ProjectID`

    Project this job belongs to

  - `required Status Status`

    Current job status: PENDING, RUNNING, COMPLETED, or FAILED

    - `"COMPLETED"Completed`

    - `"FAILED"Failed`

    - `"PENDING"Pending`

    - `"RUNNING"Running`

  - `required string UserID`

    User who created this job

  - `string? ConfigurationID`

    Product configuration ID

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? ErrorMessage`

    Error message if job failed

  - `string? ParseJobID`

    Associated parse job ID

  - `ClassifyResult? Result`

    Result of classifying a document.

    - `required Double Confidence`

      Confidence score between 0.0 and 1.0

    - `required string Reasoning`

      Why the document matched (or didn't match) the returned rule

    - `required string? Type`

      Matched rule type, or null if no rule matched

  - `string? TransactionID`

    Idempotency key

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
ClassifyCreateParams parameters = new();

var classify = await client.Classify.Create(parameters);

Console.WriteLine(classify);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "rules": [
      {
        "description": "contains invoice number, line items, and total amount",
        "type": "invoice"
      }
    ],
    "mode": "FAST",
    "parsing_configuration": {
      "lang": "en",
      "max_pages": 10,
      "target_pages": "1,3,5-7"
    }
  },
  "document_input_type": "file_id",
  "file_input": "file_input",
  "project_id": "project_id",
  "status": "COMPLETED",
  "user_id": "user_id",
  "configuration_id": "configuration_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "parse_job_id": "parse_job_id",
  "result": {
    "confidence": 0,
    "reasoning": "reasoning",
    "type": "type"
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## List Classify Jobs

`ClassifyListPageResponse Classify.List(ClassifyListParams?parameters, CancellationTokencancellationToken = default)`

**get** `/api/v2/classify`

List classify jobs with optional filtering and pagination.

Filter by `status`, `configuration_id`, specific `job_ids`,
or creation date range.

### Parameters

- `ClassifyListParams parameters`

  - `string? configurationID`

    Filter by configuration ID

  - `DateTimeOffset? createdAtOnOrAfter`

    Include items created at or after this timestamp (inclusive)

  - `DateTimeOffset? createdAtOnOrBefore`

    Include items created at or before this timestamp (inclusive)

  - `IReadOnlyList<string>? jobIds`

    Filter by specific job IDs

  - `string? organizationID`

  - `Long? pageSize`

    Number of items per page

  - `string? pageToken`

    Token for pagination

  - `string? projectID`

  - `Status? status`

    Filter by job status

    - `"COMPLETED"Completed`

    - `"FAILED"Failed`

    - `"PENDING"Pending`

    - `"RUNNING"Running`

### Returns

- `class ClassifyListPageResponse:`

  Response schema for paginated classify job queries.

  - `required IReadOnlyList<ClassifyListResponse> Items`

    The list of items.

    - `required string ID`

      Unique identifier

    - `required ClassifyConfiguration Configuration`

      Classify configuration used for this job

      - `required IReadOnlyList<Rule> Rules`

        Classify rules to evaluate against the document (at least one required)

        - `required string Description`

          Natural language criteria for matching this rule

        - `required string Type`

          Document type to assign when rule matches

      - `Mode Mode`

        Classify execution mode

        - `"FAST"Fast`

      - `ParsingConfiguration? ParsingConfiguration`

        Parsing configuration for classify jobs.

        - `string Lang`

          ISO 639-1 language code for the document

        - `Long? MaxPages`

          Maximum number of pages to process. Omit for no limit.

        - `string? TargetPages`

          Comma-separated page numbers or ranges to process (1-based). Omit to process all pages.

    - `required DocumentInputType DocumentInputType`

      Whether the input was a file or parse job (FILE or PARSE_JOB)

      - `"file_id"FileID`

      - `"parse_job_id"ParseJobID`

      - `"url"Url`

    - `required string FileInput`

      ID of the input file or parse job

    - `required string ProjectID`

      Project this job belongs to

    - `required Status Status`

      Current job status: PENDING, RUNNING, COMPLETED, or FAILED

      - `"COMPLETED"Completed`

      - `"FAILED"Failed`

      - `"PENDING"Pending`

      - `"RUNNING"Running`

    - `required string UserID`

      User who created this job

    - `string? ConfigurationID`

      Product configuration ID

    - `DateTimeOffset? CreatedAt`

      Creation datetime

    - `string? ErrorMessage`

      Error message if job failed

    - `string? ParseJobID`

      Associated parse job ID

    - `ClassifyResult? Result`

      Result of classifying a document.

      - `required Double Confidence`

        Confidence score between 0.0 and 1.0

      - `required string Reasoning`

        Why the document matched (or didn't match) the returned rule

      - `required string? Type`

        Matched rule type, or null if no rule matched

    - `string? TransactionID`

      Idempotency key

    - `DateTimeOffset? UpdatedAt`

      Update datetime

  - `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
ClassifyListParams parameters = new();

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

#### Response

```json
{
  "items": [
    {
      "id": "id",
      "configuration": {
        "rules": [
          {
            "description": "contains invoice number, line items, and total amount",
            "type": "invoice"
          }
        ],
        "mode": "FAST",
        "parsing_configuration": {
          "lang": "en",
          "max_pages": 10,
          "target_pages": "1,3,5-7"
        }
      },
      "document_input_type": "file_id",
      "file_input": "file_input",
      "project_id": "project_id",
      "status": "COMPLETED",
      "user_id": "user_id",
      "configuration_id": "configuration_id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "error_message": "error_message",
      "parse_job_id": "parse_job_id",
      "result": {
        "confidence": 0,
        "reasoning": "reasoning",
        "type": "type"
      },
      "transaction_id": "transaction_id",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## Get Classify Job

`ClassifyGetResponse Classify.Get(ClassifyGetParamsparameters, CancellationTokencancellationToken = default)`

**get** `/api/v2/classify/{job_id}`

Get a classify job by ID.

Returns the job status, configuration, and classify result
when complete. The result includes the matched document type,
confidence score, and reasoning.

### Parameters

- `ClassifyGetParams parameters`

  - `required string jobID`

  - `string? organizationID`

  - `string? projectID`

### Returns

- `class ClassifyGetResponse:`

  Response for a classify job.

  - `required string ID`

    Unique identifier

  - `required ClassifyConfiguration Configuration`

    Classify configuration used for this job

    - `required IReadOnlyList<Rule> Rules`

      Classify rules to evaluate against the document (at least one required)

      - `required string Description`

        Natural language criteria for matching this rule

      - `required string Type`

        Document type to assign when rule matches

    - `Mode Mode`

      Classify execution mode

      - `"FAST"Fast`

    - `ParsingConfiguration? ParsingConfiguration`

      Parsing configuration for classify jobs.

      - `string Lang`

        ISO 639-1 language code for the document

      - `Long? MaxPages`

        Maximum number of pages to process. Omit for no limit.

      - `string? TargetPages`

        Comma-separated page numbers or ranges to process (1-based). Omit to process all pages.

  - `required DocumentInputType DocumentInputType`

    Whether the input was a file or parse job (FILE or PARSE_JOB)

    - `"file_id"FileID`

    - `"parse_job_id"ParseJobID`

    - `"url"Url`

  - `required string FileInput`

    ID of the input file or parse job

  - `required string ProjectID`

    Project this job belongs to

  - `required Status Status`

    Current job status: PENDING, RUNNING, COMPLETED, or FAILED

    - `"COMPLETED"Completed`

    - `"FAILED"Failed`

    - `"PENDING"Pending`

    - `"RUNNING"Running`

  - `required string UserID`

    User who created this job

  - `string? ConfigurationID`

    Product configuration ID

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? ErrorMessage`

    Error message if job failed

  - `string? ParseJobID`

    Associated parse job ID

  - `ClassifyResult? Result`

    Result of classifying a document.

    - `required Double Confidence`

      Confidence score between 0.0 and 1.0

    - `required string Reasoning`

      Why the document matched (or didn't match) the returned rule

    - `required string? Type`

      Matched rule type, or null if no rule matched

  - `string? TransactionID`

    Idempotency key

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
ClassifyGetParams parameters = new() { JobID = "job_id" };

var classify = await client.Classify.Get(parameters);

Console.WriteLine(classify);
```

#### Response

```json
{
  "id": "id",
  "configuration": {
    "rules": [
      {
        "description": "contains invoice number, line items, and total amount",
        "type": "invoice"
      }
    ],
    "mode": "FAST",
    "parsing_configuration": {
      "lang": "en",
      "max_pages": 10,
      "target_pages": "1,3,5-7"
    }
  },
  "document_input_type": "file_id",
  "file_input": "file_input",
  "project_id": "project_id",
  "status": "COMPLETED",
  "user_id": "user_id",
  "configuration_id": "configuration_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "parse_job_id": "parse_job_id",
  "result": {
    "confidence": 0,
    "reasoning": "reasoning",
    "type": "type"
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Domain Types

### Classify Configuration

- `class ClassifyConfiguration:`

  Configuration for a classify job.

  - `required IReadOnlyList<Rule> Rules`

    Classify rules to evaluate against the document (at least one required)

    - `required string Description`

      Natural language criteria for matching this rule

    - `required string Type`

      Document type to assign when rule matches

  - `Mode Mode`

    Classify execution mode

    - `"FAST"Fast`

  - `ParsingConfiguration? ParsingConfiguration`

    Parsing configuration for classify jobs.

    - `string Lang`

      ISO 639-1 language code for the document

    - `Long? MaxPages`

      Maximum number of pages to process. Omit for no limit.

    - `string? TargetPages`

      Comma-separated page numbers or ranges to process (1-based). Omit to process all pages.

### Classify Create Request

- `class ClassifyCreateRequest:`

  Request to create a classify job.

  - `ClassifyConfiguration? Configuration`

    Configuration for a classify job.

    - `required IReadOnlyList<Rule> Rules`

      Classify rules to evaluate against the document (at least one required)

      - `required string Description`

        Natural language criteria for matching this rule

      - `required string Type`

        Document type to assign when rule matches

    - `Mode Mode`

      Classify execution mode

      - `"FAST"Fast`

    - `ParsingConfiguration? ParsingConfiguration`

      Parsing configuration for classify jobs.

      - `string Lang`

        ISO 639-1 language code for the document

      - `Long? MaxPages`

        Maximum number of pages to process. Omit for no limit.

      - `string? TargetPages`

        Comma-separated page numbers or ranges to process (1-based). Omit to process all pages.

  - `string? ConfigurationID`

    Saved configuration ID

  - `string? FileID`

    Deprecated: use file_input instead

  - `string? FileInput`

    File ID or parse job ID to classify

  - `string? ParseJobID`

    Deprecated: use file_input instead

  - `string? TransactionID`

    Idempotency key scoped to the project. Reusing a key returns the original job; the new request body is ignored.

  - `IReadOnlyList<WebhookConfiguration>? WebhookConfigurations`

    Outbound webhook endpoints to notify on job status changes

    - `IReadOnlyList<WebhookEvent>? WebhookEvents`

      Events to subscribe to (e.g. 'parse.success', 'extract.error'). If null, all events are delivered.

      - `"classify.cancelled"ClassifyCancelled`

      - `"classify.error"ClassifyError`

      - `"classify.partial_success"ClassifyPartialSuccess`

      - `"classify.pending"ClassifyPending`

      - `"classify.running"ClassifyRunning`

      - `"classify.success"ClassifySuccess`

      - `"extract.cancelled"ExtractCancelled`

      - `"extract.error"ExtractError`

      - `"extract.partial_success"ExtractPartialSuccess`

      - `"extract.pending"ExtractPending`

      - `"extract.success"ExtractSuccess`

      - `"parse.cancelled"ParseCancelled`

      - `"parse.error"ParseError`

      - `"parse.partial_success"ParsePartialSuccess`

      - `"parse.pending"ParsePending`

      - `"parse.running"ParseRunning`

      - `"parse.success"ParseSuccess`

      - `"sheets.cancelled"SheetsCancelled`

      - `"sheets.error"SheetsError`

      - `"sheets.partial_success"SheetsPartialSuccess`

      - `"sheets.pending"SheetsPending`

      - `"sheets.success"SheetsSuccess`

      - `"split.cancelled"SplitCancelled`

      - `"split.error"SplitError`

      - `"split.pending"SplitPending`

      - `"split.processing"SplitProcessing`

      - `"split.success"SplitSuccess`

      - `"unmapped_event"UnmappedEvent`

    - `IReadOnlyDictionary<string, string>? WebhookHeaders`

      Custom HTTP headers sent with each webhook request (e.g. auth tokens)

    - `string? WebhookOutputFormat`

      Response format sent to the webhook: 'string' (default) or 'json'

    - `string? WebhookSigningSecret`

      Shared signing secret used to sign webhook deliveries. When set, each request includes an HMAC-SHA256 signature of the request body in the 'LC-Signature' header (value 'sha256=<hex>'). Recompute the HMAC over the raw request body with this secret to verify the delivery is authentic.

    - `string? WebhookUrl`

      URL to receive webhook POST notifications

### Classify Result

- `class ClassifyResult:`

  Result of classifying a document.

  - `required Double Confidence`

    Confidence score between 0.0 and 1.0

  - `required string Reasoning`

    Why the document matched (or didn't match) the returned rule

  - `required string? Type`

    Matched rule type, or null if no rule matched
