Skip to content

Orders

This endpoint retrieves all orders (limit 10 at a time). Can be filtered with query parameters.

GET https://sandbox.reggora.io/lender/orders

ParameterDefaultDescription
offset0Number of orders to skip before list gets returned (Used in pagination).
ordering-createdThe field to order orders by.
searchNoneCurrently not supported argument.
loan_officerNoneID of loan officer to filter orders by.
due_inNoneA number of days until the order due_date.
filterA comma separated list that can include keys words that will filter orders specific to the keywords used. Filter words are described in the table below.
KeywordDescription
rushGets all orders where priority is equal to “Rush”.
behind_scheduleGets all orders where the due date has passed today, and the vendor has not submitted a report. Excludes canceled orders.
due_soonGets all orders where the due date is in less than 2 days.
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# Just an example
query_params = {
'offset': 0,
'ordering': '-created',
'loan_officer': '5b5b19d3c643b3000f8f2857',
'filters': 'rush, behind_schedule'
}
response = requests.get('https://sandbox.reggora.io/lender/orders', params=query_params, headers=headers)
{
"data": {
"orders": [
{
"id": "5c1c05f532b211000e15302a",
"status": "Submitted",
"priority": "Normal",
"due_date": "2018-12-28 12:00:00",
"inspection_date": "2018-12-28 05:00:00",
"accepted_vendor": {
"id": "5b859eebc5a0c9004e38dd8e",
"firm_name": "__Alex's Test AMC Firm",
"accepting_jobs": true,
"company": "5b859eebc5a0c9004e38dd8d"
},
"conversation": "5c4f16764672bb00105ea5f9",
"contract_evault": "5c2e718cb61f76001adf9871",
"cu_score": "2.5",
"lca_score": "2.5",
"ucdp_document_id": "18006805GD",
"ead_document_id": "A000003293",
"team_conversation": "5c4f16764672bb00105ea5f9",
"created": "2018-12-20 21:13:25.102000",
"allocation_mode": "manually",
"branch_identifier": "5db851297a6980000aa01206",
"requested_vendors": [
{
"id": "5b859eebc5a0c9004e38dd8e",
"firm_name": "__Alex's Test AMC Firm",
"accepting_jobs": true,
"company": "5b859eebc5a0c9004e38dd8d"
}
],
"inspection_complete": true,
"products": [
{
"id": "5b55d4c68d9472000fc432ef",
"product_name": "5000",
"amount": "7000.00"
}
],
"evault": "5c4f16764672bb00105ea5f9",
"reggora_warranty": {
"status": "warranty_declined",
"warranty_investors": {
"fannie_mae": {
"investor_status": "investor_declined"
},
"freddie_mac": {
"investor_status": "investor_declined"
}
}
},
"loan_file": {
"id": "5b55d4c68d9472000fc432ab",
"loan_number": "10000030",
"subject_property_address": "100002 Sun Street",
"subject_property_city": "Brighton",
"subject_property_state": "MA",
"subject_property_zip": "02135"
},
"consumers": [{
"id": "5c33c716681f110034effc73",
"full_name": "John Smith",
"role": "borrower",
"email": "john@reggora.com",
"home_phone": "999-999-9999",
"work_phone": "999-999-9999",
"cell_phone": "999-999-9999",
"is_primary_contact": true
}],
"is_follow_up": true,
"primary_order": "60f06d1ad12db1051533adb0",
"follow_up_orders": [
"60f06d1cd12db1051533adb1",
"60f06d1cd12db1051533adb2"
],
"has_been_reassigned": false,
"active_order": "60f06d1cd12db1051533adb3"
},
"..."
],
"count": 274
},
"status": 200
}

The "..." placeholder indicates additional entries elided for brevity.

This endpoint retrieves a specific order by id.

GET https://sandbox.reggora.io/lender/order/<order_id>

