Aurora Apps

CRM apps

This tutorial shows how to integrate your customer relationship management (CRM), project management, or enterprise resource planning app with Aurora and make the integration available to Aurora customers.

📘

Private beta

  • Beta product features will not be supported via our normal support channels (e.g., email).
  • You may experience some gaps or changes as the product is refined and documentation updated.
  • There may be some compatibility issues between our beta and generally available product.

How It Works


On a new opportunity creation, your app creates a project in Aurora. Aurora notifies your app via webhook when the system design is complete. With the webhook payload, your app retrieves design summary.

One-Time Setup


Please provide the following to your Aurora account team:

  • Your app name
  • A tagline for your app to display on the “Apps” page (256 characters or less)
  • A description for your app to display to users at enablement
  • A logo image for your app (scaled to 44px height)

In return, Aurora will provide you with:

  • an application_id for your app
  • an application key to access the partner app API
  • Aurora will enable your app on your sandbox tenant

Using application_id and an application key, subscribe to the partner application performance_simulation_job_completed webhook event, pointing webhooks to your application.

POST https://api-sandbox.aurorasolar.com/partner_applications/{application_id}/webhooks

  {
  "partner_application_webhook": {
    "description": "Performance Simulation Completed",
    "event": "performance_simulation_job_completed",
    "url_template": "https://www.yourcompany.com/aurora_performance_simulation_webhooks?design_id=<DESIGN_ID>&tenant_id=<TENANT_ID>&status=<STATUS>",
    "enabled": true
  }
}

The event is a good proxy for design completion in Aurora. You will receive this webhook from every Aurora tenant that enables your app.

Step 1. Retrieve temporary key


Using your application_id and your application key provided by Aurora, make a request to generate a new temporary key. To avoid exposing your application key, this request should always happen server-side.

curl -X POST \
  -H "Authorization: Bearer {your application key}" \
"https://api-sandbox.aurorasolar.com/partner_applications/{application_id}/tenants/{aurora_tenant_id}/create_token?session_token={aurora_session_token}"

{
    "token": {
        "bearer_token": "tk_test_fd1cc8562360ff06b6e524aa",
        "expires_at": "2023-07-29 04:30:46 UTC"
    }
}

Step 2. Create a project in the customer tenant.


Create a project using a street address

//POST https://api-sandbox.aurorasolar.com/tenants/{tenant_id}/projects

{
  "project": {
    "location": {
      "property_address": "434 Brannan St, San Francisco, CA, 94107"
    }
  }
}

or geographic coordinates.

//POST https://api-sandbox.aurorasolar.com/tenants/{tenant_id}/projects/tenants/{tenant_id}/projects

{
  "project": {
    "location": {
      "latitude": 37.7796,
      "longitude": -122.3953
    }
  }
}

Step 3. Retrieve design summary on webhook receipt.


On the webhook receipt, retrieve the design summary using the tenantd_id and design_id included in the webhook payload.

//Webhook query string payload

?design_id=5fd85f64-5717-4562-b3fc-2c963f66afa3&job_id=1bc85f64-5717-4562-b3fc-2c963f66aab9&status=succeeded

//GET https://api-sandbox.aurorasolar.com/tenants/{tenant_id}/designs/{design_id}/summary

{
  "design": {
    "design_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "design_request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "external_provider_id": "YourId123",
    "project_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "created_at": "2024-06-21T21:12:44.591Z",
    "bill_of_materials": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "component_type": "modules",
        "sku": null,
        "name": "Aurora Sample Solar Panel",
        "manufacturer_name": "Aurora Sample Manufacturer",
        "quantity": 1
      }
    ],
    "system_size_ac": 5000,
    "system_size_ptc": 6000,
    "system_size_stc": 6500,
    "arrays": [
      {
        "size": 6500,
        "azimuth": 271.61,
        "configuration": "string inverter",
        "dc_optimizer": {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "name": "Aurora Sample DC Optimizer",
          "count": 11
        },
        "microinverter": {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "name": "Aurora Sample Microinverter",
          "count": 11,
          "rated_power": 400
        },
        "module": {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "rating_stc": 300.25,
          "name": "Aurora Sample Solar Panel",
          "count": 11,
          "orientation": "landscape"
        },
        "face": 1,
        "ground_mounted": true,
        "pitch": 20.25,
        "string_inverter": {
          "index": 1
        },
        "shading": {
          "solar_access": {
            "annual": 87.3,
            "monthly": [
              81.1,
              82.2,
              83,
              84,
              85,
              86,
              87,
              88,
              89,
              90,
              91,
              92
            ]
          },
          "total_solar_resource_fraction": {
            "annual": 87.3
          }
        }
      }
    ],
    "string_inverters": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "Aurora Sample String Inverter",
        "rated_power": 42000
      }
    ],
    "storage_inverters": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "Aurora Sample Storage Inverter",
        "rated_power": 5800
      }
    ],
    "batteries": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "Aurora Sample Battery",
        "has_integrated_inverter": true
      }
    ],
    "energy_production": {
      "up_to_date": true,
      "annual": 2550.3,
      "annual_offset": "87%",
      "monthly": [
        150.1,
        150.2,
        150,
        200,
        200,
        200,
        300,
        300,
        300,
        200,
        200,
        200
      ],
      "hourly": null
    },
    "storage_selected_operating_mode": "backup"
  }
}

Considerations