# Run Job Now — Databricks (Service Principal)

> Run a job now and return the id of the triggered run. See the documentation

- Key: `databricks_oauth-run-job-now`
- Type: Action (Write)
- Version: 0.0.1
- App: Databricks (Service Principal) (`databricks_oauth`) — https://pipedream.com/apps/databricks-oauth.md
- This page (HTML): https://pipedream.com/apps/databricks-oauth/actions/run-job-now
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/databricks_oauth/actions/run-job-now/run-job-now.mjs

## Description

Run a job now and return the id of the triggered run. [See the documentation](https://docs.databricks.com/api/workspace/jobs/runnow)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `jobId` | `string` | Yes | Identifier of a job Options are loaded from the connected account. |
| `jarParams` | `string[]` | No | A list of parameters for jobs with JAR tasks, e.g. "jar_params": ["john doe", "35"]. The parameters will be used to invoke the main function of the main class specified in the Spark JAR task. If not specified upon run-now, it will default to an empty list. jar_params cannot be specified in conjunction with notebook_params. The JSON representation of this field (i.e. {"jar_params":["john doe","35"]}) cannot exceed 10,000 bytes. |
| `notebookParams` | `object` | No | A map from keys to values for jobs with notebook task, e.g. "notebook_params": {"name": "john doe", "age": "35"}. The map is passed to the notebook and is accessible through the dbutils.widgets.get function. If not specified upon run-now, the triggered run uses the job’s base parameters. You cannot specify notebook_params in conjunction with jar_params. The JSON representation of this field (i.e. {"notebook_params":{"name":"john doe","age":"35"}}) cannot exceed 10,000 bytes. |
| `pythonParams` | `string[]` | No | A list of parameters for jobs with Python tasks, e.g. "python_params": ["john doe", "35"]. The parameters will be passed to Python file as command-line parameters. If specified upon run-now, it would overwrite the parameters specified in job setting. The JSON representation of this field (i.e. {"python_params":["john doe","35"]}) cannot exceed 10,000 bytes. |
| `sparkSubmitParams` | `string[]` | No | A list of parameters for jobs with spark submit task, e.g. "spark_submit_params": ["--class", "org.apache.spark.examples.SparkPi"]. The parameters will be passed to spark-submit script as command-line parameters. If specified upon run-now, it would overwrite the parameters specified in job setting. The JSON representation of this field cannot exceed 10,000 bytes. |
| `idempotencyToken` | `string` | No | An optional token to guarantee the idempotency of job run requests. If a run with the provided token already exists, the request does not create a new run but returns the ID of the existing run instead. If a run with the provided token is deleted, an error is returned. If you specify the idempotency token, upon failure you can retry until the request succeeds. Databricks guarantees that exactly one run is launched with that idempotency token. This token must have at most 64 characters. For more information, see How to ensure idempotency for jobs. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "databricks_oauth",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "databricks_oauth-run-job-now",
  arguments: {
    jobId: "Job",
    jarParams: ["JAR Params"],
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "databricks_oauth-run-job-now",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    databricks_oauth: { authProvisionId: "apn_xxxxxxx" },
    jobId: "Job",
    jarParams: ["JAR Params"],
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "databricks_oauth-run-job-now",
    "configured_props": {
      "databricks_oauth": { "authProvisionId": "apn_xxxxxxx" },
      "jobId": "Job",
      "jarParams": ["JAR Params"]
    }
  }'
```

---

- App: https://pipedream.com/apps/databricks-oauth.md · All apps: https://pipedream.com/apps
