diff --git a/docs/content/docs/reference/components/wrike.mdx b/docs/content/docs/reference/components/wrike.mdx
new file mode 100644
index 0000000000..b750009805
--- /dev/null
+++ b/docs/content/docs/reference/components/wrike.mdx
@@ -0,0 +1,402 @@
+---
+title: "Wrike"
+description: "Wrike's Powerful Project Management Software Provides Users with Enterprise-Level Security."
+---
+
+Wrike's Powerful Project Management Software Provides Users with Enterprise-Level Security.
+
+
+Categories: Project Management
+
+
+Type: wrike/v1
+
+
+
+
+
+## Connections
+
+Version: 1
+
+
+### oauth2_authorization_code
+
+#### Properties
+
+| Name | Label | Type | Description | Required |
+|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
+| clientId | Client ID | STRING | `Client ID of your Wrike app.` | true |
+| clientSecret | Client Secret | STRING | `Client Secret of your Wrike app.` | true |
+
+
+
+
+
+
+
+
+
+## Actions
+
+
+### Create Comment
+Name: createComment
+
+`Create a comment in a folder or in a task.`
+
+#### Properties
+
+| Name | Label | Type | Description | Required |
+|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
+| parent | Parent | STRING Options
folders, tasks | `Choose whether the comment will be added to a task or to a folder.` | true |
+| parentId | Parent ID | STRING Depends On
parent | `ID of the parent folder or the parent task.` | true |
+| text | Text | STRING | `Comment text.` | true |
+| plainText | Plain Text | BOOLEAN Options
true, false | `Whether the comment will be treated as plain text or as HTML.` | false |
+
+#### Example JSON Structure
+```json
+{
+ "label" : "Create Comment",
+ "name" : "createComment",
+ "parameters" : {
+ "parent" : "",
+ "parentId" : "",
+ "text" : "",
+ "plainText" : false
+ },
+ "type" : "wrike/v1/createComment"
+}
+```
+
+#### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Name | Type | Description |
+|:------------:|:------------:|:-------------------:|
+| kind | STRING | Kind of the object that was created. |
+| data | ARRAY Items
[{STRING\(id), STRING\(authorId), STRING\(text), STRING\(updatedDate), STRING\(createdDate), STRING\(parentId), []\(attachmentIds)}] | Data of the object that was created. |
+
+
+
+
+#### Output Example
+```json
+{
+ "kind" : "",
+ "data" : [ {
+ "id" : "",
+ "authorId" : "",
+ "text" : "",
+ "updatedDate" : "",
+ "createdDate" : "",
+ "parentId" : "",
+ "attachmentIds" : [ ]
+ } ]
+}
+```
+
+
+### Create Folder
+Name: createFolder
+
+`Create a folder.`
+
+#### Properties
+
+| Name | Label | Type | Description | Required |
+|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
+| parentId | Parent ID | STRING | `ID of the parent folder.` | true |
+| title | Title | STRING | `The title of the folder.` | true |
+
+#### Example JSON Structure
+```json
+{
+ "label" : "Create Folder",
+ "name" : "createFolder",
+ "parameters" : {
+ "parentId" : "",
+ "title" : ""
+ },
+ "type" : "wrike/v1/createFolder"
+}
+```
+
+#### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Name | Type | Description |
+|:------------:|:------------:|:-------------------:|
+| kind | STRING | Kind of the object that was created. |
+| data | ARRAY Items
[{STRING\(id), STRING\(accountId), STRING\(title), STRING\(createdDate), STRING\(updatedDate), STRING\(description), [STRING\($sharedId)]\(sharedIds), [STRING\($parentId)]\(parentIds), [STRING\($childId)]\(childIds), [STRING\($superParentId)]\(superParentIds), STRING\(scope), BOOLEAN\(hasAttachments), STRING\(permalink), STRING\(workflowId), []\(metadata), []\(customFields)}] | Data of the object that was created. |
+
+
+
+
+#### Output Example
+```json
+{
+ "kind" : "",
+ "data" : [ {
+ "id" : "",
+ "accountId" : "",
+ "title" : "",
+ "createdDate" : "",
+ "updatedDate" : "",
+ "description" : "",
+ "sharedIds" : [ "" ],
+ "parentIds" : [ "" ],
+ "childIds" : [ "" ],
+ "superParentIds" : [ "" ],
+ "scope" : "",
+ "hasAttachments" : false,
+ "permalink" : "",
+ "workflowId" : "",
+ "metadata" : [ ],
+ "customFields" : [ ]
+ } ]
+}
+```
+
+
+### Create Project
+Name: createProject
+
+`Create a project.`
+
+#### Properties
+
+| Name | Label | Type | Description | Required |
+|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
+| parentId | Parent ID | STRING | `ID of the parent folder.` | true |
+| title | Title | STRING | `The title of the project.` | true |
+| description | Description | STRING | `The description of the project.` | false |
+| startDate | Start Date | DATE | `The start date of the project.` | false |
+| endDate | End Date | DATE | `The end date of the project.` | false |
+| contractType | Contract Type | STRING Options
Billable, NonBillable | `The contract type of the project.` | false |
+| ownerIds | Owner IDs | ARRAY Items
[STRING] | `List of project owner IDs.` | false |
+| budget | Budget | INTEGER | `The budget of the project.` | false |
+
+#### Example JSON Structure
+```json
+{
+ "label" : "Create Project",
+ "name" : "createProject",
+ "parameters" : {
+ "parentId" : "",
+ "title" : "",
+ "description" : "",
+ "startDate" : "2021-01-01",
+ "endDate" : "2021-01-01",
+ "contractType" : "",
+ "ownerIds" : [ "" ],
+ "budget" : 1
+ },
+ "type" : "wrike/v1/createProject"
+}
+```
+
+#### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Name | Type | Description |
+|:------------:|:------------:|:-------------------:|
+| kind | STRING | Kind of the object that was created. |
+| data | ARRAY Items
[{STRING\(id), STRING\(accountId), STRING\(title), STRING\(createdDate), STRING\(updatedDate), STRING\(description), [STRING\($sharedId)]\(sharedIds), [STRING\($parentId)]\(parentIds), [STRING\($childId)]\(childIds), [STRING\($superParentId)]\(superParentIds), STRING\(scope), BOOLEAN\(hasAttachments), STRING\(permalink), STRING\(workflowId), []\(metadata), []\(customFields), {STRING\(authorId), [STRING\($ownerId)]\(ownerIds), STRING\(customStatusId), STRING\(startDate), STRING\(endDate), STRING\(createdDate)}\(project)}] | Data of the object that was created. |
+
+
+
+
+#### Output Example
+```json
+{
+ "kind" : "",
+ "data" : [ {
+ "id" : "",
+ "accountId" : "",
+ "title" : "",
+ "createdDate" : "",
+ "updatedDate" : "",
+ "description" : "",
+ "sharedIds" : [ "" ],
+ "parentIds" : [ "" ],
+ "childIds" : [ "" ],
+ "superParentIds" : [ "" ],
+ "scope" : "",
+ "hasAttachments" : false,
+ "permalink" : "",
+ "workflowId" : "",
+ "metadata" : [ ],
+ "customFields" : [ ],
+ "project" : {
+ "authorId" : "",
+ "ownerIds" : [ "" ],
+ "customStatusId" : "",
+ "startDate" : "",
+ "endDate" : "",
+ "createdDate" : ""
+ }
+ } ]
+}
+```
+
+
+### Create Task
+Name: createTask
+
+`Create a task.`
+
+#### Properties
+
+| Name | Label | Type | Description | Required |
+|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
+| parentId | Parent ID | STRING | `ID of the parent folder.` | true |
+| title | Title | STRING | `The title of the task.` | true |
+| description | Description | STRING | `Description of task, will be left blank, if not set.` | false |
+| status | Status | STRING Options
Active, Completed, Deferred, Cancelled | `The status of the task.` | false |
+| importance | Importance | STRING Options
High, Normal, Low | `The importance of the task.` | false |
+| responsibles | Assignees | ARRAY Items
[STRING\($assigneeId)] | `Choose assignees for the task.` | false |
+
+#### Example JSON Structure
+```json
+{
+ "label" : "Create Task",
+ "name" : "createTask",
+ "parameters" : {
+ "parentId" : "",
+ "title" : "",
+ "description" : "",
+ "status" : "",
+ "importance" : "",
+ "responsibles" : [ "" ]
+ },
+ "type" : "wrike/v1/createTask"
+}
+```
+
+#### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Name | Type | Description |
+|:------------:|:------------:|:-------------------:|
+| kind | STRING | Kind of the object that was created. |
+| data | ARRAY Items
[{STRING\(id), STRING\(accountId), STRING\(title), STRING\(description), STRING\(briefDescription), [STRING\($parentId)]\(parentIds), [STRING\($superParentId)]\(superParentIds), [STRING\($sharedId)]\(sharedIds), [STRING\($responsibleId)]\(responsibleIds), STRING\(status), STRING\(importance), STRING\(createdDate), STRING\(updatedDate), STRING\(completedDate), {STRING\(type)}\(dates), STRING\(scope), [STRING\($authorId)]\(authorIds), STRING\(customStatusId), BOOLEAN\(hasAttachments), INTEGER\(attachmentCount), STRING\(permalink), STRING\(priority), BOOLEAN\(followedByMe), [STRING\($followerId)]\(followerIds), []\(superTaskIds), []\(subTaskIds), []\(dependencyIds), []\(metadata), []\(customFields)}] | Data of the object that was created. |
+
+
+
+
+#### Output Example
+```json
+{
+ "kind" : "",
+ "data" : [ {
+ "id" : "",
+ "accountId" : "",
+ "title" : "",
+ "description" : "",
+ "briefDescription" : "",
+ "parentIds" : [ "" ],
+ "superParentIds" : [ "" ],
+ "sharedIds" : [ "" ],
+ "responsibleIds" : [ "" ],
+ "status" : "",
+ "importance" : "",
+ "createdDate" : "",
+ "updatedDate" : "",
+ "completedDate" : "",
+ "dates" : {
+ "type" : ""
+ },
+ "scope" : "",
+ "authorIds" : [ "" ],
+ "customStatusId" : "",
+ "hasAttachments" : false,
+ "attachmentCount" : 1,
+ "permalink" : "",
+ "priority" : "",
+ "followedByMe" : false,
+ "followerIds" : [ "" ],
+ "superTaskIds" : [ ],
+ "subTaskIds" : [ ],
+ "dependencyIds" : [ ],
+ "metadata" : [ ],
+ "customFields" : [ ]
+ } ]
+}
+```
+
+
+
+
+## Triggers
+
+
+### New Task
+Name: newTask
+
+`Triggers when a new task is created.`
+
+Type: DYNAMIC_WEBHOOK
+
+
+#### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Name | Type | Description |
+|:------------:|:------------:|:-------------------:|
+| taskId | STRING | The task ID. |
+| webhookId | STRING | The webhook ID. |
+| eventAuthorId | STRING | The ID of the author of the task. |
+| eventType | STRING | Event type that happened. |
+| lastUpdatedDate | STRING | Date of the last update. |
+
+
+
+
+#### JSON Example
+```json
+{
+ "label" : "New Task",
+ "name" : "newTask",
+ "type" : "wrike/v1/newTask"
+}
+```
+
+
+
+
+
+
+# Additional instructions
+
+
diff --git a/server/apps/server-app/build.gradle.kts b/server/apps/server-app/build.gradle.kts
index 118c42011e..fdd6dc38a8 100644
--- a/server/apps/server-app/build.gradle.kts
+++ b/server/apps/server-app/build.gradle.kts
@@ -287,6 +287,7 @@ dependencies {
implementation(project(":server:libs:modules:components:webflow"))
implementation(project(":server:libs:modules:components:webhook"))
implementation(project(":server:libs:modules:components:whatsapp"))
+ implementation(project(":server:libs:modules:components:wrike"))
implementation(project(":server:libs:modules:components:wordpress"))
implementation(project(":server:libs:modules:components:xero"))
implementation(project(":server:libs:modules:components:xlsx-file"))
diff --git a/server/ee/apps/worker-app/build.gradle.kts b/server/ee/apps/worker-app/build.gradle.kts
index 7e600920bb..90dd6b9f2d 100644
--- a/server/ee/apps/worker-app/build.gradle.kts
+++ b/server/ee/apps/worker-app/build.gradle.kts
@@ -231,6 +231,7 @@ dependencies {
implementation(project(":server:libs:modules:components:webflow"))
implementation(project(":server:libs:modules:components:webhook"))
implementation(project(":server:libs:modules:components:whatsapp"))
+ implementation(project(":server:libs:modules:components:wrike"))
implementation(project(":server:libs:modules:components:wordpress"))
implementation(project(":server:libs:modules:components:xero"))
implementation(project(":server:libs:modules:components:xlsx-file"))
diff --git a/server/libs/modules/components/wrike/build.gradle.kts b/server/libs/modules/components/wrike/build.gradle.kts
new file mode 100644
index 0000000000..bf2a7f56ed
--- /dev/null
+++ b/server/libs/modules/components/wrike/build.gradle.kts
@@ -0,0 +1,2 @@
+version="1.0"
+
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/WrikeComponentHandler.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/WrikeComponentHandler.java
new file mode 100644
index 0000000000..85e823d640
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/WrikeComponentHandler.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike;
+
+import static com.bytechef.component.definition.ComponentDsl.component;
+import static com.bytechef.component.definition.ComponentDsl.tool;
+
+import com.bytechef.component.ComponentHandler;
+import com.bytechef.component.definition.ComponentCategory;
+import com.bytechef.component.definition.ComponentDefinition;
+import com.bytechef.component.wrike.action.WrikeCreateCommentAction;
+import com.bytechef.component.wrike.action.WrikeCreateFolderAction;
+import com.bytechef.component.wrike.action.WrikeCreateProjectAction;
+import com.bytechef.component.wrike.action.WrikeCreateTaskAction;
+import com.bytechef.component.wrike.connection.WrikeConnection;
+import com.bytechef.component.wrike.trigger.WrikeNewTaskTrigger;
+import com.google.auto.service.AutoService;
+
+/**
+ * @author Nikolina Spehar
+ */
+@AutoService(ComponentHandler.class)
+public class WrikeComponentHandler implements ComponentHandler {
+
+ private static final ComponentDefinition COMPONENT_DEFINITION = component("wrike")
+ .title("Wrike")
+ .description("Wrike's Powerful Project Management Software Provides Users with Enterprise-Level Security.")
+ .icon("path:assets/wrike.svg")
+ .categories(ComponentCategory.PROJECT_MANAGEMENT)
+ .connection(WrikeConnection.CONNECTION_DEFINITION)
+ .actions(
+ WrikeCreateCommentAction.ACTION_DEFINITION,
+ WrikeCreateFolderAction.ACTION_DEFINITION,
+ WrikeCreateProjectAction.ACTION_DEFINITION,
+ WrikeCreateTaskAction.ACTION_DEFINITION)
+ .clusterElements(
+ tool(WrikeCreateCommentAction.ACTION_DEFINITION),
+ tool(WrikeCreateFolderAction.ACTION_DEFINITION),
+ tool(WrikeCreateProjectAction.ACTION_DEFINITION),
+ tool(WrikeCreateTaskAction.ACTION_DEFINITION))
+ .triggers(WrikeNewTaskTrigger.TRIGGER_DEFINITION);
+
+ @Override
+ public ComponentDefinition getDefinition() {
+ return COMPONENT_DEFINITION;
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateCommentAction.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateCommentAction.java
new file mode 100644
index 0000000000..c7fee90f82
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateCommentAction.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.action;
+
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.array;
+import static com.bytechef.component.definition.ComponentDsl.bool;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.option;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT_ID;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PLAIN_TEXT;
+import static com.bytechef.component.wrike.constant.WrikeConstants.TEXT;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition;
+import com.bytechef.component.definition.Context;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.Property.ControlType;
+import com.bytechef.component.wrike.util.WrikeUtils;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeCreateCommentAction {
+
+ public static final ModifiableActionDefinition ACTION_DEFINITION = action("createComment")
+ .title("Create Comment")
+ .description("Create a comment in a folder or in a task.")
+ .properties(
+ string(PARENT)
+ .label("Parent")
+ .description("Choose whether the comment will be added to a task or to a folder.")
+ .options(
+ option("Folder", "folders"),
+ option("Task", "tasks"))
+ .required(true),
+ string(PARENT_ID)
+ .label("Parent ID")
+ .description("ID of the parent folder or the parent task.")
+ .optionsLookupDependsOn(PARENT)
+ .options((ActionOptionsFunction) WrikeUtils::getParentIdOptions)
+ .required(true),
+ string(TEXT)
+ .label("Text")
+ .description("Comment text.")
+ .controlType(ControlType.TEXT_AREA)
+ .required(true),
+ bool(PLAIN_TEXT)
+ .label("Plain Text")
+ .description("Whether the comment will be treated as plain text or as HTML.")
+ .required(false))
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string("kind")
+ .description("Kind of the object that was created."),
+ array("data")
+ .description("Data of the object that was created.")
+ .items(
+ object()
+ .properties(
+ string("id")
+ .description("ID of the object that was created."),
+ string("authorId")
+ .description("ID of the author of the object."),
+ string("text")
+ .description("Text of the object that was created."),
+ string("updatedDate")
+ .description("Date when the object was updated."),
+ string("createdDate")
+ .description("Date when the object was created."),
+ string("parentId")
+ .description("ID of the parent folder or the parent task."),
+ array("attachmentIds")
+ .placeholder("ID of the attachments of the object."))))))
+ .perform(WrikeCreateCommentAction::perform);
+
+ private WrikeCreateCommentAction() {
+ }
+
+ public static Object perform(Parameters inputParameters, Parameters connectionParameters, Context context) {
+ return context.http(
+ http -> http.post("/%s/%s/comments".formatted(
+ inputParameters.getRequiredString(PARENT),
+ inputParameters.getRequiredString(PARENT_ID))))
+ .queryParameters(
+ TEXT, inputParameters.getRequiredString(TEXT),
+ PLAIN_TEXT, inputParameters.getBoolean(PLAIN_TEXT))
+ .configuration(responseType(ResponseType.JSON))
+ .execute()
+ .getBody();
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateFolderAction.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateFolderAction.java
new file mode 100644
index 0000000000..47a7142b0e
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateFolderAction.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.action;
+
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.array;
+import static com.bytechef.component.definition.ComponentDsl.bool;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT_ID;
+import static com.bytechef.component.wrike.constant.WrikeConstants.TITLE;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition;
+import com.bytechef.component.definition.Context;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.wrike.util.WrikeUtils;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeCreateFolderAction {
+
+ public static final ModifiableActionDefinition ACTION_DEFINITION = action("createFolder")
+ .title("Create Folder")
+ .description("Create a folder.")
+ .properties(
+ string(PARENT_ID)
+ .label("Parent ID")
+ .description("ID of the parent folder.")
+ .options((ActionOptionsFunction) WrikeUtils::getParentIdOptions)
+ .required(true),
+ string(TITLE)
+ .label("Title")
+ .description("The title of the folder.")
+ .required(true))
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string("kind")
+ .description("Kind of the object that was created."),
+ array("data")
+ .description("Data of the object that was created.")
+ .items(
+ object()
+ .properties(
+ string("id")
+ .description("ID of the object that was created."),
+ string("accountId")
+ .description("ID of the account that created the object."),
+ string("title")
+ .description("Title of the object that was created."),
+ string("createdDate")
+ .description("Date when the object was created."),
+ string("updatedDate")
+ .description("Date when the object was updated."),
+ string("description")
+ .description("Description of the object."),
+ array("sharedIds")
+ .description("Shared IDs of the object.")
+ .items(
+ string("sharedId")
+ .description("Shared ID.")),
+ array("parentIds")
+ .description("Parent IDs of the object.")
+ .items(
+ string("parentId")
+ .description("Parent ID.")),
+ array("childIds")
+ .description("Child IDs of the object.")
+ .items(
+ string("childId")
+ .description("Child ID.")),
+ array("superParentIds")
+ .description("Super Parent IDs of the object.")
+ .items(
+ string("superParentId")
+ .description("Super parent ID.")),
+ string("scope")
+ .description("Scope of the object."),
+ bool("hasAttachments")
+ .description("Whether the object has attachments"),
+ string("permalink")
+ .description("Permalink of the object."),
+ string("workflowId")
+ .description("Workflow ID."),
+ array("metadata")
+ .description("Metadata of the object."),
+ array("customFields")
+ .description("Custom fields of the object."))))))
+ .perform(WrikeCreateFolderAction::perform);
+
+ private WrikeCreateFolderAction() {
+ }
+
+ public static Object perform(Parameters inputParameters, Parameters connectionParameters, Context context) {
+ return context.http(
+ http -> http.post("/folders/%s/folders".formatted(inputParameters.getRequiredString(PARENT_ID))))
+ .queryParameter(TITLE, inputParameters.getRequiredString(TITLE))
+ .configuration(responseType(ResponseType.JSON))
+ .execute()
+ .getBody();
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateProjectAction.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateProjectAction.java
new file mode 100644
index 0000000000..b32a47708a
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateProjectAction.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.action;
+
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.array;
+import static com.bytechef.component.definition.ComponentDsl.bool;
+import static com.bytechef.component.definition.ComponentDsl.date;
+import static com.bytechef.component.definition.ComponentDsl.integer;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.option;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.wrike.constant.WrikeConstants.BUDGET;
+import static com.bytechef.component.wrike.constant.WrikeConstants.CONTRACT_TYPE;
+import static com.bytechef.component.wrike.constant.WrikeConstants.DESCRIPTION;
+import static com.bytechef.component.wrike.constant.WrikeConstants.END_DATE;
+import static com.bytechef.component.wrike.constant.WrikeConstants.OWNER_IDS;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT_ID;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PROJECT;
+import static com.bytechef.component.wrike.constant.WrikeConstants.START_DATE;
+import static com.bytechef.component.wrike.constant.WrikeConstants.TITLE;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition;
+import com.bytechef.component.definition.Context;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.wrike.util.WrikeUtils;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeCreateProjectAction {
+
+ public static final ModifiableActionDefinition ACTION_DEFINITION = action("createProject")
+ .title("Create Project")
+ .description("Create a project.")
+ .properties(
+ string(PARENT_ID)
+ .label("Parent ID")
+ .description("ID of the parent folder.")
+ .options((ActionOptionsFunction) WrikeUtils::getParentIdOptions)
+ .required(true),
+ string(TITLE)
+ .label("Title")
+ .description("The title of the project.")
+ .required(true),
+ string(DESCRIPTION)
+ .label("Description")
+ .description("The description of the project.")
+ .required(false),
+ date(START_DATE)
+ .label("Start Date")
+ .description("The start date of the project.")
+ .required(false),
+ date(END_DATE)
+ .label("End Date")
+ .description("The end date of the project.")
+ .required(false),
+ string(CONTRACT_TYPE)
+ .label("Contract Type")
+ .description("The contract type of the project.")
+ .options(
+ option("Billable", "Billable"),
+ option("Non-Billable", "NonBillable"))
+ .required(false),
+ array(OWNER_IDS)
+ .label("Owner IDs")
+ .description("List of project owner IDs.")
+ .required(false)
+ .options((ActionOptionsFunction) WrikeUtils::getContactIdOptions)
+ .items(string()),
+ integer(BUDGET)
+ .label("Budget")
+ .description("The budget of the project.")
+ .required(false))
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string("kind")
+ .description("Kind of the object that was created."),
+ array("data")
+ .description("Data of the object that was created.")
+ .items(
+ object()
+ .properties(
+ string("id")
+ .description("ID of the object that was created."),
+ string("accountId")
+ .description("ID of the account that created the object."),
+ string("title")
+ .description("Title of the object that was created."),
+ string("createdDate")
+ .description("Date when the object was created."),
+ string("updatedDate")
+ .description("Date when the object was updated."),
+ string("description")
+ .description("Description of the object."),
+ array("sharedIds")
+ .description("Shared IDs of the object.")
+ .items(
+ string("sharedId")
+ .description("Shared ID.")),
+ array("parentIds")
+ .description("Parent IDs of the object.")
+ .items(
+ string("parentId")
+ .description("Parent ID.")),
+ array("childIds")
+ .description("Child IDs of the object.")
+ .items(
+ string("childId")
+ .description("Child ID.")),
+ array("superParentIds")
+ .description("Super Parent IDs of the object.")
+ .items(
+ string("superParentId")
+ .description("Super parent ID.")),
+ string("scope")
+ .description("Scope of the object."),
+ bool("hasAttachments")
+ .description("Whether the object has attachments"),
+ string("permalink")
+ .description("Permalink of the object."),
+ string("workflowId")
+ .description("Workflow ID."),
+ array("metadata")
+ .description("Metadata of the object."),
+ array("customFields")
+ .placeholder("Custom fields of the object."),
+ object("project")
+ .description("Project properties.")
+ .properties(
+ string("authorId")
+ .description("Project author ID."),
+ array("ownerIds")
+ .description("Owner IDs.")
+ .items(
+ string("ownerId")
+ .description("Owner ID.")),
+ string("customStatusId")
+ .description("Custom status ID of the project."),
+ string("startDate")
+ .description("Start date of the project"),
+ string("endDate")
+ .description("End date of the project."),
+ string("createdDate")
+ .description("Date when the project was created.")))))))
+ .perform(WrikeCreateProjectAction::perform);
+
+ private WrikeCreateProjectAction() {
+ }
+
+ public static Object perform(Parameters inputParameters, Parameters connectionParameters, Context context) {
+ Map project = getProject(inputParameters);
+
+ return context.http(
+ http -> http.post("/folders/%s/folders".formatted(inputParameters.getRequiredString(PARENT_ID))))
+ .configuration(responseType(ResponseType.JSON))
+ .queryParameters(
+ TITLE, inputParameters.getRequiredString(TITLE),
+ DESCRIPTION, inputParameters.getString(DESCRIPTION),
+ PROJECT, project)
+ .execute()
+ .getBody();
+ }
+
+ private static Map getProject(Parameters inputParameters) {
+ Map project = new HashMap<>();
+
+ addIfNotNull(inputParameters.getLocalDate(START_DATE), START_DATE, project);
+ addIfNotNull(inputParameters.getLocalDate(END_DATE), END_DATE, project);
+ addIfNotNull(inputParameters.getString(CONTRACT_TYPE), CONTRACT_TYPE, project);
+ addIfNotNull(inputParameters.getList(OWNER_IDS, String.class), OWNER_IDS, project);
+ addIfNotNull(inputParameters.getInteger(BUDGET), BUDGET, project);
+
+ return project;
+ }
+
+ private static void addIfNotNull(T value, String key, Map project) {
+ if (value != null) {
+ project.put(key, value);
+ }
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateTaskAction.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateTaskAction.java
new file mode 100644
index 0000000000..ff7d180e73
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/action/WrikeCreateTaskAction.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.action;
+
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.array;
+import static com.bytechef.component.definition.ComponentDsl.bool;
+import static com.bytechef.component.definition.ComponentDsl.integer;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.option;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.wrike.constant.WrikeConstants.DESCRIPTION;
+import static com.bytechef.component.wrike.constant.WrikeConstants.IMPORTANCE;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT_ID;
+import static com.bytechef.component.wrike.constant.WrikeConstants.RESPONSIBLES;
+import static com.bytechef.component.wrike.constant.WrikeConstants.STATUS;
+import static com.bytechef.component.wrike.constant.WrikeConstants.TITLE;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableActionDefinition;
+import com.bytechef.component.definition.Context;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.wrike.util.WrikeUtils;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeCreateTaskAction {
+
+ public static final ModifiableActionDefinition ACTION_DEFINITION = action("createTask")
+ .title("Create Task")
+ .description("Create a task.")
+ .properties(
+ string(PARENT_ID)
+ .label("Parent ID")
+ .description("ID of the parent folder.")
+ .options((ActionOptionsFunction) WrikeUtils::getParentIdOptions)
+ .required(true),
+ string(TITLE)
+ .label("Title")
+ .description("The title of the task.")
+ .required(true),
+ string(DESCRIPTION)
+ .label("Description")
+ .description("Description of task, will be left blank, if not set.")
+ .required(false),
+ string(STATUS)
+ .label("Status")
+ .description("The status of the task.")
+ .required(false)
+ .options(
+ option("Active", "Active"),
+ option("Completed", "Completed"),
+ option("Deferred", "Deferred"),
+ option("Cancelled", "Cancelled")),
+ string(IMPORTANCE)
+ .label("Importance")
+ .description("The importance of the task.")
+ .required(false)
+ .options(
+ option("High", "High"),
+ option("Normal", "Normal"),
+ option("Low", "Low")),
+ array(RESPONSIBLES)
+ .label("Assignees")
+ .description("Choose assignees for the task.")
+ .required(false)
+ .options((ActionOptionsFunction) WrikeUtils::getContactIdOptions)
+ .items(
+ string("assigneeId")
+ .description("ID of the assignee of the task.")))
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string("kind")
+ .description("Kind of the object that was created."),
+ array("data")
+ .description("Data of the object that was created.")
+ .items(
+ object()
+ .properties(
+ string("id")
+ .description("ID of the object that was created."),
+ string("accountId")
+ .description("ID of the account that created the object."),
+ string("title")
+ .description("Title of the object that was created."),
+ string("description")
+ .description("Description of the object."),
+ string("briefDescription")
+ .description("Brief Description of the object."),
+ array("parentIds")
+ .description("Parent IDs of the object.")
+ .items(
+ string("parentId")
+ .description("Parent ID.")),
+ array("superParentIds")
+ .description("Super parent IDs of the object.")
+ .items(
+ string("superParentId")
+ .description("Super parent ID.")),
+ array("sharedIds")
+ .description("Shared IDs of the object.")
+ .items(
+ string("sharedId")
+ .description("Shared ID.")),
+ array("responsibleIds")
+ .description("IDs of responsible of the object.")
+ .items(
+ string("responsibleId")
+ .description("Responsible ID.")),
+ string("status")
+ .description("The status of the object."),
+ string("importance")
+ .description("The importance of the object."),
+ string("createdDate")
+ .description("Date when the object was created."),
+ string("updatedDate")
+ .description("Date when the object was updated."),
+ string("completedDate")
+ .description("Date when the object was completed."),
+ object("dates")
+ .description("Dates of the object.")
+ .properties(
+ string("type")
+ .description("Type of the date.")),
+ string("scope")
+ .description("Scope of the object."),
+ array("authorIds")
+ .description("Authors IDs.")
+ .items(
+ string("authorId")
+ .description("Author ID.")),
+ string("customStatusId")
+ .description("Custom status ID of the project."),
+ bool("hasAttachments")
+ .description("Whether the object has attachments"),
+ integer("attachmentCount")
+ .description("How many attachments does the object have."),
+ string("permalink")
+ .description("Permalink of the object."),
+ string("priority")
+ .description("Priority of the object."),
+ bool("followedByMe")
+ .description("Whether the object is followed by me."),
+ array("followerIds")
+ .description("Followers IDs of the object.")
+ .items(
+ string("followerId")
+ .description("Follower ID.")),
+ array("superTaskIds")
+ .description("Super task IDs of the object."),
+ array("subTaskIds")
+ .description("Sub task IDs of the object."),
+ array("dependencyIds")
+ .description("Dependency IDs of the object."),
+ array("metadata")
+ .description("Metadata of the object."),
+ array("customFields")
+ .placeholder("Custom fields of the object."))))))
+ .perform(WrikeCreateTaskAction::perform);
+
+ private WrikeCreateTaskAction() {
+ }
+
+ public static Object perform(Parameters inputParameters, Parameters connectionParameters, Context context) {
+ return context.http(
+ http -> http.post("/folders/%s/tasks".formatted(inputParameters.getRequiredString(PARENT_ID))))
+ .configuration(responseType(ResponseType.JSON))
+ .queryParameters(
+ TITLE, inputParameters.getRequiredString(TITLE),
+ DESCRIPTION, inputParameters.getString(DESCRIPTION),
+ STATUS, inputParameters.getString(STATUS),
+ IMPORTANCE, inputParameters.getString(IMPORTANCE),
+ RESPONSIBLES, inputParameters.getList(RESPONSIBLES))
+ .execute()
+ .getBody();
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/connection/WrikeConnection.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/connection/WrikeConnection.java
new file mode 100644
index 0000000000..4d4423e222
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/connection/WrikeConnection.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.connection;
+
+import static com.bytechef.component.definition.Authorization.CLIENT_ID;
+import static com.bytechef.component.definition.Authorization.CLIENT_SECRET;
+import static com.bytechef.component.definition.ComponentDsl.authorization;
+import static com.bytechef.component.definition.ComponentDsl.connection;
+import static com.bytechef.component.definition.ComponentDsl.string;
+
+import com.bytechef.component.definition.Authorization.AuthorizationType;
+import com.bytechef.component.definition.ComponentDsl.ModifiableConnectionDefinition;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeConnection {
+
+ public static final ModifiableConnectionDefinition CONNECTION_DEFINITION = connection()
+ .baseUri((connectionParameters, context) -> "https://www.wrike.com/api/v4")
+ .authorizations(
+ authorization(AuthorizationType.OAUTH2_AUTHORIZATION_CODE)
+ .properties(
+ string(CLIENT_ID)
+ .label("Client ID")
+ .description("Client ID of your Wrike app.")
+ .required(true),
+ string(CLIENT_SECRET)
+ .label("Client Secret")
+ .description("Client Secret of your Wrike app.")
+ .required(true))
+ .authorizationUrl((connectionParameters, context) -> "https://login.wrike.com/oauth2/authorize/v4")
+ .tokenUrl((connectionParameters, context) -> "https://login.wrike.com/oauth2/token")
+ .refreshUrl((connectionParameters, context) -> "https://login.wrike.com/oauth2/token"));
+
+ private WrikeConnection() {
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/constant/WrikeConstants.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/constant/WrikeConstants.java
new file mode 100644
index 0000000000..c7e54e90fe
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/constant/WrikeConstants.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.constant;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeConstants {
+
+ public static final String BUDGET = "budget";
+ public static final String CONTRACT_TYPE = "contractType";
+ public static final String DATA = "data";
+ public static final String DESCRIPTION = "description";
+ public static final String END_DATE = "endDate";
+ public static final String FIRST_NAME = "firstName";
+ public static final String ID = "id";
+ public static final String IMPORTANCE = "importance";
+ public static final String OWNER_IDS = "ownerIds";
+ public static final String PARENT = "parent";
+ public static final String PARENT_ID = "parentId";
+ public static final String PLAIN_TEXT = "plainText";
+ public static final String PROJECT = "project";
+ public static final String RESPONSIBLES = "responsibles";
+ public static final String START_DATE = "startDate";
+ public static final String STATUS = "status";
+ public static final String TEXT = "text";
+ public static final String TITLE = "title";
+
+ private WrikeConstants() {
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/trigger/WrikeNewTaskTrigger.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/trigger/WrikeNewTaskTrigger.java
new file mode 100644
index 0000000000..e3abcb722b
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/trigger/WrikeNewTaskTrigger.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.trigger;
+
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.ComponentDsl.trigger;
+import static com.bytechef.component.wrike.constant.WrikeConstants.DATA;
+import static com.bytechef.component.wrike.constant.WrikeConstants.ID;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition;
+import com.bytechef.component.definition.Context.Http;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.TriggerContext;
+import com.bytechef.component.definition.TriggerDefinition.HttpHeaders;
+import com.bytechef.component.definition.TriggerDefinition.HttpParameters;
+import com.bytechef.component.definition.TriggerDefinition.TriggerType;
+import com.bytechef.component.definition.TriggerDefinition.WebhookBody;
+import com.bytechef.component.definition.TriggerDefinition.WebhookEnableOutput;
+import com.bytechef.component.definition.TriggerDefinition.WebhookMethod;
+import com.bytechef.component.definition.TypeReference;
+import com.bytechef.component.exception.ProviderException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeNewTaskTrigger {
+
+ public static final ModifiableTriggerDefinition TRIGGER_DEFINITION = trigger("newTask")
+ .title("New Task")
+ .description("Triggers when a new task is created.")
+ .type(TriggerType.DYNAMIC_WEBHOOK)
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string("taskId")
+ .description("The task ID."),
+ string("webhookId")
+ .description("The webhook ID."),
+ string("eventAuthorId")
+ .description("The ID of the author of the task."),
+ string("eventType")
+ .description("Event type that happened."),
+ string("lastUpdatedDate")
+ .description("Date of the last update."))))
+ .webhookDisable(WrikeNewTaskTrigger::webhookDisable)
+ .webhookEnable(WrikeNewTaskTrigger::webhookEnable)
+ .webhookRequest(WrikeNewTaskTrigger::webhookRequest);
+
+ private WrikeNewTaskTrigger() {
+ }
+
+ protected static void webhookDisable(
+ Parameters inputParameters, Parameters connectionParameters, Parameters outputParameters,
+ String workflowExecutionId, TriggerContext context) {
+
+ context.http(http -> http.delete("/webhooks/%s".formatted(outputParameters.getRequiredString(ID))))
+ .configuration(Http.responseType(Http.ResponseType.JSON))
+ .execute();
+ }
+
+ protected static WebhookEnableOutput webhookEnable(
+ Parameters inputParameters, Parameters connectionParameters, String webhookUrl, String workflowExecutionId,
+ TriggerContext context) {
+
+ Map body = context.http(http -> http.post("/webhooks"))
+ .queryParameters("hookUrl", webhookUrl, "events", List.of("TaskCreated"))
+ .configuration(Http.responseType(Http.ResponseType.JSON))
+ .execute()
+ .getBody(new TypeReference<>() {});
+
+ if (body.get(DATA) instanceof List> webhooks) {
+ for (Object webhook : webhooks) {
+ if (webhook instanceof Map, ?> webhookMap) {
+ return new WebhookEnableOutput(Map.of(ID, (String) webhookMap.get(ID)), null);
+ }
+ }
+ }
+
+ throw new ProviderException("Failed to enable webhook for new task trigger.");
+ }
+
+ protected static Object webhookRequest(
+ Parameters inputParameters, Parameters connectionParameters, HttpHeaders httpHeaders,
+ HttpParameters httpParameters, WebhookBody webhookBody, WebhookMethod webhookMethod,
+ WebhookEnableOutput webhookEnableOutput, TriggerContext triggerContext) {
+
+ return webhookBody.getContent(new TypeReference<>() {});
+ }
+}
diff --git a/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/util/WrikeUtils.java b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/util/WrikeUtils.java
new file mode 100644
index 0000000000..db47809bee
--- /dev/null
+++ b/server/libs/modules/components/wrike/src/main/java/com/bytechef/component/wrike/util/WrikeUtils.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2025 ByteChef
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.wrike.util;
+
+import static com.bytechef.component.definition.ComponentDsl.option;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.wrike.constant.WrikeConstants.DATA;
+import static com.bytechef.component.wrike.constant.WrikeConstants.FIRST_NAME;
+import static com.bytechef.component.wrike.constant.WrikeConstants.ID;
+import static com.bytechef.component.wrike.constant.WrikeConstants.PARENT;
+import static com.bytechef.component.wrike.constant.WrikeConstants.TITLE;
+
+import com.bytechef.component.definition.Context;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.Option;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.TypeReference;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Nikolina Spehar
+ */
+public class WrikeUtils {
+
+ public static List