Skip to content

Latest commit

 

History

History
3623 lines (2656 loc) · 51.7 KB

reference.md

File metadata and controls

3623 lines (2656 loc) · 51.7 KB

Reference

Deployment

client.Deployment.LicenseStatusAsync() -> WithRawResponseTask<DeploymentLicenseStatusResponse>

🔌 Usage

await client.Deployment.LicenseStatusAsync();

Doc

client.Doc.HeadAsync(HeadDocRequest { ... }) -> WithRawResponseTask<DocHead200Response>

🔌 Usage

await client.Doc.HeadAsync(new HeadDocRequest { DocId = "docId" });

⚙️ Parameters

request: HeadDocRequest

client.Doc.ChangesAsync(DocChangesRequest { ... }) -> WithRawResponseTask<DocChanges200Response>

📝 Description

Each change stands on its own and names itself by opId: a refused change rolls back alone, and the answer lists every change in order, applied with its result or refused with its error. Asked again under its opId, a change gets the same answer, refusals included; a different change under an answered opId is refused (IdempotencyKeyReused). { opId, undoOf } undoes an earlier change of the caller, here or in an earlier request; an undo leaves alone what was changed since, and the undo of an undo redoes. A redaction, a flatten, a form repair or a completed signature ends undo for the changes before it (UndoUnavailable). Each op is checked against its own capability: annotation ops need doc.annotate.modify, form values doc.forms.fill, form structure doc.forms.modify, metadata doc.metadata.modify. Bytes (a stamp's drawing, an attached file, a signature's artwork) travel as multipart: a JSON body part, each op naming its files by role as resources: { <role>: '<key>' }, and each file as the part resource:<key>. At most 64 changes per request and 512 ops per change.

🔌 Usage

await client.Doc.ChangesAsync(
    new DocChangesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Changes = new List<DocChangesRequestChangesItem>()
        {
            new DocChangesRequestChangesItem { OpId = "opId" },
        },
    }
);

⚙️ Parameters

request: DocChangesRequest

client.Doc.DownloadAsync(DownloadDocRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Doc.DownloadAsync(new DownloadDocRequest { DocId = "docId", LayerName = "layerName" });

⚙️ Parameters

request: DownloadDocRequest

client.Doc.ManifestAsync(ManifestDocRequest { ... }) -> WithRawResponseTask<DocManifest200Response>

🔌 Usage

await client.Doc.ManifestAsync(new ManifestDocRequest { DocId = "docId", LayerName = "layerName" });

⚙️ Parameters

request: ManifestDocRequest

client.Doc.RenderAsync(RenderDocRequest { ... }) -> WithRawResponseTask<Stream>

📝 Description

Render parameters (viewport, format) pass as flat dotted query keys, e.g. ?viewport.kind=width&viewport.width=800; the full grammar is documented with the viewer.

🔌 Usage

await client.Doc.RenderAsync(
    new RenderDocRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
    }
);

⚙️ Parameters

request: RenderDocRequest

client.Doc.TextAsync(TextDocRequest { ... }) -> WithRawResponseTask<DocText200Response>

🔌 Usage

await client.Doc.TextAsync(
    new TextDocRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
    }
);

⚙️ Parameters

request: TextDocRequest

Shares

client.Shares.ExchangeAsync(SharesExchangeRequest { ... }) -> WithRawResponseTask<SharesExchange200Response>

📝 Description

Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until password is supplied. Mounted only when the deployment can sign (HS256 mode).

🔌 Usage

await client.Shares.ExchangeAsync(new SharesExchangeRequest { ShareToken = "shareToken" });

⚙️ Parameters

request: SharesExchangeRequest

client.Shares.ListAsync(ListSharesRequest { ... }) -> WithRawResponseTask<SharesList200Response>

🔌 Usage

await client.Shares.ListAsync(new ListSharesRequest { TenantId = "tenantId" });

⚙️ Parameters

request: ListSharesRequest

client.Shares.CreateAsync(SharesCreateRequest { ... }) -> WithRawResponseTask<SharesCreate200Response>

📝 Description

The returned share id is the public share token. Mounted only when the deployment can sign (HS256 mode) — exchange mints session JWTs, so grants exist only where minting does.

🔌 Usage

await client.Shares.CreateAsync(
    new SharesCreateRequest
    {
        TenantId = "tenantId",
        DocId = "docId",
        Scope = new List<string>() { "scope" },
    }
);

