@bubblelab/bubble-core 0.1.136 → 0.1.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/bubble-bundle.d.ts +87 -87
  2. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  3. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  4. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  5. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +6 -6
  6. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  7. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  8. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  10. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +806 -0
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts.map +1 -0
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.js +256 -0
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.js.map +1 -0
  14. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  15. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  16. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  17. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  18. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +901 -94
  19. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
  20. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +8 -0
  21. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
  22. package/dist/bubbles/service-bubble/apify/apify.d.ts +19 -19
  23. package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
  24. package/dist/bubbles/service-bubble/apify/apify.js +1 -0
  25. package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
  26. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +6 -6
  27. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +8 -8
  28. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +7 -7
  29. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +17 -17
  30. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +10 -10
  31. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +24 -24
  32. package/dist/bubbles/service-bubble/firecrawl.d.ts +350 -350
  33. package/dist/bubbles/service-bubble/followupboss.d.ts +12 -12
  34. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +28 -28
  35. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +62 -62
  36. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  37. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  38. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  39. package/dist/bubbles/service-bubble/google-drive.d.ts +8 -8
  40. package/dist/bubbles/service-bubble/http.d.ts +2 -2
  41. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  42. package/dist/bubbles/service-bubble/jira/jira.d.ts +132 -32
  43. package/dist/bubbles/service-bubble/jira/jira.d.ts.map +1 -1
  44. package/dist/bubbles/service-bubble/jira/jira.js +48 -0
  45. package/dist/bubbles/service-bubble/jira/jira.js.map +1 -1
  46. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +140 -38
  47. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts.map +1 -1
  48. package/dist/bubbles/service-bubble/jira/jira.schema.js +50 -0
  49. package/dist/bubbles/service-bubble/jira/jira.schema.js.map +1 -1
  50. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  51. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +8 -8
  52. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  53. package/dist/bubbles/service-bubble/resend.d.ts +4 -4
  54. package/dist/bubbles/service-bubble/slack/slack.d.ts +388 -388
  55. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  56. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  57. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  58. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  59. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  60. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +64 -64
  61. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +1890 -452
  62. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
  63. package/dist/bubbles/tool-bubble/linkedin-tool.js +300 -56
  64. package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
  65. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +108 -108
  66. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  67. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  68. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  69. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +72 -72
  70. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  71. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +36 -36
  72. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  73. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  74. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +24 -24
  75. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  76. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +26 -26
  77. package/dist/bubbles.json +603 -7
  78. package/package.json +2 -2
  79. package/dist/bubbles/service-bubble/salesforce/index.d.ts +0 -4
  80. package/dist/bubbles/service-bubble/salesforce/index.d.ts.map +0 -1
  81. package/dist/bubbles/service-bubble/salesforce/index.js +0 -4
  82. package/dist/bubbles/service-bubble/salesforce/index.js.map +0 -1
  83. package/dist/bubbles/service-bubble/salesforce/salesforce.d.ts +0 -1331
  84. package/dist/bubbles/service-bubble/salesforce/salesforce.d.ts.map +0 -1
  85. package/dist/bubbles/service-bubble/salesforce/salesforce.js +0 -618
  86. package/dist/bubbles/service-bubble/salesforce/salesforce.js.map +0 -1
  87. package/dist/bubbles/service-bubble/salesforce/salesforce.schema.d.ts +0 -1445
  88. package/dist/bubbles/service-bubble/salesforce/salesforce.schema.d.ts.map +0 -1
  89. package/dist/bubbles/service-bubble/salesforce/salesforce.schema.js +0 -609
  90. package/dist/bubbles/service-bubble/salesforce/salesforce.schema.js.map +0 -1
  91. package/dist/bubbles/service-bubble/salesforce/salesforce.utils.d.ts +0 -87
  92. package/dist/bubbles/service-bubble/salesforce/salesforce.utils.d.ts.map +0 -1
  93. package/dist/bubbles/service-bubble/salesforce/salesforce.utils.js +0 -181
  94. package/dist/bubbles/service-bubble/salesforce/salesforce.utils.js.map +0 -1
package/dist/bubbles.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-02-09T23:59:01.573Z",
3
+ "generatedAt": "2026-02-10T03:51:37.342Z",
4
4
  "totalCount": 61,