ParameterDescription
order_idThe ID of the order.
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/order/<order_id>', headers=headers)
{
"data": {
"order": {
"id": "5c2e718cb61f76001adf9871",
"status": "Inspection Scheduled",
"priority": "Rush",
"due_date": "2018-12-19 12:00:00",
"inspection_date": "2018-12-24 21:00:00",
"accepted_vendor": {
"id": "5b859eecc5a0c9004e38dd8f",
"firm_name": "__Alex's Test AMC Firm",
"accepting_jobs": true,
"company": "5b859eebc5a0c9004e38dd8d"
},
"created": "2019-01-03 20:33:16.748000",
"allocation_mode": "automatically",
"branch_identifier": "5db851297a6980000aa01206",
"requested_vendors": [],
"inspection_complete": false,
"conversation": "5c4f16764672bb00105ea5f9",
"team_conversation": "5c4f16764672bb00105ea5f9",
"evault": "5c4f16764672bb00105ea5f9",
"contract_evault": "5c2e718cb61f76001adf9871",
"cu_score": "2.5",
"lca_score": "2.5",
"ucdp_document_id": "18006805GD",
"ead_document_id": "A000003293",
"products": [
{
"id": "5b55d4c68d9472000fc432ef",
"product_name": "Product #1",
"amount": "10.0"
}
],
"reggora_warranty": {
"status": "warranty_declined",
"warranty_investors": {
"fannie_mae": {
"investor_status": "investor_declined"
},
"freddie_mac": {
"investor_status": "investor_declined"
}
}
},
"loan_file": {
"id": "5b55d4c68d9472000fc432ae",
"loan_number": "ABC",
"subject_property_address": "100 Brighton Ave",
"subject_property_city": "Boston",
"subject_property_state": "MA",
"subject_property_zip": "02135"
},
"consumers": [{
"id": "5c33c716681f110034effc73",
"full_name": "John Smith",
"role": "borrower",
"email": "john@reggora.com",
"home_phone": "999-999-9999",
"work_phone": "999-999-9999",
"cell_phone": "999-999-9999",
"is_primary_contact": true
}],
"is_follow_up": true,
"primary_order": "60f06d1ad12db1051533adb0",
"follow_up_orders": [
"60f06d1cd12db1051533adb1",
"60f06d1cd12db1051533adb2"
],
"has_been_reassigned": false,
"active_order": "60f06d1cd12db1051533adb3",
"total_fee": 10.0
}
},
"status": 200
}

This endpoint cancels a specific order.

DELETE https://sandbox.reggora.io/lender/order/<order_id>/cancel

ParameterDescription
order_idThe ID of the order.
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.delete('https://sandbox.reggora.io/lender/order/<order_id>/cancel', headers=headers)
{
"data": "Order has been canceled.",
"status": 200
}

This endpoint creates an order and returns the ID of the created Order.

POST https://sandbox.reggora.io/lender/order

ParameterDescriptionRequired
allocation_typeEither ‘automatically’ or ‘manually’True
vendorsA list of IDs in the order of which vendor you would like to have first access to the orderTrue if ‘manually’ else False
loanThe id of a loan file, not already associated with another order.True
priority’Normal’ or ‘Rush’True
order_request_method’individually’ or ‘broadcast’. This controls how the order is sent to appraisers, individually will expose the order to one appraiser at a time in the order that they are listed, broadcast will expose the order to all the requested appraisers at the time of orderingfalse
productsList of product ids.True
due_dateDue date of the order in TZ format. (UTC)True
additional_feesList of additional fees an order has {‘description’, ‘amount’}False
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# If allocation_type is manually
body = {
'allocation_type': 'manually',
'vendors': [
'5b55d4c68d9472000fc432ef',
'5b55d4c68d9472000fc432eg',
'5b55d4c68d9472000fc432eh'
],
'loan': '5c33c716681f110034effc73',
'priority': 'Rush',
'products': ['5b55d4c68d9472000fc432ef'],
'due_date': '2018-12-24T21:00:00Z',
'additional_fees': [
{
'description': 'Large yard',
'amount': '50'
},
{
'description': 'Outside regular locations',
'amount': '20'
}
]
}
# If allocation_type is automatically
body = {
'allocation_type': 'automatically',
'loan': '5c33c716681f110034effc73',
'priority': 'Rush',
'products': ['5b55d4c68d9472000fc432ef'],
'due_date': '2018-12-24T21:00:00Z',
'additional_fees': [
{
'description': 'Large yard',
'amount': '50'
},
{
'description': 'Outside regular locations',
'amount': '20'
}
]
}
# If order_request_method is broadcast
body = {
'allocation_type': 'automatically',
'order_request_method': 'broadcast',
'loan': '5c33c716681f110034effc73',
'priority': 'Rush',
'products': ['5b55d4c68d9472000fc432ef'],
'due_date': '2018-12-24T21:00:00Z',
'additional_fees': [
{
'description': 'Large yard',
'amount': '50'
},
{
'description': 'Outside regular locations',
'amount': '20'
}
]
}
response = requests.post('https://sandbox.reggora.io/lender/order', json=body, headers=headers)
{
"data": "5c2e718cb61f76001adf9871",
"status": 200
}