⚙️ Parameters

request: SharesCreateRequest

client.Shares.GetAsync(GetSharesRequest { ... }) -> WithRawResponseTask<SharesGet200Response>

🔌 Usage

await client.Shares.GetAsync(new GetSharesRequest { TenantId = "tenantId", ShareId = "shareId" });

⚙️ Parameters

request: GetSharesRequest

client.Shares.DeleteAsync(DeleteSharesRequest { ... }) -> WithRawResponseTask

🔌 Usage

await client.Shares.DeleteAsync(
    new DeleteSharesRequest { TenantId = "tenantId", ShareId = "shareId" }
);

⚙️ Parameters

request: DeleteSharesRequest

client.Shares.UpdateAsync(SharesUpdateRequest { ... }) -> WithRawResponseTask<SharesUpdate200Response>

🔌 Usage

await client.Shares.UpdateAsync(
    new SharesUpdateRequest { TenantId = "tenantId", ShareId = "shareId" }
);

⚙️ Parameters

request: SharesUpdateRequest

Tenants

client.Tenants.ListAsync(ListTenantsRequest { ... }) -> WithRawResponseTask<TenantsList200Response>

🔌 Usage

await client.Tenants.ListAsync(new ListTenantsRequest());

⚙️ Parameters

request: ListTenantsRequest

client.Tenants.CreateAsync(TenantsCreateRequest { ... }) -> WithRawResponseTask<TenantsCreate200Response>

🔌 Usage

await client.Tenants.CreateAsync(new TenantsCreateRequest { Id = "id" });

⚙️ Parameters

request: TenantsCreateRequest

client.Tenants.GetAsync(GetTenantsRequest { ... }) -> WithRawResponseTask<TenantsGet200Response>

🔌 Usage

await client.Tenants.GetAsync(new GetTenantsRequest { TenantId = "tenantId" });

⚙️ Parameters

request: GetTenantsRequest

client.Tenants.DeleteAsync(DeleteTenantsRequest { ... }) -> WithRawResponseTask

📝 Description

Destroys the tenant and everything in its namespace — documents, layers, stored bytes, audit history. Irreversible.

🔌 Usage

await client.Tenants.DeleteAsync(new DeleteTenantsRequest { TenantId = "tenantId" });

⚙️ Parameters

request: DeleteTenantsRequest

client.Tenants.ResumeAsync(ResumeTenantsRequest { ... }) -> WithRawResponseTask

🔌 Usage

await client.Tenants.ResumeAsync(new ResumeTenantsRequest { TenantId = "tenantId" });

⚙️ Parameters

request: ResumeTenantsRequest

client.Tenants.SuspendAsync(TenantsSuspendRequest { ... }) -> WithRawResponseTask

📝 Description

Instantly reversible with resume. The API token is exempt, so a suspended tenant can still be inspected, exported, resumed, or deleted.

🔌 Usage

await client.Tenants.SuspendAsync(new TenantsSuspendRequest { TenantId = "tenantId" });

⚙️ Parameters

request: TenantsSuspendRequest

client.Tenants.UsageAsync(UsageTenantsRequest { ... }) -> WithRawResponseTask<TenantsUsage200Response>

📝 Description

Facts only — no limits or billing state. Views count share exchanges plus authorized /v1/access grants, deduplicated across the two.

🔌 Usage

await client.Tenants.UsageAsync(new UsageTenantsRequest { TenantId = "tenantId" });

⚙️ Parameters

request: UsageTenantsRequest

Documents

client.Documents.ListAsync(ListDocumentsRequest { ... }) -> WithRawResponseTask<DocumentsList200Response>

🔌 Usage

await client.Documents.ListAsync(new ListDocumentsRequest { TenantId = "tenantId" });

⚙️ Parameters

request: ListDocumentsRequest

client.Documents.GetAsync(GetDocumentsRequest { ... }) -> WithRawResponseTask<DocumentsGet200Response>

🔌 Usage

await client.Documents.GetAsync(new GetDocumentsRequest { TenantId = "tenantId", Id = "id" });

⚙️ Parameters

request: GetDocumentsRequest

client.Documents.DeleteAsync(DeleteDocumentsRequest { ... }) -> WithRawResponseTask

🔌 Usage

await client.Documents.DeleteAsync(new DeleteDocumentsRequest { TenantId = "tenantId", Id = "id" });

