Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e3c9ada
azure devops logo on white
mzxchandra May 17, 2026
27fcd25
generated ADO tool docs
mzxchandra May 17, 2026
5fd4568
generated ADO tool docs
mzxchandra May 17, 2026
22cd7ae
added ADO to registries
mzxchandra May 17, 2026
0db4cff
ADO workflow triggers
mzxchandra May 17, 2026
1bacff0
ADO workflow triggers
mzxchandra May 17, 2026
39eaa61
tool layer for ADO, checks passed and manual verified
mzxchandra May 17, 2026
15c617e
ADO workflow triggers
mzxchandra May 17, 2026
8e07ef1
block layer for ADO
mzxchandra May 17, 2026
042410e
ADO icon svg
mzxchandra May 17, 2026
e0aa743
generated docs for ADO triggers
mzxchandra May 17, 2026
c2a150d
committing the tests for azure devops tools and blocks
mzxchandra May 17, 2026
e49a52c
Update apps/sim/triggers/azure_devops/utils.ts
mzxchandra May 17, 2026
1bdfd79
Update apps/sim/tools/azure_devops/update_work_item.ts
mzxchandra May 17, 2026
61b4d91
Update apps/sim/triggers/azure_devops/utils.ts
mzxchandra May 17, 2026
d11aa83
comma syntax error patched
mzxchandra May 17, 2026
c084b6c
azure devops: validate-integration fixes + manual description
waleedlatif1 May 19, 2026
c4a3508
azure_devops: second-pass audit fixes + formatter cleanup
waleedlatif1 May 19, 2026
119ac04
azure_devops: address PR review comments
waleedlatif1 May 19, 2026
609a647
idemtpotency
waleedlatif1 May 19, 2026
db0b46b
azure_devops: address bugbot review comments
waleedlatif1 May 19, 2026
cdc8041
azure_devops: address additional bugbot comments
waleedlatif1 May 19, 2026
41b172f
azure_devops: address more bugbot comments
waleedlatif1 May 19, 2026
5959ecb
azure_devops: pin add_comment to documented api-version 7.0-preview.3
waleedlatif1 May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions apps/docs/components/icons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3126,6 +3126,36 @@ export function AzureIcon(props: SVGProps<SVGSVGElement>) {
)
}

export function AzureDevOpsIcon(props: SVGProps<SVGSVGElement>) {
const id = useId()
const gradientId = `azure_devops_gradient_${id}`
return (
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128' {...props}>
<defs>
<linearGradient
id={gradientId}
gradientUnits='userSpaceOnUse'
x1='9'
y1='16.97'
x2='9'
y2='1.03'
gradientTransform='scale(7.11111)'
>
<stop offset='0' stopColor='#0078d4' />
<stop offset='.16' stopColor='#1380da' />
<stop offset='.53' stopColor='#3c91e5' />
<stop offset='.82' stopColor='#559cec' />
<stop offset='1' stopColor='#5ea0ef' />
</linearGradient>
</defs>
<path
fill={`url(#${gradientId})`}
d='M120.89 28.445v69.262l-28.445 23.324-44.09-16.07v15.93L23.395 88.25l72.746 5.688V31.574ZM96.64 31.93 55.82 7.11v16.285L18.348 34.418 7.109 48.852v32.785l16.075 7.11V46.718Zm0 0'
/>
</svg>
)
}

export const GroqIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
{...props}
Expand Down
2 changes: 2 additions & 0 deletions apps/docs/components/ui/icon-mapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
AshbyIcon,
AthenaIcon,
AttioIcon,
AzureDevOpsIcon,
AzureIcon,
BoxCompanyIcon,
BrainIcon,
Expand Down Expand Up @@ -226,6 +227,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
ashby: AshbyIcon,
athena: AthenaIcon,
attio: AttioIcon,
azure_devops: AzureDevOpsIcon,
box: BoxCompanyIcon,
brandfetch: BrandfetchIcon,
brightdata: BrightDataIcon,
Expand Down
554 changes: 554 additions & 0 deletions apps/docs/content/docs/en/tools/azure_devops.mdx

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions apps/docs/content/docs/en/tools/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"ashby",
"athena",
"attio",
"azure_devops",
"box",
"brandfetch",
"brightdata",
Expand Down
83 changes: 83 additions & 0 deletions apps/docs/content/docs/en/triggers/azure_devops.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: Azure Devops
description: Available Azure Devops triggers for automating workflows
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard
type="azure_devops"
color="#0078D4"
/>

