# Create Or Update File — Azure DevOps

> Push a single file add, edit or delete to an existing branch, as one commit. Returns the push result including the new commit SHA. The branch must already exist. Use this to commit generated config or docs back to a repository. Example…

- Key: `azure_devops-create-or-update-file`
- Type: Action (Write)
- Version: 0.0.2
- App: Azure DevOps (`azure_devops`) — https://pipedream.com/apps/azure-devops.md
- This page (HTML): https://pipedream.com/apps/azure-devops/actions/create-or-update-file
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/azure_devops/actions/create-or-update-file/create-or-update-file.mjs

## Description

Push a single file add, edit or delete to an existing branch, as one commit. Returns the push result including the new commit SHA. The branch must already exist. Use this to commit generated config or docs back to a repository. Example: edit `/docs/README.md` on `main` with commit message `Update setup steps`. [See the documentation](https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-7.1)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `organization` | `string` | Yes | Name of the organization Options are loaded from the connected account. |
| `project` | `string` | Yes | Project ID or project name. Run the List Projects action first to obtain valid values. |
| `repositoryId` | `string` | Yes | Repository ID or repository name. Run the List Repositories action first to obtain valid values. |
| `branchName` | `string` | Yes | Branch to push to, without the refs/heads/ prefix, e.g. main. The branch must already exist. Run the List Branches And Tags action first to obtain valid values. |
| `changeType` | `string` | Yes | What to do with the file |
| `path` | `string` | Yes | Repository-relative path of the file, e.g. /docs/README.md |
| `content` | `string` | No | New content of the file. Required unless Change Type is delete. |
| `contentType` | `string` | No | How Content is encoded. Defaults to rawtext. |
| `comment` | `string` | Yes | Message for the commit this push creates |

## 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": "azure_devops",
      },
    },
  },
)

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: "azure_devops-create-or-update-file",
  arguments: {
    organization: "Organization",
    project: "Project",
  },
})
```

**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: "azure_devops-create-or-update-file",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    azure_devops: { authProvisionId: "apn_xxxxxxx" },
    organization: "Organization",
    project: "Project",
  },
})

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": "azure_devops-create-or-update-file",
    "configured_props": {
      "azure_devops": { "authProvisionId": "apn_xxxxxxx" },
      "organization": "Organization",
      "project": "Project"
    }
  }'
```

---

- App: https://pipedream.com/apps/azure-devops.md · All apps: https://pipedream.com/apps
