Verdocs - Developer Documentation
ReferenceSDKServer-Side

Helpers

Utility and convenience functions provided by the Verdocs SDKs.

DateTime

dateTime.formatShortTimeAgo

formatShortTimeAgo(val: any): string
ParameterTypeDescription
valany

dateTime.formatShortTimeAgo

format_short_time_ago(val: datetime | str | int | float | None) -> str
ParameterTypeDescription
valdatetime | str | int | float | NoneThe moment to describe. None, unsupported types, and unparseable strings yield "".

dateTime.formatShortTimeAgo

Not yet available for C#.

Entitlement

entitlement.collapseEntitlements

collapseEntitlements(entitlements: IEntitlement[]): Partial<Record<TEntitlement, IEntitlement>>
ParameterTypeDescription
entitlementsIEntitlement[]

entitlement.collapseEntitlements

collapse_entitlements(entitlements: list[Entitlement]) -> ActiveEntitlements
ParameterTypeDescription
entitlementslist[Entitlement]The raw records, e.g. from organizations.get_entitlements().

entitlement.collapseEntitlements

Not yet available for C#.

Envelope

envelope.canAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

canAccessEnvelope(profile_id: undefined | null | string, envelope: IEnvelope): boolean
ParameterTypeDescription
profile_idundefined | null | string
envelopeIEnvelope

envelope.envelopeIsActive

Check to see if the envelope has pending actions.

envelopeIsActive(envelope: IEnvelope): boolean
ParameterTypeDescription
envelopeIEnvelope

envelope.envelopeIsComplete

Check to see if the envelope has been completed.

envelopeIsComplete(envelope: IEnvelope): boolean
ParameterTypeDescription
envelopeIEnvelope

envelope.getMyRecipient

Regardless of if the session is `user` or `signer`, returns the envelope's recipient that matches the user's session.

getMyRecipient(session: TSession, envelope: IEnvelope): undefined | IRecipient
ParameterTypeDescription
sessionTSession
envelopeIEnvelope

envelope.getNextRecipient

getNextRecipient(envelope: IEnvelope): IRecipient
ParameterTypeDescription
envelopeIEnvelope

envelope.getRecipient

Get a recipient from an envelope via an email match.

getRecipient(email: string, envelope: IEnvelope): undefined | IRecipient
ParameterTypeDescription
emailstring
envelopeIEnvelope

envelope.getRecipientsWithActions

Returns the recipients who still have a pending action. Note that not all of these recipients may be able to act (yet).

getRecipientsWithActions(envelope: IEnvelope): IRecipient[]
ParameterTypeDescription
envelopeIEnvelope

envelope.getRecipientWithActions

Get a recipient that can act from an envelope via an email match.

getRecipientWithActions(email: string, envelope: IEnvelope): undefined | boolean
ParameterTypeDescription
emailstring
envelopeIEnvelope

envelope.isEnvelopeOwner

Check to see if the profile ID owns the envelope.

isEnvelopeOwner(profile_id: undefined | null | string, envelope: IEnvelope): boolean
ParameterTypeDescription
profile_idundefined | null | string
envelopeIEnvelope

envelope.isEnvelopeRecipient

Check to see if the profile ID is a recipient within the envelope.

isEnvelopeRecipient(profile_id: undefined | null | string, envelope: IEnvelope): boolean
ParameterTypeDescription
profile_idundefined | null | string
envelopeIEnvelope

envelope.isFieldFilled

isFieldFilled(field: IEnvelopeField, allRecipientFields: IEnvelopeField[]): null | boolean | ''
ParameterTypeDescription
fieldIEnvelopeField
allRecipientFieldsIEnvelopeField[]

envelope.isFieldValid

isFieldValid(field: IEnvelopeField, allRecipientFields: IEnvelopeField[]): null | boolean | ''
ParameterTypeDescription
fieldIEnvelopeField
allRecipientFieldsIEnvelopeField[]

envelope.recipientCanAct

Returns true if the recipient can act.

