@aion0/forge 0.8.1 → 0.8.2

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 (45) hide show
  1. package/RELEASE_NOTES.md +25 -6
  2. package/app/api/connectors/[id]/settings/route.ts +31 -37
  3. package/app/api/connectors/[id]/test/route.ts +260 -0
  4. package/app/api/connectors/install-local/route.ts +211 -0
  5. package/app/api/connectors/marketplace/route.ts +79 -0
  6. package/app/api/connectors/route.ts +41 -46
  7. package/app/api/jobs/route.ts +1 -0
  8. package/app/api/skills/install-local/route.ts +282 -0
  9. package/components/ConnectorsPanel.tsx +526 -211
  10. package/components/SettingsModal.tsx +1 -0
  11. package/components/SkillsPanel.tsx +42 -1
  12. package/lib/agents/claude-adapter.ts +4 -0
  13. package/lib/agents/types.ts +6 -0
  14. package/lib/chat/agent-loop.ts +13 -22
  15. package/lib/chat/protocols/http.ts +1 -1
  16. package/lib/chat/protocols/shell.ts +1 -1
  17. package/lib/chat/tool-dispatcher.ts +20 -20
  18. package/lib/connectors/migration.ts +110 -0
  19. package/lib/connectors/registry.ts +328 -0
  20. package/lib/connectors/sync.ts +305 -0
  21. package/lib/connectors/types.ts +253 -0
  22. package/lib/help-docs/00-overview.md +1 -0
  23. package/lib/help-docs/17-connectors.md +241 -189
  24. package/lib/help-docs/21-build-connector.md +314 -0
  25. package/lib/help-docs/CLAUDE.md +4 -2
  26. package/lib/init.ts +25 -0
  27. package/lib/jobs/dispatcher.ts +28 -8
  28. package/lib/jobs/scheduler.ts +21 -3
  29. package/lib/jobs/store.ts +11 -2
  30. package/lib/jobs/types.ts +12 -0
  31. package/lib/pipeline-scheduler.ts +3 -2
  32. package/lib/pipeline.ts +135 -13
  33. package/lib/plugins/registry.ts +9 -42
  34. package/lib/plugins/types.ts +4 -129
  35. package/lib/settings.ts +7 -0
  36. package/lib/skills.ts +27 -1
  37. package/lib/task-manager.ts +62 -2
  38. package/package.json +3 -1
  39. package/src/core/db/database.ts +4 -0
  40. package/lib/builtin-plugins/github-api.yaml +0 -93
  41. package/lib/builtin-plugins/gitlab.yaml +0 -860
  42. package/lib/builtin-plugins/mantis.probe.js +0 -176
  43. package/lib/builtin-plugins/mantis.yaml +0 -964
  44. package/lib/builtin-plugins/pmdb.yaml +0 -178
  45. package/lib/builtin-plugins/teams.yaml +0 -913
