Profet Platform Integration API (1.6.1)

Download OpenAPI specification:

PropMix Support: support@propmix.io

APIs for integrating with the Profet platform's Single Sign-On, Valuation, and Review applications.

Introduction

Profet platform is comprised of 3 applications:

  • Valuation: to create appraisals or alternate valuations using MLS & public record data and pre-built market insights and valuation models.

  • Review: to review completed appraisals for quality using rules, computer vision, natural language, floor plan analysis, and neighborhood and market insights.

  • Workflow: to manage order management processes and get insights into the performance metrics at vendor or organizational level.

Profet is an open platform where any of the above applications can be integrated with other 3rd party applications to help deliver a best-of-breed capabilities for customers. The more the competition among software providers the better it is for appraisers, AMCs, and lenders to achieve modernization goals in the best possible way that fits their organizations.

This guide provides the necessary API information and single signon options available in Profet to enable such an open integration.

API Endpoints & API key

The platform provides 2 environments - Sandbox and Production. The base URLs for the two environments are:

Sandbox environment: https://api.staging.profet.ai

Prod environment: https://api.profet.ai

The full url for the APIs must be formed as follows:

<server_base_url>/<api-end-point>

Example:
    https://api.profet.ai/valuation/initiateOrder

Security is enforced using a static customer API token which may be passed via a header attribute in each API call. The name of the header attribute must be "x-api-key".

Note: You can generate this API key from your company's account in Profet.

  • Go to Menu → Administration → Company
  • Switch the Integration tab
  • Click “Generate Static Token” to generate your API key

Webhooks

Profet platform can invoke your webhooks to deliver events when they occur within any application in the platform. Customers may register a webhook with Profet and the webhook will be invoked when an event occurs.

You can manage your webhooks using the Webhook Management screen in your Company settings. You should be logged in with the role of a “Company Administrator” to be able to manage your integration settings.

From the main menu, go to Administration -> Company -> Integration

Click “Add Webhook Configuration” to add your webhook. You can choose the event you want to listen to and the authentication credentials for your webhook.

Note that all webhook events will be delivered using HTTP POST method and the request body will have a content type based on the event. Certain events generate a single-part HTTP request and other webhooks generate a multi-part HTTP request. The following table gives you a list of events and the content-type for each event.

Webhook Events

Source Application Event ID Content-Type Description
Valuation Valuation.OrderCreated applicaiton/json Order has been created
Valuation Valuation.OrderCompleted applicaiton/json Order has been completed. Only include order details
Valuation Valuation.OrderCompletedWithReport form-data (multipart) Order has been completed. Includes order details and the final reports as specified in the requested artifacts in the initiateOrder API call.
Review Review.V2.Approved applicaiton/json Review has been approved by QC. Only include order details
Review Review.ApprovedWithReport form-data (multipart) Review has been approved. Includes order details and the final QC report PDF.
Review Review.V2.NeedsUpdate applicaiton/json Review has been rejected by QC. Only include order details
Review Review.NeedsUpdateWithReport form-data (multipart) Review has been rejected. Includes order details and the final QC report PDF.
Review Review.V2.ReadyForReview applicaiton/json Review is ready for manual QC. Only include order details
Review Review.ReadyForReviewWithReport form-data (multipart) Review is ready for manual QC. Includes order details and the final QC report PDF.

For Automated Reviews in Profet Review, the webhook will be invoked when the order reaches the 'Completed' status. The event in the request will be Review.V2.ReadyForReview.

For Manual Reviews, the webhook will be invoked when the order is marked as "NeedsUpdate" or "Approved" by the reviewer. See the events above for the applicable event names.

Webhook Payloads

Depending the Profet application that originates the webhook and the content-type, you will receive different request payloads. These payloads are explained below.

Profet Valuation Single Part Wehbooks

Content-Type: applicaiton/json

The JSON object strtucture for the payload is defined under "ValuationWebhookPayload" in the Schemas section below.

Profet Valuation Multipart Webhooks

Content-Type: form-data (multipart)

The Request will have the following parts with the corresponding part names

Multipart Field Name Type Content-Type Description
orderInfo JSON applicaton/json JSON object as defined under "ValuationWithReportOrderInfo"
report File application/pdf PDF Report File
env File application/octet-stream FNC ENV File for the order
aciXml File application/XML ACI XML representation of the order
oadiXml File application/XML AI Ready XML

Note that the parts received in the Webhook will be dependent on the requestedArtifacts in the initiateOrder API call.

Profet Review Single Part Webhooks

Content-Type: applicaiton/json

