/* Options: Date: 2026-06-23 01:26:12 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: ProjectQuotesRequest.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ import 'package:servicestack/servicestack.dart'; class QuoteSummary implements IConvertible { int? QuoteID; String? QuoteUID; int? ProjectID; String? Name; String? Status; double? Total; bool? IsLocked; String? ApprovedByName; DateTime? ApprovedAt; DateTime? DeclinedAt; DateTime? ExpiresAt; DateTime? CreatedAt; QuoteSummary({this.QuoteID,this.QuoteUID,this.ProjectID,this.Name,this.Status,this.Total,this.IsLocked,this.ApprovedByName,this.ApprovedAt,this.DeclinedAt,this.ExpiresAt,this.CreatedAt}); QuoteSummary.fromJson(Map json) { fromMap(json); } fromMap(Map json) { QuoteID = json['QuoteID']; QuoteUID = json['QuoteUID']; ProjectID = json['ProjectID']; Name = json['Name']; Status = json['Status']; Total = JsonConverters.toDouble(json['Total']); IsLocked = json['IsLocked']; ApprovedByName = json['ApprovedByName']; ApprovedAt = JsonConverters.fromJson(json['ApprovedAt'],'DateTime',context!); DeclinedAt = JsonConverters.fromJson(json['DeclinedAt'],'DateTime',context!); ExpiresAt = JsonConverters.fromJson(json['ExpiresAt'],'DateTime',context!); CreatedAt = JsonConverters.fromJson(json['CreatedAt'],'DateTime',context!); return this; } Map toJson() => { 'QuoteID': QuoteID, 'QuoteUID': QuoteUID, 'ProjectID': ProjectID, 'Name': Name, 'Status': Status, 'Total': Total, 'IsLocked': IsLocked, 'ApprovedByName': ApprovedByName, 'ApprovedAt': JsonConverters.toJson(ApprovedAt,'DateTime',context!), 'DeclinedAt': JsonConverters.toJson(DeclinedAt,'DateTime',context!), 'ExpiresAt': JsonConverters.toJson(ExpiresAt,'DateTime',context!), 'CreatedAt': JsonConverters.toJson(CreatedAt,'DateTime',context!) }; getTypeName() => "QuoteSummary"; TypeContext? context = _ctx; } class QuoteListResponse implements IConvertible { ResponseStatus? ResponseStatus; List? Quotes = []; QuoteListResponse({this.ResponseStatus,this.Quotes}); QuoteListResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!); Quotes = JsonConverters.fromJson(json['Quotes'],'List',context!); return this; } Map toJson() => { 'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!), 'Quotes': JsonConverters.toJson(Quotes,'List',context!) }; getTypeName() => "QuoteListResponse"; TypeContext? context = _ctx; } // @Route("/v1/project/{ProjectUID}/quotes", "GET,OPTIONS") class ProjectQuotesRequest implements IReturn, IConvertible, IGet { String? ProjectUID; ProjectQuotesRequest({this.ProjectUID}); ProjectQuotesRequest.fromJson(Map json) { fromMap(json); } fromMap(Map json) { ProjectUID = json['ProjectUID']; return this; } Map toJson() => { 'ProjectUID': ProjectUID }; createResponse() => QuoteListResponse(); getResponseTypeName() => "QuoteListResponse"; getTypeName() => "ProjectQuotesRequest"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: { 'QuoteSummary': TypeInfo(TypeOf.Class, create:() => QuoteSummary()), 'QuoteListResponse': TypeInfo(TypeOf.Class, create:() => QuoteListResponse()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'ProjectQuotesRequest': TypeInfo(TypeOf.Class, create:() => ProjectQuotesRequest()), });