Table of Contents

Class MegaFormClient

Namespace
MegaForm.Sdk
Assembly
MegaForm.Sdk.dll

Default IMegaFormClient — a thin facade that maps SDK DTOs to/from MegaForm.Core repositories. It does NOT contain business logic; it reuses Core. Tenant/user context comes from the ambient MegaForm.Core.Interfaces.IPlatformContext (when the host provides one) and can be overridden per call via MegaFormScope.

public sealed class MegaFormClient : IMegaFormClient, IFormApi, ISubmissionApi, IDashboardApi, ISubmissionDashboardApi, IInboxApi, IFileApi, ISchemaApi
Inheritance
MegaFormClient
Implements
Inherited Members

Constructors

MegaFormClient(IFormRepository, ISubmissionRepository, IPlatformContext?, IFileRepository?, IStorageService?, SubmissionProcessor?)

Create a client. platform/files/storage are optional — when platform is null, every call must pass an explicit MegaFormScope; file APIs need files+storage. submissionProcessor is optional: when supplied (the host registered it in DI), SubmitAsync runs the FULL submission pipeline (validate + anti-spam + notify + workflow + index), identical to a public form submit; when null, it falls back to validate-then-insert.

public MegaFormClient(IFormRepository forms, ISubmissionRepository submissions, IPlatformContext? platform = null, IFileRepository? files = null, IStorageService? storage = null, SubmissionProcessor? submissionProcessor = null)

Parameters

forms IFormRepository
submissions ISubmissionRepository
platform IPlatformContext
files IFileRepository
storage IStorageService
submissionProcessor SubmissionProcessor

MegaFormClient(IFormRepository, ISubmissionRepository, IPlatformContext?, IFileRepository?, IStorageService?, SubmissionProcessor?, WorkflowTaskService?, IWorkflowRepository?)

Create a client with optional dashboard/inbox workflow services. This overload is used by hosts that have registered workflow services and want the SDK Inbox surface enabled.

public MegaFormClient(IFormRepository forms, ISubmissionRepository submissions, IPlatformContext? platform, IFileRepository? files, IStorageService? storage, SubmissionProcessor? submissionProcessor, WorkflowTaskService? workflowTasks, IWorkflowRepository? workflowRepository)

Parameters

forms IFormRepository
submissions ISubmissionRepository
platform IPlatformContext
files IFileRepository
storage IStorageService
submissionProcessor SubmissionProcessor
workflowTasks WorkflowTaskService
workflowRepository IWorkflowRepository

Properties

Dashboard

Dashboard summaries for customers building an in-host dashboard.

public IDashboardApi Dashboard { get; }

Property Value

IDashboardApi

Files

Uploaded-file listing + download.

public IFileApi Files { get; }

Property Value

IFileApi

Forms

Form authoring + listing.

public IFormApi Forms { get; }

Property Value

IFormApi

Inbox

Human-task inbox operations backed by the host workflow task service.

public IInboxApi Inbox { get; }

Property Value

IInboxApi

Schema

Parse a form's SchemaJson into typed, read-only field metadata.

public ISchemaApi Schema { get; }

Property Value

ISchemaApi

SubmissionDashboard

Submission dashboard search, detail, and status operations.

public ISubmissionDashboardApi SubmissionDashboard { get; }

Property Value

ISubmissionDashboardApi

Submissions

Submission querying (FindData).

public ISubmissionApi Submissions { get; }

Property Value

ISubmissionApi

Methods

ApproveAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)

Approve an open task and resume the workflow.

public Task<InboxTaskResultDto> ApproveAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxTaskActionRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

AttachFileAsync(InboxFileAttachmentRequest, MegaFormScope?, CancellationToken)

Attach a file to the task's linked submission, then return the stored file metadata.

public Task<InboxFileAttachmentResultDto> AttachFileAsync(InboxFileAttachmentRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxFileAttachmentRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxFileAttachmentResultDto>

ClaimAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)

Claim an open task for the current actor.

public Task<InboxTaskResultDto> ClaimAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxTaskActionRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

CommentAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)

Add a comment to an open task without changing its state.

public Task<InboxTaskResultDto> CommentAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxTaskActionRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

CreateFormAsync(CreateFormRequest, MegaFormScope?, CancellationToken)

Create a new form. Returns the created form (with its new id).

