openapi: 3.0.0
info:
  title: Quantiv API
  version: 1.0.0
  description: >
    Welcome to the Quantiv API documentation! 


    The Quantiv API empowers developers with seamless access to powerful
    data-driven solutions. Our suite of APIs enables you to efficiently interact
    with key resources, automate processes, and enhance your applications with
    reliable insights.


    Whether you're integrating property intelligence, optimizing lead quality
    assessments, or leveraging advanced data analytics, Quantiv provides the
    tools you need to drive smarter decisions and maximize efficiency.


    Get started today and unlock the full potential of our APIs!


    ### 🧐 Overview
      
    The Quantiv API is organized around REST principles, utilizing standard HTTP
    methods, response codes, and authentication. It accepts requests with a JSON
    body and returns responses in JSON format. The API only supports
    HTTPS-secured communication. Standard HTTP status codes are used to indicate
    request outcomes. Error responses include `error`, `statusCode`, and
    `message` fields for clear debugging.

    ### 🌐 Endpoint
      The Quantiv API uses a single endpoint for both sandbox and production environments.
       | Environment | Endpoint URL                            |
       |-------------|-----------------------------------------|
       | Sandbox    | [https://public-api.quantiv.io](https://public-api.quantiv.io) |
       | Production | [https://public-api.quantiv.io](https://public-api.quantiv.io) |

    ### 🔐 Authentication


    You will be provided with two API keys. The key with the `sandbox` prefix
    should be used for requests to the sandbox environment, while the key with
    the `production` prefix should be used for requests to the production
    environment.  


    The API key must be included in the `token` request header for each API
    request.


    ### 📝 Response Status Codes
      
    The Quantiv API follows standard HTTP response codes to communicate the
    outcome of an API request. Generally, codes in the 200 range represent
    successful requests, codes in the 400 range indicate errors in the request,
    and codes in the 500 range denote server-side issues.

      | Status Code | Status Message        | Description                                    |
      |-------------|-----------------------|------------------------------------------------|
      | 200         | Success               | The request was successfully processed.        |
      | 400         | Bad Request           | The request was malformed or had invalid syntax. |
      | 401         | Unauthorized          | The provided authentication credentials were invalid. |
      | 404         | Not Found             | The requested resource could not be located.   |
      | 500         | Internal Server Error | An error occurred on the server while processing the request. |

    ### ⚠️ Business Errors


    The Quantiv API returns a status code of **400 Bad Request** for
    business-related errors. The response will include the details of the error,
    as outlined in the table below.

      | Case                              | Error        | StatusCode | Message                                                           |
      |-----------------------------------|--------------|------------|-------------------------------------------------------------------|
      | Incorrect Payment Status         | Bad Request  | 400        | Account is paused due to failed payment. Contact Quantiv Admin.   |
      | Inactive API Product Triggered   | Bad Request  | 400        | Product is not activated. Contact Quantiv Admin.                  |
      | Reaching API Usage Limit         | Bad Request  | 400        | API Monthly Limit is reached. Contact Quantiv Admin.              |
      | Reaching $0 Account Balance      | Bad Request  | 400        | Insufficient Account Balance to process request. Contact Quantiv Admin. |
  termsOfService: https://www.quantiv.io/terms-of-service
  contact:
    email: eugene@quantiv.io
servers:
  - url: https://public-api.quantiv.io
tags:
  - name: Lead Append Level 1
    description: >
      Method to retrieve property details based on the provided information.


      **Note:** If any parameter in the response contains a `null` value, it
      indicates that the value could not be determined based on the provided
      data.
  - name: Lead Append Level 2
    description: >
      Method to retrieve property details, Lead Integrity Score and Defects
      based on the provided information. 


      **Note:** If any parameter in the response contains a `null` value, it
      indicates that the value could not be determined based on the provided
      data.


      **Lead Integrity Score** indicates the quality of a lead based on various
      factors such as zoning classification, owner occupancy status, presence of
      a structure, and surname match. It helps assess the reliability of a lead.



      **Score Values**

      | Score | Quality Level | Description |

      |-------|--------------|-------------|

      | null  | Unknown      | Lead quality can not be determined.| 

      | 10–9  | Outstanding  | Highest lead quality. |

      | 8–7   | Strong       | Reliable lead. |

      | 6–5   | Moderate     | Average lead quality. |

      | 4–3   | Weak         | Low-quality lead. |

      | 2–1   | Very Weak    | Very low lead quality. |

      | 0     | Unreliable   | Untrustworthy lead. |    


      <br>          


      **Lead Integrity Defects** indicates which factors contributed to a lower
      Lead Integrity Score. These defects highlight potential issues with the
      lead's reliability.


      **Defect Values**

      | Defect    | Description |

      |----------|-------------|

      | null     | Lead Defects can not be determined.|

      | zoning   | Property type is not confirmed as residential. |

      | occupancy | Property is not confirmed as occupied by the owner. |

      | structure | Structure is not confirmed as present at the address. |

      | surname  | Surname is not confirmed to match one of the names on the
      deed. |
  - name: Buyer Insights
    description: >
      **Buyer Insights** is a comprehensive suite of scoring tools designed to
      help home services providers assess homeowners' financial reliability,
      purchasing behavior, and willingness to invest in premium home
      improvements. It includes:


      - **SurePay™ Score** – Evaluates the likelihood of homeowners paying for
      services, helping contractors mitigate financial risk.  

      - **Elevate Score** – Measures a homeowner’s receptiveness and financial
      ability to invest in upsell opportunities and higher-end home
      improvements.

      - **Buyer Insights Scores** – Assesses consumer buying styles across
      various categories.   

      - **Sales Hacks** – Delivers instant, actionable guidance by translating
      Buyer Insights, SurePay™, and Elevate Scores into practical sales
      strategies for more effective customer engagement. 

      - **Property Details**: Contextual address information to support sales,
      site assessment, and project planning. Refer to [Lead Append Level 2
      Documentation](https://docs.quantiv.io/api/lead-append-level-2).

      - **Lead Integrity Score and Defects**: Measures to ensure data
      reliability and lead quality. Refer to [Lead Append Level 2
      Documentation](https://docs.quantiv.io/api/lead-append-level-2).

       Buyer Insights empowers businesses with data-driven insights, enabling smarter decision-making and improved profitability.

       **Note:** If any parameter in the response contains a `null` value, it indicates that the value could not be determined based on the provided data.
       
       **SurePay™ Score Values**
      | Value | Description |

      |-------|------------|

      | null  | Score can not be determined. |

      | 5     | High likelihood to perform and meet obligations. High likelihood
      to qualify for the best interest rates. |

      | 4     | Likely to perform and meet obligations. Likely to qualify for
      most loans at slightly higher rates. |

      | 3     | Average likelihood to perform and meet obligations. May qualify
      for some loans at higher rates. |

      | 2     | Poor likelihood to perform and meet obligations. May qualify for
      some loans at significantly higher rates. |

      | 1     | Unlikely to perform and meet obligations. Highly unlikely to
      qualify for any loans. |


      <br>


      **Elevate Score Values**

      | Value  | Description           |

      |--------|-----------------------|

      | null   | Score can not be determined. |

      | 10     | Extremely Likely      |

      | 9      | Highly Likely         |

      | 8      | Very Likely           |

      | 7      | Somewhat Likely       |

      | 6      | Likely                |

      | 5      | Somewhat Unlikely     |

      | 4      | Very Unlikely         |

      | 3      | Highly Unlikely       |

      | 1-2    | Extremely Unlikely    |


      <br>


      **Buyer Insights Scores Description**

      | Score                  | Description |

      |------------------------|-------------|

      | **Savvy Shopper**      | **Rationale**: These homeowners conduct
      extensive research and compare multiple options—not necessarily to find
      the lowest price, but to ensure they make a well-informed, risk-averse
      decision. These consumers like to compare prices across different sites
      before purchasing and typically read online reviews and consumer reports.
      **Sales Approach**: Build trust by offering side-by-side comparisons,
      testimonials, and third-party validations. Reinforce their ability to make
      an educated decision while subtly guiding them toward your best offering.
      |

      | **Brand Loyalist**     | **Rationale**: These homeowners have strong
      brand preferences and believe that reputation equates to reliability. They
      may challenge recommendations that deviate from their preselected brands.
      These consumers are willing to pay more for proven and reputable brands.
      **Sales Approach**: Align with their existing knowledge by reinforcing
      brand credibility. Emphasize manufacturer warranties, certifications, and
      brand-backed guarantees. If proposing alternatives, focus on comparable or
      superior features rather than price. Educate the consumer about the brand
      if you sell a product in which brand awareness is limited. |

      | **Trendsetter**        | **Rationale**: These homeowners love being
      ahead of the curve and are eager to explore innovative, cutting-edge
      solutions. They value exclusivity and uniqueness in their purchases. These
      consumers are trendsetters and early adopters of new products. **Sales
      Approach**: Present the newest, most innovative products first. Emphasize
      exclusivity, technological advancements, and the opportunity to be among
      the first to own the latest home improvement solutions. |

      | **Budget-Savvy Buyer** | **Rationale**: These homeowners prioritize
      affordability and perceived value over brand reputation. They tend to
      emphasize cost-efficiency in their decision-making process. Price is more
      important to these consumers than brand name. **Sales Approach**: Present
      cost-effective solutions that maximize value. Highlight financing options,
      cost savings over time, and product benefits that justify the investment.
      Be prepared to handle objections related to pricing. |

      | **Quality First Buyer** | **Rationale**: These buyers prioritize
      durability, craftsmanship, and peace of mind over price but may struggle
      to define what “quality” looks like. Quality matters for these consumers,
      and they are willing to pay more for fresh ingredients, durable materials,
      and quality craftsmanship. **Sales Approach**: Focus on quality
      differentiators such as superior materials, expert installation, and
      longevity. Help them visualize potential risks of choosing lower-quality
      options and reassure them of the long-term value. |

      | **Impulse Shopper (Can’t Say No)** | **Rationale**: These homeowners are
      easily persuaded to add features or upgrades that enhance functionality or
      perceived value. These spenders find it difficult to say 'no' to things
      that catch their eyes. They recognize they are "spenders" rather than
      "savers" and appreciate a convenient purchase opportunity. Top of mind =
      In the cart.  **Sales Approach**: Strategically introduce upgrades and
      enhancements throughout the conversation. Highlight benefits of add-ons in
      a way that makes them feel essential rather than optional. Use visual
      demonstrations to reinforce desirability. |

      | **Popular Picks**      | **Rationale**: These buyers seek social
      validation and prefer solutions that align with current trends and widely
      accepted choices. Online reviews and recommendations influence them
      significantly. **Sales Approach**: Leverage social proof by showcasing
      positive customer testimonials, industry trends, and best-selling options.
      Reinforce that their decision aligns with what other satisfied homeowners
      are choosing. |


      <br>


      **Buyer Insights Values**

      | Value  | Description           |

      |--------|-----------------------|

      | null   | Score can not be determined. |

      | 10     | Extremely Likely      |

      | 9      | Highly Likely         |

      | 8      | Very Likely           |

      | 7      | Somewhat Likely       |

      | 6      | Likely                |

      | 5      | Somewhat Unlikely     |

      | 4      | Very Unlikely         |

      | 3      | Highly Unlikely       |

      | 2      | Extremely Unlikely    |

      | 1      | Unknown               |

        **Note:** Sales Hack value is provided for a Buyer Insight only when the related Buyer Insight Score meets or exceeds 8.

      <br>


      **Accuracy Code**


      The accuracy code specifies the level at which the provided scores are
      categorized, 

      based on the quality and relevance of the user-supplied data. It indicates
      the reference 

      point used to generate the insights.

      | Value  | Description           |

      |--------|-----------------------|

      | P      | The scores are directly related to the individual (owner) of
      the address, based on the provided address data. |

      | A      | The scores are directly related to a primary member of the
      household associated with the address, based on the provided address
      data.|

      | G      | The scores reflect the modeled profile of the homeowner based
      on the typical profile of owners within a narrow geographic area of the
      provided address data.|

      | N      | No relevant data could be matched based on the provided
      information.|
  - name: Lead Value - Roof
    description: >-
      The **Lead Value - Roof API** is a fast, reliable tool for instantly
      assigning a value to roof replacement leads by calculating the approximate
      roof area and replacement costs based solely on a property address. Built
      specifically for roofing contractors, home improvement platforms, and
      sales engagement tools, it supports top-of-funnel lead generation and
      enables sales teams to quickly assess project value and prioritize
      opportunities.


      The API processes address-level inputs and optional parameters like roof
      material and installation pricing per square — to return a detailed
      approximation that includes roof area (adjusted for pitch), average pitch
      angle, complexity level, and total estimated replacement cost.


      The **Lead Value - Roof API** is designed to deliver consistent,
      data-backed approximations in real time — not to replace on-site
      inspections, precise measurements, or detailed proposals. Instead, it
      equips sales teams with a scalable, automated way to qualify and value
      leads.  By providing relative cost estimates early in the sales cycle,
      businesses can increase quote-to-close rates, reduce time spent on manual
      assessments, and focus efforts on the highest-value opportunities.


      **Note:** If any parameter in the response contains a `null` value, it
      indicates that the value could not be determined based on the provided
      data.


      **Structure Present Confidence Score Values**


      | Value | Description |

      |-------|-------------|

      | null  | Value could not be determined. |

      | 100   | High confidence that rooftop data corresponds to the primary
      structure at the exact address provided. |

      | 50    | Data may correspond to a nearby structure rather than the actual
      address, indicating a possible issue with the input address. |


      <br>


      **When a Score of 50 is Returned**


      A confidence score of 50 may be returned under the following conditions:


      - No structure exists at the provided address (e.g., empty lot, typo in
      house number, or unvalidated address).

      - Our system interpolated coordinates to the closest known structure due
      to an invalid or unrecognized address.

      - Our system failed to detect a structure due to:
        - Recent new construction not yet reflected in mapping data
        - Street name formatting issues (e.g., uncommon abbreviations or casing)
        - Address formatting discrepancies that prevented structure identification

      In such cases, the rooftop data returned may not represent the structure
      located at the submitted address.


      **Data Accuracy Alerts**


      The `Roof Pitch Alert` and `Roof Area Alert` parameters help identify
      potentially unreliable or atypical measurement results related to roof
      pitch or area. These alerts are designed to prompt additional validation
      or inspection.


      **Roof Pitch Alert Values**


      Indicates potential issues with roof pitch estimation.


      | Value      |
      Description                                                                 
      |

      |------------|------------------------------------------------------------------------------|

      | null       | Value could not be
      determined.                                               |

      | NO_ALERTS  | No pitch-related alerts
      detected.                                            |

      | LOW_PITCH  | Detected pitch is unusually low — possibly due to flat
      roofs or obstruction. |

      | HIGH_PITCH | Detected pitch is unusually high — may indicate steep or
      complex geometry.   |


      <br>


      **Roof Area Alert Values**


      Indicates potential issues with roof area estimation.


      | Value      |
      Description                                                                
      |

      |------------|-----------------------------------------------------------------------------|

      | null       | Value could not be
      determined.                                              |

      | NO_ALERTS  | No area-related alerts
      detected.                                            |

      | LOW_AREA   | Estimated area is smaller than expected — may be caused by
      occlusion or missing imagery. |

      | HIGH_AREA  | Estimated area is larger than expected — could result from
      multiple structures or over-segmentation. |


      <br>


      **When Alerts Are Triggered**


      Alerts are generated to assist in identifying potentially inaccurate or
      atypical results based on the roof pitch or area. Common scenarios
      include:


      - **Obstructed View**: Tree canopy, overhangs, or neighboring structures
      may obscure full visibility of the rooftop.

      - **Imagery Quality**: Satellite or aerial images may be affected by
      shadows, poor lighting, or resolution issues.

      - **Roof Complexity**: Irregular or highly complex roof geometries can
      make measurement modeling less reliable.

      - **Multiple Structures**: Properties with multiple buildings or large
      accessory structures may lead to elevated or ambiguous area calculations.

      - **Partial or Missing Imagery**: Incomplete or outdated imagery data can
      lead to pitch or area deviations.


      In such cases, alerts provide a useful prompt for further validation,
      helping to prioritize follow-up review and ensure more accurate project
      planning.
  - name: GoSolar Index
    description: >-

      **GoSolar Index** is an analytics tool built exclusively for residential
      solar sales teams, CRM platforms, and App providers to optimize lead
      qualification and targeting. This powerful scoring feature combines
      **behavioral signals**, **sustainability intent**, **financial
      indicators**, **and political orientation** to deliver a **single**,
      **predictive score** for every homeowner, improving conversion rates by
      identifying high-propensity targets.  


      The API response includes:
       - **GoSolar Index Score (10–0)**: A quantitative indicator of solar adoption potential.
       - **Prospect Fit Level**: A qualitative assessment (Ideal, Moderate, Weak) for quick segmentation.
       - **Prospect Attitude Message**: An insight into the homeowner’s likely solar motivation, such as environmental, sustainability, economic, or energy independence, enabling tailored messaging.
       - **Property Details**: Contextual address information to support sales, site assessment, and project planning. Refer to [Lead Append Level 2 Documentation](https://docs.quantiv.io/api/lead-append-level-2).
       - **Lead Integrity Score and Defects**: Measures to ensure data reliability and lead quality. Refer to [Lead Append Level 2 Documentation](https://docs.quantiv.io/api/lead-append-level-2).

      Solar providers can integrate the **GoSolar Index** into their lead
      scoring systems to improve conversion rates, reduce outreach costs, and
      personalize customer engagement strategies. 


      **Note:** If any parameter in the response contains a `null` value, it
      indicates that the value could not be determined based on the provided
      data.


      **GoSolar Index and Prospect Fit Level Mapping**

      | GoSolar Index   | Prospect Fit
      Level                                                                |
       |------------|-----------------------------------------------------------------------------|
       | 8.33 – 10  | Ideal                                       |
       | 5.0 – 8.32   | Moderate |
       | 0 – 4.99  | Weak |

      <br>


      **Prospect Attitude Message Values**
       |  |
       |------------|
       | Lead with emphasis on climate, sustainability, and clean energy considerations. |
       | Lead with emphasis on economic benefits, incentives, energy independence, and ROI consideration.  |
       | Neutral message emphasizing both economic benefits, incentives, independence and renewable energy benefits, and sustainability. |

      <br>
       
      **Accuracy Code**


      The accuracy code specifies the level at which the provided response is

      categorized, based on the quality and relevance of the user-supplied data.
      It indicates the reference point used to generate the insights.
       | Value  | Description|
       |--------|------------|
       | P      | `GoSolar Index`, `Prospect Fit Level` and `Prospect Attitude Message` are directly related to the individual (owner) of the address, based on the provided address data.|
       | A      | `GoSolar Index`, `Prospect Fit Level` and `Prospect Attitude Message` are directly related to a primary member of the household associated with the address, based on the provided address data.|
       | G      | `GoSolar Index`, `Prospect Fit Level` and `Prospect Attitude Message` reflect the modeled profile of the homeowner based on the typical profile of owners within a narrow geographic area of the provided address data.|
       | N      | No relevant data could be matched based on the provided information.|  
  - name: Utility Bill
    description: >-
      The **Utility Bill API** provides accurate energy usage on an
      address-specific basis without a utility bill. The API responds with
      electricity and fossil fuel consumption and cost data for the past 12
      months. This information is especially valuable for solar salespeople,
      enabling them to obtain instant energy consumption data and cost per
      kilowatt hour (kWh) to utilize in initial estimates and proposals before
      requesting or receiving a homeowner’s utility bill.


      **Key Features:**

      - Monthly, quarterly, and annual electricity consumption and cost
      breakdown, including electricity utility rate.

      - Emissions data and CO₂ analytics related to electricity usage.

      - Fossil fuel usage statistics including cost, type, and utility rate.

      - Ratio analysis between electricity and fossil fuel consumption.


      The response includes a `electricToFossilRatio` field representing the
      ratio of electricity usage to fossil fuel usage over the last 12 months. 

      - If a home has a ratio less than 1, it indicates the home consumes more
      fossil fuel than electricity.

      - If a home uses only electricity and no fossil fuels, the ratio value
      will be `null`.


      The API responds with a structured summary of utility usage or a message
      indicating that no valid data is available for the given address.
  - name: EngagePro™ - Lead Widget
    description: >
      The **Quantiv's EngagePro™ - Lead Widget** is a lightweight,
      high-converting widget designed to help CRM and App Providers enable their
      Clients to generate qualified roofing leads effortlessly.


      The widget can be launched:

      - As an overlay popup on the Client’s website via the Widget Script

      - As a hosted flow on a Quantiv-managed domain

      - Via shareable QR codes and direct links (great for digital and offline
      use)


      Homeowners receive an instant roofing estimate in under 30 seconds while
      Clients collect detailed lead information — all fully branded.


      Clients can fully customize both the widget UI element (button, banner, or
      custom) and the appearance of the full flow by:

      - Uploading logos

      - Setting brand colors (primary, secondary, background, text, links)

      - Defining company info, terms of use, and privacy policy links

      - Setting installation price used in roof cost estimation

      - Updating the title of the first screen


      The API allows CRM and App Providers to offer their Clients full control
      over widget creation, activation, and management directly from their own
      UI/UX — while Quantiv handles hosting, script generation, QR codes, and
      link creation.


      Check out the [Widgets detailed documention](/LeadGenWidget/overview.md)
      for more information.
  - name: Widget Webhooks
    description: >-
      Quantiv supports webhook integrations to notify CRM and App Providers in
      real time about critical events related to the EngagePro™ - Lead Widget.


      These webhooks enable your systems to:

      - React to key lifecycle events such as widget creation and updates.

      - Track lead creation and changes as users interact with the EngagePro™ -
      Lead Widget.

      - Power internal automations, analytics, and client communication.


      Webhooks are delivered via HTTPS as JSON payloads and are triggered for
      the following events:

      - `lead.created`

      - `lead.updated`

      - `widget.created`

      - `widget.updated`


      Webhooks can be registered, updated, retrieved, or deleted using the
      provided API methods. Each webhook includes metadata such as
      success/failure counts and timestamps of the last invocation attempts.



      Check out our [Webhook guide](/LeadGenWidget/webhooks.md) for more
      information.
paths:
  /api/v1/address-info:
    get:
      tags:
        - Lead Append Level 1
      summary: Get Lead Property Details
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    example: '2024-08-20T14:30:00Z'
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                  primaryOwner:
                    type: string
                    nullable: true
                    example: John M Doe
                    description: Full name of the primary owner.
                  secondaryOwner:
                    type: string
                    nullable: true
                    example: Jane Doe
                    description: Full name of the secondary owner.
                  ownerOccupied:
                    type: boolean
                    nullable: true
                    example: true
                    description: Indicates whether the property is occupied by the owner.
                  homeBuiltYear:
                    type: string
                    nullable: true
                    example: '1990'
                    description: The year the primary structure was built.
                  yearsInHome:
                    type: string
                    nullable: true
                    example: '16'
                    description: >-
                      The number of years the primary owner has owned the
                      property.
                  county:
                    type: string
                    nullable: true
                    example: Douglas
                    description: County name.
                  subdivision:
                    type: string
                    nullable: true
                    example: Castle Oaks
                    description: Subdivision name.
                  school:
                    type: string
                    nullable: true
                    example: Somerville
                    description: School district name.
                  propertyType:
                    type: string
                    nullable: true
                    example: Residential
                    description: General property type description.
                  areaBuildingSize:
                    type: string
                    nullable: true
                    example: '3023'
                    description: Total square feet of all structures on the property.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/address-info
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/address-info-v2:
    get:
      tags:
        - Lead Append Level 2
      summary: Get Lead Property Details
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
        - name: lastName
          in: query
          required: false
          schema:
            type: string
          description: Lead’s last name. Used for Lead Integrity Score calculation.
        - name: leadIntegrityScoreOn
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Used for activating Lead Integrity information being returned in
            response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    example: '2024-08-20T14:30:00Z'
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                  primaryOwner:
                    type: string
                    nullable: true
                    example: John M Doe
                    description: Full name of the primary owner.
                  secondaryOwner:
                    type: string
                    nullable: true
                    example: Jane Doe
                    description: Full name of the secondary owner.
                  ownerOccupied:
                    type: boolean
                    nullable: true
                    example: true
                    description: Indicates whether the property is occupied by the owner.
                  homeBuiltYear:
                    type: string
                    nullable: true
                    example: '1990'
                    description: The year the primary structure was built.
                  yearsInHome:
                    type: string
                    nullable: true
                    example: '16'
                    description: >-
                      The number of years the primary owner has owned the
                      property.
                  county:
                    type: string
                    nullable: true
                    example: Douglas
                    description: County name.
                  subdivision:
                    type: string
                    nullable: true
                    example: Castle Oaks
                    description: Subdivision name.
                  school:
                    type: string
                    nullable: true
                    example: Somerville
                    description: School district name.
                  propertyType:
                    type: string
                    nullable: true
                    example: Residential
                    description: General property type description.
                  areaBuildingSize:
                    type: string
                    nullable: true
                    example: '3023'
                    description: Total square feet of all structures on the property.
                  scructurePresent:
                    type: boolean
                    nullable: true
                    example: true
                    description: >-
                      Indicates whether the structure is present at the provided
                      address.
                  leadIntegrityScore:
                    type: integer
                    nullable: true
                    example: 7
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
                  leadIntegrityDefects:
                    type: array
                    nullable: true
                    items:
                      type: string
                    example:
                      - surname
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/address-info-v2
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/buyer-insights:
    get:
      tags:
        - Buyer Insights
      summary: Get Buyer Insights
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
        - name: lastName
          in: query
          required: false
          schema:
            type: string
          description: Lead’s last name. Used for Lead Integrity Score calculation.
        - name: leadIntegrityScoreOn
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Used for activating Lead Integrity information being returned in
            response.
        - name: salesHacksOn
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Used for activating Sales Hacks information being returned in
            response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    example: '2024-08-20T14:30:00Z'
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                  surePayScore:
                    type: integer
                    nullable: true
                    example: 1
                    description: Represents SurePay™ Score.
                  elevateScore:
                    type: integer
                    nullable: true
                    example: 2
                    description: Represents Elevate Score.
                  buyerInsights:
                    type: object
                    properties:
                      savvyShopperScore:
                        type: integer
                        nullable: true
                        description: Score for Savvy Shopper category.
                        example: 2
                      brandLoyalistScore:
                        type: integer
                        nullable: true
                        description: Score for Brand Loyalist category.
                        example: 3
                      trendsetterScore:
                        type: integer
                        nullable: true
                        description: Score for Trendsetter category.
                        example: 3
                      budgetsavvyBuyerScore:
                        type: integer
                        nullable: true
                        description: Score for Budget-Savvy Buyer category.
                        example: 4
                      qualityFirstBuyerScore:
                        type: integer
                        nullable: true
                        description: Score for Quality First Buyer category.
                        example: 0
                      impulseShopperScore:
                        type: integer
                        nullable: true
                        description: Score for Impulse Shopper category.
                        example: 1
                      popularPicksScore:
                        type: integer
                        nullable: true
                        description: Score for Popular Picks category.
                        example: 5
                  accuracyCode:
                    type: string
                    example: P
                    description: Represents Accuracy Code.
                    enum:
                      - P
                      - H
                      - G
                      - 'N'
                  primaryOwner:
                    type: string
                    nullable: true
                    example: John M Doe
                    description: Full name of the primary owner.
                  secondaryOwner:
                    type: string
                    nullable: true
                    example: Jane Doe
                    description: Full name of the secondary owner.
                  ownerOccupied:
                    type: boolean
                    nullable: true
                    example: true
                    description: Indicates whether the property is occupied by the owner.
                  homeBuiltYear:
                    type: string
                    nullable: true
                    example: '1990'
                    description: The year the primary structure was built.
                  yearsInHome:
                    type: string
                    nullable: true
                    example: '16'
                    description: >-
                      The number of years the primary owner has owned the
                      property.
                  county:
                    type: string
                    nullable: true
                    example: Douglas
                    description: County name.
                  subdivision:
                    type: string
                    nullable: true
                    example: Castle Oaks
                    description: Subdivision name.
                  school:
                    type: string
                    nullable: true
                    example: Somerville
                    description: School district name.
                  propertyType:
                    type: string
                    nullable: true
                    example: Residential
                    description: General property type description.
                  areaBuildingSize:
                    type: string
                    nullable: true
                    example: '3023'
                    description: Total square feet of all structures on the property.
                  scructurePresent:
                    type: boolean
                    nullable: true
                    example: true
                    description: >-
                      Indicates whether the structure is present at the provided
                      address.
                  leadIntegrityScore:
                    type: integer
                    nullable: true
                    example: 7
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
                  leadIntegrityDefects:
                    type: array
                    nullable: true
                    items:
                      type: string
                    example:
                      - surname
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
                  salesHacks:
                    type: object
                    nullable: true
                    properties:
                      surePayHack:
                        type: string
                        description: Represents Sales Hack based on SurePay™ Score.
                        nullable: true
                      elevateHack:
                        type: string
                        description: Represents Sales Hack based on Elevate Score.
                        nullable: true
                      buyerInsightHacks:
                        type: object
                        properties:
                          savvyShopperHack:
                            type: string
                            description: Sales Hack based on Savvy Shopper Score.
                            nullable: true
                          brandLoyalistHack:
                            type: string
                            description: Sales Hack based on Brand Loyalist Score.
                            nullable: true
                          trendsetterHack:
                            type: string
                            description: Sales Hack based on Trendsetter Score.
                            nullable: true
                          budgetsavvyBuyerHack:
                            type: string
                            description: Sales Hack based on Budget-Savvy Buyer Score.
                            nullable: true
                          qualityFirstBuyerHack:
                            type: string
                            description: Sales Hack based on Quality First Buyer Score.
                            nullable: true
                          impulseShopperHack:
                            type: string
                            description: Sales Hack based on Impulse Shopper Score.
                            nullable: true
                          popularPicksHack:
                            type: string
                            description: Sales Hack based on Popular Picks Score.
                            nullable: true
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/buyer-insights
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/roof-estimate:
    get:
      tags:
        - Lead Value - Roof
      summary: Get Lead Value - Roof
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
        - name: roofMaterial
          in: query
          required: false
          schema:
            type: string
            enum:
              - asphalt shingle
              - slate
              - tile
              - metal
              - other
          example: asphalt shingle
          description: >-
            Type of roofing material used in the estimation. Default value is
            `asphalt shingle`.
        - name: installedPrice
          in: query
          required: false
          schema:
            type: number
            minimum: 0.01
            format: float
          example: 400
          description: >-
            Client's all-in installation price (USD) per square, including
            materials, labor and gross profit, for asphalt shingle roofing
            material used in the estimation. Default value is `400`.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    example: '2024-08-20T14:30:00Z'
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                  roofArea:
                    type: number
                    nullable: true
                    description: Total roof area in square feet, adjusted for pitch.
                    example: 1250.75
                  squaresWithPitch:
                    type: number
                    nullable: true
                    description: >-
                      Roof size in "squares" (1 square = 100 sq ft), adjusted
                      for pitch.
                    example: 12.51
                  averageRoofPitch:
                    type: number
                    nullable: true
                    description: Average roof pitch in degrees.
                    example: 6.5
                  roofComplexityLevel:
                    type: string
                    nullable: true
                    enum:
                      - simple
                      - average
                      - complex
                    description: >-
                      Complexity level of the roof, determined based on the
                      number of individual roof facets detected in the
                      structure.
                    example: average
                  roofMaterial:
                    type: string
                    nullable: true
                    description: >-
                      Roofing material used in the estimation and included in an
                      API request. If parameter is not included in an API
                      request, then default value is used.
                    example: asphalt shingle
                  installedPrice:
                    type: number
                    nullable: true
                    description: >-
                      Client's all-in installation price (USD) per square for
                      asphalt shingle roofing material used in the estimation
                      and included in an API request. If parameter is not
                      included in an API request, then default value is used.
                    example: 400
                  roofCostEstimate:
                    type: number
                    nullable: true
                    description: Final estimated total cost of the roofing project (USD).
                    example: 5318.19
                  structurePresentConfidenceScore:
                    type: number
                    nullable: true
                    enum:
                      - 50
                      - 100
                    description: >-
                      Confidence score that the structure matches the input
                      address.
                    example: 100
                  dataAccurcyAlerts:
                    type: object
                    properties:
                      roofPitchAlert:
                        type: string
                        nullable: true
                        description: >-
                          Roof pitch alert indicating if the `averageRoofPitch`
                          is unusually low or high.
                        enum:
                          - LOW_PITCH
                          - HIGH_PITCH
                          - NO_ALERTS
                        example: LOW_PITCH
                      roofAreaAlert:
                        type: string
                        nullable: true
                        description: >-
                          Roof area alert indicating if the `roofArea` is
                          unusually small or large.
                        enum:
                          - LOW_AREA
                          - HIGH_AREA
                          - NO_ALERTS
                        example: LOW_AREA
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
                      - >-
                        installedPrice value must be a decimal greater than 0
                        with at most 2 decimal places
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/roof-estimate
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/gosolar-index:
    get:
      tags:
        - GoSolar Index
      summary: Get GoSolar Index
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
        - name: lastName
          in: query
          required: false
          schema:
            type: string
          description: Lead’s last name. Used for Lead Integrity Score calculation.
        - name: leadIntegrityScoreOn
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Used for activating Lead Integrity information being returned in
            response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    example: '2024-08-20T14:30:00Z'
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                  goSolarIndex:
                    type: integer
                    nullable: true
                    example: 1
                    description: Represents GoSolar Index Score.
                  prospectFitLevel:
                    type: string
                    nullable: true
                    example: Ideal
                    enum:
                      - Ideal
                      - Moderate
                      - Weak
                    description: Represents Prospect Fit Level.
                  prospectAttitudeMessage:
                    type: string
                    nullable: true
                    example: >-
                      Lead with emphasis on renewable energy benefits,
                      community.
                    description: Represents Prospect Attitude Message.
                  accuracyCode:
                    type: string
                    example: P
                    description: Represents Accuracy Code.
                    enum:
                      - P
                      - H
                      - G
                      - 'N'
                  primaryOwner:
                    type: string
                    nullable: true
                    example: John M Doe
                    description: Full name of the primary owner.
                  secondaryOwner:
                    type: string
                    nullable: true
                    example: Jane Doe
                    description: Full name of the secondary owner.
                  ownerOccupied:
                    type: boolean
                    nullable: true
                    example: true
                    description: Indicates whether the property is occupied by the owner.
                  homeBuiltYear:
                    type: string
                    nullable: true
                    example: '1990'
                    description: The year the primary structure was built.
                  yearsInHome:
                    type: string
                    nullable: true
                    example: '16'
                    description: >-
                      The number of years the primary owner has owned the
                      property.
                  county:
                    type: string
                    nullable: true
                    example: Douglas
                    description: County name.
                  subdivision:
                    type: string
                    nullable: true
                    example: Castle Oaks
                    description: Subdivision name.
                  school:
                    type: string
                    nullable: true
                    example: Somerville
                    description: School district name.
                  propertyType:
                    type: string
                    nullable: true
                    example: Residential
                    description: General property type description.
                  areaBuildingSize:
                    type: string
                    nullable: true
                    example: '3023'
                    description: Total square feet of all structures on the property.
                  scructurePresent:
                    type: boolean
                    nullable: true
                    example: true
                    description: >-
                      Indicates whether the structure is present at the provided
                      address.
                  leadIntegrityScore:
                    type: integer
                    nullable: true
                    example: 7
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
                  leadIntegrityDefects:
                    type: array
                    nullable: true
                    items:
                      type: string
                    example:
                      - surname
                    description: >-
                      Indicates lead’s quality. Evaluates such parameters, as
                      zoning classification, owner occupied, structure present,
                      surname match. The parameter is returned if
                      `leadIntegrityScoreOn` parameter = true in query.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/gosolar-index
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/utility-bill:
    get:
      tags:
        - Utility Bill
      summary: Get Utility Bill Information
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: token
          in: header
          schema:
            type: string
          example: '{API Key}'
        - name: streetNumber
          in: query
          required: true
          schema:
            type: string
          description: Lead's street number.
        - name: streetAddress
          in: query
          required: true
          schema:
            type: string
          description: Lead's street address.
        - name: city
          in: query
          required: true
          schema:
            type: string
          description: Lead’s city name.
        - name: state
          in: query
          required: true
          schema:
            type: string
          description: Lead's state name (two-letter abbreviation, e.g., NY).
        - name: zip
          in: query
          required: true
          schema:
            type: string
          description: Lead’s zip code (5 digit code).
      responses:
        '200':
          description: Successful Utility Bill data retrieval or No Data case.
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: >-
                      The timestamp when the response was returned. It is
                      provided in ISO 8601 format.
                    example: '2024-08-20T14:30:00Z'
                  status:
                    type: string
                    enum:
                      - success
                      - error
                    description: >-
                      Indicates whether the request was successful or an error
                      occurred.
                    example: success
                  message:
                    type: string
                    description: >-
                      Human-readable message describing the result of the
                      request.
                    example: Data successfully retrieved.
                  address:
                    type: string
                    description: Full address used in the request.
                    example: 123 Main St, Austin, TX
                  data:
                    type: object
                    description: Contains utility data.
                    properties:
                      units:
                        type: object
                        description: Units of measurement used in the response data.
                        properties:
                          consumption:
                            type: string
                            description: Unit of measurement for energy consumption.
                            example: kWh
                          cost:
                            type: string
                            description: Unit of measurement for energy cost.
                            example: USD
                          emissions:
                            type: string
                            description: Unit of measurement for emissions.
                            example: kgCO2e
                          emissionRate:
                            type: string
                            description: Unit of measurement for emission rate.
                            example: kgCO2e/kWh
                          utilityRate:
                            type: string
                            description: Unit of measurement for utility rate.
                            example: USD/kWh
                      electricity:
                        type: object
                        nullable: true
                        description: Electricity consumption, cost and emission statistics.
                        properties:
                          monthlyAverageConsumption:
                            type: number
                            description: >-
                              Average monthly electricity consumption over the
                              last 12 months.
                            example: 435.2
                          monthlyAverageCost:
                            type: number
                            description: >-
                              Average monthly electricity cost over the last 12
                              months.
                            example: 98.5
                          annualConsumption:
                            type: number
                            description: >-
                              Total electricity consumption over the last 12
                              months.
                            example: 5222.4
                          annualCost:
                            type: number
                            description: Total electricity cost over the last 12 months.
                            example: 1182
                          quarterAverageConsumption:
                            type: object
                            description: Average electricity consumption per quarter.
                            properties:
                              q1:
                                type: number
                                description: >-
                                  Average electricity consumption for Q1
                                  (Jan-Mar).
                                example: 410.2
                              q2:
                                type: number
                                description: >-
                                  Average electricity consumption for Q2
                                  (Apr-Jun).
                                example: 455
                              q3:
                                type: number
                                description: >-
                                  Average electricity consumption for Q3
                                  (Jul-Sep).
                                example: 472.6
                              q4:
                                type: number
                                description: >-
                                  Average electricity consumption for Q4
                                  (Oct-Dec).
                                example: 402.9
                          quarterAverageCost:
                            type: object
                            description: Average electricity cost per quarter.
                            properties:
                              q1:
                                type: number
                                description: Average electricity cost for Q1 (Jan-Mar).
                                example: 90.4
                              q2:
                                type: number
                                description: Average electricity cost for Q2 (Apr-Jun).
                                example: 102.1
                              q3:
                                type: number
                                description: Average electricity cost for Q3 (Jul-Sep).
                                example: 110.5
                              q4:
                                type: number
                                description: Average electricity cost for Q4 (Oct-Dec).
                                example: 91
                          peakMonth:
                            type: object
                            description: Month with highest electricity consumption.
                            properties:
                              name:
                                type: string
                                description: Peak month name.
                                example: August
                              consumption:
                                type: number
                                description: Electricity consumption in the peak month.
                                example: 520
                              cost:
                                type: number
                                description: Electricity cost in the peak month.
                                example: 120.5
                          monthlyAverageUtilityRate:
                            type: number
                            description: >-
                              Monthly average electricity utility rate over the
                              last 12 month.
                            example: 0.215
                          emissions:
                            type: object
                            description: Emissions data from electricity usage.
                            properties:
                              annualEmissions:
                                type: number
                                description: >-
                                  Total electricity emissions over the last 12
                                  months.
                                example: 1200
                              monthlyAverageEmissions:
                                type: number
                                description: >-
                                  Monthly average electricity emissions over the
                                  last 12 months.
                                example: 100
                              monthlyAverageEmissionRate:
                                type: number
                                description: >-
                                  Monthly average electricity emissions per kWh
                                  of electricity consumption over the last 12
                                  months.
                                example: 0.18
                              peakMonth:
                                type: object
                                description: Month with highest electricity emissions.
                                properties:
                                  name:
                                    type: string
                                    description: Peak month name.
                                    example: July
                                  emissions:
                                    type: number
                                    description: Electricity emissions in peak month.
                                    example: 0.21
                      fossilFuel:
                        type: object
                        nullable: true
                        description: Fossil fuel usage statistics.
                        properties:
                          type:
                            type: string
                            description: Type of fossil fuel.
                            example: Natural Gas
                          annualConsumption:
                            type: number
                            description: >-
                              Total fossil fuel consumption over the last 12
                              months.
                            example: 2840
                          annualCost:
                            type: number
                            description: Total fossil fuel cost over the last 12 months.
                            example: 380
                          monthlyAverageUtilityRate:
                            type: number
                            description: >-
                              Monthly average fossil fuel utility rate over the
                              last 12 months.
                            example: 0.134
                      ratios:
                        type: object
                        nullable: true
                        properties:
                          electricToFossilRatio:
                            type: number
                            description: >-
                              Ratio of electricity to fossil fuel consumption
                              over the last 12 months.
                            example: 1.84
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - state must be a string
                      - state should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/utility-bill
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/roof-estimate-widget:
    post:
      tags:
        - EngagePro™ - Lead Widget
      summary: Create EngagePro™ - Lead Widget
      description: Creates the EngagePro™ - Lead Widget configuration.
      parameters:
        - in: header
          name: Content-Type
          schema:
            type: string
            example: multipart/form-data
            description: >-
              Set to `multipart/form-data` to support file and form data
              submission.
        - in: header
          name: token
          schema:
            type: string
            example: '{API Key}'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - referenceId
                - primaryColor
                - secondaryColor
                - backgroundColor
                - cardBackgroundColor
                - textColor
                - linkColor
                - footerCompanyName
                - footerPirvacyPolicyLink
                - headerLogo
                - status
                - companyName
                - companyPhone
                - companyEmail
                - companyAddress
                - companyUrl
                - firstPageTitle
              properties:
                referenceId:
                  type: string
                  example: 10ea9afd-2197-4df8-90a7-af1f73cea49b
                  description: >-
                    Unique identifier of the Client in your system. It will
                    become the ID of the Widget. Must be valid UUID format.
                elementType:
                  type: string
                  example: banner
                  description: >-
                    Element type, which appears on the Client’s company website
                    if the Widget Script is installed. Default - `button`.
                  enum:
                    - button
                    - banner
                    - custom
                elementSize:
                  type: string
                  example: medium
                  description: Element size. Default - `medium`.
                  enum:
                    - small
                    - medium
                    - large
                elementLocation:
                  type: string
                  example: side_right
                  description: >-
                    Element placement on page. Depends on `elementType` value.
                    `button` - "bottom_right" | "bottom_left" | “side_right” |
                    “side_left”, `banner` - "top" | "bottom". Default -
                    `side_right`
                buttonText:
                  type: string
                  example: Get Your Instant Estimate
                  description: CTA text shown on the element.
                buttonTextColor:
                  type: string
                  example: '#FFFFFF'
                  description: >-
                    CTA text color. Format - HEX color code. Default -
                    `#FFFFFF`.
                buttonBackgroundColor:
                  type: string
                  example: '#696CFF'
                  description: >-
                    Background color for button or banner text (if `banner` type
                    is applied). Format - HEX color code. Default - `#696CFF`.
                bannerText:
                  type: string
                  example: Check your roof estimate in 60 seconds
                  description: Banner text (beside CTA text).
                bannerBackgroundColor:
                  type: string
                  example: '#F5F5F9'
                  description: Banner background color. Format - HEX color code.
                primaryColor:
                  type: string
                  example: '#696CFF'
                  description: >-
                    Color of the primary buttons, QR-codes and titles. HEX color
                    code must be used.
                secondaryColor:
                  type: string
                  example: '#aaaaaa'
                  description: Color of secondary buttons. HEX color code must be used.
                backgroundColor:
                  type: string
                  example: '#F5F5F9'
                  description: >-
                    Background color under the hosted widget. HEX color code
                    must be used.
                cardBackgroundColor:
                  type: string
                  example: '#ffffff'
                  description: >-
                    Background color of the widget card. HEX color code must be
                    used.
                textColor:
                  type: string
                  example: '#22303EE6'
                  description: Main text color. HEX color code must be used.
                linkColor:
                  type: string
                  example: '#696CFF'
                  description: Hyperlink color. HEX color code must be used.
                footerCompanyName:
                  type: string
                  example: Company Name
                  description: Footer company name.
                footerPirvacyPolicyLink:
                  type: string
                  example: https://example.com
                  description: Link to privacy policy.
                footerTermsOfUseLink:
                  type: string
                  example: https://example.com
                  description: Link to terms of service.
                footerLogo:
                  type: file
                  description: >-
                    Small logo at the bottom. PNG or JPG (recommended). Favicon
                    preferred (e.g. 24×24 px). Max file size - 1 MB.
                removeFooterLogo:
                  type: boolean
                  description: Removes Footer Logo if `false` is sent.
                  example: false
                headerLogo:
                  type: file
                  description: >-
                    Logo displayed at the top. PNG or JPG (recommended).
                    Horizontal layout preferred (e.g. 300×150 px). Max file size
                    - 1 MB.
                status:
                  type: string
                  description: >-
                    EngagePro™ - Lead Widget status. The value is used to
                    activate and deactive the functionality.
                  enum:
                    - active
                    - inactive
                  example: active
                companyName:
                  type: string
                  description: Client's company name.
                  example: Company name
                companyPhone:
                  type: string
                  description: >-
                    Client's company phone number. Format must be (XXX)
                    XXX-XXXX.
                  example: (123) 456-7890
                companyEmail:
                  type: string
                  description: Client's company email address.
                  example: roofing@mail.co
                companyAddress:
                  type: string
                  description: Client's company physical address.
                  example: 123 William Street, New York, NY
                companyUrl:
                  type: string
                  description: >-
                    Client's main company website url. It is also used for
                    generating Widget QR-code and redirect link if the Widget
                    Script is installed.
                  example: https://example.com
                domains:
                  type: string
                  description: >-
                    Comma-separated list of authorized domains (URLs) where the
                    Widget Script is allowed to run. This ensures the Widget can
                    only be embedded and executed on trusted websites for
                    security purposes.
                  example: https://example.com, example1.com
                firstPageTitle:
                  type: string
                  description: EngagePro™ - Lead Widget First Page Title.
                  example: Get Your Estimate in 30 Seconds!
                installedPrice:
                  type: number
                  example: 601
                  description: >-
                    Client's all-in installation price per square, including
                    materials, labor and gross profit, for asphalt shingle used
                    in the estimation. Default value - `400.00`.
      responses:
        '201':
          description: EngagePro™ - Lead Widget is successfully created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  referenceId:
                    type: string
                    example: 10ea9afd-2197-4df8-90a7-af1f73cea49b
                    description: Unique identifier of the Client in your system.
                  elementType:
                    type: string
                    example: banner
                    description: >-
                      Element type, which appears on the Client’s company
                      website if the Widget Script is installed.
                  elementSize:
                    type: string
                    example: medium
                    description: Element size.
                  elementLocation:
                    type: string
                    example: side_right
                    description: Element placement on page.
                  buttonText:
                    type: string
                    example: Get Your Instant Estimate
                    description: CTA text shown on the element.
                  buttonTextColor:
                    type: string
                    example: '#FFFFFF'
                    description: CTA text color.
                  buttonBackgroundColor:
                    type: string
                    example: '#696CFF'
                    description: >-
                      Background color for button or banner text (if `banner`
                      type is applied).
                  bannerText:
                    type: string
                    example: Check your roof estimate in 60 seconds
                    description: Banner text (beside CTA text).
                  bannerBackgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Banner background color.
                  primaryColor:
                    type: string
                    example: '#696CFF'
                    description: Color of the primary buttons, QR-codes and titles.
                  secondaryColor:
                    type: string
                    example: '#aaaaaa'
                    description: Color of secondary buttons.
                  backgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Background color under the hosted widget.
                  cardBackgroundColor:
                    type: string
                    example: '#ffffff'
                    description: Background color of the widget card.
                  textColor:
                    type: string
                    example: '#22303EE6'
                    description: Main text color.
                  linkColor:
                    type: string
                    example: '#696CFF'
                    description: Hyperlink color.
                  footerCompanyName:
                    type: string
                    example: Company Name
                    description: Footer company name.
                  footerPirvacyPolicyLink:
                    type: string
                    example: https://example.com
                    description: Link to privacy policy.
                  footerTermsOfUseLink:
                    type: string
                    example: https://example.com
                    description: Link to terms of service.
                  footerLogoUrl:
                    type: string
                    format: url
                    description: >-
                      Link to submitted small logo, which is displayed at the
                      bottom.
                  removeFooterLogo:
                    type: boolean
                    description: Removes Footer Logo if added.
                    example: false
                  headerLogoUrl:
                    type: string
                    format: url
                    description: Link to submitted Logo, which is displayed at the top.
                  status:
                    type: string
                    description: EngagePro™ - Lead Widget status.
                    example: active
                  companyName:
                    type: string
                    description: Client's company name.
                    example: Company name
                  companyPhone:
                    type: string
                    description: Client's company phone number.
                    example: (123) 456-7890
                  companyEmail:
                    type: string
                    description: Client's company email address.
                    example: roofing@mail.co
                  companyAddress:
                    type: string
                    description: Client's company physical address.
                    example: 123 William Street, New York, NY
                  companyUrl:
                    type: string
                    description: Client's main company website url.
                    example: https://example.com
                  domains:
                    type: string
                    description: >-
                      Comma-separated list of authorized domains (URLs) where
                      the Widget Script is allowed to run. This ensures the
                      Widget can only be embedded and executed on trusted
                      websites for security purposes.
                    example: https://example.com, example1.com
                  firstPageTitle:
                    type: string
                    description: EngagePro™ - Lead Widget First Page Title.
                    example: Get Your Estimate in 30 Seconds!
                  installedPrice:
                    type: number
                    example: 601
                    description: >-
                      Client's all-in installation price per square, including
                      materials, labor and gross profit, for asphalt shingle
                      used in the estimation.
                  widgetScript:
                    type: string
                    description: >-
                      Widget Script, which must be placed in the Client's
                      company website. It renders configured UI element and
                      EngagePro™ - Lead Widget Flow. Check out our [Widget
                      installation
                      guide](/leadgenwidget/clientsetup#-option-2-low-code-website-embedding).
                    example: >-
                      <script
                      src='https://widget.your-estimate.com/widgets/widget.min.js'
                      data-widget-type='roof-estimate'
                      data-reference-id='10ea9afd-2197-4df8-90a7-af1f73cea49b'></script>
                  widgetQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on the
                      Client's company website after installation of the Widget
                      Script.
                    example: >-
                      https://quantiv.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_widget-qr-code_1752139746614.png
                  quantivQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on a
                      page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company website.
                    example: >-
                      https://quantiv.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_quantiv-qr-code_1752139746650.png
                  widgetLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on the Client's company website after installation of the
                      Widget Script.
                    example: https://example.com?roof-estimate=open
                  quantivPageLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on a page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company website.
                    example: >-
                      https://app.your-estimate.com/widget/roof-estimate/6770dcbf-560b-40f9-abaa-8d872976d1f1
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - primaryColor must be a string
                      - primaryColor should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/buyer-insights
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/roof-estimate-widget/{referenceId}:
    put:
      tags:
        - EngagePro™ - Lead Widget
      description: Updates the EngagePro™ - Lead Widget configuration.
      summary: Update EngagePro™ - Lead Widget
      parameters:
        - in: path
          name: referenceId
          required: true
          schema:
            type: string
          description: >-
            The ID of the Widget, which is equal to your Client's identifier and
            was set in the POST request, to update.
        - in: header
          name: Content-Type
          schema:
            type: string
            example: multipart/form-data
          description: >-
            Set to `multipart/form-data` to support file and form data
            submission.
        - in: header
          name: token
          schema:
            type: string
            example: '{API Key}'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                elementType:
                  type: string
                  example: banner
                  description: >-
                    Element type, which appears on the Client’s company website
                    if the Widget Script is installed. Default - `button`.
                  enum:
                    - button
                    - banner
                    - custom
                elementSize:
                  type: string
                  example: medium
                  description: Element size. Default - `medium`.
                  enum:
                    - small
                    - medium
                    - large
                elementLocation:
                  type: string
                  example: side_right
                  description: >-
                    Element placement on page. Depends on `elementType` value.
                    `button` - "bottom_right" | "bottom_left" | “side_right” |
                    “side_left”, `banner` - "top" | "bottom". Default -
                    `side_right`
                buttonText:
                  type: string
                  example: Get Your Instant Estimate
                  description: CTA text shown on the element.
                buttonTextColor:
                  type: string
                  example: '#FFFFFF'
                  description: >-
                    CTA text color. Format - HEX color code. Default -
                    `#FFFFFF`.
                buttonBackgroundColor:
                  type: string
                  example: '#696CFF'
                  description: >-
                    Background color for button or banner text (if `banner` type
                    is applied). Format - HEX color code. Default - `#696CFF`.
                bannerText:
                  type: string
                  example: Check your roof estimate in 60 seconds
                  description: Banner text (beside CTA text).
                bannerBackgroundColor:
                  type: string
                  example: '#F5F5F9'
                  description: Banner background color. Format - HEX color code.
                primaryColor:
                  type: string
                  example: '#696CFF'
                  description: >-
                    Color of the primary buttons, QR-codes and titles. HEX color
                    code must be used.
                secondaryColor:
                  type: string
                  example: '#aaaaaa'
                  description: Color of secondary buttons. HEX color code must be used.
                backgroundColor:
                  type: string
                  example: '#F5F5F9'
                  description: >-
                    Background color under the hosted widget. HEX color code
                    must be used.
                cardBackgroundColor:
                  type: string
                  example: '#ffffff'
                  description: >-
                    Background color of the widget card. HEX color code must be
                    used.
                textColor:
                  type: string
                  example: '#22303EE6'
                  description: Main text color. HEX color code must be used.
                linkColor:
                  type: string
                  example: '#696CFF'
                  description: Hyperlink color. HEX color code must be used.
                footerCompanyName:
                  type: string
                  example: Company Name
                  description: Footer company name.
                footerPirvacyPolicyLink:
                  type: string
                  example: https://example.com
                  description: Link to privacy policy.
                footerTermsOfUseLink:
                  type: string
                  example: https://example.com
                  description: Link to terms of service.
                footerLogo:
                  type: file
                  description: >-
                    Small logo at the bottom. PNG or JPG (recommended). Favicon
                    preferred (e.g. 24×24 px). Max file size - 1 MB.
                removeFooterLogo:
                  type: boolean
                  description: Removes Footer Logo if `false` is sent.
                  example: false
                headerLogo:
                  type: file
                  description: >-
                    Logo displayed at the top. PNG or JPG (recommended).
                    Horizontal layout preferred (e.g. 300×150 px). Max file size
                    - 1 MB.
                status:
                  type: string
                  description: >-
                    EngagePro™ - Lead Widget status. The value is used to
                    activate and deactive the functionality.
                  enum:
                    - active
                    - inactive
                  example: active
                companyName:
                  type: string
                  description: Client's company name.
                  example: Company name
                companyPhone:
                  type: string
                  description: >-
                    Client's company phone number. Format must be (XXX)
                    XXX-XXXX.
                  example: (123) 456-7890
                companyEmail:
                  type: string
                  description: Client's company email address.
                  example: roofing@mail.co
                companyAddress:
                  type: string
                  description: Client's company physical address.
                  example: 123 William Street, New York, NY
                companyUrl:
                  type: string
                  description: >-
                    Client's main company website. It is also used for
                    generating Widget QR-code and redirect link if the Widget
                    Script is installed.
                  example: https://example.com
                domains:
                  type: string
                  description: >-
                    Comma-separated list of authorized domains (URLs) where the
                    Widget Script is allowed to run. This ensures the Widget can
                    only be embedded and executed on trusted websites for
                    security purposes.
                  example: https://example.com, example1.com
                firstPageTitle:
                  type: string
                  description: EngagePro™ - Lead Widget First Page Title.
                  example: Get Your Estimate in 30 Seconds!
                installedPrice:
                  type: number
                  example: 601
                  description: >-
                    Client's all-in installation price per square, including
                    materials, labor and gross profit, for asphalt shingle used
                    in the estimation. Default value - `400.00`.
      responses:
        '200':
          description: EngagePro™ - Lead Widget is successfully updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  referenceId:
                    type: string
                    example: 10ea9afd-2197-4df8-90a7-af1f73cea49b
                    description: Unique identifier of the Client in your system.
                  elementType:
                    type: string
                    example: banner
                    description: >-
                      Element type, which appears on the Client’s company
                      websites if the Widget Script is installed.
                  elementSize:
                    type: string
                    example: medium
                    description: Element size.
                  elementLocation:
                    type: string
                    example: side_right
                    description: Element placement on page.
                  buttonText:
                    type: string
                    example: Get Your Instant Estimate
                    description: CTA text shown on the element.
                  buttonTextColor:
                    type: string
                    example: '#FFFFFF'
                    description: CTA text color.
                  buttonBackgroundColor:
                    type: string
                    example: '#696CFF'
                    description: >-
                      Background color for button or banner text (if `banner`
                      type is applied).
                  bannerText:
                    type: string
                    example: Check your roof estimate in 60 seconds
                    description: Banner text (beside CTA text).
                  bannerBackgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Banner background color.
                  primaryColor:
                    type: string
                    example: '#696CFF'
                    description: Color of the primary buttons, QR-codes and titles.
                  secondaryColor:
                    type: string
                    example: '#aaaaaa'
                    description: Color of secondary buttons.
                  backgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Background color under the hosted widget.
                  cardBackgroundColor:
                    type: string
                    example: '#ffffff'
                    description: Background color of the widget card.
                  textColor:
                    type: string
                    example: '#22303EE6'
                    description: Main text color.
                  linkColor:
                    type: string
                    example: '#696CFF'
                    description: Hyperlink color.
                  footerCompanyName:
                    type: string
                    example: Company Name
                    description: Footer company name.
                  footerPirvacyPolicyLink:
                    type: string
                    example: https://example.com
                    description: Link to privacy policy.
                  footerTermsOfUseLink:
                    type: string
                    example: https://example.com
                    description: Link to terms of service.
                  footerLogoUrl:
                    type: string
                    format: url
                    description: >-
                      Link to submitted small logo, which is displayed at the
                      bottom.
                  removeFooterLogo:
                    type: boolean
                    description: Removes Footer Logo if added.
                    example: false
                  headerLogoUrl:
                    type: string
                    format: url
                    description: Link to submitted Logo, which is displayed at the top.
                  status:
                    type: string
                    description: EngagePro™ - Lead Widget status.
                    example: active
                  companyName:
                    type: string
                    description: Client's company name.
                    example: Company name
                  companyPhone:
                    type: string
                    description: Client's company phone number.
                    example: (123) 456-7890
                  companyEmail:
                    type: string
                    description: Client's company email address.
                    example: roofing@mail.co
                  companyAddress:
                    type: string
                    description: Client's company physical address.
                    example: 123 William Street, New York, NY
                  companyUrl:
                    type: string
                    description: Client's main company website url.
                    example: https://example.com
                  domains:
                    type: string
                    description: >-
                      Comma-separated list of authorized domains (URLs) where
                      the Widget Script is allowed to run.
                    example: https://example.com, example1.com
                  firstPageTitle:
                    type: string
                    description: EngagePro™ - Lead Widget First Page Title.
                    example: Get Your Estimate in 30 Seconds!
                  installedPrice:
                    type: number
                    example: 601
                    description: >-
                      Client's all-in installation price per square, including
                      materials, labor and gross profit, for asphalt shingle
                      used in the estimation.
                  widgetScript:
                    type: string
                    description: >-
                      Widget Script, which must be placed in the Client's
                      company website. It renders configured UI element and
                      EngagePro™ - Lead Widget Flow. Check out our [Widget
                      installation
                      guide](/leadgenwidget/clientsetup#-option-2-low-code-website-embedding).
                    example: >-
                      <script
                      src='https://widget.your-estimate.com/widgets/widget.min.js'
                      data-widget-type='roof-estimate'
                      data-reference-id='10ea9afd-2197-4df8-90a7-af1f73cea49b'></script>
                  widgetQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on the
                      Client's company website after installation of the Widget
                      Script.
                    example: >-
                      https://quantiv.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_widget-qr-code_1752139746614.png
                  quantivQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on a
                      page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company website.
                    example: >-
                      https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_quantiv-qr-code_1752139746650.png
                  widgetLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on the Client's company website after installation of the
                      Widget Script.
                    example: https://example.com?roof-estimate=open
                  quantivPageLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on a page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company website.
                    example: >-
                      https://app.your-estimate.com/widget/roof-estimate/6770dcbf-560b-40f9-abaa-8d8729732123
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: array
                    items:
                      type: string
                    example:
                      - primaryColor must be a string
                      - primaryColor should not be empty
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/buyer-insights
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
    /api/v1/roof-estimate-widget/{referenceId}: null
    get:
      tags:
        - EngagePro™ - Lead Widget
      description: Retrieves the EngagePro™ - Lead Widget configuration.
      summary: Retrieve EngagePro™ - Lead Widget
      parameters:
        - in: path
          name: referenceId
          required: true
          schema:
            type: string
          description: >-
            The ID of the Widget, which is equal to your Client's identifier and
            was set in the POST request, to retrieve.
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
        - in: header
          name: token
          schema:
            type: string
            example: '{API Key}'
      responses:
        '200':
          description: EngagePro™ - Lead Widget is successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  referenceId:
                    type: string
                    example: 10ea9afd-2197-4df8-90a7-af1f73cea49b
                    description: Unique identifier of the Client in your system.
                  elementType:
                    type: string
                    example: banner
                    description: >-
                      Element type, which appears on the  Client’s company
                      website if the Widget Script is installed.
                  elementSize:
                    type: string
                    example: medium
                    description: Element size.
                  elementLocation:
                    type: string
                    example: side_right
                    description: Element placement on page.
                  buttonText:
                    type: string
                    example: Get Your Instant Estimate
                    description: CTA text shown on the element.
                  buttonTextColor:
                    type: string
                    example: '#FFFFFF'
                    description: CTA text color.
                  buttonBackgroundColor:
                    type: string
                    example: '#696CFF'
                    description: >-
                      Background color for button or banner text (if `banner`
                      type is applied).
                  bannerText:
                    type: string
                    example: Check your roof estimate in 60 seconds
                    description: Banner text (beside CTA text).
                  bannerBackgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Banner background color.
                  primaryColor:
                    type: string
                    example: '#696CFF'
                    description: Color of the primary buttons, QR-codes and titles.
                  secondaryColor:
                    type: string
                    example: '#aaaaaa'
                    description: Color of secondary buttons.
                  backgroundColor:
                    type: string
                    example: '#F5F5F9'
                    description: Background color under the hosted widget.
                  cardBackgroundColor:
                    type: string
                    example: '#ffffff'
                    description: Background color of the widget card.
                  textColor:
                    type: string
                    example: '#22303EE6'
                    description: Main text color.
                  linkColor:
                    type: string
                    example: '#696CFF'
                    description: Hyperlink color.
                  footerCompanyName:
                    type: string
                    example: Company Name
                    description: Footer company name.
                  footerPirvacyPolicyLink:
                    type: string
                    example: https://example.com
                    description: Link to privacy policy.
                  footerTermsOfUseLink:
                    type: string
                    example: https://example.com
                    description: Link to terms of service.
                  footerLogoUrl:
                    type: string
                    format: url
                    description: >-
                      Link to submitted small logo, which is displayed at the
                      bottom.
                  removeFooterLogo:
                    type: boolean
                    description: Removes Footer Logo if added.
                    example: false
                  headerLogoUrl:
                    type: string
                    format: url
                    description: Link to submitted Logo, which is displayed at the top.
                  status:
                    type: string
                    description: EngagePro™ - Lead Widget status.
                    example: active
                  companyName:
                    type: string
                    description: Client's company name.
                    example: Company name
                  companyPhone:
                    type: string
                    description: Client's company phone number.
                    example: (123) 456-7890
                  companyEmail:
                    type: string
                    description: Client's company email address.
                    example: roofing@mail.co
                  companyAddress:
                    type: string
                    description: Client's company physical address.
                    example: 123 William Street, New York, NY
                  companyUrl:
                    type: string
                    description: Client's main company website url.
                    example: https://example.com
                  domains:
                    type: string
                    description: >-
                      Comma-separated list of authorized domains (URLs) where
                      the Widget Script is allowed to run.
                    example: https://example.com, example1.com
                  firstPageTitle:
                    type: string
                    description: EngagePro™ - Lead Widget First Page Title.
                    example: Get Your Estimate in 30 Seconds!
                  installedPrice:
                    type: number
                    example: 601
                    description: >-
                      Client's all-in installation price per square, including
                      materials, labor and gross profit, for asphalt shingle
                      used in the estimation.
                  widgetScript:
                    type: string
                    description: >-
                      Widget Script, which must be placed in the Client's
                      company website using these instructions. It renders
                      configured UI element and EngagePro™ - Lead Widget Flow.
                      Check out our [Widget installation
                      guide](/leadgenwidget/clientsetup#-option-2-low-code-website-embedding).
                    example: >-
                      <script
                      src='https://widget.your-estimate.com/widgets/widget.min.js'
                      data-widget-type='roof-estimate'
                      data-reference-id='10ea9afd-2197-4df8-90a7-af1f73cea49b'></script>
                  widgetQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on the
                      Client's company website after installation of the Widget
                      Script.
                    example: >-
                      https://quantiv.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_widget-qr-code_1752139746614.png
                  quantivQrCode:
                    type: string
                    description: >-
                      This QR Code will open the EngagePro™ - Lead Widget on a
                      page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company websitee.
                    example: >-
                      https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/3bf79fd3-2942-415c-9b06-d950fe70fff9_quantiv-qr-code_1752139746650.png
                  widgetLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on the Client's company website after installation of the
                      Widget Script.
                    example: https://example.com?roof-estimate=open
                  quantivPageLink:
                    type: string
                    description: >-
                      This Redirect Link will open the EngagePro™ - Lead Widget
                      on a page Quantiv hosts and will work immediately with no
                      installation or presence on the Client's company website.
                    example: >-
                      https://app.your-estimate.com/widget/roof-estimate/6770dcbf-560b-40f9-abaa-8d8729732123
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: string
                    example: Invalid format of referenceId.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/buyer-insights
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/webhooks:
    post:
      tags:
        - Widget Webhooks
      summary: Create New Webhook
      description: Creates a webhook to listen for events related to widgets.
      parameters:
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
        - in: header
          name: token
          schema:
            type: string
            example: '{API key}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - url
                - events
              properties:
                name:
                  type: string
                  example: Webhook Name
                  description: Webhook name.
                url:
                  type: string
                  example: https://webhook.site/6979dd8e-c00b-427a-8c42-245ad782f4bc
                  description: >-
                    Webhook callback URL that will receive posted webhook
                    events.
                events:
                  type: array
                  items:
                    type: string
                  example:
                    - lead.created
                    - lead.updated
                    - widget.created
                    - widget.updated
                  description: >-
                    Event types that will be sent to the registered webhook
                    endpoint.
                timeoutSeconds:
                  type: number
                  example: 30
                  description: >-
                    Time (in seconds) the system waits for a `200` status code
                    response from the registered endpoint before marking the
                    attempt as failed. Default - `30`.
      responses:
        '201':
          description: Webhook is successfully created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the webhook.
                    example: 7352983b-2f3e-4e6f-b472-061945204d79
                  name:
                    type: string
                    description: Webhook name.
                    example: Webhook 1
                  url:
                    type: string
                    description: Webhook callback URL.
                    example: https://webhook.site/6979dd8e-c00b-427a-8c42-245ad782f4bc
                  events:
                    type: array
                    description: >-
                      Represents which types of events will be posted to the
                      registered webhook endpoint.
                    items:
                      type: string
                    example:
                      - lead.created
                      - lead.updated
                      - widget.created
                      - widget.updated
                  active:
                    type: boolean
                    description: >-
                      Represents whether webhook is active and accepts posted
                      events.
                    example: true
                  secret:
                    type: string
                    description: >-
                      Webhook secret parameter, which is used for the
                      implementation of webhook security. The value is shown
                      only in the POST method response.
                    example: dc2503b83d28fe85b57c55ad83daca63...
                  failureCount:
                    type: integer
                    description: Number of failed webhook delivery attempts.
                    example: 0
                  successCount:
                    type: integer
                    description: Number of successful webhook deliveries.
                    example: 12
                  lastFailureAt:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Timestamp of the last failed attempt. It is provided in
                      ISO 8601 format.
                    example: null
                  lastSuccessAt:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Timestamp of the last successful attempt. It is provided
                      in ISO 8601 format.
                    example: '2025-07-09T16:00:53.244Z'
                  timeoutSeconds:
                    type: integer
                    description: >-
                      Time (in seconds) the system waits for a `200` status code
                      response from the registered endpoint before marking the
                      attempt as failed.
                    example: 10
                  createdAt:
                    type: string
                    format: date-time
                    description: >-
                      Timestamp of webhook creation. It is provided in ISO 8601
                      format.
                    example: '2025-07-09T14:04:03.771Z'
                  updatedAt:
                    type: string
                    format: date-time
                    description: >-
                      Timestamp of last update to the webhook. It is provided in
                      ISO 8601 format.
                    example: '2025-07-09T14:25:36.471Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: string
                    example: >-
                      The request contains a syntax error. Please check the
                      format and ensure the fields are correctly specified.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot POST /api/v1/webhooks
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
    get:
      tags:
        - Widget Webhooks
      summary: List All Webhooks
      description: Retrieves all created webhooks.
      parameters:
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
        - in: header
          name: token
          schema:
            type: string
            example: '{API key}'
      responses:
        '200':
          description: Webhook(s) is successfully retrieved.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Unique identifier of the webhook.
                      example: 7352983b-2f3e-4e6f-b472-061945204d79
                    name:
                      type: string
                      description: Webhook name.
                      example: Webhook 1
                    url:
                      type: string
                      description: Webhook callback URL.
                      example: >-
                        https://webhook.site/6979dd8e-c00b-427a-8c42-245ad782f4bc
                    events:
                      type: array
                      description: >-
                        Represents which types of events will be posted to the
                        registered webhook endpoint.
                      items:
                        type: string
                      example:
                        - lead.created
                        - lead.updated
                        - widget.created
                        - widget.updated
                    active:
                      type: boolean
                      description: >-
                        Represents whether webhook is active and accepts posted
                        events.
                      example: true
                    failureCount:
                      type: integer
                      description: Number of failed webhook delivery attempts.
                      example: 0
                    successCount:
                      type: integer
                      description: Number of successful webhook deliveries.
                      example: 12
                    lastFailureAt:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Timestamp of the last failed attempt. It is provided in
                        ISO 8601 format.
                      example: null
                    lastSuccessAt:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Timestamp of the last successful attempt. It is provided
                        in ISO 8601 format.
                      example: '2025-07-09T16:00:53.244Z'
                    timeoutSeconds:
                      type: integer
                      description: >-
                        Time (in seconds) the system waits for a `200` status
                        code response from the registered endpoint before
                        marking the attempt as failed.
                      example: 10
                    createdAt:
                      type: string
                      format: date-time
                      description: >-
                        Timestamp of webhook creation. It is provided in ISO
                        8601 format.
                      example: '2025-07-09T14:04:03.771Z'
                    updatedAt:
                      type: string
                      format: date-time
                      description: >-
                        Timestamp of last update to the webhook. It is provided
                        in ISO 8601 format.
                      example: '2025-07-09T14:25:36.471Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: string
                    example: >-
                      The request contains a syntax error. Please check the
                      format and ensure the fields are correctly specified.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot GET /api/v1/webhooks
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
  /api/v1/webhooks/{webhookId}:
    patch:
      tags:
        - Widget Webhooks
      summary: Update Existing Webhook
      description: Updates existing webhook.
      parameters:
        - in: path
          name: webhookId
          required: true
          schema:
            type: string
          description: The ID of the webhook to update.
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
        - in: header
          name: token
          schema:
            type: string
            example: '{API key}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: Webhook Name
                  description: Webhook name.
                url:
                  type: string
                  example: https://webhook.site/6979dd8e-c00b-427a-8c42-245ad782f4bc
                  description: Webhook callback URL that receives posted webhook events.
                events:
                  type: array
                  items:
                    type: string
                  example:
                    - lead.created
                    - lead.updated
                    - widget.created
                    - widget.updated
                  description: >-
                    Event types that are sent to the registered webhook
                    endpoint.
                active:
                  type: boolean
                  description: >-
                    Represents whether webhook is active and accepts posted
                    events. If `false` value is sent, then the system turns off
                    the webhook.
                  example: true
                timeoutSeconds:
                  type: number
                  example: 30
                  description: >-
                    Time (in seconds) the system waits for a `200` status code
                    response from the registered endpoint before marking the
                    attempt as failed. Default - `30`.
      responses:
        '200':
          description: Webhook is successfully updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the webhook.
                    example: 7352983b-2f3e-4e6f-b472-061945204d79
                  name:
                    type: string
                    description: Webhook name.
                    example: Webhook 1
                  url:
                    type: string
                    description: Webhook callback URL.
                    example: https://webhook.site/6979dd8e-c00b-427a-8c42-245ad782f4bc
                  events:
                    type: array
                    description: >-
                      Represents which types of events will be posted to the
                      registered webhook endpoint.
                    items:
                      type: string
                    example:
                      - lead.created
                      - lead.updated
                      - widget.created
                      - widget.updated
                  active:
                    type: boolean
                    description: >-
                      Represents whether webhook is active and accepts posted
                      events.
                    example: true
                  failureCount:
                    type: integer
                    description: Number of failed webhook delivery attempts.
                    example: 0
                  successCount:
                    type: integer
                    description: Number of successful webhook deliveries.
                    example: 12
                  lastFailureAt:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Timestamp of the last failed attempt. It is provided in
                      ISO 8601 format.
                    example: null
                  lastSuccessAt:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Timestamp of the last successful attempt. It is provided
                      in ISO 8601 format.
                    example: '2025-07-09T16:00:53.244Z'
                  timeoutSeconds:
                    type: integer
                    description: >-
                      Time (in seconds) the system waits for a `200` status code
                      response from the registered endpoint before marking the
                      attempt as failed.
                    example: 10
                  createdAt:
                    type: string
                    format: date-time
                    description: >-
                      Timestamp of webhook creation. It is provided in ISO 8601
                      format.
                    example: '2025-07-09T14:04:03.771Z'
                  updatedAt:
                    type: string
                    format: date-time
                    description: >-
                      Timestamp of last update to the webhook. It is provided in
                      ISO 8601 format.
                    example: '2025-07-09T14:25:36.471Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: string
                    example: >-
                      The request contains a syntax error. Please check the
                      format and ensure the fields are correctly specified.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot PATCH /api/v1/webhooks/{webhookId}
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
    delete:
      tags:
        - Widget Webhooks
      summary: Delete Existing Webhook
      description: Deletes existing webhook.
      parameters:
        - in: path
          name: webhookId
          required: true
          schema:
            type: string
          description: The ID of the webhook to update.
        - in: header
          name: Accept
          schema:
            type: string
            example: application/json
        - in: header
          name: token
          schema:
            type: string
            example: '{API key}'
      responses:
        '200':
          description: Webhook is successfully deleted.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: integer
                    example: 400
                  message:
                    type: string
                    example: Webhook ID not provided.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: integer
                    example: 401
                  message:
                    type: string
                    example: Invalid API Key
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Not Found
                  statusCode:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Cannot DELETE /api/v1/webhooks/{webhookId}
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: integer
                    example: 500
                  message:
                    type: string
                    example: Unexpected server error occurred. Please try again later.
components: {}