⚙️ Parameters

request: DeleteDocumentsRequest

client.Documents.CommitAsync(DocumentsCommitRequest { ... }) -> WithRawResponseTask<DocumentsCommit200Response>

🔌 Usage

await client.Documents.CommitAsync(
    new DocumentsCommitRequest
    {
        TenantId = "tenantId",
        Id = "id",
        Sha256 = "sha256",
    }
);

⚙️ Parameters

request: DocumentsCommitRequest

client.Documents.DownloadAsync(DownloadDocumentsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Documents.DownloadAsync(
    new DownloadDocumentsRequest { TenantId = "tenantId", Id = "id" }
);

⚙️ Parameters

request: DownloadDocumentsRequest

client.Documents.ThumbnailAsync(ThumbnailDocumentsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Documents.ThumbnailAsync(
    new ThumbnailDocumentsRequest { TenantId = "tenantId", Id = "id" }
);

⚙️ Parameters

request: ThumbnailDocumentsRequest

client.Documents.UploadProxyAsync(UploadProxyDocumentsRequest { ... }) -> WithRawResponseTask<DocumentsUploadProxy200Response>

📝 Description

This bounded origin-mediated fallback must only be used after documents.init returns upload.kind=proxy. Auto mode prefers a presigned object-store PUT whenever available.

🔌 Usage

await client.Documents.UploadProxyAsync(
    new UploadProxyDocumentsRequest { TenantId = "tenantId", Id = "id" }
);

⚙️ Parameters

request: UploadProxyDocumentsRequest

client.Documents.ImportFromAsync(DocumentsImportFromRequest { ... }) -> WithRawResponseTask<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

await client.Documents.ImportFromAsync(
    new DocumentsImportFromRequest
    {
        TenantId = "tenantId",
        Source = new DocumentsImportFromRequestSource(
            new DocumentsImportFromRequestSource.Url(
                new DocumentsImportFromRequestSourceUrl { Url = "url" }
            )
        ),
    }
);

⚙️ Parameters

request: DocumentsImportFromRequest

client.Documents.InitAsync(DocumentsInitRequest { ... }) -> WithRawResponseTask<DocumentsInit200Response>

🔌 Usage

await client.Documents.InitAsync(
    new DocumentsInitRequest
    {
        TenantId = "tenantId",
        ContentLength = 1.1,
        ContentSha256 = "contentSha256",
    }
);

⚙️ Parameters

request: DocumentsInitRequest

Tokens

client.Tokens.IssueAsync(IssueTokensRequest { ... }) -> WithRawResponseTask<TokensIssue200Response>

📝 Description

kind "tenant" requires the API token — authority mints only downward. Mounted only when the deployment can sign (HS256 mode); asymmetric deployments mint with their own private key.

🔌 Usage

await client.Tokens.IssueAsync(
    new IssueTokensRequest
    {
        TenantId = "tenantId",
        Body = new TokensIssueRequest(
            new CloudPDF.TokensIssueRequest.Doc(
                new TokensIssueRequestDoc
                {
                    Sub = "sub",
                    DocId = "docId",
                    Scope = new List<string>() { "scope" },
                    ExpiresIn = 1,
                }
            )
        ),
    }
);

⚙️ Parameters

request: IssueTokensRequest

client.Tokens.RevokeAsync(TokensRevokeRequest { ... }) -> WithRawResponseTask

📝 Description

Mounted only when the deployment enables token revocation.

🔌 Usage

await client.Tokens.RevokeAsync(new TokensRevokeRequest { TenantId = "tenantId", Jti = "jti" });

⚙️ Parameters

request: TokensRevokeRequest

Doc Annotations

client.Doc.Annotations.ListAllAsync(ListAllAnnotationsRequest { ... }) -> WithRawResponseTask<AnnotationList>

📝 Description

Returns one entry per page plus the audit-log cursor for reconciling subsequent document events. Page order is unspecified; join by page (a PageRef) when display order matters.

🔌 Usage

await client.Doc.Annotations.ListAllAsync(
    new ListAllAnnotationsRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: ListAllAnnotationsRequest

client.Doc.Annotations.ListAsync(ListAnnotationsRequest { ... }) -> WithRawResponseTask<AnnotationList>

🔌 Usage

await client.Doc.Annotations.ListAsync(
    new ListAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
    }
);

⚙️ Parameters

request: ListAnnotationsRequest

client.Doc.Annotations.CreateAsync(CreateAnnotationsRequest { ... }) -> WithRawResponseTask<DocAnnotationsCreate200Response>

📝 Description

Doc JWTs may instead carry collab scopes (annotations:create:self, …) that refine per-annotation authorship rules; the API token is exempt from both.

🔌 Usage

await client.Doc.Annotations.CreateAsync(
    new CreateAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: CreateAnnotationsRequest

client.Doc.Annotations.DeleteAsync(DeleteAnnotationsRequest { ... }) -> WithRawResponseTask<DocAnnotationsDelete200Response>

🔌 Usage

await client.Doc.Annotations.DeleteAsync(
    new DeleteAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        AnnotKey = "annotKey",
    }
);

⚙️ Parameters

request: DeleteAnnotationsRequest

client.Doc.Annotations.UpdateAsync(UpdateAnnotationsRequest { ... }) -> WithRawResponseTask<DocAnnotationsUpdate200Response>

🔌 Usage

await client.Doc.Annotations.UpdateAsync(
    new UpdateAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        AnnotKey = "annotKey",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: UpdateAnnotationsRequest

client.Doc.Annotations.ReadAppearanceAsync(ReadAppearanceAnnotationsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Doc.Annotations.ReadAppearanceAsync(
    new ReadAppearanceAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        AnnotKey = "annotKey",
    }
);

⚙️ Parameters

request: ReadAppearanceAnnotationsRequest

client.Doc.Annotations.ExportAppearanceAsync(ExportAppearanceAnnotationsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Doc.Annotations.ExportAppearanceAsync(
    new ExportAppearanceAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        Body = new Dictionary<string, object?>()
        {
            {
                "string",
                new Dictionary<object, object?>() { { "key", "value" } }
            },
        },
    }
);

⚙️ Parameters

request: ExportAppearanceAnnotationsRequest

client.Doc.Annotations.FlattenAsync(FlattenAnnotationsRequest { ... }) -> WithRawResponseTask<DocAnnotationsFlatten200Response>

🔌 Usage

await client.Doc.Annotations.FlattenAsync(
    new FlattenAnnotationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: FlattenAnnotationsRequest

client.Doc.Annotations.ReorderAsync(DocAnnotationsReorderRequest { ... }) -> WithRawResponseTask<DocAnnotationsReorder200Response>

🔌 Usage

await client.Doc.Annotations.ReorderAsync(
    new DocAnnotationsReorderRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        Refs = new List<AnnotationRef>()
        {
            new AnnotationRef(
                new AnnotationRef.ObjectNumber(
                    new AnnotationRefObjectNumber
                    {
                        Page = new PageRef { Kind = PageRefKind.ObjectNumber, ObjectNumber = 1 },
                        ObjectNumber = 1,
                    }
                )
            ),
        },
        Position = AnnotationPositionZero.Start,
    }
);

⚙️ Parameters

request: DocAnnotationsReorderRequest

Doc Forms

client.Doc.Forms.ListAsync(ListFormsRequest { ... }) -> WithRawResponseTask<DocFormsList200Response>

🔌 Usage

await client.Doc.Forms.ListAsync(new ListFormsRequest { DocId = "docId", LayerName = "layerName" });

⚙️ Parameters

request: ListFormsRequest

client.Doc.Forms.ReorderCalculationsAsync(DocFormsReorderCalculationsRequest { ... }) -> WithRawResponseTask<DocFormsReorderCalculations200Response>

🔌 Usage

await client.Doc.Forms.ReorderCalculationsAsync(
    new DocFormsReorderCalculationsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Fields = new List<FormFieldRef>()
        {
            new FormFieldRef(
                new FormFieldRef.ObjectNumber(new FormFieldRefObjectNumber { ObjectNumber = 1 })
            ),
        },
        Position = FieldPositionZero.Start,
    }
);

⚙️ Parameters

request: DocFormsReorderCalculationsRequest

client.Doc.Forms.SetValueAsync(SetValueFormsRequest { ... }) -> WithRawResponseTask<DocFormsSetValue200Response>

🔌 Usage

await client.Doc.Forms.SetValueAsync(
    new SetValueFormsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        FieldKey = "fieldKey",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: SetValueFormsRequest

client.Doc.Forms.ResetAsync(DocFormsResetRequest { ... }) -> WithRawResponseTask<DocFormsReset200Response>

🔌 Usage

await client.Doc.Forms.ResetAsync(
    new DocFormsResetRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: DocFormsResetRequest

client.Doc.Forms.DeleteWidgetAsync(DeleteWidgetFormsRequest { ... }) -> WithRawResponseTask<DocFormsDeleteWidget200Response>

🔌 Usage

await client.Doc.Forms.DeleteWidgetAsync(
    new DeleteWidgetFormsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        AnnotKey = "annotKey",
    }
);

⚙️ Parameters

request: DeleteWidgetFormsRequest

client.Doc.Forms.UpdateWidgetAsync(DocFormsUpdateWidgetRequest { ... }) -> WithRawResponseTask<DocFormsUpdateWidget200Response>

🔌 Usage

await client.Doc.Forms.UpdateWidgetAsync(
    new DocFormsUpdateWidgetRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        AnnotKey = "annotKey",
        Patch = new WidgetPatch(),
    }
);

⚙️ Parameters

request: DocFormsUpdateWidgetRequest

client.Doc.Forms.ReorderWidgetsAsync(DocFormsReorderWidgetsRequest { ... }) -> WithRawResponseTask<DocFormsReorderWidgets200Response>

🔌 Usage

await client.Doc.Forms.ReorderWidgetsAsync(
    new DocFormsReorderWidgetsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
        Widgets = new List<AnnotationRef>()
        {
            new AnnotationRef(
                new AnnotationRef.ObjectNumber(
                    new AnnotationRefObjectNumber
                    {
                        Page = new PageRef { Kind = PageRefKind.ObjectNumber, ObjectNumber = 1 },
                        ObjectNumber = 1,
                    }
                )
            ),
        },
        Position = AnnotationPositionZero.Start,
    }
);

⚙️ Parameters

request: DocFormsReorderWidgetsRequest

Doc Metadata

client.Doc.Metadata.GetAsync(GetMetadataRequest { ... }) -> WithRawResponseTask<DocumentMetadata>

🔌 Usage

await client.Doc.Metadata.GetAsync(
    new GetMetadataRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: GetMetadataRequest

Doc Pages

client.Doc.Pages.SetScaleAsync(DocPagesSetScaleRequest { ... }) -> WithRawResponseTask<DocPagesSetScale200Response>

🔌 Usage

await client.Doc.Pages.SetScaleAsync(
    new DocPagesSetScaleRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
    }
);

⚙️ Parameters

request: DocPagesSetScaleRequest

client.Doc.Pages.ViewportsAsync(ViewportsPagesRequest { ... }) -> WithRawResponseTask<DocPagesViewports200Response>

🔌 Usage

await client.Doc.Pages.ViewportsAsync(
    new ViewportsPagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        PageKey = "pageKey",
    }
);

