Skip to content

Commit 20c94d4

Browse files
NirvedMishraNiloth-p
authored andcommitted
openproject: Update and add OpenProject integration.
Fixes #29944. Co-authored-by: "nirved.mishra.eee23@itbhu.ac.in" <nirved431@gmail.com> Co-authored-by: Niloth P <20315308+Niloth-p@users.noreply.github.com>
1 parent a903db1 commit 20c94d4

16 files changed

Lines changed: 2705 additions & 0 deletions
1.71 KB
Loading
Lines changed: 1 addition & 0 deletions
Loading
27.3 KB
Loading

‎zerver/lib/integrations.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ def __init__(self, name: str, *args: Any, **kwargs: Any) -> None:
520520
WebhookIntegration("netlify", ["continuous-integration", "deployment"]),
521521
WebhookIntegration("newrelic", ["monitoring"], display_name="New Relic"),
522522
WebhookIntegration("opencollective", ["financial"], display_name="Open Collective"),
523+
WebhookIntegration("openproject", ["project-management"], display_name="OpenProject"),
523524
WebhookIntegration("opsgenie", ["meta-integration", "monitoring"]),
524525
WebhookIntegration("pagerduty", ["monitoring"], display_name="PagerDuty"),
525526
WebhookIntegration("papertrail", ["monitoring"]),
@@ -764,6 +765,7 @@ def __init__(self, name: str, *args: Any, **kwargs: Any) -> None:
764765
"netlify": [ScreenshotConfig("deploy_building.json")],
765766
"newrelic": [ScreenshotConfig("incident_activated_new_default_payload.json")],
766767
"opencollective": [ScreenshotConfig("one_time_donation.json")],
768+
"openproject": [ScreenshotConfig("project_created__without_parent.json")],
767769
"opsgenie": [ScreenshotConfig("addrecipient.json")],
768770
"pagerduty": [ScreenshotConfig("trigger_v2.json")],
769771
"papertrail": [ScreenshotConfig("short_post.json", payload_as_query_param=True)],

‎zerver/webhooks/openproject/__init__.py‎

Whitespace-only changes.

