tvpl.api

<back to all web services

GetSingleWorkflowStepRequest

Requires Authentication
The following routes are available for this service:
GET/WorkflowStep/{WorkflowId}/{StepId}

export class BasicUploadedFile
{
    public fileName: string;
    public filekey: string;
    public fileUrl: string;
    public checksum: string;
    public eTag: string;
    public fileSize: number;

    public constructor(init?: Partial<BasicUploadedFile>) { (Object as any).assign(this, init); }
}

export class UploadedFiles extends BasicUploadedFile
{
    public id?: number;
    public uploadedFile: string;
    public subDocumentId?: number;
    public stepId?: number;
    public code: number;

    public constructor(init?: Partial<UploadedFiles>) { super(init); (Object as any).assign(this, init); }
}

export class BasicSignerConfig
{
    public subDocumentId?: number;
    public departmentId?: number;
    public signerType: number;
    public signerRefId: number;
    // @Ignore()
    public signerRefText?: string;

    public actionType: number;
    public orderIndex: number;

    public constructor(init?: Partial<BasicSignerConfig>) { (Object as any).assign(this, init); }
}

export class SignerConfig extends BasicSignerConfig
{
    public id: number;
    public documentId: number;
    public stepId?: number;

    public constructor(init?: Partial<SignerConfig>) { super(init); (Object as any).assign(this, init); }
}

export class WorkFlowProfile
{
    public id: number;
    public name?: string;
    public fullName?: string;
    public email?: string;
    public departmentId?: number;
    public avatar?: string;
    public telephone?: string;
    public birthday?: string;
    public confirmStatus?: number;
    public confirmStatusText?: string;
    public confirmAt?: string;
    public signAt?: string;
    public signedFileId?: number;
    public originalFileId?: number;
    public signedFileName?: string;
    public isSigned: boolean;
    public signStatusText?: string;
    public comment?: string;

    public constructor(init?: Partial<WorkFlowProfile>) { (Object as any).assign(this, init); }
}

export class Roles
{
    public id: number;
    // @StringLength(50)
    public name: string;

    public createdAt?: string;
    public deletedAt?: string;
    public updatedAt?: string;
    public updatedBy?: number;
    public deletedBy?: number;
    public createdBy?: number;
    // @Ignore()
    public permission?: string[];

    public constructor(init?: Partial<Roles>) { (Object as any).assign(this, init); }
}

export class SignerConfigDetail extends SignerConfig
{
    public profile?: WorkFlowProfile;
    public role?: Roles;

    public constructor(init?: Partial<SignerConfigDetail>) { super(init); (Object as any).assign(this, init); }
}

export class StepAttached
{
    public id: number;
    public documentCode?: string;
    public title?: string;
    public isSequentialSigning?: boolean;
    public pendingSignFile?: UploadedFiles;
    public originalFile?: UploadedFiles;
    public signerConfigs?: SignerConfigDetail[];

    public constructor(init?: Partial<StepAttached>) { (Object as any).assign(this, init); }
}

export class WorkflowStep
{
    public id: number;
    // @References("typeof(tvpl.data.Models.Document)")
    public workflowId: number;

    public stepOrder?: number;
    public statusId?: number;
    // @Required()
    // @StringLength(255)
    public stepName: string;

    // @Required()
    public isRequired: boolean;

    public slaLegalValue?: number;
    public slaLegalIsByDay?: boolean;
    public slaInternalValue?: number;
    public slaInternalIsByDay?: boolean;
    public requireAttachment: boolean;
    public isUsingForm?: boolean;
    // @Required()
    public description: string;

    public createdBy: number;
    public updatedAt?: string;
    public defaultAttachedDocumentId?: number;
    // @Ignore()
    public departmentIds?: number[];

    // @Ignore()
    public mainAssigneeIds?: number[];

    // @Ignore()
    public coDepartmentIds?: number[];

    // @Ignore()
    public supportingAssigneeIds?: number[];

    // @Ignore()
    public stepBasisDocumentIds?: number[];

    // @Ignore()
    public attachedDocuments?: StepAttached[];

    // @Ignore()
    public attachedFiles?: UploadedFiles[];

    public constructor(init?: Partial<WorkflowStep>) { (Object as any).assign(this, init); }
}

export enum CategoryTypes
{
    Department = 'Department',
    PartyGroup = 'PartyGroup',
    DocGroup = 'DocGroup',
    DocType = 'DocType',
    IssuingAgency = 'IssuingAgency',
    Status = 'Status',
    Subjects = 'Subjects',
    Workflow = 'Workflow',
    WorkStatus = 'WorkStatus',
    StepStatus = 'StepStatus',
    SignStatus = 'SignStatus',
}

