Trendsic Platform Service

<back to all web services

InspectionReportRequest

Requires Authentication
The following routes are available for this service:
GET,OPTIONS/v1/inspections/{InspectionUID}/report
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionPhoto:
    attachment_id: Optional[str] = None
    file_name: Optional[str] = None
    url: Optional[str] = None
    created_by: Optional[str] = None
    created_date: Optional[datetime.datetime] = None
    has_annotation: bool = False
    annotated_attachment_id: Optional[str] = None
    annotated_url: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionItem:
    inspection_item_i_d: int = 0
    inspection_i_d: int = 0
    seq: int = 0
    section: Optional[str] = None
    prompt: Optional[str] = None
    response_type: Optional[str] = None
    is_required: bool = False
    unit: Optional[str] = None
    guidance: Optional[str] = None
    result: Optional[str] = None
    value: Optional[str] = None
    notes: Optional[str] = None
    photo_count: int = 0
    linked_punch_item_i_d: Optional[int] = None
    linked_punch_no: Optional[str] = None
    linked_punch_status: Optional[str] = None
    linked_ncr_i_d: Optional[int] = None
    linked_ncr_no: Optional[str] = None
    linked_action_i_d: Optional[int] = None
    answered_by: Optional[str] = None
    answered_at: Optional[datetime.datetime] = None
    photos: List[InspectionPhoto] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionRequest:
    inspection_request_i_d: int = 0
    inspection_i_d: int = 0
    agency: Optional[str] = None
    contact_name: Optional[str] = None
    contact_phone: Optional[str] = None
    permit_no: Optional[str] = None
    requested_date: Optional[datetime.datetime] = None
    requested_window: Optional[str] = None
    status: Optional[str] = None
    confirmation_no: Optional[str] = None
    outcome: Optional[str] = None
    created_by: Optional[str] = None
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SignatureRecord:
    signature_record_i_d: int = 0
    entity_type: Optional[str] = None
    entity_i_d: int = 0
    role: Optional[str] = None
    signer_name: Optional[str] = None
    signer_contact_i_d: Optional[int] = None
    signer_user_id: Optional[str] = None
    method: Optional[str] = None
    image_attachment_id: Optional[str] = None
    image_url: Optional[str] = None
    image_hash: Optional[str] = None
    document_hash: Optional[str] = None
    consent_text: Optional[str] = None
    ip_address: Optional[str] = None
    user_agent: Optional[str] = None
    signed_at: Optional[datetime.datetime] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Inspection:
    inspection_i_d: int = 0
    inspection_u_i_d: Optional[str] = None
    project_i_d: int = 0
    project_name: Optional[str] = None
    job_i_d: Optional[int] = None
    job_name: Optional[str] = None
    inspection_no: Optional[str] = None
    type: Optional[str] = None
    title: Optional[str] = None
    status: Optional[str] = None
    template_u_i_d: Optional[str] = None
    template_version_no: Optional[int] = None
    scheduled_for: Optional[datetime.datetime] = None
    started_at: Optional[datetime.datetime] = None
    completed_at: Optional[datetime.datetime] = None
    closed_at: Optional[datetime.datetime] = None
    inspector_contact_i_d: Optional[int] = None
    inspector_name: Optional[str] = None
    agency_name: Optional[str] = None
    permit_no: Optional[str] = None
    location_text: Optional[str] = None
    notes: Optional[str] = None
    weather_json: Optional[str] = None
    items_total: int = 0
    items_passed: int = 0
    items_failed: int = 0
    outcome: Optional[str] = None
    outcome_notes: Optional[str] = None
    reinspection_of_inspection_i_d: Optional[int] = None
    qc_hold_point_i_d: Optional[int] = None
    report_attachment_id: Optional[str] = None
    request_count: int = 0
    signature_count: int = 0
    created_by: Optional[str] = None
    created_at: Optional[datetime.datetime] = None
    updated_at: Optional[datetime.datetime] = None
    items: List[InspectionItem] = field(default_factory=list)
    requests: List[InspectionRequest] = field(default_factory=list)
    signatures: List[SignatureRecord] = field(default_factory=list)
    actions: List[str] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionReportSection:
    title: Optional[str] = None
    items: List[InspectionItem] = field(default_factory=list)
    passed: int = 0
    failed: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionReportResponse:
    response_status: Optional[ResponseStatus] = None
    inspection: Optional[Inspection] = None
    company_name: Optional[str] = None
    project_name: Optional[str] = None
    project_address: Optional[str] = None
    client_name: Optional[str] = None
    sections: List[InspectionReportSection] = field(default_factory=list)
    signatures: List[SignatureRecord] = field(default_factory=list)
    snapshot_hash: Optional[str] = None
    generated_at: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InspectionReportRequest:
    inspection_u_i_d: Optional[str] = None

