/* Options: Date: 2026-07-08 23:18:14 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //GlobalNamespace: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: PunchListRequest.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ import 'package:servicestack/servicestack.dart'; class PunchItem implements IConvertible { int? PunchItemID; String? PunchItemUID; int? ProjectID; String? PunchNo; String? Title; String? Description; String? Area; String? Trade; String? Status; String? Priority; String? AssignedSub; String? AssignedTo; int? AssignedSubContactID; int? PhotoCount; String? OriginType; String? OriginRef; DateTime? OpenedAt; DateTime? VerifiedAt; DateTime? ClosedAt; String? CreatedBy; DateTime? CreatedAt; DateTime? UpdatedAt; PunchItem({this.PunchItemID,this.PunchItemUID,this.ProjectID,this.PunchNo,this.Title,this.Description,this.Area,this.Trade,this.Status,this.Priority,this.AssignedSub,this.AssignedTo,this.AssignedSubContactID,this.PhotoCount,this.OriginType,this.OriginRef,this.OpenedAt,this.VerifiedAt,this.ClosedAt,this.CreatedBy,this.CreatedAt,this.UpdatedAt}); PunchItem.fromJson(Map json) { fromMap(json); } fromMap(Map json) { PunchItemID = json['PunchItemID']; PunchItemUID = json['PunchItemUID']; ProjectID = json['ProjectID']; PunchNo = json['PunchNo']; Title = json['Title']; Description = json['Description']; Area = json['Area']; Trade = json['Trade']; Status = json['Status']; Priority = json['Priority']; AssignedSub = json['AssignedSub']; AssignedTo = json['AssignedTo']; AssignedSubContactID = json['AssignedSubContactID']; PhotoCount = json['PhotoCount']; OriginType = json['OriginType']; OriginRef = json['OriginRef']; OpenedAt = JsonConverters.fromJson(json['OpenedAt'],'DateTime',context!); VerifiedAt = JsonConverters.fromJson(json['VerifiedAt'],'DateTime',context!); ClosedAt = JsonConverters.fromJson(json['ClosedAt'],'DateTime',context!); CreatedBy = json['CreatedBy']; CreatedAt = JsonConverters.fromJson(json['CreatedAt'],'DateTime',context!); UpdatedAt = JsonConverters.fromJson(json['UpdatedAt'],'DateTime',context!); return this; } Map toJson() => { 'PunchItemID': PunchItemID, 'PunchItemUID': PunchItemUID, 'ProjectID': ProjectID, 'PunchNo': PunchNo, 'Title': Title, 'Description': Description, 'Area': Area, 'Trade': Trade, 'Status': Status, 'Priority': Priority, 'AssignedSub': AssignedSub, 'AssignedTo': AssignedTo, 'AssignedSubContactID': AssignedSubContactID, 'PhotoCount': PhotoCount, 'OriginType': OriginType, 'OriginRef': OriginRef, 'OpenedAt': JsonConverters.toJson(OpenedAt,'DateTime',context!), 'VerifiedAt': JsonConverters.toJson(VerifiedAt,'DateTime',context!), 'ClosedAt': JsonConverters.toJson(ClosedAt,'DateTime',context!), 'CreatedBy': CreatedBy, 'CreatedAt': JsonConverters.toJson(CreatedAt,'DateTime',context!), 'UpdatedAt': JsonConverters.toJson(UpdatedAt,'DateTime',context!) }; getTypeName() => "PunchItem"; TypeContext? context = _ctx; } class PunchSummary implements IConvertible { int? ProjectID; int? TotalItems; int? OpenCount; int? VerifyCount; int? ClosedCount; int? RejectedCount; int? PercentComplete; PunchSummary({this.ProjectID,this.TotalItems,this.OpenCount,this.VerifyCount,this.ClosedCount,this.RejectedCount,this.PercentComplete}); PunchSummary.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ProjectID = json['ProjectID']; TotalItems = json['TotalItems']; OpenCount = json['OpenCount']; VerifyCount = json['VerifyCount']; ClosedCount = json['ClosedCount']; RejectedCount = json['RejectedCount']; PercentComplete = json['PercentComplete']; return this; } Map toJson() => { 'ProjectID': ProjectID, 'TotalItems': TotalItems, 'OpenCount': OpenCount, 'VerifyCount': VerifyCount, 'ClosedCount': ClosedCount, 'RejectedCount': RejectedCount, 'PercentComplete': PercentComplete }; getTypeName() => "PunchSummary"; TypeContext? context = _ctx; } class PunchListResponse implements IConvertible { ResponseStatus? ResponseStatus; int? ProjectID; List? Items = []; PunchSummary? Summary; PunchListResponse({this.ResponseStatus,this.ProjectID,this.Items,this.Summary}); PunchListResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!); ProjectID = json['ProjectID']; Items = JsonConverters.fromJson(json['Items'],'List',context!); Summary = JsonConverters.fromJson(json['Summary'],'PunchSummary',context!); return this; } Map toJson() => { 'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!), 'ProjectID': ProjectID, 'Items': JsonConverters.toJson(Items,'List',context!), 'Summary': JsonConverters.toJson(Summary,'PunchSummary',context!) }; getTypeName() => "PunchListResponse"; TypeContext? context = _ctx; } // @Route("/v1/projects/{ProjectID}/punch", "GET,OPTIONS") class PunchListRequest implements IReturn, IConvertible, IGet { int? ProjectID; PunchListRequest({this.ProjectID}); PunchListRequest.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ProjectID = json['ProjectID']; return this; } Map toJson() => { 'ProjectID': ProjectID }; createResponse() => PunchListResponse(); getResponseTypeName() => "PunchListResponse"; getTypeName() => "PunchListRequest"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: { 'PunchItem': TypeInfo(TypeOf.Class, create:() => PunchItem()), 'PunchSummary': TypeInfo(TypeOf.Class, create:() => PunchSummary()), 'PunchListResponse': TypeInfo(TypeOf.Class, create:() => PunchListResponse()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'PunchListRequest': TypeInfo(TypeOf.Class, create:() => PunchListRequest()), });