Skip to content

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
}