Appearance
Assessments API
Types
typescript
type JobStatusType = 'draft' | 'scheduled' | 'in-progress' | 'job-not-completed' | 'job-complete' | 'job-reviewed' | 'report-draft' | 'report-complete' | 'report-sent'
List Assessments
Filter
The /assessments/list
call can be filtered with the AssessmentFilter
data strcuture as the request body
.
typescript
interface BoundingBox {
minLat: number;
minLon: number;
maxLat: number;
maxLon: number;
}
interface AssessmentFilter
{
// only return assessments with these IDs
assessmentIds?: number[];
// lat/lon bounding box
boundingBoxes?: BoundingBox[]
jobStatus?: JobStatusType
programId?: number
assessorId?: number
jobTypeId?: number
// if set to true return will include `total`
// which is the number of records not affected by `limit`
// defaults to false
includeTotals: boolean
// total assessments by jobStatus - defaults to false
includeAssessments?: boolean;
// defaults to 10
limit?: number;
offset?: number;
}
Request
typescript
/assessments/list
Get an array of assessments.
Returns
json
"totals": {
"all": 123,
"generating-craft-data": 0,
"ready": 4,
"scheduled": 3,
"in-progress": 0,
"job-not-completed": 33,
"job-complete": 34,
"report-complete": 434,
"report-sent": 51
},
// AssessmentForListType[]
"assessments": [
{
"id": 123,
...
},
...
]
Get Assessment
typescript
/assessment/get
Returns the assessment data
Body
json
// AssessmentType
{
// the ID of the assessment requested
"id": 123
}
Returns
json
{
"id": 123,
...
}
Types
Assessment: List
typescript
interface AssessmentForListType {
id: 9690,
createdOn: DateTimeType,
createdBy: number,
updatedOn: DateTimeType,
updatedBy: number,
heroImageUrl?: string,
heroImageSmallUrl?: string,
jobStatus: JobStatusType,
syncStatus?: string,
addressLine1: string,
addressLine2?: string,
addressCity: string,
addressCounty: string,
addressState: string,
addressPostalCode: string,
addressCountry: string,
jobDateTime: DateTimeType,
jobDateTimeTimeZone: string, // 'America/Los_Angeles'
sentBackFlag: number, // boolean
sentBackReason: string,
jobTypeScheduledId: number,
jobTypeCompletedId: number,
createdInBulk: number, // boolean
jobNotCompletedReason?: string,
externalIdentifier?: string,
externalIdentifierType?: string,
ibhsJobId?: string,
usesAiAssessor: number, // boolean
numMedia: number,
numMediaSynced: number,
assessorId: number,
primaryContactName: string,
programId: number
}
Assessment
typescript
interface ContactType {
id:number
assessmentId:number
type:string
name:string
firstName:string
lastName:string
phone:string
email:string
isPrimary:boolean
externalType:string
externalId:string
}
interface MediaType {
id:number
remoteId:string
assessmentId:number
observationId:number
observationRemoteId:number
originalName?:string
mime:string
width:number
height:number
length:number
sizeBytes:number
url:string
thumbnailUrl:string
originalUrl:string
depthBinaryUrl:string
sycned:boolean
createdOn:DateTimeType
createdBy:number
updatedOn:DateTimeType | null
updatedBy: number
synced:boolean
extendedMetaData?: string
gpsLatitude?: string
gpsLongitude?: string
gpsDirection?: number
gpsDirectionRef?: string
originalCreationDate?: DateTimeType
fovHorizontalDegrees?: number
fovVerticalDegrees?: number
}
interface ObservationType {
id:number
remoteId:number
assessmentId:number
createdOn:DateTimeType
createdBy:number
updatedOn:DateTimeType | null
updatedBy:string
lat:number
lon:number
synced:boolean
syncedOn:DateTimeType | null
mediaSynced:boolean
mediaSyncedOn:DateTimeType | null
flag:number
type:string
compliant:boolean | null
zone:string
note:string
data:string // json
numObservations:number
status:string,
media:MediaType[],
reportPublicComment:string
reportCustomTreatment:boolean
referenceImageBbox?:string
sceneImageId?:number
createdUsingAi:boolean
latLonBoundingBox?: string
assessmentTypeId?: number
assessmentTypeRevisionId?: number
}
interface AssessmentType {
id:number
createdOn:string
createdBy:number
updatedOn:string
updatedBy:number
heroImageUrl:string
heroImageSmallUrl:string
jobStatus:JobStatusType
jobFinishedOn?:string
jobStartedOn?:string
qaCompletedOn?:string
syncStatus:string
notes:string
craftDataPackage:string
craftDataTaskId:string
craftDataPackageGenerationStartedOn:string
craftDataPackageCreatedOn:string
craftDataPackageUpdatedOn:string
parcelId:string
parcelLat:number,
parcelLon:number,
parcelGeometry:string,
updatedParcelGeometry?: string
updatedStructureGeometry?: string
parcelSize:number,
apn:string,
addressLine1:string,
addressLine2:string,
addressCity:string,
addressCounty:string,
addressState:string,
addressPostalCode:string,
addressCountry:string
isTest:boolean
sentBackFlag:boolean
sentBackReason:string
privateNotes:string
publicNotes:string
reportAccessCode:string
createdInBulk:boolean
jobTypeScheduledId:number
jobTypeCompletedId:number
jobNotCompletedReason?:string
externalIdentifier?:string
externalIdentifierType?:string
ibhsJobId?:number
hubspotDealId?:string
programId?:number
numMedia:number
numMediaSynced:number
isDeleted:boolean
usesAiAssessor:boolean
assessmentTypeStartedId?:number
assessmentTypeStartedRevisionId?:number
contacts:ContactType[],
observations:ObservationType[],
otherMedia:OtherMediaType[],
// address
addressLine1:string
addressLine2:string
addressCity:string
addressCounty:string
addressState:string
addressPostalCode:string
addressCountry:string
addressPropertyAccess:string
hasHoa:boolean
hoaPermissionRequired:boolean
structureType:string
// job
assessmentTypeBase:number
jobDateTime:string
jobDateTimeTimeZone:string
assessorId:number,
tosSigned:boolean
tosSignedDate:string
tosSignedInfo:string
tosSignedByContact:number
reportTemplateId:number,
emailReportReadyTemplateId:number
canDoAssessmentWithoutCustomer:boolean
jobTypeScheduledId:number
jobTypeCompletedId:number
}