This endpoint (same as the one used to create a primary order) creates a follow-up order because of the required parameter is_follow_up and returns the ID of the newly created follow-up order when successful.

POST https://sandbox.reggora.io/lender/order

All required parameters above (for creating an order) are also required for follow-up orders.

ParameterDescriptionRequired
allocation_typeEither ‘automatically’ or ‘manually’True
vendorsA list of IDs in the order of which vendor you would like to have first access to the orderTrue if ‘manually’ else False
loanThe id of a loan file, not already associated with another order.True
priority’Normal’ or ‘Rush’True
order_request_method’individually’ or ‘broadcast’. This controls how the order is sent to appraisers, individually will expose the order to one appraiser at a time in the order that they are listed, broadcast will expose the order to all the requested appraisers at the time of orderingfalse
productsList of product ids.True
due_dateDue date of the order in TZ format. (UTC)True
additional_feesList of additional fees an order has {‘description’, ‘amount’}False
is_follow_upThis indicates that order being created is a follow up orderTrue
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
# If allocation_type is manually
body = {
'allocation_type': 'manually',
'vendors': [
'5b55d4c68d9472000fc432ef',
'5b55d4c68d9472000fc432eg',
'5b55d4c68d9472000fc432eh'
],
'loan': '5c33c716681f110034effc73',
'priority': 'Rush',
'products': ['5b55d4c68d9472000fc432ef'],
'due_date': '2018-12-24T21:00:00Z',
'additional_fees': [
{
'description': 'Large yard',
'amount': '50'
},
{
'description': 'Outside regular locations',
'amount': '20'
}
],
'is_follow_up': 'true'
}
response = requests.post('https://sandbox.reggora.io/lender/order', json=body, headers=headers)
{
"data": "5c2e718cb61f76001adf9872",
"status": 200
}

This endpoint edits a order and returns the ID of the edited order.

PUT https://sandbox.reggora.io/lender/order/<order_id>

ParameterDescription
order_idId of order
ParameterDescriptionRequired
allocation_typeEither ‘automatically’ or ‘manually’False
priority’Normal’ or ‘Rush’False
productsList product ids.False
due_dateDue date of the order in TZ format. (UTC)False
additional_feesList of additional fees an order has {‘description’, ‘amount’}False
refreshIf an order has lender_attention_required field set to True, make an edit request with refresh set to True to run the order through assignment again.False
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
'allocation_type': 'automatically',
'priority': 'Rush',
'products': ["5b55d4c68d9472000fc432ef"],
'due_date': '2018-12-24T21:00:00Z',
'additional_fees': [
{
'description': 'Large yard',
'amount': '50'
},
{
'description': 'Outside regular locations',
'amount': '20'
}
],
'refresh': False,
}
response = requests.put('https://sandbox.reggora.io/lender/order/<order_id>', json=body, headers=headers)
{
"data": "5c2e718cb61f76001adf9871",
"status": 200
}

This endpoint is used to edit the assignment list of Vendors on a particular Order.

If the Order has already been accepted, then the Reassignment flow will cancel the original Order and create a new Order object. If the Order is in an earlier status, then the update will be performed on that same Order, overwriting any previously assigned Vendors.

PUT https://sandbox.reggora.io/lender/order/<order_id>/vendors