recipientCanAct(recipient: IRecipient, recipientsWithActions: IRecipient[]): boolean
ParameterTypeDescription
recipientIRecipient
recipientsWithActionsIRecipient[]

envelope.recipientHasAction

Returns true if the recipient has a pending action. Note that this does not necessarily mean the recipient can act (yet).

recipientHasAction(recipient: IRecipient): boolean
ParameterTypeDescription
recipientIRecipient

envelope.useCanAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

useCanAccessEnvelope(profile: undefined | null | IProfile, envelope: IEnvelope): boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.userCanAct

Returns true if the user can act.

userCanAct(email: string, recipientsWithActions: IRecipient[]): undefined | boolean
ParameterTypeDescription
emailstring
recipientsWithActionsIRecipient[]

envelope.userCanCancelEnvelope

Check to see if the user owns the envelope.

userCanCancelEnvelope(profile: undefined | null | IProfile, envelope: IEnvelope): boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.userCanFinishEnvelope

Check to see if the user owns the envelope.

userCanFinishEnvelope(profile: undefined | null | IProfile, envelope: IEnvelope): boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.userCanSignNow

Returns true if the user can act.

userCanSignNow(profile: undefined | null | IProfile, envelope: IEnvelope): undefined | boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.userIsEnvelopeOwner

Check to see if the user owns the envelope.

userIsEnvelopeOwner(profile: undefined | null | IProfile, envelope: IEnvelope): boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.userIsEnvelopeRecipient

Check to see if the user is a recipient within the envelope.

userIsEnvelopeRecipient(profile: undefined | null | IProfile, envelope: IEnvelope): boolean
ParameterTypeDescription
profileundefined | null | IProfile
envelopeIEnvelope

envelope.canAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

Not yet available for Python.

envelope.envelopeIsActive

Check to see if the envelope has pending actions.

Not yet available for Python.

envelope.envelopeIsComplete

Check to see if the envelope has been completed.

Not yet available for Python.

envelope.getMyRecipient

Regardless of if the session is `user` or `signer`, returns the envelope's recipient that matches the user's session.

Not yet available for Python.

envelope.getNextRecipient

Not yet available for Python.

envelope.getRecipient

Get a recipient from an envelope via an email match.

Not yet available for Python.

envelope.getRecipientsWithActions

Returns the recipients who still have a pending action. Note that not all of these recipients may be able to act (yet).

Not yet available for Python.

envelope.getRecipientWithActions

Get a recipient that can act from an envelope via an email match.

Not yet available for Python.

envelope.isEnvelopeOwner

Check to see if the profile ID owns the envelope.

Not yet available for Python.

envelope.isEnvelopeRecipient

Check to see if the profile ID is a recipient within the envelope.

Not yet available for Python.

envelope.isFieldFilled

Not yet available for Python.

envelope.isFieldValid

Not yet available for Python.

envelope.recipientCanAct

Returns true if the recipient can act.

Not yet available for Python.

envelope.recipientHasAction

Returns true if the recipient has a pending action. Note that this does not necessarily mean the recipient can act (yet).

Not yet available for Python.

envelope.useCanAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

Not yet available for Python.

envelope.userCanAct

Returns true if the user can act.

Not yet available for Python.

envelope.userCanCancelEnvelope

Check to see if the user owns the envelope.

Not yet available for Python.

envelope.userCanFinishEnvelope

Check to see if the user owns the envelope.

Not yet available for Python.

envelope.userCanSignNow

Returns true if the user can act.

Not yet available for Python.

envelope.userIsEnvelopeOwner

Check to see if the user owns the envelope.

Not yet available for Python.

envelope.userIsEnvelopeRecipient

Check to see if the user is a recipient within the envelope.

Not yet available for Python.

envelope.canAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

Not yet available for C#.

envelope.envelopeIsActive

Check to see if the envelope has pending actions.

Not yet available for C#.

envelope.envelopeIsComplete

Check to see if the envelope has been completed.

Not yet available for C#.

envelope.getMyRecipient

Regardless of if the session is `user` or `signer`, returns the envelope's recipient that matches the user's session.

