## Job


One job and its results.


Usage

``` python
Job(
    *,
    id,
    status,
    source,
    input,
    created_at,
    finished_at,
    payload,
    results,
    data,
    upload
)
```


## Attributes


`id: str`  
The job's ID.

`status: _Status`  
`pending` until the job finishes.

`source: str`  
The job's source.

`input: str`  
The value of the job's input key, such as its `url` or `query`.

`created_at: datetime`  
When the API accepted the job, in UTC.

`finished_at: datetime | None`  
When the job finished, in UTC, or `None` while it is pending. It comes from the results, because a Realtime job object keeps `updated_at` equal to `created_at`.

`payload: Payload | None`  
The payload that created the job, or `None` for a job from [get](Session.md#oxyscraper.Session.get).

`results: list[Result]`  
One entry per page and output type. A pending job has none, and so has a job from [get](Session.md#oxyscraper.Session.get) whose results expired.

`data: dict[str, Any]`  
The job object as the API returned it, so a field that oxy does not type stays readable.

`upload: Upload | None`  
The Cloud Storage upload, or `None` without `storage_type`.


## Attributes

| Name | Description |
|----|----|
| [content](#content) | The content of the job's only result. |

------------------------------------------------------------------------


#### content


The content of the job's only result.


`content: _Content`


##### Raises


`ValueError`  
If the job has more or fewer than one result.
