openapi: 3.2.0 info: version: '2.0' title: Fixflo Contractor networks API description: Fixflo api docs termsOfService: https://fixflostore.blob.core.windows.net/live-assets/SystemApplicationDeveloperAndAPILicenseAgreement.pdf contact: email: support@fixflo.com name: Support license: url: https://fixflostore.blob.core.windows.net/live-assets/SystemApplicationDeveloperAndAPILicenseAgreement.pdf name: Fixflo API licence agreement servers: - url: https://api-sandbox.fixflo.com/api/v2 description: live sandbox - url: https://plus.dev.fixflo.com/api/v2 description: dev security: - Bearer: [] tags: - name: Contractor networks paths: /Issue/{issueid}/jobjobber: parameters: - schema: type: string name: issueid in: path required: true post: summary: Jobber operationId: post-Issue-issueid-jobjobber responses: '200': description: OK headers: {} requestBody: content: application/json: schema: $ref: '#/components/schemas/AddJobberDetails' examples: example-1: value: Jobber: id: string ExternalReference: string JobExternalReference: string description: '' description: Add contractor to a job tags: - Contractor networks /Issue/{issueid}/jobcompletiondetails: parameters: - schema: type: string name: issueid in: path required: true get: summary: Completion details operationId: get-Issue-issueid-jobcompletiondetails responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobCompletionDetails' description: Get completion details tags: - Contractor networks post: summary: Completion details operationId: post-Issue-issueid-jobcompletiondetails responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/JobCompletionDetails' description: Save job completion details tags: - Contractor networks requestBody: content: application/json: schema: $ref: '#/components/schemas/JobCompletionDetails' description: '' /issue/{issueid}/completiondoc: parameters: - schema: type: string name: issueid in: path required: true post: summary: Completion document / Add operationId: post-job-completion-document responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Media' requestBody: content: application/json: schema: $ref: '#/components/schemas/Media' application/xml: schema: $ref: '#/components/schemas/Media' description: Add job completion document tags: - Contractor networks /issue/{issueid}/completiondoc/{mediaid}: parameters: - schema: type: string name: issueid in: path required: true - schema: type: string format: uuid name: mediaid in: path required: true get: summary: Completion document operationId: get-job-completion-document responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Media' description: Job completion document tags: - Contractor networks post: tags: - Contractor networks summary: Completion document / Save description: Save job completion document operationId: post-issue-issueid-completiondoc-mediaid responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object x-stoplight: id: h1csibf3ppydg properties: Entity: $ref: '#/components/schemas/Media' requestBody: content: application/json: schema: $ref: '#/components/schemas/Media' /issue/{issueid}/completiondoc/{mediaid}/delete: parameters: - schema: type: string name: issueid in: path required: true - schema: type: string format: uuid name: mediaid in: path required: true delete: summary: Completion document operationId: delete-job-completion-document responses: '200': description: OK description: Job completion document tags: - Contractor networks /issue/{issueid}/completiondocs: parameters: - schema: type: string name: issueid in: path required: true get: summary: Completion documents operationId: get-job-completion-documents responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Media' headers: {} description: Job completion documents tags: - Contractor networks /Issue/{issueId}/completioncertificatedoc: parameters: - schema: type: string name: issueId in: path required: true post: summary: Completion certificate document operationId: post-Issue-issueId-completioncertificatedoc responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Media' description: Add job completion certificate document requestBody: content: application/json: schema: $ref: '#/components/schemas/Media' tags: - Contractor networks /Issue/{issueId}/completioncertificatedoc/{mediaId}: parameters: - schema: type: string name: issueId in: path required: true - schema: type: string name: mediaId in: path required: true get: summary: Completion certificate document tags: - Contractor networks responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Media' operationId: get-Issue-issueId-completioncertificatedocument-mediaId description: Get completion certificate documents attached to a certain Issue, by ID /Issue/{issueId}/completioncertificatedoc/{mediaId}/delete: parameters: - schema: type: string name: issueId in: path required: true - schema: type: string name: mediaId in: path required: true delete: summary: Completion certificate document operationId: delete-Issue-issueId-completioncertificatedoc-mediaId-delete responses: '200': description: OK description: Deletes certificate document attached to an issue by specific media id tags: - Contractor networks /issue/{issueid}/invoicedetails: parameters: - schema: type: string name: issueid in: path required: true get: summary: Invoice details operationId: get-invoice-details responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InvoiceDetails' description: Job Invoice Details tags: - Contractor networks post: description: Invoice details summary: Invoice details operationId: post-issue-issueid-invoicedetails tags: - Contractor networks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/InvoiceDetails' requestBody: content: application/json: schema: $ref: '#/components/schemas/InvoiceDetails' x-internal: false /issue/{issueid}/submitinvoice: parameters: - schema: type: string name: issueid in: path required: true post: summary: Invoice / submit operationId: submit-invoice tags: - Contractor networks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/SubmitInvoice' examples: {} requestBody: content: application/json: schema: $ref: '#/components/schemas/SubmitInvoice' examples: example-1: value: InvoiceNumber: string TotalNet: 0 TotalTax: 0 Total: 0 description: Invoice /Issue/{issueId}/quotes: parameters: - schema: type: string name: issueId in: path required: true get: summary: Issue / quotes tags: - Contractor networks responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Quote' operationId: get-Issue-issueId-quotes x-internal: false description: Gets all quotes attached to an Issue on an Agency /Issue/{issueId}/quote: parameters: - schema: type: string name: issueId in: path required: true post: summary: Quote operationId: post-Issue-issueId-Quote responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Quote' description: Adds a quote to the current Agency's attached Issue requestBody: content: application/json: schema: $ref: '#/components/schemas/Quote' description: '' tags: - Contractor networks /Issue/{issueId}/quote/{quoteId}: parameters: - schema: type: string name: issueId in: path required: true - schema: type: string name: quoteId in: path required: true post: summary: Amend quote operationId: post-Issue-issueId-amendquote-quoteId responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Quote' description: Amends a quote on an attached Issue using the quote's ID requestBody: content: application/json: schema: $ref: '#/components/schemas/LineItem' x-internal: false tags: - Contractor networks /Issue/{issueId}/declinetoquote: parameters: - schema: type: string name: issueId in: path required: true post: summary: Decline to quote operationId: post-Issue-issueId-declinetoquote responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: boolean properties: {} description: Declines to quote on current issue attached to agency tags: - Contractor networks /Issue/{issueId}/declinejob: parameters: - schema: type: string name: issueId in: path required: true post: summary: Decline job operationId: post-Issue-issueId-declineJob responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: boolean properties: {} description: Declines job based on current Issue requestBody: content: application/json: schema: $ref: '#/components/schemas/JobDeclineReasonMessage' description: '' tags: - Contractor networks /Issue/{issueId}/appointment: parameters: - schema: type: string name: issueId in: path required: true post: summary: Appointment operationId: post-Issue-issueId-appointment responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Appointment' description: Set an appointment for the current job accepted on an issue requestBody: content: application/json: schema: $ref: '#/components/schemas/Appointment' tags: - Contractor networks /Issue/{issueId}/appointment/{appointmentId}/cancel: parameters: - schema: type: string name: issueId in: path required: true - schema: type: string name: appointmentId in: path description: Id of the appointment you wish to cancel required: true put: summary: Cancel Appointment operationId: put-Issue-issueId-appointment responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Appointment' description: Cancel a specified appointment for the current job accepted on an issue requestBody: content: {} tags: - Contractor networks x-stoplight: id: 3khpjsf7pzfgg /Issue/{issueId}/createfurtherworks: parameters: - schema: type: string name: issueId in: path required: true post: summary: Create Further Works operationId: post-Issue-issueId-createfurtherworks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Issue' description: Create a duplicate linked issue of type 'Further Works' requestBody: content: application/json: schema: type: object properties: furtherNotes: type: string isEmergency: type: boolean application/xml: schema: type: object properties: {} tags: - Contractor networks /Issue/{issueId}/quotefurtherworks: parameters: - schema: type: string name: issueId in: path required: true post: summary: Quote for Further Works operationId: post-Issue-issueId-quotefurtherworks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Issue' description: Create a duplicate linked issue of type 'Further Works' with a quote attached requestBody: content: application/json: schema: $ref: '#/components/schemas/QuoteFurtherWorks' tags: - Contractor networks x-stoplight: id: woiiwvckzhycl /Issue/{issueId}/quoteinstead: parameters: - schema: type: string name: issueId in: path required: true post: summary: Quote instead operationId: post-Issue-issueId-quoteinstead responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object properties: Entity: $ref: '#/components/schemas/Quote' description: Decline a job instruction and instead send a quote for the work requestBody: content: application/json: schema: $ref: '#/components/schemas/Quote' tags: - Contractor networks x-stoplight: id: 6pzrl2am3vbnt /Issue/{issueId}/contractornetworkcomment: parameters: - schema: type: string name: issueId in: path required: true post: summary: Contractor Network Comment operationId: post-Issue-issueId-contractornetworkcomment responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: boolean description: Add a comment to a further works issue that was raised by your agency requestBody: content: application/json: schema: type: object properties: message: type: string application/xml: schema: type: object properties: {} tags: - Contractor networks /Customers: parameters: [] get: summary: Customers tags: - Contractor networks responses: '200': description: OK content: application/json: schema: allOf: - properties: Items: type: array items: $ref: '#/components/schemas/Customer' type: object operationId: get-Customer-Customers parameters: - schema: type: integer in: query name: pg description: page description: Gets a list of users associated with an agency. /Customer/{Id}: parameters: - schema: type: string name: Id in: path required: true get: summary: Customer tags: - Contractor networks responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Customer' operationId: get-Customer-Id description: Gets a user attached to an agency by the attached agency ID /ServiceEvent/CreateRemedial: post: summary: Raise Remedial tags: - Contractor networks responses: '200': description: Issue {issueId} Created operationId: post-ServiceEvent-CreateRemedial requestBody: content: application/json: schema: type: object properties: parentIssueId: type: string x-stoplight: id: 59oks94uui7ac details: type: string x-stoplight: id: exvu6nch1k6tl media: type: array x-stoplight: id: b5j91te08qpx2 items: $ref: '#/components/schemas/Media' description: Create a duplicate linked issue of type 'Remedial' /Issue/{Id}/Comments: parameters: - schema: type: string name: Id in: path required: true get: summary: Issue comments tags: - Contractor networks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/PrevNextPager' - type: array x-stoplight: id: jw63mjtr92ckj items: $ref: '#/components/schemas/Comment' operationId: get-Issue-Id-Comments x-stoplight: id: 0ap4unnzbwmxu parameters: - schema: type: string in: query name: Id description: IssueId required: true - schema: type: integer default: 1 in: query name: pg description: page number - schema: type: integer default: 10 in: query name: pgsz description: page size description: 'It is recommended that the webhook is used to receive new comments rather than polling this endpoint on a regular basis. ' /Issue/{issueId}/Comment: parameters: - schema: type: string name: issueId in: path required: true post: summary: Issue comment tags: - Contractor networks responses: '200': description: OK content: application/json: schema: allOf: - $ref: '#/components/schemas/Envelope' - type: object $ref: '#/components/schemas/Comment' operationId: post-Issue-Id-Comment requestBody: content: application/json: schema: allOf: - type: object $ref: '#/components/schemas/Comment' x-stoplight: id: jumz19f9w6lvh components: schemas: JobDeclineReasonMessage: title: JobDeclineReasonMessage type: object properties: DeclineMessage: type: string JobQuoteApproval: title: JobQuoteApproval x-stoplight: id: 95aa6169dc73e type: object properties: ApprovalNameTyped: type: string Approved: type: boolean ApprovedDate: format: date-time type: string QuoteAmount: type: number RequestedDate: format: date-time type: string QuoteId: type: string PriceAgencyReceivableGross: type: number PriceAgencyReceivableNet: type: number PriceAgencyReceivableTax: type: number Comment: title: Comment x-stoplight: id: u4mszzmo2qoo3 type: object description: This is used for contractor networks to send and receive comments via the API properties: id: type: integer x-stoplight: id: d1d4todovzk0k readOnly: true commentFromEntityType: x-stoplight: id: 0rb0obg2o4392 enum: - agent - tenant - contractorNetwork readOnly: true commentToEntityType: type: array x-stoplight: id: hmy42gxpmqsab items: x-stoplight: id: fxb9soxku2bji enum: - agent - tenant - contractorNetwork message: type: string x-stoplight: id: u9zd1s4x7nl8o media: type: array x-stoplight: id: oti1ylqnugiov items: $ref: '#/components/schemas/Media' commentSent: type: string x-stoplight: id: pjpfbr6kec6qw format: date-time Envelope: title: Envelope type: object description: This object is used to carry/return responses following post operations. properties: HttpStatusCode: type: integer HttpStatusCodeDesc: type: string Errors: type: array items: type: string Messages: type: array items: type: string FaultTree: title: FaultTree type: object properties: FaultId: type: integer description: 'Unique Id of the Fault ' FaultTreeParent0: type: integer description: 'Id of the 1st parent of the Fault (can be null) ' FaultTreeParent1: type: integer description: 'Id of the 2nd parent of the Fault (can be null) ' InvoiceDetails: title: InvoiceDetails type: object description: This object is for use by contractor networks for submitting invoice details properties: InvoiceDate: format: date-time type: string description: The invoice date is expressed as a date. DueDate: format: date-time type: string description: The due date is expressed as a date. InvoiceNumber: type: string LineItems: type: array items: $ref: '#/components/schemas/LineItem' Block: type: object properties: Id: type: integer ExternalBlockReference: type: string Name: type: string Address: $ref: '#/components/schemas/Address' IsStandAlone: type: boolean KeyReference: type: string ManagementStartDate: type: string format: date-time description: Management end date. ManagementEndDate: type: string format: date-time description: Management end date. EstateId: type: integer ExternalEstateRef: type: string LandlordId: type: string ExternalLandlordRef: type: string PropertyManager: $ref: '#/components/schemas/AssignedAgent' AssignedAgent: $ref: '#/components/schemas/AssignedAgent' IsDeleted: type: boolean Created: type: string format: date-time description: Created date/time (UTC). UpdateDate: type: string format: date-time description: Updated date/time (UTC). Warranties: type: array description: List of warranties which apply to the block items: $ref: '#/components/schemas/Warranty' ServiceProgrammeDef: title: ServiceProgrammeDef type: object properties: id: type: string readOnly: true EventType: type: string readOnly: true Class: type: string readOnly: true Category: type: string readOnly: true Description: type: string readOnly: true IsStatutory: type: boolean readOnly: true CostCode: type: string readOnly: true InstructionNotes: type: string readOnly: true InstructionDateOffsetPeriod: type: integer description: '0 = days, 1 = weeks, 2 = months ' enum: - 0 - 1 - 2 readOnly: true InstructionDateOffsetType: type: integer readOnly: true ServiceFrequency: type: integer readOnly: true ServiceFrequencyType: type: integer readOnly: true description: '0 = months, 1 = years, 2 = weeks ' enum: - 0 - 1 - 2 IsDisabled: type: boolean readOnly: true IsPropertyDefinition: type: boolean readOnly: true description: 'not used for posts. ' QuoteFurtherWorks: title: QuoteFurtherWorks x-stoplight: id: 7f1po1xkvavbx type: object properties: IssueId: type: string x-stoplight: id: n707tk8vc2zo8 NetworkContractorId: type: integer x-stoplight: id: 1yq8hfmzt9g3a NetworkContractorExternalRef: type: string x-stoplight: id: m6796ax2ikjuo LeadTime: type: string x-stoplight: id: e3jzq9yu9tfp5 EstimatedDuration: type: string x-stoplight: id: bjdth1d1u8cko ExpiryDate: type: string x-stoplight: id: 4id5cop45c61d format: date-time Media: type: array x-stoplight: id: dsutto5tv3qn8 items: $ref: '#/components/schemas/Media' QuoteDetail: type: string x-stoplight: id: 0x63c2kqmdh8v LineItems: type: array x-stoplight: id: b8i6qamdkpskq items: $ref: '#/components/schemas/LineItem' IsUrgent: type: boolean x-stoplight: id: 3s0mvxc6y21mi AssignedAgent: title: AssignedAgent type: object properties: Id: type: integer format: int64 ExternalRef: type: string EmailAddress: type: string DisplayName: type: string ContactNo: type: string IsDeleted: type: boolean Brand: $ref: '#/components/schemas/Brand' UpdateDate: type: string format: date-time description: Updated date/time (UTC). PrevNextPager: type: object properties: TotalItems: type: integer x-stoplight: id: qbm018n4fbivf description: The total number of items TotalPages: type: integer x-stoplight: id: 8d0f4tjvn3d91 description: 'The total number of pages ' Items: x-stoplight: id: x8n82kadpvt9w type: array items: x-stoplight: id: yp4jiel1kmn2j type: object NextURL: type: string x-stoplight: id: tcm929q75tirz description: The URL of the next page of results PreviousURL: type: string x-stoplight: id: 3hruq0fcrc5sz description: 'The URL of the previous page of results ' LineItem: title: LineItem type: object description: 'This is an object in use only for contractor networks for providing invoice details ' properties: LineType: type: integer description: 0 = labour, 1 = materials, 2 = other. This is reflected in an enum in the nuget package enum: - 0 - 1 - 2 Description: type: string Quantity: type: number UnitPrice: type: number Net: type: number Tax: type: number Total: type: number Issue: title: Issue type: object properties: Id: type: string maxLength: 20 description: 'Unique Id of issue ' TenantId: type: string description: 'Unique tenant id (internal, Fixflo) ' ExternalRefTenancyAgreement: type: string description: 'This optional value is entered by the tenant on issue submission. This value represents the tenancy agreement number as stored by a system external for Fixflo. It may be useful in matching new issue reports with existing tenancies ' Title: type: string description: 'Title of issue (do not confuse with tenant title). This title may be edited in Fixflo plus ' FaultTitle: type: string description: 'Title of fault. This is text title of the fault. This is initially derived from the fault category. Fixflo plus users may edit this value ' FaultCategory: type: string description: 'This is the canonical description of the fault. It is readonly. The value is derived from the selected fault (icons) and sub categories ' AdditionalDetails: type: array description: 'Some issue faults request additional detail. For example, if there is problem with an appliance the make and model of the appliance will be asked for. These additional questions and responses are returned in the field AdditionalDetails as a AdditionalDetail [] ' items: $ref: '#/components/schemas/AdditionalDetail' FaultNotes: type: string description: 'User input fault notes ' FaultPriority: type: string description: 'Fault priority, integer range 0 to 5 where 0 - Emergency, 1 - Urgent (high), 2 - Urgent (high), 3 - Non-urgent (high), 4 - Non-urgent (med), 5 - Non-urgent (low) ' Salutation: type: string description: 'Tenant title (Mr, Mrs, Ms, etc) ' Firstname: type: string Surname: type: string EmailAddress: type: string description: 'Tenant email address ' Address: $ref: '#/components/schemas/Address' Media: $ref: '#/components/schemas/Media' TenantNotes: type: string description: 'Further input notes ' StatusChanged: type: string format: date-time description: StatusChanged date/time (UTC). Read-only. Status: type: string description: 'Issue status. Values are: Reported, QuotesRequested, QuotesAwaitingReview, QuotesReviewed, JobAwarded, AwaitingJobCompletion, JobCompleted, Closed. Available as an enum in the nuget-package ' Created: type: string format: date-time description: Created date/time (UTC). TenantPresenceRequested: type: string description: 'Has the tenant requested to be present ' TenantAcceptComplete: type: string description: 'Have the issue submission terms and conditions been accepted ' TermsAccepted: type: string CallbackId: type: string description: 'see Plugin Example for description and use case ' Property: type: string description: 'The Property to which the issue relates. Please note in some scenarios this field will return a null value - these should be handled appropriately ' Block: $ref: '#/components/schemas/Block' Job: $ref: '#/components/schemas/Job' FaultTree: $ref: '#/components/schemas/FaultTree' WorksAuthorisationLimit: type: number description: 'If a contractor is instructed, without having previously supplied a quote, this is maximum allowed cost of works. This value may be overridden manually on a per issue basis but by default will be derived from the agency, landlord or block as appropriate ' BlockName: type: string description: 'The block name supplied when the issue is reported ' AssignedAgent: $ref: '#/components/schemas/AssignedAgent' Quotes: type: array description: Lists of quotes items: $ref: '#/components/schemas/Quote' AttendenceDate: format: date-time type: string description: This is expressed as a local date. QuoteEndTime: format: date-time type: string description: This is expressed as a local date. IsPlannedMaintenance: type: boolean ServiceEventId: type: string CostCode: type: string description: 'An optional cost code to tie up with accounting. ' IsCommunal: description: 'Signifies whether the issue is tied to a communal area in a block or a private area in a property/unit ' type: boolean IsEmergency: description: 'Signifies whether the issue has been raised as an emergency ' type: boolean IssueType: type: string x-stoplight: id: to723ogafcxot description: 'The Type of the Issue, will be one of: Reactive GeneralEnquiry Planned Remedial' CloseReason: type: string x-stoplight: id: 51hwf48dec2k9 CloseReasonDescription: type: string x-stoplight: id: jbn4aq2c3xsq8 Warranty: title: Warranty type: object properties: id: type: string StartDate: format: date-time type: string description: 'The warranty start date ' EndDate: format: date-time type: string description: 'The warranty end date ' ExternalContractorRef: type: string description: 'The external reference for the contractor assigned to the warranty ' AssignedContractorCaption: type: string description: 'A name caption for the contractor assigned to the warranty ' PropertyExternalRef: type: string description: 'The external reference for the property which the warranty applies to ' BlockExternalRef: type: string description: 'The external reference for the block which the warranty applies to ' Quote: title: Quote type: object properties: id: type: string Status: type: string Contractor: $ref: '#/components/schemas/Contractor' PriceAgencyPayableGross: type: string PriceAgencyPayableNet: type: string PriceAgencyPayableTax: type: string PriceAgencyReceivableGross: type: string PriceAgencyReceivableNet: type: string PriceAgencyReceivableTax: type: string SubmittedDate: format: date-time type: string description: 'can be null ' ExpiryDate: format: date-time type: string description: 'can be null ' Media: type: array description: 'List of media (pictures or other documents) attached to the quote. Please see note on downloading binary data. ' items: $ref: '#/components/schemas/Media' LineItems: x-stoplight: id: n47jfx2i4s81g type: array items: $ref: '#/components/schemas/LineItem' Address: title: Address type: object properties: AddressLine1: type: string AddressLine2: type: string Town: type: string County: type: string PostCode: type: string Country: type: string description: If set this should be a two letter ISO code. If the information supplied does not match an ISO code it will default to blank Appointment: title: Appointment type: object properties: id: type: string AppointmentDate: type: string format: date-time AppointmentTimeRangeType: type: string TimeRangeStart: type: string format: date-time TimeRangeEnd: type: string format: date-time AgreedWithTenant: type: boolean CancelledDate: type: string x-stoplight: id: f4n6skyq3i657 format: date-time ContractorCertification: title: ContractorCertification type: object description: '' properties: id: type: number description: This is a legacy field, 0 will be returned in all cases Name: type: string description: This is the name of the required certificate. Certificate names are set up on a per agency basis; a contractor may have 0 to many certificates, but must not have more than one certificate of the same name Expiry: format: date-time title: DateTime type: string description: When the contractor's certification will expire Jobber: title: Jobber type: object description: 'This is an object in use only for contractor networks for assigning a jobber to a job ' properties: id: type: string description: 'Fixflo reference for the network contractor ' ExternalReference: type: string description: 'The external reference for the network contractor ' ContractorService: title: ContractorService type: object properties: id: type: integer description: Unique id of service. When updating a contractor to have new services this is the only field that is required Name: type: string description: 'This is the standard name of the service. This is what is shown within the Fixflo system ' NameAndSynonyms: type: array description: This is a list of other terms the service may be referred as, to help with mapping. items: type: string Media: title: Media type: object description: Please see note on [downloading binary data](docs/Downloading-binary-data.md). properties: Id: type: string format: uuid description: Unique GUID of Media. readOnly: true URL: type: string readOnly: true ContentType: type: string description: 'The content and mime type of the document eg. example image/png. On POST, if the content type is left blank the content type will be derived from the ShortDesc field. For example where: * ContentType = null and a ShortDesc = "picture1.png" a content type of image/png will be derived * ContentType = "image/png" and a ShortDesc= "picture1" a content type of image/png will be derived * ContentType = "" and a ShortDesc = "picture1" will result in an error * ContentType = "xxxxx" and a ShortDesc = "picture1" will result in an error as the content type is not recognised.' MediaType: type: string readOnly: true MediaTypeDescription: type: string ShortDescription: type: string description: 'For POST this is required and should be the filename with extension e.g. "file.pdf" ' AddedByUserTypeId: type: string description: 'Id of the user that uploaded the file ' readOnly: true EncodedByteData: type: string description: 'Used for POST only. This data represents the binary document encoded to base-64 ' ServiceProgrammeDef: $ref: '#/components/schemas/ServiceProgrammeDef' x-stoplight: id: r3wrv8s4lrh41 readOnly: true DocumentStartDate: type: string x-stoplight: id: 62jrrkrk0brff format: date-time readOnly: true DocumentExpiryDate: type: string x-stoplight: id: tmdafqhw3cn9l format: date-time readOnly: true SubmitInvoice: title: SubmitInvoice type: object properties: InvoiceNumber: type: string TotalNet: type: number TotalTax: type: number Total: type: number Contractor: title: Contractor type: object properties: Id: type: string description: Unique id of contractor ExternalRef: type: string description: 'This field is designed to be used to reference the contractor in other systems. If set this value must be unique for contractors ' CompanyName: type: string description: 'Optional company name. ' Title: type: string description: 'Title of contractor (eg Mr, Mrs, etc) ' FirstName: type: string Surname: type: string DisplayName: type: string description: 'This value is used for addressing the contractor. For example Dear [DisplayName] ' EmailAddress: type: string description: 'EmailAddress is also used as a login. This value must be unique for contractors. ' ContactNumber: type: string ContactNumberAlt: type: string IsDeleted: type: boolean Address: $ref: '#/components/schemas/Address' InvoiceDetails: $ref: '#/components/schemas/InvoiceDetails' Services: type: array items: $ref: '#/components/schemas/ContractorService' Certifications: type: array items: $ref: '#/components/schemas/ContractorCertification' Brand: $ref: '#/components/schemas/Brand' UpdateDate: format: date-time type: string description: Updated date/time (UTC). JobCompletionDetails: title: JobCompletionDetails type: object description: This is an object in use only for contractor networks for completing jobs properties: PurchaseOrderNumber: type: string JobCompletionDate: format: date-time type: string description: Completion date, expressed as local date. JobDuration: type: string FeedbackToAgent: type: string AddJobberDetails: title: AddJobberDetails type: object description: Used by contractor networks only to add a jobber (contractor) to their assigned job properties: Jobber: $ref: '#/components/schemas/Jobber' JobExternalReference: type: string description: 'The contractor network external reference for the job ' Customer: title: Customer type: object description: '' properties: id: type: string AgencyName: type: string CentralEmailAddress: type: string PhoneNumber: type: string AdditionalDetail: title: AdditionalDetail type: object description: Some issue faults request additional detail. For example, if there is problem with an appliance the make and model of the appliance will be asked for. These additional questions and responses are returned as list of AdditionalDetail objects properties: Label: type: string description: The question/prompt offered to the reporting user Value: type: string description: The answer Job: title: Job type: object properties: id: type: string IssueId: type: string TenantNotes: type: string JobberNotes: type: string StartDate: type: string format: date-time description: The start date is expressed as a local date. ExternalRefJob: type: string description: 'This field is used to provide a reference to a works order number in another system. In other words, this field should contain a the job purchase order number (aka works order reference) ' PriceAgencyPayableGross: type: number description: 'This is the gross amount the agency is required to pay the contractor for completion of works ' PriceAgencyPayableNet: type: number description: 'This is the amount, net of sales taxes, the agency is required to pay the contractor for completion of works ' PriceAgencyPayableTax: type: number description: 'Should equal PriceAgencyPayableGross - PriceAgencyPayableNet ' PriceAgencyReceivableGross: type: number description: 'This is the amount the agency should receive from the landlord for completion of works. It will typically be the same as PriceAgencyPayableGross but might include a management charge ' PriceAgencyReceivableNet: type: number description: 'This is the amount, net of sales taxes, the agency should receive from the landlord for completion of works ' PriceAgencyReceivableTax: type: number description: Should equal PriceAgencyReceivableGross - PriceAgencyReceivableTax JobInvoiceNumber: type: string description: This the invoice number as supplied by the contractor. If an invoice is uploaded by the contractor it will default to the file name if the field is blank. QuotedPriceAgencyPayableGross: type: number description: 'If a job resulted from the contractor submitting a quote, this is the gross amount the agency agreed to pay the contractor for completion of works ' QuotedPriceAgencyPayableNet: type: number description: 'If a job resulted from the contractor submitting a quote, this is the amount, net of sales taxes, the agency agreed to pay to pay the contractor for completion of works ' QuotedPriceAgencyPayableTax: type: number description: 'Should equal QuotedPriceAgencyPayableGross - QuotedPriceAgencyPayableNet ' QuotedPriceAgencyReceivableGross: type: number description: 'If a job resulted from the contractor submitting a quote, this is the gross amount the landlord agreed to pay the agency for completion of works ' QuotedPriceAgencyReceivableNet: type: number description: 'If a job resulted from the contractor submitting a quote, this is the amount, net of sales taxes, the landlord agreed to pay the agency for completion of works ' QuotedPriceAgencyReceivableTax: type: number description: 'Should equal QuotedPriceAgencyReceivableGross - QuotedPriceAgencyReceivableNet ' AppointmentDescription: type: string description: 'One of: Any, At, Before, After, Between ' AppointmentRange: type: string CreatedDate: format: date-time type: string description: Created date/time (UTC). JobCompleted: type: string format: date-time description: Job completed date. JobDuration: type: string description: 'A description of how long the job took ' TenantAcceptedStartDate: type: boolean JobberAgreedWithTenantStartDate: type: boolean LandlordApproval: $ref: '#/components/schemas/JobQuoteApproval' InsurerApproval: $ref: '#/components/schemas/JobQuoteApproval' Contractor: $ref: '#/components/schemas/Contractor' Brand: title: Brand type: object properties: Id: type: string format: uuid description: Unique GUID of brand. Name: type: string description: Brand name securitySchemes: Bearer: type: http scheme: bearer description: '' x-internal: false