@@ -1,860 +0,0 @@
1
- id: gitlab
2
- name: GitLab
3
- icon: "🦊"
4
- version: "1.1.0"
5
- author: forge
6
- category: connector
7
- mode: server-side
8
- description: |
9
- GitLab REST API connector (server-side via Personal Access Token).
10
- Covers issues, merge requests, projects, pipelines, branches, files,
11
- and notes — about 25 tools. All requests run inside Forge — no
12
- browser tab needed — so it works from chat, jobs, pipelines, and
13
- the CLI alike.
14
-
15
- Replaces the 0.2.x browser-DOM-scraping connector.
16
-
17
- settings:
18
- base_url:
19
- type: string
20
- label: GitLab base URL (no trailing /api/v4)
21
- description: e.g. https://gitlab.com or https://gitlab.example.com
22
- required: true
23
- token:
24
- type: secret
25
- label: Personal Access Token
26
- description: |
27
- Create at <base_url>/-/user_settings/personal_access_tokens.
28
- Suggested scopes: `api` (full) or `read_api + write_repository`
29
- if you only need browse + MR/comment.
30
-
31
- Stored AES-256-GCM-encrypted in ~/.forge/data/plugin-configs.json
32
- with the key at ~/.forge/data/.encrypt-key.
33
- required: true
34
-
35
- tools:
36
- # ─── User ──────────────────────────────────────────────────
37
- me:
38
- description: "Get the current authenticated user (id, username, email, name)."
39
- protocol: http
40
- request:
41
- method: GET
42
- url: '{settings.base_url}/api/v4/user'
43
- headers:
44
- Authorization: 'Bearer {settings.token}'
45
- Accept: 'application/json'
46
- returns: "{ id, username, name, email, avatar_url, web_url, state }"
47
-
48
- # ─── Projects ──────────────────────────────────────────────
49
- list_my_projects:
50
- description: |
51
- List projects the authenticated user is a member of. Returns common
52
- fields you need (id, path_with_namespace, name, default_branch,
53
- web_url). Use `find_project` if you want to search by name.
54
- protocol: http
55
- parameters:
56
- per_page:
57
- type: number
58
- default: 50
59
- order_by:
60
- type: string
61
- default: "last_activity_at"
62
- request:
63
- method: GET
64
- url: '{settings.base_url}/api/v4/projects'
65
- headers:
66
- Authorization: 'Bearer {settings.token}'
67
- Accept: 'application/json'
68
- query:
69
- membership: 'true'
70
- simple: 'true'
71
- per_page: '{args.per_page}'
72
- order_by: '{args.order_by}'
73
- returns: "[ { id, name, path_with_namespace, default_branch, web_url, ... } ]"
74
-
75
- find_project:
76
- description: |
77
- Search projects by name / path. Returns top matches with numeric ids —
78
- use those as `project_id` for other tools so you don't need to
79
- URL-encode the path.
80
- protocol: http
81
- parameters:
82
- query:
83
- type: string
84
- required: true
85
- per_page:
86
- type: number
87
- default: 10
88
- request:
89
- method: GET
90
- url: '{settings.base_url}/api/v4/projects'
91
- headers:
92
- Authorization: 'Bearer {settings.token}'
93
- Accept: 'application/json'
94
- query:
95
- search: '{args.query}'
96
- simple: 'true'
97
- per_page: '{args.per_page}'
98
- returns: "[ { id, name, path_with_namespace, web_url } ]"
99
-
100
- get_project:
101
- description: "Get one project by numeric id. Use find_project to look up id from a name."
102
- protocol: http
103
- parameters:
104
- project_id:
105
- type: number
106
- required: true
107
- request:
108
- method: GET
109
- url: '{settings.base_url}/api/v4/projects/{args.project_id}'
110
- headers:
111
- Authorization: 'Bearer {settings.token}'
112
- Accept: 'application/json'
113
-
114
- list_branches:
115
- description: "List branches in a project (default branch shown as `default_branch` on get_project)."
116
- protocol: http
117
- parameters:
118
- project_id:
119
- type: number
120
- required: true
121
- per_page:
122
- type: number
123
- default: 50
124
- search:
125
- type: string
126
- required: false
127
- request:
128
- method: GET
129
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/repository/branches'
130
- headers:
131
- Authorization: 'Bearer {settings.token}'
132
- Accept: 'application/json'
133
- query:
134
- per_page: '{args.per_page}'
135
- search: '{args.search}'
136
-
137
- get_branch:
138
- description: "Get a single branch by name."
139
- protocol: http
140
- parameters:
141
- project_id:
142
- type: number
143
- required: true
144
- branch:
145
- type: string
146
- required: true
147
- request:
148
- method: GET
149
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/repository/branches/{args.branch}'
150
- headers:
151
- Authorization: 'Bearer {settings.token}'
152
- Accept: 'application/json'
153
-
154
- read_file:
155
- description: |
156
- Read a file from a project at a given ref (branch / tag / sha). Returns
157
- raw text. For large files use the GitLab UI directly.
158
- protocol: http
159
- parameters:
160
- project_id:
161
- type: number
162
- required: true
163
- file_path:
164
- type: string
165
- required: true
166
- description: "File path inside the repo. Slashes are fine; GitLab handles them."
167
- ref:
168
- type: string
169
- default: "main"
170
- request:
171
- method: GET
172
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/repository/files/{args.file_path}/raw'
173
- headers:
174
- Authorization: 'Bearer {settings.token}'
175
- Accept: 'text/plain'
176
- query:
177
- ref: '{args.ref}'
178
-
179
- list_commits:
180
- description: "List commits on a branch / ref."
181
- protocol: http
182
- parameters:
183
- project_id:
184
- type: number
185
- required: true
186
- ref_name:
187
- type: string
188
- description: "Branch / tag / sha"
189
- default: "main"
190
- per_page:
191
- type: number
192
- default: 25
193
- request:
194
- method: GET
195
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/repository/commits'
196
- headers:
197
- Authorization: 'Bearer {settings.token}'
198
- Accept: 'application/json'
199
- query:
200
- ref_name: '{args.ref_name}'
201
- per_page: '{args.per_page}'
202
-
203
- # ─── Issues ────────────────────────────────────────────────
204
- list_my_issues:
205
- description: "List issues assigned to me across all projects. state ∈ {opened, closed, all}."
206
- protocol: http
207
- parameters:
208
- state:
209
- type: string
210
- default: "opened"
211
- labels:
212
- type: string
213
- description: "Comma-separated label names"
214
- required: false
215
- per_page:
216
- type: number
217
- default: 50
218
- request:
219
- method: GET
220
- url: '{settings.base_url}/api/v4/issues'
221
- headers:
222
- Authorization: 'Bearer {settings.token}'
223
- Accept: 'application/json'
224
- query:
225
- scope: 'assigned_to_me'
226
- state: '{args.state}'
227
- labels: '{args.labels}'
228
- per_page: '{args.per_page}'
229
- returns: "[ { iid, project_id, title, state, labels, milestone, assignees, web_url, ... } ]"
230
-
231
- list_issues:
232
- description: "List issues in a project with optional filters."
233
- protocol: http
234
- parameters:
235
- project_id:
236
- type: number
237
- required: true
238
- state:
239
- type: string
240
- default: "opened"
241
- labels:
242
- type: string
243
- required: false
244
- milestone:
245
- type: string
246
- required: false
247
- assignee_username:
248
- type: string
249
- required: false
250
- search:
251
- type: string
252
- description: "Free-text search on title + description"
253
- required: false
254
- per_page:
255
- type: number
256
- default: 50
257
- request:
258
- method: GET
259
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues'
260
- headers:
261
- Authorization: 'Bearer {settings.token}'
262
- Accept: 'application/json'
263
- query:
264
- state: '{args.state}'
265
- labels: '{args.labels}'
266
- milestone: '{args.milestone}'
267
- assignee_username: '{args.assignee_username}'
268
- search: '{args.search}'
269
- per_page: '{args.per_page}'
270
-
271
- get_issue:
272
- description: "Get one issue by project + iid (project-scoped issue number)."
273
- protocol: http
274
- parameters:
275
- project_id:
276
- type: number
277
- required: true
278
- issue_iid:
279
- type: number
280
- required: true
281
- request:
282
- method: GET
283
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues/{args.issue_iid}'
284
- headers:
285
- Authorization: 'Bearer {settings.token}'
286
- Accept: 'application/json'
287
-
288
- search_issues:
289
- description: "Search issues across ALL projects visible to the user."
290
- protocol: http
291
- parameters:
292
- query:
293
- type: string
294
- required: true
295
- state:
296
- type: string
297
- default: "opened"
298
- per_page:
299
- type: number
300
- default: 25
301
- request:
302
- method: GET
303
- url: '{settings.base_url}/api/v4/issues'
304
- headers:
305
- Authorization: 'Bearer {settings.token}'
306
- Accept: 'application/json'
307
- query:
308
- search: '{args.query}'
309
- state: '{args.state}'
310
- per_page: '{args.per_page}'
311
-
312
- create_issue:
313
- description: "Create an issue in a project. Returns the created issue including iid + web_url."
314
- protocol: http
315
- destructive: true
316
- parameters:
317
- project_id:
318
- type: number
319
- required: true
320
- title:
321
- type: string
322
- required: true
323
- description:
324
- type: string
325
- required: false
326
- labels:
327
- type: string
328
- required: false
329
- assignee_ids:
330
- type: string
331
- description: "Comma-separated user ids"
332
- required: false
333
- milestone_id:
334
- type: number
335
- required: false
336
- request:
337
- method: POST
338
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues'
339
- headers:
340
- Authorization: 'Bearer {settings.token}'
341
- Accept: 'application/json'
342
- body:
343
- title: '{args.title}'
344
- description: '{args.description}'
345
- labels: '{args.labels}'
346
- assignee_ids: '{args.assignee_ids}'
347
- milestone_id: '{args.milestone_id}'
348
-
349
- update_issue:
350
- description: |
351
- Partial update — only fields you set change. Common uses:
352
- change state ('close' / 'reopen'), reassign, edit labels.
353
- protocol: http
354
- destructive: true
355
- parameters:
356
- project_id:
357
- type: number
358
- required: true
359
- issue_iid:
360
- type: number
361
- required: true
362
- title:
363
- type: string
364
- required: false
365
- description:
366
- type: string
367
- required: false
368
- state_event:
369
- type: string
370
- description: "'close' | 'reopen'"
371
- required: false
372
- labels:
373
- type: string
374
- required: false
375
- assignee_ids:
376
- type: string
377
- required: false
378
- request:
379
- method: PUT
380
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues/{args.issue_iid}'
381
- headers:
382
- Authorization: 'Bearer {settings.token}'
383
- Accept: 'application/json'
384
- body:
385
- title: '{args.title}'
386
- description: '{args.description}'
387
- state_event: '{args.state_event}'
388
- labels: '{args.labels}'
389
- assignee_ids: '{args.assignee_ids}'
390
-
391
- list_issue_notes:
392
- description: "List comments on an issue."
393
- protocol: http
394
- parameters:
395
- project_id:
396
- type: number
397
- required: true
398
- issue_iid:
399
- type: number
400
- required: true
401
- per_page:
402
- type: number
403
- default: 50
404
- sort:
405
- type: string
406
- default: "asc"
407
- request:
408
- method: GET
409
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues/{args.issue_iid}/notes'
410
- headers:
411
- Authorization: 'Bearer {settings.token}'
412
- Accept: 'application/json'
413
- query:
414
- per_page: '{args.per_page}'
415
- sort: '{args.sort}'
416
-
417
- add_issue_note:
418
- description: "Post a comment on an issue."
419
- protocol: http
420
- destructive: true
421
- parameters:
422
- project_id:
423
- type: number
424
- required: true
425
- issue_iid:
426
- type: number
427
- required: true
428
- body:
429
- type: string
430
- required: true
431
- request:
432
- method: POST
433
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/issues/{args.issue_iid}/notes'
434
- headers:
435
- Authorization: 'Bearer {settings.token}'
436
- Accept: 'application/json'
437
- body:
438
- body: '{args.body}'
439
-
440
- # ─── Merge requests ────────────────────────────────────────
441
- list_my_mrs:
442
- description: "List MRs assigned to me across all projects."
443
- protocol: http
444
- parameters:
445
- state:
446
- type: string
447
- default: "opened"
448
- per_page:
449
- type: number
450
- default: 50
451
- request:
452
- method: GET
453
- url: '{settings.base_url}/api/v4/merge_requests'
454
- headers:
455
- Authorization: 'Bearer {settings.token}'
456
- Accept: 'application/json'
457
- query:
458
- scope: 'assigned_to_me'
459
- state: '{args.state}'
460
- per_page: '{args.per_page}'
461
-
462
- list_mrs:
463
- description: "List merge requests in a project with filters."
464
- protocol: http
465
- parameters:
466
- project_id:
467
- type: number
468
- required: true
469
- state:
470
- type: string
471
- default: "opened"
472
- description: "opened | closed | merged | locked | all"
473
- source_branch:
474
- type: string
475
- required: false
476
- target_branch:
477
- type: string
478
- required: false
479
- labels:
480
- type: string
481
- required: false
482
- search:
483
- type: string
484
- required: false
485
- per_page:
486
- type: number
487
- default: 50
488
- request:
489
- method: GET
490
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests'
491
- headers:
492
- Authorization: 'Bearer {settings.token}'
493
- Accept: 'application/json'
494
- query:
495
- state: '{args.state}'
496
- source_branch: '{args.source_branch}'
497
- target_branch: '{args.target_branch}'
498
- labels: '{args.labels}'
499
- search: '{args.search}'
500
- per_page: '{args.per_page}'
501
-
502
- get_mr:
503
- description: "Get a merge request by project + iid."
504
- protocol: http
505
- parameters:
506
- project_id:
507
- type: number
508
- required: true
509
- mr_iid:
510
- type: number
511
- required: true
512
- request:
513
- method: GET
514
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}'
515
- headers:
516
- Authorization: 'Bearer {settings.token}'
517
- Accept: 'application/json'
518
-
519
- get_mr_changes:
520
- description: "Get the diff + changed files for a merge request."
521
- protocol: http
522
- parameters:
523
- project_id:
524
- type: number
525
- required: true
526
- mr_iid:
527
- type: number
528
- required: true
529
- request:
530
- method: GET
531
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}/changes'
532
- headers:
533
- Authorization: 'Bearer {settings.token}'
534
- Accept: 'application/json'
535
- returns: "{ id, iid, changes: [ { old_path, new_path, diff } ], ... }"
536
-
537
- search_mrs:
538
- description: "Search MRs across all visible projects."
539
- protocol: http
540
- parameters:
541
- query:
542
- type: string
543
- required: true
544
- state:
545
- type: string
546
- default: "opened"
547
- per_page:
548
- type: number
549
- default: 25
550
- request:
551
- method: GET
552
- url: '{settings.base_url}/api/v4/merge_requests'
553
- headers:
554
- Authorization: 'Bearer {settings.token}'
555
- Accept: 'application/json'
556
- query:
557
- search: '{args.query}'
558
- state: '{args.state}'
559
- per_page: '{args.per_page}'
560
-
561
- create_mr:
562
- description: |
563
- Create a merge request. Common pattern after a Forge pipeline pushes a
564
- fix branch: create_mr(project_id, source_branch=fix/..., target_branch=main, title=..., description=...).
565
- protocol: http
566
- destructive: true
567
- parameters:
568
- project_id:
569
- type: number
570
- required: true
571
- source_branch:
572
- type: string
573
- required: true
574
- target_branch:
575
- type: string
576
- required: true
577
- title:
578
- type: string
579
- required: true
580
- description:
581
- type: string
582
- required: false
583
- remove_source_branch:
584
- type: boolean
585
- default: true
586
- squash:
587
- type: boolean
588
- default: false
589
- assignee_ids:
590
- type: string
591
- description: "Comma-separated user ids"
592
- required: false
593
- labels:
594
- type: string
595
- required: false
596
- request:
597
- method: POST
598
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests'
599
- headers:
600
- Authorization: 'Bearer {settings.token}'
601
- Accept: 'application/json'
602
- body:
603
- source_branch: '{args.source_branch}'
604
- target_branch: '{args.target_branch}'
605
- title: '{args.title}'
606
- description: '{args.description}'
607
- remove_source_branch: '{args.remove_source_branch}'
608
- squash: '{args.squash}'
609
- assignee_ids: '{args.assignee_ids}'
610
- labels: '{args.labels}'
611
-
612
- update_mr:
613
- description: "Partial update — title / description / state_event ('close' | 'reopen') / labels / assignees."
614
- protocol: http
615
- destructive: true
616
- parameters:
617
- project_id:
618
- type: number
619
- required: true
620
- mr_iid:
621
- type: number
622
- required: true
623
- title:
624
- type: string
625
- required: false
626
- description:
627
- type: string
628
- required: false
629
- state_event:
630
- type: string
631
- required: false
632
- labels:
633
- type: string
634
- required: false
635
- assignee_ids:
636
- type: string
637
- required: false
638
- request:
639
- method: PUT
640
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}'
641
- headers:
642
- Authorization: 'Bearer {settings.token}'
643
- Accept: 'application/json'
644
- body:
645
- title: '{args.title}'
646
- description: '{args.description}'
647
- state_event: '{args.state_event}'
648
- labels: '{args.labels}'
649
- assignee_ids: '{args.assignee_ids}'
650
-
651
- approve_mr:
652
- description: "Approve a merge request (requires Developer+ role)."
653
- protocol: http
654
- destructive: true
655
- parameters:
656
- project_id:
657
- type: number
658
- required: true
659
- mr_iid:
660
- type: number
661
- required: true
662
- request:
663
- method: POST
664
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}/approve'
665
- headers:
666
- Authorization: 'Bearer {settings.token}'
667
- Accept: 'application/json'
668
-
669
- merge_mr:
670
- description: "Actually merge a merge request. Verify CI passed + approvals met first."
671
- protocol: http
672
- destructive: true
673
- parameters:
674
- project_id:
675
- type: number
676
- required: true
677
- mr_iid:
678
- type: number
679
- required: true
680
- merge_commit_message:
681
- type: string
682
- required: false
683
- should_remove_source_branch:
684
- type: boolean
685
- default: true
686
- squash:
687
- type: boolean
688
- default: false
689
- merge_when_pipeline_succeeds:
690
- type: boolean
691
- default: false
692
- request:
693
- method: PUT
694
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}/merge'
695
- headers:
696
- Authorization: 'Bearer {settings.token}'
697
- Accept: 'application/json'
698
- body:
699
- merge_commit_message: '{args.merge_commit_message}'
700
- should_remove_source_branch: '{args.should_remove_source_branch}'
701
- squash: '{args.squash}'
702
- merge_when_pipeline_succeeds: '{args.merge_when_pipeline_succeeds}'
703
-
704
- list_mr_notes:
705
- description: "List comments on a merge request."
706
- protocol: http
707
- parameters:
708
- project_id:
709
- type: number
710
- required: true
711
- mr_iid:
712
- type: number
713
- required: true
714
- per_page:
715
- type: number
716
- default: 50
717
- sort:
718
- type: string
719
- default: "asc"
720
- request:
721
- method: GET
722
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}/notes'
723
- headers:
724
- Authorization: 'Bearer {settings.token}'
725
- Accept: 'application/json'
726
- query:
727
- per_page: '{args.per_page}'
728
- sort: '{args.sort}'
729
-
730
- add_mr_note:
731
- description: "Post a comment on a merge request."
732
- protocol: http
733
- destructive: true
734
- parameters:
735
- project_id:
736
- type: number
737
- required: true
738
- mr_iid:
739
- type: number
740
- required: true
741
- body:
742
- type: string
743
- required: true
744
- request:
745
- method: POST
746
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/merge_requests/{args.mr_iid}/notes'
747
- headers:
748
- Authorization: 'Bearer {settings.token}'
749
- Accept: 'application/json'
750
- body:
751
- body: '{args.body}'
752
-
753
- # ─── Pipelines / CI ────────────────────────────────────────
754
- list_pipelines:
755
- description: "List pipelines for a project. Filter by ref / status / username."
756
- protocol: http
757
- parameters:
758
- project_id:
759
- type: number
760
- required: true
761
- ref:
762
- type: string
763
- required: false
764
- status:
765
- type: string
766
- description: "running | pending | success | failed | canceled | skipped | manual"
767
- required: false
768
- username:
769
- type: string
770
- required: false
771
- per_page:
772
- type: number
773
- default: 20
774
- request:
775
- method: GET
776
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/pipelines'
777
- headers:
778
- Authorization: 'Bearer {settings.token}'
779
- Accept: 'application/json'
780
- query:
781
- ref: '{args.ref}'
782
- status: '{args.status}'
783
- username: '{args.username}'
784
- per_page: '{args.per_page}'
785
-
786
- get_pipeline:
787
- description: "Get one pipeline's details by id."
788
- protocol: http
789
- parameters:
790
- project_id:
791
- type: number
792
- required: true
793
- pipeline_id:
794
- type: number
795
- required: true
796
- request:
797
- method: GET
798
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/pipelines/{args.pipeline_id}'
799
- headers:
800
- Authorization: 'Bearer {settings.token}'
801
- Accept: 'application/json'
802
-
803
- list_pipeline_jobs:
804
- description: "List jobs in a pipeline."
805
- protocol: http
806
- parameters:
807
- project_id:
808
- type: number
809
- required: true
810
- pipeline_id:
811
- type: number
812
- required: true
813
- scope:
814
- type: string
815
- description: "Comma list of: running, pending, finished, branches, tags. Empty = all."
816
- required: false
817
- request:
818
- method: GET
819
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/pipelines/{args.pipeline_id}/jobs'
820
- headers:
821
- Authorization: 'Bearer {settings.token}'
822
- Accept: 'application/json'
823
- query:
824
- scope: '{args.scope}'
825
-
826
- retry_pipeline:
827
- description: "Retry failed jobs in a pipeline."
828
- protocol: http
829
- destructive: true
830
- parameters:
831
- project_id:
832
- type: number
833
- required: true
834
- pipeline_id:
835
- type: number
836
- required: true
837
- request:
838
- method: POST
839
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/pipelines/{args.pipeline_id}/retry'
840
- headers:
841
- Authorization: 'Bearer {settings.token}'
842
- Accept: 'application/json'
843
-
844
- cancel_pipeline:
845
- description: "Cancel all running jobs in a pipeline."
846
- protocol: http
847
- destructive: true
848
- parameters:
849
- project_id:
850
- type: number
851
- required: true
852
- pipeline_id:
853
- type: number
854
- required: true
855
- request:
856
- method: POST
857
- url: '{settings.base_url}/api/v4/projects/{args.project_id}/pipelines/{args.pipeline_id}/cancel'
858
- headers:
859
- Authorization: 'Bearer {settings.token}'
860
- Accept: 'application/json'