# JobRequest

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.jobrequest/
> Summary: JobRequest: The description of one job to queue through IJobDispatcher.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

The description of one job to queue through [IJobDispatcher](/api/tracon.ijobdispatcher/).

```csharp
public sealed record JobRequest : IEquatable<JobRequest>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.jobrequest/">JobRequest</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;JobRequest&gt;</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Constructors

### <a id="Tracon_JobRequest__ctor"></a> JobRequest\(\)

```csharp
public JobRequest()
```

## Properties

### <a id="Tracon_JobRequest_HandlerKey"></a> HandlerKey

The key of the handler to run. Must be registered with
`AddJobHandler<T>(key)`, or be one of
[JobHandlerKeys.BuiltIn](/api/tracon.jobhandlerkeys/#Tracon_JobHandlerKeys_BuiltIn).

```csharp
public required string HandlerKey { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_JobRequest_Items"></a> Items

The job's items. Left empty, the items are extracted from
[JobRequest.Payload](/api/tracon.jobrequest/#Tracon_JobRequest_Payload) the same way a schedule's payload is.

```csharp
public IReadOnlyList<string> Items { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

### <a id="Tracon_JobRequest_Lane"></a> Lane

The lane the job is queued under. Left at [JobLanes.Default](/api/tracon.joblanes/#Tracon_JobLanes_Default),
[TraconSchedulingOptions.LaneByHandlerKey](/api/tracon.traconschedulingoptions/#Tracon_TraconSchedulingOptions_LaneByHandlerKey) may still
route it elsewhere.

```csharp
public string Lane { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_JobRequest_MaxAttempts"></a> MaxAttempts

This job's own attempt limit. [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) applies
[TraconSchedulingOptions.MaxAttempts](/api/tracon.traconschedulingoptions/#Tracon_TraconSchedulingOptions_MaxAttempts).

```csharp
public int? MaxAttempts { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)?

### <a id="Tracon_JobRequest_MaxDuration"></a> MaxDuration

The longest time one attempt of this job may run. [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null)
applies [TraconSchedulingOptions.MaxDurationByHandlerKey](/api/tracon.traconschedulingoptions/#Tracon_TraconSchedulingOptions_MaxDurationByHandlerKey), or no
limit for a key the map does not list. See [JobRecord.MaxDuration](/api/tracon.jobrecord/#Tracon_JobRecord_MaxDuration).

```csharp
public TimeSpan? MaxDuration { get; init; }
```

#### Property Value

 [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan)?

#### Remarks

Must be from one millisecond to about 49.7 days.

### <a id="Tracon_JobRequest_Payload"></a> Payload

The input set or parameters, interpreted by the handler.

```csharp
public JsonElement Payload { get; init; }
```

#### Property Value

 [JsonElement](https://learn.microsoft.com/dotnet/api/system.text.json.jsonelement)

#### Remarks

An unset payload is queued as the empty JSON array, never as
`JsonValueKind.Undefined` or JSON `null`: an undefined
value cannot be written as JSON, and SQL Server rejects a `null`
literal in a JSON column. Every reader treats the empty array as "no payload".

For [JobHandlerKeys.Workflow](/api/tracon.jobhandlerkeys/#Tracon_JobHandlerKeys_Workflow) and [JobHandlerKeys.AgentBatch](/api/tracon.jobhandlerkeys/#Tracon_JobHandlerKeys_AgentBatch),
a JSON object whose members are all among `items`, `userId` and
`labels` is an attribution envelope: its items are the `items`
array, and its runs are attributed to that user and those labels.

### <a id="Tracon_JobRequest_ScheduledFor"></a> ScheduledFor

The earliest time the job may run (UTC). [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) means
as soon as a worker leases it.

```csharp
public DateTimeOffset? ScheduledFor { get; init; }
```

#### Property Value

 [DateTimeOffset](https://learn.microsoft.com/dotnet/api/system.datetimeoffset)?

### <a id="Tracon_JobRequest_TargetName"></a> TargetName

The handler's target — the agent or workflow name for the built-in
keys. A handler that needs no target passes an empty string.

```csharp
public required string TargetName { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_JobRequest_TenantId"></a> TenantId

The tenant the job belongs to.

```csharp
public required string TenantId { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Methods

### <a id="Tracon_JobRequest_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_JobRequest_Equals_Tracon_JobRequest_"></a> Equals\(JobRequest?\)

```csharp
public bool Equals(JobRequest? other)
```

#### Parameters

`other` [JobRequest](/api/tracon.jobrequest/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_JobRequest_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_JobRequest_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Operators

### <a id="Tracon_JobRequest_op_Equality_Tracon_JobRequest_Tracon_JobRequest_"></a> operator ==\(JobRequest?, JobRequest?\)

```csharp
public static bool operator ==(JobRequest? left, JobRequest? right)
```

#### Parameters

`left` [JobRequest](/api/tracon.jobrequest/)?

`right` [JobRequest](/api/tracon.jobrequest/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_JobRequest_op_Inequality_Tracon_JobRequest_Tracon_JobRequest_"></a> operator \!=\(JobRequest?, JobRequest?\)

```csharp
public static bool operator !=(JobRequest? left, JobRequest? right)
```

#### Parameters

`left` [JobRequest](/api/tracon.jobrequest/)?

`right` [JobRequest](/api/tracon.jobrequest/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
