Every API here is available over the APIs.io API and to AI agents over MCP.
servers:
- url: https://beaconproplus.com
description: >-
Production. Added by API Evangelist; the harvested document carried no servers[].
Source: info.description of this spec: '[ BASE URL: https://beaconproplus.com ]' — this combined document mixes /v1, /v2, /v3 and /v4 paths, so the host is the base and the version prefix is carried per tag
openapi: 3.0.0
paths:
"/login":
post:
operationId: V1Controller_login
summary: " Logs user into system"
description:
Logs user into system with email as username and unique password.
Log in session lasts 1 hour. To extend login session to 7 days, use the “RememberMe”
flag. The `siteId` will always be `homeSite`.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
"$ref": "#/components/schemas/login"
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/loginResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/logout":
post:
operationId: V1Controller_logout
summary: Logs user out of system
description: Logs user out of system and ends current session.
parameters: []
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/logoutResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/getLoginDeclaration":
get:
operationId: V1Controller_getLoginDeclaration
summary: Returns Terms and Conditions for persistent login
description:
If user clicks on “keep me signed in” on the login page, user will
need to agree to the terms and conditions to remain logged into PRO+.
parameters:
- name: siteId
required: false
in: path
description: Default is `homeSite`, should be one of `homeSite`, `dealersChoice`
schema:
type: string
- name: persistentLoginType
required: false
in: path
description: Default is `RememberMe`, should be one of `RememberMe`, `RememberPassword`
schema:
type: string
- name: userAgent
required: false
in: path
description: Default is `desktop`, should be one of `desktop`, `tablet`, `mobile`
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/getLoginDeclarationResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/accounts":
get:
operationId: V1Controller_accounts
summary: Lists available accounts for a user
description:
Returns available accounts for a user using the profile Id from
GET/getCurrentUserInfo.
parameters:
- name: profileId
required: true
in: path
description: User profile Id
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/accountResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/switchAccount":
post:
operationId: V1Controller_switchAccount
summary: Changes account for a user
description:
Allows Beacon customer to change from one customer account to another
account associated with that user profile.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
"$ref": "#/components/schemas/switchAccountBody"
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/switchAccountResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/branchlist":
get:
operationId: V1Controller_branchlist
summary: Lists all available branches
description: Returns available branches within a zip code or city.
parameters:
- name: zipCode
required: false
in: path
description: Branch postal code
schema:
type: string
- name: city
required: false
in: path
description: Branch city
schema:
type: string
- name: pageSize
required: false
in: path
description: Default page size is 21
schema:
type: number
- name: pageNo
required: false
in: path
description: Default page number is 1, the first page
schema:
type: number
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/branchListResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/jobs":
get:
operationId: V1Controller_jobs
summary: Lists available job names for an account
description: Returns available job names and job numbers for an account.
parameters:
- name: accountId
required: true
in: path
description: Account Id
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/jobsResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/items":
get:
operationId: V1Controller_items
summary: Returns item details
description: Returns item details based on product Id or item Id.
parameters:
- name: productId
required: false
in: path
description: Product Id
schema:
type: string
- name: itemNumber
required: false
in: path
description: Item number(SKU ID)
schema:
type: string
- name: accountId
required: false
in: path
description: Account Id
schema:
type: string
- name: jobNumber
required: false
in: path
description: Job Number
schema:
type: string
- name: uom
required: false
in: path
description: Unit of Measure
schema:
type: string
- name: showHoverAttrs
required: false
in: path
description: if "true", display hover attributes
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/getItemsResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/getCurrentUserInfo":
get:
operationId: V2Controller_getCurrentUserInfo
summary: Returns user details
description:
This service returns details for a logged in user. In this response,
dtAccount is the deliveryTrackingSettings of current user with last selected
account and roleType is one of "Master Admin","Admin", or "Site User".
parameters: []
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/getCurrentUserInfoResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/orderhistory":
get:
operationId: V2Controller_orderhistory
summary: Returns orders listed by order id
description:
Returns order information for each order including order totals,
selling branch, special instructions, and shipping information.
parameters:
- name: accountId
required: true
in: path
description: Account Id
schema:
type: number
- name: pageSize
required: false
in: path
description: Default page size is 0
schema:
type: number
- name: pageNo
required: false
in: path
description: Default page no is 0
schema:
type: number
- name: filter
required: false
in: path
description:
'<h4>Notice</h4><p>The filter value should be URL encoded to
avoid special characters issues(e.g. % with numbers)</p><h4>filter enumeration</h4><ul><li>UPPER(OrderNumber)
like UPPER("%XX%")</li><li>ShippingAddress1 like "%XXX%" or UPPER(ShippingAddress2)
like UPPER("%XXX%")</li><li>UPPER(PurchaseOrderNumber) like UPPER("%XX%")</li><li>UPPER(JobName)
like UPPER("%XX%")</li><li>UPPER(Ordered) > "YYYY-MM-DD" and UPPER(Ordered)
< "YYYY-MM-DD"</li><li>UPPER(OrderStatusCode) in ("C", "K")</li><li>UPPER(OrderStatusCode)
in ("I")</li><li>UPPER(OrderStatusCode) in ("O")</li><li>UPPER(OrderStatusCode)
in ("N")</li><li>UPPER(OrderStatusCode) in ("P", "R")</li><li>UPPER(ItemOrProductDescription)
like UPPER("%XXX%") or ItemNumber like "%XXX%"</li><li>UPPER(SourceOfSale)
like UPPER("C") or UPPER(SourceOfSale) like UPPER("E")</li><li>UPPER(SourceOfSale)
in ("C") or UPPER(SourceOfSale) in ("E")</li><li>UPPER(SourceOfSale) = "C"
or UPPER(SourceOfSale) = "E"</ul></li><h4>OrderStatusCode mapping</h4><ul><li>C,
K: Processing</li><li>I: Invoiced</li><li>O: Ready Delivery / Pick up</li><li>N:
Pending</li><li>P, R: Delivered</li></ul><h4>SourceOfSale mapping</h4><ul><li>C:
In - Store</li><li>E: Online</li></ul>'
schema:
type: string
- name: orderBy
required: false
in: path
description:
"<h4>orderBy enumeration</h4><ul><li>OrderNumber ASC/ DESC</li><li>ShippingAddress1
ASC / DESC</li><li>Total ASC / DESC</li><li>OrderStatusCode ASC / DESC</li><li>SourceOfSale
ASC / DESC</li></ul>"
schema:
type: string
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/orderhistoryResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/orderdetail":
get:
operationId: V2Controller_orderdetail
summary: Returns order details by order Id
description:
Returns order details by order Id. If OAuth is enabled, token is
passed in header. Order status codes include (I) Invoiced, (R) Reviewed, (P)
Priced, (C) Changed, (O) Open, (K) Reserved, (N) Pending. For eagleView order,
specialInstruction field in response will be replaced with report address.
parameters:
- name: orderId
required: true
in: path
description: Order Id
schema:
type: string
- name: accountId
required: true
in: path
description: Account Id
schema:
type: string
- name: accountToken
required: true
in: path
description: Account Token
schema:
type: string
- name: showDT
required: false
in: path
description: Flag to show/hide DT order status info, default is true.
schema:
type: string
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/orderdetailResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/itemlist":
get:
operationId: V3Controller_itemlist
summary: Get list of items
description:
This service will list all the products for selected account, based
on availability.
parameters:
- name: accountId
required: false
in: query
description: Account Id
schema:
type: string
- name: pageSize
required: false
in: query
description:
Default page size is 21. Max Page Size can be configured in BCC,
maxPageSize default value is 30. If pageSize exceeds maxPageSize, the amount
of maxPageSize items return.
schema:
type: number
- name: pageNo
required: false
in: query
description: Default page no is 1, the first page
schema:
type: number
- name: filter
required: false
in: query
description:
'Search terms<br><br>This parameter also support the following
syntax:<br><blockquote>●`productId:ID1,ID2...IDn`<blockquote>○Filter
by given product Id list, separated by comma. Example: "productId:C-010001,C-010002,C-010003"</blockquote></blockquote>'
schema:
type: string
- name: cateFilter
required: false
in: query
description: Category search terms
schema:
type: string
- name: facetsFilter
required: false
in: query
description:
'Filter syntax:<br><br><blockquote>●Facets search IDs,
separated by comma<blockquote>○ Example: "4294965847,4294965836"</blockquote></blockquote><blockquote>●Indicate
which dimension to search, < facet type >: <facet name >, separated by comma,
case insensitive, ignore white space<blockquote>○ Example: "size:0ft
x 2ft,packaging:100 bag,thickness:102mm,style:A Slop,color: Beige"</blockquote></blockquote><blockquote>●Special
charactors should be URL encoded then append to query string<blockquote>○
Example:raw: "facetsFilter=Thickness:20_,Thickness:20",Thickness:20mm,Size:"9
x "12,Size:#12,Size:1! x 1!,Size:1-5/8",Size:10" x 15",Size:100" x 200",Size:2-7/8",Size:6>
x 500<"</blockquote><blockquote>○ Example:URL encoded: "facetsFilter=Thickness%3a20_%2cThickness%3a20%22%2cThickness%3a20mm%2cSize%3a%229+x+%2212%2cSize%3a%2312%2cSize%3a1!+x+1!%2cSize%3a1-5%2f8%22%2cSize%3a10%22+x+15%22%2cSize%3a100%27+x+200%27%2cSize%3a2-7%2f8%22%2cSize%3a6%3e+x+500%3c"</blockquote></blockquote><blockquote>●The
above syntax can be mixed together<blockquote>○ Example: "size:0ft
x 2ft,4294965847,packaging:100 bag,thickness:102mm,4294965836,style:A Slop,color:
Beige"</blockquote></blockquote>'
schema:
type: string
- name: showSkuList
required: false
in: query
description: if "false", display sku list
schema:
type: string
- name: showFacets
required: false
in: query
description: if "false", do not display facets. Default is "false"
schema:
type: string
- name: enableAutoCorrection
required: false
in: query
description: Default is false, will enable auto correction for `filter`
schema:
type: string
- name: enableDidYouMean
required: false
in: query
description: Default is false, will enable did you mean features for `filter`
schema:
type: string
- name: showHoverAttrs
required: false
in: query
description: if "false", display Hover attributes
schema:
type: string
- name: hoverSearch
required: false
in: query
description: if "false", display Hover version of search
schema:
type: string
responses:
"200":
description:
'successful operation<br/><br/>If failed, return messageCode,
refer to messageCode doc.<br/><br/>Example<br/><br/>{ "messageCode": "1001",
"message": "Validation exception" }'
content:
application/json:
schema:
"$ref": "#/components/schemas/itemListResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
security:
- basic: []
tags:
- V3
"/getProductInfo":
get:
operationId: V1Controller_getProductInfo
summary: Returns list of accounts by Product Id
description: Returns list of accounts where product is available for Hover.
parameters:
- name: productId
required: false
in: path
description: Product Id
schema:
type: string
- name: accountInfo
required: true
in: path
description:
If true, return all accounts as a list for which the product
should be served (accounts that have the product as available). Default
is false
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/getProductInfoResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/getSkuUom":
get:
operationId: V1Controller_getSkuUom
summary: Returns Unit of Measures (UoM) for an item number
description:
"Returns all Unit of Measures (UoM) options for an item number.
Item number examples: 253729, 253733. Unit of Measure examples: BDL, PC, CTN."
parameters:
- name: skuId
required: false
in: path
description: Item Number
schema:
type: string
- name: skuIds
required: false
in: path
description:
'Multiple Item Number string, separated by commas<br><br>Example:
"253729,253737,253740"'
schema:
type: string
responses:
"200":
description:
'successful operation<br><br>If failed, return messageCode,
refer to the <i>API Response Message Code</i> dropdown above<br><br>Example:<br><br>{
"messageCode": "1001", "messages": [{ "type": "error", "value": "Validation
exception", "code": "1001" }], "success": false }'
content:
application/json:
schema:
"$ref": "#/components/schemas/getSkuUomResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V1
"/pricing":
get:
operationId: V2Controller_pricing
summary: Returns price and unit of measure for item number(s)
description:
Returns price and unit of measure for item numbers. Items with
no unit of measure will return “EMPTY_UOM” in response. There is no limit
in the number of items in query.
parameters:
- name: skuIds
required: false
in: path
description:
'skuIds: Separate SKU Id''s with commas.<br><br>Example: "253729,253737,253740"<br><br>If
querying for items specified by unit of measure, add unit of measure followed
by colon.<br><br>Example: "253729:BDL,253737,253740:PC"'
schema:
type: string
- name: accountId
required: false
in: path
description: Account Id
schema:
type: string
- name: jobNumber
required: false
in: path
description: Job Number
schema:
type: string
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/pricingResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/cartItems":
get:
operationId: V2Controller_cartItems
summary: Retrieves items from cart
description:
Retrieves added items from the cart for the user profile within
selected account. This end point allows you to return variations of each item.
parameters:
- name: showItemVariations
required: false
in: path
description: Default is false. If "true", display variations of each item.
schema:
type: string
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/cartItemsResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/submitOrder":
post:
operationId: V2Controller_submitOrder
summary: Submits order
description:
'This service submits an order to the assigned branch for the selected
account. Account holder can require jobNumber for each order processed within
that account. Use get/jobs service to see if jobNumber is required for account.
The “purchaseOrderNo” is assigned by account and does not need to be unique.
The ""apiSiteId"" is is required to submit an order. The “itemNumber” or ""productOrItemDescription"",
“quantity,” and “unitOfMeasure” fields are required lineItems. The “checkForAvailability”
field should always be “No” to ensure orders are actually received by a branch
representative. The “UUID” field is an optional field to send in UUID value
to track orders. '
parameters: []
requestBody:
required: true
content:
application/json:
schema:
"$ref": "#/components/schemas/submitOrderBody"
responses:
"200":
description:
successful operation<br><br>refer to the <i>API Uniform Format</i>
dropdown above
content:
application/json:
schema:
"$ref": "#/components/schemas/submitOrderResponse"
"400":
description: Bad Request, accountId is invalid.
"401":
description: Unauthorized, the authorization bearer token is invalid.
"405":
description:
Method not allowed, the request method is not valid for this
API or this API is not available.
"500":
description: Internal exception.
tags:
- V2
"/addMultipleItemsToOrder":
post:
operationId: V2Controller_addMultipleItemsToOrder
summary: Adds multiple items to the cart
description:
Adds multiple items to a cart. "items.color" should be either "vendor
color name(code)" or "vendor color name".
parameters:
- name: ignoreInvalidItems
required: true
in: path
description:
if "true", will ignore invalid items and continue add valid items
to cart, otherwise will return invalid items
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
"$ref": "#/components/schemas/addMultipleItemsToOrderBody"
responses:
"200":
# --- truncated at 32 KB (389 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/beacon-roofing-supply/refs/heads/main/openapi/beacon-roofing-supply-all-api-openapi.yml