ParameterDescription
order_idID of Order
ParameterDescriptionRequired
allocation_typestring either ‘automatically’ or ‘manually’True
vendorslist of string IDs of Vendors to assign to this OrderTrue if ‘manually’ else False
order_request_methodstring either ‘individually’ or ‘broadcast’. This controls how the order is sent to appraisers, individually will expose the order to one appraiser at a time in the order that they are listed, broadcast will expose the order to all the requested appraisers at the time of orderingFalse
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
"vendors": ["60904156927ee302eb3a416b"],
"allocation_type": "manually"
}
response = requests.put('https://sandbox.reggora.io/lender/order/<order_id>/vendors', json=body, headers=headers)

If the Order has not yet been accepted by a Vendor, then we will cancel any pending assignment requests and update the requested vendors. A successful request returns:

{
"data": {
"id": "644192f6e1f96b1d2378d41f",
"has_been_reassigned": false,
"active_order": "644192f6e1f96b1d2378d41f"
},
"status": 200
}

If the Order was already Accepted by a Vendor, then Reggora will create a new Order. The original Order will be cancelled and the new Order will be allocated to vendors based on the arguments supplied. A successful request returns:

{
"data": {
"id": "6436cacc2e7fdcfdbafb3038",
"has_been_reassigned": true,
"active_order": "64d3dac6c4f84673793f601f"
},
"status": 200
}

This endpoint will place an active order on hold, which will disable editing and other functionality while on hold.

PUT https://sandbox.reggora.io/lender/order/<order_id>/hold

ParameterDescription
order_idId of order
ParameterDescriptionRequired
reasonReason for setting order on holdTrue
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
'reason': 'I\'d like to wait to start this order.'
}
response = requests.put('https://sandbox.reggora.io/lender/order/<order_id>/hold', json=body, headers=headers)
{
"data": "Order has been updated",
"status": 200
}

This endpoint will remove an active hold on an order.

PUT https://sandbox.reggora.io/lender/order/<order_id>/unhold

ParameterDescription
order_idId of order
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.put('https://sandbox.reggora.io/lender/order/<order_id>/unhold', headers=headers)
{
"data": "Order has been updated",
"status": 200
}

This endpoint will accept or deny a fee escalation.

POST https://sandbox.reggora.io/lender/process-escalation

ParameterDescriptionTypeRequired
order_idThe ID of the orderstringTrue
escalation_idThe ID of the escalationstringTrue
acceptedStatus of the escalationboolTrue
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
body = {
'order_id': '5c2e718cb61f76001adf9871',
'escalation_id': '5b55d4c68d9472000fc432ef',
'accept': True
}
response = requests.post('https://sandbox.reggora.io/lender/process-escalation', json=body, headers=headers)
{
"success": "Escalation accepted",
"status": 200
}

This endpoint overrides an order waiting for payment.

PUT https://sandbox.reggora.io/lender/order-submission/approve/

ParameterDescription
order_idId of order
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.put('https://sandbox.reggora.io/lender/order/<order_id>/override', headers=headers)
{
"success": "Your order has been updated",
"status": 200
}

This endpoint fetches all appraisal delivery links sent to consumers.

GET https://sandbox.reggora.io/lender/order/<order_id>/appraisal-links

ParameterDescription
order_idId of order
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/order/<order_id>/appraisal-links', headers=headers)
{
"data": {
"order_id": "8f76c5c7c84d6c2daad9dd24",
"links": [
{
"email": "test@test.com",
"link": "https://www.download.reggora.appraisal1.com"
},
{
"email": "test2@test.com",
"link": "https://www.download.reggora.appraisal2.com"
}
]
},
"status": 200
}

Use this endpoint to download the Payment Summary PDF for an Order.

GET https://sandbox.reggora.io/lender/order/<order_id>/payment-summary

ParameterDescription
order_idID of the order
import requests
headers = {
'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN),
'integration': '{}'.format(REGGORA_INTEGRATION_KEY)
}
response = requests.get('https://sandbox.reggora.io/lender/order/<order_id>/payment-summary', headers=headers)

The above command returns a file object.