Static ReadonlyAuthorizesTrue when the action authorizes its caller itself, so a public entry point such as the
RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller
must hold, or reads and writes only with the caller's own permissions. Leave it false for an
action that acts with more authority than its caller, or that reaches data or sends messages
the caller chooses but could not otherwise reach.
The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.
ProtectedapiProtectedformThe form platform this action is designed for (e.g., 'Typeform', 'Google Forms', etc.)
ProtectedintegrationThe integration name to look up in the Integration entity
ProtectedbuildHelper to build consistent error messages for form operations
OptionalsystemError: anyProtectedcalculateProtectedcalculateCalculate completion rate percentage
ProtectedconvertConvert responses to CSV format
ProtectedcreateProtectedcreateCreates an OAuth2Manager instance for the specified company. Override this method in provider-specific base classes to configure OAuth2 endpoints.
The MemberJunction company ID
The user context
OAuth2Manager instance or null if OAuth2 is not configured
ProtectedextractProtectedfindFind most common answers for choice fields
ProtectedformatFormat duration in seconds to human readable format
ProtectedformatStandard date format for form platforms (ISO 8601)
ProtectedgetGet all submissions with automatic pagination
Optionaloptions: {ProtectedgetGets API credentials - first tries environment variables, then falls back to database
ProtectedgetGet axios instance with JotForm authentication
Optionalregion: "us" | "eu" | "hipaa"ProtectedgetCommon form builder parameters that many actions will need. CompanyID is required for secure credential lookup. FormID is the platform-specific form identifier.
ProtectedgetGets the company integration record for the specified company and form platform
ProtectedgetGets credentials from environment variables Format: BIZAPPS_{PROVIDER}{COMPANY_ID}{CREDENTIAL_TYPE} Example: BIZAPPS_TYPEFORM_12345_API_TOKEN
Falls back to: BIZAPPS_{PROVIDER}_{CREDENTIAL_TYPE} if no company-specific credential found Example fallback: BIZAPPS_TYPEFORM_API_TOKEN
ProtectedgetGet form details
Optionalregion: "us" | "eu" | "hipaa"ProtectedgetGet form questions/fields
Optionalregion: "us" | "eu" | "hipaa"ProtectedgetGet submissions from a JotForm
Optionaloptions: {ProtectedgetHelper to get parameter value with type safety
ProtectedgetGet regional base URL
Optionalregion: "us" | "eu" | "hipaa"ProtectedgetHelper to securely retrieve API token for a company. This method should be used by all form builder actions instead of accepting tokens as parameters.
The MemberJunction company ID (required)
The user context for database queries
The API token for the specified company
ProtectedgetGet a single submission by ID
Optionalregion: "us" | "eu" | "hipaa"ProtectedgroupProtectedhandleHandle JotForm-specific errors
ProtectedInternalInternal method that must be implemented by derived action classes. This is where the actual action logic should be implemented.
The action execution parameters including typed context
Promise resolving to the action result
ProtectednormalizeNormalize JotForm submission to common format
ProtectedparseParse date from form platform format
Executes the action with the provided parameters.
The action execution parameters including context
Promise resolving to the action result
ProtectedsleepSleep helper for rate limiting
Action to retrieve complete details of a JotForm including questions, properties, and settings
Security: API credentials are retrieved securely from Company Integrations instead of being passed as parameters.
Example