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
Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone
besides the caller who will see its output, such as the other participants of a shared conversation.
false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller,
ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running
it. Override to return true only when the action honours the audience in full — every record, snippet
and count it returns is something every reader may see (pass the audience to the search engine, check each
reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).
ProtectedbuildBuild filter string for Google Forms API Filters use a SQL-like syntax: timestamp > "2024-01-01T00:00:00Z"
ProtectedbuildHelper to build consistent error messages for form operations
OptionalsystemError: anyProtectedcalculateProtectedcalculateCalculate completion rate percentage
ProtectedconvertConvert responses to CSV format
ProtectedcreateCreates 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
ProtectedextractProtectedextractExtract question information from form details Useful for building comprehensive reports with question titles
ProtectedfindFind most common answers for choice fields
ProtectedformatFormat duration in seconds to human readable format
ProtectedformatStandard date format for form platforms (ISO 8601)
ProtectedformatFormat date for Google Forms API (RFC3339 format)
ProtectedgetGet all responses with automatic pagination using pageToken
Optionaloptions: { filter?: string; maxResponses?: number }ProtectedgetGets API credentials - first tries environment variables, then falls back to database
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 including questions and settings
ProtectedgetGet responses from a Google Form
Optionaloptions: { filter?: string; pageSize?: number; pageToken?: string }ProtectedgetGet the HTTP client configured with Google Forms authentication (OAuth 2.0)
ProtectedgetHelper to get parameter value with type safety
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 response by ID
ProtectedgroupProtectedhandleHandle Google Forms-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
ProtectedisProtectednormalizeNormalize Google Forms response to common format
OptionalformDetails: GoogleFormsDetailsProtectedparseParse date from form platform format
ProtectedparseParse Google Forms date string (RFC3339 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 and pagination delays
Action to retrieve a specific response from Google Forms by response ID
Security: This action uses secure credential lookup via Company Integrations. API credentials are retrieved from environment variables or the database based on CompanyID.
Example