openapi: 3.2.0 info: title: D-Tools Cloud Service Contracts API description: API to integrate with the D-Tools Cloud application. termsOfService: https://www.d-tools.com/d-tools-software-terms-of-services contact: name: api@d-toolshelp.com email: api@d-toolshelp.com license: name: License Agreement url: https://www.d-tools.com/license-agreement version: v1 servers: - url: https://dtcloudapi.d-tools.cloud tags: - name: ServiceContracts paths: /api/v1/ServiceContracts/GetServiceContracts: get: tags: - ServiceContracts parameters: - name: clientIds in: query schema: type: array items: type: string format: uuid - name: projectIds in: query schema: type: array items: type: string format: uuid - name: fromStartDate in: query schema: type: string format: date-time - name: toStartDate in: query schema: type: string format: date-time - name: fromEndDate in: query schema: type: string format: date-time - name: toEndDate in: query schema: type: string format: date-time - name: fromPaymentDueDate in: query schema: type: string format: date-time - name: toPaymentDueDate in: query schema: type: string format: date-time - name: fromCanceledDate in: query schema: type: string format: date-time - name: toCanceledDate in: query schema: type: string format: date-time - name: fromCreatedDate in: query schema: type: string format: date-time - name: toCreatedDate in: query schema: type: string format: date-time - name: fromModifiedDate in: query schema: type: string format: date-time - name: toModifiedDate in: query schema: type: string format: date-time - name: includeTotalCount in: query schema: type: boolean - name: search in: query schema: type: string - name: sort in: query schema: type: string - name: page in: query schema: type: integer format: int32 default: 1 - name: pageSize in: query schema: type: integer format: int32 default: 20 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DTools.Cloud.Data.GetServiceContractsResult' text/json: schema: $ref: '#/components/schemas/DTools.Cloud.Data.GetServiceContractsResult' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' text/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' text/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' '500': description: Internal Server Error /api/v1/ServiceContracts/GetServiceContract: get: tags: - ServiceContracts parameters: - name: id in: query schema: type: string format: uuid responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractDetail' text/json: schema: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractDetail' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' text/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' text/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' text/json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' '500': description: Internal Server Error components: schemas: DTools.Cloud.Data.ServiceContractLite: type: object properties: id: type: string format: uuid type: type: - string - 'null' readOnly: true clientId: type: string format: uuid clientName: type: - string - 'null' clientNumber: type: - string - 'null' projectId: type: - string - 'null' format: uuid projectName: type: - string - 'null' projectNumber: type: - string - 'null' name: type: - string - 'null' number: type: - string - 'null' status: type: - string - 'null' readOnly: true pricePerMonth: type: number format: double startDate: type: - string - 'null' format: date-time endDate: type: - string - 'null' format: date-time paymentDueDate: type: - string - 'null' format: date-time canceledDate: type: - string - 'null' format: date-time createdDate: type: string format: date-time modifiedDate: type: string format: date-time additionalProperties: false DTools.Cloud.Data.FileInfo: type: object properties: id: type: string format: uuid name: type: - string - 'null' url: type: - string - 'null' additionalProperties: false DTools.Cloud.Data.ServiceContractFeature: type: object properties: type: type: - string - 'null' readOnly: true price: type: - number - 'null' format: double priceInterval: type: - string - 'null' readOnly: true includedServiceCallType: type: - string - 'null' readOnly: true includedServiceCalls: type: - integer - 'null' format: int32 hours: type: - integer - 'null' format: int32 isAdditionalService: type: boolean additionalServicePrice: type: - number - 'null' format: double additionalServicePriceInterval: type: - string - 'null' readOnly: true serviceFrequency: type: - string - 'null' readOnly: true afterHoursServiceType: type: - string - 'null' readOnly: true productDiscount: type: - number - 'null' format: double automaticPlanRenewalLength: type: - integer - 'null' format: int32 automaticPlanRenewalPriceIncreasePercent: type: - number - 'null' format: double includedSessions: type: - integer - 'null' format: int32 sessionLengthInMinutes: type: - integer - 'null' format: int32 isAdditionalSupport: type: boolean additionalSupportPrice: type: - number - 'null' format: double additionalSupportPriceInterval: type: - string - 'null' readOnly: true displayText: type: - string - 'null' isShowInProposal: type: boolean readOnly: true additionalProperties: false DTools.Cloud.Data.ServiceContractPaymentSchedule: type: object properties: paymentTermId: type: string format: uuid payment: type: - string - 'null' billingDate: type: - string - 'null' format: date-time dueDate: type: - string - 'null' format: date-time amount: type: number format: double status: type: - string - 'null' readOnly: true additionalProperties: false DTools.Cloud.Data.GetServiceContractsResult: type: object properties: serviceContracts: type: - array - 'null' items: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractLite' totalServiceContracts: type: integer format: int32 additionalProperties: false DTools.Cloud.Data.ServiceContractPayment: type: object properties: id: type: string format: uuid name: type: - string - 'null' number: type: - string - 'null' integrationNumber: type: - string - 'null' billingDate: type: - string - 'null' format: date-time dueDate: type: - string - 'null' format: date-time terms: type: - string - 'null' termsDaysDue: type: - integer - 'null' format: int32 amount: type: number format: double taxAmount: type: - number - 'null' format: double totalAmount: type: number format: double paidAmount: type: - number - 'null' format: double convenienceFee: type: - number - 'null' format: double paidDate: type: - string - 'null' format: date-time status: type: - string - 'null' readOnly: true paymentRequestMessage: type: - string - 'null' isDisplayPaymentSchedule: type: boolean isAutoGenerated: type: boolean isAutoPaid: type: boolean notes: type: - string - 'null' additionalProperties: false Microsoft.AspNetCore.Mvc.ProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' instance: type: - string - 'null' additionalProperties: {} DTools.Cloud.Data.ServiceContractDetail: type: object properties: id: type: string format: uuid type: type: - string - 'null' readOnly: true clientId: type: string format: uuid clientName: type: - string - 'null' clientNumber: type: - string - 'null' projectId: type: - string - 'null' format: uuid projectName: type: - string - 'null' projectNumber: type: - string - 'null' name: type: - string - 'null' number: type: - string - 'null' imageUrl: type: - string - 'null' description: type: - string - 'null' status: type: - string - 'null' readOnly: true estimatedStartDateType: type: - string - 'null' readOnly: true estimatedStartDate: type: - string - 'null' format: date-time estimatedStartDateDays: type: - integer - 'null' format: int32 startDate: type: - string - 'null' format: date-time endDate: type: - string - 'null' format: date-time priceType: type: - string - 'null' readOnly: true fixedPrice: type: - number - 'null' format: double dynamicPriceFieldId: type: - string - 'null' readOnly: true dynamicPricePercent: type: - number - 'null' format: double priceInterval: type: - string - 'null' readOnly: true pricePerMonth: type: number format: double taxRate: type: - number - 'null' format: double length: type: integer format: int32 lengthDiscount: type: - number - 'null' format: double billingFrequency: type: - string - 'null' readOnly: true billingFrequencyDiscount: type: - number - 'null' format: double paymentTerms: type: - string - 'null' paymentTermsDaysDue: type: - integer - 'null' format: int32 isAutoGeneratePaymentRequests: type: boolean paymentDueDate: type: - string - 'null' format: date-time canceledDate: type: - string - 'null' format: date-time createdDate: type: string format: date-time modifiedDate: type: string format: date-time isClientAgreementRequired: type: boolean termsAndConditionsFileUrl: type: - string - 'null' termsAndConditionsText: type: - string - 'null' features: type: - array - 'null' items: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractFeature' notes: type: - array - 'null' items: type: string files: type: - array - 'null' items: $ref: '#/components/schemas/DTools.Cloud.Data.FileInfo' paymentSchedules: type: - array - 'null' items: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractPaymentSchedule' payments: type: - array - 'null' items: $ref: '#/components/schemas/DTools.Cloud.Data.ServiceContractPayment' additionalProperties: false