public Task<FormDto> CreateFormAsync(CreateFormRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request CreateFormRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<FormDto>

DeleteAsync(int, MegaFormScope?, CancellationToken)

Permanently delete a submission. No-op if the submission is not in this portal.

public Task DeleteAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task

DeleteFormAsync(int, MegaFormScope?, CancellationToken)

Permanently delete a form.

public Task DeleteFormAsync(int formId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

formId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task

FindAsync(SubmissionQuery, MegaFormScope?, CancellationToken)

Find submissions for a form with optional status filter + paging (FindData).

public Task<PagedResult<SubmissionDto>> FindAsync(SubmissionQuery query, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

query SubmissionQuery
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<PagedResult<SubmissionDto>>

ForwardAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)

Forward an open task to another user or role target.

public Task<InboxTaskResultDto> ForwardAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxTaskActionRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

GetAsync(int, MegaFormScope?, CancellationToken)

Get a single submission by id, or null if not found.

public Task<SubmissionDto?> GetAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<SubmissionDto>

GetDetailAsync(int, MegaFormScope?, CancellationToken)

Load a submission detail payload with schema-derived values, files, and workflow summary when available.

public Task<SubmissionDetailDto?> GetDetailAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<SubmissionDetailDto>

GetFormAsync(int, MegaFormScope?, CancellationToken)

Get a single form by id, or null if not found / not in this portal.

public Task<FormDto?> GetFormAsync(int formId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

formId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<FormDto>

GetMyInboxAsync(InboxQuery?, MegaFormScope?, CancellationToken)

Return the current actor's workboard: incoming, in-progress, completed, and KPI counts.

public Task<InboxBoardDto> GetMyInboxAsync(InboxQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

query InboxQuery
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxBoardDto>

GetOverviewAsync(DashboardQuery?, MegaFormScope?, CancellationToken)

Return per-form counts and recent-submission totals for the current portal.

public Task<DashboardOverviewDto> GetOverviewAsync(DashboardQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

query DashboardQuery
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<DashboardOverviewDto>

GetTaskAsync(string, MegaFormScope?, CancellationToken)

Load one visible task with action history and linked submission summary.

public Task<InboxTaskResultDto> GetTaskAsync(string taskId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

taskId string
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

ListForSubmissionAsync(int, MegaFormScope?, CancellationToken)

List the files uploaded against a submission (metadata only).

public Task<IReadOnlyList<FileDto>> ListForSubmissionAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<IReadOnlyList<FileDto>>

ListFormsAsync(FormQuery?, MegaFormScope?, CancellationToken)

List forms in the current portal with optional filter + paging.

public Task<PagedResult<FormDto>> ListFormsAsync(FormQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

query FormQuery
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<PagedResult<FormDto>>

OpenAsync(int, int, MegaFormScope?, CancellationToken)

Read a file's bytes + metadata for a download response, or null if not found.

public Task<MegaFormFileContent?> OpenAsync(int submissionId, int fileId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
fileId int
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<MegaFormFileContent>

Parse(string)

Parse a form's SchemaJson into typed FormSchemaInfo. Never throws on malformed JSON — returns an empty schema (mirrors the server's fail-soft schema resolver). Row layout is flattened so the field list matches what the server validates.

public FormSchemaInfo Parse(string schemaJson)

Parameters

schemaJson string

Returns

FormSchemaInfo

ParseForm(FormDto)

Convenience overload: parse form.SchemaJson. Throws ArgumentNullException when form is null.

public FormSchemaInfo ParseForm(FormDto form)

Parameters

form FormDto

Returns

FormSchemaInfo

RejectAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)

Reject an open task and resume the workflow.

public Task<InboxTaskResultDto> RejectAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request InboxTaskActionRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxTaskResultDto>

SearchAsync(SubmissionSearchQuery, MegaFormScope?, CancellationToken)

Search submissions with status/search/date filters and dashboard-friendly list rows.

public Task<PagedResult<SubmissionListItemDto>> SearchAsync(SubmissionSearchQuery query, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

query SubmissionSearchQuery
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<PagedResult<SubmissionListItemDto>>

SendSubmissionAsync(SendSubmissionToInboxRequest, MegaFormScope?, CancellationToken)

Create a one-step review task for a submission without requiring a preconfigured workflow.

public Task<InboxSendSubmissionResultDto> SendSubmissionAsync(SendSubmissionToInboxRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

request SendSubmissionToInboxRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<InboxSendSubmissionResultDto>

SubmitAsync(int, Dictionary<string, object>, MegaFormScope?, CancellationToken)

Submit form data, running the same server-side validation as a public form submit. When the host registered the full submission pipeline (anti-spam, notifications, workflow), this delegates to it; otherwise it validates and inserts the row. On a validation failure the result's Success is false and no row is saved.

public Task<SubmitResult> SubmitAsync(int formId, Dictionary<string, object> data, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

formId int
data Dictionary<string, object>
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<SubmitResult>

UpdateAsync(int, Dictionary<string, object>, MegaFormScope?, CancellationToken)

Replace a submission's stored data (full replace, not merge). No-op if the submission is not in this portal.

public Task UpdateAsync(int submissionId, Dictionary<string, object> data, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
data Dictionary<string, object>
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task

UpdateFormAsync(int, UpdateFormRequest, MegaFormScope?, CancellationToken)

Apply a partial update to a form (only non-null members of request change). Returns the updated form. Throws InvalidOperationException when the form does not exist or belongs to another portal.

public Task<FormDto> UpdateFormAsync(int formId, UpdateFormRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

formId int
request UpdateFormRequest
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task<FormDto>

UpdateStatusAsync(int, string, MegaFormScope?, CancellationToken)

Update a submission status after checking that the submission belongs to the current portal.

public Task UpdateStatusAsync(int submissionId, string status, MegaFormScope? scope = null, CancellationToken cancellationToken = default)

Parameters

submissionId int
status string
scope MegaFormScope
cancellationToken CancellationToken

Returns

Task