The JSON object strtucture for the payload is defined under "ReviewWebhookPayload" in the Schemas section below.

Profet Review Multipart Webhooks

Content-Type: form-data (multipart)

The Request will have the following parts with the corresponding part names

Multipart Field Name Type Content-Type Description
orderInfo JSON applicaton/json JSON object as defined under "ReviewWithReportOrderInfo"
report File application/pdf PDF Report File

Single Sign-On

This section presents the Single Sign-On (SSO) implementation information for the Profet platform. Profet is hosted on AWS and uses AWS Cognito for user authentication. User roles and role based access control are managed within the platform and do not use AWS Cognito for role based authorization.

SSO in Profet is supported via 2 options:

  • Standard protocols available via AWS Cognito - SAML and OpenID are both supported.

    Please contact PropMix Support at support@propmix.io for additional information on how to configure your Identify Provider to integrate with Profet for standards based SSO.

  • Proprietary SSO using Profet APIs

    This option is explained in more detail later in this document.

The following 3 sections explain the below capabilities for SSO:

  • Initial onboarding of users into the Profet platform

  • User Provisioning: Ongoing Provisioning / De-provisioning Users in the Profet platform

    • Using Profet APIs - Create User, Update User, and Disable User
  • Runtime SSO between your application and Profet using proprietary SSO APIs from Profet

Initial Onboarding of Users

Profet supports batch processes to onboard the initial set of users. The following information would be requested for each user to be able to onboard them into Profet:

  • User Type: Staff or Non-Staff
    This determines if the user is an employee of your company or an outside user such as a panel appraiser or broker.
  • User Profile & Contact Information
    • First Name
    • Last Name
    • Email
    • Phone (optional)
    • Work Address (optional)
  • Company Information (only required for Non-Staff users)
    • Company Name
    • Company Address
    • Company Type: Appraisal Company, Real Estate Brokerage, etc.
  • License Information: one or more occurrences of the following data
    • License State
    • License Number
    • License Type
    • License Title
    • Issue Date
    • Expiration Date
    • License Document Url
      When provided, the document will be downloaded from the URL and saved within Profet for use in appraisal reports
  • Signature Url
    When provided, the signature image will be downloaded from the URL and saved within Profet for use in appraisal reports
  • MLS Access Settings
    • MLS Board
    • MLS Id Number

The above information may be provided in one or more CSV (comma-separated values) files to PropMix. The Profet team will transform the data into a standard form for consumption by Profet user onboarding jobs.

Onboarded users will automatically receive an email from PropMix including their username and temporary password. On first login, the users will be required to reset their passwords. If the temporary login expires, the customer administrator or PropMix support can resend the initial activation email.

Note that the activation email content is completely customizable to your specific needs.

SSO APIs

User provisioning and runtime SSO operations.

Create User

Creates a new user in Profet. Note that this API is meant for the creation of staff users within your company - in other words employees of your company.

IMPORTANT NOTE: Do not use this API to create a panel appraiser or broker. You would use the Profet Order Management application to add panel members.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
firstName
required
string

First name of the user.

lastName
required
string

Last name of the user.

email
required
string <email>

The email address for the user - also serves as the username.

roles
required
string

Comma separated string of roles for the user in the company. See the UserRole enumeration.

ssoType
required
string (SSOType)
Enum: "SSO" "PROFETSSO"

Type of SSO user.

Responses

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "user@example.com",
  • "roles": "string",
  • "ssoType": "SSO"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {
    }
}

Update User

Updates the details for a user including roles within their primary company.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
email
required
string <email>

Email id for the user to be updated.

firstName
string
lastName
string
roles
Array of strings (UserRole)
Items Enum: "COMPANY_ADMIN" "MANAGER" "REVIEWER" "CHIEF_APPRAISER" "APPRAISER" "APPRAISAL_ASSISTANT" "SUPERVISORY_APPRAISER" "BROKER" "INSPECTOR" "LOAN_OFFICER" "UNDERWRITER"

List of roles for the user in the company.

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "firstName": "string",
  • "lastName": "string",
  • "roles": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Disable User

Disables the user by updating the status of the user to inactive.

Authorizations:
ApiKeyAuth
query Parameters
username
required
string

Username for the user to be updated.

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {
    }
}

Get SSO Redirect URL

Retrieves a redirect URL for a user to log into Profet.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
email
required
string <email>

Email address of the user.

orderId
required
string

The order reference obtained from the Profet application response.

applicationName
required
string (ApplicationName)
Enum: "review" "valuation" "workflow"

Application to access.

viewOrder
boolean
Default: false