⚙️ Parameters

request: ViewportsPagesRequest

client.Doc.Pages.DeleteAsync(DeletePagesRequest { ... }) -> WithRawResponseTask<DocPagesDelete200Response>

🔌 Usage

await client.Doc.Pages.DeleteAsync(
    new DeletePagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: DeletePagesRequest

client.Doc.Pages.ExtractAsync(ExtractPagesRequest { ... }) -> WithRawResponseTask<Stream>

📝 Description

A read, not a mutation: the source document is untouched and no event is published. Body is {"pages": PageRef[]}; the response body is the new PDF.

🔌 Usage

await client.Doc.Pages.ExtractAsync(
    new ExtractPagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>()
        {
            {
                "string",
                new Dictionary<object, object?>() { { "key", "value" } }
            },
        },
    }
);

⚙️ Parameters

request: ExtractPagesRequest

client.Doc.Pages.FlattenAsync(FlattenPagesRequest { ... }) -> WithRawResponseTask<DocPagesFlatten200Response>

🔌 Usage

await client.Doc.Pages.FlattenAsync(
    new FlattenPagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: FlattenPagesRequest

client.Doc.Pages.InsertAsync(InsertPagesRequest { ... }) -> WithRawResponseTask<DocPagesInsert200Response>

📝 Description

Multipart: a JSON body part {"position"?: PagePosition, "resources": {"source": "<key>"}} (position omitted → the end), and the standalone PDF whose pages are copied in as the part resource:<key>. The inserted copies get fresh page object numbers, returned in insertion order.

🔌 Usage

await client.Doc.Pages.InsertAsync(
    new InsertPagesRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: InsertPagesRequest

client.Doc.Pages.InsertBlankAsync(InsertBlankPagesRequest { ... }) -> WithRawResponseTask<DocPagesInsertBlank200Response>

📝 Description

Body is {"size": {"width", "height"}, "count"?, "position"?} — size in PDF points, count in [1, 100], position a PagePosition (omitted → the end).

🔌 Usage

await client.Doc.Pages.InsertBlankAsync(
    new InsertBlankPagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: InsertBlankPagesRequest

client.Doc.Pages.SetNameAsync(SetNamePagesRequest { ... }) -> WithRawResponseTask<DocPagesSetName200Response>

🔌 Usage

await client.Doc.Pages.SetNameAsync(
    new SetNamePagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: SetNamePagesRequest

client.Doc.Pages.RemoveNameAsync(RemoveNamePagesRequest { ... }) -> WithRawResponseTask<DocPagesRemoveName200Response>

🔌 Usage

await client.Doc.Pages.RemoveNameAsync(
    new RemoveNamePagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: RemoveNamePagesRequest

client.Doc.Pages.ReorderAsync(DocPagesReorderRequest { ... }) -> WithRawResponseTask<DocPagesReorder200Response>

🔌 Usage

await client.Doc.Pages.ReorderAsync(
    new DocPagesReorderRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Pages = new List<PageRef>()
        {
            new PageRef { Kind = PageRefKind.ObjectNumber, ObjectNumber = 1 },
        },
        Position = PagePositionZero.Start,
    }
);

⚙️ Parameters

request: DocPagesReorderRequest

client.Doc.Pages.RotateAsync(RotatePagesRequest { ... }) -> WithRawResponseTask<DocPagesRotate200Response>

🔌 Usage

await client.Doc.Pages.RotateAsync(
    new RotatePagesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        Body = new Dictionary<string, object?>() { { "key", "value" } },
    }
);

⚙️ Parameters

request: RotatePagesRequest

Doc Redactions

client.Doc.Redactions.ApplyAsync(DocRedactionsApplyRequest { ... }) -> WithRawResponseTask<DocRedactionsApply200Response>

🔌 Usage

await client.Doc.Redactions.ApplyAsync(
    new DocRedactionsApplyRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: DocRedactionsApplyRequest

Doc Signatures

client.Doc.Signatures.ListAsync(ListSignaturesRequest { ... }) -> WithRawResponseTask<DocSignaturesList200Response>

📝 Description

Describes the bytes the layer is over: the base version's signatures plus the layer's own edits as the last revision. Signed bytes (contents, digests, revision prefixes) are served per base version under /versions.

🔌 Usage

await client.Doc.Signatures.ListAsync(
    new ListSignaturesRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: ListSignaturesRequest

client.Doc.Signatures.CancelAsync(CancelSignaturesRequest { ... }) -> WithRawResponseTask<DocSignaturesCancel200Response>

🔌 Usage

await client.Doc.Signatures.CancelAsync(
    new CancelSignaturesRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        SigningId = "signingId",
    }
);

⚙️ Parameters

request: CancelSignaturesRequest

client.Doc.Signatures.CompleteAsync(DocSignaturesCompleteRequest { ... }) -> WithRawResponseTask<DocSignaturesComplete200Response>

📝 Description

cms is the detached CMS over the prepared digest, base64. expectedVersion must be what prepare returned. Idempotent by signing id: the same CMS again answers already-completed. Every layer of the document then sits over the new version; refetch the manifest after a completion.

🔌 Usage

await client.Doc.Signatures.CompleteAsync(
    new DocSignaturesCompleteRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        SigningId = "signingId",
        Cms = "cms",
        ExpectedVersion = new DocSignaturesCompleteRequestExpectedVersion
        {
            BaseSha256 = "baseSha256",
            EditsVersion = 1,
        },
    }
);

⚙️ Parameters

request: DocSignaturesCompleteRequest

client.Doc.Signatures.AnalysisAsync(AnalysisSignaturesRequest { ... }) -> WithRawResponseTask<DocSignaturesAnalysis200Response>

📝 Description

Exactly one of since.signature=<index> or since.revision=<index>; the layer's pending edits are the end. level=fill|annotate|lta|none evaluates exploratorily and never becomes a verdict. For history between two base revisions use the version analysis.

🔌 Usage

await client.Doc.Signatures.AnalysisAsync(
    new AnalysisSignaturesRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: AnalysisSignaturesRequest

client.Doc.Signatures.PrepareAsync(PrepareSignaturesRequest { ... }) -> WithRawResponseTask<DocSignaturesPrepare200Response>

📝 Description

Multipart: a JSON body part (field, subFilter, digest, contentsSize, signer, certify, lock), naming the appearance PDF it may carry as resources: { appearance: '<key>' }, and that PDF as the part resource:<key>. A certification (certify.permission) additionally requires doc.sign.certify. The layer is read-only until the signing completes, is cancelled, or expires (15 minutes). A layer behind the document head cannot sign (StaleBase).

🔌 Usage

await client.Doc.Signatures.PrepareAsync(
    new PrepareSignaturesRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: PrepareSignaturesRequest

Doc Versions

client.Doc.Versions.ListAsync(ListVersionsRequest { ... }) -> WithRawResponseTask<DocVersionsList200Response>

📝 Description

Every completed signature publishes a new version. Never cached: the list grows.

🔌 Usage

await client.Doc.Versions.ListAsync(new ListVersionsRequest { DocId = "docId" });

⚙️ Parameters

request: ListVersionsRequest

client.Doc.Versions.AnalysisAsync(AnalysisVersionsRequest { ... }) -> WithRawResponseTask<DocVersionsAnalysis200Response>

📝 Description

Exactly one of since.signature / since.revision; until=<revision> defaults to the last. The same answer for every layer and every caller.

🔌 Usage

await client.Doc.Versions.AnalysisAsync(
    new AnalysisVersionsRequest { DocId = "docId", Sha = "sha" }
);

⚙️ Parameters

request: AnalysisVersionsRequest

client.Doc.Versions.DownloadAsync(DownloadVersionsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Doc.Versions.DownloadAsync(
    new DownloadVersionsRequest { DocId = "docId", Sha = "sha" }
);

⚙️ Parameters

request: DownloadVersionsRequest

client.Doc.Versions.RevisionAsync(RevisionVersionsRequest { ... }) -> WithRawResponseTask<Stream>

🔌 Usage

await client.Doc.Versions.RevisionAsync(
    new RevisionVersionsRequest
    {
        DocId = "docId",
        Sha = "sha",
        Index = 1,
    }
);

⚙️ Parameters

request: RevisionVersionsRequest

client.Doc.Versions.SignaturesAsync(SignaturesVersionsRequest { ... }) -> WithRawResponseTask<DocVersionsSignatures200Response>

🔌 Usage

await client.Doc.Versions.SignaturesAsync(
    new SignaturesVersionsRequest { DocId = "docId", Sha = "sha" }
);

⚙️ Parameters

request: SignaturesVersionsRequest

client.Doc.Versions.SignatureContentsAsync(SignatureContentsVersionsRequest { ... }) -> WithRawResponseTask<Stream>

📝 Description

fieldKey is the field's fully qualified name, token-text encoded (the same encoding attachment keys use).

🔌 Usage

await client.Doc.Versions.SignatureContentsAsync(
    new SignatureContentsVersionsRequest
    {
        DocId = "docId",
        Sha = "sha",
        FieldKey = "fieldKey",
    }
);

⚙️ Parameters

request: SignatureContentsVersionsRequest

client.Doc.Versions.SignatureDigestAsync(SignatureDigestVersionsRequest { ... }) -> WithRawResponseTask<Stream>

📝 Description

What a CMS verifier compares its message digest to.

🔌 Usage

await client.Doc.Versions.SignatureDigestAsync(
    new SignatureDigestVersionsRequest
    {
        DocId = "docId",
        Sha = "sha",
        FieldKey = "fieldKey",
        Algorithm = SignatureDigestVersionsRequestAlgorithm.Sha1,
    }
);

⚙️ Parameters

request: SignatureDigestVersionsRequest

Doc Metadata Custom

client.Doc.Metadata.Custom.GetAsync(GetCustomRequest { ... }) -> WithRawResponseTask<Dictionary<string, string>>

🔌 Usage

await client.Doc.Metadata.Custom.GetAsync(
    new GetCustomRequest { DocId = "docId", LayerName = "layerName" }
);

⚙️ Parameters

request: GetCustomRequest