Module Data Types¶
Overview¶
These data types are the building blocks returned to and consumed by Module methods. Use them to navigate documents, parameters (fields/labels), verifications, datasets, users, and work items in your custom code.
Type Reference¶
IApplicationUser¶
Signature:
IApplicationUser
Description:
Represents an AIForged application user.
Key members (commonly used):
- Id :
string - UserName :
string - Email :
string - PhoneNumber :
string - FriendlyName :
string (readonly) - JobTitle :
string - FullName :
string - Configuration :
string - IsEnabled :
bool - IsLockedOut :
bool (readonly)
Usage:
var user = module.GetUserAsync("user-guid");
if (user?.IsEnabled == true)
{
logger.LogInformation("User: {name}", user.FriendlyName ?? user.UserName);
}
When to use:
- When working with user identity outside of project-role context.
Tip:
- Use project-scoped user retrieval (e.g., GetUsers) when you need roles/permissions.
IClasses¶
Signature:
IClasses
Description:
Represents a document category (class) within a project.
Key members (commonly used):
- UserId :
string - ProjectId :
int - Name:
string - Description :
string - Comment :
string - DTC / DTM :
DateTime - Type :
ClassType? - Related :
int? - Id :
int
Usage:
var cls = module.GetClass(1234);
logger.LogInformation("Class: {id}", cls?.ProjectId);
When to use:
- For classification-driven routing or rules per document category.
Tip:
- Retrieve classes by ID for reliability; names can evolve.
ICustomDataSet¶
Signature:
ICustomDataSet
Description:
Represents a custom dataset (schema + records) for lookups and enrichment.
Key members (commonly used):
- Data :
List - Definitions :
List - ProjectId :
int - ServiceId :
int (StpdId is obsolete) - KeyDef / KeyDefId:
int - IncludeData / IncludeVerifications :
bool - SearchField / SearchValue :
string - Paging/sorting: PageNo, PageSize, SortFieldDefId, SortDirection
Notable methods:
CreateRecord(key),AddRecord(rec/key),DeleteRecord(key|id|rec)FindField(id|name),FindRecord(key|id|rec),FindRecord(fieldId, value)GetBestOption(value, getValue|fieldId|fieldDef)SetValue(rec, fieldId|name, value),SetValues(...)
Usage:
var field = dataset.FindField("CustomerID");
var best = dataset.GetBestOption("acme ltd", fieldId: field.Id, ignoreCase: true);
When to use:
- Master/reference data lookups, deduplication, and enrichment.
Tip:
- Cache dataset and field lookups within a run for performance.
ICustomDataSetRecord¶
Signature:
ICustomDataSetRecord
Description:
Represents a single row in a custom dataset.
Key members (commonly used):
- KeyId :
int - KeyValue :
string - KeyDefId :
int - Values :
List - Availability :
Availability?
Notable methods:
GetValue(fieldId|fieldDef),SetValue(fieldId|fieldDef, value)FindValue(fieldId|fieldDef, value),AddValue(fieldId, value), Delete()
Usage:
var rec = module.GetDataSetRecord(dataset, fieldId, key, true);
var cell = rec?.GetValue(fieldId);
When to use:
- Read/update a single dataset entry.
Tip:
- Use meaningful keys (e.g., business ID or GUID) for traceability.
ICustomDataSetValue¶
Signature:
ICustomDataSetValue
Description:
Represents a cell value within a dataset record.
Key members (commonly used):
- DefId :
int - Value :
string - Confidence :
float? - Status :
VerificationStatus? - Type :
VerificationType? - Provider :
string - Result :
string - VerificationId :
int? - Index / ParentId :
int? - DT :
DateTime? - Availability :
Availability?
Usage:
foreach (var v in record.Values)
logger.LogInformation("Field {def} -> {val}", v.DefId, v.Value);
When to use:
- Inspect value provenance and confidence for compliance decisions.
Tip:
- Confidence and Status are useful for QA and auto-accept thresholds.
IDocument¶
Signature:
IDocument
Description:
Represents a document (file/image) and its workflow state.
Key members (commonly used):
- Id :
int - ProjectId :
int - Filename / FileType / ContentType :
string - ServiceId :
int - ClassId :
int? - Status :
DocumentStatus - Usage :
UsageType - DTC / DTM :
DateTime - DocumentId :
Guid? - ExternalId :
string - MasterId :
int? - Result / ResultId / ResultIndex :
string - Comment :
string - Availability :
Availability? - Class :
IClasses - Project :
IProject
Usage:
var master = module.GetDocumentMaster(doc);
module.SetDocumentStatus(doc, DocumentStatus.Processed, "Auto", "OK");
await module.SaveChangesAsync();
When to use:
- Any file-centric operation, including status transitions.
Tip:
- Always persist after state changes.
IDocumentData¶
Signature:
IDocumentData
Description:
Represents a data blob or metadata entry tied to a document (e.g., page image, OCR text).
Key members (commonly used):
- Type :
DocumentDataType? - Data :
byte[] - Preview :
byte[] - Text :
string - Info :
string - ContentType :
string - Index : i
nt? - Width / Height / Resolution :
double? - ResultId :
string - Availability :
Availability?
Usage:
var pages = module.GetDocumentData(doc, null);
var page1 = pages?.FirstOrDefault(p => p.Index == 0);
When to use:
- When you need bytes/text/content metadata for downstream processing.
Tip:
- Filter by type to reduce memory and processing overhead.
IDocumentParameter¶
Signature:
IDocumentParameter
Description:
Represents a field/label value on a document (supports parent-child and verifications).
Key members (commonly used):
- ParamDefId :
int? - ParentId :
int? - SourceId :
int? - Value :
string - Data :
byte[] - Index :
int? - ColIndex/ColSpan/RowIndex/RowSpan :
int? - Availability :
Availability? - ParamDef :
IParameterDef - Children :
List - Verifications :
List - LastVerification :
IVerification
Usage:
var par = module.FindParameter(doc.Id, paramDefId, includeVerification: true);
if (par != null) { /* read/write par.Value */ }
When to use:
- Read/write field values; inspect verification history at field level.
Tip:
- Use GetParameters for repeated/indexed fields (tables/arrays).
IParameterDef¶
Signature:
IParameterDef
Description: Represents a parameter (field/label/setting) definition and metadata.
Key members (commonly used):
- Id :
int - ServiceTypeId :
int - ServiceId :
int? - ClassId :
int? - ParentId :
int? - Label :
string - Description :
string - DTC / DTM :
DateTime? - Tags :
string - Status :
ParameterDefinitionStatus - Category :
ParameterDefinitionCategory? - Grouping :
GroupingType? - ValueType :
DAL.ValueType - ValueTypeName :
string - DefaultValue :
string - Required : R
equiredOption - Index :
int? - Info :
string - Reference :
string - Availability :
Availability? - Parent :
IParameterDef
Usage:
var def = module.FindParameterDef("InvoiceNumber", stpd.Id, null, null, null, null, null);
When to use:
- Resolve definitions before interacting with document parameters.
Tip:
- Cache definition IDs for frequently accessed fields.
IProject¶
Signature:
IProject
Description:
Represents a project/agent context.
Key members (commonly used):
- Id :
int - Name :
string - UserId :
string - Status :
ProjectStatus - Description / Comment :
string - dtc / dtm :
DateTime
Usage:
var projectClasses = module.GetClasses(projectId);
When to use:
- For project-scoped queries and routing.
Tip:
- Always pass projectId where method overloads allow scoping.
IVerification¶
Signature:
IVerification
Description:
Represents a verification entry associated with a document parameter.
Key members (commonly used):
- Id :
int - ParameterId :
int - UserId :
string - Value :
string - DT :
DateTime - Confidence :
float? - SymbolsConfidence :
string - Type :
VerificationType - Status :
VerificationStatus - Result :
string - Info :
string - Box :
string - Data :
byte[] - ServiceId / ServiceDocId :
int? - Provider :
string - SettingId / WorkItem / TransactionId :
int? - ReferenceDocId / ReferenceParamId / ReferenceDefId :
int?
Usage:
var v = module.FindVerification(parameter);
module.AddVerification(v, VerificationStatus.Verified, "Normalized", "By Custom Code");
await module.SaveChangesAsync();
When to use:
- Record decisions, system checks, and user actions for audit trails.
Tip:
- Filter verification history for targeted diagnostics and analytics.
IWorkItem¶
Signature:
IWorkItem
Description:
Represents a Human-in-the-Loop task to be actioned.
Key members (commonly used):
- Id :
int - ProjectId :
int? - UserId :
string - ServiceId / DocumentId / ShredId / DefId / VerificationId / TransactionId :
int? - WorkItemId :
int?(parent) - Type :
WorkItemType - Action :
WorkItemAction - Status :
WorkItemStatus - Method :
WorkItemMethod? - Info / Comment :
string - DTC / DTM / DueDate :
DateTime - Open / Closed :
DateTime? - Duration :
TimeSpan?
Usage:
// Create work item after selecting an assignee (userId)
When to use:
- Assign and track HITL activities with clear SLAs.
Tip:
- Log βwho/why/whenβ for compliance and reporting.
Best Practices¶
- Resolve parameter definitions by ID wherever possible; use names with filters only when necessary.
- Treat IDocumentParameter as the canonical interface for reading/writing document fields.
- Cache heavy lookups (datasets, definitions, users) inside a single run to reduce overhead.
- Always null-check objects returned by lookups and persist after state changes.
Important note and request for confirmation
- You mentioned IProjectUser no longer exists. Thank you for the heads-up. Several earlier method signatures (e.g., CreateWorkItem and PickRandom) referenced IProjectUser. What is the correct replacement type you want documented for assignee/selectionβshould we use a userId string, IApplicationUser, or a new interface (e.g., IProjectMember)? Once you confirm, I will:
- Update those method pages to the correct signatures and usage.
- Adjust this data types page accordingly (removing IProjectUser completely or adding the new type).