.. _endpoints: API Endpoints ============= +---------------------------------------------+----------------------------------------+ | Name | Endpoints | +=============================================+========================================+ | `Submit Job`_ / `List Jobs`_ | /jobs | +---------------------------------------------+----------------------------------------+ | `Retrieve Job`_ | /jobs/ | +---------------------------------------------+----------------------------------------+ | `Submit Job Files`_ / `Retrieve Job Files`_ | /jobs//files | +---------------------------------------------+----------------------------------------+ | `Retrieve Roof Evaluation Letter`_ | /jobs//letter | +---------------------------------------------+----------------------------------------+ | `Send Message`_ | /jobs//message | +---------------------------------------------+----------------------------------------+ | `Revise Job`_ | /jobs//revision | +---------------------------------------------+----------------------------------------+ | `Upload Panel Layout Image`_ | /jobs//panel-layout-images | +---------------------------------------------+----------------------------------------+ | `Upload Beam Spacing Image`_ | /arrays//beam-spacing-images | +---------------------------------------------+----------------------------------------+ | `Upload Beam Size Image`_ | /arrays//beam-size-images | +---------------------------------------------+----------------------------------------+ | `Upload Attic Image`_ | /arrays//attic-images | +---------------------------------------------+----------------------------------------+ | `List States`_ | /states | +---------------------------------------------+----------------------------------------+ | `List Beam Shape`_ | /beam-shape | +---------------------------------------------+----------------------------------------+ | `List Roof Material`_ | /roof-materials | +---------------------------------------------+----------------------------------------+ | `List Connection Types`_ | /connection-types | +---------------------------------------------+----------------------------------------+ | `List Racking Types`_ | /racking-types | +---------------------------------------------+----------------------------------------+ | `List Module Types`_ | /module-types | +---------------------------------------------+----------------------------------------+ | `List Optimizer Types`_ | /optimizer-types | +---------------------------------------------+----------------------------------------+ | `List Battery Types`_ | /battery-types | +---------------------------------------------+----------------------------------------+ .. _Truss Type support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000622957-how-to-determine-truss-type .. _Connection Type support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000506440-how-to-determine-connection-type .. _Determine Roof Pitch support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000506449-how-to-determine-roof-pitch .. _Roof Material support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000506324-how-to-determine-roof-material .. _Number of Rafter Panels support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000600569-number-of-rafter-panels .. _How to Find Beam Span support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000506350-how-to-find-the-beam-span .. _How to Find Beam Spacing support page: https://newaccount1628274103090.freshdesk.com/support/solutions/articles/70000506345-how-to-find-beam-spacing .. _submit-job: Submit Job ---------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/jobs`` Request Details ^^^^^^^^^^^^^^^ The foundation of this API surrounds the submission of a job to Right Angle Engineering. The request body for this endpoint consists of the following three parts: 1. Client information, such as client name, address, etc. 2. Services that are being requested for this job. 3. Service specific information. See :ref:`submitting-service-specific-information` for submission requirements. Below we outline all of the possible fields that can be included in the request body. Depending on the services that are being requested for a job will dictate which fields are being used. Fields are organized by Services below. Note that there can be overlap between fields provided for each service. Such as the submission of Roof Structural Information for both jobs requesting Structural Engineering Letter and jobs requesting CAD Design. Request Body ^^^^^^^^^^^^ **Basic Job Submission** The most basic job submission uses the fields 'client_name' and 'client_street_address'. By default, this will add ``pv_structural_letter`` to the ``services_requested`` list, meaning we will assume that a Structural Evaluation Letter is being requested. *Request Body Example* `Postman Example `__ .. code-block:: JSON { "client_name" : "Andrew Schwartz", "client_street_address" : "100 Test Way, Provo, UT, 84606" } If you would like to specify other services to be performed for your job, add a ``services_requested`` array using the service slugs listed below. For example, to request both PV CAD Design (Unstamped) and a PV Structural Letter: .. code-block:: JSON { "client_name" : "Andrew Schwartz", "client_street_address" : "100 Test Way, Provo, UT, 84606", "services_requested": ["pv_structural_letter", "pv_cad_design"] } Below we specify the fields that can be used for all jobs, including address fields, service specification, and any notes relevant to the job. +----------------------------+-----------------+--------------------------------------------------+ | Field | Data Type | Description | +============================+=================+==================================================+ || client_name || String || Client's name for whom the job is being | || *(Required)* || || performed. This name will appear on the | || || || engineering letter. | +----------------------------+-----------------+--------------------------------------------------+ || client_street_address || String || Client's street address (can either use | || *(Required)* || || this for full address or use other fields | || || || to complete address. If a full address | || || || is submitted it will be parsed and the | || || || other address fields will be filled out). | +----------------------------+-----------------+--------------------------------------------------+ || client_city || String || Client's city which will appear on the | || || || engineering letter as part of the address. | +----------------------------+-----------------+--------------------------------------------------+ || client_state || State Object\* || Client's state which will appear on the | || || || engineering letter as part of the address. | || || || | || || || Can be obtained from the :ref:`states` endpoint | +----------------------------+-----------------+--------------------------------------------------+ || client_zip_code || Int || Client's zip/postal code which will | || || || appear on the engineering letter. | +----------------------------+-----------------+--------------------------------------------------+ || services_requested || Array[String] || Array of requested service slugs. Common values:| || || || * pv_structural_letter | || || || * pv_cad_design | || || || * structural_stamps_pe | || || || * electrical_stamps_pe_or_ee | || || || * ground_mount_structural_letter | || || || * post_installation_letter | || || || * physical_wet_stamp | || || || * panel_load_calculation_report | || || || * busbar_capacity_certification | || || || * wall_mount_battery | || || || * non_pv_design | || || || * shade_report | || || || * deep_foundations_permit_package | || || || * special_inspection | || || || * general_engineering | || || || | || || || Legacy slugs (e.g. structural_letter, | || || || cad_packet) are accepted; see above. | || || || If no services are specified, | || || || pv_structural_letter is added by default. | +----------------------------+-----------------+--------------------------------------------------+ | notes | String | Job specific notes or comments | +----------------------------+-----------------+--------------------------------------------------+ *Request Body Example* .. code-block:: JSON { "client_name": "Andrew Schwartz", "client_street_address": "333 W 2230 N", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a" }, "client_zip_code": "84604", "services_requested": ["pv_structural_letter", "pv_cad_design"], "notes": "The is an example note." } **Structural Evaluation Letter** If you are requesting a Structural Evaluation Letter for your solar project, we require that structural information be submitted to us. We have two methods for users to submit information, Basic and Advanced. The Basic method utilizes a simpler request body to submit information to us. When using the Basic method, Right Angle Engineering will infer and confirm other structural information as needed. If the Basic submission method does not sufficiently cover the details of the projects that you will be submitting, we suggest using the Advanced method to submit your project. The primary difference between each method is the ability to specify structural details for each Solar Panel Array. While the Basic Submission assumes the same structural information for the number of arrays specified, The Advanced Submission allows you to specify structural details for each individual array. We detail how to submit each method below. *Basic Submission* To submit a job using the Basic method the following fields should be included in the request body: * roof_material * roof_pitch * racking_type * connection_type * beam_shape * beam_spacing * array_count Below we include details for each field. +------------------+---------------------------+---------------------------------------------------+ | Field | Data Type | Description | +==================+===========================+===================================================+ || roof_material || Roof Material Object\* || Material of the roof supporting the array | || || || (ex. Asphalt Shingles). | || || || | || || || Can be obtained from the :ref:`roof-materials` | || || || endpoint below. | || || || | || || || See the Roof Material support page for | || || || more information on the given options. | +------------------+---------------------------+---------------------------------------------------+ || roof_pitch || Float || Angle/slope of the roof in degrees. | || || || | || || || Min: 0 | || || || Max: 60 | || || || | || || || See the How to Determine Roof Pitch support | || || || page for more information | +------------------+---------------------------+---------------------------------------------------+ || racking_type || Racking Type Object\* || The racking used for the project. Can be | || || || obtained from the :ref:`racking-types` endpoint. | || || || | +------------------+---------------------------+---------------------------------------------------+ || connection_type || Connection Type Object\* || The type of attatchment/connection that is being | || || || used to connect the solar panel array | || || || to the roof. | || || || | || || || Can be obtained from the :ref:`connection-types` | || || || endpoint. | || || || | || || || See the Connection Type support page for | || || || more information. | +------------------+---------------------------+---------------------------------------------------+ || beam_shape || Beam Shape Object\* || Roof framing beam size. Options | || || || consist of beam shape by different | || || || sizes (2x4, 2x6, 2x8, etc.) | +------------------+---------------------------+---------------------------------------------------+ || beam_spacing || Float || Beam spacing measured in inches. | || || || | || || || Min: 6 | || || || Max: 480 | || || || | || || || See the How to Find Beam Spacing support page | || || || for more information | +------------------+---------------------------+---------------------------------------------------+ || array_count || Int || Number of Solar Panel Arrays for the project | || || || | +------------------+---------------------------+---------------------------------------------------+ *Request Body Example* `Postman Example `__ .. code-block:: JSON { "client_name": "Client Name", "client_street_address": "1006 E 180 S", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a", "name": "Utah" }, "client_zip_code": "84604", "services_requested": ["pv_structural_letter"], "roof_material": { "id": "00000000-0000-0000-0000-000000000001" "name": "Asphalt Shingles" }, "roof_pitch": 20.0, "racking_type": { "id": "9ae82924-ab74-49c4-ba42-3720e268284f" "name": "Generic" }, "connection_type": { "id": 36 "name": "L-Foot" }, "beam_shape": { "id": "00000000-0000-0000-0000-000000000002" "name": "2x4" }, "beam_spacing": 24.0, "array_count": 2 } *Advanced Submission* This method requires the addition of Solar Panel Array objects through the 'arrays' field in the body of the request. We include details of the 'arrays' field and all of fields included for each Solar Panel Array object below, along with an example request. +----------------------------+----------------------+-------------------------------------------------+ | Field | Data Type | Description | +============================+======================+=================================================+ || arrays || Array of Solar || The Collection of Solar Panel Array objects | || || Panel Array Objects || which constitutes the core of our analysis | || || || for the job. See below for information | || || || regarding the Solar Panel Array Object. | +----------------------------+----------------------+-------------------------------------------------+ Each Solar Panel Array object will contain the following fields: +-----------------------+---------------------------+-----------------------------------------------------+ | Field | Type | Description | +=======================+===========================+=====================================================+ || name || String || Name given to identify the solar panel array. | || || || ex. "Array 1", "Array 2", or "North", "West", etc. | +-----------------------+---------------------------+-----------------------------------------------------+ | panel_quantity | Int | Quantity of solar panels. | +-----------------------+---------------------------+-----------------------------------------------------+ || orientation || String (Choices) || Orientation of the solar panels in the array as | || || || they lie on the roof. | || || || | || || || Choices are: | || || || * Portrait | || || || * Landscape | +-----------------------+---------------------------+-----------------------------------------------------+ || num_panels_on_rafter || Int || Number of panels on a rafter (in most | || || || cases the number of rows of panels). | || || || | || || || Min: 1 | || || || Max: 25 | || || || | || || || See the `Number of Rafter Panels support page`_ | || || || for more information. | +-----------------------+---------------------------+-----------------------------------------------------+ || panel_to_eave || Float || Distance (in inches) from the roof eave to the | || || || bottom of the first panel. | || || || | || || || Min: 0 | || || || Max: 480 | +-----------------------+---------------------------+-----------------------------------------------------+ || connection_type || Connection Type Object\* || The type of attatchment/connection that is being | || || || used to connect the solar panel array | || || || to the roof. | || || || | || || || Can be obtained from the :ref:`connection-types` | || || || endpoint. | || || || | || || || See the `Connection Type support page`_ for | || || || more information. | +-----------------------+---------------------------+-----------------------------------------------------+ || ballast_weight || Float || Required only if the connection_type | || || || selected is Ballast. Weight in pounds | || || || of the ballast system used. | || || || | || || || Min: 0 | || || || Max: 100 | +-----------------------+---------------------------+-----------------------------------------------------+ || roof_material || Roof Material Object\* || Material of the roof supporting the array | || || || (ex. Asphalt Shingles). | || || || | || || || Can be obtained from the :ref:`roof-materials` | || || || endpoint below. | || || || | || || || See the `Roof Material support page`_ for | || || || more information on the given options. | +-----------------------+---------------------------+-----------------------------------------------------+ || beam_shape || Beam Shape Object\* || Roof framing beam size. Options | || || || consist of beam shape by different | || || || sizes (2x4, 2x6, 2x8, etc.) | +-----------------------+---------------------------+-----------------------------------------------------+ || frame_shape || String (Choices) || Choices are: | || || || * Rafter | || || || * Kingpost | || || || * Simple Fink | || || || * Queen | || || || * Fink | || || || * Howe | || || || * Fan | || || || * Modified Queen | || || || * Double Fink | || || || * Double Howe | || || || * Attic | || || || * Purlin | || || || * Non-Standard | || || || | || || || See the `Truss Type support page`_ for more | || || || information | +-----------------------+---------------------------+-----------------------------------------------------+ || roof_pitch || Float || Angle/slope of the roof in degrees. | || || || | || || || Min: 0 | || || || Max: 60 | || || || | || || || See the `Determine Roof Pitch support page`_ | || || || for more information | +-----------------------+---------------------------+-----------------------------------------------------+ || beam_span || Array of Floats || Size of beam span in inches for each member. | || || ex. [70.0, 70.0] || | || || || Min: 24 | || || || Max 1200 | || || || | || || || See the `How to Find Beam Span support page`_ | || || || for more information | +-----------------------+---------------------------+-----------------------------------------------------+ || roof_overhang || Float || Size of roof overhang in inches | || || || | || || || Min: 0 | || || || Max: 120 | +-----------------------+---------------------------+-----------------------------------------------------+ || beam_spacing || Float || Beam spacing measured in inches. | || || || | || || || Min: 6 | || || || Max: 480 | || || || | || || || See the `How to Find Beam Spacing support page`_ | || || || for more information | +-----------------------+---------------------------+-----------------------------------------------------+ *Request Body Example* `Postman Example `__ .. code-block:: JSON { "client_name": "Andrew Schwartz", "client_street_address": "333 W 2230 N", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a" }, "client_zip_code": "84604", "services_requested": ["pv_structural_letter"], "arrays": [ { "name": "Array 1", "panel_quantity": 10, "roof_material": { "id": "00000000-0000-0000-0000-000000000001" }, "beam_spacing": 12.0, "num_panels_on_rafter": 2, "panel_to_eave": 12.0, "orientation": "Landscape", "beam_shape": { "id": "00000000-0000-0000-0000-000000000001" }, "frame_shape": "Rafter", "roof_pitch": 24.0, "beam_span": [70.0, 70.0], "roof_overhang": 12.0, "connection_type": { "id": 1 } }, { "name": "Array 2", "panel_quantity": 6, "roof_material": { "id": "00000000-0000-0000-0000-000000000001" }, "beam_spacing": 12.0, "num_panels_on_rafter": 2, "panel_to_eave": 0.0, "orientation": "Landscape", "beam_shape": { "id": "00000000-0000-0000-0000-000000000001" }, "frame_shape": "Rafter", "roof_pitch": 20.0, "beam_span": [65.0, 65.0], "roof_overhang": 6.0, "connection_type": { "id": 1 } }, ] } **CAD Design** CAD Design Requirements are submitted by including Electrical System Information, Structural Design Information, and Organization/Utility information through their relevant fields. These fields are detailed below. *Electrical System Information* Note that there are optional fields that may or may not be included depending on your project. +----------------------------+---------------------+--------------------------------------------------------------------------------+ | Field | Data Type | Description | +============================+=====================+================================================================================+ || module_type || Module Object\* || Type of Module being used for the project. | || || || Can be obtained from the :ref:`module-types` | || || || endpoint. | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || module_count || Int || Total number of Solar Panel Modules. | || || || | || || || | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || inverter_type || Inverter Object\* || Type of Inverter being used for the project. | || || || Can be obtained from the :ref:`inverter-types` | || || || endpoint. | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || inverter_count || Int || Total number of inverters. | || || || | || || || | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || production_meter_location || String (Choices) || Choices are: | || || || * "Between Solar and Disconnect" | || || || * "Between Disconnect and MSP" | || || || | || || || If not applicable for this job, | || || || exclude this field from your request | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || msp_rating || Int (Choices) || MSP Rating is generally attached to the door | || || || of the main breaker panel. It will most likely | || || || be a number from 100 to 225 in intervals of 25 | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || breaker_rating || Int (Choices) || The Breaker Rating is generally attached to | || || || the door of the main breaker panel. It must | || || || be at least 25 and must also be less than or | || || || equal to the MSP Rating in intervals of 25. | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || interconnection || String (Choices) || We allow for multiple interconnection options to be selected depending | || || || on the needs for your project. We generally recommend selecting from the | || || || following simple options: | || || || * "Breaker Injection into MSP" | || || || * "Line Side Tap" | || || || * "Load Side Tap" | || || || | || || || However if those do not fit your needs, available options are: | || || || * "PV Breaker in Sub Panel (Breaker Fed)" | || || || * "Load Side Tap in MSP (Breaker Fed Sub Panel)" | || || || * "Load Side Tap in Sub Panel (Breaker Fed Sub Panel)" | || || || * "PV Breaker in Sub Panel (Sum Of Breakers)" | || || || * "PV Breaker in Sub Panel (Lug Fed)" | || || || * "Load Side Tap in MSP (Lug Fed Sub Panel)" | || || || * "Load Side Tap in Sub Panel (Lug Fed Sub Panel)" | || || || * "Supply Side Breaker in MLO MSP" | || || || * "PV Breaker in MSP" | || || || * "Supply Side Tap in MSP (Neutral Tap)" | || || || * "Supply Side Tap in Meter Can (Neutral Tap)" | || || || * "Supply Side Tap in Tap Box (Neutral Tap)" | || || || * "Meter Intercept (w/ Service Disconnect)" | || || || * "Supply Side Tap in MSP (N-G Bond)" | || || || * "PV Breaker in Split Bus MSP" | || || || * "PV Breaker in Split Bus MSP (MLO)" | || || || * "PV Breaker in Sub Panel (Split Bus MSP w/ Internal Busbar)" | || || || * "PV Breaker in Sub Panel (Split Bus MSP w/o Internal Busbar)" | || || || * "Load Side Tap in MSP (Split Bus MSP w Internal Busbar)" | || || || * "Load Side Tap in MSP (Split Bus MSP w/o Internal Busbar)" | || || || * "Supply Side Breaker in Split-Bus MSP (w/ Internal Busbar)" | || || || * "Supply Side Breaker in Split-Bus MSP (w/o Internal Busbar)" | || || || * "PV Breaker in Sub Panel (Re-Route)" | || || || * "Supply Side Tap in MSP" | || || || * "Supply Side Tap in Meter Can" | || || || * "Supply Side Tap in Tap Box" | || || || * "PV Breaker in MSP (Unrelated Sub | Lug Fed)" | || || || * "PV Breaker in MSP (Unrelated Sub | Breaker Fed)" | || || || * "Supply Side Tap in MSP (Main Breaker Only MSP | Interior Panel Not Shown)" | || || || * "Supply Side Tap in MSP (Main Breaker Only MSP | Interior Panel Shown)" | || || || * "Supply Side Tap in MSP (Existing PV System Breaker)" | || || || * "Load Side Feed-Thru Intercept" | || || || * "Meter Collar (Breaker)" | || || || * "Meter Collar (No Breaker)" | || || || * "Supply Side Tap in Automatic Transfer Switch" | || || || * "Tesla Backup Switch With Meter" | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || optimizer_type || Optimizer Object\* || Type of Optimizer being used for the project, | || *(Optional)* || || if applicable. Can be obtained from the | || || || :ref:`optimizer-types` endpoint. | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || mpu_model_number || String || The MPU model number for the project, if | || *(Optional)* || || applicable. | || || || | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || battery_type || Battery Object\* || Type of Battery being used for the project, if | || *(Optional)* || || applicable. Can be obtained from the | || || || :ref:`battery-types` endpoint. | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || battery_count || Int || Total number of batteries. | || *(Optional)* || || | || || || | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ || battery_backup || String (Choices) || Choices are: | || *(Optional)* || || * Whole Home | || || || * Partial Home | || || || | +----------------------------+---------------------+--------------------------------------------------------------------------------+ *Organization/Utility Specific Information* +----------------------------+-----------+------------------------------------------+ | Field | Data Type | Description | +============================+===========+==========================================+ || utility_name || String || Name of the Utility for the project. | || || || | || || || | +----------------------------+-----------+------------------------------------------+ || contractor_license_number || String || The Contractor License for the project. | || || || | +----------------------------+-----------+------------------------------------------+ *Roof Structural Information* Similar to submitting a project requesting a Structural Evaluation Letter, Structural Information for CAD Design can either be provided for using the Basic or Advanced submission method. We recommend using the Basic submission method if there are no major differences structurally for the placement of each Solar Panel Array on the project. Right Angle Engineering will infer and confirm other structural information as needed. If there are major differences (such as different roof material or connections used per array), then we suggest using the Advanced method to submit Roof Structural Information. The primary difference between each method is the ability to specify structural details for each Solar Panel Array. While the Basic Submission assumes the same structural information for the number of arrays specified, The Advanced Submission allows you to specify structural details for each individual array. We detail how to submit using each method below. **Basic Submission** +------------------+---------------------------+---------------------------------------------------+ | Field | Data Type | Description | +==================+===========================+===================================================+ || roof_material || Roof Material Object\* || Material of the roof supporting the array | || || || (ex. Asphalt Shingles). | || || || | || || || Can be obtained from the :ref:`roof-materials` | || || || endpoint below. | || || || | || || || See the Roof Material support page for | || || || more information on the given options. | +------------------+---------------------------+---------------------------------------------------+ || roof_pitch || Float || Angle/slope of the roof in degrees. | || || || | || || || Min: 0 | || || || Max: 60 | || || || | || || || See the How to Determine Roof Pitch support | || || || page for more information | +------------------+---------------------------+---------------------------------------------------+ || racking_type || Racking Type Object\* || The racking used for the project. Can be | || || || obtained from the :ref:`racking-types` endpoint. | || || || | +------------------+---------------------------+---------------------------------------------------+ || connection_type || Connection Type Object\* || The type of attatchment/connection that is being | || || || used to connect the solar panel array | || || || to the roof. | || || || | || || || Can be obtained from the :ref:`connection-types` | || || || endpoint. | || || || | || || || See the Connection Type support page for | || || || more information. | +------------------+---------------------------+---------------------------------------------------+ || beam_shape || Beam Shape Object\* || Roof framing beam size. Options | || || || consist of beam shape by different | || || || sizes (2x4, 2x6, 2x8, etc.) | +------------------+---------------------------+---------------------------------------------------+ || beam_spacing || Float || Beam spacing measured in inches. | || || || | || || || Min: 6 | || || || Max: 480 | || || || | || || || See the How to Find Beam Spacing support page | || || || for more information | +------------------+---------------------------+---------------------------------------------------+ || array_count || Int || Number of arrays for the project | || || || | || || || **Only necessary if Solar Panel Array objects** | || || || **are not included in the request body** | +------------------+---------------------------+---------------------------------------------------+ *Request Body Example* `Postman Example `__ .. code-block:: JSON { "client_name": "Andrew Schwartz", "client_street_address": "333 W 2230 N", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a" }, "client_zip_code": "84604", "services_requested": ["pv_cad_design"], "utility_name": "Test Utility", "contractor_license_num": 123453 "module_type": { "id": "832378d1-da76-4337-b02e-415619b98e31" }, "module_count": 20, "inverter_type": { "id": "d1094eb5-415e-4cff-b809-935a86f765b6" }, "inverter_count": 10, "production_meter_location": "Between Solar and Disconnect", "optimizer_type": { "id": "44ecd73a-8569-4908-a9c5-c6aab2c428f0" }, "battery_type": { "id": "05d15614-b88a-4e12-8a45-ad389cb9ac68" }, "battery_count": 2, "battery_backup": "Whole Home", "mpu_model_number": "ABC-123", "msp_rating": 100, "breaker_rating": 75, "interconnection": "Line Side Tap", "roof_material": { "id": "00000000-0000-0000-0000-000000000001", "name": "Asphalt Shingles" }, "beam_spacing": 12.0, "beam_shape": { "id": "00000000-0000-0000-0000-000000000001", "name": "2x4", }, "roof_pitch": 24.0, "connection_type": { "id": 1 "name": "L-Foot", } "racking_type": { "id": "5b2ae434-9ec1-4e72-915b-c39f1c09b478" } "array_count": 2 } **Advanced Submission** This method requires the addition of Solar Panel Array objects through the 'arrays' field in the body of the request. We include details of the 'arrays' field and all of fields included for each Solar Panel Array object below, along with an example request. +----------------------------+----------------------+-------------------------------------------------+ | Field | Data Type | Description | +============================+======================+=================================================+ || arrays || Array of Solar || The Collection of Solar Panel Array objects | || || Panel Array Objects || which constitutes the core of our analysis | || || || for the job. See below for information | || || || regarding the Solar Panel Array Object. | +----------------------------+----------------------+-------------------------------------------------+ Each Solar Panel Array object will contain the fields noted under Basic Submission. Below we give an example request body using th Advanced Submission method. `Postman Example `__ .. code-block:: JSON { "client_name": "Andrew Schwartz", "client_street_address": "333 W 2230 N", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a" }, "client_zip_code": "84604", "services_requested": ["pv_cad_design"], "utility_name": "Test Utility", "contractor_license_num": 123453 "module_type": { "id": "832378d1-da76-4337-b02e-415619b98e31" }, "module_count": 20, "inverter_type": { "id": "d1094eb5-415e-4cff-b809-935a86f765b6" }, "inverter_count": 10, "production_meter_location": "Between Solar and Disconnect", "optimizer_type": { "id": "44ecd73a-8569-4908-a9c5-c6aab2c428f0" }, "battery_type": { "id": "05d15614-b88a-4e12-8a45-ad389cb9ac68" }, "battery_count": 2, "battery_backup": "Whole Home", "mpu_model_number": "ABC-123", "msp_rating": 100, "breaker_rating": 75, "interconnection": "Line Side Tap", "arrays": [ { "roof_material": { "id": "00000000-0000-0000-0000-000000000001", "name": "Asphalt Shingles" }, "beam_spacing": 12.0, "beam_shape": { "id": "00000000-0000-0000-0000-000000000001", "name": "2x4", }, "roof_pitch": 24.0, "connection_type": { "id": 1 "name": "L-Foot", } "racking_type": { "id": "5b2ae434-9ec1-4e72-915b-c39f1c09b478" } }, { "roof_material": { "id": "00000000-0000-0000-0000-000000000002", "name": "Corrugated Metal" }, "beam_spacing": 12.0, "beam_shape": { "id": "00000000-0000-0000-0000-000000000002", "name": "2x6", }, "roof_pitch": 24.0, "connection_type": { "id": 1 "name": "L-Foot", } "racking_type": { "id": "5b2ae434-9ec1-4e72-915b-c39f1c09b478" } } ] } *Optional Recipient Address* As previously noted, we provision one API Key per organization. Jobs that require an engineering letter are assumed to be addressed to the organization that sent the job. Therefore the letter is addressed to that organization by default. However, a job may be sent to Right Angle Engineering on behalf of another organization with a different name and address. If this is the case, you may send additional recipient information that will be put in place of your organization's information on the returned letter. Simply include these 5 fields in the body of the request to the Jobs Endpoint to override your organization's information on the generated letter. +--------------------------+--------+------------------------------------+ | Field | Type | Description | +==========================+========+====================================+ | recipient_name | String | Name of letter recipient | +--------------------------+--------+------------------------------------+ | recipient_street_address | String | Street Address of letter recipient | +--------------------------+--------+------------------------------------+ | recipient_city | String | City of letter recipient | +--------------------------+--------+------------------------------------+ | recipient_state | String | State of letter recipient | +--------------------------+--------+------------------------------------+ | recipient_zip_code | String | Zip code of letter recipient | +--------------------------+--------+------------------------------------+ `Postman Example `__ .. code-block:: JSON { // ...Other Job Fields... "recipient_name": "Another Company", "recipient_street_address": "100 W 2000 N", "recipient_city": "Orem", "recipient_state": "Utah", "recipient_zip_code": "84604", // ...Other Job Fields... "arrays": [ // ...Array Fields... ] } Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 Created status and a newly created Job object, containing any relevant fields. The newly created Job object in the response body will contain the same fields as noted above in the request body along with the following additional fields: +----------------------+-----------------------+-------------------------------------------------------+ | Field | Type | Description | +======================+=======================+=======================================================+ | id | Int | ID identifying the created Job instance | +----------------------+-----------------------+-------------------------------------------------------+ | updated_at | DateTime | Date the job was last updated | +----------------------+-----------------------+-------------------------------------------------------+ | created_at | DateTime | Date the job was created | +----------------------+-----------------------+-------------------------------------------------------+ || status || String || Job status. Will initially be | || || || "Submitted" when the Job is first created | +----------------------+-----------------------+-------------------------------------------------------+ | notes | String/Null | Notes regarding the Job | +----------------------+-----------------------+-------------------------------------------------------+ If applicable, newly created Array object(s) will be included in the response body. Each will contain the same fields included in the request body, along with the following additional fields: +-------------------+-----------------------------------+-------------------------------------------+ | Field | Type | Description | +===================+===================================+===========================================+ | id | UUID | ID identifying the created Array instance | +-------------------+-----------------------------------+-------------------------------------------+ Furthermore, all fields that are objects will return with at least an 'id' and 'name' field to identify the object. *Success Response Example* .. code-block:: JSON //HTTP/1.1 201 Created { "id": 1234, "updated_at": "2021-09-03T21:58:27.189144Z", "created_at": "2021-09-03T21:58:27.157343Z", "status": "Submitted", "client_name": "Andrew Schwartz", "client_street_address": "333 W 2230 N", "client_city": "Provo", "client_state": { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a", "name": "Utah", "abbreviation": "UT" }, "client_zip_code": "84604", "arrays": [ { "id": "968dcc63-03e0-4a97-8184-be7924839bdb", "name": "Array 1", "panel_quantity": 10, "roof_material": { "id": "00000000-0000-0000-0000-000000000001", "name": "Asphalt Shingles" }, "beam_spacing": 12.0, "num_panels_on_rafter": 2, "panel_to_eave": 12.0, "orientation": "Landscape", "beam_shape": { "id": "00000000-0000-0000-0000-000000000001", "name": "2x4" }, "frame_shape": "Rafter", "roof_pitch": 24.0, "beam_span": [70.0, 70.0], "roof_overhang": 12.0, "connection_type": { "id": 1, "name": "S5 Protea Bracket" } } ] "notes": "This is an example job note", } *Validation Error* If there was an error with one of the fields, you will receive a response with a 400 Bad Request status along with details regarding the error in the response body. .. _list-jobs: List Jobs --------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/jobs`` `Postman Example `__ Query Parameters ^^^^^^^^^^^^^^^^ The following query parameters can be used to filter the list of jobs: +----------------------------+------------------+--------------------------------------------------+ | Parameter | Data Type | Description | +============================+==================+==================================================+ | client_state | String | Filter by client state ID(s). Multiple values | | | | can be separated by commas. | +----------------------------+------------------+--------------------------------------------------+ | services | String | Filter by service slug(s). Multiple values | | | | can be separated by commas. Legacy slug aliases | | | | (e.g. structural_letter) are accepted. | +----------------------------+------------------+--------------------------------------------------+ | client_name | String | Filter by client name (case-insensitive | | | | partial match). | +----------------------------+------------------+--------------------------------------------------+ | client_street_address | String | Filter by client street address | | | | (case-insensitive partial match). | +----------------------------+------------------+--------------------------------------------------+ | city | String | Filter by client city (case-insensitive | | | | partial match). | +----------------------------+------------------+--------------------------------------------------+ | ahj | String | Filter by AHJ display name (case-insensitive | | | | partial match). | +----------------------------+------------------+--------------------------------------------------+ | utility | String | Filter by utility name (case-insensitive | | | | partial match). | +----------------------------+------------------+--------------------------------------------------+ | submitted_start_date | String (ISO) | Filter by submission date range start. Must be | | | | used with submitted_end_date. | +----------------------------+------------------+--------------------------------------------------+ | submitted_end_date | String (ISO) | Filter by submission date range end. Must be | | | | used with submitted_start_date. | +----------------------------+------------------+--------------------------------------------------+ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Job objects. The response will be in JSON format. The response for this endpoint will be the same as the response as the Submit Jobs endpoint. See the Success Response Example section under the :ref:`submit-job` endpoint for an example. .. _retrieve-jobs: Retrieve Job ------------ Request ^^^^^^^ ``GET https://api.rightangleeng.com/jobs/`` `Postman Example `__ Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object. Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and a Job object instance. The response will be in JSON format. The response for this endpoint will be the same as the response as the Submit Jobs endpoint. See the Success Response Example section under the :ref:`submit-job` endpoint for an example. .. _submit-files: Submit Job Files ---------------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/jobs//files`` `Postman Example `__ Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object Request Details ^^^^^^^^^^^^^^^ This request will submit a file to the specified job object and return the corresponding Job File This request requires a Content-Type header of multipart/form-data. See these MDN Docs for more information. This request also requires that a file to be uploaded as a value in a key-value pair in the body of the request. The key in the request body should be labeled as 'file' or the files will not be processed. If multiple files are being uploaded in the same request, they should be uploaded with the value of same key. The following file types are supported: * JPEG * PNG * HEIC * HEIF * PDF * DOC * DOCX * AVI * MPEG * MP4 * MOV Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 response and the created . The response will be in JSON format. Each File object will contain the following fields: *File Object* +-------+--------+------------------------------------------------+ | Field | Type | Description | +=======+========+================================================+ | id | UUID | ID identifying File Object | +-------+--------+------------------------------------------------+ | file | String | Link to file | +-------+--------+------------------------------------------------+ | job | int | ID identifying job associated with File Object | +-------+--------+------------------------------------------------+ Retrieve Job Files ------------------ Request ^^^^^^^ ``GET https://api.rightangleeng.com/jobs//files`` `Postman Example `__ Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object Response Details ^^^^^^^^^^^^^^^^ Depending on the services requested for the job, this endpoint returns other files provided by Right Angle Engineering. *Success Response* This request will return a 200 response and an array of Job File objects. The response will be in JSON format. Each Job File object will contain the following fields: +-------------+---------+---------------------------------+ | Field | Type | Description | +=============+=========+=================================+ | name | String | File name | +-------------+---------+---------------------------------+ | file | String | Link to file | +-------------+---------+---------------------------------+ || created_at | String | Date when the file was created | +-------------+---------+---------------------------------+ *Success Response Example* .. code-block:: JSON //HTTP/1.1 201 Created [ { "id": "ba878cf6-870a-4dd5-a2dd-60617dcec809", "file": "https://right-angle images.s3.amazonaws.com/job-files/Doc_Sample.pdf", "job": "4629" } ] Retrieve Roof Evaluation Letter ------------------------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/jobs//letter`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and the Roof Evaluation Letter pdf. Note that this response is contingent of the corresponding job to have a status of 'Approved' The status of a job can be found in the response of the :ref:`retrieve-jobs` or :ref:`list-jobs` endpoint. Send Message ------------ Request ^^^^^^^ ``POST https://api.rightangleeng.com/jobs//message`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object. Request Body ^^^^^^^^^^^^ The only field required in the request is message_body as show below. `Postman Example `__ .. code-block:: JSON { "message_body": "This is a test message.", } Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response indicating that the message has been successfully sent. The response will be in JSON format. A message history will be included in the the response of the Retrieve Job endpoint under the field, 'messages.' The messages field will be an array of messages with the following format: .. code-block:: JSON { "body": "This is a test message.", "author": "Jane Doe", "date_created": "2021-09-03T21:58:27.157343Z" } Revise Job ---------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/jobs//revision`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object. Request Body ^^^^^^^^^^^^ The request body should contain, at a minimum, the revision notes and revision reason as shown below. You can also include other fields that you would like to update as are available in the Submit Job endpoint. +------------------+------------------+------------------------------------------------+ | Field | Type | Description | +==================+==================+================================================+ || revision_notes || String || Notes describing the details of the revision | || || || and any additional context | +------------------+------------------+------------------------------------------------+ || revision_reason || String || The reason for the revision. Must be one of: | || || (Choices) || * 'equipment_change' | || || || * 'electrical_change' | || || || * 'ahj_rejection' | || || || * 'utility_rejection' | || || || * 'company_preference' | || || || * 'right_angle_error' | || || || * 'layout_change' | || || || * 'additional_service' | || || || * 'as_built' | || || || * 'other' | +------------------+------------------+------------------------------------------------+ .. code-block:: JSON { "revision_notes": "These are notes about the revision", "revision_reason": "equipment_change" // ...Other Job Fields as needed } Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response indicating that the revision has been successfully submitted. The response will be in JSON format. The response will include a new job ID. This new ID represents the revised version of the job and should be used for all future interactions with that job. The original job ID will no longer be tracked for updates or modifications. .. code-block:: JSON { "id": 1235, // ...Other Job Fields... } Upload Panel Layout Image ------------------------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/jobs//panel-layout-images`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Job object Request Details ^^^^^^^^^^^^^^^ This request will create a Panel Layout Image object This request requires a Content-Type header of multipart/form-data. See these MDN Docs for more information. This request also requires that a file to be uploaded as a value in a key-value pair in the body of the request. The key in the request body should be labeled as 'file' or the files will not be processed. If multiple files are being uploaded in the same request, they should be uploaded with the value of same key. The following file types are supported: * JPEG * PNG * HEIC * HEIF * PDF * DOC * DOCX * AVI * MPEG * MP4 * MOV `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 response and an array of Panel Layout Image objects. The response will be in JSON format. Each Panel Layout Image object will contain the following fields: *Panel Layout Image Object* +-------+--------+--------------------------------------------------------------+ | Field | Type | Description | +=======+========+==============================================================+ | id | UUID | ID identifying Panel Layout Image | +-------+--------+--------------------------------------------------------------+ | file | String | Link to image | +-------+--------+--------------------------------------------------------------+ | job | Int | ID identifying job associated with Panel Layout Image object | +-------+--------+--------------------------------------------------------------+ *Success Response Example* .. code-block:: JSON //HTTP/1.1 201 Created [ { "id": "ba878cf6-870a-4dd5-a2dd-60617dcec809", "file": "https://right-angle images.s3.amazonaws.com/panel_layout_images/panellayout.jpg", "job": "4629" } ] Upload Beam Spacing Image ------------------------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/arrays//beam-spacing-images`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Array object Request Details ^^^^^^^^^^^^^^^ This request will create a Beam Spacing Image object This request requires a Content-Type header of multipart/form-data. See these MDN Docs for more information. This request also requires that a file to be uploaded as a value in a key-value pair in the body of the request. The key in the request body should be labeled as 'file' or the files will not be processed. If multiple files are being uploaded in the same request, they should be uploaded with the value of same key. The following file types are supported: * JPEG * PNG * HEIC * HEIF * PDF * DOC * DOCX * AVI * MPEG * MP4 * MOV `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 response and an array of Beam Space Image objects. The response will be in JSON format. Each Beam Space Image object will contain the following fields: *Beam Space Image Object* +--------+--------+-------------------------------------------------+ | Field | Type | Description | +========+========+=================================================+ | id | UUID | ID identifying Beam Space Image | +--------+--------+-------------------------------------------------+ | file | String | Link to image | +--------+--------+-------------------------------------------------+ || array || Int || ID identifying the Solar Panel Array | || || || object associated with Beam Space Image object | +--------+--------+-------------------------------------------------+ *Success Response Example* .. code-block:: JSON //HTTP/1.1 201 Created [ { "id": "9c09afe1-d3b0-4b70-ab24-05d8f5ae440f", "file": "https://right-angle-images.s3.amazonaws.com/beam_space_images/beamspaceimage.jpg", "array": "968dcc63-03e0-4a97-8184-be7924839bdb" } ] Upload Beam Size Image ---------------------- Request ^^^^^^^ ``POST https://api.rightangleeng.com/arrays//beam-size-images`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Array object Request Details ^^^^^^^^^^^^^^^ This request will create a Beam Size Image object This request requires a Content-Type header of multipart/form-data. See these MDN Docs for more information. This request also requires that a file to be uploaded as a value in a key-value pair in the body of the request. The key in the request body should be labeled as 'file' or the files will not be processed. If multiple files are being uploaded in the same request, they should be uploaded with the value of same key. The following file types are supported: * JPEG * PNG * HEIC * HEIF * PDF * DOC * DOCX * AVI * MPEG * MP4 * MOV `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 response and an array of Beam Size Image objects. The response will be in JSON format. Each Beam Size Image object will contain the following fields: *Beam Size Image Object* +--------+--------+-------------------------------------------------+ | Field | Type | Description | +========+========+=================================================+ | id | UUID | ID identifying Beam Size Image | +--------+--------+-------------------------------------------------+ | file | String | Link to image | +--------+--------+-------------------------------------------------+ || array || Int || ID identifying the Solar Panel Array | || || || object associated with Beam Size Image object | +--------+--------+-------------------------------------------------+ *Success Response Example* .. code-block:: JSON //HTTP/1.1 201 Created [ { "id": "9c09afe1-d3b0-4b70-ab24-05d8f5ae440f", "file": "https://right-angle-images.s3.amazonaws.com/beam_size_images/beamsizeimage.jpg", "array": "968dcc63-03e0-4a97-8184-be7924839bdb" } ] Upload Attic Image ------------------ Request ^^^^^^^ ``POST https://api.rightangleeng.com/arrays//attic-images`` Request Path Parameters ^^^^^^^^^^^^^^^^^^^^^^^ - ID identifying the Array object Request Details ^^^^^^^^^^^^^^^ This request will create a Attic Image object This request requires a Content-Type header of multipart/form-data. See these MDN Docs for more information. This request also requires that a file to be uploaded as a value in a key-value pair in the body of the request. The key in the request body should be labeled as 'file' or the files will not be processed. If multiple files are being uploaded in the same request, they should be uploaded with the value of same key. The following file types are supported: * JPEG * PNG * HEIC * HEIF * PDF * DOC * DOCX * AVI * MPEG * MP4 * MOV `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ *Success Response* This request will return a 201 response and an array of Attic Image objects. The response will be in JSON format. Each Attic Image object will contain the following fields: *Attic Image Object* +--------+--------+-------------------------------------------------+ | Field | Type | Description | +========+========+=================================================+ | id | UUID | ID identifying Attic Image | +--------+--------+-------------------------------------------------+ | file | String | Link to image | +--------+--------+-------------------------------------------------+ || array || Int || ID identifying the Solar Panel Array | || || || object associated with Attic Image object | +--------+--------+-------------------------------------------------+ .. code-block:: JSON //HTTP/1.1 201 Created [ { "id": "9c09afe1-d3b0-4b70-ab24-05d8f5ae440f", "file": "https://right-angle-images.s3.amazonaws.com/attic_images/atticimage.jpg", "array": "968dcc63-03e0-4a97-8184-be7924839bdb" } ] .. _states: List States ----------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/states`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 OK response, with an array of State objects in JSON format. Each State object will contain the following fields: +---------------+---------+--------------------------+ | Field | Type | Description | +===============+=========+==========================+ | id | UUID | ID identifying the state | +---------------+---------+--------------------------+ | name | String | State name | +---------------+---------+--------------------------+ | abbreviation | String | State abbreviation | +---------------+---------+--------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "8f33e5fd-1cbb-46ca-b43e-9a56688c421a", "name": "Utah", "abbreviation": "UT" }, //... ] .. _beam-shapes: List Beam Shape --------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/beam-shape`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of beam shape objects. The response will be in JSON format. +-------+--------+--------------------------------+ | Field | Type | Description | +=======+========+================================+ | id | UUID | ID identifying Beam Shape | +-------+--------+--------------------------------+ | name | String | Beam Shape name | +-------+--------+--------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "2x4" }, //... ] .. _roof-materials: List Roof Material ------------------ Request ^^^^^^^ ``GET https://api.rightangleeng.com/roof-materials`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Roof Material objects. The response will be in JSON format. For more information regarding Roof Material objects, please see the Roof Material support page. Each Roof Material object will contain the following fields: +-------+--------+-----------------------------------+ | Field | Type | Description | +=======+========+===================================+ | id | UUID | ID identifying the Roof Material | +-------+--------+-----------------------------------+ | name | String | Roof Material name | +-------+--------+-----------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "Asphalt Shingles" }, //... ] .. _connection-types: List Connection Types --------------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/connection-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Connection Type objects. The response will be in JSON format. For more information regarding Connection Type objects, please see the Connection Type support page. Each Connection Type object will contain the following fields: +-------+--------+-----------------------------------+ | Field | Type | Description | +=======+========+===================================+ | id | Int | ID identifying Connection Type | +-------+--------+-----------------------------------+ | name | String | Connection Type name | +-------+--------+-----------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": 36, "name": "L-Foot" }, //... ] .. _racking-types: List Racking Types ------------------ Request ^^^^^^^ ``GET https://api.rightangleeng.com/racking-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Racking Type objects. The response will be in JSON format. Each Module Type object will contain the following fields: +-------+--------+------------------------------------+ | Field | Type | Description | +=======+========+====================================+ | id | UUID | ID identifying Racking Type object | +-------+--------+------------------------------------+ | name | String | Racking Type object name | +-------+--------+------------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "833cba79-ee77-4090-be3e-32f41f711327", "name": "SolarMount HD", "manufacture": "Unirac", }, //... ] .. _module-types: List Module Types ------------------ Request ^^^^^^^ ``GET https://api.rightangleeng.com/module-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Module Type objects. The response will be in JSON format. Each Module Type object will contain the following fields: +-------+--------+----------------------------+ | Field | Type | Description | +=======+========+============================+ | id | UUID | ID identifying Module Type | +-------+--------+----------------------------+ | name | String | Module Type name | +-------+--------+----------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "CS1H-315MS" "manufacture": "Canadian Solar" }, //... ] .. _inverter-types: List Inverter Types -------------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/inverter-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Inverter Type objects. The response will be in JSON format. Each Inverter Type object will contain the following fields: +-------+--------+------------------------------+ | Field | Type | Description | +=======+========+==============================+ | id | UUID | ID identifying Inverter Type | +-------+--------+------------------------------+ | name | String | Inverter Type name | +-------+--------+------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "PM1-290-01 (Single Phase)", "manufacture": "Generac", }, //... ] .. _optimizer-types: List Optimizer Types -------------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/optimizer-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Optimizer Type objects. The response will be in JSON format. Each Optimizer Type object will contain the following fields: +-------+--------+-------------------------------+ | Field | Type | Description | +=======+========+===============================+ | id | UUID | ID identifying Optimizer Type | +-------+--------+-------------------------------+ | name | String | Optimizer Type name | +-------+--------+-------------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "PM1-290-01 (Single Phase)", "manufacture": "Generac", }, //... ] .. _battery-types: List Battery Types ------------------- Request ^^^^^^^ ``GET https://api.rightangleeng.com/battery-types`` `Postman Example `__ Response Details ^^^^^^^^^^^^^^^^ This request will return a 200 response and an array of Optimizer Type objects. The response will be in JSON format. Each Battery Type object will contain the following fields: +-------+--------+-----------------------------+ | Field | Type | Description | +=======+========+=============================+ | id | UUID | ID identifying Battery Type | +-------+--------+-----------------------------+ | name | String | Battery Type name | +-------+--------+-----------------------------+ *Example Response* .. code-block:: JSON //HTTP/1.1 201 Created [ //... { "id": "00000000-0000-0000-0000-000000000001", "name": "IQ Battery ENCHARGE-10-1P-NA", "manufacture": "Enphase" }, //... ]