diff --git a/.github/workflows/functional.yml b/.github/workflows/functional.yml
new file mode 100644
index 0000000..3644447
--- /dev/null
+++ b/.github/workflows/functional.yml
@@ -0,0 +1,23 @@
+name: Functional tests
+
+on:
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Raise mock server
+ run: make mock-up
+
+ - name: Run functional tests
+ run: make tests
+
+ - name: Stop mock server
+ run: make mock-stop
diff --git a/README.md b/README.md
index 26a69df..7ddaa7b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# signNow API Java SDK
-## v3.0.0
+## v3.1.0
[](https://www.java.com/)
diff --git a/examples/EmbeddedEditorDocumentExample.java b/examples/EmbeddedEditorDocumentExample.java
new file mode 100644
index 0000000..22ac431
--- /dev/null
+++ b/examples/EmbeddedEditorDocumentExample.java
@@ -0,0 +1,38 @@
+import com.signnow.api.document.request.DocumentPostRequest;
+import com.signnow.api.document.response.DocumentPostResponse;
+import com.signnow.api.embeddededitor.request.DocumentEmbeddedEditorLinkPostRequest;
+import com.signnow.api.embeddededitor.response.DocumentEmbeddedEditorLinkPostResponse;
+import com.signnow.core.ApiClient;
+import com.signnow.core.exception.SignNowApiException;
+import com.signnow.core.factory.SdkFactory;
+import java.io.File;
+
+public class DocumentUploadExample {
+ public static void main(String[] args) {
+
+ // Set your actual input data here
+ // Note: following values are dummy, just for example
+ // ----------------------------------------------------
+ // if it is not specified here, a new Bearer token will be created automatically
+ String bearerToken = "";
+ String pathToDocument = "/your/path/to/file.pdf";
+
+ try {
+ ApiClient client = SdkFactory.createApiClientWithBearerToken(bearerToken);
+
+ DocumentPostRequest request = new DocumentPostRequest(new File(pathToDocument));
+ DocumentPostResponse response = (DocumentPostResponse) client.send(request).getResponse();
+
+ // Create a link to the document editor
+ DocumentEmbeddedEditorLinkPostRequest editorRequest =
+ new DocumentEmbeddedEditorLinkPostRequest("https://example.com", "blank", 15);
+ editorRequest.withDocumentId(response.getId());
+ DocumentEmbeddedEditorLinkPostResponse editorResponse =
+ (DocumentEmbeddedEditorLinkPostResponse) client.send(editorRequest).getResponse();
+
+ System.out.println("Link to embedded editor: " + editorResponse.getData().getUrl());
+ } catch (SignNowApiException e) {
+ System.out.println("ERROR: " + e.getMessage());
+ }
+ }
+}
diff --git a/examples/EmbeddedEditorDocumentGroupExample.java b/examples/EmbeddedEditorDocumentGroupExample.java
new file mode 100644
index 0000000..675bed0
--- /dev/null
+++ b/examples/EmbeddedEditorDocumentGroupExample.java
@@ -0,0 +1,58 @@
+import com.signnow.api.document.request.DocumentPostRequest;
+import com.signnow.api.document.response.DocumentPostResponse;
+import com.signnow.api.documentgroup.request.DocumentGroupPostRequest;
+import com.signnow.api.documentgroup.request.data.DocumentIdCollection;
+import com.signnow.api.documentgroup.response.DocumentGroupPostResponse;
+import com.signnow.api.embeddededitor.request.DocumentGroupEmbeddedEditorLinkPostRequest;
+import com.signnow.api.embeddededitor.response.DocumentGroupEmbeddedEditorLinkPostResponse;
+import com.signnow.core.ApiClient;
+import com.signnow.core.exception.SignNowApiException;
+import com.signnow.core.factory.SdkFactory;
+import java.io.File;
+
+public class DocumentUploadExample {
+ public static void main(String[] args) {
+
+ // Set your actual input data here
+ // Note: following values are dummy, just for example
+ // ----------------------------------------------------
+ // if it is not specified here, a new Bearer token will be created automatically
+ String bearerToken = "";
+ String groupName = "Test Document Group";
+ String pathToDocument = "/your/path/to/file.pdf";
+
+ try {
+ ApiClient client = SdkFactory.createApiClientWithBearerToken(bearerToken);
+
+ // Create first document
+ DocumentPostRequest request = new DocumentPostRequest(new File(pathToDocument));
+ DocumentPostResponse response = (DocumentPostResponse) client.send(request).getResponse();
+ String documentId1 = response.getId();
+
+ // Create second document
+ DocumentPostRequest request2 = new DocumentPostRequest(new File(pathToDocument));
+ DocumentPostResponse response2 = (DocumentPostResponse) client.send(request2).getResponse();
+ String documentId2 = response2.getId();
+
+ // Create document group from both documents
+ DocumentIdCollection documentIds = new DocumentIdCollection();
+ documentIds.add(documentId1);
+ documentIds.add(documentId2);
+ DocumentGroupPostRequest groupRequest = new DocumentGroupPostRequest(documentIds, groupName);
+ DocumentGroupPostResponse groupResponse =
+ (DocumentGroupPostResponse) client.send(groupRequest).getResponse();
+ String groupId = groupResponse.getId();
+
+ // Create a link to the document editor
+ DocumentGroupEmbeddedEditorLinkPostRequest editorRequest =
+ new DocumentGroupEmbeddedEditorLinkPostRequest("https://example.com", "blank", 15);
+ editorRequest.withDocumentGroupId(groupId);
+ DocumentGroupEmbeddedEditorLinkPostResponse editorResponse =
+ (DocumentGroupEmbeddedEditorLinkPostResponse) client.send(editorRequest).getResponse();
+
+ System.out.println("Link to embedded editor: " + editorResponse.getData().getUrl());
+ } catch (SignNowApiException e) {
+ System.out.println("ERROR: " + e.getMessage());
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 27703f7..a0060d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.signnow
signnow-java-sdk
- 3.0.1
+ 3.1.0
jar
signnow-java-sdk
SignNow official Java SDK
diff --git a/src/main/java/com/signnow/api/embeddededitor/request/DocumentEmbeddedEditorLinkPostRequest.java b/src/main/java/com/signnow/api/embeddededitor/request/DocumentEmbeddedEditorLinkPostRequest.java
new file mode 100644
index 0000000..56b7800
--- /dev/null
+++ b/src/main/java/com/signnow/api/embeddededitor/request/DocumentEmbeddedEditorLinkPostRequest.java
@@ -0,0 +1,124 @@
+/*
+ * This file is a part of signNow SDK API client.
+ *
+ * (с) Copyright © 2011-present airSlate Inc. (https://www.signnow.com)
+ *
+ * For more details on copyright, see LICENSE.md file
+ */
+
+package com.signnow.api.embeddededitor.request;
+
+import com.signnow.core.request.ApiEndpoint;
+import com.signnow.core.request.RequestInterface;
+import java.util.HashMap;
+import java.util.Map;
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * This class represents a request to create a document embedded editor link. It implements the
+ * RequestInterface with an Object type.
+ */
+@ApiEndpoint(
+ name = "createDocumentEmbeddedEditorLink",
+ url = "/v2/documents/{document_id}/embedded-editor",
+ method = "post",
+ auth = "bearer",
+ namespace = "embeddedEditor",
+ entity = "documentEmbeddedEditorLink",
+ type = "application/json")
+public final class DocumentEmbeddedEditorLinkPostRequest implements RequestInterface