# v2 Jobs
Source: https://docs.chain.link/chainlink-nodes/oracle-jobs/jobs

> For the complete documentation index, see [llms.txt](/llms.txt).

> **NOTE: Chainlink v2 jobs**
>
> This page describes Chainlink v2 jobs. In the Operator UI interface, these are called TOML jobs. The v1 jobs are
> removed in Chainlink nodes versioned 1.0.0 and later. To learn how to migrate your v1 jobs to v2 jobs, see [Migrating
> to v2 Jobs](/chainlink-nodes/oracle-jobs/migration-v1-v2). If you still need to use v1 jobs on older versions of
> Chainlink nodes, see the [v1 Jobs](/chainlink-nodes/oracle-jobs/migration-v1-v2) documentation.

## What is a Job?

Chainlink nodes require jobs to do anything useful. For example, posting asset price data onchain requires jobs. Chainlink nodes support the following job types:

- [`blockhashstore`](/chainlink-nodes/oracle-jobs/all-jobs/#blockhash-store-jobs)
- [`blockheaderfeeder`](/chainlink-nodes/oracle-jobs/all-jobs/#block-header-feeder-jobs)
- [`bootstrap`](/chainlink-nodes/oracle-jobs/all-jobs/#bootstrap-jobs) (requires `OCR2.Enabled = true`)
- [`ccip`](/chainlink-nodes/oracle-jobs/all-jobs/#ccip-jobs) (requires `OCR2.Enabled = true`)
- [`ccvcommitteeverifier`](/chainlink-nodes/oracle-jobs/all-jobs/#ccv-committee-verifier-jobs)
- [`ccvexecutor`](/chainlink-nodes/oracle-jobs/all-jobs/#ccv-executor-jobs)
- [`cresettings`](/chainlink-nodes/oracle-jobs/all-jobs/#cre-settings-jobs)
- [`cron`](/chainlink-nodes/oracle-jobs/all-jobs/#solidity-cron-jobs)
- [`gateway`](/chainlink-nodes/oracle-jobs/all-jobs/#gateway-jobs)
- [`offchainreporting`](/chainlink-nodes/oracle-jobs/all-jobs/#offchain-reporting-jobs) (requires `OCR.Enabled = true`)
- [`offchainreporting2`](/chainlink-nodes/oracle-jobs/all-jobs/#offchain-reporting-2-jobs) (requires `OCR2.Enabled = true`)
- [`standardcapabilities`](/chainlink-nodes/oracle-jobs/all-jobs/#standard-capabilities-jobs)
- [`stream`](/chainlink-nodes/oracle-jobs/all-jobs/#stream-jobs)
- [`vrf`](/chainlink-nodes/oracle-jobs/all-jobs/#vrf-jobs)

The following job types are no longer supported. A spec that uses one of them does not start:

- [`directrequest`](/chainlink-nodes/oracle-jobs/all-jobs/#direct-request-jobs)
- [`fluxmonitor`](/chainlink-nodes/oracle-jobs/all-jobs/#flux-monitor-jobs)
- [`keeper`](/chainlink-nodes/oracle-jobs/all-jobs/#keeper-jobs)
- `workflow`
- [`webhook`](/chainlink-nodes/oracle-jobs/all-jobs/#webhook-jobs)

Jobs are represented by TOML specifications.

## Example v2 job spec

The following is an example `cron` job spec. This is a simple spec that you can add to a node:

```toml
type            = "cron"
schemaVersion   = 1
schedule        = "CRON_TZ=UTC 0 0 1 1 *"
# Optional externalJobID: Automatically generated if unspecified
# externalJobID   = "0EEC7E1D-D0D2-476C-A1A8-72DFB6633F46"
observationSource   = """
ds          [type="http" method=GET url="https://chain.link/ETH-USD"];
ds_parse    [type="jsonparse" path="data,price"];
ds_multiply [type="multiply" times=100];
ds -> ds_parse -> ds_multiply;
"""
```

## Shared fields

Every job type supported by a node shares the following TOML fields:

- `name`: The name of the job in the Operator UI
- `type`: Specifies the v2 job type, which can be one of the following:
  - `blockhashstore`
  - `blockheaderfeeder`
  - `bootstrap`
  - `ccip`
  - `ccvcommitteeverifier`
  - `ccvexecutor`
  - `cresettings`
  - `cron`
  - `gateway`
  - `offchainreporting`
  - `offchainreporting2`
  - `standardcapabilities`
  - `stream`
  - `vrf`
- `schemaVersion`: Must be present and set to a value of `1`. This field will handle progressive iterations of the job spec format gracefully with backwards-compatibility.
- `observationSource`: The v2 pipeline task DAG, which is specified in DOT syntax. See below for information on writing pipeline DAGs.
- `maxTaskDuration`: The default maximum duration that any task is allowed to run. If the duration is exceeded, the task is errored. This value can be overridden on a per-task basis using the `timeout` attribute. See the [Shared attributes](/chainlink-nodes/oracle-jobs/tasks#shared-attributes) section for details.
- `externalJobID`: An optional way for a user to deterministically provide the ID of a job. The ID must be unique. For example, you can run the same `cron` job on two different Chainlink nodes and use the same `externalJobID` on both. The spec contents can differ, but the `externalJobID` identifies the job on either node. If you do not provide an `externalJobID`, the node generates the ID for you.
- `gasLimit`: Optional gas limit for any outgoing transactions spawned by this job. When specified, it overrides `EVM.GasEstimator.LimitJobType` for the job's type, and `EVM.GasEstimator.LimitDefault` when no job-type limit is set.
- `forwardingAllowed`: Optional. When `true`, it allows forwarding transactions submitted by the job.