Understanding Instant JSON action types

Types

This section explains how to use type declarations in Instant JSON records.

The optional keys are specified as follows:

{ optionalKey?: value; }

To save traffic, these keys shouldn’t be included in the record if the value is undefined.

Action types

Only a subset of all possible annotation actions is supported. These can be triggered when clicking or pressing on a link annotation:

// Example of an Instant JSON payload for a `GoToAction` action:
{
  "pageIndex": 0,
  "type": "goTo"
}
declare type BaseAction = {
  subAction?: Action
};

declare type GoToAction = BaseAction & {
  type: "goTo",
  // The `pageIndex` you want to go to.
  pageIndex: number
};

declare type GoToRemoteAction = BaseAction & {
  type: "goToRemote",
  relativePath: string,
  namedDestination: string
};

declare type GoToEmbeddedAction = BaseAction & {
  type: "goToEmbedded",
  newWindow: boolean,
  relativePath: string,
  targetType: "parent" | "child"
};

declare type LaunchAction = BaseAction & {
  type: "launch",
  filePath: string
};

declare type URIAction = BaseAction & {
  type: "uri",
  // URI, e.g.: `https://pspdfkit.com`
  uri: string
};

declare type AnnotationReference = {
  fieldName?: string,
  pdfObjectId?: number
};

declare type HideAction = BaseAction & {
  type: "hide",
  hide: boolean,
  annotationReferences: Array<AnnotationReference>
};

declare type JavaScriptAction = BaseAction & {
  type: "javaScript",
  script: string
};

declare type SubmitFormFlags = Array<
  | "includeExclude"
  | "includeNoValueFields"
  | "exportFormat"
  | "getMethod"
  | "submitCoordinated"
  | "xfdf"
  | "includeAppendSaves"
  | "includeAnnotations"
  | "submitPDF"
  | "canonicalFormat"
  | "excludeNonUserAnnotations"
  | "excludeFKey"
  | "embedForm"
>;

declare type SubmitFormAction = BaseAction & {
  type: "submitForm",
  uri: string,
  flags: SubmitFormFlags,
  fields?: Array<AnnotationReference>
};

declare type ResetFormAction = BaseAction & {
  type: "resetForm",
  flags?: "includeExclude",
  fields?: Array<AnnotationReference>
};

declare type NamedAction = BaseAction & {
  type: "named",
  action:
    | "nextPage"
    | "prevPage"
    | "firstPage"
    | "lastPage"
    | "goBack"
    | "goForward"
    | "goToPage"
    | "find"
    | "print"
    | "outline"
    | "search"
    | "brightness"
    | "zoomIn"
    | "zoomOut"
    | "saveAs"
    | "info"
};

declare type Action =
  | GoToAction
  | GoToRemoteAction
  | GoToEmbeddedAction
  | LaunchAction
  | URIAction
  | HideAction
  | JavaScriptAction
  | SubmitFormAction
  | ResetFormAction
  | NamedAction;