5
5
  "bubbles": [
6
6
  {
@@ -36391,20 +36391,25 @@
36391
36391
  "name": "linkedin-tool",
36392
36392
  "alias": "li",
36393
36393
  "type": "tool",
36394
- "shortDescription": "Scrape LinkedIn posts by profile or search by keyword. Get engagement metrics, media, and complete metadata.",
36395
- "useCase": "**",
36396
- "outputSchema": "{\n operation: \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n totalPosts: number // Total number of posts found,\n success: boolean // Whether the operation was successful,\n error: string // Error message if operation failed\n}",
36394
+ "shortDescription": "Look up LinkedIn profiles by URL, scrape posts by profile, or search posts/jobs by keyword.",
36395
+ "useCase": "General purpose bubble for various workflow needs",
36396
+ "outputSchema": "{\n operation: \"scrapeProfile\" | \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n profile: { id: string | null // LinkedIn member ID, publicIdentifier: string | null // Profile slug (e.g., \"williamhgates\"), linkedinUrl: string | null // Full LinkedIn profile URL, firstName: string | null // First name, lastName: string | null // Last name, headline: string | null // Profile headline, about: string | null // About/summary section, openToWork: boolean | null // Whether open to work, hiring: boolean | null // Whether actively hiring, photo: string | null // Profile photo URL, premium: boolean | null // Whether premium subscriber, influencer: boolean | null // Whether LinkedIn influencer, location: { text: string | null // Location text, countryCode: string | null // Country code, country: string | null // Country, state: string | null // State/region, city: string | null // City } | null // Location information, verified: boolean | null // Whether profile is verified, topSkills: string | null // Top skills summary, connectionsCount: number | null // Number of connections, followerCount: number | null // Number of followers, currentPosition: { companyName: string | null }[] | null // Current company/position, experience: { position: string | null // Job title/position, location: string | null // Job location, employmentType: string | null // Employment type, workplaceType: string | null // Workplace type, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, duration: string | null // Duration text, description: string | null // Role description, skills: string[] | null // Skills for this role, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date }[] | null // Work experience history, education: { schoolName: string | null // School name, schoolLinkedinUrl: string | null // School LinkedIn URL, degree: string | null // Degree type, fieldOfStudy: string | null // Field of study, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date, period: string | null // Period text }[] | null // Education history, certifications: { title: string | null, issuedAt: string | null, issuedBy: string | null }[] | null // Certifications, languages: { name: string | null, proficiency: string | null }[] | null // Languages, skills: { name: string | null }[] | null // All skills } | null | undefined // LinkedIn profile data (only for scrapeProfile operation),\n jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n totalPosts: number // Total number of posts found,\n success: boolean // Whether the operation was successful,\n error: string // Error message if operation failed\n}",
36397
36397
  "inputJsonSchema": {
36398
36398
  "type": "object",
36399
36399
  "properties": {
36400
36400
  "operation": {
36401
36401
  "type": "string",
36402
36402
  "enum": [
36403
+ "scrapeProfile",
36403
36404
  "scrapePosts",
36404
36405
  "searchPosts",
36405
36406
  "scrapeJobs"
36406
36407
  ],
36407
- "description": "Operation to perform: scrapePosts (profiles), searchPosts (keywords), or scrapeJobs"
36408
+ "description": "Operation to perform: scrapeProfile (get profile info from LinkedIn URL), scrapePosts (get posts from a profile), searchPosts (search posts by keyword), or scrapeJobs (search jobs)"
36409
+ },
36410
+ "profileUrl": {
36411
+ "type": "string",
36412
+ "description": "LinkedIn profile URL or username (for scrapeProfile operation). Examples: \"https://www.linkedin.com/in/williamhgates\", \"williamhgates\""
36408
36413
  },
36409
36414
  "username": {
36410
36415
  "type": "string",
@@ -36508,12 +36513,482 @@
36508
36513
  "operation": {
36509
36514
  "type": "string",
36510
36515
  "enum": [
36516
+ "scrapeProfile",
36511
36517
  "scrapePosts",
36512
36518
  "searchPosts",
36513
36519
  "scrapeJobs"
36514
36520
  ],
36515
36521
  "description": "Operation that was performed"
36516
36522
  },
36523
+ "profile": {
36524
+ "type": "object",
36525
+ "properties": {
36526
+ "id": {
36527
+ "type": "string",
36528
+ "nullable": true,
36529
+ "description": "LinkedIn member ID"
36530
+ },
36531
+ "publicIdentifier": {
36532
+ "type": "string",
36533
+ "nullable": true,
36534
+ "description": "Profile slug (e.g., \"williamhgates\")"
36535
+ },
36536
+ "linkedinUrl": {
36537
+ "type": "string",
36538
+ "nullable": true,
36539
+ "description": "Full LinkedIn profile URL"
36540
+ },
36541
+ "firstName": {
36542
+ "type": "string",
36543
+ "nullable": true,
36544
+ "description": "First name"
36545
+ },
36546
+ "lastName": {
36547
+ "type": "string",
36548
+ "nullable": true,
36549
+ "description": "Last name"
36550
+ },
36551
+ "headline": {
36552
+ "type": "string",
36553
+ "nullable": true,
36554
+ "description": "Profile headline"
36555
+ },
36556
+ "about": {
36557
+ "type": "string",
36558
+ "nullable": true,
36559
+ "description": "About/summary section"
36560
+ },
36561
+ "openToWork": {
36562
+ "type": "boolean",
36563
+ "nullable": true,
36564
+ "description": "Whether open to work"
36565
+ },
36566
+ "hiring": {
36567
+ "type": "boolean",
36568
+ "nullable": true,
36569
+ "description": "Whether actively hiring"
36570
+ },
36571
+ "photo": {
36572
+ "type": "string",
36573
+ "nullable": true,
36574
+ "description": "Profile photo URL"
36575
+ },
36576
+ "premium": {
36577
+ "type": "boolean",
36578
+ "nullable": true,
36579
+ "description": "Whether premium subscriber"
36580
+ },
36581
+ "influencer": {
36582
+ "type": "boolean",
36583
+ "nullable": true,
36584
+ "description": "Whether LinkedIn influencer"
36585
+ },
36586
+ "location": {
36587
+ "type": "object",
36588
+ "properties": {
36589
+ "text": {
36590
+ "type": "string",
36591
+ "nullable": true,
36592
+ "description": "Location text"
36593
+ },
36594
+ "countryCode": {
36595
+ "type": "string",
36596
+ "nullable": true,
36597
+ "description": "Country code"
36598
+ },
36599
+ "country": {
36600
+ "type": "string",
36601
+ "nullable": true,
36602
+ "description": "Country"
36603
+ },
36604
+ "state": {
36605
+ "type": "string",
36606
+ "nullable": true,
36607
+ "description": "State/region"
36608
+ },
36609
+ "city": {
36610
+ "type": "string",
36611
+ "nullable": true,
36612
+ "description": "City"
36613
+ }
36614
+ },
36615
+ "required": [
36616
+ "text",
36617
+ "countryCode",
36618
+ "country",
36619
+ "state",
36620
+ "city"
36621
+ ],
36622
+ "additionalProperties": false,
36623
+ "nullable": true,
36624
+ "description": "Location information"
36625
+ },
36626
+ "verified": {
36627
+ "type": "boolean",
36628
+ "nullable": true,
36629
+ "description": "Whether profile is verified"
36630
+ },
36631
+ "topSkills": {
36632
+ "type": "string",
36633
+ "nullable": true,
36634
+ "description": "Top skills summary"
36635
+ },
36636
+ "connectionsCount": {
36637
+ "type": "number",
36638
+ "nullable": true,
36639
+ "description": "Number of connections"
36640
+ },
36641
+ "followerCount": {
36642
+ "type": "number",
36643
+ "nullable": true,
36644
+ "description": "Number of followers"
36645
+ },
36646
+ "currentPosition": {
36647
+ "type": "array",
36648
+ "items": {
36649
+ "type": "object",
36650
+ "properties": {
36651
+ "companyName": {
36652
+ "type": "string",
36653
+ "nullable": true
36654
+ }
36655
+ },
36656
+ "required": [
36657
+ "companyName"
36658
+ ],
36659
+ "additionalProperties": false
36660
+ },
36661
+ "nullable": true,
36662
+ "description": "Current company/position"
36663
+ },
36664
+ "experience": {
36665
+ "type": "array",
36666
+ "items": {
36667
+ "type": "object",
36668
+ "properties": {
36669
+ "position": {
36670
+ "type": "string",
36671
+ "nullable": true,
36672
+ "description": "Job title/position"
36673
+ },
36674
+ "location": {
36675
+ "type": "string",
36676
+ "nullable": true,
36677
+ "description": "Job location"
36678
+ },
36679
+ "employmentType": {
36680
+ "type": "string",
36681
+ "nullable": true,
36682
+ "description": "Employment type"
36683
+ },
36684
+ "workplaceType": {
36685
+ "type": "string",
36686
+ "nullable": true,
36687
+ "description": "Workplace type"
36688
+ },
36689
+ "companyName": {
36690
+ "type": "string",
36691
+ "nullable": true,
36692
+ "description": "Company name"
36693
+ },
36694
+ "companyLinkedinUrl": {
36695
+ "type": "string",
36696
+ "nullable": true,
36697
+ "description": "Company LinkedIn URL"
36698
+ },
36699
+ "duration": {
36700
+ "type": "string",
36701
+ "nullable": true,
36702
+ "description": "Duration text"
36703
+ },
36704
+ "description": {
36705
+ "type": "string",
36706
+ "nullable": true,
36707
+ "description": "Role description"
36708
+ },
36709
+ "skills": {
36710
+ "type": "array",
36711
+ "items": {
36712
+ "type": "string"
36713
+ },
36714
+ "nullable": true,
36715
+ "description": "Skills for this role"
36716
+ },
36717
+ "startDate": {
36718
+ "type": "object",
36719
+ "properties": {
36720
+ "month": {
36721
+ "type": "string",
36722
+ "nullable": true,
36723
+ "description": "Month name"
36724
+ },
36725
+ "year": {
36726
+ "type": "number",
36727
+ "nullable": true,
36728
+ "description": "Year"
36729
+ },
36730
+ "text": {
36731
+ "type": "string",
36732
+ "nullable": true,
36733
+ "description": "Formatted date text"
36734
+ }
36735
+ },
36736
+ "required": [
36737
+ "month",
36738
+ "year",
36739
+ "text"
36740
+ ],
36741
+ "additionalProperties": false,
36742
+ "nullable": true,
36743
+ "description": "Start date"
36744
+ },
36745
+ "endDate": {
36746
+ "type": "object",
36747
+ "properties": {
36748
+ "month": {
36749
+ "type": "string",
36750
+ "nullable": true,
36751
+ "description": "Month name"
36752
+ },
36753
+ "year": {
36754
+ "type": "number",
36755
+ "nullable": true,
36756
+ "description": "Year"
36757
+ },
36758
+ "text": {
36759
+ "type": "string",
36760
+ "nullable": true,
36761
+ "description": "Formatted date text"
36762
+ }
36763
+ },
36764
+ "required": [
36765
+ "month",
36766
+ "year",
36767
+ "text"
36768
+ ],
36769
+ "additionalProperties": false,
36770
+ "nullable": true,
36771
+ "description": "End date"
36772
+ }
36773
+ },
36774
+ "required": [
36775
+ "position",
36776
+ "location",
36777
+ "employmentType",
36778
+ "workplaceType",
36779
+ "companyName",
36780
+ "companyLinkedinUrl",
36781
+ "duration",
36782
+ "description",
36783
+ "skills",
36784
+ "startDate",
36785
+ "endDate"
36786
+ ],
36787
+ "additionalProperties": false
36788
+ },
36789
+ "nullable": true,
36790
+ "description": "Work experience history"
36791
+ },
36792
+ "education": {
36793
+ "type": "array",
36794
+ "items": {
36795
+ "type": "object",
36796
+ "properties": {
36797
+ "schoolName": {
36798
+ "type": "string",
36799
+ "nullable": true,
36800
+ "description": "School name"
36801
+ },
36802
+ "schoolLinkedinUrl": {
36803
+ "type": "string",
36804
+ "nullable": true,
36805
+ "description": "School LinkedIn URL"
36806
+ },
36807
+ "degree": {
36808
+ "type": "string",
36809
+ "nullable": true,
36810
+ "description": "Degree type"
36811
+ },
36812
+ "fieldOfStudy": {
36813
+ "type": "string",
36814
+ "nullable": true,
36815
+ "description": "Field of study"
36816
+ },
36817
+ "startDate": {
36818
+ "type": "object",
36819
+ "properties": {
36820
+ "month": {
36821
+ "type": "string",
36822
+ "nullable": true,
36823
+ "description": "Month name"
36824
+ },
36825
+ "year": {
36826
+ "type": "number",
36827
+ "nullable": true,
36828
+ "description": "Year"
36829
+ },
36830
+ "text": {
36831
+ "type": "string",
36832
+ "nullable": true,
36833
+ "description": "Formatted date text"
36834
+ }
36835
+ },
36836
+ "required": [
36837
+ "month",
36838
+ "year",
36839
+ "text"
36840
+ ],
36841
+ "additionalProperties": false,
36842
+ "nullable": true,
36843
+ "description": "Start date"
36844
+ },
36845
+ "endDate": {
36846
+ "type": "object",
36847
+ "properties": {
36848
+ "month": {
36849
+ "type": "string",
36850
+ "nullable": true,
36851
+ "description": "Month name"
36852
+ },
36853
+ "year": {
36854
+ "type": "number",
36855
+ "nullable": true,
36856
+ "description": "Year"
36857
+ },
36858
+ "text": {
36859
+ "type": "string",
36860
+ "nullable": true,
36861
+ "description": "Formatted date text"
36862
+ }
36863
+ },
36864
+ "required": [
36865
+ "month",
36866
+ "year",
36867
+ "text"
36868
+ ],
36869
+ "additionalProperties": false,
36870
+ "nullable": true,
36871
+ "description": "End date"
36872
+ },
36873
+ "period": {
36874
+ "type": "string",
36875
+ "nullable": true,
36876
+ "description": "Period text"
36877
+ }
36878
+ },
36879
+ "required": [
36880
+ "schoolName",
36881
+ "schoolLinkedinUrl",
36882
+ "degree",
36883
+ "fieldOfStudy",
36884
+ "startDate",
36885
+ "endDate",
36886
+ "period"
36887
+ ],
36888
+ "additionalProperties": false
36889
+ },
36890
+ "nullable": true,
36891
+ "description": "Education history"
36892
+ },
36893
+ "certifications": {
36894
+ "type": "array",
36895
+ "items": {
36896
+ "type": "object",
36897
+ "properties": {
36898
+ "title": {
36899
+ "type": "string",
36900
+ "nullable": true
36901
+ },
36902
+ "issuedAt": {
36903
+ "type": "string",
36904
+ "nullable": true
36905
+ },
36906
+ "issuedBy": {
36907
+ "type": "string",
36908
+ "nullable": true
36909
+ }
36910
+ },
36911
+ "required": [
36912
+ "title",
36913
+ "issuedAt",
36914
+ "issuedBy"
36915
+ ],
36916
+ "additionalProperties": false
36917
+ },
36918
+ "nullable": true,
36919
+ "description": "Certifications"
36920
+ },
36921
+ "languages": {
36922
+ "type": "array",
36923
+ "items": {
36924
+ "type": "object",
36925
+ "properties": {
36926
+ "name": {
36927
+ "type": "string",
36928
+ "nullable": true
36929
+ },
36930
+ "proficiency": {
36931
+ "type": "string",
36932
+ "nullable": true
36933
+ }
36934
+ },
36935
+ "required": [
36936
+ "name",
36937
+ "proficiency"
36938
+ ],
36939
+ "additionalProperties": false
36940
+ },
36941
+ "nullable": true,
36942
+ "description": "Languages"
36943
+ },
36944
+ "skills": {
36945
+ "type": "array",
36946
+ "items": {
36947
+ "type": "object",
36948
+ "properties": {
36949
+ "name": {
36950
+ "type": "string",
36951
+ "nullable": true
36952
+ }
36953
+ },
36954
+ "required": [
36955
+ "name"
36956
+ ],
36957
+ "additionalProperties": false
36958
+ },
36959
+ "nullable": true,
36960
+ "description": "All skills"
36961
+ }
36962
+ },
36963
+ "required": [
36964
+ "id",
36965
+ "publicIdentifier",
36966
+ "linkedinUrl",
36967
+ "firstName",
36968
+ "lastName",
36969
+ "headline",
36970
+ "about",
36971
+ "openToWork",
36972
+ "hiring",
36973
+ "photo",
36974
+ "premium",
36975
+ "influencer",
36976
+ "location",
36977
+ "verified",
36978
+ "topSkills",
36979
+ "connectionsCount",
36980
+ "followerCount",
36981
+ "currentPosition",
36982
+ "experience",
36983
+ "education",
36984
+ "certifications",
36985
+ "languages",
36986
+ "skills"
36987
+ ],
36988
+ "additionalProperties": false,
36989
+ "nullable": true,
36990
+ "description": "LinkedIn profile data (only for scrapeProfile operation)"
36991
+ },
36517
36992
  "jobs": {
36518
36993
  "type": "array",
36519
36994
  "items": {
@@ -37220,7 +37695,7 @@
37220
37695
  ],
37221
37696
  "additionalProperties": false
37222
37697
  },
37223
- "usageExample": "// Example usage of linkedin-tool bubble\nconst linkedinTool = new LinkedInTool({\n operation: \"scrapePosts\" // options: \"scrapePosts\", \"searchPosts\", \"scrapeJobs\", // Operation to perform: scrapePosts (profiles), searchPosts (keywords), or scrapeJobs,\n username: \"example string\", // LinkedIn username (for scrapePosts operation). Examples: \"satyanadella\", \"billgates\",\n keyword: \"example string\", // Keyword or phrase to search for (for searchPosts/scrapeJobs). Examples: \"AI\", \"hiring\", \"Software Engineer\",\n location: \"example string\", // Location for job search (e.g. \"San Francisco\", \"Remote\") (scrapeJobs only),\n jobType: [\"full-time\" // options: \"full-time\", \"part-time\", \"contract\", \"temporary\", \"internship\"], // Filter by job type (scrapeJobs only),\n workplaceType: [\"on-site\" // options: \"on-site\", \"remote\", \"hybrid\"], // Filter by workplace type (scrapeJobs only),\n experienceLevel: [\"internship\" // options: \"internship\", \"entry-level\", \"associate\", \"mid-senior\", \"director\", \"executive\"], // Filter by experience level (scrapeJobs only),\n sortBy: \"relevance\" // options: \"relevance\", \"date_posted\", // Sort results by relevance or date posted (for searchPosts operation, default: relevance),\n dateFilter: \"past-24h\" // options: \"past-24h\", \"past-week\", \"past-month\", // Filter posts/jobs by date range (searchPosts/scrapeJobs). Options: past-24h, past-week, past-month. Leave empty for no date filter.,\n limit: 50 // default, // Maximum number of items to fetch (default: 50),\n pageNumber: 1 // default, // Page number for pagination (default: 1),\n});\n\nconst result = await linkedinTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n// operation: \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n// jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n// posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n// username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n// paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n// keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n// totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n// hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n// totalPosts: number // Total number of posts found,\n// success: boolean // Whether the operation was successful,\n// error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
37698
+ "usageExample": "// Example usage of linkedin-tool bubble\nconst linkedinTool = new LinkedInTool({\n operation: \"scrapeProfile\" // options: \"scrapeProfile\", \"scrapePosts\", \"searchPosts\", \"scrapeJobs\", // Operation to perform: scrapeProfile (get profile info from LinkedIn URL), scrapePosts (get posts from a profile), searchPosts (search posts by keyword), or scrapeJobs (search jobs),\n profileUrl: \"example string\", // LinkedIn profile URL or username (for scrapeProfile operation). Examples: \"https://www.linkedin.com/in/williamhgates\", \"williamhgates\",\n username: \"example string\", // LinkedIn username (for scrapePosts operation). Examples: \"satyanadella\", \"billgates\",\n keyword: \"example string\", // Keyword or phrase to search for (for searchPosts/scrapeJobs). Examples: \"AI\", \"hiring\", \"Software Engineer\",\n location: \"example string\", // Location for job search (e.g. \"San Francisco\", \"Remote\") (scrapeJobs only),\n jobType: [\"full-time\" // options: \"full-time\", \"part-time\", \"contract\", \"temporary\", \"internship\"], // Filter by job type (scrapeJobs only),\n workplaceType: [\"on-site\" // options: \"on-site\", \"remote\", \"hybrid\"], // Filter by workplace type (scrapeJobs only),\n experienceLevel: [\"internship\" // options: \"internship\", \"entry-level\", \"associate\", \"mid-senior\", \"director\", \"executive\"], // Filter by experience level (scrapeJobs only),\n sortBy: \"relevance\" // options: \"relevance\", \"date_posted\", // Sort results by relevance or date posted (for searchPosts operation, default: relevance),\n dateFilter: \"past-24h\" // options: \"past-24h\", \"past-week\", \"past-month\", // Filter posts/jobs by date range (searchPosts/scrapeJobs). Options: past-24h, past-week, past-month. Leave empty for no date filter.,\n limit: 50 // default, // Maximum number of items to fetch (default: 50),\n pageNumber: 1 // default, // Page number for pagination (default: 1),\n});\n\nconst result = await linkedinTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n// operation: \"scrapeProfile\" | \"scrapePosts\" | \"searchPosts\" | \"scrapeJobs\" // Operation that was performed,\n// profile: { id: string | null // LinkedIn member ID, publicIdentifier: string | null // Profile slug (e.g., \"williamhgates\"), linkedinUrl: string | null // Full LinkedIn profile URL, firstName: string | null // First name, lastName: string | null // Last name, headline: string | null // Profile headline, about: string | null // About/summary section, openToWork: boolean | null // Whether open to work, hiring: boolean | null // Whether actively hiring, photo: string | null // Profile photo URL, premium: boolean | null // Whether premium subscriber, influencer: boolean | null // Whether LinkedIn influencer, location: { text: string | null // Location text, countryCode: string | null // Country code, country: string | null // Country, state: string | null // State/region, city: string | null // City } | null // Location information, verified: boolean | null // Whether profile is verified, topSkills: string | null // Top skills summary, connectionsCount: number | null // Number of connections, followerCount: number | null // Number of followers, currentPosition: { companyName: string | null }[] | null // Current company/position, experience: { position: string | null // Job title/position, location: string | null // Job location, employmentType: string | null // Employment type, workplaceType: string | null // Workplace type, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, duration: string | null // Duration text, description: string | null // Role description, skills: string[] | null // Skills for this role, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date }[] | null // Work experience history, education: { schoolName: string | null // School name, schoolLinkedinUrl: string | null // School LinkedIn URL, degree: string | null // Degree type, fieldOfStudy: string | null // Field of study, startDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // Start date, endDate: { month: string | null // Month name, year: number | null // Year, text: string | null // Formatted date text } | null // End date, period: string | null // Period text }[] | null // Education history, certifications: { title: string | null, issuedAt: string | null, issuedBy: string | null }[] | null // Certifications, languages: { name: string | null, proficiency: string | null }[] | null // Languages, skills: { name: string | null }[] | null // All skills } | null | undefined // LinkedIn profile data (only for scrapeProfile operation),\n// jobs: { id: string | null // Job ID, title: string | null // Job title, company: { name: string | null, url: string | null, logo: string | null } | null // Company info, location: string | null // Job location, description: string | null // Job description, employmentType: string | null // Employment type, seniorityLevel: string | null // Seniority level, postedAt: string | null // Posted date, url: string | null // Job URL, applyUrl: string | null // Apply URL, salary: { from: number | null, to: number | null, currency: string | null, period: string | null } | null // Salary info, skills: string[] | null // Required skills }[] | undefined // Array of LinkedIn jobs,\n// posts: { urn: string | null // Post URN, fullUrn: string | null // Full URN with prefix, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null // When post was created, text: string | null // Post text content, url: string | null // Post URL, postType: string | null // Post type (regular, quote, etc), author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null // Post author information, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null // Post engagement statistics, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null // Post media content, article: { url: string | null, title: string | null, subtitle: string | null, thumbnail: string | null } | null // Shared article information, document: { title: string | null, pageCount: number | null, url: string | null, thumbnail: string | null } | null // Shared document information, resharedPost: { urn: string | null, postedAt: { date: string | null // Post date (formatted string), relative: string | null // Relative time (e.g., \"2 days ago\"), timestamp: number | null // Unix timestamp in milliseconds } | null, text: string | null, url: string | null, postType: string | null, author: { firstName: string | null // Author first name, lastName: string | null // Author last name, headline: string | null // Author headline/title, username: string | null // Author username, profileUrl: string | null // Author profile URL, profilePicture: string | null // Author profile picture URL } | null, stats: { totalReactions: number | null // Total number of reactions, like: number | null // Number of likes, support: number | null // Number of support reactions, love: number | null // Number of love reactions, insight: number | null // Number of insight reactions, celebrate: number | null // Number of celebrate reactions, funny: number | null // Number of funny reactions, comments: number | null // Number of comments, reposts: number | null // Number of reposts } | null, media: { type: string | null // Media type (image, video, images), url: string | null // Media URL, thumbnail: string | null // Media thumbnail URL, images: { url: string | null, width: number | null, height: number | null }[] | null // Array of images for multi-image posts } | null } | null // Original post that was reshared }[] // Array of LinkedIn posts,\n// username: string | undefined // LinkedIn username that was scraped (only for scrapePosts operation),\n// paginationToken: string | null | undefined // Token for fetching next page of results (only for scrapePosts operation),\n// keyword: string | undefined // Search keyword that was used (only for searchPosts operation),\n// totalResults: number | null | undefined // Total results available (only for searchPosts operation),\n// hasNextPage: boolean | null | undefined // Whether there are more results (only for searchPosts operation),\n// totalPosts: number // Total number of posts found,\n// success: boolean // Whether the operation was successful,\n// error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
37224
37699
  "requiredCredentials": [
37225
37700
  "APIFY_CRED"
37226
37701
  ]
@@ -54855,6 +55330,39 @@
54855
55330
  ],
54856
55331
  "additionalProperties": false
54857
55332
  },
55333
+ {
55334
+ "type": "object",
55335
+ "properties": {
55336
+ "operation": {
55337
+ "type": "string",
55338
+ "enum": [
55339
+ "get_create_fields"
55340
+ ],
55341
+ "description": "Get required and optional fields for creating issues in a project, grouped by issue type"
55342
+ },
55343
+ "project": {
55344
+ "type": "string",
55345
+ "minLength": 1,
55346
+ "description": "Project key (e.g., \"PROJ\")"
55347
+ },
55348
+ "issue_type": {
55349
+ "type": "string",
55350
+ "description": "Filter by issue type name (e.g., \"Bug\", \"Task\"). If omitted, returns fields for all issue types"
55351
+ },
55352
+ "credentials": {
55353
+ "type": "object",
55354
+ "additionalProperties": {
55355
+ "type": "string"
55356
+ },
55357
+ "description": "Credentials (injected at runtime)"
55358
+ }
55359
+ },
55360
+ "required": [
55361
+ "operation",
55362
+ "project"
55363
+ ],
55364
+ "additionalProperties": false
55365
+ },
54858
55366
  {
54859
55367
  "type": "object",
54860
55368
  "properties": {
@@ -56053,6 +56561,94 @@
56053
56561
  ],
56054
56562
  "additionalProperties": false
56055
56563
  },
56564
+ {
56565
+ "type": "object",
56566
+ "properties": {
56567
+ "operation": {
56568
+ "type": "string",
56569
+ "enum": [
56570
+ "get_create_fields"
56571
+ ]
56572
+ },
56573
+ "success": {
56574
+ "type": "boolean",
56575
+ "description": "Whether the operation was successful"
56576
+ },
56577
+ "issue_types": {
56578
+ "type": "array",
56579
+ "items": {
56580
+ "type": "object",
56581
+ "properties": {
56582
+ "id": {
56583
+ "type": "string",
56584
+ "description": "Issue type ID"
56585
+ },
56586
+ "name": {
56587
+ "type": "string",
56588
+ "description": "Issue type name"
56589
+ },
56590
+ "fields": {
56591
+ "type": "array",
56592
+ "items": {
56593
+ "type": "object",
56594
+ "properties": {
56595
+ "fieldId": {
56596
+ "type": "string",
56597
+ "description": "Field ID (e.g., \"summary\", \"customfield_10319\")"
56598
+ },
56599
+ "name": {
56600
+ "type": "string",
56601
+ "description": "Human-readable field name"
56602
+ },
56603
+ "required": {
56604
+ "type": "boolean",
56605
+ "description": "Whether the field is required"
56606
+ },
56607
+ "isCustom": {
56608
+ "type": "boolean",
56609
+ "description": "Whether this is a custom field"
56610
+ },
56611
+ "schema": {
56612
+ "description": "Field type schema from Jira"
56613
+ },
56614
+ "allowedValues": {
56615
+ "type": "array",
56616
+ "items": {},
56617
+ "description": "Allowed values for the field, if constrained"
56618
+ }
56619
+ },
56620
+ "required": [
56621
+ "fieldId",
56622
+ "name",
56623
+ "required",
56624
+ "isCustom"
56625
+ ],
56626
+ "additionalProperties": false
56627
+ },
56628
+ "description": "Fields available for this issue type"
56629
+ }
56630
+ },
56631
+ "required": [
56632
+ "id",
56633
+ "name",
56634
+ "fields"
56635
+ ],
56636
+ "additionalProperties": false
56637
+ },
56638
+ "description": "Issue types with their fields"
56639
+ },
56640
+ "error": {
56641
+ "type": "string",
56642
+ "description": "Error message if operation failed"
56643
+ }
56644
+ },
56645
+ "required": [
56646
+ "operation",
56647
+ "success",
56648
+ "error"
56649
+ ],
56650
+ "additionalProperties": false
56651
+ },
56056
56652
  {
56057
56653
  "type": "object",
56058
56654
  "properties": {
@@ -56227,7 +56823,7 @@
56227
56823
  }
56228
56824
  ]
56229
56825
  },
56230
- "usageExample": "// Search example\nconst jira_search = new JiraBubble({\n operation: \"search\", // Search for issues using JQL query\n jql: \"example string\", // JQL query string. Examples: \"project = PROJ\", \"assignee = currentUser()\", \"status = Open AND created >= -7d\"\n limit: 50 // default, // Maximum number of issues to return (1-100)\n offset: 0 // default, // Starting index for pagination\n fields: [\"example string\"], // Specific fields to return (e.g., [\"summary\", \"status\", \"assignee\"]). Default: all standard fields\n});\n\nconst result = await jira_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n// operation: \"search\",\n// success: boolean // Whether the operation was successful,\n// issues: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog }[] | undefined // Found issues,\n// total: number | undefined // Total matching issues,\n// offset: number | undefined // Current offset,\n// limit: number | undefined // Requested limit,\n// error: string // Error message if operation failed\n// }\n\n\n// Get example\nconst jira_get = new JiraBubble({\n operation: \"get\", // Get details for a specific issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n fields: [\"example string\"], // Specific fields to return. Default: all fields\n expand: [\"changelog\" // options: \"changelog\", \"comments\", \"transitions\"], // Additional data to include\n});\n\nconst result = await jira_get.action();\n// outputSchema for result.data when operation === 'get':\n// {\n// operation: \"get\",\n// success: boolean // Whether the operation was successful,\n// issue: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog } | undefined // Issue details,\n// error: string // Error message if operation failed\n// }\n\n\n// Create example\nconst jira_create = new JiraBubble({\n operation: \"create\", // Create a new issue in Jira\n project: \"example string\", // Project key (e.g., \"PROJ\")\n summary: \"example string\", // Issue title/summary (max 255 chars)\n type: \"Task\" // default, // Issue type: \"Task\", \"Bug\", \"Story\", \"Epic\", etc. Default: \"Task\"\n description: \"example string\", // Issue description (plain text - auto-converted to ADF)\n assignee: \"example string\", // Assignee account ID or email. Leave empty for unassigned\n priority: \"example string\", // Issue priority. Default: uses project default\n labels: [\"example string\"], // Labels to apply (e.g., [\"bug\", \"urgent\"])\n parent: \"example string\", // Parent issue key for subtasks (e.g., \"PROJ-100\")\n due_date: \"example string\", // Due date in YYYY-MM-DD format\n custom_fields: {}, // Custom field values as { fieldId: value } (e.g., { \"customfield_10319\": \"Hardware\" })\n});\n\nconst result = await jira_create.action();\n// outputSchema for result.data when operation === 'create':\n// {\n// operation: \"create\",\n// success: boolean // Whether the operation was successful,\n// issue: { id: string // Created issue ID, key: string // Created issue key, self: string | undefined // Issue API URL } | undefined // Created issue info,\n// error: string // Error message if operation failed\n// }\n\n\n// Update example\nconst jira_update = new JiraBubble({\n operation: \"update\", // Update an existing issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n summary: \"example string\", // New issue title\n description: \"example string\", // New description (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n assignee: \"example string\", // New assignee (account ID/email) or null to unassign\n priority: \"example string\", // New priority\n labels: { add: [\"example string\"] // Labels to add to the issue, remove: [\"example string\"] // Labels to remove from the issue, set: [\"example string\"] // Replace all labels with these (overrides add/remove) }, // Label modifications\n due_date: \"example string\", // New due date (YYYY-MM-DD) or null to clear\n comment: \"example string\", // Add a comment with this update (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_update.action();\n// outputSchema for result.data when operation === 'update':\n// {\n// operation: \"update\",\n// success: boolean // Whether the operation was successful,\n// key: string | undefined // Updated issue key,\n// error: string // Error message if operation failed\n// }\n\n\n// Transition example\nconst jira_transition = new JiraBubble({\n operation: \"transition\", // Transition issue to a new status\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n status: \"example string\", // Target status NAME (e.g., \"In Progress\", \"Done\"). Finds matching transition automatically\n transition_id: \"example string\", // Specific transition ID (from list_transitions). Use when status name is ambiguous\n comment: \"example string\", // Comment to add with the transition (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n resolution: \"example string\", // Resolution when closing (e.g., \"Fixed\", \"Won't Fix\", \"Duplicate\")\n});\n\nconst result = await jira_transition.action();\n// outputSchema for result.data when operation === 'transition':\n// {\n// operation: \"transition\",\n// success: boolean // Whether the operation was successful,\n// key: string | undefined // Transitioned issue key,\n// new_status: string | undefined // New status name,\n// error: string // Error message if operation failed\n// }\n\n\n// List Transitions example\nconst jira_list_transitions = new JiraBubble({\n operation: \"list_transitions\", // Get available transitions for an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n});\n\nconst result = await jira_list_transitions.action();\n// outputSchema for result.data when operation === 'list_transitions':\n// {\n// operation: \"list_transitions\",\n// success: boolean // Whether the operation was successful,\n// transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions,\n// error: string // Error message if operation failed\n// }\n\n\n// List Projects example\nconst jira_list_projects = new JiraBubble({\n operation: \"list_projects\", // List available Jira projects\n limit: 50 // default, // Maximum number of projects to return\n offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n// operation: \"list_projects\",\n// success: boolean // Whether the operation was successful,\n// projects: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name }[] | undefined // Available projects,\n// total: number | undefined // Total projects,\n// error: string // Error message if operation failed\n// }\n\n\n// List Issue Types example\nconst jira_list_issue_types = new JiraBubble({\n operation: \"list_issue_types\", // List issue types for a project\n project: \"example string\", // Project key (e.g., \"PROJ\")\n});\n\nconst result = await jira_list_issue_types.action();\n// outputSchema for result.data when operation === 'list_issue_types':\n// {\n// operation: \"list_issue_types\",\n// success: boolean // Whether the operation was successful,\n// issue_types: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type }[] | undefined // Available issue types,\n// error: string // Error message if operation failed\n// }\n\n\n// Add Comment example\nconst jira_add_comment = new JiraBubble({\n operation: \"add_comment\", // Add a comment to an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n body: \"example string\", // Comment text (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n// operation: \"add_comment\",\n// success: boolean // Whether the operation was successful,\n// comment: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // Created comment,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Comments example\nconst jira_get_comments = new JiraBubble({\n operation: \"get_comments\", // Get comments for an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n limit: 50 // default, // Maximum number of comments to return\n offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_get_comments.action();\n// outputSchema for result.data when operation === 'get_comments':\n// {\n// operation: \"get_comments\",\n// success: boolean // Whether the operation was successful,\n// comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined // Issue comments,\n// total: number | undefined // Total comments,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`jira failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
56826
+ "usageExample": "// Search example\nconst jira_search = new JiraBubble({\n operation: \"search\", // Search for issues using JQL query\n jql: \"example string\", // JQL query string. Examples: \"project = PROJ\", \"assignee = currentUser()\", \"status = Open AND created >= -7d\"\n limit: 50 // default, // Maximum number of issues to return (1-100)\n offset: 0 // default, // Starting index for pagination\n fields: [\"example string\"], // Specific fields to return (e.g., [\"summary\", \"status\", \"assignee\"]). Default: all standard fields\n});\n\nconst result = await jira_search.action();\n// outputSchema for result.data when operation === 'search':\n// {\n// operation: \"search\",\n// success: boolean // Whether the operation was successful,\n// issues: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog }[] | undefined // Found issues,\n// total: number | undefined // Total matching issues,\n// offset: number | undefined // Current offset,\n// limit: number | undefined // Requested limit,\n// error: string // Error message if operation failed\n// }\n\n\n// Get example\nconst jira_get = new JiraBubble({\n operation: \"get\", // Get details for a specific issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n fields: [\"example string\"], // Specific fields to return. Default: all fields\n expand: [\"changelog\" // options: \"changelog\", \"comments\", \"transitions\"], // Additional data to include\n});\n\nconst result = await jira_get.action();\n// outputSchema for result.data when operation === 'get':\n// {\n// operation: \"get\",\n// success: boolean // Whether the operation was successful,\n// issue: { expand: string | undefined // Expanded fields, id: string | undefined // Issue ID, key: string | undefined // Issue key (e.g., \"PROJ-123\"), self: string | undefined // Issue API URL, fields: { summary: string | undefined // Issue title/summary, description: unknown | undefined // Issue description (ADF format), status: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Current status, priority: { id: string // Priority ID, name: string // Priority name } | null | undefined // Issue priority (null if not assigned), assignee: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Assigned user, reporter: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Reporter user (null if deleted or anonymized), issuetype: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type } | undefined // Issue type, project: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name } | undefined // Project, labels: string[] | undefined // Issue labels, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp, duedate: string | null | undefined // Due date (YYYY-MM-DD), parent: { id: string, key: string } | undefined // Parent issue (for subtasks), comment: { comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined, total: number | undefined } | undefined // Issue comments } | undefined // Issue fields, transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions, changelog: unknown | undefined // Issue changelog } | undefined // Issue details,\n// error: string // Error message if operation failed\n// }\n\n\n// Create example\nconst jira_create = new JiraBubble({\n operation: \"create\", // Create a new issue in Jira\n project: \"example string\", // Project key (e.g., \"PROJ\")\n summary: \"example string\", // Issue title/summary (max 255 chars)\n type: \"Task\" // default, // Issue type: \"Task\", \"Bug\", \"Story\", \"Epic\", etc. Default: \"Task\"\n description: \"example string\", // Issue description (plain text - auto-converted to ADF)\n assignee: \"example string\", // Assignee account ID or email. Leave empty for unassigned\n priority: \"example string\", // Issue priority. Default: uses project default\n labels: [\"example string\"], // Labels to apply (e.g., [\"bug\", \"urgent\"])\n parent: \"example string\", // Parent issue key for subtasks (e.g., \"PROJ-100\")\n due_date: \"example string\", // Due date in YYYY-MM-DD format\n custom_fields: {}, // Custom field values as { fieldId: value } (e.g., { \"customfield_10319\": \"Hardware\" })\n});\n\nconst result = await jira_create.action();\n// outputSchema for result.data when operation === 'create':\n// {\n// operation: \"create\",\n// success: boolean // Whether the operation was successful,\n// issue: { id: string // Created issue ID, key: string // Created issue key, self: string | undefined // Issue API URL } | undefined // Created issue info,\n// error: string // Error message if operation failed\n// }\n\n\n// Update example\nconst jira_update = new JiraBubble({\n operation: \"update\", // Update an existing issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\") or issue ID\n summary: \"example string\", // New issue title\n description: \"example string\", // New description (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n assignee: \"example string\", // New assignee (account ID/email) or null to unassign\n priority: \"example string\", // New priority\n labels: { add: [\"example string\"] // Labels to add to the issue, remove: [\"example string\"] // Labels to remove from the issue, set: [\"example string\"] // Replace all labels with these (overrides add/remove) }, // Label modifications\n due_date: \"example string\", // New due date (YYYY-MM-DD) or null to clear\n comment: \"example string\", // Add a comment with this update (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_update.action();\n// outputSchema for result.data when operation === 'update':\n// {\n// operation: \"update\",\n// success: boolean // Whether the operation was successful,\n// key: string | undefined // Updated issue key,\n// error: string // Error message if operation failed\n// }\n\n\n// Transition example\nconst jira_transition = new JiraBubble({\n operation: \"transition\", // Transition issue to a new status\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n status: \"example string\", // Target status NAME (e.g., \"In Progress\", \"Done\"). Finds matching transition automatically\n transition_id: \"example string\", // Specific transition ID (from list_transitions). Use when status name is ambiguous\n comment: \"example string\", // Comment to add with the transition (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n resolution: \"example string\", // Resolution when closing (e.g., \"Fixed\", \"Won't Fix\", \"Duplicate\")\n});\n\nconst result = await jira_transition.action();\n// outputSchema for result.data when operation === 'transition':\n// {\n// operation: \"transition\",\n// success: boolean // Whether the operation was successful,\n// key: string | undefined // Transitioned issue key,\n// new_status: string | undefined // New status name,\n// error: string // Error message if operation failed\n// }\n\n\n// List Transitions example\nconst jira_list_transitions = new JiraBubble({\n operation: \"list_transitions\", // Get available transitions for an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n});\n\nconst result = await jira_list_transitions.action();\n// outputSchema for result.data when operation === 'list_transitions':\n// {\n// operation: \"list_transitions\",\n// success: boolean // Whether the operation was successful,\n// transitions: { id: string // Transition ID, name: string // Transition name (e.g., \"Start Progress\", \"Done\"), to: { id: string // Status ID, name: string // Status name (e.g., \"To Do\", \"In Progress\", \"Done\"), statusCategory: { key: string // Category key, name: string // Category name } | undefined // Status category } | undefined // Target status }[] | undefined // Available transitions,\n// error: string // Error message if operation failed\n// }\n\n\n// List Projects example\nconst jira_list_projects = new JiraBubble({\n operation: \"list_projects\", // List available Jira projects\n limit: 50 // default, // Maximum number of projects to return\n offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_list_projects.action();\n// outputSchema for result.data when operation === 'list_projects':\n// {\n// operation: \"list_projects\",\n// success: boolean // Whether the operation was successful,\n// projects: { id: string // Project ID, key: string // Project key (e.g., \"PROJ\"), name: string // Project name }[] | undefined // Available projects,\n// total: number | undefined // Total projects,\n// error: string // Error message if operation failed\n// }\n\n\n// List Issue Types example\nconst jira_list_issue_types = new JiraBubble({\n operation: \"list_issue_types\", // List issue types for a project\n project: \"example string\", // Project key (e.g., \"PROJ\")\n});\n\nconst result = await jira_list_issue_types.action();\n// outputSchema for result.data when operation === 'list_issue_types':\n// {\n// operation: \"list_issue_types\",\n// success: boolean // Whether the operation was successful,\n// issue_types: { id: string // Issue type ID, name: string // Issue type name (e.g., \"Task\", \"Bug\", \"Story\"), description: string | undefined // Issue type description, subtask: boolean | undefined // Whether this is a subtask type }[] | undefined // Available issue types,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Create Fields example\nconst jira_get_create_fields = new JiraBubble({\n operation: \"get_create_fields\", // Get required and optional fields for creating issues in a project, grouped by issue type\n project: \"example string\", // Project key (e.g., \"PROJ\")\n issue_type: \"example string\", // Filter by issue type name (e.g., \"Bug\", \"Task\"). If omitted, returns fields for all issue types\n});\n\nconst result = await jira_get_create_fields.action();\n// outputSchema for result.data when operation === 'get_create_fields':\n// {\n// operation: \"get_create_fields\",\n// success: boolean // Whether the operation was successful,\n// issue_types: { id: string // Issue type ID, name: string // Issue type name, fields: { fieldId: string // Field ID (e.g., \"summary\", \"customfield_10319\"), name: string // Human-readable field name, required: boolean // Whether the field is required, isCustom: boolean // Whether this is a custom field, schema: unknown | undefined // Field type schema from Jira, allowedValues: unknown[] | undefined // Allowed values for the field, if constrained }[] // Fields available for this issue type }[] | undefined // Issue types with their fields,\n// error: string // Error message if operation failed\n// }\n\n\n// Add Comment example\nconst jira_add_comment = new JiraBubble({\n operation: \"add_comment\", // Add a comment to an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n body: \"example string\", // Comment text (markdown or plain text - auto-converted to ADF). Supports: **bold**, *italic*, `code`, [links](url), # headings, lists, > blockquotes, ``` code blocks ```, ~~strikethrough~~\n});\n\nconst result = await jira_add_comment.action();\n// outputSchema for result.data when operation === 'add_comment':\n// {\n// operation: \"add_comment\",\n// success: boolean // Whether the operation was successful,\n// comment: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp } | undefined // Created comment,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Comments example\nconst jira_get_comments = new JiraBubble({\n operation: \"get_comments\", // Get comments for an issue\n key: \"example string\", // Issue key (e.g., \"PROJ-123\")\n limit: 50 // default, // Maximum number of comments to return\n offset: 0 // default, // Starting index for pagination\n});\n\nconst result = await jira_get_comments.action();\n// outputSchema for result.data when operation === 'get_comments':\n// {\n// operation: \"get_comments\",\n// success: boolean // Whether the operation was successful,\n// comments: { id: string // Comment ID, author: { accountId: string // User account ID, displayName: string | undefined // User display name, emailAddress: string | undefined // User email address, active: boolean | undefined // Whether the user is active } | null | undefined // Comment author (null if deleted or anonymized), body: string | undefined // Comment body as plain text, renderedBody: string | undefined // Comment body as rendered HTML, created: string | undefined // Creation timestamp, updated: string | undefined // Last update timestamp }[] | undefined // Issue comments,\n// total: number | undefined // Total comments,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`jira failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
56231
56827
  "requiredCredentials": [
56232
56828
  "JIRA_CRED"
56233
56829
  ]