Azure Devops provides 3 triggers for automating workflows based on events.

## Triggers

### Azure DevOps Build Failed

Trigger workflow when an Azure DevOps build fails, is canceled, or partially succeeds

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `buildId` | number | Build ID |
| `buildNumber` | string | Build number string \(e.g. 20240101.1\) |
| `result` | string | Build result: failed \| canceled \| partiallySucceeded |
| `pipelineId` | number | Pipeline definition ID |
| `pipelineName` | string | Pipeline definition name |
| `projectName` | string | Azure DevOps project name |
| `branch` | string | Source branch name \(refs/heads/ prefix stripped\) |
| `commitSha` | string | Source commit SHA |
| `triggeredBy` | string | Display name of the person who triggered the build |
| `triggeredByEmail` | string | Email/unique name of the person who triggered the build |
| `startTime` | string | Build start time \(ISO 8601\) |
| `finishTime` | string | Build finish time \(ISO 8601\) |
| `buildUrl` | string | API URL for the build resource |


---

### Azure DevOps Webhook (All Service Hook Events)

Trigger on whichever service hook event types you configure in Azure DevOps. Sim does not filter deliveries for this trigger.

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Service hook event type \(e.g. build.complete, workitem.created\) |
| `notificationId` | number | Notification ID |
| `subscriptionId` | string | Service hook subscription ID |
| `publisherId` | string | Publisher ID \(e.g. tfs\) |
| `createdDate` | string | Event creation time \(ISO 8601\) |
| `resource` | json | Event resource payload |
| `resourceContainers` | json | Resource container references \(project, collection, etc.\) |
| `message` | json | Short message object |
| `detailedMessage` | json | Detailed message object |


---

### Azure DevOps Work Item Created

Trigger workflow when a work item is created in Azure DevOps

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `workItemId` | number | Work item ID |
| `workItemType` | string | Work item type for Basic process \(e.g. Issue, Task, Epic\) |
| `title` | string | Work item title |
| `state` | string | Work item state for Basic process \(e.g. To Do, Doing, Done\) |
| `createdBy` | string | Display name of the creator |
| `assignedTo` | string | Assignee display name, or empty string if unassigned |
| `priority` | number | Priority \(1–4\), or 0 if not set |
| `areaPath` | string | Area path |
| `iterationPath` | string | Iteration path |
| `description` | string | Work item description \(HTML\), or empty string if not set |
| `projectName` | string | Azure DevOps project name |
| `workItemUrl` | string | API URL for the work item resource |

