API Documentation
Forms ¶
Overview
Real Estate Agents and brokerages have tons of paperwork. However, most of these papers must be filled in PDF forms.
PDF forms are have a very poor experience and unusable on phones. Also, they are dumb and a lot of redundant data has to be filled in them throughout a deal.
Therefore, Rechat offers a form feature which is the core of our transaction platform.
The basic idea behind the feature is as follows:
-
We will create an HTML form for any of the PDF Documents that brokers have to use
-
We will map the HTML form to the PDF Document
-
Users will fill the HTML form. We, using the mapped data, will generate PDF’s for them
In order to be able to create HTML forms easily, we use a form builder tool called FormStack. However, FormStack is abstracted away from clients and is considered as an implementation detail.
Form
A Form is an entity that represents one of the forms that brokers can fill.
It has two public properties:
name (String)
Name of the form. LikeA Buyer's termination of a contract
roles (Array)
List of the roles that can participate (sign) in completion of this form. (Will elaborate on this on Envelopes section)
::: notice A form object has also the connection to the relevant Formstack form and the mapping data. However, that’s irrelevant to clients. :::
Forms are not created or updated by users. Users can only get a copy of this form, which we call a submission.
Basically, a Form is the original copy which is only created and maintained by Rechat.
The only endpoint clients have to use is to get the list of forms. The rest of the API endpoints documented here are used by our internal mapper tool.
Get all available forms ¶
Get all available formsGET/brands/:brand/forms
Example URI
- brand
string
(required) Example: 4731e78a-4249-47ca-b98d-46fb8ff0f09f
200
Body
{
"code": "OK",
"data": [
{
"id": "15ab2928-f572-466e-9463-348cef6ee1b8",
"created_at": 1760470041.356783,
"updated_at": 1760470041.375987,
"deleted_at": null,
"name": "Updated form name",
"brand": null,
"tab_name": null,
"acl": null,
"type": "form",
"url": "undefined/15ab2928-f572-466e-9463-348cef6ee1b8.pdf"
}
],
"info": {
"count": 1,
"total": 0
}
}
Create a new form ¶
Create a new formPOST/forms
Example URI
Body
{
"name": "Addendum for Back-Up Contract"
}
200
Body
{
"code": "OK",
"data": {
"id": "15ab2928-f572-466e-9463-348cef6ee1b8",
"created_at": 1760470041.356783,
"updated_at": 1760470041.356783,
"deleted_at": null,
"name": "Addendum for Back-Up Contract",
"brand": null,
"tab_name": null,
"acl": null,
"type": "form",
"url": "undefined/15ab2928-f572-466e-9463-348cef6ee1b8.pdf"
}
}
Get a form ¶
Get a formGET/forms/:id
Example URI
- id
string
(required) Example: 15ab2928-f572-466e-9463-348cef6ee1b8
200
Body
{
"code": "OK",
"data": {
"id": "15ab2928-f572-466e-9463-348cef6ee1b8",
"created_at": 1760470041.356783,
"updated_at": 1760470041.375987,
"deleted_at": null,
"name": "Updated form name",
"brand": null,
"tab_name": null,
"acl": null,
"type": "form",
"url": "undefined/15ab2928-f572-466e-9463-348cef6ee1b8.pdf"
}
}
Update a form ¶
Update a formPUT/forms/:id
Example URI
- brand
string
(required) Example: 4731e78a-4249-47ca-b98d-46fb8ff0f09f
200
Body
{
"code": "OK",
"data": [
{
"id": "15ab2928-f572-466e-9463-348cef6ee1b8",
"created_at": 1760470041.356783,
"updated_at": 1760470041.375987,
"deleted_at": null,
"name": "Updated form name",
"brand": null,
"tab_name": null,
"acl": null,
"type": "form",
"url": "undefined/15ab2928-f572-466e-9463-348cef6ee1b8.pdf"
}
],
"info": {
"count": 1,
"total": 0
}
}
Submission ¶
Overview
When a user gets a new copy of one of the Forms, we call that copy a Submission.
Therefore, if there are 15 legal documents supported in Rechat, that means we will have 15 forms.
However, anytime a user uses one of these forms, we will create a new copy for him, which we internally call a submission.
A submission include information such as:
-
state
of the submission. (Could be eitherDraft
orFair
) -
author
who amended it the last time -
title
of the submission (which is a copy of the title of its original form) -
revision_count
The number of revisions we have for this submission which isnumber of edits + 1
(As the first time its created its also a revision) -
file
which is an object that holds information about the PDF file generated for the latest revision of this submission
We keep track of all the changes a user makes to a single submission. Therefore, if the user edits his submission 10 times, we will save and keep all 11 different revisions of that submission.