Not yet available for C#.

envelope.getNextRecipient

Not yet available for C#.

envelope.getRecipient

Get a recipient from an envelope via an email match.

Not yet available for C#.

envelope.getRecipientsWithActions

Returns the recipients who still have a pending action. Note that not all of these recipients may be able to act (yet).

Not yet available for C#.

envelope.getRecipientWithActions

Get a recipient that can act from an envelope via an email match.

Not yet available for C#.

envelope.isEnvelopeOwner

Check to see if the profile ID owns the envelope.

Not yet available for C#.

envelope.isEnvelopeRecipient

Check to see if the profile ID is a recipient within the envelope.

Not yet available for C#.

envelope.isFieldFilled

Not yet available for C#.

envelope.isFieldValid

Not yet available for C#.

envelope.recipientCanAct

Returns true if the recipient can act.

Not yet available for C#.

envelope.recipientHasAction

Returns true if the recipient has a pending action. Note that this does not necessarily mean the recipient can act (yet).

Not yet available for C#.

envelope.useCanAccessEnvelope

Check to see if the profile ID is the envelope's sender or one of the recipients.

Not yet available for C#.

envelope.userCanAct

Returns true if the user can act.

Not yet available for C#.

envelope.userCanCancelEnvelope

Check to see if the user owns the envelope.

Not yet available for C#.

envelope.userCanFinishEnvelope

Check to see if the user owns the envelope.

Not yet available for C#.

envelope.userCanSignNow

Returns true if the user can act.

Not yet available for C#.

envelope.userIsEnvelopeOwner

Check to see if the user owns the envelope.

Not yet available for C#.

envelope.userIsEnvelopeRecipient

Check to see if the user is a recipient within the envelope.

Not yet available for C#.

File

file.downloadBlob

Trigger a download dialog to save a blob as a file on disk.

downloadBlob(blob: Blob, name: string = 'file.pdf'): void
ParameterTypeDescription
blobBlob
name?string

file.fileToDataUrl

Given a File, extract the file's content as a base64 encoded data URL. The response will have a prefix that includes the MIME type of the file, e.g. "data:image/jpeg;base64,iVBORw0K......"

fileToDataUrl(file: File): Promise<IFileWithData>
ParameterTypeDescription
fileFile

file.downloadBlob

Trigger a download dialog to save a blob as a file on disk.

Not yet available for Python.

file.fileToDataUrl

Given a File, extract the file's content as a base64 encoded data URL. The response will have a prefix that includes the MIME type of the file, e.g. "data:image/jpeg;base64,iVBORw0K......"

bytes_to_data_url(data: bytes, content_type: str) -> str
ParameterTypeDescription
databytesThe file content.
content_typestrThe MIME type to embed, e.g. "application/pdf".

file.downloadBlob

Trigger a download dialog to save a blob as a file on disk.

Not yet available for C#.

file.fileToDataUrl

Given a File, extract the file's content as a base64 encoded data URL. The response will have a prefix that includes the MIME type of the file, e.g. "data:image/jpeg;base64,iVBORw0K......"

Not yet available for C#.

Permissions

permission.userHasPermissions

Confirm whether the user has all of the specified permissions, resolving the profile's direct permissions, the permissions granted by its roles, and any group profiles.

userHasPermissions(profile: undefined | null | IProfile, permissions: TPermission[]): boolean
ParameterTypeDescription
profileundefined | null | IProfile
permissionsTPermission[]

permission.userHasPermissions

Confirm whether the user has all of the specified permissions, resolving the profile's direct permissions, the permissions granted by its roles, and any group profiles.

user_has_permissions(profile: Profile | None, permissions: list[Permission]) -> bool
ParameterTypeDescription
profileProfile | NoneThe profile to check, or None when there is no session.
permissionslist[Permission]The permissions that must all be held.

permission.userHasPermissions

Confirm whether the user has all of the specified permissions, resolving the profile's direct permissions, the permissions granted by its roles, and any group profiles.

Not yet available for C#.

