Order Management
Vendor Get Order By ID
Section titled “Vendor Get Order By ID”This endpoint retrieves a specific order by id.
HTTP Request
Section titled “HTTP Request”GET https://sandbox.reggora.io/vendor/order/<order_id>
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
response = requests.get('https://sandbox.reggora.io/vendor/order/<order_id>', headers=headers)Example Response
Section titled “Example Response”The top-level id in the response corresponds to the order_id.
{ "data": { "id": "5c2e718cb61f76001adf9871", "status": "Inspection Completed", "property_street": "123 New Address", "property_city": "Brighton", "property_state": "MA", "property_zip": "02135", "priority": "Rush", "request_expiration": "2019-04-01T04:00:00.000Z", "due_date": "2019-04-09T04:00:00.000Z", "lender": { "id": "5c2e718cb61f76001adf9871", "name": "Reggora Bank .inc" }, "loan_file": { "id": "5d5ae5bb4f418c0009e09dfa", "loan_number": "12646", "occupancy_type":"Primary", "attachment_type":"Detached", "agency_case_number":"1ZabCd", "loan_type":"USDA-RHS", "purchase_price": 549000.0, "number_of_units":"1", "appraisal_type": "Purchase", "number": "1000000001", "du_case_file_id": "12345", "lp_key_number": "67890" }, "consumers": [{ "full_name": "Jo", "role": "borrower", "email": "borr@email.com", "home_phone": "617-111-0002", "cell_phone": "617-111-0001", "work_phone": "617-111-0003", "is_primary_contact": true }, { "full_name": "Nat", "role": "coborrower", "email": "coborr@email.com", "home_phone": "617-222-0002", "cell_phone": "617-222-0001", "work_phone": "617-222-0003", "is_primary_contact": false }, { "full_name": "Sam SellerAgent", "role": "listing broker", "email": "seller@agent.com", "cell_phone": "781-777-0001", "work_phone": "781-777-0002", "is_primary_contact": false }, { "full_name": "Bob BuyerAgent", "role": "buyer broker", "email": "buyer@agent.com", "cell_phone": "978-999-0001", "work_phone": "978-999-0002", "is_primary_contact": false }], "schedule": [ { "available_dates": [ { "beginning": "2019-09-05 05:00:00", "end": "2019-09-05 08:00:00" } ], "timezone": "-0400", "consumer": "44dbed88-c374-4146-8818-07556c288727" } ], "evault": "5b27e86ecadaec00099825c8", "contract_evault": "5b27e86ecadaec00099825c9", "conversation": "5b27e8cdcadaec00099825ca", "products": [{ "id": "5b27e8cdcadaes0f098235cb", "description": "Single Family", "forms": ["urar", "mc"], "amount": 0, "inspection_type": "interior" }], "submissions": [{ "created": "2018-11-05T15:32:07.738Z", "pdf_report": true, "xml_report": true, "invoice": true, "version": 1, "zip_report": false }], "revisions": [{ "id": "62c478b5-70ee-4307-bc25-acc3afd23c49", "created": "2018-11-06T21:45:22.719Z", "updated": "2018-11-06T21:45:22.719Z", "resolved": "2019-03-19T08:01:32.457Z", "text": "Hello,\nPlease request the vendor to add the co-borrower's name on the report\nThank you", "title": "Revision 11.6.2018" }], "branch_identifier": "5db851297a6980000aa01206", "total_fee": 10.0 }, "status": 200}Vendor Get All Orders
Section titled “Vendor Get All Orders”This endpoint returns all of the orders that pertain to your vendor. The request takes a number of query parameters including offset, limit, and a status. Status acts as a filtering mechanism and if included the request will only return orders with that status.
HTTP Request
Section titled “HTTP Request”GET https://sandbox.reggora.io/vendor/orders
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
# Just an examplequery_params = { 'offset': 0, 'limit': 10, # you can filter by multiple statuses, separate with commas 'status': 'accepted,inspection_scheduled', # possible filters: created, finding_appraisers, accepted, inspection_scheduled \ # inspection_completed, submitted, revision_requested}
response = requests.get('https://sandbox.reggora.io/vendor/orders', params=query_params, headers=headers)Example Response
Section titled “Example Response”The nested id inside each order object corresponds to the order_id.
{ "data": { "count": 10, "orders": [ { "id": "5c2e718cb61f76001adf9871", "status": "Inspection Completed", "property_street": "123 New Address", "property_city": "Brighton", "property_state": "MA", "property_zip": "02135", "priority": "Rush", "request_expiration": "2019-04-01T04:00:00.000Z", "due_date": "2019-04-09T04:00:00.000Z", "lender": { "id": "5c2e718cb61f76001adf9871", "name": "Reggora Bank .inc" }, "loan_file": { "occupancy_type":"Primary", "attachment_type":"Detached", "agency_case_number":"1ZabCd", "loan_type":"USDA-RHS", "number_of_units":"1", "appraisal_type": "Purchase", "number": "1000000001" }, "consumers": [{ "full_name": "Jo", "role": "borrower", "email": "borr@email.com", "home_phone": "617-111-0002", "cell_phone": "617-111-0001", "work_phone": "617-111-0003", "is_primary_contact": true }, { "full_name": "Nat", "role": "coborrower", "email": "coborr@email.com", "home_phone": "617-222-0002", "cell_phone": "617-222-0001", "work_phone": "617-222-0003", "is_primary_contact": false }, { "full_name": "Sam SellerAgent", "role": "listing broker", "email": "seller@agent.com", "cell_phone": "781-777-0001", "work_phone": "781-777-0002", "is_primary_contact": false }, { "full_name": "Bob BuyerAgent", "role": "buyer broker", "email": "buyer@agent.com", "cell_phone": "978-999-0001", "work_phone": "978-999-0002", "is_primary_contact": false }], "schedule": { "available_dates": [ "2018-11-05T15:32:07.738Z", "2018-11-06T15:32:07.738Z", "2018-11-07T15:32:07.738Z" ] }, "evault": "5b27e86ecadaec00099825c8", "contract_evault": "5b27e86ecadaec00099825c9", "conversation": "5b27e8cdcadaec00099825ca", "products": [{ "id": "5b27e8cdcadaes0f098235cb", "description": "Single Family", "forms": ["urar", "mc"], "amount": 0, "inspection_type": "exterior" }], "submissions": [{ "created": "2018-11-05T15:32:07.738Z", "pdf_report": true, "xml_report": true, "invoice": true, "version": 1, "zip_report": false }], "revisions": [{ "created": "2018-11-06T21:45:22.719Z", "updated": "2018-11-06T21:45:22.719Z", "lender_resolved": "2019-03-19T08:01:32.457Z", "vendor_completed": "2019-03-18T08:01:32.457Z", "text": "Hello,\nPlease request the vendor to add the co-borrower's name on the report\nThank you", "title": "Revision 11.6.2018" }], "branch_identifier": "5db851297a6980000aa01206" }, "..." ] }, "status": 200}The "..." placeholder indicates additional entries elided for brevity.
Accept Order
Section titled “Accept Order”This endpoint is used to accept an Order.
HTTP Request
Section titled “HTTP Request”PUT https://sandbox.reggora.io/vendor/order/<order_id>/accept
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
response = requests.put('https://sandbox.reggora.io/vendor/order/<order_id>/accept', headers=headers)Example Response
Section titled “Example Response”The data field is the order id.
{ "data": "5c1c05f532b211000e15302a", "status": 200}Counter Offer
Section titled “Counter Offer”This endpoint is used to send a counter offer the lender. If the offer is accepted then the order will be assigned to your company. Send the request with your desired changes in the body of the request.
HTTP Request
Section titled “HTTP Request”PUT https://sandbox.reggora.io/vendor/order/<order_id>/counter
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| due_date | The date that you would like the lender to change the order due date to. Date must be in UTC-format(Y-m-dTH:M:SZ) | False |
| fee | The fee that you would like the lender to change the order fee to | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'due_date': '2018-12-19T12:00:00Z', 'fee': 345.67}
response = requests.put('https://sandbox.reggora.io/vendor/order/<order_id>/counter', headers=headers, data=body)Example Response
Section titled “Example Response”The data field is the order id.
{ "data": "5c1c05f532b211000e15302a", "status": 200}Fee Escalation
Section titled “Fee Escalation”This endpoint is used for fee escalation to the lender. If the new fee is accepted then the lender pays the additional fee to your company. Send the request with your desired changes in the body of the request.
HTTP Request
Section titled “HTTP Request”POST https://sandbox.reggora.io/vendor/order/<order_id>/fee-escalation
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| fee | The fee that you would like the lender to change the order fee to | True |
| reason | The reason why you want the lender to change the order fee | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'fee': 345.67}
response = requests.post('https://sandbox.reggora.io/vendor/order/<order_id>/fee-escalation', headers=headers, data=body)Example Response
Section titled “Example Response”{ "data": "Your fee escalation request is pending.", "status": 200}New Due Date Request
Section titled “New Due Date Request”This endpoint is used to request for a new due date from the lender for an order. If the new due date is accepted, the order is updated with the new due date. Send the request with your desired changes in the body of the request.
HTTP Request
Section titled “HTTP Request”POST https://sandbox.reggora.io/vendor/order/<order_id>/new-due-date-request
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| due_date | The date that you would like the lender to change the order due date to. Date must be in UTC-format(Y-m-dTH:M:S) | True |
| reason | The reason why you want the lender to change the due date | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'due_date': '2018-12-19T12:00:00',}
response = requests.post('https://sandbox.reggora.io/vendor/order/<order_id>/new-due-date-request', headers=headers, data=body)Example Response
Section titled “Example Response”{ "data": "Your new due date request is pending.", "status": 200}Fee Escalation and New Due Date Request
Section titled “Fee Escalation and New Due Date Request”This endpoint is used to request fee escalation and new due date from the lender for an order. If the escalated fee and requested new due date is accepted, the order is updated with the escalated fee and requested due date. Send the request with your desired changes in the body of the request.
HTTP Request
Section titled “HTTP Request”POST https://sandbox.reggora.io/vendor/order/<order_id>/fee-date-escalation
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| due_date | The date that you would like the lender to change the order due date to. Date must be in UTC-format(Y-m-dTH:M:S) | True |
| fee | The fee that you would like the lender to change the order fee to | True |
| reason | The reason why you want the lender to change the order fee and the due date | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'due_date': '2018-12-19T12:00:00Z', 'fee': 345.67}
response = requests.post('https://sandbox.reggora.io/vendor/order/<order_id>/fee-date-escalation', headers=headers, data=body)Example Response
Section titled “Example Response”{ "data": "Your fee escalation and new due date request is pending.", "status": 200}Deny Order
Section titled “Deny Order”This endpoint is used to deny an Order. The deny_reason field is required.
HTTP Request
Section titled “HTTP Request”PUT https://sandbox.reggora.io/vendor/order/<order_id>/deny
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| deny_reason | The reason for denying an order | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
# In the deny casebody = { 'deny_reason': 'I am on vacation until next Tuesday'}
response = requests.put('https://sandbox.reggora.io/vendor/order/<order_id>/deny', headers=headers, data=body)Example Response
Section titled “Example Response”The data field is the order id.
{ "data": "5c1c05f532b211000e15302a", "status": 200}Set Inspection Date
Section titled “Set Inspection Date”This endpoint is used to set the inspection date on an order. The body of the request takes one key value pair, inspection_date and a datetime.
HTTP Request
Section titled “HTTP Request”PUT https://sandbox.reggora.io/vendor/order/<order_id>/set_inspection
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| inspection_date | UTC formatted date of the inspection (Using TZ formatting). | True |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'inspection_date': '2019-04-11T21:00:00Z'}
response = requests.put('https://sandbox.reggora.io/vendor/order/<order_id>/set_inspection', headers=headers, data=body)Example Response
Section titled “Example Response”The data field is the order id.
{ "data": "5c1c05f532b211000e15302a", "status": 200}Complete Inspection
Section titled “Complete Inspection”This endpoint is used to set the inspection date on an order. The body of the request takes an optional key value pair, inspection_completed and a datetime.
HTTP Request
Section titled “HTTP Request”PUT https://sandbox.reggora.io/vendor/order/<order_id>/complete_inspection
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| inspection_completed | UTC formatted date the inspection was completed (Using TZ formatting). | False |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'inspection_completed': '2019-04-11T21:00:00Z'}
response = requests.put('https://sandbox.reggora.io/vendor/order/<order_id>/complete_inspection', headers=headers, data=body)Example Response
Section titled “Example Response”The data field is the order id.
{ "data": "5c1c05f532b211000e15302a", "status": 200}Upload Submission
Section titled “Upload Submission”This endpoint is used to upload a Submission to an Order. A PDF file is required however an XML file is optional. Additionally, either an invoice number or an invoice file (PDF) must be included in the body of the request.
HTTP Request
Section titled “HTTP Request”POST https://sandbox.reggora.io/vendor/submission/<order_id>
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| pdf_file | PDF file | True |
| xml_file | XML file | False |
| invoice_number | The number for the corresponding invoice | True if no invoice_file |
| invoice_file | The invoice file | True if no invoice_number |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
# The file objects are either bytes or multi-part form databody = { "pdf_file": (BytesIO(b'1,2,3,4'), 'test_file.pdf'), # Required "xml_file": (BytesIO(b'1,2,3,4'), 'test_file.xml'), # Optional # One of the following is required "invoice_number": "12345", "invoice_file": (BytesIO(b'1,2,3,4'), 'test_invoice.pdf')}
response = requests.post('https://sandbox.reggora.io/vendor/submission/<order_id>', headers=headers, data=body)# The response object will be base64Example Response
Section titled “Example Response”{ "data": "Your submission has been uploaded to this order", "status": 200}Upload Submission (UAD 3.6)
Section titled “Upload Submission (UAD 3.6)”This endpoint allows vendors to upload submission documents for a specific order.
Note: This endpoint supports both legacy UAD 2.6 and new UAD 3.6 formats.
HTTP Request
Section titled “HTTP Request”POST https://sandbox.reggora.io/vendor/submission/<order_id>
URL Parameters
Section titled “URL Parameters”| Parameter | Description | Required |
|---|---|---|
| order_id | The ID of the order. | True |
Request Body Parameters (Multipart/Form-Data)
Section titled “Request Body Parameters (Multipart/Form-Data)”File Arguments: You must provide either the zip_file parameter OR both the pdf_file and xml_file parameters.
Providing both sets will result in a 400 error.
| Parameter | Description | Required |
|---|---|---|
| zip_file | The UAD 3.6 submission file (ZIP format) | Conditional (Required if pdf_file/xml_file are omitted) |
| pdf_file | The PDF report file | Conditional (Required if zip_file is omitted) |
| xml_file | The UAD 2.6 XML data file | Conditional (Required if zip_file is omitted) |
| data | A JSON object containing additional submission identifiers | False |
| invoice_number | The number for the corresponding invoice | True if no invoice_file |
| invoice_file | The invoice file | True if no invoice_number |
Data Object Structure: The data dictionary supports the following key-value pairs:
fnma_property_data_id(String): The Fannie Mae Property Data Submission ID.fhlmc_property_data_id(String): The Freddie Mac Property Data Submission ID.
Example Request
Section titled “Example Request”import jsonimport requestsfrom io import BytesIO
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
# Payload for UAD 3.6 submissionbody = { "zip_file": (BytesIO(b'1,2,3,4'), 'appraisal.zip'), # One of the following is required; this example shows both invoice_number and invoice_file "invoice_number": "12345", "invoice_file": (BytesIO(b'1,2,3,4'), 'invoice.pdf') # Optional metadata object, sent as a JSON-encoded string "data": json.dumps({ "fnma_property_data_id": "e313c472d8aa4c459b11e3aa49f9fb53", "fhlmc_property_data_id": "77693681-393c-44d6-b018-181876f9827c", })}response = requests.post('https://sandbox.reggora.io/vendor/submission/<order_id>', headers=headers, data=body)import jsonimport requestsfrom io import BytesIO
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
# Payload for UAD 2.6 submissionbody = { "pdf_file": (BytesIO(b'1,2,3,4'), 'test_file.pdf'), "xml_file": (BytesIO(b'1,2,3,4'), 'test_file.xml'), # One of the following is required; this example shows both invoice_number and invoice_file "invoice_number": "12345", "invoice_file": (BytesIO(b'1,2,3,4'), 'invoice.pdf') # Optional metadata object, sent as a JSON-encoded string "data": json.dumps({ "fnma_property_data_id": "e313c472d8aa4c459b11e3aa49f9fb53", "fhlmc_property_data_id": "77693681-393c-44d6-b018-181876f9827c", })}
response = requests.post('https://sandbox.reggora.io/vendor/submission/<order_id>', headers=headers, data=body)Example Response
Section titled “Example Response”{ "data": "Your submission has been uploaded to this order", "status": 200}This error occurs when a pdf or xml file is uploaded for an order whose product requires zip file format:
{ "error": "ZIP document is required"}This error occurs when the mutual exclusivity rule is violated (e.g, sending both a ZIP and an XML file):
{ "error": "Invalid submission arguments. You must provide either a 'zip_file' OR a 'pdf_file' and 'xml_file' pair. Both formats cannot be submitted simultaneously."}Download Submission
Section titled “Download Submission”This endpoint returns a specific document from a Submission on an Order.
HTTP Request
Section titled “HTTP Request”GET https://sandbox.reggora.io/vendor/submission/<order_id>/<submission_version>/<document_type>
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
| submission_version | Version of the submissions you want to download. |
| document_type | The specific dobument type you want to download. The options are pdf, xml, invoice, or zip. |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}# Example:# https://sandbox.reggora.io/vendor/submission/5c33c716681f110034effc73/1/pdf# This request would return the pdf document on the first# submission from the order with the id `5c33c716681f110034effc73`
order_id = '5c33c716681f110034effc73'submission_version = 1document_type = 'pdf'
response = requests.get( 'https://sandbox.reggora.io/vendor/submission/{}/{}/{}'.format(order_id, submission_version, document_type),headers=headers, data=body)The above command returns a file object. The file sending is implemented with the flask send_file extension.
Vendor Cancel Order
Section titled “Vendor Cancel Order”This endpoint will cancel an active order. It is optional to provide the reason for canceling as a message in the body of the request
HTTP Request
Section titled “HTTP Request”DELETE https://sandbox.reggora.io/vendor/order/<order_id>
URL Parameters
Section titled “URL Parameters”| Parameter | Description |
|---|---|
| order_id | The ID of the order. |
Request Body Parameters
Section titled “Request Body Parameters”| Parameter | Description | Required |
|---|---|---|
| message | The reason for cancelling the order | True |
Example Request
Section titled “Example Request”import requests
headers = { 'Authorization': 'Bearer {}'.format(REGGORA_AUTH_TOKEN), 'integration': '{}'.format(REGGORA_INTEGRATION_KEY)}
body = { 'message': 'I decided to quit the appraisal industry to follow my dreams of becoming a musician'}
response = requests.delete('https://sandbox.reggora.io/vendor/order/<order_id>', headers=headers, data=body)Example Response
Section titled “Example Response”{ "data": "This order has been cancelled", "status": 200}