Beacon PRO+ API (V2, OAuth)

The primary Beacon Rest Services surface — 187 published operations covering the product catalog, account-specific real-time pricing, branch and region availability, cart and order submission, quotes and saved-order approval workflows, order history, delivery tracking, invoices (Bill Trust), manufacturer rebates, permission templates, and the EagleView, GAF QuickMeasure and Hover measurement-partner integrations. Authenticated with an OAuth 2.0 bearer token. This is the surface QXO markets as its Order, Pricing, Account, Product, Delivery Tracking and Invoice APIs.

Operations 187

POST /hoverExplicitLogin Hover Explicit Login
GET /getCurrentUserInfo Get current user details
GET /getUserInfo Get current user computed permissions and custom account info
POST /saveCurrentUserInfo Save current user details
GET /getCurrentUserPermission Get current user permissions
GET /getAddressBook Get current user address book
POST /createAddressBook Create new address book
POST /updateAddressBook Update exist address book
POST /deleteAddressBook Delete exist address book
POST /changePassword Change password
POST /setPassword Set password
POST /resetPassword Reset password
POST /forgotPassword Forgot password
POST /user Get user list
GET /getUserDetail Get user detail
POST /createUser Create user
POST /updateUser Update user
GET /organization Get organization list
GET /role Get role list
POST /permissionTemplateList Get permission template list
POST /getPermissionTemplateDetail Get permission template detail
POST /createPermissionTemplate Create permission template
POST /updatePermissionTemplate Update permission template
POST /deletePermissionTemplate Delete permission template
GET /orderhistory List all the orders in the account
GET /orderhistory_v2 List all the orders in the account
GET /orderdetail Get details of the order by Id
GET /downloadBillTrustInvoiceAsPDF Download bill trust invoice as PDF
GET /downloadOrderDetailAsPDF Download order detail as PDF
GET /getDTOrderDetail Get DT order detail by order Id
GET /typeAhead Get type ahead items
GET /itemlist Get list of items
GET /itemDetails Get items details
GET /pricing Get price and Unit of Measures (UoMs) for multiple line items
GET /getProductVariation Get product variation
GET /getQuoteProductVariation Get quote product variation
POST /getMultipleProductVariation Get mutilple product variation
POST /getMultipleQuoteProductVariation Get mutilple product variation
GET /getFavoriteProducts Get favorite products
GET /categories List categories
POST /submitOrder Submit order
GET /cartItems Get items in the cart
GET /orderSummary Get order summary from current shopping cart
POST /clearCart Clear all items in the cart
POST /removeItemFromCart Remove one item from the cart
POST /updateCart Update the cart
POST /proceedToCheckout Proceed to checkout page
POST /addMultipleItemsToOrder Add item(s) to cart
GET /template List all templates and details for the current user
GET /getTemplateDetail Get template details for a given template
POST /createTemplate Create template for current user
GET /getTemplateCategories Get given template categories
POST /updateTemplateItemDisplayOrder Update template item of display order
POST /updateTemplate Update template
POST /deleteTemplate Delete template
POST /copyTemplate Copy template
POST /addPerfectOrderToTemplate Create a template of Perfect Order
POST /updateSingleTemplateLineItem Update single template line item
POST /validateTemplateItems Validate template items
GET /getProductBranchOrRegionAvailability Get Product Branch Or Region Availability
GET /getSKUBranchOrRegionAvailability Get SKU Branch Or Region Availability
POST /getATGItemMapping Get ATG Item Mapping
POST /updateOrderAlert Update order alert
POST /uploadOrderRelatedDocuments Upload order related documents.
POST /deleteOrderRelatedDocuments Delete order related documents.
GET /downloadOrderDocument Download order related document
GET /getGenericBrands Get Catalog all brands
GET /getPerfectOrderDetail Get perfect order details
GET /getPerfectOrderBrands Get perfect order brands
GET /getPerfectOrderLanding Get product templates to render product template landing page.
GET /getPerfectStyleGroups Get product styles to render product style landing page.
POST /saveOrder Create new saved order and save current cart to this order
POST /getOrderApprovalList List saved/pending orders
GET /getOrderApprovalDetail Get saved/pending order detail, also use this service to render order confirmation page for submitter.
POST /rejectSavedOrder Reject pending order
POST /deleteSavedOrder Delete saved orders
POST /updateSavedOrderItems Update saved/pending order items
POST /getSavedOrderShippingInfo Get saved/pending order shipping info
POST /updateSavedOrderShippingInfo Update saved/pending order shipping info
POST /getSavedOrderReviewInfo Get saved/pending order review info
POST /updateSavedOrderReviewInfo Save saved order review info.
POST /submitSavedOrder Submit/Revise saved order for approval for submmitter user.
POST /approveSavedOrder Approve saved/pending order
POST /getSavedOrderConfirmationInfo Get saved/pending order confirmation info
GET /saveOrderValidate Validate the saved/pending order
GET /approver List saved order approvers
GET /downloadSavedOrderAsPDF Download saved order as PDF
POST /updateStatusChange delivery status change notification (Non-App)
GET /getStatusChange get delivery status change notification
GET /upcomingDeliveries Get upcoming deliveries
GET /quote List all quotes for the current user
POST /getMincronQuoteDetail Get quote details for a given template
GET /getAtgQuoteDetail Get Atg quote details for a given template
POST /createQuote Create quote for current user
POST /updateQuote Update quote
POST /deleteQuote Delete quote
POST /submitQuote Submit quote
POST /submitDelegatedQuote Submit Delegated quote
POST /submitQuoteForm Submit quote form
POST /approveQuote Approve quote
POST /reviseQuote Revise quote
POST /rejectQuote Reject quote
GET /downloadQuoteAsPDF Download quote as PDF
GET /rebateLanding Get Rebates Landing
GET /getRebateRedeemedSummaryItems Get Redeemed Rebates Summary
POST /getRebateRedeemedItemDetail Get Redeemed Rebates Details
POST /downloadRebateRedeemedItemDetail Download Redeemed Rebates Details
POST /downloadRebateRedeemedDetailAsPDF Download Redeemed Rebates Details As PDF
GET /getRebateForm Get Rebate From
POST /submitRebate Apply for Rebates
POST /updateRebateForm Update Rebate Form Once
GET /getSubmittedRebateForm Get Submitted Rebate Form
POST /unenrollRebate Uneroll Rebate
POST /updateCurrentOrderJobNumber Update current order job number
GET /getOrderShippingInfo Get current order shipping info
POST /addOrderShippingInfo Add/Update current order shipping info
GET /getCurrentOrderReview Get current order review info
POST /submitCurrentOrder Submit current order
POST /getSubmitOrderResult Get submit order result
GET /validateOrderByLocation validate order pick up location inventory
POST /updateOrderCCBillingAddress Update Order CC Billing Address Info
GET /suggestiveSelling Get suggestive selling info
GET /getHoverJobList List hover jobs
GET /getHoverJobListImage Get hover job image
GET /getHoverJobDetail Get hover detail
GET /downloadBeacon3DplusApp Send SMS to end user.
GET /getHoverJobDetailImage Get hover job detail image
GET /getUserRegisterToken Get token for user register
POST /validateUserByEmail Validate user by email
POST /validateUserByAccount Validate user by account
POST /register Register user
POST /queryQuoteStatus Query quote status
POST /convertQuoteOrder Convert quote to quote order
GET /getQuoteOrderDetail Get quote order detail
POST /updateQuoteOrder Update quote order
POST /updateQuoteOrderShippingInfo Update quote order shipping information
GET /getQuoteOrderPrice Get quote order price
POST /placeQuoteOrder Place quote order
GET /getCurrentUserLastSelectedJobInfo Get last selected job info of current user
POST /placeEagleViewOrder Create the eagle view order
POST /placeEagleViewUpgradeOrder Upgrading a report to a premium report.
GET /getEagleViewOrderReport Get eagle view order report
GET /getEagleViewOrderUpgradeProducts Get eagle view order upgrade products.
GET /getEagleViewOrderReportV3 Get eagle view order report use v3
POST /submitQuoteOrderForApproval Convert quote order to a saved order and submit saved order for approval
GET /getOktaEagleViewLoginUrl Generate Current user okta eagle view redirect url
POST /exchangeOktaEagleViewAuthorizationCode Exchange token by authorizationCode
GET /unlinkEVAccount unlink current user private eagle view token
POST /getEagleViewOrderReports Get specific pieces of data for a range of reports
GET /healthCheck Site health check
GET /getEagleViewOrderReportFileAnyFormat (under development) This service allows the authenticating user to retrieve files generated for a report.
POST /updateNewUserTour collect user tour
GET /getNewUserTour get user tour
POST /updateMobileDevice update user account mobile device token
POST /deleteMobileDevice Delete user account mobile device token
POST /saveDeliverySetting save Delivery Notification Setting (Mobile)
GET /getDeliverySetting get Delivery Notification Setting
POST /createEVOrder Create a new EV order
GET /getEVOrderCategories Get given categories
GET /getEVOrder Get given EV order
POST /editEVOrder Edit user given EV order
POST /deleteEVOrder Delete given EV order
POST /deleteEVOrderItem Delete exist item from given order
POST /addEVOrderItem Add EV item to given order
POST /editEVOrderItem Edit exist item for given order
POST /doMeasurementCalculation Get recommend quantity by measurement data
POST /saveAllToEVOrder Save all items to EV order
GET /EVOrderList Get all EV orders of current user
POST /convertEVOrderToATGOrder Convert EV order to atg order
POST /deleteAccount Delete account
GET /getNotifications Get user notifications
POST /modifyReadStatus Modify notification read status
POST /deleteNotifications Delete Notifications
POST /deleteAllNotifications Delete All Notifications
GET /invoiceHistory Get invoice history for the given account
POST /shareDeliveryPhotos Share Delivery Photos to gaven emails
POST /getAccountOSRAndBMInfo Get the OSR and BM info for the given account
GET /getAssignedEnterpriseAccounts Get the assigned enterprise accounts
POST /updateFavorites This service can update favorites items.
GET /getFavoritesCategories This service can get categories of favorites items.
GET /getFavorites This service can get favorites items.
GET /getAccountFavorites This service can get account favorites item numbers.
GET /getBranchItemQty query branch item quantity
GET /loyalreward Get the loyal info for the given account
POST /quickMeasure/placeReportOrder This service use for submit report order to GAF.
POST /quickMeasure/callback This service use for receive a report.
GET /quickMeasure/siteStatus Get the GAF site status

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/beacon-pro-plus"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