Primitive

primitive.formatFullName

Format a profile's full name

formatFullName(source?: null | object): string
ParameterTypeDescription
source?null | object

primitive.formatInitials

Format a profile's initials

formatInitials(profile?: IProfile): string
ParameterTypeDescription
profile?IProfile

primitive.fullNameToInitials

Generate suggested initials for a full name, e.g. "John Doe" will yield "JD".

fullNameToInitials(name: string): string
ParameterTypeDescription
namestring

primitive.integerSequence

Create an array containing a sequence of integers, e.g. [START, START+1, START+2, ...] This is frequently useful in rendering operations when there is no source array to .map() across.

integerSequence(start: number, count: number): number[]
ParameterTypeDescription
startnumber
countnumber

primitive.formatFullName

Format a profile's full name

format_full_name(source: Any = None) -> str
ParameterTypeDescription
source?AnyAnything carrying first_name and last_name, as keys or attributes (a dict, a Profile, a Recipient). None and missing names are treated as empty.

primitive.formatInitials

Format a profile's initials

format_initials(profile: Any = None) -> str
ParameterTypeDescription
profile?AnyAnything carrying first_name and last_name, as keys or attributes. The js-sdk assumes both names are present; we treat a missing one as empty rather than raising.

primitive.fullNameToInitials

Generate suggested initials for a full name, e.g. "John Doe" will yield "JD".

full_name_to_initials(name: str) -> str
ParameterTypeDescription
namestrThe full name.

primitive.integerSequence

Create an array containing a sequence of integers, e.g. [START, START+1, START+2, ...] This is frequently useful in rendering operations when there is no source array to .map() across.

integer_sequence(start: int, count: int) -> list[int]
ParameterTypeDescription
startintThe first value.
countintHow many values to produce.

primitive.formatFullName

Format a profile's full name

Not yet available for C#.

primitive.formatInitials

Format a profile's initials

Not yet available for C#.

primitive.fullNameToInitials

Generate suggested initials for a full name, e.g. "John Doe" will yield "JD".

Not yet available for C#.

primitive.integerSequence

Create an array containing a sequence of integers, e.g. [START, START+1, START+2, ...] This is frequently useful in rendering operations when there is no source array to .map() across.

Not yet available for C#.

String

string.capitalize

Capitalize the first letter of a string.

capitalize(str: string): string
ParameterTypeDescription
strstring

string.convertToE164

Convert a phone-number-like string to E164 format.

convertToE164(input: string): string
ParameterTypeDescription
inputstring

string.randomString

randomString(length: number): string
ParameterTypeDescription
lengthnumber

string.capitalize

Capitalize the first letter of a string.

capitalize(value: str) -> str
ParameterTypeDescription
valuestrThe string to capitalize. May be empty.

string.convertToE164

Convert a phone-number-like string to E164 format.

convert_to_e164(value: str | None) -> str
ParameterTypeDescription
valuestr | NoneThe phone-number-like input; None is treated as empty.

string.randomString

random_string(length: int) -> str
ParameterTypeDescription
lengthintNumber of characters to generate.

string.capitalize

Capitalize the first letter of a string.

Not yet available for C#.

string.convertToE164

Convert a phone-number-like string to E164 format.

Not yet available for C#.

string.randomString

Not yet available for C#.

Template

template.canPerformTemplateAction

canPerformTemplateAction(profile: undefined | null | IProfile, action: TTemplateAction, template?: ITemplate): object
ParameterTypeDescription
profileundefined | null | IProfile
actionTTemplateAction
template?ITemplate

template.getFieldsForRole

getFieldsForRole(template: ITemplate, role_name: string): ITemplateField[]
ParameterTypeDescription
templateITemplate
role_namestring

template.hasRequiredPermissions

hasRequiredPermissions(profile: undefined | null | IProfile, permissions: TPermission[]): boolean
ParameterTypeDescription
profileundefined | null | IProfile
permissionsTPermission[]

template.userCanBuildTemplate

