Skip to content

Latest commit

Β 

History

History
3902 lines (2855 loc) Β· 56.4 KB

reference.md

File metadata and controls

3902 lines (2855 loc) Β· 56.4 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, outline doc.outline.modify, pages doc.pages.assemble, embedded files doc.attachments.modify. Bytes (a stamp's drawing, an attached file, a signature's artwork, a PDF whose pages come in) 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.DownloadLinkAsync(DocDownloadLinkRequest { ... }) -> WithRawResponseTask<DocDownloadLink200Response>

πŸ“ Description

The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with layer_name, a download: { docVersion, mode: "incremental" } claim and a short exp, passed as link on the versioned download URL.

πŸ”Œ Usage

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

βš™οΈ Parameters

request: DocDownloadLinkRequest

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. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; error.details carries fields (what the link asks), missing, invalid, purpose and privacyUrl. A link that asks before the first change issues the session at once with visitor.identityRequest, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. 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

client.Shares.ArchiveAsync(ArchiveSharesRequest { ... }) -> WithRawResponseTask<SharesArchive200Response>

πŸ“ Description

Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (disabled) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted.

πŸ”Œ Usage

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

βš™οΈ Parameters

request: ArchiveSharesRequest

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.ReadFileAsync(ReadFileAnnotationsRequest { ... }) -> WithRawResponseTask<Stream>

πŸ“ Description

A file that decodes past the server's limit is refused (PayloadTooLarge).

πŸ”Œ Usage

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

βš™οΈ Parameters

request: ReadFileAnnotationsRequest

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 Attachments

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

πŸ“ Description

A file that decodes past the server's limit is refused (PayloadTooLarge).

πŸ”Œ Usage

await client.Doc.Attachments.DownloadAsync(
    new DownloadAttachmentsRequest
    {
        DocId = "docId",
        LayerName = "layerName",
        FileKey = "fileKey",
    }
);

βš™οΈ Parameters

request: DownloadAttachmentsRequest

client.Doc.Attachments.ListAsync(ListAttachmentsRequest { ... }) -> WithRawResponseTask<AttachmentList>

πŸ“ Description

A file-attachment annotation's file is listed with the annotation; read its bytes with doc.annotations.readFile.

πŸ”Œ Usage

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

βš™οΈ Parameters

request: ListAttachmentsRequest

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 Outline

client.Doc.Outline.GetAsync(GetOutlineRequest { ... }) -> WithRawResponseTask<DocumentOutline>

πŸ”Œ Usage

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

βš™οΈ Parameters

request: GetOutlineRequest

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.ExtractAsync(ExtractPagesRequest { ... }) -> WithRawResponseTask<Stream>

πŸ“ Description

A read, not a mutation: the source document is untouched and no event is published. Body is {"pages": PageRef[], "flatten"?: {"usage"?: "display" | "print"}, "includeAnnotations"?: boolean, "includeFormFields"?: boolean}; the response body is the new PDF. With flatten the copy is the pages as they draw for usage ("print": a print copy): the annotations and form fields painted in, nothing interactive left, layers in their state for the usage. A flattened copy takes doc.download or doc.download.flattened, and paints only what the caller may read; includeAnnotations and includeFormFields choose what it paints, and are refused without flatten.

πŸ”Œ 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.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

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

Documents Layers

client.Documents.Layers.ListAsync(ListLayersRequest { ... }) -> WithRawResponseTask<DocumentsLayersList200Response>

πŸ”Œ Usage

await client.Documents.Layers.ListAsync(new ListLayersRequest { TenantId = "tenantId", Id = "id" });

βš™οΈ Parameters

request: ListLayersRequest

client.Documents.Layers.DeleteAsync(DeleteLayersRequest { ... }) -> WithRawResponseTask

πŸ”Œ Usage

await client.Documents.Layers.DeleteAsync(
    new DeleteLayersRequest
    {
        TenantId = "tenantId",
        Id = "id",
        LayerName = "layerName",
    }
);

βš™οΈ Parameters

request: DeleteLayersRequest

Shares Visitors

client.Shares.Visitors.ListAsync(ListVisitorsRequest { ... }) -> WithRawResponseTask<SharesVisitorsList200Response>

πŸ“ Description

An archived link's visitors are listed too.

πŸ”Œ Usage

await client.Shares.Visitors.ListAsync(
    new ListVisitorsRequest { TenantId = "tenantId", ShareId = "shareId" }
);

βš™οΈ Parameters

request: ListVisitorsRequest

client.Shares.Visitors.DeleteAsync(DeleteVisitorsRequest { ... }) -> WithRawResponseTask

πŸ“ Description

Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing.

πŸ”Œ Usage

await client.Shares.Visitors.DeleteAsync(
    new DeleteVisitorsRequest
    {
        TenantId = "tenantId",
        ShareId = "shareId",
        VisitorId = "visitorId",
    }
);

βš™οΈ Parameters

request: DeleteVisitorsRequest