Skip to content

Commit 0c69302

Browse files
waleedlatif1claude
andauthored
fix(integrations): harden jira, jsm, ashby, google drive, slack, confluence, notion (#4345)
* fix(integrations): validate and harden jira, jsm, ashby, google drive, slack, confluence, notion Audit and fix contract drift, input validation, and error handling across integrations: - Jira: NaN guards on worklog seconds, JSON.parse try/catch on internal API responses, domain normalization (strip leading https://), JQL injection prevention via project key validation, ADF helper consolidation, /search/jql nextPageToken pagination, defensive .trim() on ID path params, encodeURIComponent on watcher account IDs, resolveAssigneeAccountId helper, parent-as-object wrapping, summary fallback, add read-bulk operation. Restored total field (always null) to preserve contract. - JSM: customer/organization route validation - Ashby: types and tool output cleanup across all 30+ tools - Google Drive: tighter response handling across read/write/share tools - Slack: types and tool fixes (canvas, reactions, messaging, members) - Confluence: update tool and types - Docs: regenerated mdx for all touched integrations * fix(ashby): add subblock migrations for removed expand form definition fields * fix(slack): restore canvas_id fallback to data.id for backwards compat Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(jsm): explicit 400 when deprecated `emails` param is sent Address greptile review on PR #4345: instead of silently dropping `emails` and falling through to list-customers, return a 400 telling the caller to use `accountIds`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(google_drive): include HTTP status in fallback error messages Address greptile review on PR #4345: when Google Drive returns a non-JSON error body, surface the response status/statusText so failures are diagnosable instead of falling through to a generic message. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ashby): drop stray websiteUrl→website remap for update_candidate The update_candidate tool reads params.websiteUrl directly; mapping it to result.website added a confusing dead field. The websiteUrl subBlock auto-passes through with the matching name. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(google_drive): rename canonical params to avoid subBlock ID clash `mimeType`, `query`, and `pageSize` canonical IDs collided with existing subBlock IDs in the same block (failing the canonical-param validation test). Drop the canonicalParamId from search/get_content single-input fields and route them to tool params explicitly in tools.config.params. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ashby): remove filterCandidateId from removed-subblock migrations The candidate-id filter was reintroduced as a valid Ashby subBlock, but the migration map still rewrote it to _removed_filterCandidateId on every workflow load, silently breaking the field. Drop the entry so user values persist. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ashby): restore documented response fields dropped during refactor Restore three fields that exist in Ashby's API responses but were dropped during the recent refactor: applicationLimitCalloutHtml on /jobPosting.info, compensation on /job.info (and add the `compensation` expand), and managerId on /user.list. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * correctness * updated types * fix(ashby): gate operation-specific param mappings to prevent stale overwrites Multiple subBlocks share the same target tool param (createdAt is set by appCreatedAt/candidateCreatedAt/noteCreatedAt; candidateId by appCandidateId/ filterCandidateId). Because subBlock values persist across operation switches, a stale value from a prior operation could silently overwrite the correct one. Guard each mapping with an explicit operation check. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ashby): gate offerApplicationId mapping by operation Same shared-target hazard as the prior fix: offerApplicationId maps to result.applicationId without an operation guard, so a stale value from list_offers could overwrite the active applicationId on get_application, change_application_stage, or list_interviews. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ashby): include list_locations in includeArchived condition Ashby's /location.list accepts includeArchived per the API docs, and the docs page already documents the toggle for list_locations. Add the missing operation value so the toggle renders. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(jira): forward explicit notifyUsers=true query param on issue update Block now distinguishes true/false/undefined for notifyUsers, but the route collapsed true and undefined into a no-param request. Forward the explicit true intent so it survives any future API default change or proxy override. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(jira): quote project key in JQL to defend against injection * fix(jira): quote project key in bulk_read JQL for defense in depth The alphanumeric regex check above already blocks injection, but quoting the project key matches the pattern used elsewhere (issues/route.ts) and hardens the path against future regex changes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 3674274 commit 0c69302

104 files changed

Lines changed: 2390 additions & 783 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs/content/docs/en/tools/ashby.mdx

Lines changed: 117 additions & 63 deletions
Large diffs are not rendered by default.

apps/docs/content/docs/en/tools/confluence.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ Update a Confluence page using the Confluence API.
8181
| `pageId` | string | Yes | Confluence page ID to update \(numeric ID from page URL or API\) |
8282
| `title` | string | No | New title for the page |
8383
| `content` | string | No | New content for the page in Confluence storage format |
84-
| `version` | number | No | Version number of the page \(required for preventing conflicts\) |
8584
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
8685

8786
#### Output
@@ -1091,6 +1090,8 @@ Delete a Confluence space.
10911090
| `ts` | string | ISO 8601 timestamp of the operation |
10921091
| `spaceId` | string | Deleted space ID |
10931092
| `deleted` | boolean | Deletion status |
1093+
| `longTaskId` | string | ID of the long-running deletion task; poll Confluence long-task API to track completion |
1094+
| `longTaskStatusLink` | string | Relative link to the long-task status endpoint |
10941095

10951096
### `confluence_list_spaces`
10961097

apps/docs/content/docs/en/tools/firecrawl.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ Parse uploaded documents (PDF, DOCX, HTML, etc.) into clean markdown using Firec
254254
| `proxy` | string | No | Proxy mode: "basic" or "auto" |
255255
| `zeroDataRetention` | boolean | No | Enable zero data retention. Defaults to false. |
256256
| `apiKey` | string | Yes | Firecrawl API key |
257+
| `pricing` | custom | No | No description |
258+
| `metadata` | string | No | No description |
257259
| `rateLimit` | string | No | No description |
258260

259261
#### Output

apps/docs/content/docs/en/tools/google_drive.mdx

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,78 @@ Get metadata for a specific file in Google Drive by its ID
146146
|`md5Checksum` | string | MD5 hash |
147147
|`version` | string | Version number |
148148

149+
### `google_drive_get_content`
150+
151+
Get content from a file in Google Drive with complete metadata (exports Google Workspace files automatically)
152+
153+
#### Input
154+
155+
| Parameter | Type | Required | Description |
156+
| --------- | ---- | -------- | ----------- |
157+
| `fileId` | string | Yes | The ID of the file to get content from |
158+
| `mimeType` | string | No | The MIME type to export Google Workspace files to \(optional\) |
159+
| `includeRevisions` | boolean | No | Whether to include revision history in the metadata \(default: true, returns first 100 revisions\) |
160+
161+
#### Output
162+
163+
| Parameter | Type | Description |
164+
| --------- | ---- | ----------- |
165+
| `content` | string | File content as text \(Google Workspace files are exported\) |
166+
| `metadata` | object | Complete file metadata from Google Drive |
167+
|`id` | string | Google Drive file ID |
168+
|`kind` | string | Resource type identifier |
169+
|`name` | string | File name |
170+
|`mimeType` | string | MIME type |
171+
|`description` | string | File description |
172+
|`originalFilename` | string | Original uploaded filename |
173+
|`fullFileExtension` | string | Full file extension |
174+
|`fileExtension` | string | File extension |
175+
|`owners` | json | List of file owners |
176+
|`permissions` | json | File permissions |
177+
|`permissionIds` | json | Permission IDs |
178+
|`shared` | boolean | Whether file is shared |
179+
|`ownedByMe` | boolean | Whether owned by current user |
180+
|`writersCanShare` | boolean | Whether writers can share |
181+
|`viewersCanCopyContent` | boolean | Whether viewers can copy |
182+
|`copyRequiresWriterPermission` | boolean | Whether copy requires writer permission |
183+
|`sharingUser` | json | User who shared the file |
184+
|`starred` | boolean | Whether file is starred |
185+
|`trashed` | boolean | Whether file is in trash |
186+
|`explicitlyTrashed` | boolean | Whether explicitly trashed |
187+
|`appProperties` | json | App-specific properties |
188+
|`createdTime` | string | File creation time |
189+
|`modifiedTime` | string | Last modification time |
190+
|`modifiedByMeTime` | string | When modified by current user |
191+
|`viewedByMeTime` | string | When last viewed by current user |
192+
|`sharedWithMeTime` | string | When shared with current user |
193+
|`lastModifyingUser` | json | User who last modified the file |
194+
|`viewedByMe` | boolean | Whether viewed by current user |
195+
|`modifiedByMe` | boolean | Whether modified by current user |
196+
|`webViewLink` | string | URL to view in browser |
197+
|`webContentLink` | string | Direct download URL |
198+
|`iconLink` | string | URL to file icon |
199+
|`thumbnailLink` | string | URL to thumbnail |
200+
|`exportLinks` | json | Export format links |
201+
|`size` | string | File size in bytes |
202+
|`quotaBytesUsed` | string | Storage quota used |
203+
|`md5Checksum` | string | MD5 hash |
204+
|`sha1Checksum` | string | SHA-1 hash |
205+
|`sha256Checksum` | string | SHA-256 hash |
206+
|`parents` | json | Parent folder IDs |
207+
|`spaces` | json | Spaces containing file |
208+
|`driveId` | string | Shared drive ID |
209+
|`capabilities` | json | User capabilities on file |
210+
|`version` | string | Version number |
211+
|`headRevisionId` | string | Head revision ID |
212+
|`hasThumbnail` | boolean | Whether has thumbnail |
213+
|`thumbnailVersion` | string | Thumbnail version |
214+
|`imageMediaMetadata` | json | Image-specific metadata |
215+
|`videoMediaMetadata` | json | Video-specific metadata |
216+
|`isAppAuthorized` | boolean | Whether created by requesting app |
217+
|`contentRestrictions` | json | Content restrictions |
218+
|`linkShareMetadata` | json | Link share metadata |
219+
|`revisions` | json | File revision history \(first 100 revisions only\) |
220+
149221
### `google_drive_create_folder`
150222

151223
Create a new folder in Google Drive with complete metadata returned
@@ -375,6 +447,79 @@ Create a copy of a file in Google Drive
375447
|`owners` | json | List of file owners |
376448
|`size` | string | File size in bytes |
377449

450+
### `google_drive_move`
451+
452+
Move a file or folder to a different folder in Google Drive
453+
454+
#### Input
455+
456+
| Parameter | Type | Required | Description |
457+
| --------- | ---- | -------- | ----------- |
458+
| `fileId` | string | Yes | The ID of the file or folder to move |
459+
| `destinationFolderId` | string | Yes | The ID of the destination folder |
460+
| `removeFromCurrent` | boolean | No | Whether to remove the file from its current parent folder \(default: true\). Set to false to add the file to the destination without removing it from the current location. |
461+
462+
#### Output
463+
464+
| Parameter | Type | Description |
465+
| --------- | ---- | ----------- |
466+
| `file` | json | The moved file metadata |
467+
|`id` | string | Google Drive file ID |
468+
|`kind` | string | Resource type identifier |
469+
|`name` | string | File name |
470+
|`mimeType` | string | MIME type |
471+
|`webViewLink` | string | URL to view in browser |
472+
|`parents` | json | Parent folder IDs |
473+
|`createdTime` | string | File creation time |
474+
|`modifiedTime` | string | Last modification time |
475+
|`owners` | json | List of file owners |
476+
|`size` | string | File size in bytes |
477+
478+
### `google_drive_search`
479+
480+
Search for files in Google Drive using advanced query syntax (e.g., fullText contains, mimeType, modifiedTime, etc.)
481+
482+
#### Input
483+
484+
| Parameter | Type | Required | Description |
485+
| --------- | ---- | -------- | ----------- |
486+
| `query` | string | Yes | Google Drive query string using advanced search syntax \(e.g., "fullText contains \'budget\'", "mimeType = \'application/pdf\'", "modifiedTime &gt; \'2024-01-01\'"\) |
487+
| `pageSize` | number | No | Maximum number of files to return \(default: 100\) |
488+
| `pageToken` | string | No | Token for fetching the next page of results |
489+
490+
#### Output
491+
492+
| Parameter | Type | Description |
493+
| --------- | ---- | ----------- |
494+
| `files` | array | Array of file metadata objects matching the search query |
495+
|`id` | string | Google Drive file ID |
496+
|`kind` | string | Resource type identifier |
497+
|`name` | string | File name |
498+
|`mimeType` | string | MIME type |
499+
|`description` | string | File description |
500+
|`originalFilename` | string | Original uploaded filename |
501+
|`fullFileExtension` | string | Full file extension |
502+
|`fileExtension` | string | File extension |
503+
|`owners` | json | List of file owners |
504+
|`permissions` | json | File permissions |
505+
|`shared` | boolean | Whether file is shared |
506+
|`ownedByMe` | boolean | Whether owned by current user |
507+
|`starred` | boolean | Whether file is starred |
508+
|`trashed` | boolean | Whether file is in trash |
509+
|`createdTime` | string | File creation time |
510+
|`modifiedTime` | string | Last modification time |
511+
|`lastModifyingUser` | json | User who last modified the file |
512+
|`webViewLink` | string | URL to view in browser |
513+
|`webContentLink` | string | Direct download URL |
514+
|`iconLink` | string | URL to file icon |
515+
|`thumbnailLink` | string | URL to thumbnail |
516+
|`size` | string | File size in bytes |
517+
|`parents` | json | Parent folder IDs |
518+
|`driveId` | string | Shared drive ID |
519+
|`capabilities` | json | User capabilities on file |
520+
|`version` | string | Version number |
521+
| `nextPageToken` | string | Token for fetching the next page of results |
522+
378523
### `google_drive_update`
379524

380525
Update file metadata in Google Drive (rename, move, star, add description)
@@ -428,6 +573,29 @@ Move a file to the trash in Google Drive (can be restored later)
428573
|`trashedTime` | string | When file was trashed |
429574
|`webViewLink` | string | URL to view in browser |
430575

576+
### `google_drive_untrash`
577+
578+
Restore a file from the trash in Google Drive
579+
580+
#### Input
581+
582+
| Parameter | Type | Required | Description |
583+
| --------- | ---- | -------- | ----------- |
584+
| `fileId` | string | Yes | The ID of the file to restore from trash |
585+
586+
#### Output
587+
588+
| Parameter | Type | Description |
589+
| --------- | ---- | ----------- |
590+
| `file` | json | The restored file metadata |
591+
|`id` | string | Google Drive file ID |
592+
|`kind` | string | Resource type identifier |
593+
|`name` | string | File name |
594+
|`mimeType` | string | MIME type |
595+
|`trashed` | boolean | Whether file is in trash \(should be false\) |
596+
|`webViewLink` | string | URL to view in browser |
597+
|`parents` | json | Parent folder IDs |
598+
431599
### `google_drive_delete`
432600

433601
Permanently delete a file from Google Drive (bypasses trash)
@@ -505,6 +673,7 @@ List all permissions (who has access) for a file in Google Drive
505673
| Parameter | Type | Required | Description |
506674
| --------- | ---- | -------- | ----------- |
507675
| `fileId` | string | Yes | The ID of the file to list permissions for |
676+
| `pageToken` | string | No | The page token to use for pagination |
508677

509678
#### Output
510679

apps/docs/content/docs/en/tools/jira.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ Assign a Jira issue to a user
384384
| --------- | ---- | -------- | ----------- |
385385
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
386386
| `issueKey` | string | Yes | Jira issue key to assign \(e.g., PROJ-123\) |
387-
| `accountId` | string | Yes | Account ID of the user to assign the issue to. Use "-1" for automatic assignment or null to unassign. |
387+
| `accountId` | string | Yes | Account ID of the user to assign the issue to. Use "-1" for automatic assignment, or leave empty / pass "null" to unassign. |
388388
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
389389

390390
#### Output
@@ -436,7 +436,7 @@ Search for Jira issues using JQL (Jira Query Language)
436436
| `jql` | string | Yes | JQL query string to search for issues \(e.g., "project = PROJ AND status = Open"\) |
437437
| `nextPageToken` | string | No | Cursor token for the next page of results. Omit for the first page. |
438438
| `maxResults` | number | No | Maximum number of results to return per page \(default: 50\) |
439-
| `fields` | array | No | Array of field names to return \(default: all navigable\). Use "*all" for every field. |
439+
| `fields` | array | No | Array of field names to return \(default: all fields\). |
440440
| `cloudId` | string | No | Jira Cloud ID for the instance. If not provided, it will be fetched using the domain. |
441441

442442
#### Output
@@ -506,7 +506,7 @@ Search for Jira issues using JQL (Jira Query Language)
506506
|`updated` | string | ISO 8601 timestamp when the issue was last updated |
507507
| `nextPageToken` | string | Cursor token for the next page. Null when no more results. |
508508
| `isLast` | boolean | Whether this is the last page of results |
509-
| `total` | number | Total number of matching issues \(may not always be available\) |
509+
| `total` | number | Always null. The Jira /search/jql endpoint does not return a total count; use isLast and nextPageToken for pagination. |
510510

511511
### `jira_add_comment`
512512

apps/docs/content/docs/en/tools/jira_service_management.mdx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,8 +331,7 @@ Add customers to a service desk in Jira Service Management
331331
| `domain` | string | Yes | Your Jira domain \(e.g., yourcompany.atlassian.net\) |
332332
| `cloudId` | string | No | Jira Cloud ID for the instance |
333333
| `serviceDeskId` | string | Yes | Service Desk ID \(e.g., "1", "2"\) |
334-
| `accountIds` | string | No | Comma-separated Atlassian account IDs to add as customers |
335-
| `emails` | string | No | Comma-separated email addresses to add as customers |
334+
| `accountIds` | string | Yes | Comma-separated Atlassian account IDs to add as customers |
336335

337336
#### Output
338337

apps/docs/content/docs/en/tools/slack.mdx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,6 @@ Create and share Slack canvases in channels. Canvases are collaborative document
170170
| Parameter | Type | Description |
171171
| --------- | ---- | ----------- |
172172
| `canvas_id` | string | Unique canvas identifier |
173-
| `channel` | string | Channel where canvas was created |
174-
| `title` | string | Canvas title |
175173

176174
### `slack_message_reader`
177175

@@ -522,6 +520,7 @@ List all channels in a Slack workspace. Returns public and private channels the
522520
| `includePrivate` | boolean | No | Include private channels the bot is a member of \(default: true\) |
523521
| `excludeArchived` | boolean | No | Exclude archived channels \(default: true\) |
524522
| `limit` | number | No | Maximum number of channels to return \(default: 100, max: 200\) |
523+
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |
525524

526525
#### Output
527526

@@ -547,6 +546,7 @@ List all channels in a Slack workspace. Returns public and private channels the
547546
| `ids` | array | Array of channel IDs for easy access |
548547
| `names` | array | Array of channel names for easy access |
549548
| `count` | number | Total number of channels returned |
549+
| `nextCursor` | string | Cursor for the next page; null if no more pages |
550550

551551
### `slack_list_members`
552552

@@ -560,13 +560,15 @@ List all members (user IDs) in a Slack channel. Use with Get User Info to resolv
560560
| `botToken` | string | No | Bot token for Custom Bot |
561561
| `channel` | string | Yes | Channel ID to list members from |
562562
| `limit` | number | No | Maximum number of members to return \(default: 100, max: 200\) |
563+
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |
563564

564565
#### Output
565566

566567
| Parameter | Type | Description |
567568
| --------- | ---- | ----------- |
568569
| `members` | array | Array of user IDs who are members of the channel \(e.g., U1234567890\) |
569570
| `count` | number | Total number of members returned |
571+
| `nextCursor` | string | Cursor for the next page; null if no more pages |
570572

571573
### `slack_list_users`
572574

@@ -580,6 +582,7 @@ List all users in a Slack workspace. Returns user profiles with names and avatar
580582
| `botToken` | string | No | Bot token for Custom Bot |
581583
| `includeDeleted` | boolean | No | Include deactivated/deleted users \(default: false\) |
582584
| `limit` | number | No | Maximum number of users to return \(default: 100, max: 200\) |
585+
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |
583586

584587
#### Output
585588

@@ -602,6 +605,7 @@ List all users in a Slack workspace. Returns user profiles with names and avatar
602605
| `ids` | array | Array of user IDs for easy access |
603606
| `names` | array | Array of usernames for easy access |
604607
| `count` | number | Total number of users returned |
608+
| `nextCursor` | string | Cursor for the next page; null if no more pages |
605609

606610
### `slack_get_user`
607611

@@ -638,7 +642,6 @@ Get detailed information about a specific Slack user by their user ID.
638642
|`is_restricted` | boolean | Whether the user is a guest \(restricted\) |
639643
|`is_ultra_restricted` | boolean | Whether the user is a single-channel guest |
640644
|`is_app_user` | boolean | Whether user is an app user |
641-
|`is_stranger` | boolean | Whether user is from different workspace |
642645
|`deleted` | boolean | Whether the user is deactivated |
643646
|`color` | string | User color for display |
644647
|`timezone` | string | Timezone identifier \(e.g., America/Los_Angeles\) |

apps/sim/app/(landing)/integrations/data/integrations.json

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5077,10 +5077,18 @@
50775077
"name": "List Files",
50785078
"description": "List Google Drive files"
50795079
},
5080+
{
5081+
"name": "Search Files",
5082+
"description": "Search for files in Google Drive using advanced query syntax (e.g., fullText contains, mimeType, modifiedTime, etc.)"
5083+
},
50805084
{
50815085
"name": "Get File Info",
50825086
"description": "Get metadata for a specific file in Google Drive by its ID"
50835087
},
5088+
{
5089+
"name": "Get File Content",
5090+
"description": "Get content from a file in Google Drive with complete metadata (exports Google Workspace files automatically)"
5091+
},
50845092
{
50855093
"name": "Create Folder",
50865094
"description": "Create a new folder in Google Drive with complete metadata returned"
@@ -5101,6 +5109,10 @@
51015109
"name": "Copy File",
51025110
"description": "Create a copy of a file in Google Drive"
51035111
},
5112+
{
5113+
"name": "Move File",
5114+
"description": "Move a file or folder to a different folder in Google Drive"
5115+
},
51045116
{
51055117
"name": "Update File",
51065118
"description": "Update file metadata in Google Drive (rename, move, star, add description)"
@@ -5109,6 +5121,10 @@
51095121
"name": "Move to Trash",
51105122
"description": "Move a file to the trash in Google Drive (can be restored later)"
51115123
},
5124+
{
5125+
"name": "Restore from Trash",
5126+
"description": "Restore a file from the trash in Google Drive"
5127+
},
51125128
{
51135129
"name": "Delete Permanently",
51145130
"description": "Permanently delete a file from Google Drive (bypasses trash)"
@@ -5130,7 +5146,7 @@
51305146
"description": "Get information about the user and their Google Drive (storage quota, capabilities)"
51315147
}
51325148
],
5133-
"operationCount": 14,
5149+
"operationCount": 18,
51345150
"triggers": [
51355151
{
51365152
"id": "google_drive_poller",
@@ -6962,6 +6978,10 @@
69626978
"name": "Read Issue",
69636979
"description": "Retrieve detailed information about a specific Jira issue"
69646980
},
6981+
{
6982+
"name": "Read Bulk Issues",
6983+
"description": "Retrieve multiple Jira issues from a project in bulk"
6984+
},
69656985
{
69666986
"name": "Update Issue",
69676987
"description": "Update a Jira issue"
@@ -7055,7 +7075,7 @@
70557075
"description": "Search for Jira users by email address or display name. Returns matching users with their accountId, displayName, and emailAddress."
70567076
}
70577077
],
7058-
"operationCount": 24,
7078+
"operationCount": 25,
70597079
"triggers": [
70607080
{
70617081
"id": "jira_issue_created",

0 commit comments

Comments
 (0)