diff --git a/.fern/metadata.json b/.fern/metadata.json
index 4701f11..5bae4e5 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -10,10 +10,10 @@
"base-exception-class-name": "CloudPDFException",
"base-api-exception-class-name": "CloudPDFApiException"
},
- "originGitCommit": "32635f40577b214f6a6b3189a2271425c3a574fd",
+ "originGitCommit": "1345fb7a45ee660a352774d29decce25cb54b8ea",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
- "requestedVersion": "3.0.0-next.6",
+ "requestedVersion": "3.0.0-next.7",
"ciProvider": "github",
- "sdkVersion": "3.0.0-next.6"
+ "sdkVersion": "3.0.0-next.7"
}
\ No newline at end of file
diff --git a/cloudpdf-generation.json b/cloudpdf-generation.json
index 3a729ba..bdc208c 100644
--- a/cloudpdf-generation.json
+++ b/cloudpdf-generation.json
@@ -1,12 +1,12 @@
{
"language": "csharp",
- "canonicalVersion": "3.0.0-next.6",
- "sdkVersion": "3.0.0-next.6",
+ "canonicalVersion": "3.0.0-next.7",
+ "sdkVersion": "3.0.0-next.7",
"source": {
"repository": "embedpdf/embed-pdf-viewer",
"openapi": "cloudpdf/contract/openapi.json",
- "openapiSha256": "b3e236a932673e27e05825352e1bc3675369d7505040bf7d7760e542aae8d38d",
- "gitCommit": "32635f40577b214f6a6b3189a2271425c3a574fd",
+ "openapiSha256": "f6fc610bfd193f278a7e8ec063d9e96b8fef86bdec7ade5e7bc4b19879673147",
+ "gitCommit": "1345fb7a45ee660a352774d29decce25cb54b8ea",
"gitCommitIsDirty": false
},
"fern": {
diff --git a/src/CloudPDF/CloudPDF.csproj b/src/CloudPDF/CloudPDF.csproj
index 1631bb2..d9a48f9 100644
--- a/src/CloudPDF/CloudPDF.csproj
+++ b/src/CloudPDF/CloudPDF.csproj
@@ -11,7 +11,7 @@
enable
12
enable
- 3.0.0-next.6
+ 3.0.0-next.7
3.0.0.0
3.0.0.0
README.md
diff --git a/src/CloudPDF/Core/Public/Version.cs b/src/CloudPDF/Core/Public/Version.cs
index 71c600a..ba0eb12 100644
--- a/src/CloudPDF/Core/Public/Version.cs
+++ b/src/CloudPDF/Core/Public/Version.cs
@@ -3,5 +3,5 @@ namespace CloudPDF;
[Serializable]
internal class Version
{
- public const string Current = "3.0.0-next.6";
+ public const string Current = "3.0.0-next.7";
}
diff --git a/src/CloudPDF/Documents/Requests/DocumentsImportFromRequest.cs b/src/CloudPDF/Documents/Requests/DocumentsImportFromRequest.cs
index eceb67b..52fb269 100644
--- a/src/CloudPDF/Documents/Requests/DocumentsImportFromRequest.cs
+++ b/src/CloudPDF/Documents/Requests/DocumentsImportFromRequest.cs
@@ -9,24 +9,39 @@ public record DocumentsImportFromRequest
[JsonIgnore]
public required string TenantId { get; set; }
+ ///
+ /// Where CloudPDF pulls the bytes from. The two shapes differ in WHO supplies the authority to read, not in which storage vendor holds the file.
+ ///
[JsonPropertyName("source")]
public required DocumentsImportFromRequestSource Source { get; set; }
+ ///
+ /// Integrity pins, enforced when present. When absent, the server-observed values become authoritative.
+ ///
[JsonPropertyName("expected")]
public DocumentsImportFromRequestExpected? Expected { get; set; }
[JsonPropertyName("metadata")]
public Dictionary? Metadata { get; set; }
+ ///
+ /// Retrying with the same key resumes the same document rather than importing a second copy — including after a 502.
+ ///
[JsonPropertyName("idempotencyKey")]
public string? IdempotencyKey { get; set; }
+ ///
+ /// always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice.
+ ///
[JsonPropertyName("dedupMode")]
public DocumentsImportFromRequestDedupMode? DedupMode { get; set; }
[JsonPropertyName("docId")]
public string? DocId { get; set; }
+ ///
+ /// sync (default) holds the response open for the whole transfer. async answers 202 with the document pending and transfers in the background; it requires a connection source, and filesystem connections additionally require expected.sha256.
+ ///
[JsonPropertyName("mode")]
public DocumentsImportFromRequestMode? Mode { get; set; }
diff --git a/src/CloudPDF/Documents/Requests/DocumentsInitRequest.cs b/src/CloudPDF/Documents/Requests/DocumentsInitRequest.cs
index 2a6f88c..b3bd7f6 100644
--- a/src/CloudPDF/Documents/Requests/DocumentsInitRequest.cs
+++ b/src/CloudPDF/Documents/Requests/DocumentsInitRequest.cs
@@ -21,6 +21,9 @@ public record DocumentsInitRequest
[JsonPropertyName("idempotencyKey")]
public string? IdempotencyKey { get; set; }
+ ///
+ /// always-create (default) creates a new document every time. reuse-existing returns a document that already holds the same content instead of storing it twice.
+ ///
[JsonPropertyName("dedupMode")]
public DocumentsInitRequestDedupMode? DedupMode { get; set; }
diff --git a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestExpected.cs b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestExpected.cs
index db8f9f8..0802ca2 100644
--- a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestExpected.cs
+++ b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestExpected.cs
@@ -4,6 +4,9 @@
namespace CloudPDF;
+///
+/// Integrity pins, enforced when present. When absent, the server-observed values become authoritative.
+///
[Serializable]
public record DocumentsImportFromRequestExpected : IJsonOnDeserialized
{
@@ -11,9 +14,15 @@ public record DocumentsImportFromRequestExpected : IJsonOnDeserialized
private readonly IDictionary _extensionData =
new Dictionary();
+ ///
+ /// Checked against the source's declared Content-Length before the transfer.
+ ///
[JsonPropertyName("sizeBytes")]
public int? SizeBytes { get; set; }
+ ///
+ /// Checked against the server-observed digest after the transfer. Required when dedupMode is reuse-existing.
+ ///
[JsonPropertyName("sha256")]
public string? Sha256 { get; set; }
diff --git a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSource.cs b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSource.cs
index 2a68934..ac106b2 100644
--- a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSource.cs
+++ b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSource.cs
@@ -8,6 +8,9 @@
namespace CloudPDF;
+///
+/// Where CloudPDF pulls the bytes from. The two shapes differ in WHO supplies the authority to read, not in which storage vendor holds the file.
+///
[JsonConverter(typeof(DocumentsImportFromRequestSource.JsonConverter))]
[Serializable]
public record DocumentsImportFromRequestSource
diff --git a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceConnection.cs b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceConnection.cs
index 865ab40..c92763b 100644
--- a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceConnection.cs
+++ b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceConnection.cs
@@ -4,6 +4,9 @@
namespace CloudPDF;
+///
+/// The operator pre-registered the authority: the request names a connection and a key inside it. Which provider backs the connection (S3, GCS, Azure Blob, filesystem, ...) is deployment configuration, never wire surface.
+///
[Serializable]
public record DocumentsImportFromRequestSourceConnection : IJsonOnDeserialized
{
@@ -11,12 +14,21 @@ public record DocumentsImportFromRequestSourceConnection : IJsonOnDeserialized
private readonly IDictionary _extensionData =
new Dictionary();
+ ///
+ /// The operator-registered storage connection to read from.
+ ///
[JsonPropertyName("connectionId")]
public required string ConnectionId { get; set; }
+ ///
+ /// The object key to read, inside the connection's configured scope. At most 1024 UTF-8 bytes.
+ ///
[JsonPropertyName("key")]
public required string Key { get; set; }
+ ///
+ /// Pins a specific version of the object. Provider-interpreted (S3 VersionId, GCS generation, Azure version id); providers without versioning reject it.
+ ///
[JsonPropertyName("revision")]
public string? Revision { get; set; }
diff --git a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceUrl.cs b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceUrl.cs
index 0bac93e..116374b 100644
--- a/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceUrl.cs
+++ b/src/CloudPDF/Documents/Types/DocumentsImportFromRequestSourceUrl.cs
@@ -4,6 +4,9 @@
namespace CloudPDF;
+///
+/// The caller supplies the authority: a presigned S3/GCS/Azure/R2/MinIO GET, or any HTTPS endpoint the deployment import policy allows. The URL is a capability — treat it as a secret. CloudPDF never echoes its query string back in errors, logs, or stored failure reasons.
+///
[Serializable]
public record DocumentsImportFromRequestSourceUrl : IJsonOnDeserialized
{
@@ -11,6 +14,9 @@ public record DocumentsImportFromRequestSourceUrl : IJsonOnDeserialized
private readonly IDictionary _extensionData =
new Dictionary();
+ ///
+ /// The URL to fetch. Must be allowed by the deployment import policy (scheme, network range, size) and must declare a length.
+ ///
[JsonPropertyName("url")]
public required string Url { get; set; }