Python InspectionReportRequest DTOs

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

HTTP + CSV

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

GET /v1/inspections/{InspectionUID}/report HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"Inspection":{"InspectionID":0,"InspectionUID":"00000000000000000000000000000000","ProjectID":0,"ProjectName":"String","JobID":0,"JobName":"String","InspectionNo":"String","Type":"String","Title":"String","Status":"String","TemplateUID":"00000000000000000000000000000000","TemplateVersionNo":0,"ScheduledFor":"0001-01-01T00:00:00.0000000","StartedAt":"0001-01-01T00:00:00.0000000","CompletedAt":"0001-01-01T00:00:00.0000000","ClosedAt":"0001-01-01T00:00:00.0000000","InspectorContactID":0,"InspectorName":"String","AgencyName":"String","PermitNo":"String","LocationText":"String","Notes":"String","WeatherJson":"String","ItemsTotal":0,"ItemsPassed":0,"ItemsFailed":0,"Outcome":"String","OutcomeNotes":"String","ReinspectionOfInspectionID":0,"QcHoldPointID":0,"ReportAttachmentId":"00000000000000000000000000000000","RequestCount":0,"SignatureCount":0,"CreatedBy":"String","CreatedAt":"0001-01-01T00:00:00.0000000","UpdatedAt":"0001-01-01T00:00:00.0000000","Items":[{"InspectionItemID":0,"InspectionID":0,"Seq":0,"Section":"String","Prompt":"String","ResponseType":"String","IsRequired":false,"Unit":"String","Guidance":"String","Result":"String","Value":"String","Notes":"String","PhotoCount":0,"LinkedPunchItemID":0,"LinkedPunchNo":"String","LinkedPunchStatus":"String","LinkedNcrID":0,"LinkedNcrNo":"String","LinkedActionID":0,"AnsweredBy":"String","AnsweredAt":"0001-01-01T00:00:00.0000000","Photos":[{"AttachmentId":"00000000000000000000000000000000","FileName":"String","Url":"String","CreatedBy":"String","CreatedDate":"0001-01-01T00:00:00.0000000","HasAnnotation":false,"AnnotatedAttachmentId":"00000000000000000000000000000000","AnnotatedUrl":"String"}]}],"Requests":[{"InspectionRequestID":0,"InspectionID":0,"Agency":"String","ContactName":"String","ContactPhone":"String","PermitNo":"String","RequestedDate":"0001-01-01T00:00:00.0000000","RequestedWindow":"String","Status":"String","ConfirmationNo":"String","Outcome":"String","CreatedBy":"String","CreatedAt":"0001-01-01T00:00:00.0000000","UpdatedAt":"0001-01-01T00:00:00.0000000"}],"Signatures":[{"SignatureRecordID":0,"EntityType":"String","EntityID":0,"Role":"String","SignerName":"String","SignerContactID":0,"SignerUserId":"String","Method":"String","ImageAttachmentId":"00000000000000000000000000000000","ImageUrl":"String","ImageHash":"String","DocumentHash":"String","ConsentText":"String","IpAddress":"String","UserAgent":"String","SignedAt":"0001-01-01T00:00:00.0000000"}],"Actions":["String"]},"CompanyName":"String","ProjectName":"String","ProjectAddress":"String","ClientName":"String","Sections":[{"Title":"String","Items":[{"InspectionItemID":0,"InspectionID":0,"Seq":0,"Section":"String","Prompt":"String","ResponseType":"String","IsRequired":false,"Unit":"String","Guidance":"String","Result":"String","Value":"String","Notes":"String","PhotoCount":0,"LinkedPunchItemID":0,"LinkedPunchNo":"String","LinkedPunchStatus":"String","LinkedNcrID":0,"LinkedNcrNo":"String","LinkedActionID":0,"AnsweredBy":"String","AnsweredAt":"0001-01-01T00:00:00.0000000","Photos":[{"AttachmentId":"00000000000000000000000000000000","FileName":"String","Url":"String","CreatedBy":"String","CreatedDate":"0001-01-01T00:00:00.0000000","HasAnnotation":false,"AnnotatedAttachmentId":"00000000000000000000000000000000","AnnotatedUrl":"String"}]}],"Passed":0,"Failed":0}],"Signatures":[{"SignatureRecordID":0,"EntityType":"String","EntityID":0,"Role":"String","SignerName":"String","SignerContactID":0,"SignerUserId":"String","Method":"String","ImageAttachmentId":"00000000000000000000000000000000","ImageUrl":"String","ImageHash":"String","DocumentHash":"String","ConsentText":"String","IpAddress":"String","UserAgent":"String","SignedAt":"0001-01-01T00:00:00.0000000"}],"SnapshotHash":"String","GeneratedAt":"0001-01-01T00:00:00.0000000"}