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-roofing-supply:beacon-roofing-supply-ev-measurement-to-order-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: 3.2.0
info:
title: Beacon Rest Services Ver 2 (OAuth) EV Measurement to Order…
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:
Show... 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`
### API Uniform Format:
Show... ### Response:
```
{
"success":true,
"messages":[
{
"key":null,
"code":null,
"type":"success",
"value":""
}
],
"result":
}
```
### 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
}
}
```
### Below V2 APIs follow original format
Show... * `/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
}
```
### API Response Message Code
Show... Code Group
Code
Comments
1XXX:
common request param error
1001
Param is required. 1002
Repository item not found via request
1003
Param max length is invalid. 1004
Param min length is invalid. 1005
Param regular expression is invalid.'
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 ]'''
tags:
- name: EV Measurement to Order
paths:
/createEVOrder:
post:
tags:
- EV Measurement to Order
summary: Create a new EV order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/createEVOrder_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/createEVOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: postCreateEVOrder
x-operation-id-source: derived
/getEVOrderCategories:
get:
tags:
- EV Measurement to Order
summary: Get given categories
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/getEVOrderCategory_res'
'401':
description: Unauthorized, the authorization 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
operationId: getGetEVOrderCategories
x-operation-id-source: derived
/getEVOrder:
get:
tags:
- EV Measurement to Order
summary: Get given EV order
parameters:
- in: query
name: evOrderId
schema:
type: string
required: true
description: EV Order ID
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/getEVOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: getGetEVOrder
x-operation-id-source: derived
/editEVOrder:
post:
tags:
- EV Measurement to Order
summary: Edit user given EV order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/editEVOrder_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/editEVOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: postEditEVOrder
x-operation-id-source: derived
/deleteEVOrder:
post:
tags:
- EV Measurement to Order
summary: Delete given EV order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/deleteEVOrder_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/deleteEVOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: postDeleteEVOrder
x-operation-id-source: derived
/deleteEVOrderItem:
post:
tags:
- EV Measurement to Order
summary: Delete exist item from given order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/deleteEVItem_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/deleteEVItem_res'
'401':
description: Unauthorized, the authorization 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
operationId: postDeleteEVOrderItem
x-operation-id-source: derived
/addEVOrderItem:
post:
tags:
- EV Measurement to Order
summary: Add EV item to given order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/addEVOrderItem_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/addEVOrderItem_res'
'401':
description: Unauthorized, the authorization 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
operationId: postAddEVOrderItem
x-operation-id-source: derived
/editEVOrderItem:
post:
tags:
- EV Measurement to Order
summary: Edit exist item for given order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/editEVOrderItem_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/editEVOrderItem_res'
'401':
description: Unauthorized, the authorization 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
operationId: postEditEVOrderItem
x-operation-id-source: derived
/doMeasurementCalculation:
post:
tags:
- EV Measurement to Order
summary: Get recommend quantity by measurement data
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/measurementCalculation_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/measurementCalculation_res'
'401':
description: Unauthorized, the authorization 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
operationId: postDoMeasurementCalculation
x-operation-id-source: derived
/saveAllToEVOrder:
post:
tags:
- EV Measurement to Order
summary: Save all items to EV order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/saveAll_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/getEVOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: postSaveAllToEVOrder
x-operation-id-source: derived
/EVOrderList:
get:
tags:
- EV Measurement to Order
summary: Get all EV orders of current user
parameters:
- in: query
name: searchBy
schema:
type: string
description: '
##### searchBy enumeration
* isCompleted
'
- in: query
name: searchTerm
schema:
type: string
description: '
##### When ''searchBy'' is one of the following enumeration, the ''searchTerm'' should be populated.
* isCompleted
##### When ''searchBy'' is ''isCompleted'', the searchTerm must be true or false.
'
- in: query
name: pageSize
schema:
type: string
description: Default page size is 20
- in: query
name: pageNo
schema:
type: string
description: Default page No is 1
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/evOrderListRep'
'401':
description: Unauthorized, the authorization 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
operationId: getEVOrderList
x-operation-id-source: derived
/convertEVOrderToATGOrder:
post:
tags:
- EV Measurement to Order
summary: Convert EV order to atg order
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/convertEVOrderToAtgOrder_req'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/convertEVOrderToAtgOrder_res'
'401':
description: Unauthorized, the authorization 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
operationId: postConvertEVOrderToATGOrder
x-operation-id-source: derived
components:
schemas:
Summary:
type: object
properties:
colorSelection:
$ref: '#/components/schemas/ColorSelection'
recommendQuantity:
type: number
format: long
calculatedQuantity:
type: string
wasteFactor:
type: string
dividend:
type: string
divisor:
type: string
price:
type: number
format: double
description: unit price
uom:
type: string
saveAll_req:
type: object
required:
- evOrderId
- items
properties:
evOrderId:
type: string
description: any exist EV orderId
baseWasteFactor:
type: string
selectedJobNumber:
type: string
items:
type: array
items:
$ref: '#/components/schemas/saveAll_ev_item'
EVOrder:
type: object
properties:
evOrderId:
type: string
userId:
type: string
completed:
type: boolean
description: if smart order has been convert to ATG order and also submit to Mincorn, then it be think as completed.
template:
$ref: '#/components/schemas/Template'
report:
$ref: '#/components/schemas/ReportObj'
baseWasteFactor:
type: string
description: order level of waste factor.
selectedJobNumber:
type: string
summary:
$ref: '#/components/schemas/EVOrderSummaryObj'
evItems:
type: array
items:
$ref: '#/components/schemas/EVOrderItemDetail'
saveAll_ev_item:
type: object
required:
- productId
- itemNumber
properties:
productId:
type: string
itemNumber:
type: string
wasteFactor:
type: string
quantity:
type: number
format: long
manualQuantity:
type: boolean
ReportObj:
type: object
properties:
reportId:
type: string
location:
$ref: '#/components/schemas/LocationObj'
rootArea:
type: string
lengthEave:
type: string
lengthRake:
type: string
lengthRidge:
type: string
lengthHip:
type: string
reportDownloadLink:
type: string
measurementCalculation_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
$ref: '#/components/schemas/Summary'
LocationObj:
type: object
properties:
address:
type: string
state:
type: string
city:
type: string
postcode:
type: string
Template:
type: object
properties:
templateId:
type: string
templateName:
type: string
convertEVOrderToAtgOrder_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
$ref: '#/components/schemas/convertEVOrderToAtgOrder_obj'
deleteEVOrder_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
EVItemCategory:
type: object
properties:
categoryName:
type: string
categoryId:
type: string
addEVOrderItem_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
$ref: '#/components/schemas/EVOrderItemDetail'
addEVOrderItem_req:
type: object
properties:
evOrderId:
type: string
itemNumber:
type: string
createEVOrder_req:
type: object
required:
- reportId
properties:
reportId:
type: string
description: 49216847 / can get from EV services
deleteEVItem_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
editEVOrder_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
editEVOrderItem_req:
type: object
properties:
evOrderId:
type: string
id:
type: string
description: EV item id
itemNumber:
type: string
wasteFactor:
type: string
quantity:
type: number
format: long
manualQuantity:
type: boolean
EVOrderSummaryObj:
type: object
properties:
subTotal:
type: string
total:
type: string
EVOrderItemDetail:
type: object
properties:
id:
type: string
itemNumber:
type: string
productId:
type: string
itemName:
type: string
itemImage:
type: string
description: sku image url
mainCategory:
type: string
category:
$ref: '#/components/schemas/EVItemCategory'
wasteFactor:
type: string
description: item level of waste factor.
quantity:
type: number
format: long
manualQuantity:
type: boolean
support3DMeasurement:
type: boolean
uom:
type: string
price:
type: number
format: double
variationOptions:
type: array
items:
$ref: '#/components/schemas/EVItemDetail_variationOption'
BCPaginationDataObj:
type: object
properties:
next:
$ref: '#/components/schemas/BCOtherPaginationObj'
previous:
$ref: '#/components/schemas/BCOtherPaginationObj'
pageSize:
type: integer
currentPage:
type: integer
totalCount:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/BCPaginationObj'
EVItemDetail_variationOption:
type: object
properties:
type:
type: string
value:
type: string
EVCategory:
type: object
properties:
category:
type: string
description: category name
subCategories:
type: array
items:
type: object
properties:
categoryId:
type: string
editEVOrder_req:
type: object
required:
- evOrderId
properties:
evOrderId:
type: string
description: any existed EV orderId
templateId:
type: string
description: gl396520213 / any existed template
baseWasteFactor:
type: string
description: 0-100 / two-decimal is available
selectedJobNumber:
type: string
description: job number
getEVOrderCategory_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
type: array
items:
$ref: '#/components/schemas/EVCategory'
getEVOrder_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
$ref: '#/components/schemas/EVOrder'
createEVOrder_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
evOrderId:
type: string
evOrderListResult:
type: object
properties:
pagination:
$ref: '#/components/schemas/BCPaginationDataObj'
evOrders:
type: array
items:
$ref: '#/components/schemas/EVOrder'
ColorSelection:
type: object
properties:
itemNumber:
type: string
displayName:
type: string
description: color display name
image:
type: string
description: color image url
price:
type: number
format: double
uom:
type: string
deleteEVItem_req:
type: object
properties:
evOrderId:
type: string
itemId:
type: string
BCPaginationObj:
type: object
properties:
enable:
type: boolean
page:
type: integer
currentPage:
type: boolean
type:
type: string
convertEVOrderToAtgOrder_req:
type: object
properties:
evOrderId:
type: string
deleteEVOrder_req:
type: object
properties:
evOrderId:
type: string
evOrderListRep:
type: object
properties:
messages:
type: string
success:
type: boolean
result:
$ref: '#/components/schemas/evOrderListResult'
BCOtherPaginationObj:
type: object
properties:
available:
type: boolean
label:
type: string
page:
type: integer
measurementCalculation_req:
type: object
properties:
evOrderId:
type: string
description: any exist EV orderId
evItemId:
type: string
description: get from the response of getEVOrder named "id"
wasteFactor:
type: string
description: 0-100 / two-decimal is available
location:
type: string
description: It's required for category "Starter Shingles", only can be "Eaves", "Rakes" and "both".
inputOverlap:
type: string
description: The category "Underlayment" need overlap.
inputSubtractRidge:
type: string
description: customer must choose subtracting ridges or using entire length before VENTILATION 3D+ calculation.
editEVOrderItem_res:
type: object
properties:
success:
type: boolean
messages:
$ref: '#/components/schemas/messagesObj'
result:
$ref: '#/components/schemas/EVOrderItemDetail'
convertEVOrderToAtgOrder_obj:
type: object
properties:
atgOrderId:
type: string
messagesObj:
type: array
items:
type: object
properties:
type:
type: string
value:
type: string
code:
type: string
securitySchemes:
JSESSIONID:
type: apiKey
in: cookie
name: JSESSIONID
DYN_USER_ID:
type: apiKey
in: cookie
name: DYN_USER_ID
DYN_USER_CONFIRM:
type: apiKey
in: cookie
name: DYN_USER_CONFIRM
siteId:
type: apiKey
in: cookie
name: siteId
rememberPassword:
type: apiKey
in: cookie
name: siteId