‎zerver/webhooks/openproject/doc.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Zulip OpenProject integration
2+
3+
Get Zulip notifications for your **OpenProject** activities!
4+
5+
{start_tabs}
6+
7+
1. {!create-an-incoming-webhook.md!}
8+
9+
1. {!generate-webhook-url-basic.md!}
10+
11+
1. From your OpenProject organization, click on your user profile icon,
12+
choose **Administration**, select **API and Webhooks**, and navigate to
13+
the **Webhooks** tab from the left panel.
14+
15+
1. Click on **+ Webhook**. Enter a name of your choice for the webhook,
16+
set `Payload URL` to the URL generated above, and ensure the webhook is
17+
enabled.
18+
19+
1. Select the events and projects you want to receive notifications for, and
20+
click **Create**.
21+
22+
{end_tabs}
23+
24+
{!congrats.md!}
25+
26+
![](/static/images/integrations/openproject/001.png)
27+
28+
### Related documentation
29+
30+
* [**OpenProject Webhook Integration**][1]
31+
32+
{!webhooks-url-specification.md!}
33+
34+
[1]: https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks
Lines changed: 343 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,343 @@
1+
{
2+
"action": "attachment:created",
3+
"attachment": {
4+
"_type": "Attachment",
5+
"id": 3,
6+
"fileName": "a.out",
7+
"fileSize": 20144,
8+
"description": {
9+
"format": "plain",
10+
"raw": "",
11+
"html": ""
12+
},
13+
"status": "uploaded",
14+
"contentType": "application/x-pie-executable",
15+
"digest": {
16+
"algorithm": "md5",
17+
"hash": "f9d1a2d6c97e33acc10b858001bc0ea1"
18+
},
19+
"createdAt": "2025-01-01T21:27:50.230Z",
20+
"_embedded": {
21+
"author": {
22+
"_type": "User",
23+
"id": 4,
24+
"name": "Nirved Mishra",
25+
"createdAt": "2024-12-31T12:52:44.786Z",
26+
"updatedAt": "2025-01-01T18:28:20.852Z",
27+
"login": "nirved431@gmail.com",
28+
"admin": true,
29+
"firstName": "Nirved",
30+
"lastName": "Mishra",
31+
"email": "nirved431@gmail.com",
32+
"avatar": "https://secure.gravatar.com/avatar/aef06c318f044c985140e4ecae344c4a?default=404&secure=true",
33+
"status": "active",
34+
"identityUrl": null,
35+
"language": "en",
36+
"_links": {
37+
"self": {
38+
"href": "/api/v3/users/4",
39+
"title": "Nirved Mishra"
40+
},
41+
"memberships": {
42+
"href": "/api/v3/memberships?filters=%5B%7B%22principal%22%3A%7B%22operator%22%3A%22%3D%22%2C%22values%22%3A%5B%224%22%5D%7D%7D%5D",
43+
"title": "Memberships"
44+
},
45+
"showUser": {
46+
"href": "/users/4",
47+
"type": "text/html"
48+
},
49+
"updateImmediately": {
50+
"href": "/api/v3/users/4",
51+
"title": "Update nirved431@gmail.com",
52+
"method": "patch"
53+
},
54+
"lock": {
55+
"href": "/api/v3/users/4/lock",
56+
"title": "Set lock on nirved431@gmail.com",
57+
"method": "post"
58+
},
59+
"delete": {
60+
"href": "/api/v3/users/4",
61+
"title": "Delete nirved431@gmail.com",
62+
"method": "delete"
63+
}
64+
}
65+
},
66+
"container": {
67+
"_type": "WorkPackage",
68+
"id": 39,
69+
"lockVersion": 1,
70+
"subject": "task2",
71+
"description": {
72+
"format": "markdown",
73+
"raw": "x vxcv x\n\n<br>",
74+
"html": "<p class=\"op-uc-p\">x vxcv x</p>\n<br>"
75+
},
76+
"scheduleManually": false,
77+
"startDate": null,
78+
"dueDate": null,
79+
"derivedStartDate": null,
80+
"derivedDueDate": null,
81+
"estimatedTime": null,
82+
"derivedEstimatedTime": null,
83+
"derivedRemainingTime": null,
84+
"duration": null,
85+
"ignoreNonWorkingDays": false,
86+
"spentTime": "PT0S",
87+
"percentageDone": null,
88+
"derivedPercentageDone": null,
89+
"createdAt": "2025-01-01T20:44:41.255Z",
90+
"updatedAt": "2025-01-01T21:27:53.926Z",
91+
"readonly": false,
92+
"laborCosts": "0.00 EUR",
93+
"materialCosts": "0.00 EUR",
94+
"overallCosts": "0.00 EUR",
95+
"_links": {
96+
"attachments": {
97+
"href": "/api/v3/work_packages/39/attachments"
98+
},
99+
"prepareAttachment": {
100+
"href": "/api/v3/work_packages/39/attachments/prepare",
101+
"method": "post"
102+
},
103+
"addAttachment": {
104+
"href": "/api/v3/work_packages/39/attachments",
105+
"method": "post"
106+
},
107+
"fileLinks": {
108+
"href": "/api/v3/work_packages/39/file_links"
109+
},
110+
"addFileLink": {
111+
"href": "/api/v3/work_packages/39/file_links",
112+
"method": "post"
113+
},
114+
"self": {
115+
"href": "/api/v3/work_packages/39",
116+
"title": "task2"
117+
},
118+
"update": {
119+
"href": "/api/v3/work_packages/39/form",
120+
"method": "post"
121+
},
122+
"schema": {
123+
"href": "/api/v3/work_packages/schemas/4-1"
124+
},
125+
"updateImmediately": {
126+
"href": "/api/v3/work_packages/39",
127+
"method": "patch"
128+
},
129+
"delete": {
130+
"href": "/api/v3/work_packages/39",
131+
"method": "delete"
132+
},
133+
"logTime": {
134+
"href": "/api/v3/time_entries",
135+
"title": "Log time on work package 'task2'"
136+
},
137+
"move": {
138+
"href": "/work_packages/39/move/new",
139+
"type": "text/html",
140+
"title": "Move work package 'task2'"
141+
},
142+
"copy": {
143+
"href": "/work_packages/39/copy",
144+
"type": "text/html",
145+
"title": "Copy work package 'task2'"
146+
},
147+
"pdf": {
148+
"href": "/work_packages/39.pdf",
149+
"type": "application/pdf",
150+
"title": "Export as PDF"
151+
},
152+
"atom": {
153+
"href": "/work_packages/39.atom",
154+
"type": "application/rss+xml",
155+
"title": "Atom feed"
156+
},
157+
"availableRelationCandidates": {
158+
"href": "/api/v3/work_packages/39/available_relation_candidates",
159+
"title": "Potential work packages to relate to"
160+
},
161+
"customFields": {
162+
"href": "/projects/project-2/settings/custom_fields",
163+
"type": "text/html",
164+
"title": "Custom fields"
165+
},
166+
"configureForm": {
167+
"href": "/types/1/edit?tab=form_configuration",
168+
"type": "text/html",
169+
"title": "Configure form"
170+
},
171+
"activities": {
172+
"href": "/api/v3/work_packages/39/activities"
173+
},
174+
"availableWatchers": {
175+
"href": "/api/v3/work_packages/39/available_watchers"
176+
},
177+
"relations": {
178+
"href": "/api/v3/work_packages/39/relations"
179+
},
180+
"revisions": {
181+
"href": "/api/v3/work_packages/39/revisions"
182+
},
183+
"watchers": {
184+
"href": "/api/v3/work_packages/39/watchers"
185+
},
186+
"addWatcher": {
187+
"href": "/api/v3/work_packages/39/watchers",
188+
"method": "post",
189+
"payload": {
190+
"user": {
191+
"href": "/api/v3/users/{user_id}"
192+
}
193+
},
194+
"templated": true
195+
},
196+
"removeWatcher": {
197+
"href": "/api/v3/work_packages/39/watchers/{user_id}",
198+
"method": "delete",
199+
"templated": true
200+
},
201+
"addRelation": {
202+
"href": "/api/v3/work_packages/39/relations",
203+
"method": "post",
204+
"title": "Add relation"
205+
},
206+
"addChild": {
207+
"href": "/api/v3/projects/project-2/work_packages",
208+
"method": "post",
209+
"title": "Add child of task2"
210+
},
211+
"changeParent": {
212+
"href": "/api/v3/work_packages/39",
213+
"method": "patch",
214+
"title": "Change parent of task2"
215+
},
216+
"addComment": {
217+
"href": "/api/v3/work_packages/39/activities",
218+
"method": "post",
219+
"title": "Add comment"
220+
},
221+
"previewMarkup": {
222+
"href": "/api/v3/render/markdown?context=/api/v3/work_packages/39",
223+
"method": "post"
224+
},
225+
"timeEntries": {
226+
"href": "/api/v3/time_entries?filters=%5B%7B%22work_package_id%22%3A%7B%22operator%22%3A%22%3D%22%2C%22values%22%3A%5B%2239%22%5D%7D%7D%5D",
227+
"title": "Time entries"
228+
},
229+
"ancestors": [],
230+
"category": {
231+
"href": null
232+
},
233+
"type": {
234+
"href": "/api/v3/types/1",
235+
"title": "Task"
236+
},
237+
"priority": {
238+
"href": "/api/v3/priorities/8",
239+
"title": "Normal"
240+
},
241+
"project": {
242+
"href": "/api/v3/projects/4",
243+
"title": "Project 2"
244+
},
245+
"status": {
246+
"href": "/api/v3/statuses/1",
247+
"title": "New"
248+
},
249+
"author": {
250+
"href": "/api/v3/users/4",
251+
"title": "Nirved Mishra"
252+
},
253+
"responsible": {
254+
"href": null
255+
},
256+
"assignee": {
257+
"href": "/api/v3/users/4",
258+
"title": "Nirved Mishra"
259+
},
260+
"version": {
261+
"href": null
262+
},
263+
"parent": {
264+
"href": null,
265+
"title": null
266+
},
267+
"customActions": [],
268+
"logCosts": {
269+
"href": "/work_packages/39/cost_entries/new",
270+
"type": "text/html",
271+
"title": "Log costs on task2"
272+
},
273+
"showCosts": {
274+
"href": "/projects/4/cost_reports?fields%5B%5D=WorkPackageId&operators%5BWorkPackageId%5D=%3D&set_filter=1&values%5BWorkPackageId%5D=39",
275+
"type": "text/html",
276+
"title": "Show cost entries"
277+
},
278+
"costsByType": {
279+
"href": "/api/v3/work_packages/39/summarized_costs_by_type"
280+
},
281+
"meetings": {
282+
"href": "/work_packages/39/tabs/meetings",
283+
"title": "meetings"
284+
},
285+
"github": {
286+
"href": "/work_packages/39/tabs/github",
287+
"title": "github"
288+
},
289+
"github_pull_requests": {
290+
"href": "/api/v3/work_packages/39/github_pull_requests",
291+
"title": "GitHub pull requests"
292+
},
293+
"gitlab": {
294+
"href": "/work_packages/39/tabs/gitlab",
295+
"title": "gitlab"
296+
},
297+
"gitlab_merge_requests": {
298+
"href": "/api/v3/work_packages/39/gitlab_merge_requests",
299+
"title": "Gitlab merge requests"
300+
},
301+
"gitlab_issues": {
302+
"href": "/api/v3/work_packages/39/gitlab_issues",
303+
"title": "Gitlab Issues"
304+
},
305+
"convertBCF": {
306+
"href": "/api/bcf/2.1/projects/project-2/topics",
307+
"title": "Convert to BCF",
308+
"payload": {
309+
"reference_links": [
310+
"/api/v3/work_packages/39"
311+
]
312+
},
313+
"method": "post"
314+
}
315+
}
316+
}
317+
},
318+
"_links": {
319+
"self": {
320+
"href": "/api/v3/attachments/3",
321+
"title": "a.out"
322+
},
323+
"author": {
324+
"href": "/api/v3/users/4",
325+
"title": "Nirved Mishra"
326+
},
327+
"container": {
328+
"href": "/api/v3/work_packages/39",
329+
"title": "task2"
330+
},
331+
"staticDownloadLocation": {
332+
"href": "/api/v3/attachments/3/content"
333+
},
334+
"downloadLocation": {
335+
"href": "https://saas-openproject-aws-de-trials2-20241119125120412800000002.s3.eu-central-1.amazonaws.com/1735649550_8932652_b7d27008_3959_4391_8bd2_083b23bbd9d0/attachment/file/3/a.out?response-content-disposition=attachment&X-Amz-Expires=600&X-Amz-Date=20250101T212754Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAUF2KCI5YK2B2YLH6%2F20250101%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=ce1ce0ece048498ed44704da6d4eab8aabbe34b38a67780fea218628b91e4e46"
336+
},
337+
"delete": {
338+
"href": "/api/v3/attachments/3",
339+
"method": "delete"
340+
}
341+
}
342+
}
343+
}

0 commit comments

Comments
 (0)