# Get job configuration schema and values

> Source: https://docs.clonepartner.com/api-reference/jobs/get-job-config/

`GET /api/jobs/{id}/config`

Returns top-level `job_config` schema from the job's snapshotted template
YAML plus current persisted values from the `job_config` table. This is
the native job-owned configuration surface; dashboard input widgets remain
compatible writers for the same keys.

**Operation ID:** `getJobConfig`

## Authentication

### Option 1

- **BearerAuth** (`http bearer`)
  API key token. Create via POST /api/api-keys. Format: `envoy_<hex>`

### Option 2

- **CookieAuth** (`apiKey`)
  Session cookie set after login + TOTP verification

## Path parameters

- `id` — `integer`, `required`
  Resource ID

## Success responses

### 200

Job configuration schema and values

**Content type:** `application/json`

- Reference: `JobConfigResponse`
  - Type: `object`
  - Properties:
    - `schema` (`object`, `required`) — Top-level job_config schema from the job snapshot, keyed by config key.
      - Description: Top-level job_config schema from the job snapshot, keyed by config key.
      - Additional properties:
        - Reference: `JobConfigEntry`
          - Type: `DashboardFieldMappingWidget | DashboardFormWidget`
          - Description: Schema-backed job_config entry copied from the job template snapshot.
          - One of:
            - Variant 1:
              - Reference: `DashboardFieldMappingWidget`
                - Type: `object`
                - Description: Two-column source→target field mapping. Stored value is an array of mappings.
                - Properties:
                  - `id` (`string`, `required`)
                  - `type` (`string`, `required`)
                    - Allowed values: `field_mapping`
                  - `title` (`string`)
                  - `config_key` (`string`, `required`)
                  - `source` (`OptionSource`, `required`) — Connector-agnostic option source for input-widget pickers. `options_source` is a readonly call_method config resolved server-side; the `*_expr` fields map each raw row to `{ label, value, subText }`. When `search.on_frontend` is set the server returns one bounded page and the picker filters locally.
                    - Reference: `OptionSource`
                      - Description: Connector-agnostic option source for input-widget pickers. `options_source` is a readonly call_method config resolved server-side; the `*_expr` fields map each raw row to `{ label, value, subText }`. When `search.on_frontend` is set the server returns one bounded page and the picker filters locally.
                      - Properties:
                        - `options_source` (`unknown`, `required`) — Readonly call_method config (object) or JSONata string resolving to one.
                        - `label_expr` (`string`)
                        - `value_expr` (`string`)
                        - `subtext_expr` (`string`)
                        - `transform_expr` (`string`)
                        - `depends_on` (`array<string>`)
                          - Items:
                            - Type: `string`
                        - `search` (`object`)
                          - Properties:
                            - `param` (`string`, `required`)
                            - `on_frontend` (`boolean`)
                            - `placeholder` (`string`)
                            - `empty_text` (`string`)
                  - `target` (`OptionSource`, `required`) — Connector-agnostic option source for input-widget pickers. `options_source` is a readonly call_method config resolved server-side; the `*_expr` fields map each raw row to `{ label, value, subText }`. When `search.on_frontend` is set the server returns one bounded page and the picker filters locally.
                    - Reference: `OptionSource`
                      - Description: Connector-agnostic option source for input-widget pickers. `options_source` is a readonly call_method config resolved server-side; the `*_expr` fields map each raw row to `{ label, value, subText }`. When `search.on_frontend` is set the server returns one bounded page and the picker filters locally.
                      - Properties:
                        - `options_source` (`unknown`, `required`) — Readonly call_method config (object) or JSONata string resolving to one.
                        - `label_expr` (`string`)
                        - `value_expr` (`string`)
                        - `subtext_expr` (`string`)
                        - `transform_expr` (`string`)
                        - `depends_on` (`array<string>`)
                          - Items:
                            - Type: `string`
                        - `search` (`object`)
                          - Properties:
                            - `param` (`string`, `required`)
                            - `on_frontend` (`boolean`)
                            - `placeholder` (`string`)
                            - `empty_text` (`string`)
                  - `allow_transform` (`boolean`)
                  - `default` (`unknown`) — Optional default mapping array when used from top-level job_config.
                  - `validation_expr` (`string`)
            - Variant 2:
              - Reference: `DashboardFormWidget`
                - Type: `object`
                - Description: Generic typed form. Stored value is an object keyed by field key.
                - Properties:
                  - `id` (`string`, `required`)
                  - `type` (`string`, `required`)
                    - Allowed values: `form`
                  - `title` (`string`)
                  - `config_key` (`string`, `required`)
                  - `fields` (`array<DashboardFormField>`, `required`)
                    - Items:
                      - Reference: `DashboardFormField`
                        - Type: `object`
                        - Properties:
                          - `key` (`string`, `required`)
                          - `label` (`string`)
                          - `type` (`string`, `required`)
                            - Allowed values: `text`, `number`, `boolean`, `select`, `multi_select`
                          - `required` (`boolean`)
                          - `default` (`unknown`)
                          - `format` (`string`)
                          - `options` (`array<object>`)
                            - Items:
                              - _Schema expansion stopped at depth 10._
                          - `options_source` (`OptionSource`) — Connector-agnostic option source for input-widget pickers. `options_source` is a readonly call_method config resolved server-side; the `*_expr` fields map each raw row to `{ label, value, subText }`. When `search.on_frontend` is set the server returns one bounded page and the picker filters locally.
                            - Reference: `OptionSource`
                              - _Schema expansion stopped at depth 10._
                          - `depends_on` (`array<string>`)
                            - Items:
                              - _Schema expansion stopped at depth 10._
                          - `hide_if_expr` (`string`)
                  - `validation_expr` (`string`)
                  - `transform_expr` (`string`)
    - `config` (`object`, `required`) — Current persisted job_config values keyed by config key.
      - Description: Current persisted job_config values keyed by config key.
      - Additional properties: allowed

## Error responses

### 400

Validation error

**Content type:** `application/json`

- Reference: `Error`
  - Type: `object`
  - Properties:
    - `error` (`string`)
      - Example: `NOT_FOUND`
    - `message` (`string`)
      - Example: `Resource not found`

Example:

```json
{
  "error": "VALIDATION_ERROR",
  "message": "Invalid input"
}
```

### 404

Resource not found

**Content type:** `application/json`

- Reference: `Error`
  - Type: `object`
  - Properties:
    - `error` (`string`)
      - Example: `NOT_FOUND`
    - `message` (`string`)
      - Example: `Resource not found`

Example:

```json
{
  "error": "NOT_FOUND",
  "message": "Resource not found"
}
```

## Examples

### cURL

```bash
curl --request GET \
  --url 'https://your-envoy.example.com/api/jobs/YOUR_ID/config' \
  --header 'Authorization: Bearer $API_KEY'
```

### JavaScript (fetch)

```javascript
const response = await fetch('https://your-envoy.example.com/api/jobs/YOUR_ID/config', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
  },
});

if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = response.status === 204 ? null : await response.json();
console.log(data);
```