export class CreateCategoryModel
{
    public name: string;
    public longName?: string;
    public description: string;
    public type: CategoryTypes;
    public isParty: boolean;
    // @Ignore()
    public childList?: number[];

    public constructor(init?: Partial<CreateCategoryModel>) { (Object as any).assign(this, init); }
}

export class Category extends CreateCategoryModel
{
    public id: number;
    public level: number;
    public key?: string;
    public sortOrder: number;
    public lastUpdate?: string;
    // @Ignore()
    public children: Category[];

    public constructor(init?: Partial<Category>) { super(init); (Object as any).assign(this, init); }
}

export class SimpleDocumentRelation
{
    public id: number;
    public title: string;
    public documentCode: string;
    public publicationDate?: string;
    public isSequentialSigning?: boolean;
    public statusText?: string;
    public statusKey?: string;
    public documentTypeId?: number;

    public constructor(init?: Partial<SimpleDocumentRelation>) { (Object as any).assign(this, init); }
}

export class WorkflowStepDetail extends WorkflowStep
{
    public departments?: Category[];
    public coDepartments?: Category[];
    public basisDocuments?: SimpleDocumentRelation[];
    public referenceDocuments?: SimpleDocumentRelation[];
    public mainAssignees?: WorkFlowProfile[];
    public supportingAssignees?: WorkFlowProfile[];
    public statusKey?: string;
    public statusText?: string;
    // @Ignore()
    public canRead?: boolean;

    // @Ignore()
    public canWrite?: boolean;

    // @Ignore()
    public canUpload?: boolean;

    public reasonReturn?: string;
    public returnDate?: string;

    public constructor(init?: Partial<WorkflowStepDetail>) { super(init); (Object as any).assign(this, init); }
}

export class GetSingleWorkflowStepResponse implements IResponseRequest
{
    public code: number;
    public message: string;
    public data?: WorkflowStepDetail;

    public constructor(init?: Partial<GetSingleWorkflowStepResponse>) { (Object as any).assign(this, init); }
}

export class GetSingleWorkflowStepRequest
{
    public workflowId: number;
    public stepId: number;

    public constructor(init?: Partial<GetSingleWorkflowStepRequest>) { (Object as any).assign(this, init); }
}

TypeScript GetSingleWorkflowStepRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /WorkflowStep/{WorkflowId}/{StepId} HTTP/1.1 
Host: etc-api.vsmlab.vn 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	code: 0,
	message: String,
	data: 
	{
		departments: 
		[
			{
				id: 0,
				level: 0,
				key: String,
				sortOrder: 0,
				lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
				children: 
				[
					{
						id: 0,
						level: 0,
						key: String,
						sortOrder: 0,
						lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
						children: 
						[
							{
								id: 0,
								level: 0,
								key: String,
								sortOrder: 0,
								lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
								name: String,
								longName: String,
								description: String,
								type: Department,
								isParty: False,
								childList: 
								[
									0
								]
							}
						],
						name: String,
						longName: String,
						description: String,
						type: Department,
						isParty: False,
						childList: 
						[
							0
						]
					}
				],
				name: String,
				longName: String,
				description: String,
				type: Department,
				isParty: False,
				childList: 
				[
					0
				]
			}
		],
		coDepartments: 
		[
			{
				id: 0,
				level: 0,
				key: String,
				sortOrder: 0,
				lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
				children: 
				[
					{
						id: 0,
						level: 0,
						key: String,
						sortOrder: 0,
						lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
						children: 
						[
							{
								id: 0,
								level: 0,
								key: String,
								sortOrder: 0,
								lastUpdate: "0001-01-01T00:00:00.0000000+07:06",
								name: String,
								longName: String,
								description: String,
								type: Department,
								isParty: False,
								childList: 
								[
									0
								]
							}
						],
						name: String,
						longName: String,
						description: String,
						type: Department,
						isParty: False,
						childList: 
						[
							0
						]
					}
				],
				name: String,
				longName: String,
				description: String,
				type: Department,
				isParty: False,
				childList: 
				[
					0
				]
			}
		],
		basisDocuments: 
		[
			{
				id: 0,
				title: String,
				documentCode: String,
				publicationDate: "0001-01-01T00:00:00.0000000+07:06",
				isSequentialSigning: False,
				statusText: String,
				statusKey: String,
				documentTypeId: 0
			}
		],
		referenceDocuments: 
		[
			{
				id: 0,
				title: String,
				documentCode: String,
				publicationDate: "0001-01-01T00:00:00.0000000+07:06",
				isSequentialSigning: False,
				statusText: String,
				statusKey: String,
				documentTypeId: 0
			}
		],
		mainAssignees: 
		[
			{
				id: 0,
				name: String,
				fullName: String,
				email: String,
				departmentId: 0,
				avatar: String,
				telephone: String,
				birthday: "0001-01-01T00:00:00.0000000+07:06",
				confirmStatus: 0,
				confirmStatusText: String,
				confirmAt: "0001-01-01T00:00:00.0000000+07:06",
				signAt: "0001-01-01T00:00:00.0000000+07:06",
				signedFileId: 0,
				originalFileId: 0,
				signedFileName: String,
				isSigned: False,
				signStatusText: String,
				comment: String
			}
		],
		supportingAssignees: 
		[
			{
				id: 0,
				name: String,
				fullName: String,
				email: String,
				departmentId: 0,
				avatar: String,
				telephone: String,
				birthday: "0001-01-01T00:00:00.0000000+07:06",
				confirmStatus: 0,
				confirmStatusText: String,
				confirmAt: "0001-01-01T00:00:00.0000000+07:06",
				signAt: "0001-01-01T00:00:00.0000000+07:06",
				signedFileId: 0,
				originalFileId: 0,
				signedFileName: String,
				isSigned: False,
				signStatusText: String,
				comment: String
			}
		],
		statusKey: String,
		statusText: String,
		canRead: False,
		canWrite: False,
		canUpload: False,
		reasonReturn: String,
		returnDate: "0001-01-01T00:00:00.0000000+07:06",
		id: 0,
		workflowId: 0,
		stepOrder: 0,
		statusId: 0,
		stepName: String,
		isRequired: False,
		slaLegalValue: 0,
		slaLegalIsByDay: False,
		slaInternalValue: 0,
		slaInternalIsByDay: False,
		requireAttachment: False,
		isUsingForm: False,
		description: String,
		createdBy: 0,
		updatedAt: "0001-01-01T00:00:00.0000000+07:06",
		defaultAttachedDocumentId: 0,
		departmentIds: 
		[
			0
		],
		mainAssigneeIds: 
		[
			0
		],
		coDepartmentIds: 
		[
			0
		],
		supportingAssigneeIds: 
		[
			0
		],
		stepBasisDocumentIds: 
		[
			0
		],
		attachedDocuments: 
		[
			{
				id: 0,
				documentCode: String,
				title: String,
				isSequentialSigning: False,
				pendingSignFile: 
				{
					id: 0,
					uploadedFile: String,
					subDocumentId: 0,
					stepId: 0,
					code: 0,
					fileName: String,
					filekey: String,
					fileUrl: String,
					checksum: String,
					eTag: String,
					fileSize: 0
				},
				originalFile: 
				{
					id: 0,
					uploadedFile: String,
					subDocumentId: 0,
					stepId: 0,
					code: 0,
					fileName: String,
					filekey: String,
					fileUrl: String,
					checksum: String,
					eTag: String,
					fileSize: 0
				},
				signerConfigs: 
				[
					{
						profile: 
						{
							id: 0,
							name: String,
							fullName: String,
							email: String,
							departmentId: 0,
							avatar: String,
							telephone: String,
							birthday: "0001-01-01T00:00:00.0000000+07:06",
							confirmStatus: 0,
							confirmStatusText: String,
							confirmAt: "0001-01-01T00:00:00.0000000+07:06",
							signAt: "0001-01-01T00:00:00.0000000+07:06",
							signedFileId: 0,
							originalFileId: 0,
							signedFileName: String,
							isSigned: False,
							signStatusText: String,
							comment: String
						},
						role: 
						{
							id: 0,
							name: String,
							createdAt: "0001-01-01T00:00:00.0000000+07:06",
							deletedAt: "0001-01-01T00:00:00.0000000+07:06",
							updatedAt: "0001-01-01T00:00:00.0000000+07:06",
							updatedBy: 0,
							deletedBy: 0,
							createdBy: 0,
							permission: 
							[
								String
							]
						},
						id: 0,
						documentId: 0,
						stepId: 0,
						subDocumentId: 0,
						departmentId: 0,
						signerType: 0,
						signerRefId: 0,
						signerRefText: String,
						actionType: 0,
						orderIndex: 0
					}
				]
			}
		],
		attachedFiles: 
		[
			{
				id: 0,
				uploadedFile: String,
				subDocumentId: 0,
				stepId: 0,
				code: 0,
				fileName: String,
				filekey: String,
				fileUrl: String,
				checksum: String,
				eTag: String,
				fileSize: 0
			}
		]
	}
}