diff --git a/.fern/metadata.json b/.fern/metadata.json
index 53cbf56..fe05088 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -10,9 +10,9 @@
"base-exception-class-name": "CloudPDFException",
"base-api-exception-class-name": "CloudPDFApiException"
},
- "originGitCommit": "81e6a2097d2997ef713a3013668e5eae0e748575",
+ "originGitCommit": "32635f40577b214f6a6b3189a2271425c3a574fd",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
- "requestedVersion": "3.0.0-alpha.5",
+ "requestedVersion": "3.0.0-alpha.6",
"ciProvider": "github"
}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 8d84f69..9f4d9c5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,7 +46,7 @@ java {
group = 'com.cloudpdf'
-version = '3.0.0-alpha.5'
+version = '3.0.0-alpha.6'
jar {
dependsOn(":generatePomFileForMavenPublication")
@@ -73,7 +73,7 @@ publishing {
maven(MavenPublication) {
groupId = 'com.cloudpdf'
artifactId = 'sdk'
- version = '3.0.0-alpha.5'
+ version = '3.0.0-alpha.6'
from components.java
pom {
name = 'CloudPDF'
diff --git a/cloudpdf-generation.json b/cloudpdf-generation.json
index de3bfc1..9ce216f 100644
--- a/cloudpdf-generation.json
+++ b/cloudpdf-generation.json
@@ -1,12 +1,12 @@
{
"language": "java",
- "canonicalVersion": "3.0.0-next.5",
- "sdkVersion": "3.0.0-alpha.5",
+ "canonicalVersion": "3.0.0-next.6",
+ "sdkVersion": "3.0.0-alpha.6",
"source": {
"repository": "embedpdf/embed-pdf-viewer",
"openapi": "cloudpdf/contract/openapi.json",
- "openapiSha256": "e86b3f1766a77c28cb782a6513b5a86998668cd4e688e5b5ac27342e58637cd7",
- "gitCommit": "81e6a2097d2997ef713a3013668e5eae0e748575",
+ "openapiSha256": "b3e236a932673e27e05825352e1bc3675369d7505040bf7d7760e542aae8d38d",
+ "gitCommit": "32635f40577b214f6a6b3189a2271425c3a574fd",
"gitCommitIsDirty": false
},
"fern": {
diff --git a/reference.md b/reference.md
index 4728092..4026764 100644
--- a/reference.md
+++ b/reference.md
@@ -1628,6 +1628,129 @@ client.documents().uploadProxy(
+
+
+
+
+client.documents.importFrom(tenantId, request) -> DocumentsImportFrom200Response
+
+
+
+#### 📝 Description
+
+
+
+
+
+
+
+Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); `revision` is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+
+
+
+
+
+#### 🔌 Usage
+
+
+
+
+
+
+
+```java
+client.documents().importFrom(
+ "tenantId",
+ DocumentsImportFromRequest
+ .builder()
+ .source(
+ DocumentsImportFromRequestSource.url(
+ DocumentsImportFromRequestSourceUrl
+ .builder()
+ .url("url")
+ .build()
+ )
+ )
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+
+
+
+
+
+**tenantId:** `String`
+
+
+
+
+
+
+
+**source:** `DocumentsImportFromRequestSource`
+
+
+
+
+
+
+
+**expected:** `Optional`
+
+
+
+
+
+
+
+**metadata:** `Optional>`
+
+
+
+
+
+
+
+**idempotencyKey:** `Optional`
+
+
+
+
+
+
+
+**dedupMode:** `Optional`
+
+
+
+
+
+
+
+**docId:** `Optional`
+
+
+
+
+
+
+
+**mode:** `Optional`
+
+
+
+
+
+
+
diff --git a/src/main/java/api/core/ClientOptions.java b/src/main/java/api/core/ClientOptions.java
index 7956214..271062f 100644
--- a/src/main/java/api/core/ClientOptions.java
+++ b/src/main/java/api/core/ClientOptions.java
@@ -49,7 +49,7 @@ private ClientOptions(
{
put("X-Fern-Language", "JAVA");
put("X-Fern-SDK-Name", "com.cloudpdf:sdk");
- put("X-Fern-SDK-Version", "3.0.0-alpha.5");
+ put("X-Fern-SDK-Version", "3.0.0-alpha.6");
}
});
this.headerSuppliers = headerSuppliers;
diff --git a/src/main/java/api/errors/BadGatewayError.java b/src/main/java/api/errors/BadGatewayError.java
new file mode 100644
index 0000000..c0f5917
--- /dev/null
+++ b/src/main/java/api/errors/BadGatewayError.java
@@ -0,0 +1,33 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.errors;
+
+import com.cloudpdf.api.core.CloudPDFApiException;
+import com.cloudpdf.api.types.DocumentsImportFrom502Response;
+import okhttp3.Response;
+
+public final class BadGatewayError extends CloudPDFApiException {
+ /**
+ * The body of the response that triggered the exception.
+ */
+ private final DocumentsImportFrom502Response body;
+
+ public BadGatewayError(DocumentsImportFrom502Response body) {
+ super("BadGatewayError", 502, body);
+ this.body = body;
+ }
+
+ public BadGatewayError(DocumentsImportFrom502Response body, Response rawResponse) {
+ super("BadGatewayError", 502, body, rawResponse);
+ this.body = body;
+ }
+
+ /**
+ * @return the body
+ */
+ @java.lang.Override
+ public DocumentsImportFrom502Response body() {
+ return this.body;
+ }
+}
diff --git a/src/main/java/api/resources/documents/AsyncDocumentsClient.java b/src/main/java/api/resources/documents/AsyncDocumentsClient.java
index 3d38c6d..c51e0ae 100644
--- a/src/main/java/api/resources/documents/AsyncDocumentsClient.java
+++ b/src/main/java/api/resources/documents/AsyncDocumentsClient.java
@@ -7,6 +7,7 @@
import com.cloudpdf.api.core.RequestOptions;
import com.cloudpdf.api.resources.documents.requests.DeleteDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsCommitRequest;
+import com.cloudpdf.api.resources.documents.requests.DocumentsImportFromRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsInitRequest;
import com.cloudpdf.api.resources.documents.requests.DownloadDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.GetDocumentsRequest;
@@ -15,6 +16,7 @@
import com.cloudpdf.api.resources.documents.requests.UploadProxyDocumentsRequest;
import com.cloudpdf.api.types.DocumentsCommit200Response;
import com.cloudpdf.api.types.DocumentsGet200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom200Response;
import com.cloudpdf.api.types.DocumentsInit200Response;
import com.cloudpdf.api.types.DocumentsList200Response;
import com.cloudpdf.api.types.DocumentsUploadProxy200Response;
@@ -184,6 +186,22 @@ public CompletableFuture uploadProxy(
.thenApply(response -> response.body());
}
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CompletableFuture importFrom(
+ String tenantId, DocumentsImportFromRequest request) {
+ return this.rawClient.importFrom(tenantId, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CompletableFuture importFrom(
+ String tenantId, DocumentsImportFromRequest request, RequestOptions requestOptions) {
+ return this.rawClient.importFrom(tenantId, request, requestOptions).thenApply(response -> response.body());
+ }
+
public CompletableFuture init(String tenantId, DocumentsInitRequest request) {
return this.rawClient.init(tenantId, request).thenApply(response -> response.body());
}
diff --git a/src/main/java/api/resources/documents/AsyncRawDocumentsClient.java b/src/main/java/api/resources/documents/AsyncRawDocumentsClient.java
index ef9bdde..5f55c56 100644
--- a/src/main/java/api/resources/documents/AsyncRawDocumentsClient.java
+++ b/src/main/java/api/resources/documents/AsyncRawDocumentsClient.java
@@ -14,12 +14,14 @@
import com.cloudpdf.api.core.RequestOptions;
import com.cloudpdf.api.core.ResponseBodyInputStream;
import com.cloudpdf.api.core.RetryInterceptor;
+import com.cloudpdf.api.errors.BadGatewayError;
import com.cloudpdf.api.errors.BadRequestError;
import com.cloudpdf.api.errors.ConflictError;
import com.cloudpdf.api.errors.ForbiddenError;
import com.cloudpdf.api.errors.NotFoundError;
import com.cloudpdf.api.resources.documents.requests.DeleteDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsCommitRequest;
+import com.cloudpdf.api.resources.documents.requests.DocumentsImportFromRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsInitRequest;
import com.cloudpdf.api.resources.documents.requests.DownloadDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.GetDocumentsRequest;
@@ -28,6 +30,8 @@
import com.cloudpdf.api.resources.documents.requests.UploadProxyDocumentsRequest;
import com.cloudpdf.api.types.DocumentsCommit200Response;
import com.cloudpdf.api.types.DocumentsGet200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom502Response;
import com.cloudpdf.api.types.DocumentsInit200Response;
import com.cloudpdf.api.types.DocumentsList200Response;
import com.cloudpdf.api.types.DocumentsUploadProxy200Response;
@@ -1043,6 +1047,113 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
return future;
}
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CompletableFuture> importFrom(
+ String tenantId, DocumentsImportFromRequest request) {
+ return importFrom(tenantId, request, null);
+ }
+
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CompletableFuture> importFrom(
+ String tenantId, DocumentsImportFromRequest request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("v1/tenants")
+ .addPathSegment(tenantId)
+ .addPathSegments("documents")
+ .addPathSegments("import");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new CloudPDFException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("POST", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future =
+ new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new CloudPDFClientHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, DocumentsImportFrom200Response.class),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 502:
+ future.completeExceptionally(new BadGatewayError(
+ ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, DocumentsImportFrom502Response.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new CloudPDFApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new CloudPDFException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new CloudPDFException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new CloudPDFException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
public CompletableFuture> init(
String tenantId, DocumentsInitRequest request) {
return init(tenantId, request, null);
diff --git a/src/main/java/api/resources/documents/DocumentsClient.java b/src/main/java/api/resources/documents/DocumentsClient.java
index 5f5788f..834e08e 100644
--- a/src/main/java/api/resources/documents/DocumentsClient.java
+++ b/src/main/java/api/resources/documents/DocumentsClient.java
@@ -7,6 +7,7 @@
import com.cloudpdf.api.core.RequestOptions;
import com.cloudpdf.api.resources.documents.requests.DeleteDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsCommitRequest;
+import com.cloudpdf.api.resources.documents.requests.DocumentsImportFromRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsInitRequest;
import com.cloudpdf.api.resources.documents.requests.DownloadDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.GetDocumentsRequest;
@@ -15,6 +16,7 @@
import com.cloudpdf.api.resources.documents.requests.UploadProxyDocumentsRequest;
import com.cloudpdf.api.types.DocumentsCommit200Response;
import com.cloudpdf.api.types.DocumentsGet200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom200Response;
import com.cloudpdf.api.types.DocumentsInit200Response;
import com.cloudpdf.api.types.DocumentsList200Response;
import com.cloudpdf.api.types.DocumentsUploadProxy200Response;
@@ -180,6 +182,21 @@ public DocumentsUploadProxy200Response uploadProxy(
.body();
}
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public DocumentsImportFrom200Response importFrom(String tenantId, DocumentsImportFromRequest request) {
+ return this.rawClient.importFrom(tenantId, request).body();
+ }
+
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public DocumentsImportFrom200Response importFrom(
+ String tenantId, DocumentsImportFromRequest request, RequestOptions requestOptions) {
+ return this.rawClient.importFrom(tenantId, request, requestOptions).body();
+ }
+
public DocumentsInit200Response init(String tenantId, DocumentsInitRequest request) {
return this.rawClient.init(tenantId, request).body();
}
diff --git a/src/main/java/api/resources/documents/RawDocumentsClient.java b/src/main/java/api/resources/documents/RawDocumentsClient.java
index d59065f..e1737fc 100644
--- a/src/main/java/api/resources/documents/RawDocumentsClient.java
+++ b/src/main/java/api/resources/documents/RawDocumentsClient.java
@@ -14,12 +14,14 @@
import com.cloudpdf.api.core.RequestOptions;
import com.cloudpdf.api.core.ResponseBodyInputStream;
import com.cloudpdf.api.core.RetryInterceptor;
+import com.cloudpdf.api.errors.BadGatewayError;
import com.cloudpdf.api.errors.BadRequestError;
import com.cloudpdf.api.errors.ConflictError;
import com.cloudpdf.api.errors.ForbiddenError;
import com.cloudpdf.api.errors.NotFoundError;
import com.cloudpdf.api.resources.documents.requests.DeleteDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsCommitRequest;
+import com.cloudpdf.api.resources.documents.requests.DocumentsImportFromRequest;
import com.cloudpdf.api.resources.documents.requests.DocumentsInitRequest;
import com.cloudpdf.api.resources.documents.requests.DownloadDocumentsRequest;
import com.cloudpdf.api.resources.documents.requests.GetDocumentsRequest;
@@ -28,6 +30,8 @@
import com.cloudpdf.api.resources.documents.requests.UploadProxyDocumentsRequest;
import com.cloudpdf.api.types.DocumentsCommit200Response;
import com.cloudpdf.api.types.DocumentsGet200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom200Response;
+import com.cloudpdf.api.types.DocumentsImportFrom502Response;
import com.cloudpdf.api.types.DocumentsInit200Response;
import com.cloudpdf.api.types.DocumentsList200Response;
import com.cloudpdf.api.types.DocumentsUploadProxy200Response;
@@ -834,6 +838,92 @@ public CloudPDFClientHttpResponse uploadProxy(
}
}
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CloudPDFClientHttpResponse importFrom(
+ String tenantId, DocumentsImportFromRequest request) {
+ return importFrom(tenantId, request, null);
+ }
+
+ /**
+ * Default mode is synchronous and bounded: the response returns only after the transfer verified and committed (or failed). mode=async (connection sources only) answers 202 immediately and an in-process worker performs the transfer with leased, fenced retries; poll the document until ready/failed. The deployment import policy gates scheme, network range, and size; sources must declare a length. CloudPDF copies and owns the bytes — the source is never referenced in place. A 502 marks a retryable upstream failure: retry with the same idempotencyKey to resume the same document. URL sources are capabilities and never echoed back. Connection sources name operator-registered storage (bucket/prefix scope, allowed credential classes, and tenant bindings are deployment configuration); revision is provider-interpreted (S3 VersionId, GCS generation, Azure version id).
+ */
+ public CloudPDFClientHttpResponse importFrom(
+ String tenantId, DocumentsImportFromRequest request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("v1/tenants")
+ .addPathSegment(tenantId)
+ .addPathSegments("documents")
+ .addPathSegments("import");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new CloudPDFException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("POST", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new CloudPDFClientHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, DocumentsImportFrom200Response.class),
+ response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 502:
+ throw new BadGatewayError(
+ ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, DocumentsImportFrom502Response.class),
+ response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new CloudPDFApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new CloudPDFException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new CloudPDFException("Network error executing HTTP request", e);
+ }
+ }
+
public CloudPDFClientHttpResponse init(String tenantId, DocumentsInitRequest request) {
return init(tenantId, request, null);
}
diff --git a/src/main/java/api/resources/documents/requests/DocumentsImportFromRequest.java b/src/main/java/api/resources/documents/requests/DocumentsImportFromRequest.java
new file mode 100644
index 0000000..a190cdf
--- /dev/null
+++ b/src/main/java/api/resources/documents/requests/DocumentsImportFromRequest.java
@@ -0,0 +1,308 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.requests;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.cloudpdf.api.resources.documents.types.DocumentsImportFromRequestDedupMode;
+import com.cloudpdf.api.resources.documents.types.DocumentsImportFromRequestExpected;
+import com.cloudpdf.api.resources.documents.types.DocumentsImportFromRequestMode;
+import com.cloudpdf.api.resources.documents.types.DocumentsImportFromRequestSource;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFromRequest.Builder.class)
+public final class DocumentsImportFromRequest {
+ private final DocumentsImportFromRequestSource source;
+
+ private final Optional expected;
+
+ private final Optional> metadata;
+
+ private final Optional idempotencyKey;
+
+ private final Optional dedupMode;
+
+ private final Optional docId;
+
+ private final Optional mode;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFromRequest(
+ DocumentsImportFromRequestSource source,
+ Optional expected,
+ Optional> metadata,
+ Optional idempotencyKey,
+ Optional dedupMode,
+ Optional docId,
+ Optional mode,
+ Map additionalProperties) {
+ this.source = source;
+ this.expected = expected;
+ this.metadata = metadata;
+ this.idempotencyKey = idempotencyKey;
+ this.dedupMode = dedupMode;
+ this.docId = docId;
+ this.mode = mode;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("source")
+ public DocumentsImportFromRequestSource getSource() {
+ return source;
+ }
+
+ @JsonProperty("expected")
+ public Optional getExpected() {
+ return expected;
+ }
+
+ @JsonProperty("metadata")
+ public Optional> getMetadata() {
+ return metadata;
+ }
+
+ @JsonProperty("idempotencyKey")
+ public Optional getIdempotencyKey() {
+ return idempotencyKey;
+ }
+
+ @JsonProperty("dedupMode")
+ public Optional getDedupMode() {
+ return dedupMode;
+ }
+
+ @JsonProperty("docId")
+ public Optional getDocId() {
+ return docId;
+ }
+
+ @JsonProperty("mode")
+ public Optional getMode() {
+ return mode;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFromRequest && equalTo((DocumentsImportFromRequest) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFromRequest other) {
+ return source.equals(other.source)
+ && expected.equals(other.expected)
+ && metadata.equals(other.metadata)
+ && idempotencyKey.equals(other.idempotencyKey)
+ && dedupMode.equals(other.dedupMode)
+ && docId.equals(other.docId)
+ && mode.equals(other.mode);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(
+ this.source, this.expected, this.metadata, this.idempotencyKey, this.dedupMode, this.docId, this.mode);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static SourceStage builder() {
+ return new Builder();
+ }
+
+ public interface SourceStage {
+ _FinalStage source(@NotNull DocumentsImportFromRequestSource source);
+
+ Builder from(DocumentsImportFromRequest other);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFromRequest build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+
+ _FinalStage expected(Optional expected);
+
+ _FinalStage expected(DocumentsImportFromRequestExpected expected);
+
+ _FinalStage metadata(Optional> metadata);
+
+ _FinalStage metadata(Map metadata);
+
+ _FinalStage idempotencyKey(Optional idempotencyKey);
+
+ _FinalStage idempotencyKey(String idempotencyKey);
+
+ _FinalStage dedupMode(Optional dedupMode);
+
+ _FinalStage dedupMode(DocumentsImportFromRequestDedupMode dedupMode);
+
+ _FinalStage docId(Optional docId);
+
+ _FinalStage docId(String docId);
+
+ _FinalStage mode(Optional mode);
+
+ _FinalStage mode(DocumentsImportFromRequestMode mode);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder implements SourceStage, _FinalStage {
+ private DocumentsImportFromRequestSource source;
+
+ private Optional mode = Optional.empty();
+
+ private Optional docId = Optional.empty();
+
+ private Optional dedupMode = Optional.empty();
+
+ private Optional idempotencyKey = Optional.empty();
+
+ private Optional> metadata = Optional.empty();
+
+ private Optional expected = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFromRequest other) {
+ source(other.getSource());
+ expected(other.getExpected());
+ metadata(other.getMetadata());
+ idempotencyKey(other.getIdempotencyKey());
+ dedupMode(other.getDedupMode());
+ docId(other.getDocId());
+ mode(other.getMode());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("source")
+ public _FinalStage source(@NotNull DocumentsImportFromRequestSource source) {
+ this.source = Objects.requireNonNull(source, "source must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage mode(DocumentsImportFromRequestMode mode) {
+ this.mode = Optional.ofNullable(mode);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "mode", nulls = Nulls.SKIP)
+ public _FinalStage mode(Optional mode) {
+ this.mode = mode;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage docId(String docId) {
+ this.docId = Optional.ofNullable(docId);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "docId", nulls = Nulls.SKIP)
+ public _FinalStage docId(Optional docId) {
+ this.docId = docId;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage dedupMode(DocumentsImportFromRequestDedupMode dedupMode) {
+ this.dedupMode = Optional.ofNullable(dedupMode);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "dedupMode", nulls = Nulls.SKIP)
+ public _FinalStage dedupMode(Optional dedupMode) {
+ this.dedupMode = dedupMode;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage idempotencyKey(String idempotencyKey) {
+ this.idempotencyKey = Optional.ofNullable(idempotencyKey);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "idempotencyKey", nulls = Nulls.SKIP)
+ public _FinalStage idempotencyKey(Optional idempotencyKey) {
+ this.idempotencyKey = idempotencyKey;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage metadata(Map metadata) {
+ this.metadata = Optional.ofNullable(metadata);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "metadata", nulls = Nulls.SKIP)
+ public _FinalStage metadata(Optional> metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage expected(DocumentsImportFromRequestExpected expected) {
+ this.expected = Optional.ofNullable(expected);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "expected", nulls = Nulls.SKIP)
+ public _FinalStage expected(Optional expected) {
+ this.expected = expected;
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFromRequest build() {
+ return new DocumentsImportFromRequest(
+ source, expected, metadata, idempotencyKey, dedupMode, docId, mode, additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestDedupMode.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestDedupMode.java
new file mode 100644
index 0000000..60293fc
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestDedupMode.java
@@ -0,0 +1,86 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public final class DocumentsImportFromRequestDedupMode {
+ public static final DocumentsImportFromRequestDedupMode REUSE_EXISTING =
+ new DocumentsImportFromRequestDedupMode(Value.REUSE_EXISTING, "reuse-existing");
+
+ public static final DocumentsImportFromRequestDedupMode ALWAYS_CREATE =
+ new DocumentsImportFromRequestDedupMode(Value.ALWAYS_CREATE, "always-create");
+
+ private final Value value;
+
+ private final String string;
+
+ DocumentsImportFromRequestDedupMode(Value value, String string) {
+ this.value = value;
+ this.string = string;
+ }
+
+ public Value getEnumValue() {
+ return value;
+ }
+
+ @java.lang.Override
+ @JsonValue
+ public String toString() {
+ return this.string;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ return (this == other)
+ || (other instanceof DocumentsImportFromRequestDedupMode
+ && this.string.equals(((DocumentsImportFromRequestDedupMode) other).string));
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return this.string.hashCode();
+ }
+
+ public T visit(Visitor visitor) {
+ switch (value) {
+ case REUSE_EXISTING:
+ return visitor.visitReuseExisting();
+ case ALWAYS_CREATE:
+ return visitor.visitAlwaysCreate();
+ case UNKNOWN:
+ default:
+ return visitor.visitUnknown(string);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static DocumentsImportFromRequestDedupMode valueOf(String value) {
+ switch (value) {
+ case "reuse-existing":
+ return REUSE_EXISTING;
+ case "always-create":
+ return ALWAYS_CREATE;
+ default:
+ return new DocumentsImportFromRequestDedupMode(Value.UNKNOWN, value);
+ }
+ }
+
+ public enum Value {
+ ALWAYS_CREATE,
+
+ REUSE_EXISTING,
+
+ UNKNOWN
+ }
+
+ public interface Visitor {
+ T visitAlwaysCreate();
+
+ T visitReuseExisting();
+
+ T visitUnknown(String unknownType);
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestExpected.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestExpected.java
new file mode 100644
index 0000000..510bafc
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestExpected.java
@@ -0,0 +1,129 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFromRequestExpected.Builder.class)
+public final class DocumentsImportFromRequestExpected {
+ private final Optional sizeBytes;
+
+ private final Optional sha256;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFromRequestExpected(
+ Optional sizeBytes, Optional sha256, Map additionalProperties) {
+ this.sizeBytes = sizeBytes;
+ this.sha256 = sha256;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("sizeBytes")
+ public Optional getSizeBytes() {
+ return sizeBytes;
+ }
+
+ @JsonProperty("sha256")
+ public Optional getSha256() {
+ return sha256;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFromRequestExpected
+ && equalTo((DocumentsImportFromRequestExpected) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFromRequestExpected other) {
+ return sizeBytes.equals(other.sizeBytes) && sha256.equals(other.sha256);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.sizeBytes, this.sha256);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder {
+ private Optional sizeBytes = Optional.empty();
+
+ private Optional sha256 = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ public Builder from(DocumentsImportFromRequestExpected other) {
+ sizeBytes(other.getSizeBytes());
+ sha256(other.getSha256());
+ return this;
+ }
+
+ @JsonSetter(value = "sizeBytes", nulls = Nulls.SKIP)
+ public Builder sizeBytes(Optional sizeBytes) {
+ this.sizeBytes = sizeBytes;
+ return this;
+ }
+
+ public Builder sizeBytes(Integer sizeBytes) {
+ this.sizeBytes = Optional.ofNullable(sizeBytes);
+ return this;
+ }
+
+ @JsonSetter(value = "sha256", nulls = Nulls.SKIP)
+ public Builder sha256(Optional sha256) {
+ this.sha256 = sha256;
+ return this;
+ }
+
+ public Builder sha256(String sha256) {
+ this.sha256 = Optional.ofNullable(sha256);
+ return this;
+ }
+
+ public DocumentsImportFromRequestExpected build() {
+ return new DocumentsImportFromRequestExpected(sizeBytes, sha256, additionalProperties);
+ }
+
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestMode.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestMode.java
new file mode 100644
index 0000000..387cdb3
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestMode.java
@@ -0,0 +1,84 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public final class DocumentsImportFromRequestMode {
+ public static final DocumentsImportFromRequestMode SYNC = new DocumentsImportFromRequestMode(Value.SYNC, "sync");
+
+ public static final DocumentsImportFromRequestMode ASYNC = new DocumentsImportFromRequestMode(Value.ASYNC, "async");
+
+ private final Value value;
+
+ private final String string;
+
+ DocumentsImportFromRequestMode(Value value, String string) {
+ this.value = value;
+ this.string = string;
+ }
+
+ public Value getEnumValue() {
+ return value;
+ }
+
+ @java.lang.Override
+ @JsonValue
+ public String toString() {
+ return this.string;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ return (this == other)
+ || (other instanceof DocumentsImportFromRequestMode
+ && this.string.equals(((DocumentsImportFromRequestMode) other).string));
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return this.string.hashCode();
+ }
+
+ public T visit(Visitor visitor) {
+ switch (value) {
+ case SYNC:
+ return visitor.visitSync();
+ case ASYNC:
+ return visitor.visitAsync();
+ case UNKNOWN:
+ default:
+ return visitor.visitUnknown(string);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static DocumentsImportFromRequestMode valueOf(String value) {
+ switch (value) {
+ case "sync":
+ return SYNC;
+ case "async":
+ return ASYNC;
+ default:
+ return new DocumentsImportFromRequestMode(Value.UNKNOWN, value);
+ }
+ }
+
+ public enum Value {
+ SYNC,
+
+ ASYNC,
+
+ UNKNOWN
+ }
+
+ public interface Visitor {
+ T visitSync();
+
+ T visitAsync();
+
+ T visitUnknown(String unknownType);
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSource.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSource.java
new file mode 100644
index 0000000..4bd7b98
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSource.java
@@ -0,0 +1,222 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonUnwrapped;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.util.Objects;
+import java.util.Optional;
+
+public final class DocumentsImportFromRequestSource {
+ private final Value value;
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ private DocumentsImportFromRequestSource(Value value) {
+ this.value = value;
+ }
+
+ public T visit(Visitor visitor) {
+ return value.visit(visitor);
+ }
+
+ public static DocumentsImportFromRequestSource url(DocumentsImportFromRequestSourceUrl value) {
+ return new DocumentsImportFromRequestSource(new UrlValue(value));
+ }
+
+ public static DocumentsImportFromRequestSource connection(DocumentsImportFromRequestSourceConnection value) {
+ return new DocumentsImportFromRequestSource(new ConnectionValue(value));
+ }
+
+ public boolean isUrl() {
+ return value instanceof UrlValue;
+ }
+
+ public boolean isConnection() {
+ return value instanceof ConnectionValue;
+ }
+
+ public boolean _isUnknown() {
+ return value instanceof _UnknownValue;
+ }
+
+ public Optional getUrl() {
+ if (isUrl()) {
+ return Optional.of(((UrlValue) value).value);
+ }
+ return Optional.empty();
+ }
+
+ public Optional getConnection() {
+ if (isConnection()) {
+ return Optional.of(((ConnectionValue) value).value);
+ }
+ return Optional.empty();
+ }
+
+ public Optional _getUnknown() {
+ if (_isUnknown()) {
+ return Optional.of(((_UnknownValue) value).value);
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFromRequestSource
+ && value.equals(((DocumentsImportFromRequestSource) other).value);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(value);
+ }
+
+ @Override
+ public String toString() {
+ return value.toString();
+ }
+
+ @JsonValue
+ private Value getValue() {
+ return this.value;
+ }
+
+ public interface Visitor {
+ T visitUrl(DocumentsImportFromRequestSourceUrl url);
+
+ T visitConnection(DocumentsImportFromRequestSourceConnection connection);
+
+ T _visitUnknown(Object unknownType);
+ }
+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "kind", visible = true, defaultImpl = _UnknownValue.class)
+ @JsonSubTypes({@JsonSubTypes.Type(UrlValue.class), @JsonSubTypes.Type(ConnectionValue.class)})
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ private interface Value {
+ T visit(Visitor visitor);
+ }
+
+ @JsonTypeName("url")
+ @JsonIgnoreProperties("kind")
+ private static final class UrlValue implements Value {
+ @JsonUnwrapped
+ @JsonIgnoreProperties(value = "kind", allowSetters = true)
+ private DocumentsImportFromRequestSourceUrl value;
+
+ @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
+ private UrlValue() {}
+
+ private UrlValue(DocumentsImportFromRequestSourceUrl value) {
+ this.value = value;
+ }
+
+ @java.lang.Override
+ public T visit(Visitor visitor) {
+ return visitor.visitUrl(value);
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof UrlValue && equalTo((UrlValue) other);
+ }
+
+ private boolean equalTo(UrlValue other) {
+ return value.equals(other.value);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.value);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return "DocumentsImportFromRequestSource{" + "value: " + value + "}";
+ }
+ }
+
+ @JsonTypeName("connection")
+ @JsonIgnoreProperties("kind")
+ private static final class ConnectionValue implements Value {
+ @JsonUnwrapped
+ @JsonIgnoreProperties(value = "kind", allowSetters = true)
+ private DocumentsImportFromRequestSourceConnection value;
+
+ @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
+ private ConnectionValue() {}
+
+ private ConnectionValue(DocumentsImportFromRequestSourceConnection value) {
+ this.value = value;
+ }
+
+ @java.lang.Override
+ public T visit(Visitor visitor) {
+ return visitor.visitConnection(value);
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof ConnectionValue && equalTo((ConnectionValue) other);
+ }
+
+ private boolean equalTo(ConnectionValue other) {
+ return value.equals(other.value);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.value);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return "DocumentsImportFromRequestSource{" + "value: " + value + "}";
+ }
+ }
+
+ @JsonIgnoreProperties("kind")
+ private static final class _UnknownValue implements Value {
+ private String type;
+
+ @JsonValue
+ private Object value;
+
+ @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
+ private _UnknownValue(@JsonProperty("value") Object value) {}
+
+ @java.lang.Override
+ public T visit(Visitor visitor) {
+ return visitor._visitUnknown(value);
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof _UnknownValue && equalTo((_UnknownValue) other);
+ }
+
+ private boolean equalTo(_UnknownValue other) {
+ return type.equals(other.type) && value.equals(other.value);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.type, this.value);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return "DocumentsImportFromRequestSource{" + "type: " + type + ", value: " + value + "}";
+ }
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceConnection.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceConnection.java
new file mode 100644
index 0000000..5b3432e
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceConnection.java
@@ -0,0 +1,172 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFromRequestSourceConnection.Builder.class)
+public final class DocumentsImportFromRequestSourceConnection {
+ private final String connectionId;
+
+ private final String key;
+
+ private final Optional revision;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFromRequestSourceConnection(
+ String connectionId, String key, Optional revision, Map additionalProperties) {
+ this.connectionId = connectionId;
+ this.key = key;
+ this.revision = revision;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("connectionId")
+ public String getConnectionId() {
+ return connectionId;
+ }
+
+ @JsonProperty("key")
+ public String getKey() {
+ return key;
+ }
+
+ @JsonProperty("revision")
+ public Optional getRevision() {
+ return revision;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFromRequestSourceConnection
+ && equalTo((DocumentsImportFromRequestSourceConnection) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFromRequestSourceConnection other) {
+ return connectionId.equals(other.connectionId) && key.equals(other.key) && revision.equals(other.revision);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.connectionId, this.key, this.revision);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static ConnectionIdStage builder() {
+ return new Builder();
+ }
+
+ public interface ConnectionIdStage {
+ KeyStage connectionId(@NotNull String connectionId);
+
+ Builder from(DocumentsImportFromRequestSourceConnection other);
+ }
+
+ public interface KeyStage {
+ _FinalStage key(@NotNull String key);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFromRequestSourceConnection build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+
+ _FinalStage revision(Optional revision);
+
+ _FinalStage revision(String revision);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder implements ConnectionIdStage, KeyStage, _FinalStage {
+ private String connectionId;
+
+ private String key;
+
+ private Optional revision = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFromRequestSourceConnection other) {
+ connectionId(other.getConnectionId());
+ key(other.getKey());
+ revision(other.getRevision());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("connectionId")
+ public KeyStage connectionId(@NotNull String connectionId) {
+ this.connectionId = Objects.requireNonNull(connectionId, "connectionId must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("key")
+ public _FinalStage key(@NotNull String key) {
+ this.key = Objects.requireNonNull(key, "key must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage revision(String revision) {
+ this.revision = Optional.ofNullable(revision);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "revision", nulls = Nulls.SKIP)
+ public _FinalStage revision(Optional revision) {
+ this.revision = revision;
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFromRequestSourceConnection build() {
+ return new DocumentsImportFromRequestSourceConnection(connectionId, key, revision, additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceUrl.java b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceUrl.java
new file mode 100644
index 0000000..ee06df2
--- /dev/null
+++ b/src/main/java/api/resources/documents/types/DocumentsImportFromRequestSourceUrl.java
@@ -0,0 +1,119 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.resources.documents.types;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFromRequestSourceUrl.Builder.class)
+public final class DocumentsImportFromRequestSourceUrl {
+ private final String url;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFromRequestSourceUrl(String url, Map additionalProperties) {
+ this.url = url;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("url")
+ public String getUrl() {
+ return url;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFromRequestSourceUrl
+ && equalTo((DocumentsImportFromRequestSourceUrl) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFromRequestSourceUrl other) {
+ return url.equals(other.url);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.url);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static UrlStage builder() {
+ return new Builder();
+ }
+
+ public interface UrlStage {
+ _FinalStage url(@NotNull String url);
+
+ Builder from(DocumentsImportFromRequestSourceUrl other);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFromRequestSourceUrl build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder implements UrlStage, _FinalStage {
+ private String url;
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFromRequestSourceUrl other) {
+ url(other.getUrl());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("url")
+ public _FinalStage url(@NotNull String url) {
+ this.url = Objects.requireNonNull(url, "url must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFromRequestSourceUrl build() {
+ return new DocumentsImportFromRequestSourceUrl(url, additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom200Response.java b/src/main/java/api/types/DocumentsImportFrom200Response.java
new file mode 100644
index 0000000..79c965e
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom200Response.java
@@ -0,0 +1,143 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFrom200Response.Builder.class)
+public final class DocumentsImportFrom200Response {
+ private final DocumentsImportFrom200ResponseTag tag;
+
+ private final DocumentsImportFrom200ResponseDocument document;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFrom200Response(
+ DocumentsImportFrom200ResponseTag tag,
+ DocumentsImportFrom200ResponseDocument document,
+ Map additionalProperties) {
+ this.tag = tag;
+ this.document = document;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("tag")
+ public DocumentsImportFrom200ResponseTag getTag() {
+ return tag;
+ }
+
+ @JsonProperty("document")
+ public DocumentsImportFrom200ResponseDocument getDocument() {
+ return document;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFrom200Response && equalTo((DocumentsImportFrom200Response) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFrom200Response other) {
+ return tag.equals(other.tag) && document.equals(other.document);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.tag, this.document);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static TagStage builder() {
+ return new Builder();
+ }
+
+ public interface TagStage {
+ DocumentStage tag(@NotNull DocumentsImportFrom200ResponseTag tag);
+
+ Builder from(DocumentsImportFrom200Response other);
+ }
+
+ public interface DocumentStage {
+ _FinalStage document(@NotNull DocumentsImportFrom200ResponseDocument document);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFrom200Response build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder implements TagStage, DocumentStage, _FinalStage {
+ private DocumentsImportFrom200ResponseTag tag;
+
+ private DocumentsImportFrom200ResponseDocument document;
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFrom200Response other) {
+ tag(other.getTag());
+ document(other.getDocument());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("tag")
+ public DocumentStage tag(@NotNull DocumentsImportFrom200ResponseTag tag) {
+ this.tag = Objects.requireNonNull(tag, "tag must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("document")
+ public _FinalStage document(@NotNull DocumentsImportFrom200ResponseDocument document) {
+ this.document = Objects.requireNonNull(document, "document must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFrom200Response build() {
+ return new DocumentsImportFrom200Response(tag, document, additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom200ResponseDocument.java b/src/main/java/api/types/DocumentsImportFrom200ResponseDocument.java
new file mode 100644
index 0000000..6dbd16e
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom200ResponseDocument.java
@@ -0,0 +1,652 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.cloudpdf.api.core.Nullable;
+import com.cloudpdf.api.core.NullableNonemptyFilter;
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFrom200ResponseDocument.Builder.class)
+public final class DocumentsImportFrom200ResponseDocument {
+ private final String id;
+
+ private final String tenantId;
+
+ private final DocumentsImportFrom200ResponseDocumentState state;
+
+ private final Optional baseSha;
+
+ private final Optional storageSizeBytes;
+
+ private final Optional> metadata;
+
+ private final Optional idempotencyKey;
+
+ private final Optional failureReason;
+
+ private final Optional thumbnailState;
+
+ private final Optional thumbnailUrl;
+
+ private final double createdAt;
+
+ private final double updatedAt;
+
+ private final Optional createdBy;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFrom200ResponseDocument(
+ String id,
+ String tenantId,
+ DocumentsImportFrom200ResponseDocumentState state,
+ Optional baseSha,
+ Optional storageSizeBytes,
+ Optional> metadata,
+ Optional idempotencyKey,
+ Optional failureReason,
+ Optional thumbnailState,
+ Optional thumbnailUrl,
+ double createdAt,
+ double updatedAt,
+ Optional createdBy,
+ Map additionalProperties) {
+ this.id = id;
+ this.tenantId = tenantId;
+ this.state = state;
+ this.baseSha = baseSha;
+ this.storageSizeBytes = storageSizeBytes;
+ this.metadata = metadata;
+ this.idempotencyKey = idempotencyKey;
+ this.failureReason = failureReason;
+ this.thumbnailState = thumbnailState;
+ this.thumbnailUrl = thumbnailUrl;
+ this.createdAt = createdAt;
+ this.updatedAt = updatedAt;
+ this.createdBy = createdBy;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("id")
+ public String getId() {
+ return id;
+ }
+
+ @JsonProperty("tenantId")
+ public String getTenantId() {
+ return tenantId;
+ }
+
+ @JsonProperty("state")
+ public DocumentsImportFrom200ResponseDocumentState getState() {
+ return state;
+ }
+
+ @JsonIgnore
+ public Optional getBaseSha() {
+ if (baseSha == null) {
+ return Optional.empty();
+ }
+ return baseSha;
+ }
+
+ @JsonIgnore
+ public Optional getStorageSizeBytes() {
+ if (storageSizeBytes == null) {
+ return Optional.empty();
+ }
+ return storageSizeBytes;
+ }
+
+ @JsonIgnore
+ public Optional> getMetadata() {
+ if (metadata == null) {
+ return Optional.empty();
+ }
+ return metadata;
+ }
+
+ @JsonIgnore
+ public Optional getIdempotencyKey() {
+ if (idempotencyKey == null) {
+ return Optional.empty();
+ }
+ return idempotencyKey;
+ }
+
+ @JsonIgnore
+ public Optional getFailureReason() {
+ if (failureReason == null) {
+ return Optional.empty();
+ }
+ return failureReason;
+ }
+
+ @JsonProperty("thumbnailState")
+ public Optional getThumbnailState() {
+ return thumbnailState;
+ }
+
+ @JsonIgnore
+ public Optional getThumbnailUrl() {
+ if (thumbnailUrl == null) {
+ return Optional.empty();
+ }
+ return thumbnailUrl;
+ }
+
+ @JsonProperty("createdAt")
+ public double getCreatedAt() {
+ return createdAt;
+ }
+
+ @JsonProperty("updatedAt")
+ public double getUpdatedAt() {
+ return updatedAt;
+ }
+
+ @JsonIgnore
+ public Optional getCreatedBy() {
+ if (createdBy == null) {
+ return Optional.empty();
+ }
+ return createdBy;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("baseSha")
+ private Optional _getBaseSha() {
+ return baseSha;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("storageSizeBytes")
+ private Optional _getStorageSizeBytes() {
+ return storageSizeBytes;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("metadata")
+ private Optional> _getMetadata() {
+ return metadata;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("idempotencyKey")
+ private Optional _getIdempotencyKey() {
+ return idempotencyKey;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("failureReason")
+ private Optional _getFailureReason() {
+ return failureReason;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("thumbnailUrl")
+ private Optional _getThumbnailUrl() {
+ return thumbnailUrl;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("createdBy")
+ private Optional _getCreatedBy() {
+ return createdBy;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFrom200ResponseDocument
+ && equalTo((DocumentsImportFrom200ResponseDocument) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFrom200ResponseDocument other) {
+ return id.equals(other.id)
+ && tenantId.equals(other.tenantId)
+ && state.equals(other.state)
+ && baseSha.equals(other.baseSha)
+ && storageSizeBytes.equals(other.storageSizeBytes)
+ && metadata.equals(other.metadata)
+ && idempotencyKey.equals(other.idempotencyKey)
+ && failureReason.equals(other.failureReason)
+ && thumbnailState.equals(other.thumbnailState)
+ && thumbnailUrl.equals(other.thumbnailUrl)
+ && createdAt == other.createdAt
+ && updatedAt == other.updatedAt
+ && createdBy.equals(other.createdBy);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(
+ this.id,
+ this.tenantId,
+ this.state,
+ this.baseSha,
+ this.storageSizeBytes,
+ this.metadata,
+ this.idempotencyKey,
+ this.failureReason,
+ this.thumbnailState,
+ this.thumbnailUrl,
+ this.createdAt,
+ this.updatedAt,
+ this.createdBy);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static IdStage builder() {
+ return new Builder();
+ }
+
+ public interface IdStage {
+ TenantIdStage id(@NotNull String id);
+
+ Builder from(DocumentsImportFrom200ResponseDocument other);
+ }
+
+ public interface TenantIdStage {
+ StateStage tenantId(@NotNull String tenantId);
+ }
+
+ public interface StateStage {
+ CreatedAtStage state(@NotNull DocumentsImportFrom200ResponseDocumentState state);
+ }
+
+ public interface CreatedAtStage {
+ UpdatedAtStage createdAt(double createdAt);
+ }
+
+ public interface UpdatedAtStage {
+ _FinalStage updatedAt(double updatedAt);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFrom200ResponseDocument build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+
+ _FinalStage baseSha(Optional baseSha);
+
+ _FinalStage baseSha(String baseSha);
+
+ _FinalStage baseSha(Nullable baseSha);
+
+ _FinalStage storageSizeBytes(Optional storageSizeBytes);
+
+ _FinalStage storageSizeBytes(Double storageSizeBytes);
+
+ _FinalStage storageSizeBytes(Nullable storageSizeBytes);
+
+ _FinalStage metadata(Optional> metadata);
+
+ _FinalStage metadata(Map metadata);
+
+ _FinalStage metadata(Nullable> metadata);
+
+ _FinalStage idempotencyKey(Optional idempotencyKey);
+
+ _FinalStage idempotencyKey(String idempotencyKey);
+
+ _FinalStage idempotencyKey(Nullable idempotencyKey);
+
+ _FinalStage failureReason(Optional failureReason);
+
+ _FinalStage failureReason(String failureReason);
+
+ _FinalStage failureReason(Nullable failureReason);
+
+ _FinalStage thumbnailState(Optional thumbnailState);
+
+ _FinalStage thumbnailState(DocumentsImportFrom200ResponseDocumentThumbnailState thumbnailState);
+
+ _FinalStage thumbnailUrl(Optional thumbnailUrl);
+
+ _FinalStage thumbnailUrl(String thumbnailUrl);
+
+ _FinalStage thumbnailUrl(Nullable thumbnailUrl);
+
+ _FinalStage createdBy(Optional createdBy);
+
+ _FinalStage createdBy(String createdBy);
+
+ _FinalStage createdBy(Nullable createdBy);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder
+ implements IdStage, TenantIdStage, StateStage, CreatedAtStage, UpdatedAtStage, _FinalStage {
+ private String id;
+
+ private String tenantId;
+
+ private DocumentsImportFrom200ResponseDocumentState state;
+
+ private double createdAt;
+
+ private double updatedAt;
+
+ private Optional createdBy = Optional.empty();
+
+ private Optional thumbnailUrl = Optional.empty();
+
+ private Optional thumbnailState = Optional.empty();
+
+ private Optional failureReason = Optional.empty();
+
+ private Optional idempotencyKey = Optional.empty();
+
+ private Optional> metadata = Optional.empty();
+
+ private Optional storageSizeBytes = Optional.empty();
+
+ private Optional baseSha = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFrom200ResponseDocument other) {
+ id(other.getId());
+ tenantId(other.getTenantId());
+ state(other.getState());
+ baseSha(other.getBaseSha());
+ storageSizeBytes(other.getStorageSizeBytes());
+ metadata(other.getMetadata());
+ idempotencyKey(other.getIdempotencyKey());
+ failureReason(other.getFailureReason());
+ thumbnailState(other.getThumbnailState());
+ thumbnailUrl(other.getThumbnailUrl());
+ createdAt(other.getCreatedAt());
+ updatedAt(other.getUpdatedAt());
+ createdBy(other.getCreatedBy());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("id")
+ public TenantIdStage id(@NotNull String id) {
+ this.id = Objects.requireNonNull(id, "id must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("tenantId")
+ public StateStage tenantId(@NotNull String tenantId) {
+ this.tenantId = Objects.requireNonNull(tenantId, "tenantId must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("state")
+ public CreatedAtStage state(@NotNull DocumentsImportFrom200ResponseDocumentState state) {
+ this.state = Objects.requireNonNull(state, "state must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("createdAt")
+ public UpdatedAtStage createdAt(double createdAt) {
+ this.createdAt = createdAt;
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("updatedAt")
+ public _FinalStage updatedAt(double updatedAt) {
+ this.updatedAt = updatedAt;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage createdBy(Nullable createdBy) {
+ if (createdBy.isNull()) {
+ this.createdBy = null;
+ } else if (createdBy.isEmpty()) {
+ this.createdBy = Optional.empty();
+ } else {
+ this.createdBy = Optional.of(createdBy.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage createdBy(String createdBy) {
+ this.createdBy = Optional.ofNullable(createdBy);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "createdBy", nulls = Nulls.SKIP)
+ public _FinalStage createdBy(Optional createdBy) {
+ this.createdBy = createdBy;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage thumbnailUrl(Nullable thumbnailUrl) {
+ if (thumbnailUrl.isNull()) {
+ this.thumbnailUrl = null;
+ } else if (thumbnailUrl.isEmpty()) {
+ this.thumbnailUrl = Optional.empty();
+ } else {
+ this.thumbnailUrl = Optional.of(thumbnailUrl.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage thumbnailUrl(String thumbnailUrl) {
+ this.thumbnailUrl = Optional.ofNullable(thumbnailUrl);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "thumbnailUrl", nulls = Nulls.SKIP)
+ public _FinalStage thumbnailUrl(Optional thumbnailUrl) {
+ this.thumbnailUrl = thumbnailUrl;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage thumbnailState(DocumentsImportFrom200ResponseDocumentThumbnailState thumbnailState) {
+ this.thumbnailState = Optional.ofNullable(thumbnailState);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "thumbnailState", nulls = Nulls.SKIP)
+ public _FinalStage thumbnailState(
+ Optional thumbnailState) {
+ this.thumbnailState = thumbnailState;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage failureReason(Nullable failureReason) {
+ if (failureReason.isNull()) {
+ this.failureReason = null;
+ } else if (failureReason.isEmpty()) {
+ this.failureReason = Optional.empty();
+ } else {
+ this.failureReason = Optional.of(failureReason.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage failureReason(String failureReason) {
+ this.failureReason = Optional.ofNullable(failureReason);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "failureReason", nulls = Nulls.SKIP)
+ public _FinalStage failureReason(Optional failureReason) {
+ this.failureReason = failureReason;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage idempotencyKey(Nullable idempotencyKey) {
+ if (idempotencyKey.isNull()) {
+ this.idempotencyKey = null;
+ } else if (idempotencyKey.isEmpty()) {
+ this.idempotencyKey = Optional.empty();
+ } else {
+ this.idempotencyKey = Optional.of(idempotencyKey.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage idempotencyKey(String idempotencyKey) {
+ this.idempotencyKey = Optional.ofNullable(idempotencyKey);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "idempotencyKey", nulls = Nulls.SKIP)
+ public _FinalStage idempotencyKey(Optional idempotencyKey) {
+ this.idempotencyKey = idempotencyKey;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage metadata(Nullable> metadata) {
+ if (metadata.isNull()) {
+ this.metadata = null;
+ } else if (metadata.isEmpty()) {
+ this.metadata = Optional.empty();
+ } else {
+ this.metadata = Optional.of(metadata.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage metadata(Map metadata) {
+ this.metadata = Optional.ofNullable(metadata);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "metadata", nulls = Nulls.SKIP)
+ public _FinalStage metadata(Optional> metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage storageSizeBytes(Nullable storageSizeBytes) {
+ if (storageSizeBytes.isNull()) {
+ this.storageSizeBytes = null;
+ } else if (storageSizeBytes.isEmpty()) {
+ this.storageSizeBytes = Optional.empty();
+ } else {
+ this.storageSizeBytes = Optional.of(storageSizeBytes.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage storageSizeBytes(Double storageSizeBytes) {
+ this.storageSizeBytes = Optional.ofNullable(storageSizeBytes);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "storageSizeBytes", nulls = Nulls.SKIP)
+ public _FinalStage storageSizeBytes(Optional storageSizeBytes) {
+ this.storageSizeBytes = storageSizeBytes;
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage baseSha(Nullable baseSha) {
+ if (baseSha.isNull()) {
+ this.baseSha = null;
+ } else if (baseSha.isEmpty()) {
+ this.baseSha = Optional.empty();
+ } else {
+ this.baseSha = Optional.of(baseSha.get());
+ }
+ return this;
+ }
+
+ @java.lang.Override
+ public _FinalStage baseSha(String baseSha) {
+ this.baseSha = Optional.ofNullable(baseSha);
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter(value = "baseSha", nulls = Nulls.SKIP)
+ public _FinalStage baseSha(Optional baseSha) {
+ this.baseSha = baseSha;
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFrom200ResponseDocument build() {
+ return new DocumentsImportFrom200ResponseDocument(
+ id,
+ tenantId,
+ state,
+ baseSha,
+ storageSizeBytes,
+ metadata,
+ idempotencyKey,
+ failureReason,
+ thumbnailState,
+ thumbnailUrl,
+ createdAt,
+ updatedAt,
+ createdBy,
+ additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentState.java b/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentState.java
new file mode 100644
index 0000000..bcb2b07
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentState.java
@@ -0,0 +1,108 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public final class DocumentsImportFrom200ResponseDocumentState {
+ public static final DocumentsImportFrom200ResponseDocumentState FAILED =
+ new DocumentsImportFrom200ResponseDocumentState(Value.FAILED, "failed");
+
+ public static final DocumentsImportFrom200ResponseDocumentState DELETING =
+ new DocumentsImportFrom200ResponseDocumentState(Value.DELETING, "deleting");
+
+ public static final DocumentsImportFrom200ResponseDocumentState PENDING =
+ new DocumentsImportFrom200ResponseDocumentState(Value.PENDING, "pending");
+
+ public static final DocumentsImportFrom200ResponseDocumentState READY =
+ new DocumentsImportFrom200ResponseDocumentState(Value.READY, "ready");
+
+ private final Value value;
+
+ private final String string;
+
+ DocumentsImportFrom200ResponseDocumentState(Value value, String string) {
+ this.value = value;
+ this.string = string;
+ }
+
+ public Value getEnumValue() {
+ return value;
+ }
+
+ @java.lang.Override
+ @JsonValue
+ public String toString() {
+ return this.string;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ return (this == other)
+ || (other instanceof DocumentsImportFrom200ResponseDocumentState
+ && this.string.equals(((DocumentsImportFrom200ResponseDocumentState) other).string));
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return this.string.hashCode();
+ }
+
+ public T visit(Visitor visitor) {
+ switch (value) {
+ case FAILED:
+ return visitor.visitFailed();
+ case DELETING:
+ return visitor.visitDeleting();
+ case PENDING:
+ return visitor.visitPending();
+ case READY:
+ return visitor.visitReady();
+ case UNKNOWN:
+ default:
+ return visitor.visitUnknown(string);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static DocumentsImportFrom200ResponseDocumentState valueOf(String value) {
+ switch (value) {
+ case "failed":
+ return FAILED;
+ case "deleting":
+ return DELETING;
+ case "pending":
+ return PENDING;
+ case "ready":
+ return READY;
+ default:
+ return new DocumentsImportFrom200ResponseDocumentState(Value.UNKNOWN, value);
+ }
+ }
+
+ public enum Value {
+ PENDING,
+
+ READY,
+
+ FAILED,
+
+ DELETING,
+
+ UNKNOWN
+ }
+
+ public interface Visitor {
+ T visitPending();
+
+ T visitReady();
+
+ T visitFailed();
+
+ T visitDeleting();
+
+ T visitUnknown(String unknownType);
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentThumbnailState.java b/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentThumbnailState.java
new file mode 100644
index 0000000..fe1c66c
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom200ResponseDocumentThumbnailState.java
@@ -0,0 +1,108 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public final class DocumentsImportFrom200ResponseDocumentThumbnailState {
+ public static final DocumentsImportFrom200ResponseDocumentThumbnailState FAILED =
+ new DocumentsImportFrom200ResponseDocumentThumbnailState(Value.FAILED, "failed");
+
+ public static final DocumentsImportFrom200ResponseDocumentThumbnailState PENDING =
+ new DocumentsImportFrom200ResponseDocumentThumbnailState(Value.PENDING, "pending");
+
+ public static final DocumentsImportFrom200ResponseDocumentThumbnailState READY =
+ new DocumentsImportFrom200ResponseDocumentThumbnailState(Value.READY, "ready");
+
+ public static final DocumentsImportFrom200ResponseDocumentThumbnailState LOCKED =
+ new DocumentsImportFrom200ResponseDocumentThumbnailState(Value.LOCKED, "locked");
+
+ private final Value value;
+
+ private final String string;
+
+ DocumentsImportFrom200ResponseDocumentThumbnailState(Value value, String string) {
+ this.value = value;
+ this.string = string;
+ }
+
+ public Value getEnumValue() {
+ return value;
+ }
+
+ @java.lang.Override
+ @JsonValue
+ public String toString() {
+ return this.string;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ return (this == other)
+ || (other instanceof DocumentsImportFrom200ResponseDocumentThumbnailState
+ && this.string.equals(((DocumentsImportFrom200ResponseDocumentThumbnailState) other).string));
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return this.string.hashCode();
+ }
+
+ public T visit(Visitor visitor) {
+ switch (value) {
+ case FAILED:
+ return visitor.visitFailed();
+ case PENDING:
+ return visitor.visitPending();
+ case READY:
+ return visitor.visitReady();
+ case LOCKED:
+ return visitor.visitLocked();
+ case UNKNOWN:
+ default:
+ return visitor.visitUnknown(string);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static DocumentsImportFrom200ResponseDocumentThumbnailState valueOf(String value) {
+ switch (value) {
+ case "failed":
+ return FAILED;
+ case "pending":
+ return PENDING;
+ case "ready":
+ return READY;
+ case "locked":
+ return LOCKED;
+ default:
+ return new DocumentsImportFrom200ResponseDocumentThumbnailState(Value.UNKNOWN, value);
+ }
+ }
+
+ public enum Value {
+ PENDING,
+
+ READY,
+
+ LOCKED,
+
+ FAILED,
+
+ UNKNOWN
+ }
+
+ public interface Visitor {
+ T visitPending();
+
+ T visitReady();
+
+ T visitLocked();
+
+ T visitFailed();
+
+ T visitUnknown(String unknownType);
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom200ResponseTag.java b/src/main/java/api/types/DocumentsImportFrom200ResponseTag.java
new file mode 100644
index 0000000..57cff1b
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom200ResponseTag.java
@@ -0,0 +1,97 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public final class DocumentsImportFrom200ResponseTag {
+ public static final DocumentsImportFrom200ResponseTag IMPORTED =
+ new DocumentsImportFrom200ResponseTag(Value.IMPORTED, "imported");
+
+ public static final DocumentsImportFrom200ResponseTag DEDUPED =
+ new DocumentsImportFrom200ResponseTag(Value.DEDUPED, "deduped");
+
+ public static final DocumentsImportFrom200ResponseTag ACCEPTED =
+ new DocumentsImportFrom200ResponseTag(Value.ACCEPTED, "accepted");
+
+ private final Value value;
+
+ private final String string;
+
+ DocumentsImportFrom200ResponseTag(Value value, String string) {
+ this.value = value;
+ this.string = string;
+ }
+
+ public Value getEnumValue() {
+ return value;
+ }
+
+ @java.lang.Override
+ @JsonValue
+ public String toString() {
+ return this.string;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ return (this == other)
+ || (other instanceof DocumentsImportFrom200ResponseTag
+ && this.string.equals(((DocumentsImportFrom200ResponseTag) other).string));
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return this.string.hashCode();
+ }
+
+ public T visit(Visitor visitor) {
+ switch (value) {
+ case IMPORTED:
+ return visitor.visitImported();
+ case DEDUPED:
+ return visitor.visitDeduped();
+ case ACCEPTED:
+ return visitor.visitAccepted();
+ case UNKNOWN:
+ default:
+ return visitor.visitUnknown(string);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static DocumentsImportFrom200ResponseTag valueOf(String value) {
+ switch (value) {
+ case "imported":
+ return IMPORTED;
+ case "deduped":
+ return DEDUPED;
+ case "accepted":
+ return ACCEPTED;
+ default:
+ return new DocumentsImportFrom200ResponseTag(Value.UNKNOWN, value);
+ }
+ }
+
+ public enum Value {
+ IMPORTED,
+
+ DEDUPED,
+
+ ACCEPTED,
+
+ UNKNOWN
+ }
+
+ public interface Visitor {
+ T visitImported();
+
+ T visitDeduped();
+
+ T visitAccepted();
+
+ T visitUnknown(String unknownType);
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom202Response.java b/src/main/java/api/types/DocumentsImportFrom202Response.java
new file mode 100644
index 0000000..c8bfb4e
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom202Response.java
@@ -0,0 +1,143 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFrom202Response.Builder.class)
+public final class DocumentsImportFrom202Response {
+ private final DocumentsImportFrom202ResponseTag tag;
+
+ private final DocumentsImportFrom202ResponseDocument document;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFrom202Response(
+ DocumentsImportFrom202ResponseTag tag,
+ DocumentsImportFrom202ResponseDocument document,
+ Map additionalProperties) {
+ this.tag = tag;
+ this.document = document;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("tag")
+ public DocumentsImportFrom202ResponseTag getTag() {
+ return tag;
+ }
+
+ @JsonProperty("document")
+ public DocumentsImportFrom202ResponseDocument getDocument() {
+ return document;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFrom202Response && equalTo((DocumentsImportFrom202Response) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFrom202Response other) {
+ return tag.equals(other.tag) && document.equals(other.document);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.tag, this.document);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static TagStage builder() {
+ return new Builder();
+ }
+
+ public interface TagStage {
+ DocumentStage tag(@NotNull DocumentsImportFrom202ResponseTag tag);
+
+ Builder from(DocumentsImportFrom202Response other);
+ }
+
+ public interface DocumentStage {
+ _FinalStage document(@NotNull DocumentsImportFrom202ResponseDocument document);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFrom202Response build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder implements TagStage, DocumentStage, _FinalStage {
+ private DocumentsImportFrom202ResponseTag tag;
+
+ private DocumentsImportFrom202ResponseDocument document;
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ @java.lang.Override
+ public Builder from(DocumentsImportFrom202Response other) {
+ tag(other.getTag());
+ document(other.getDocument());
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("tag")
+ public DocumentStage tag(@NotNull DocumentsImportFrom202ResponseTag tag) {
+ this.tag = Objects.requireNonNull(tag, "tag must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ @JsonSetter("document")
+ public _FinalStage document(@NotNull DocumentsImportFrom202ResponseDocument document) {
+ this.document = Objects.requireNonNull(document, "document must not be null");
+ return this;
+ }
+
+ @java.lang.Override
+ public DocumentsImportFrom202Response build() {
+ return new DocumentsImportFrom202Response(tag, document, additionalProperties);
+ }
+
+ @java.lang.Override
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ @java.lang.Override
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/api/types/DocumentsImportFrom202ResponseDocument.java b/src/main/java/api/types/DocumentsImportFrom202ResponseDocument.java
new file mode 100644
index 0000000..1541632
--- /dev/null
+++ b/src/main/java/api/types/DocumentsImportFrom202ResponseDocument.java
@@ -0,0 +1,652 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.cloudpdf.api.types;
+
+import com.cloudpdf.api.core.Nullable;
+import com.cloudpdf.api.core.NullableNonemptyFilter;
+import com.cloudpdf.api.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import org.jetbrains.annotations.NotNull;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = DocumentsImportFrom202ResponseDocument.Builder.class)
+public final class DocumentsImportFrom202ResponseDocument {
+ private final String id;
+
+ private final String tenantId;
+
+ private final DocumentsImportFrom202ResponseDocumentState state;
+
+ private final Optional baseSha;
+
+ private final Optional storageSizeBytes;
+
+ private final Optional> metadata;
+
+ private final Optional idempotencyKey;
+
+ private final Optional failureReason;
+
+ private final Optional thumbnailState;
+
+ private final Optional thumbnailUrl;
+
+ private final double createdAt;
+
+ private final double updatedAt;
+
+ private final Optional createdBy;
+
+ private final Map additionalProperties;
+
+ private DocumentsImportFrom202ResponseDocument(
+ String id,
+ String tenantId,
+ DocumentsImportFrom202ResponseDocumentState state,
+ Optional baseSha,
+ Optional storageSizeBytes,
+ Optional> metadata,
+ Optional idempotencyKey,
+ Optional failureReason,
+ Optional thumbnailState,
+ Optional thumbnailUrl,
+ double createdAt,
+ double updatedAt,
+ Optional createdBy,
+ Map additionalProperties) {
+ this.id = id;
+ this.tenantId = tenantId;
+ this.state = state;
+ this.baseSha = baseSha;
+ this.storageSizeBytes = storageSizeBytes;
+ this.metadata = metadata;
+ this.idempotencyKey = idempotencyKey;
+ this.failureReason = failureReason;
+ this.thumbnailState = thumbnailState;
+ this.thumbnailUrl = thumbnailUrl;
+ this.createdAt = createdAt;
+ this.updatedAt = updatedAt;
+ this.createdBy = createdBy;
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonProperty("id")
+ public String getId() {
+ return id;
+ }
+
+ @JsonProperty("tenantId")
+ public String getTenantId() {
+ return tenantId;
+ }
+
+ @JsonProperty("state")
+ public DocumentsImportFrom202ResponseDocumentState getState() {
+ return state;
+ }
+
+ @JsonIgnore
+ public Optional getBaseSha() {
+ if (baseSha == null) {
+ return Optional.empty();
+ }
+ return baseSha;
+ }
+
+ @JsonIgnore
+ public Optional getStorageSizeBytes() {
+ if (storageSizeBytes == null) {
+ return Optional.empty();
+ }
+ return storageSizeBytes;
+ }
+
+ @JsonIgnore
+ public Optional> getMetadata() {
+ if (metadata == null) {
+ return Optional.empty();
+ }
+ return metadata;
+ }
+
+ @JsonIgnore
+ public Optional getIdempotencyKey() {
+ if (idempotencyKey == null) {
+ return Optional.empty();
+ }
+ return idempotencyKey;
+ }
+
+ @JsonIgnore
+ public Optional getFailureReason() {
+ if (failureReason == null) {
+ return Optional.empty();
+ }
+ return failureReason;
+ }
+
+ @JsonProperty("thumbnailState")
+ public Optional getThumbnailState() {
+ return thumbnailState;
+ }
+
+ @JsonIgnore
+ public Optional getThumbnailUrl() {
+ if (thumbnailUrl == null) {
+ return Optional.empty();
+ }
+ return thumbnailUrl;
+ }
+
+ @JsonProperty("createdAt")
+ public double getCreatedAt() {
+ return createdAt;
+ }
+
+ @JsonProperty("updatedAt")
+ public double getUpdatedAt() {
+ return updatedAt;
+ }
+
+ @JsonIgnore
+ public Optional getCreatedBy() {
+ if (createdBy == null) {
+ return Optional.empty();
+ }
+ return createdBy;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("baseSha")
+ private Optional _getBaseSha() {
+ return baseSha;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("storageSizeBytes")
+ private Optional _getStorageSizeBytes() {
+ return storageSizeBytes;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("metadata")
+ private Optional> _getMetadata() {
+ return metadata;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("idempotencyKey")
+ private Optional _getIdempotencyKey() {
+ return idempotencyKey;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("failureReason")
+ private Optional _getFailureReason() {
+ return failureReason;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("thumbnailUrl")
+ private Optional _getThumbnailUrl() {
+ return thumbnailUrl;
+ }
+
+ @JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = NullableNonemptyFilter.class)
+ @JsonProperty("createdBy")
+ private Optional _getCreatedBy() {
+ return createdBy;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof DocumentsImportFrom202ResponseDocument
+ && equalTo((DocumentsImportFrom202ResponseDocument) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(DocumentsImportFrom202ResponseDocument other) {
+ return id.equals(other.id)
+ && tenantId.equals(other.tenantId)
+ && state.equals(other.state)
+ && baseSha.equals(other.baseSha)
+ && storageSizeBytes.equals(other.storageSizeBytes)
+ && metadata.equals(other.metadata)
+ && idempotencyKey.equals(other.idempotencyKey)
+ && failureReason.equals(other.failureReason)
+ && thumbnailState.equals(other.thumbnailState)
+ && thumbnailUrl.equals(other.thumbnailUrl)
+ && createdAt == other.createdAt
+ && updatedAt == other.updatedAt
+ && createdBy.equals(other.createdBy);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(
+ this.id,
+ this.tenantId,
+ this.state,
+ this.baseSha,
+ this.storageSizeBytes,
+ this.metadata,
+ this.idempotencyKey,
+ this.failureReason,
+ this.thumbnailState,
+ this.thumbnailUrl,
+ this.createdAt,
+ this.updatedAt,
+ this.createdBy);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static IdStage builder() {
+ return new Builder();
+ }
+
+ public interface IdStage {
+ TenantIdStage id(@NotNull String id);
+
+ Builder from(DocumentsImportFrom202ResponseDocument other);
+ }
+
+ public interface TenantIdStage {
+ StateStage tenantId(@NotNull String tenantId);
+ }
+
+ public interface StateStage {
+ CreatedAtStage state(@NotNull DocumentsImportFrom202ResponseDocumentState state);
+ }
+
+ public interface CreatedAtStage {
+ UpdatedAtStage createdAt(double createdAt);
+ }
+
+ public interface UpdatedAtStage {
+ _FinalStage updatedAt(double updatedAt);
+ }
+
+ public interface _FinalStage {
+ DocumentsImportFrom202ResponseDocument build();
+
+ _FinalStage additionalProperty(String key, Object value);
+
+ _FinalStage additionalProperties(Map additionalProperties);
+
+ _FinalStage baseSha(Optional baseSha);
+
+ _FinalStage baseSha(String baseSha);
+
+ _FinalStage baseSha(Nullable baseSha);
+
+ _FinalStage storageSizeBytes(Optional storageSizeBytes);
+
+ _FinalStage storageSizeBytes(Double storageSizeBytes);
+
+ _FinalStage storageSizeBytes(Nullable storageSizeBytes);
+
+ _FinalStage metadata(Optional> metadata);
+
+ _FinalStage metadata(Map metadata);
+
+ _FinalStage metadata(Nullable> metadata);
+
+ _FinalStage idempotencyKey(Optional idempotencyKey);
+
+ _FinalStage idempotencyKey(String idempotencyKey);
+
+ _FinalStage idempotencyKey(Nullable idempotencyKey);
+
+ _FinalStage failureReason(Optional failureReason);
+
+ _FinalStage failureReason(String failureReason);
+
+ _FinalStage failureReason(Nullable failureReason);
+
+ _FinalStage thumbnailState(Optional thumbnailState);
+
+ _FinalStage thumbnailState(DocumentsImportFrom202ResponseDocumentThumbnailState thumbnailState);
+
+ _FinalStage thumbnailUrl(Optional