beacon-roofing-supply-v2-openapi.yml Raw ↑
servers:
  - url: https://beaconproplus.com/v2/rest/com/becn
    description: >-
      Production. Added by API Evangelist; the harvested document carried no servers[].
      Source: info.description of this spec: '[ PROD BASE URL: https://beaconproplus.com/v2/rest/com/becn ]'
openapi: 3.0.0
info:
  title: Beacon Rest Services Ver 2 (OAuth)
  version: 24PI-4-Sprint-3
  description: |
    This version uses OAuth authorization method to access API services.
    A bearer token is required to be authorized to access the services.

    [ PROD BASE URL: *https://beaconproplus.com/v2/rest/com/becn* ]

    [ UAT  BASE URL: *https://beacon-uat.becn.com/v2/rest/com/becn* ]

    [ DEV  BASE URL: *https://beacon-dev.becn.com/v2/rest/com/becn* ]

    ### API Site ID:
    <details>
      <summary>Show...</summary>
      Most of the APIs supports the `apiSiteId` parameter in the following locations, the parsing priority is higher to lower. For example, if this parameter appears both in request parameter and request body, will get the one in the request parameter, any other locations will be ignored.
      1. `apiSiteId` in Request Parameter/URL/Query String e.g.
          ```
          example.com/?apiSiteId=XYZ...
          example.com/?...&apiSiteId=XYZ...
          ```
      2. `apiSiteId` in Request Body/Payload e.g.

          ```
          {
            ...
            "apiSiteId": "XYZ",
            ...
          }
          ```

          Please be noted, only support when `apiSiteId` is the root element of request body. For example, the `apiSiteId` in the following request body is the second element, so this property will be ignored:
          ```
          {
            ...
            "foo": {
              "apiSiteId": "XYZ",
            }
            ...
          }
          ```
      3. `apiSiteId` related OAuth Token in Request Header e.g.
          ```
          Authorization Bearer atdy9au5qtg0ofkxdewwr3169...
          ```
          In this case, the `apiSiteId` will be parsed via the OAuth Token. For example, if one token is generated by the client id 'nigu0zjtyih7lb36l2...', then this client related api site id(pre-defined and stored in the server database) will be the value of `apiSiteId`
    </details>
    ### API Uniform Format:
    <details>
      <summary>Show...</summary>
      ### Response:
      ```
      {
          "success":true,
          "messages":[
              {
                  "key":null,
                  "code":null,
                  "type":"success",
                  "value":""
              }
          ],
          "result": <the response example value of each API>
      }
      ```
      ### Explanation:
      If the response example value of one endpoint `/foo` is:
      ```
      {
          "name":"bar",
          "age":123
      }
      ```

      Then the actual response value of this endpoint is: (replace the value of "result" element in `API Uniform Format` with example response)
      ```
      {
          "success":true,
          "messages":[
              {
                  "code":null,
                  "type":"success",
                  "value":""
              }
          ],
          "result":{
              "name":"bar",
              "age":123
          }
      }
      ```
    </details>
    ### Below V2 APIs follow original format
    <details>
      <summary>Show...</summary>
      * `/quote`
      * `/getQuoteDetail`
      * `/getCurrentUserInfo`
      * `/getAddressBook`
      * `/createAddressBook`
      * `/updateAddressBook`
      * `/deleteAddressBook`
      * `/changePassword`
      * `/forgotPassword`
      * `/getPerfectOrderDetail`
      * `/getStatusChange`
      * `/updateStatusChange`
      * `/itemlist`
      * `/itemDetails`
      * `/addPerfectOrderToTemplate`
      * `/deleteQuote`
      * `/createQuote`
      * `/submitQuote`
      * `/getOrderShippingInfo`
      * `/addOrderShippingInfo`
      * `/suggestiveSelling`
      * `/getCurrentOrderReview`
      * `/submitCurrentOrder`
      * `/getPerfectStyleGroups`
      * `/validateOrderByLocation`
      * `/submitOrder`
      * `/submitDelegatedQuote`

      ### Explanation:
      If the response example value of one endpoint `/fooLegacy` is:
      ```
      {
          "name":"barLegacy",
          "age":456
      }
      ```

      Then the actual response value of this endpoint is: (the same as the response example)
      ```
      {
          "name":"barLegacy",
          "age":456
      }
      ```
    </details>
    ### API Response Message Code
    <details>
      <summary>Show...</summary>
      <table id="API_Response_Message_Code" border="1">
        <tbody>
          <tr>
              <th colspan="1" align="center" width="20%"><p><span>Code Group</span></p></th>
              <th align="center" width="10%"><p><span>Code</span></p></th>
              <th align="left" width="40%"><p><span>Comments</span></p></th>
          </tr>
          <tr>
              <td rowspan="8" align="left" width="20%">1XXX: <br>common request param error</td>
              <td align="center" width="10%">1001</td>
              <td align="left" width="40%">Param is required.</td>
          </tr>
          <tr>
              <td align="center" width="10%">1002</td>
              <td align="left" width="40%">Repository item not found via request</td>
          </tr>
          <tr>
              <td align="center" width="10%">1003</td>
              <td align="left" width="40%">Param max length is invalid.</td>
          </tr>
          <tr>
              <td align="center" width="10%">1004</td>
              <td align="left" width="40%">Param min length is invalid.</td>
          </tr>
          <tr>
              <td align="center" width="10%">1005</td>
              <td align="left" width="40%">Param regular expression is invalid.</td>
          </tr>
          <tr>
              <td align="center" width="10%">1006</td>
              <td align="left" width="40%">Request param requestBody is not a valid</td>
          </tr>
          <tr>
              <td align="center" width="10%">1007</td>
              <td align="left" width="40%">Request param caused validation exception</td>
          </tr>
          <tr>
              <td align="center" width="10%">1008</td>
              <td align="left" width="40%">Request param caused form error</td>
          </tr>
          <tr>
              <td rowspan="6" align="left" width="20%">2XXX: <br>current profile error</td>
              <td align="center" width="10%">2001</td>
              <td align="left" width="40%">Current profile in request is empty</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">2002</td>
              <td colspan="1" align="left" width="40%">Current profile type/instance in request is empty</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">2003</td>
              <td colspan="1" align="left" width="40%">Current profile in request do not have available accounts</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">2004</td>
              <td colspan="1" align="left" width="40%">Current profile is unauthorized</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">2005</td>
              <td colspan="1" align="left" width="40%">Current profile is already authorized</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">2006</td>
              <td colspan="1" align="left" width="40%">Current profile is permission denied</td>
          </tr>
          <tr>
              <td rowspan="8" align="left" width="20%">3XXX: <br>specified request param error</td>
              <td colspan="1" align="center" width="10%">3001</td>
              <td colspan="1" align="left" width="40%">Request param account id is not available/not belong to current profile</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3002</td>
              <td colspan="1" align="left" width="40%">Request param product id is not available to current region of current profile</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3003</td>
              <td colspan="1" align="left" width="40%">Request param profile id is not equal to current profile</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3004</td>
              <td colspan="1" align="left" width="40%">Request param profile id is not found</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3005</td>
              <td colspan="1" align="left" width="40%">Request param site id is not equal to current site</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3006</td>
              <td colspan="1" align="left" width="40%">Request param sku id is not available to current region of current profile</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3007</td>
              <td colspan="1" align="left" width="40%">Request param shipping is invalid to current region of current profile</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">3008</td>
              <td colspan="1" align="left" width="40%">Device tokens not found</td>
          </tr>
          <tr>
              <td rowspan="6" align="left" width="20%">4XXX: <br>system level common error</td>
              <td colspan="1" align="center" width="10%">4001</td>
              <td colspan="1" align="left" width="40%">System error</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">4002</td>
              <td colspan="1" align="left" width="40%">Mincron error</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">4003</td>
              <td colspan="1" align="left" width="40%">ATG Order version invalid error</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">4004</td>
              <td colspan="1" align="left" width="40%">Delivery Tracking Error</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">4005</td>
              <td colspan="1" align="left" width="40%">Delete Device Token Error</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">4008</td>
              <td colspan="1" align="left" width="40%">Integration Time Out</td>
          </tr>
          <tr>
              <td rowspan="12" align="left" width="20%">5XXX: <br>specified response error</td>
              <td colspan="1" align="center" width="10%">5001</td>
              <td colspan="1" align="left" width="40%">Submit order failed response</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5002</td>
              <td colspan="1" align="left" width="40%">Submit order failed with integration exception message returned</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5003</td>
              <td colspan="1" align="left" width="40%">Query order detail not match with current</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5004</td>
              <td colspan="1" align="left" width="40%">No result is returned to order history</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5005</td>
              <td colspan="1" align="left" width="40%">Template name invalid</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5006</td>
              <td colspan="1" align="left" width="40%">Need change account</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5007</td>
              <td colspan="1" align="left" width="40%">Account no longer available for current user</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5008</td>
              <td colspan="1" align="left" width="40%">Illegal data</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5009</td>
              <td colspan="1" align="left" width="40%">Account token invalid</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5010</td>
              <td colspan="1" align="left" width="40%">No current Order</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5011</td>
              <td colspan="1" align="left" width="40%">Quote order account not match</td>
          </tr>
          <tr>
              <td colspan="1" align="center" width="10%">5301</td>
              <td colspan="1" align="left" width="40%">BillTrust error</td>
          </tr>
          </tbody>
      </table>
    </details>
components:
  schemas:
    rebateLanding_rep:
      $ref: '#/components/schemas/RebateItemObj'
    getRebateRedeemedSummaryItems_rep:
      type: array
      items:
        $ref: '#/components/schemas/RedeemSummeryDTOObj'
    getRebateRedeemedItemDetail_req:
      type: object
      properties:
        rebateId:
          type: string
        searchKey:
          type: string
        searchValue:
          type: string
        searchStartDate:
          type: string
        searchEndDate:
          type: string
        pageNum:
          type: string
        pageSize:
          type: string
    getRebateRedeemedItemDetail_rep:
      $ref: '#/components/schemas/RedeemDetailsDTOObj'
    downloadRebateRedeemedItemDetail_req:
      type: object
      properties:
        redeemedRebateIds:
          type: string
        rebateId:
          type: string
        accountId:
          type: string
    downloadRebateRedeemedDetailAsPDF_req:
      type: object
      properties:
        redeemedRebateIds:
          type: string
        rebateId:
          type: string
        submitRebateInfoId:
          type: string
    getRebateFrom_rep:
      $ref: '#/components/schemas/RebateFromObj'
    submitRebate_req:
      type: object
      properties:
        rebateId:
          type: string
        rebateInfo:
          type: object
          properties:
            companyName:
              type: string
            contactName:
              type: string
            phoneNumber:
              type: string
            email:
              type: string
        rebateAddress:
          type: object
          properties:
            address:
              type: string
            city:
              type: string
            state:
              type: string
            zip:
              type: string
        rebateCustomInfo:
          type: object
        rebateMailingAddress:
          type: object
    RebateItemObj:
      type: object
      properties:
        image:
          type: string
        rebateName:
          type: string
        action:
          type: string
        rebateId:
          type: string
        brandName:
          type: string
        ableUpdate:
          type: boolean
        submittedRebateInfoId:
          type: string
        lastSubmittedDate:
          type: string
        startDate:
          type: string
          format: MM-dd-yyyy
          example: 01-17-2018
        endDate:
          type: string
          format: MM-dd-yyyy
          example: 01-17-2018
        deactivationDate:
          type: string
          format: MM-dd-yyyy
          example: 01-17-2018
    RedeemSummeryDTOObj:
      type: object
      properties:
        promotionDates:
          type: string
          example: 'May 5,2017-May 8,2019'
        accountId:
          type: string
        submitDate:
          type: string
          format: MM-dd-yyyy
          example: 01-17-2018
        id:
          type: string
        brand:
          type: string
        rebateId:
          type: string
        PDFUrl:
          type: string
        currencyUnit:
          type: string
        promotion:
          type: string
        projectedRebate:
          type: string
    RedeemDetailsDTOObj:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/BCPaginationDataObj'
        header:
          $ref: '#/components/schemas/RedeemSummeryDTOObj'
        body:
          type: array
          items:
            $ref: '#/components/schemas/RedeemDetailDTOObj'
    RedeemDetailDTOObj:
      type: object
      properties:
        orderNumber:
          type: string
        itemStockUnitOfMeasure:
          type: string
        invoiceDate:
          type: string
          format: MM-dd-yyyy
          example: 01-17-2018
        showSalesAmountAsPrice:
          type: boolean
        customerName:
          type: string
        projectedRebate:
          type: string
        promotionDates:
          type: string
          example: 'May 5,2017-May 8,2019'
        accountId:
          type: string
        quantityShipped:
          type: string
        salesAmount:
          type: string
        id:
          type: string
        itemNumber:
          type: string
        itemDescription:
          type: string
        category:
          type: string
        projectedPromotionRebate:
          type: string
        rebateId:
          type: string
        currencyUnit:
          type: string
        promotion:
          type: string
    RebateFromObj:
      type: object
      properties:
        rebateId:
          type: string
        rebateName:
          type: string
        ableSubmit:
          type: boolean
        rows:
          type: array
          items:
            $ref: '#/components/schemas/RebateFromInputDTOObj'
    RebateFromInputDTOObj:
      type: object
      properties:
        name:
          type: string
        label:
          type: string
        placeHolder:
          type: string
        value:
          type: string
        required:
          type: boolean
        type:
          type: string
        infoGroup:
          type: string
        maxLength:
          type: integer
        minLength:
          type: integer
        email:
          type: boolean
        phone:
          type: boolean
        zip:
          type: boolean
        numeric:
          type: boolean
        pattern:
          type: string
        css:
          type: string
        invalidMsg:
          type: string
        selectValues:
          type: array
          items:
            $ref: '#/components/schemas/RebateFromSelectOptionDTOObj'
        isRadioSelected:
          type: boolean
    RebateFromSelectOptionDTOObj:
      type: object
      properties:
        displayName:
          type: string
        value:
          type: string
    getOrderApprovalList_req:
      type: object
      properties:
        approverId:
          type: string
        currentPage:
          type: integer
        pageSize:
          type: integer
        searchBy:
          type: string
        searchTerm:
          type: string
        sortBy:
          type: string
        sortType:
          type: string
        status:
          type: string
    getOrderApprovalList_rep:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/BCPaginationDataObj'
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderSimpleItemObj'
    OrderSimpleItemObj:
      type: object
      properties:
        id:
          type: string
        mincronId:
          type: string
        displayName:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        accountNumber:
          type: string
        accountName:
          type: string
        creationDate:
          type: string
          format: timestamp
        createdUser:
          type: string
        createdUserEmail:
          type: string
        submittedDate:
          type: string
          format: timestamp
        status:
          type: string
        statusDisplayName:
          type: string
        readOnly:
          type: boolean
    getOrderApprovalDetail_rep:
      $ref: '#/components/schemas/SavedPendingOrderApprovalDetailItemV2Obj'
    SavedPendingOrderApprovalDetailItemV2Obj:
      type: object
      properties:
        id:
          type: string
        displayName:
          type: string
        siteId:
          type: string
        organizationId:
          type: string
        accountNumber:
          type: string
        contactInfo:
          $ref: '#/components/schemas/ContactInfo_savedorder'
        creationDate:
          type: string
          format: timestamp
        createdUser:
          type: string
        submittedDate:
          type: string
          format: timestamp
        lastModifiedDate:
          type: string
          format: timestamp
        lastModifiedUser:
          type: string
        evOrderId:
          type: string
        assignApproval:
          $ref: '#/components/schemas/UserInfo_savedorder'
        assignApprovalDisplayText:
          type: string
        deleteStatus:
          type: boolean
          default: false
        job:
          $ref: '#/components/schemas/Job_savedorder'
        jobAccounts:
          $ref: '#/components/schemas/JobAccounts_savedorder'
        approvedBy:
          type: string
        po:
          type: string
        additionalEmailRecipient:
          type: array
          items:
            type: string
        deliveryOption:
          type: string
        deliveryOptions:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        deliveryDate:
          type: string
        deliveryTime:
          type: string
        deliveryTimes:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        shippingMethod:
          type: string
        shippingMethodValue:
          type: string
        shippingMethods:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        shippingAddressTitle:
          type: string
        shippingAddress:
          type: object
          properties:
            address1:
              type: string
            address2:
              type: string
            address3:
              type: string
            city:
              type: string
            state:
              type: string
            states:
              type: array
              items:
                $ref: '#/components/schemas/RadioButton_savedorder'
            postalCode:
              type: string
            country:
              type: string
        branchName:
          type: string
        branchAddress:
          type: object
          properties:
            displayName:
              type: string
            address1:
              type: string
            address2:
              type: string
            address3:
              type: string
            city:
              type: string
            state:
              type: string
            stateValue:
              type: string
            postalCode:
              type: string
            country:
              type: string
            phoneNumber:
              type: string
        instructions:
          type: string
        commerceItems:
          type: array
          items:
            $ref: '#/components/schemas/CommerceItem_savedorder'
        status:
          type: string
        statusDisplayName:
          type: string
        mincronId:
          type: string
        itemsTotal:
          type: number
          format: double
        taxes:
          type: number
          format: double
        otherCharges:
          type: number
          format: double
        subTotal:
          type: number
          format: double
        addressBooks:
          type: array
          items:
            $ref: '#/components/schemas/AddressBook_savedorder'
        addressBook:
          $ref: '#/components/schemas/AddressBook_savedorder'
        storeLocatorItemId:
          type: string
        rejectReason:
          type: string
        rejectUserDisplayText:
          type: string
        rejectUser:
          $ref: '#/components/schemas/UserInfo_savedorder'
        showDeliveryNotification:
          type: boolean
        MFG:
          type: string
        color:
          type: string
        orderRelatedDocuments:
          items:
            type: string
    rejectSavedOrder_req:
      type: object
      properties:
        rejectReason:
          type: string
        orders:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
    deleteSavedOrder_req:
      type: object
      properties:
        id:
          type: string
    updateSavedOrderItems_req:
      type: object
      properties:
        savedOrderId:
          type: string
        savedOrderName:
          type: string
        action:
          type: string
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              quantity:
                type: integer
              itemNumber:
                type: string
              uom:
                type: string
              color:
                type: string
                example: Dark Blue(012)
              MFG:
                type: string
                example: Light Yellow
    updateSavedOrderItems_rep:
      type: object
      properties:
        savedOrderId:
          type: string
        savedOrderName:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/CommerceItem_savedorder'
    CommerceItem_savedorder:
      type: object
      properties:
        id:
          type: string
        imageUrl:
          type: string
        imageOnErrorUrl:
          type: string
        thumbImageUrl:
          type: string
        pdpUrl:
          type: string
        description:
          type: string
        itemNumber:
          type: string
        price:
          type: integer
          format: double
        quantity:
          type: integer
        uom:
          type: string
        subTotal:
          type: integer
          format: double
        deleteStatus:
          type: boolean
        vendorColorId:
          type: string
        productId:
          type: string
        itemGrayOutLevel:
          type: string
          enum:
            - none
            - grayWithChange
            - gray
        itemFromQuote:
          type: boolean
        quotedItemQtyChanged:
          type: boolean
    getSavedOrderShippingInfo_req:
      type: object
      properties:
        orderId:
          type: string
    getSavedOrderShippingInfo_rep:
      $ref: '#/components/schemas/OrderDetailItemObj'
    OrderDetailItemObj:
      type: object
      properties:
        id:
          type: string
        displayName:
          type: string
        siteId:
          type: string
        organizationId:
          type: string
        accountNumber:
          type: string
        contactInfo:
          $ref: '#/components/schemas/ContactInfo_savedorder'
        creationDate:
          type: string
          format: timestamp
        createdUser:
          type: string
        submittedDate:
          type: string
          format: timestamp
        lastModifiedDate:
          type: string
          format: timestamp
        lastModifiedUser:
          type: string
        evOrderId:
          type: string
        assignApproval:
          $ref: '#/components/schemas/UserInfo_savedorder'
        assignApprovalDisplayText:
          type: string
        deleteStatus:
          type: boolean
          default: false
        job:
          $ref: '#/components/schemas/Job_savedorder'
        jobAccounts:
          $ref: '#/components/schemas/JobAccounts_savedorder'
        approvedBy:
          type: string
        po:
          type: string
        emailAddress:
          type: array
          items:
            type: string
        deliveryOption:
          type: string
        deliveryOptions:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        deliveryDate:
          type: string
        deliveryTime:
          type: string
        deliveryTimes:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        shippingMethod:
          type: string
        shippingMethodValue:
          type: string
        shippingMethods:
          type: array
          items:
            $ref: '#/components/schemas/RadioButton_savedorder'
        shippingAddressTitle:
          type: string
        shippingAddress:
          type: object
          properties:
            address1:
              type: string
            address2:
              type: string
            address3:
              type: string
            city:
              type: string
            state:
              type: string
            states:
              type: array
              items:
                $ref: '#/components/schemas/RadioButton_savedorder'
            postalCode:
              type: string
            country:
              type: string
        branchName:
          type: string
        branchAddress:
          type: object
          properties:
            displayName:
              type: string
            address1:
              type: string
            address2:
              type: string
            address3:
              type: string
            city:
              type: string
            state:
              type: string
            stateValue:
              type: string
            postalCode:
              type: string
            country:
              type: string
            phoneNumber:
              type: string
        instructions:
          type: string
        commerceItems:
          type: array
          items:
            $ref: '#/components/schemas/CommerceItem_savedorder'
        status:
          type: string
        statusDisplayName:
          type: string
        mincronId:
          type: string
        itemsTotal:
          type: number
          format: double
        taxes:
          type: number
          format: double
        otherCharges:
          type: number
          format: double
        subTotal:
          type: number
          format: double
        addressBooks:
          type: array
          items:
            $ref: '#/components/schemas/AddressBook_savedorder'
        addressBook:
          $ref: '#/components/schemas/AddressBook_savedorder'
        storeLocatorItemId:
          type: string
        rejectReason:
          type: string
        rejectUserDisplayText:
          type: string
        rejectUser:
          $ref: '#/components/schemas/UserInfo_savedorder'
        requiredFields:
          $ref: '#/components/schemas/RequiredFields_savedorder'
        showDeliveryNotification:
          type: boolean
        accountBranchState:
          type: string
    updateSavedOrderShippingInfo_req:
      type: object
      properties:
        orderId:
          type: string
        deliveryOption:
          type: string
        deliveryDate:
          type: string
          format: MM-dd-yyyy
        deliveryTime:
          type: string
        shippingMethod:
          type: string
        shippingAddress:
          $ref: '#/components/schemas/ShippingAddress_savedorder_req'
        branchName:
          type: string
        contactInfo:
          $ref: '#/components/schemas/ContactInfo_savedorder'
        instructions:
          type: string
    getSavedOrderReviewInfo_req:
      type: object
      properties:
        orderId:
          type: string
    getSavedOrderReviewInfo_rep:
      $ref: '#/components/schemas/OrderDetailItemObj'
    updateSavedOrderReviewInfo_req:
      type: object
      properties:
        orderId:
          type: string
        po:
          type: string
        jobName:
          type: string
        jobNumber:
          type: string
        additionalRecipients:
          type: array
          items:
            type: string
    submitSavedOrder_res:
      type: object
      properties:
        savedOrderId:
          type: string
        evOrderId:
          type: string
    submitSavedOrder_req:
      type: object
      properties:

# --- truncated at 32 KB (545 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/beacon-roofing-supply/refs/heads/main/openapi/beacon-roofing-supply-v2-openapi.yml