Check to see if the user can "build" the template (use the field builder). The user must have write access to the template, and the template must have at least one signer role.

userCanBuildTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanChangeOrgVisibility

Check to see if the user can change whether a template is personal vs org-shared.

userCanChangeOrgVisibility(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanCreateOrgTemplate

Check to see if the user can create an org-shared template.

userCanCreateOrgTemplate(profile: undefined | null | IProfile): boolean
ParameterTypeDescription
profileundefined | null | IProfile

template.userCanCreatePersonalTemplate

Check to see if the user can create a personal/private template.

userCanCreatePersonalTemplate(profile: undefined | null | IProfile): boolean
ParameterTypeDescription
profileundefined | null | IProfile

template.userCanCreatePublicTemplate

Check to see if the user can create a public template.

userCanCreatePublicTemplate(profile: undefined | null | IProfile): boolean
ParameterTypeDescription
profileundefined | null | IProfile

template.userCanCreateTemplate

Confirm whether the user can create a new template.

userCanCreateTemplate(profile: undefined | null | IProfile): boolean
ParameterTypeDescription
profileundefined | null | IProfile

template.userCanDeleteTemplate

Check to see if the user can change whether a template is personal vs org-shared.

userCanDeleteTemplate(profile: undefined | null | IProfile, template: ITemplate): boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanMakeTemplatePrivate

Check to see if the user can change whether a template is personal vs org-shared.

userCanMakeTemplatePrivate(profile: undefined | null | IProfile, template: ITemplate): boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanMakeTemplatePublic

Check to see if the user can change whether a template is personal vs org-shared.

userCanMakeTemplatePublic(profile: undefined | null | IProfile, template: ITemplate): boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanMakeTemplateShared

Check to see if the user can change whether a template is personal vs org-shared.

userCanMakeTemplateShared(profile: undefined | null | IProfile, template: ITemplate): boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanPreviewTemplate

Check to see if the user can preview the template. The user must have read access to the template, the template must have at least one signer, and every signer must have at least one field.

userCanPreviewTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanReadTemplate

Check to see if the user can read/view a template.

userCanReadTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanSendTemplate

Confirm whether the user can create an envelope using the specified template.

userCanSendTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userCanUpdateTemplate

Check to see if the user can update a tempate.

userCanUpdateTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userHasSharedTemplate

Check to see if a template is "shared" with the user.

userHasSharedTemplate(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.userIsTemplateCreator

Check to see if the user created the template.

userIsTemplateCreator(profile: undefined | null | IProfile, template: ITemplate): undefined | null | boolean
ParameterTypeDescription
profileundefined | null | IProfile
templateITemplate

template.canPerformTemplateAction

Not yet available for Python.

template.getFieldsForRole

Not yet available for Python.

template.hasRequiredPermissions

Not yet available for Python.

template.userCanBuildTemplate

Check to see if the user can "build" the template (use the field builder). The user must have write access to the template, and the template must have at least one signer role.

Not yet available for Python.

template.userCanChangeOrgVisibility

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for Python.

template.userCanCreateOrgTemplate

Check to see if the user can create an org-shared template.

Not yet available for Python.

template.userCanCreatePersonalTemplate

Check to see if the user can create a personal/private template.

Not yet available for Python.

template.userCanCreatePublicTemplate

Check to see if the user can create a public template.

Not yet available for Python.

template.userCanCreateTemplate

Confirm whether the user can create a new template.

Not yet available for Python.

template.userCanDeleteTemplate

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for Python.

template.userCanMakeTemplatePrivate

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for Python.

template.userCanMakeTemplatePublic

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for Python.

template.userCanMakeTemplateShared

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for Python.

template.userCanPreviewTemplate

Check to see if the user can preview the template. The user must have read access to the template, the template must have at least one signer, and every signer must have at least one field.

Not yet available for Python.

template.userCanReadTemplate

Check to see if the user can read/view a template.

Not yet available for Python.

template.userCanSendTemplate

Confirm whether the user can create an envelope using the specified template.

Not yet available for Python.

template.userCanUpdateTemplate

Check to see if the user can update a tempate.

Not yet available for Python.

template.userHasSharedTemplate

Check to see if a template is "shared" with the user.

Not yet available for Python.

template.userIsTemplateCreator

Check to see if the user created the template.

Not yet available for Python.

template.canPerformTemplateAction

Not yet available for C#.

template.getFieldsForRole

Not yet available for C#.

template.hasRequiredPermissions

Not yet available for C#.

template.userCanBuildTemplate

Check to see if the user can "build" the template (use the field builder). The user must have write access to the template, and the template must have at least one signer role.

Not yet available for C#.

template.userCanChangeOrgVisibility

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for C#.

template.userCanCreateOrgTemplate

Check to see if the user can create an org-shared template.

Not yet available for C#.

template.userCanCreatePersonalTemplate

Check to see if the user can create a personal/private template.

Not yet available for C#.

template.userCanCreatePublicTemplate

Check to see if the user can create a public template.

Not yet available for C#.

template.userCanCreateTemplate

Confirm whether the user can create a new template.

Not yet available for C#.

template.userCanDeleteTemplate

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for C#.

template.userCanMakeTemplatePrivate

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for C#.

template.userCanMakeTemplatePublic

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for C#.

template.userCanMakeTemplateShared

Check to see if the user can change whether a template is personal vs org-shared.

Not yet available for C#.

template.userCanPreviewTemplate

Check to see if the user can preview the template. The user must have read access to the template, the template must have at least one signer, and every signer must have at least one field.

Not yet available for C#.

template.userCanReadTemplate

Check to see if the user can read/view a template.

Not yet available for C#.

template.userCanSendTemplate

Confirm whether the user can create an envelope using the specified template.

Not yet available for C#.

template.userCanUpdateTemplate

Check to see if the user can update a tempate.

Not yet available for C#.

template.userHasSharedTemplate

Check to see if a template is "shared" with the user.

Not yet available for C#.

template.userIsTemplateCreator

Check to see if the user created the template.

Not yet available for C#.

Token

token.AtoB

Simplified, Node/Browser-safe alternative to atob() for base64 decoding. Modified from https://github.com/MaxArt2501/base64-js/blob/master/base64.js

AtoB(str: string): string
ParameterTypeDescription
strstring

token.decodeAccessTokenBody

Decode the body of an Verdocs access token. Note that raw tokens contain namespaced fields, e.g. `https://verdocs.com/profile_id`. To make these tokens easier to use in front-end code, this name-spacing will be removed. Note that user and signing sessions have different access token formats. The calling application should distinguish between the two based on the context of the authenticated session, or by the presence of the `document_id` field, which will only be present for signing sessions.

decodeAccessTokenBody(token: string): TSession
ParameterTypeDescription
tokenstring{String}

token.decodeJWTBody

Decode the body of a JWT. This helper may allow front-end applications to avoid a dependency on `jsonwebtoken` in many cases. Note that this should only be used for true JWTs. Opaque tokens will cause this to throw.

decodeJWTBody(token: string): any
ParameterTypeDescription
tokenstring

token.AtoB

Simplified, Node/Browser-safe alternative to atob() for base64 decoding. Modified from https://github.com/MaxArt2501/base64-js/blob/master/base64.js

Not yet available for Python.

token.decodeAccessTokenBody

Decode the body of an Verdocs access token. Note that raw tokens contain namespaced fields, e.g. `https://verdocs.com/profile_id`. To make these tokens easier to use in front-end code, this name-spacing will be removed. Note that user and signing sessions have different access token formats. The calling application should distinguish between the two based on the context of the authenticated session, or by the presence of the `document_id` field, which will only be present for signing sessions.

decode_access_token_body(token: str | None) -> dict[str, Any] | None
ParameterTypeDescription
tokenstr | NoneThe access token; None is treated as empty.

token.decodeJWTBody

Decode the body of a JWT. This helper may allow front-end applications to avoid a dependency on `jsonwebtoken` in many cases. Note that this should only be used for true JWTs. Opaque tokens will cause this to throw.

decode_jwt_body(token: str | None) -> Any
ParameterTypeDescription
tokenstr | NoneThe JWT; None is treated as empty.

token.AtoB

Simplified, Node/Browser-safe alternative to atob() for base64 decoding. Modified from https://github.com/MaxArt2501/base64-js/blob/master/base64.js

Not yet available for C#.

token.decodeAccessTokenBody

Decode the body of an Verdocs access token. Note that raw tokens contain namespaced fields, e.g. `https://verdocs.com/profile_id`. To make these tokens easier to use in front-end code, this name-spacing will be removed. Note that user and signing sessions have different access token formats. The calling application should distinguish between the two based on the context of the authenticated session, or by the presence of the `document_id` field, which will only be present for signing sessions.

Not yet available for C#.

token.decodeJWTBody

Decode the body of a JWT. This helper may allow front-end applications to avoid a dependency on `jsonwebtoken` in many cases. Note that this should only be used for true JWTs. Opaque tokens will cause this to throw.

Not yet available for C#.

Validators

validator.getValidators

Get a list of available validators for field inputs. Note that validators always check strings, because that is all a user can enter in an HTML input field. Numeric-format validators should perform any necessary conversions internally. Validators never throw - they just return a boolean. indicating whether the value is valid.

getValidators(): string[]

validator.isValidEmail

Check whether a string is a validly-formatted email address.

isValidEmail(email: undefined | string): boolean
ParameterTypeDescription
emailundefined | string

validator.isValidInput

isValidInput(value: string, validator: string): boolean
ParameterTypeDescription
valuestring
validatorstring

validator.isValidPhone

Check whether a string looks like a valid phone number, in domestic or international format.

isValidPhone(phone: undefined | string): boolean
ParameterTypeDescription
phoneundefined | string

validator.isValidRoleName

isValidRoleName(value: string, roles: IRole[]): boolean
ParameterTypeDescription
valuestring
rolesIRole[]

validator.isValidTag

isValidTag(value: string, tags: string[]): boolean
ParameterTypeDescription
valuestring
tagsstring[]

validator.getValidators

Get a list of available validators for field inputs. Note that validators always check strings, because that is all a user can enter in an HTML input field. Numeric-format validators should perform any necessary conversions internally. Validators never throw - they just return a boolean. indicating whether the value is valid.

get_validators() -> list[str]

validator.isValidEmail

Check whether a string is a validly-formatted email address.

is_valid_email(email: str | None) -> bool
ParameterTypeDescription
emailstr | NoneThe value to check; None and the empty string fail.

validator.isValidInput

is_valid_input(value: str, validator: str) -> bool
ParameterTypeDescription
valuestrThe value to check.
validatorstrThe validator name; see get_validators for the options.

validator.isValidPhone

Check whether a string looks like a valid phone number, in domestic or international format.

is_valid_phone(phone: str | None) -> bool
ParameterTypeDescription
phonestr | NoneThe value to check; None and the empty string fail.

validator.isValidRoleName

is_valid_role_name(value: str, roles: list[Role]) -> bool
ParameterTypeDescription
valuestrThe role name to look for.
roleslist[Role]The template's roles.

validator.isValidTag

is_valid_tag(value: str, tags: list[str]) -> bool
ParameterTypeDescription
valuestrThe tag to check.
tagslist[str]Already-known tags, which pass regardless of format.

validator.getValidators

Get a list of available validators for field inputs. Note that validators always check strings, because that is all a user can enter in an HTML input field. Numeric-format validators should perform any necessary conversions internally. Validators never throw - they just return a boolean. indicating whether the value is valid.

Not yet available for C#.

validator.isValidEmail

Check whether a string is a validly-formatted email address.

Not yet available for C#.

validator.isValidInput

Not yet available for C#.

validator.isValidPhone

Check whether a string looks like a valid phone number, in domestic or international format.

Not yet available for C#.

validator.isValidRoleName

Not yet available for C#.

validator.isValidTag

Not yet available for C#.