If true, returns a read-only URL for the order.

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "orderId": "string",
  • "applicationName": "review",
  • "viewOrder": false
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {}
}

Valuation

Order creation, management, and reporting for Profet Valuation.

Profet Valuation helps build various valuation models and custom property value reports. In addition, it also supports numerous out-of-the-box reports such as property details, transaction history, market research, etc. Below is a list of available APIs to integrate Profet Valuation into your existing workflows.

While the below APIs are readily available, if your workflow requires any variations from these they can be specialized as needed.

Initiate Order

Creates a new order within the valuation platform.

Currently only supports reports that are property specific. Examples of property specific reports are valuation reports, transaction history etc and examples of reports that are not property specific are market research, market condition report (1004MC), etc.

Note that the request needs to identify the subject property by providing one of the following:

  • Listing Id - retrieved by using one of the PropMix Listing APIs such as GetListingDetails, GetListingsByRadius, etc.

  • PMX Property Id - retrieved by using one of the PropMix Public Record APIs such as GetPropertyDetails

  • Property Address - all elements of the property address must be provided. This includes street address, city, state, and zip using the fields listed in the request parameters table above.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
orderId
required
string

Customer specific order id.

reportType
required
string (ReportType)
Enum: "appraisalReport" "evaluationReport" "avmReport" "desktopAppraisalReport" "unifiedDesktopAppraisalReport" "complexityReport" "fnmaBpoExterior" "fnmaBpoInterior"

One of the published report types. If a custom report is implemented for your needs the Profet team will provide you a reportType value to use.

required
object (Property)
required
object (ClientInfo)
inspectionOrderId
string

If there is an associated inspection, the order id for the inspection.

inspectionProvider
string (InspectionProvider)
Enum: "CAPTURE" "IVUEIT"

One of the supported inspection platforms.

listingId
string

Unique PropMix listing identifier based on a listing. The listing Id may be fetched using PropMix's valuation APIs.

pmxPropertyId
string

Unique PropMix property identifier for a property based on public records. The pmxPropertyId may be fetched using PropMix's public record APIs.

required
object (Vendor)
required
Array of objects (Borrower)
object (Invoice)
requestedArtifacts
Array of strings (ArtifactType)
Items Enum: "report" "env" "aciXml" "oadiXml"

List of artifact names. Note: the subject property must be identified by one of listingId, pmxPropertyId, or a full property address (streetAddress, city, stateOrProvince, postalCode).

Responses

Request samples

Content type
application/json
{
  • "orderId": "string",
  • "reportType": "appraisalReport",
  • "property": {
    },
  • "clientInfo": {
    },
  • "inspectionOrderId": "string",
  • "inspectionProvider": "CAPTURE",
  • "listingId": "string",
  • "pmxPropertyId": "string",
  • "vendor": {
    },
  • "borrowers": [
    ],
  • "invoice": {
    },
  • "requestedArtifacts": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {}
}

Update Order

Modifies an order within Profet. Note that the property address if provided will be ignored by this API; use modifyAddress to change the subject property address.

The property.displayAddress element in the JSON may be used to change the display address of the subject property.

This API will reject the request if the order is not in IN_PROGRESS or DRAFT status, or if the order is currently opened for edit by a user.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
valuationReferenceId
required
string

ReferenceId returned in the Initiate Order API response.

reportType
string (ReportType)
Enum: "appraisalReport" "evaluationReport" "avmReport" "desktopAppraisalReport" "unifiedDesktopAppraisalReport" "complexityReport" "fnmaBpoExterior" "fnmaBpoInterior"

One of the published report types. If a custom report is implemented for your needs the Profet team will provide you a reportType value to use.

orderStatus
string
Enum: "PENDING_AUTOMATION" "IN_PROGRESS" "COMPLETED" "CANCELED"
object (Property)
object (ClientInfo)
Array of objects (Borrower)
object (Invoice)
requestedArtifacts
Array of strings (ArtifactType)
Items Enum: "report" "env" "aciXml" "oadiXml"

Responses

Request samples

