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.
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).
ProtectedanalyzeAnalyze error from entity save/delete operation and return appropriate result
ProtectedfindFinds the closest matching candidate names for a mistyped entity or field name using normalized substring containment and Levenshtein edit distance.
ProtectedgetExtract and validate the EntityName parameter
ProtectedgetGet entity metadata and create entity object
Optionalprovider: IMetadataProviderProtectedgetExtract and validate the Fields parameter (an object, or a JSON string of one).
ProtectedgetExtract and normalize the PrimaryKey parameter into a { keyColumn: value } map.
Accepted shapes, so an agent or workflow can hand over whatever it has in hand:
{ ID: '...' }, { UserID, RoleID }CompositeKey serialization — { KeyValuePairs: [{ FieldName, Value }, ...] }'8F1C...', 42), which is mapped onto the
entity's one key column whatever it is calledA bare value for a composite-key entity is rejected with a message listing the required columns.
Requires entityInfo, so call getEntityObject first.
ProtectedhandleHandle generic errors with consistent formatting
Creates a new record for the specified entity type.
The action parameters containing:
ActionResultSimple with:
ProtectedloadLoad an existing record using primary key
ProtectedresolveResolve a field name against entity metadata (EntityInfo.Fields / BaseEntity.GetFieldByName)
or prototype properties (fieldName in entity), matching case-insensitively and returning the
canonical field name.
Dynamic and OpenApp entities that do not have a generated TypeScript subclass registered in
ClassFactory are instantiated as generic BaseEntity instances. On a generic BaseEntity,
fields live in entity.Fields / entityInfo.Fields rather than as JS getter/setter properties
on the prototype (fieldName in entity === false), which is why metadata is consulted first.
OptionalentityInfo: Pick<EntityInfo, "Fields">Executes the action with the provided parameters.
The action execution parameters including context
Promise resolving to the action result
ProtectedsetSet field values on an entity, resolving each supplied name to its canonical field name. Call validateFieldNames first; a name that still fails to resolve is logged and skipped.
OptionalentityInfo: Pick<EntityInfo, "Fields">ProtectedvalidateRejects a Fields payload that names a field the entity does not have, so a typo fails fast
with the valid choices instead of being dropped on the floor and reported as success.
Returns null when every field resolves.
Creates a new user in the MemberJunction system with validation and optional employee linking. This action extends CreateRecordAction to leverage existing record creation functionality while adding user-specific validation and business logic.