1 change: 1 addition & 0 deletions apps/docs/content/docs/en/triggers/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"airtable",
"ashby",
"attio",
"azure_devops",
"calcom",
"calendly",
"circleback",
Expand Down
2 changes: 2 additions & 0 deletions apps/sim/app/(landing)/integrations/data/icon-mapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
AshbyIcon,
AthenaIcon,
AttioIcon,
AzureDevOpsIcon,
AzureIcon,
BoxCompanyIcon,
BrainIcon,
Expand Down Expand Up @@ -226,6 +227,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
ashby: AshbyIcon,
athena: AthenaIcon,
attio: AttioIcon,
azure_devops: AzureDevOpsIcon,
box: BoxCompanyIcon,
brandfetch: BrandfetchIcon,
brightdata: BrightDataIcon,
Expand Down
105 changes: 104 additions & 1 deletion apps/sim/app/(landing)/integrations/data/integrations.json
Original file line number Diff line number Diff line change
Expand Up @@ -1882,6 +1882,105 @@
"integrationTypes": ["security"],
"tags": ["identity", "microsoft-365"]
},
{
"type": "azure_devops",
"slug": "azure-devops",
"name": "Azure DevOps",
"description": "Interact with Azure DevOps pipelines, builds, and work items",
"longDescription": "Integrate Azure DevOps into your workflow. List and inspect pipelines and builds, query and manage work items, and add or read comments.",
"bgColor": "#0078D4",
"iconName": "AzureDevOpsIcon",
"docsUrl": "https://docs.sim.ai/tools/azure_devops",
"operations": [
{
"name": "List Pipelines",
"description": "List all pipelines in an Azure DevOps project. Returns pipeline ID, name, folder, revision, and URL."
},
{
"name": "Get Pipeline",
"description": "Get details for a specific pipeline in an Azure DevOps project, including configuration and repository info."
},
{
"name": "List Pipeline Runs",
"description": "List runs for a specific pipeline in an Azure DevOps project. Returns run ID, name, state, result, and timestamps."
},
{
"name": "Get Pipeline Run",
"description": "Get details for a specific pipeline run in an Azure DevOps project. Returns run state, result, timestamps, and the pipeline reference."
},
{
"name": "List Builds",
"description": "List builds in an Azure DevOps project. Optionally filter by pipeline definition, status, result, or branch."
},
{
"name": "List Build Logs",
"description": "List all log entries for a specific build in Azure DevOps. Returns log IDs, types, and line counts — use the log ID with the Get Build Log tool to fetch actual log text."
},
{
"name": "Get Build Log",
"description": "Fetch the text content of a specific build log in Azure DevOps. Use List Build Logs first to get the log ID. Optionally retrieve only a line range with startLine/endLine."
},
{
"name": "Get Build Timeline",
"description": "Get the execution timeline for an Azure DevOps build — every stage, job, and task with its result and log ID. Use this to identify which steps failed before fetching their logs with Get Build Log."
},
{
"name": "Get Work Items Between Builds",
"description": "Get work item references associated with commits between two builds in Azure DevOps. Returns work item IDs and URLs — use Get Work Items Batch for full field details."
},
{
"name": "Query Work Items",
"description": "Execute a WIQL query to search for work items in Azure DevOps and return full field details. Use TOP N in your query to limit results (Azure enforces a 200-item maximum per batch fetch)."
},
{
"name": "Get Work Item",
"description": "Fetch full details of a single work item by ID from Azure DevOps, including title, state, type, assignee, and area path."
},
{
"name": "Get Work Items Batch",
"description": "Fetch full details for multiple work items by ID from Azure DevOps in a single call. Pass comma-separated IDs (e.g. "
},
{
"name": "Create Work Item",
"description": "Create a new Basic-process work item (Issue, Task, or Epic) in Azure DevOps. Returns the created work item with its assigned ID."
},
{
"name": "Update Work Item",
"description": "Update one or more fields on an existing work item in Azure DevOps. Provide only the fields you want to change."
},
{
"name": "Add Comment",
"description": "Add a comment to a work item in Azure DevOps."
},
{
"name": "Get Comments",
"description": "List comments for an Azure DevOps work item."
}
],
"operationCount": 16,
"triggers": [
{
"id": "azure_devops_build_failed",
"name": "Azure DevOps Build Failed",
"description": "Trigger workflow when an Azure DevOps build fails, is canceled, or partially succeeds"
},
{
"id": "azure_devops_work_item_created",
"name": "Azure DevOps Work Item Created",
"description": "Trigger workflow when a work item is created in Azure DevOps"
},
{
"id": "azure_devops_webhook",
"name": "Azure DevOps Webhook (All Service Hook Events)",
"description": "Trigger on whichever service hook event types you configure in Azure DevOps. Sim does not filter deliveries for this trigger."
}
],
"triggerCount": 3,
"authType": "api-key",
"category": "tools",
"integrationTypes": ["developer-tools", "productivity"],
"tags": ["ci-cd", "project-management", "version-control"]
},
{
"type": "box",
"slug": "box",
Expand Down Expand Up @@ -4057,6 +4156,10 @@
"name": "Fetch",
"description": "Fetch and parse a file from a URL with optional custom headers."
},
{
"name": "Get",
"description": "Get a workspace file object from a selected file or canonical workspace file ID."
},
Comment thread
waleedlatif1 marked this conversation as resolved.
{
"name": "Write",
"description": "Create a new workspace file. If a file with the same name already exists, a numeric suffix is added (e.g., "
Expand All @@ -4066,7 +4169,7 @@
"description": "Append content to an existing workspace file. The file must already exist. Content is added to the end of the file."
}
],
"operationCount": 4,
"operationCount": 5,
"triggers": [],
"triggerCount": 0,
"authType": "none",
Expand Down
Loading
Loading