In Aurora, an agreement is a legally binding document sent to a homeowner with information about the solar system. Agreements exist on a specific project and incorporates data from both the project and design level. What fields or data points show up depend on the agreement template used.

Agreements in Aurora have a few limitations:

  • A project can only have one active agreement at a time. An active agreement is any agreement without a status of canceled.
  • Sending out a new agreement cancels all existing and unsigned agreements for that project.
  • A signed agreement cannot be canceled, and a project with a signed agreement cannot send out a new agreement.

Webhook

The agreement webhook fires to the registered URL whenever a new agreement is created or the status of an existing agreement changes. The webhook sends the project ID, the agreement ID, and the new status of the agreement.

The webhook call is guaranteed to happen after the agreement has been updated, so additional information can be queried for form the agreement endpoint. However, there is no guarantee in the order of statuses being called. Any system that interacts with the webhook will need to be able to handle duplicate events or events happening in a randomised order. For instance, the viewed status could potentially happen after the signed event is sent.

The webhook information is passed as query parameters. A call could look like:

<YOUR_WEBHOOK>?project_id=fefa2f26-51fd-4e14-a1b8-e4da2bcfc597&status=signed&agreement_id=03b0cafa-bf2d-4bb6-8413-5df693ab0fdc

The query parameters are:

  • PROJECT_ID
  • AGREEMENT_ID
  • STATUS

The webhook is called for the following status changes:

  • sent - The agreement has been successfully created and sent to the homeowner.
  • viewed - The agreement has been viewed for the first time.
  • signed - The agreement has been signed and completed by all parties.
  • canceled - The agreement has been canceled.
  • declined - The agreement has been declined by one of the signers.
  • error - An error occurred at some point. More information can be found on the error_message field when querying for the agreement.