Content type
application/json
{
  • "valuationReferenceId": "string",
  • "reportType": "appraisalReport",
  • "orderStatus": "PENDING_AUTOMATION",
  • "property": {
    },
  • "clientInfo": {
    },
  • "borrowers": [
    ],
  • "invoice": {
    },
  • "requestedArtifacts": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Modify Address

Modifies the subject property address for the order. When the address is modified, the order will be reset to DRAFT status and any in progress or completed work within the order will be wiped out.

This API will reject the request if the order is not in IN_PROGRESS or DRAFT status or if the order is currently opened for edit by a user.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
valuationReferenceId
required
string

ReferenceId returned in the Initiate Order API response.

object

Note that the displayAddress part of the property object is ignored.

Responses

Request samples

Content type
application/json
{
  • "valuationReferenceId": "string",
  • "property": {
    }
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Transfer Order

Transfers an order from one user to another. The transfer process will also reset the order such that it will be similar to a new order after the transfer.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
valuationReferenceId
required
string

ReferenceId returned in the Initiate Order API response.

required
object (Vendor)
resetOrder
boolean
Default: false

If true, the order will be reset to DRAFT status with all order contents wiped out.

Responses

Request samples

Content type
application/json
{
  • "valuationReferenceId": "string",
  • "vendor": {
    },
  • "resetOrder": false
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Get Order Details

Retrieves the current order details from Profet.

Authorizations:
ApiKeyAuth
query Parameters
valuationReferenceId
required
string

ReferenceId returned in the Initiate Order API response.

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {
    }
}

Download Valuation Report

Downloads the completed valuation report package for an order as a single ZIP archive. The archive bundles the order's ENV file, the AI-ready PDF report, and the ACI XML mapping of the order. This API is only enabled for report types that are configured to produce the AI-ready report as the preferred PDF artifact.

Authorizations:
ApiKeyAuth
query Parameters
valuationReferenceId
required
string

ReferenceId returned in the Initiate Order API response.

requestedArtifacts
Array of strings (ArtifactType)
Items Enum: "report" "env" "aciXml" "oadiXml"

Comma separated list of artifact names from the following: report / env / aciXml / oadiXml. Example: requestedArtifacts=report,aciXml

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Review

Submission and management of appraisal reviews.

SubmitForReview

Submits a valuation file for review.

Review Types: There are two types of reviews supported and it can be indicated using the parameter “reviewType”:

  • Automated Review: When an automated review is requested, Profet Review will run the configured rules for the appraisal and produce the results. The results can be viewed by an authorized user but they cannot be edited. This type of review is meant for appraisers to be able to have their appraisal reviewed, view the results, make changes to the appraisal, and resubmit as many times as they need to.

    An alternative use case for this review type is where the order management platform needs to obtain a review score for each appraisal uploaded.

    reviewType="automated"

  • Manual Review: When a manual review is requested, Profet Review will run the configured rules for the appraisal and produce the results. The results can be viewed by an authorized user and in addition, an appropriately authorized user (typically a Reviewer) would be able to edit the results as well. In other words, the reviewer can add additional commentary for any rule, override the result to pass/fail a rule, and also set the overall status of the review as “Approved” or “Needs Update”. This allows for the reviewer to have a 2-way communication with an appraiser to revise and complete an appraisal. The reviewer will also have additional access to more features such as ‘Top 50 Comps’, ‘Neighborhood Analysis’, ‘Comp Analysis’ and ‘Market Conditions’ etc.

    reviewType="manual"

Operations: Supports two operations via orderOptions.operation:

  • createOrder (default) to create a new Profet Review order for a valuation report, and

  • updateOrder to update an existing order with a new file.

Authorizations:
ApiKeyAuth
Request Body schema: multipart/form-data
required
file
string <binary>

XML / PDF file.

fileUrl
string <uri>

Publicly accessible file url.

required
object (OrderOptions)
object (AdditionalOrderInformation)
xml
string

MISMO XML String.

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {
    }
}

Get Review Status

Polls for the order status and returns the results.

Authorizations:
ApiKeyAuth
query Parameters
reviewReferenceId
string

Reference Id from createOrder response. Either reviewReferenceId or valuationReferenceId is required.

valuationReferenceId
string

Reference Id returned by the valuation/initiateOrder API. Either reviewReferenceId or valuationReferenceId is required.

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string",
  • "data": {
    }
}

Assign Order

Assigns a review order to a specific reviewer. This is required because at the time the review order is created, the reviewer may not yet be assigned.

Authorizations:
ApiKeyAuth
query Parameters
reviewReferenceId
required
string

Reference Id from review/submitForReview response.

assignedTo
required
string <email>

Email Address of the user to whom the review is assigned. In Profet email addresses serve as usernames.

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "httpCode": 0,
  • "type": "string",
  • "message": "string"
}

Download Review Report

Downloads the review report.

Authorizations:
ApiKeyAuth
query Parameters
reviewReferenceId
string

Review Reference Id from createOrder response. Either reviewReferenceId or valuationReferenceId is required.

valuationReferenceId
string

Reference Id returned by the valuation initiateOrder API. Either reviewReferenceId or valuationReferenceId is required.

Responses