servers: - url: https://beaconproplus.com/v1/rest/com/becn description: >- Production. Added by API Evangelist; the harvested document carried no servers[]. Source: info.description of this spec: 'Version 1: https://beaconproplus.com/v1/rest/com/becn'; probed 2026-09-04 -> 401 {"success":false,..."Please provide token"} openapi: 3.0.0 info: title: Beacon Rest Services Ver 1 version: 24PI-4-Sprint-3 description: | This version requires user session to be established before calling any services. Once the session expires, the user has to log in to establish the session again. [ PROD BASE URL: *https://beaconproplus.com/v1/rest/com/becn* ] [ UAT BASE URL: *https://beacon-uat.becn.com/v1/rest/com/becn* ] [ DEV BASE URL: *https://beacon-dev.becn.com/v1/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 Response Message Code
Show...

API

Message Code

Code Definition

/login 1007 Email Address is required.
Email Address is invalid.
Email address is not recognized.
Password is required.
Password is invalid and should be 7 to 12 characters.
Email address and password do not match.
Invalid userAgent
Request param userAgent is invalid
Request param persistentLoginType is invalid
RememberPassword is disabled on this userAgent
Validation fail,there is exception when validate login,please try again
Login fail,there is error when you login,please try again
2005 User is already login
3004 User is not found
3005 Request param site id is not equal to current site
/orderdetail 2001 Can not get user info from current context.
2002 User type is invalid.
2003 Current user has no available account.
3001 Current user has no permission for given account.
4002 Mincron service is unavailable, please try later.
5003 This order is voided or cancelled status in Mincron.
5004 The orderId or accountId is missing.
components: schemas: branchObj: type: object properties: address: $ref: '#/components/schemas/branchAddressObj' branchNumber: type: string branchName: type: string branchPhone: type: string branchRegionId: type: string company: type: string companyName: type: string division: type: string divisionName: type: string market: type: string branchDTEnabled: type: boolean active: type: boolean activeToSendEmail: type: boolean corporateBranch: type: boolean mincronBranchStatus: type: string canAccessEVSmartOrderOnBranch: type: boolean guidedOrder: type: boolean branchAddressObj: type: object properties: postalCode: type: string state: type: string address1: type: string address2: type: string address3: type: string city: type: string latitude: type: number format: double longitude: type: number format: double jobObj: type: object properties: jobName: type: string jobNumber: type: string accountObj: type: object properties: accountName: type: string accountEnabled: type: boolean accountLegacyId: type: string accountViewPrices: type: boolean addCustomSteel: type: boolean cashAccount: type: boolean isAccountClosed: type: boolean canAccessEVSmartOrder: type: boolean customerType: $ref: '#/components/schemas/customerType' hasMincronRebate: type: boolean loyaltyEnrolled: type: boolean nationalAccount: type: boolean loyaltyFlag: type: boolean gafQuickMeasureFlag: type: boolean accountObjWithRewardsEligible: type: object properties: accountName: type: string accountEnabled: type: boolean accountLegacyId: type: string accountViewPrices: type: boolean addCustomSteel: type: boolean rewardsEligible: type: boolean cashAccount: type: boolean isAccountClosed: type: boolean canAccessEVSmartOrder: type: boolean customerType: $ref: '#/components/schemas/customerType' hasMincronRebate: type: boolean loyaltyEnrolled: type: boolean nationalAccount: type: boolean loyaltyFlag: type: boolean accountWithBranchObj: type: object properties: accountName: type: string accountEnabled: type: boolean accountLegacyId: type: string accountViewPrices: type: boolean addCustomSteel: type: boolean rewardsEligible: type: boolean cashAccount: type: boolean isAccountClosed: type: boolean accountEagleViewPurchaseStatus: type: boolean canAccessEVSmartOrder: type: boolean branch: $ref: '#/components/schemas/branchObj' customerType: $ref: '#/components/schemas/customerType' hasMincronRebate: type: boolean loyaltyEnrolled: type: boolean nationalAccount: type: boolean loyaltyFlag: type: boolean customerType: type: object properties: name: type: string realm: type: string isDefault: type: boolean orderHistoryObj: type: object properties: total: type: number format: double sellingBranch: type: string accountId: type: string job: $ref: '#/components/schemas/jobObj' purchaseOrderNo: type: string creditHold: type: string shipping: type: object properties: shippingBranch: type: integer address: $ref: '#/components/schemas/branchAddressObj' shippingMethod: type: string orderPlacedDate: type: string tax: type: number format: double orderStatusCode: type: string description: 'Order status: C,K -> Processing, I -> Invoiced, O -> Ready Delivery/Pick up, N -> Pending, P,R -> Delivered' enum: - I - R - P - C - O - K - 'N' onHold: type: boolean subTotal: type: number format: double orderId: type: string specialInstruction: type: string creditCardTokenExists: type: boolean UUID: type: string invoicedDate: type: string paymentStatus: type: string orderNotes: type: string digital: type: string orderHistoryLineItemObj: type: object properties: description: type: string productOrItemNumber: type: string subTotal: type: number format: double itemOrProductDescription: type: string unitPrice: type: number format: double quantity: type: integer itemNumber: type: string unitOfMeasure: type: string productImageUrl: type: string productOnErrorImageUrl: type: string productOrItemDescription: type: string extendedDescription: type: string lineComments: type: string jobRows: type: object properties: pageRows: type: integer pages: type: integer page: type: integer rows: type: integer rowsPerPage: type: integer orderHistoryRows: type: object properties: pageRows: type: integer pages: type: integer page: type: integer rows: type: integer rowsPerPage: type: integer categoryObj: type: object properties: categoryName: type: string categoryId: type: string productObj_itemlist: type: object properties: productImage: type: string productOnErrorImage: type: string productAdditionalOnErrorImage: type: string longDesc: type: string brand: type: string categories: type: array items: $ref: '#/components/schemas/categoryObj' shortDesc: type: string hoverAttributes: $ref: '#/components/schemas/hoverAttributesObj' productName: type: string productId: type: string baseProductName: type: string internalProductName: type: string url: type: string isAddedToFavorites: type: boolean productObj_itemDetails: type: object properties: productImage: type: string productOnErrorImage: type: string productAdditionalOnErrorImage: type: string longDesc: type: string manufactureNumber: type: string categories: type: array items: $ref: '#/components/schemas/categoryObj' shortDesc: type: string itemNumber: type: string hoverAttributes: $ref: '#/components/schemas/hoverAttributesObj' productName: type: string productId: type: string baseProductName: type: string internalProductName: type: string brand: type: string url: type: string relatedProducts: type: array items: type: string example: '' hoverAttributesObj: type: object properties: sellingUom: type: string piecesPerUom: type: string coverageUom: type: string ppCoverageUom: type: string lengthExposure: type: string widthExposure: type: string lengthHover: type: string widthHover: type: string ncpSellingUom: type: string gcpSellingUom: type: string sslvoDimensionIn: type: string sswhoDimensionOption1In: type: string sswhoDimensionOption2In: type: string sswhoDimensionOption3In: type: string lslvoDimensionIn: type: string lswhoDimensionIn: type: string rvlvoDimensionIn: type: string rvwhoDimensionIn: type: string nfvaHover: type: string nfvaUomHover: type: string fhLapIn: type: string fvLapIn: type: string chLapIn: type: string cvLapIn: type: string cfmValue: type: string cfmUom: type: string heroImagesObj: type: object additionalProperties: type: object example: - image: /images/large/357583_default_hero.jpg - image: /images/large/357583_1_hero.jpg - image: /images/large/357583_2_hero.jpg currentSkuObj: type: object properties: currentUOM: type: string color: type: string manufactureNumber: type: string unitPrice: type: number format: double itemNumber: type: string productNumber: type: string uomlist: type: array items: type: string itemImage: type: string heroImages: $ref: '#/components/schemas/heroImagesObj' thumbImage: type: string swatchImage: type: string skuShortDesc: type: string auxiliaryImages: type: array items: type: string isAddedToFavorites: type: boolean skuObj: type: object properties: currentUOM: type: string color: type: string unitPrice: type: number format: double itemNumber: type: string productNumber: type: string productName: type: string itemImage: type: string thumbImage: type: string swatchImage: type: string skuShortDesc: type: string auxiliaryImages: type: array items: type: string isAddedToFavorites: type: boolean dtStatusObj: type: object properties: displayName: type: string statusEndDate: type: string deviceTokenObj: type: object properties: accountId: type: string orderId: type: string email: type: string dtStatus: $ref: '#/components/schemas/dtStatusObj' tokens: type: array items: type: string deliveryTrackingSettingsObj_getCurrentUserInfo: type: object properties: email: type: string phone: type: string myOrders: type: object additionalProperties: type: string example: requested: Text scheduled: Email delivered: Text&Email allOrders: type: object additionalProperties: type: string example: requested: Text scheduled: Email delivered: Text&Email dtAccount: type: object additionalProperties: type: string example: requested: Text scheduled: Email delivered: Text&Email currentUserPermissionObj: type: object properties: Place Order: type: object example: Yes: true No: false Yes, with Approval: false Price: type: object example: Yes: true No: false loginReq: type: object properties: username: type: string description: User login email address password: type: string siteId: type: string description: Login Site enum: - homeSite - dealerchoice persistentLoginType: type: string enum: - RememberMe - RememberPassword userAgent: type: string enum: - desktop - tablet - mobile apiSiteId: type: string description: Api Site Id enum: - UAT loginRep: type: object properties: messageInfo: type: object properties: accountBranch: $ref: '#/components/schemas/branchObj' lastName: type: string cartLineItems: type: integer profileId: type: string firstName: type: string internalUser: type: boolean userType: type: string rewardsEligible: type: boolean lastSelectedAccount: $ref: '#/components/schemas/accountObj' getLoginDeclarationRep: type: object properties: message: type: string titles: type: array items: type: string declarationContent: type: string CTA: type: array items: type: string getCurrentUserInfoRep: type: object properties: message: type: string accountBranch: $ref: '#/components/schemas/branchObj' lastName: type: string cartLineItems: type: integer profileId: type: string firstName: type: string email: type: string login: type: string internalUser: type: boolean userType: type: string roleType: type: string rewardsEligible: type: boolean lastActivity: type: string lastPasswordUpdate: type: string registrationDate: type: string firstLoggedInDate: type: string defaultOrganization: type: string defaultOrganizationId: type: string lastSelectedAccount: $ref: '#/components/schemas/accountObj' deliveryTrackingSettings: $ref: '#/components/schemas/deliveryTrackingSettingsObj_getCurrentUserInfo' hasPrivateEVAccount: type: boolean profileEagleViewPurchaseStatus: type: boolean deviceTokens: type: array items: type: string appLogin: type: boolean appLastPurchaseDate: type: string proPlusLastPurchaseDate: type: string lastProPlusMobileAppLogin: type: string notificationDisableStatus: type: boolean notificationChangeTime: type: string currentUserPermission: $ref: '#/components/schemas/currentUserPermissionObj' isEVrefreshTokenValid: type: boolean loyaltyFlag: type: boolean accountsRep: type: object properties: message: type: string totalNumRecs: type: integer pageNumRecs: type: integer accounts: type: array items: $ref: '#/components/schemas/accountWithBranchObj' branchlistRep: type: object properties: message: type: string totalNumRecs: type: integer pageNumRecs: type: integer branches: type: array items: $ref: '#/components/schemas/branchObj' jobsRep: type: object properties: message: type: string hasJobAccount: type: boolean hasJobNumber: type: boolean isJobAccountRequired: type: boolean poRequired: type: boolean showExtendedPO: type: boolean extendedPORequired: type: boolean jobs: type: array items: $ref: '#/components/schemas/jobObj' result: $ref: '#/components/schemas/jobRows' orderhistoryRep: type: object properties: message: type: string orders: type: array items: $ref: '#/components/schemas/orderHistoryObj' result: $ref: '#/components/schemas/orderHistoryRows' orderdetailRep: type: object properties: message: type: string order: $ref: '#/components/schemas/orderHistoryObj' lineItems: type: array items: $ref: '#/components/schemas/orderHistoryLineItemObj' DTInfo: $ref: '#/components/schemas/DTInfoObj' result: $ref: '#/components/schemas/orderHistoryRows' EVReportId: type: integer EVEligibleForUpgrade: type: boolean hasDTError: type: boolean warranties: type: array items: type: object properties: itemNumber: type: string skuPDPDisplayTitle: type: string resource: type: object additionalProperties: type: string example: Warranty: 'http://www.xxx.com/download.php,' documents: type: array items: type: object properties: itemNumber: type: string skuPDPDisplayTitle: type: string categoryName: type: string resource: type: object additionalProperties: type: string example: General Instructrions: 'http://www.xxx.com/download.php,' MSDS: 'http://www.xxx.com/download.php,' Brochure: 'http://www.xxx.com/download.php,' didYouMeanAndAutoCorrectionObj: type: object properties: message: type: string items: type: array items: type: object properties: filter: type: string itemlistRep: type: object properties: message: type: string totalNumRecs: type: integer pageNumRecs: type: integer didYouMean: $ref: '#/components/schemas/didYouMeanAndAutoCorrectionObj' autoCorrection: $ref: '#/components/schemas/didYouMeanAndAutoCorrectionObj' items: type: array items: $ref: '#/components/schemas/productObj_itemlist' categories: type: array items: $ref: '#/components/schemas/categoryObj' itemDetailsRep: type: object properties: product: $ref: '#/components/schemas/productObj_itemDetails' message: type: string specification: type: object additionalProperties: type: string example: Shingles_Per_Square: '80,' Algae_Resistance: '10 years,' Coverage_Per_Square: '100 sq. ft,' Bundles_Per_Square: '3,' Nominal_Size: '12\x36\,' Net_Free_Vent_Area__NFVA_: 'Vent Area,' Exposure: '5\,' Wind_Resistance: 60mph resource: type: object additionalProperties: type: string example: General Instructrions: 'http://www.xxx.com/download.php,' Warranty: 'http://www.xxx.com/download.php,' MSDS: 'http://www.xxx.com/download.php,' Brochure: 'http://www.xxx.com/download.php,' currentSKU: $ref: '#/components/schemas/currentSkuObj' skuList: type: array items: $ref: '#/components/schemas/skuObj' submitOrderReq: type: object properties: accountId: type: string job: type: object properties: jobName: type: string jobNumber: type: string purchaseOrderNo: type: string extendedPO: type: string orderStatusCode: type: string description: 'Order status: C,K -> Processing, I -> Invoiced, O -> Ready Delivery/Pick up, N -> Pending, P,R -> Delivered' enum: - I - R - P - C - O - K - 'N' apiSiteId: type: string description: Api Site Id # enum: # # - HVR # - ALL lineItems: type: array items: type: object properties: itemNumber: type: string quantity: type: integer unitOfMeasure: type: string description: type: string lineComments: type: string productNumber: type: string shipping: $ref: '#/components/schemas/shippingObj' payment: $ref: '#/components/schemas/creditpurchase_req' sellingBranch: type: string specialInstruction: type: string checkForAvailability: type: string default: 'yes' pickupDate: type: string format: date(yyyy-mm-dd) pickupTime: type: string onHold: type: boolean example: false UUID: type: string submitOrderRep: type: object properties: orderId: type: string mincronCCMsg: type: string creditpurchase_req: type: object properties: cardInfo: type: object properties: ExpMM: type: string ExpYY: type: string Type: type: string FullName: type: string encryptionTokenData: type: object properties: LowValueToken: type: string addressVerificationData: type: object properties: AVSZIPCode: type: string addItemsToOrderReq: type: object properties: addItemCount: type: integer description: The total amount of item to add to cart accountId: type: string description: The account id specialInstructions: type: string description: The order special instructions items: type: array items: $ref: '#/components/schemas/addTocartItem' shipping: $ref: '#/components/schemas/shippingObj' apiSiteId: type: string addTocartItem: type: object properties: catalogRefId: type: string productId: type: string quantity: type: integer uom: type: string productNumber: type: string itemType: type: string example: Standard item or Custom Steel description: type: string shippingObj: type: object properties: shippingMethod: type: string shippingBranch: type: string address: type: object properties: address1: type: string address2: type: string city: type: string postalCode: type: string state: type: string addItemsToOrderRep: type: object properties: messageInfo: type: string example: Add item(s) to cart successful templatelistRep: type: object properties: message: type: string totalNumRecs: type: integer pageNumRecs: type: integer templates: type: array items: $ref: '#/components/schemas/templateListObj' templateListObj: type: object properties: templateId: type: string templateName: type: string jobNumber: type: string lastModifiedDate: type: string lastModifiedUser: $ref: '#/components/schemas/profileObj' accountLegacyId: type: string isAccountClosed: type: boolean accountName: type: string createdByUser: $ref: '#/components/schemas/profileObj' templateItems: type: array items: $ref: '#/components/schemas/templateListItemObj' templateListItemObj: type: object properties: templateItemId: type: string productImageUrl: type: string productOnErrorImageUrl: type: string itemOrProductDescription: type: string itemNumber: type: string nickName: type: string productOrItemNumber: type: string internalProductName: type: string currentVariation: $ref: '#/components/schemas/variationTypeObj' variations: type: array items: $ref: '#/components/schemas/variationTypeObj' unitPrice: type: number format: double unitOfMeasure: type: string quantity: type: integer available: type: boolean imageUrl: $ref: '#/components/schemas/imageUrlObj' imageUrlObj: type: object properties: thumbnail: type: string large: type: string profileObj: type: object properties: profileId: type: string firstName: type: string lastName: type: string emailAddress: type: string variationTypeObj: type: object properties: typeId: type: string typeName: type: string options: type: array items: $ref: '#/components/schemas/variationOptionObj' variationOptionObj: type: object properties: optionId: type: string optionName: type: string opectionChecked: type: boolean skuId: type: string getProductInfoRep: type: object properties: message: type: string hoverAttributes: $ref: '#/components/schemas/hoverAttributesObj' accounts: type: array items: type: string pricingRep: type: object properties: message: type: string priceInfo: type: object additionalProperties: type: object example: '253729': BDL: 125.67 PC: 10.86 '253737': CTN: 3663.22 '253740': CTN: 2384.34 PC: 834.43 cartItemsRep: type: object properties: cartLineItems: type: integer items: type: array items: type: object properties: catalogRefId: type: string productId: type: string quantity: type: integer uom: type: string unitPrice: type: integer format: double totalPrice: type: integer format: double cartItemsFullRep: type: object properties: atgOrderId: type: string lastSelectedJob: type: object properties: jobName: type: string jobNumber: type: string cartLineItems: type: integer items: type: array items: $ref: '#/components/schemas/cartItemList' lastSelectedAccount: $ref: '#/components/schemas/accountObjWithRewardsEligible' getSkuUomRep: type: object properties: skuIdUomList: type: array items: type: string skuIdsUomList: type: object additionalProperties: type: array items: type: string example: '253729': - BDL - PC '253733': - CTN '253740': - BDL - CTN - PC DTInfoObj: type: object properties: statusStartDate: type: string example: '2018-05-02T08:48:44-04:00' status: type: string lastUpdated: type: string example: '2018-05-02T08:48:44-04:00' timeArrived: type: string example: '2018-05-02T08:48:44-04:00' custPO: type: string type: type: string destination: $ref: '#/components/schemas/DTAddressInfoObj' projectedCompletedDate: type: string example: '2018-05-02T08:48:44-04:00' latestRequestedDelivery: type: string example: '2018-05-02T08:48:44-04:00' photos: type: array items: type: object properties: largeUrl: type: string thumbnailUrl: type: string timestamp: type: string example: '2018-08-09T20:53:34' orderNo: type: string projectedArrivalDate: type: string example: '2018-05-02T08:48:44-04:00' parentOrderNo: type: string statusDateTimeMessage: type: string earliestRequestedDelivery: type: string example: '2018-05-02T08:48:44-04:00' driver: type: string lines: type: array items: $ref: '#/components/schemas/DTLineItemObj' orgin: $ref: '#/components/schemas/DTAddressInfoObj' statusEndDate: type: string example: '2018-05-02T08:48:44-04:00' DTAddressInfoObj: type: object properties: postalCode: type: string state: type: string customerNo: type: string branch: type: string streetName: type: string companyName: type: string locationNo: type: string country: type: string city: type: string DTLineItemObj: type: object properties: lineItemNumber: type: string skuNumber: type: string description: type: string quantity: type: string quantityUOM: type: string cartItemList: type: object properties: itemOrProductDescription: type: string catalogRefId: type: string productId: type: string quantity: type: integer uom: type: string unitPrice: type: integer format: double totalPrice: type: integer format: double 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: rememberPassword paths: /login: post: security: [] tags: - My Account Services summary: User login with username/password requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/loginReq' responses: '200': description: | Login success If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "messageInfo": "Validation exception" } headers: Set-Cookie: description: 'set cookie JSESSIONID, DYN_USER_ID, DYN_USER_CONFIRM, siteId, rememberPassword' schema: type: string example: >- JSESSIONID=xxxx; Path=/; Secure; HttpOnly, DYN_USER_ID=xxxx; expires=xxxx; path=/; Secure; HttpOnly, DYN_USER_CONFIRM=xxxx; expires=xxxx; path=/; Secure; HttpOnly, siteId=homeSite; expires=xxxx; path=/; Secure; HttpOnly, rememberPassword=xxxx; expires=xxxx; path=/; Secure; HttpOnly content: application/json: schema: $ref: '#/components/schemas/loginRep' '400': description: 'Bad Request, the request method is not valid' /logout: post: security: [] tags: - My Account Services summary: User logout responses: '200': description: | Logout success If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "messageInfo": "Validation exception" } headers: Set-Cookie: description: 'remove cookie JSESSIONID, DYN_USER_ID, DYN_USER_CONFIRM, siteId, rememberPassword' schema: type: string example: >- JSESSIONID=xxxx; Path=/; Secure; HttpOnly, DYN_USER_ID=xxxx; expires=xxxx; path=/; Secure; HttpOnly, DYN_USER_CONFIRM=xxxx; expires=xxxx; path=/; Secure; HttpOnly, rememberPassword=xxxx; expires=xxxx; path=/; Secure; HttpOnly content: application/json: schema: type: object properties: messageInfo: type: string example: Logout successful '400': description: 'Bad Request, the request method is not valid' '401': description: 'Unauthorized, user do not login' '500': description: Internal exception /getLoginDeclaration: get: security: [] tags: - My Account Services summary: Get login declaration parameters: - in: query name: siteId schema: type: string description: Default is `homeSite`, should be one of `homeSite`, `dealersChoice` - in: query name: persistentLoginType schema: type: string description: Default is `RememberMe`, should be one of `RememberMe`, `RememberPassword` - in: query name: userAgent schema: type: string description: Default is `desktop`, should be one of `desktop`, `tablet`, `mobile` - in: query name: apiSiteId schema: type: string description: Default is `UAT` responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/getLoginDeclarationRep' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /getCurrentUserInfo: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - My Account Services summary: Get current user details description: | This service returns current user information. `dtAccount` is the deliveryTrackingSettings of current user with last selected account, `roleType` is one of "Master Admin","Admin",and "Site User" `isEVrefreshTokenValid` is one of "true", "false", and "null". If the value is "null", it indicates that the user does not have a private okta token. responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/getCurrentUserInfoRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /accounts: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - My Account Services summary: List all available accounts for the user parameters: - in: query name: profileId schema: type: string required: true description: User profile ID responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/accountsRep' '400': description: 'Bad Request, profileId does not math logged-in user' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /switchAccount: post: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - My Account Services summary: Change user's current account requestBody: required: true content: application/json: schema: type: object properties: accountId: type: string responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/getCurrentUserInfoRep' '400': description: 'Bad Request, the request method is not valid' '401': description: 'Unauthorized, user do not login' '500': description: Internal exception /branchlist: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Branch Services summary: List all available branches parameters: - in: query name: zipCode schema: type: string required: false description: Branch postal code - in: query name: city schema: type: string required: false description: Branch city - in: query name: pageSize schema: type: integer required: false description: Default page size is 21. - in: query name: pageNo schema: type: integer required: false description: 'Default page number is 1, the first page' responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/branchlistRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /jobs: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Job Service summary: List available jobs for an account and provide the job name and number combination rule. description: >-

1. This service calls mincron jobs service to retrieve list of jobs for the account and provide the job name and number combination rule.

2. "isJobAccountRequired" field is outdated in the response payload. Please refer to below combination rule to render the page.

3. Job name,number and job list combination rule:

1). Job Account Drop Down: the option is selected in drop-down will be filled into "jobNumber" field when invoking /submitOrder or /submitQuote endpoint.
2). Job Name Text Field: the value will be filled into "jobName" field when invoking /submitOrder or /submitQuote endpoint.

Condition

Display Rule

hasJobAccount

hasJobNumber

hasJobs

Job Account Drop Down

Job Name Text Field

Y/N Y Y Show Job Account Drop Down, option values are retrieved from jobs array in the response payload. It is a required field Hide Job Name Text Field
Y Y/N N Hide Job Account Drop Down Show Job Name Text Field, customer is able to enter job name freely, and it's required
Y N Y Show Job Account Drop Down, but it is optional Show Job Name Text Field, and it is required. Customer is able to enter job name freely, or choose an option from job account drop down, but job name text field will be auto filled once job account selected
N N Y Show Job Account Drop Down, but it is optional Show Job Name Text Field, and it is optional. Customer is able to enter job name freely, or choose an option from job account drop down, but job name text field will be auto filled once job account selected
N Y/N N Hide Job Account Drop Down Show Job Name Text Field, but it is optional
### PONumber and ExtendedPO Rule:

1. The [shownExtendedPO, extendedPORequired, poRequired] fields can be obtained from '/jobs', '/getCurrentOrderReview'.

2. If shownExtendedPO is Yes, only the extended PO needs to be displayed, and extendedPORequired is used to verify whether the extended PO is Required.

3. If shownExtendedPO is NO, only the regular PO needs to be displayed, and poRequired is used to verify whether the regular PO is Required.

Required

shownExtendedPO

extendedPORequired

poRequired

Display Rule

Y Y / Only show Extended PO Text Field, and it is required.
Y N / Only show Extended PO Text Field, but it is optional.
N / Y Only show PO Text Field, and it is required.
N / N Only show PO Text Field, but it is optional.
parameters: - in: query name: accountId schema: type: string required: true description: Account ID - in: query name: pageSize description: Default page size is 100 schema: type: integer - in: query name: pageNo description: Default page no is 1 schema: type: integer responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/jobsRep' '400': description: 'Bad Request, accountId is invalid' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /orderhistory: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Order History Services summary: List all the orders in the account description: '' parameters: - in: query name: accountId description: Account ID required: true schema: type: integer - in: query name: pageSize description: Default page size is 0 schema: type: integer - in: query name: pageNo description: Default page no is 0 schema: type: integer - in: query name: filter description: > As one of below UPPER(OrderNumber) like UPPER('%XX%') UPPER(PurchaseOrderNumber) like UPPER('%XX%') or UPPER(ExtendedCustomerPO) like UPPER('%XX%') UPPER(JobName) like UPPER('%XX%') UPPER(AtgUUID) like UPPER('%XX%') UPPER(Ordered) > 'YYYY-MM-DD' and UPPER(Ordered) < 'YYYY-MM-DD' UPPER(OrderStatusCode) in ('C','K') UPPER(OrderStatusCode) in ('I') UPPER(OrderStatusCode) in ('O') UPPER(OrderStatusCode) in ('N') UPPER(OrderStatusCode) in ('P','R') 'Order status: code mapping: Processing(C,K), Invoiced(I), Ready Delivery/Pick up(O), Pending(N), Delivered(P,R)' UPPER(PaymentStatus) like UPPER('Fully Paid') UPPER(PaymentStatus) like UPPER('Partially Paid') UPPER(PaymentStatus) like UPPER('Unpaid') schema: type: string - in: query name: orderBy description: | As one of below OrderNumber ASC/DESC ShippingAddress1 ASC/DESC Total ASC/DESC OrderStatusCode ASC/DESC schema: type: string - in: query name: queryCompany description: Default queryCompany is true schema: type: boolean responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/orderhistoryRep' '400': description: 'Bad Request, accountId is invalid' '401': description: 'Unauthorized, user do not login' '403': description: 'Forbidden, user do not has permission to access this API' '500': description: Internal exception /orderdetail: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Order History Services summary: Get details of the order by Id description: >- This service will calls mincron order detail service and return order data from mincron. For eagleView order, specialInstruction field in response will be replaced with report address. parameters: - in: query name: orderId description: Order ID required: true schema: type: string - in: query name: accountId description: Account ID required: true schema: type: string - in: query name: showDT description: flag to show/hide DT order status info, default is true. schema: type: string - in: query name: queryCompany description: Default queryCompany is true schema: type: boolean responses: '200': description: | successful operation If failed, return messageCode, refer to *API Response Message Code* content: application/json: schema: $ref: '#/components/schemas/orderdetailRep' '400': description: 'Bad Request, accountId is invalid' '401': description: 'Unauthorized, user do not login' '403': description: 'Forbidden, user do not has permission to access this API' '500': description: Internal exception /itemlist: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get list of items description: >- This service will list all the products for selected account, based on availability. parameters: - in: query name: accountId required: true schema: type: string - in: query name: pageSize 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: integer format: int32 - in: query name: pageNo description: 'Default page no is 1, the first page' schema: type: integer format: int32 - in: query name: filter description: | Search terms This parameter also support the following syntax: * `productId:ID1,ID2...IDn` * Filter by given product ID list, separated by comma. e.g. "productId:C-010001,C-010002,C-010003" schema: type: string - in: query name: cateFilter description: Category search terms schema: type: string - in: query name: showHoverAttrs description: 'if "true", display Hover attributes' schema: type: string - in: query name: hoverSearch description: 'if "true", display Hover version of search' schema: type: string - in: query name: enableAutoCorrection description: Default is true, will enable auto correction for `filter` schema: type: string - in: query name: enableDidYouMean description: Default is true, will enable did you mean features for `filter` schema: type: string responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/itemlistRep' '400': description: 'Bad Request, accountId is invalid' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /items: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get items details description: This service returns product details based on Product or item Id. parameters: - in: query name: productId schema: type: string description: Product ID - in: query name: itemNumber schema: type: string description: Item number(SKU ID) - in: query name: accountId description: Account ID schema: type: string - in: query name: jobNumber schema: type: string description: Job Number - in: query name: uom schema: type: string description: Unit of Measure - in: query name: showHoverAttrs description: 'if "true", display hover attributes' schema: type: string responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/itemDetailsRep' '400': description: 'Bad Request, accountId is invalid' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /getProductInfo: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get product and related accounts info description: | Returns: * hoverAttributes: each Hover attribute and its value. * accounts: accounts ids array where product is available parameters: - in: query name: productId required: true schema: type: string description: Product ID - in: query name: accountInfo schema: type: string 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 responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/getProductInfoRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /getSkuUom: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get all the Unit of Measure (UoM) for a given sku ids description: 'If given skuId(s) is not empty, will return skuIdUomList' parameters: - in: query name: skuId schema: type: string description: Single SKU ID - in: query name: skuIds schema: type: string description: | Multiple SKU ID list long string, seperated by commas e.g. "253729,253737,253740" responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } `253729, 253733 etc are sku id.` `BDL, PC etc are uom of sku.` content: application/json: schema: $ref: '#/components/schemas/getSkuUomRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /pricing: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get price and Unit of Measures (UoMs) for multiple line items description: | Returns price and unit of measure for each line item If some of the UoM is empty, will return "EMPTY_UOM" in response e.g. "priceInfo": { "253729": { "EMPTY_UOM": 125.67 } } parameters: - in: query name: skuIds required: true schema: type: string description: > SKU ID list long string, seperated by commas e.g. "253729,253737,253740" If query with UOM(optional), should add UOM after each sku id and seperated by colon e.g. "253729:BDL,253737,253740:PC" If UOM is empty, will get price of all UOMs for this SKU - in: query name: accountId description: Account ID schema: type: string - in: query name: jobNumber schema: type: string description: Job Number responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } `253729, 253737 etc. are sku id` `BDL, PC etc. are uom of sku` `$125.67/BDL is for sku 253729.` `$10.86/PC is for sku 253729.` content: application/json: schema: $ref: '#/components/schemas/pricingRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /cartItems: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Catalog ITEM Services summary: Get items in the cart description: > Return existing items in the cart for the user profile and selected account responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/cartItemsFullRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /submitOrder: post: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Submit Order Services summary: Submit order description: > This service is used to submit order. #### Request Body Validation * apiSiteId: String, Required * accountId: String, Max Length:6, Required * job.jobName: String, Max Length:15 * job.jobNumber: String, Max Length:7 * purchaseOrderNo: String, Max Length:22 * extendedPO: String, Max Length:50 * shipping.shippingMethod: String, Max Length:1 * shipping.shippingBranch: String, Max Length:4 * shipping.address.address1: String, Max Length:30 * shipping.address.address2: String, Max Length:30 * shipping.address.city: String, Max Length:25 * shipping.address.postalCode: String, Max Length:10 * shipping.address.state: String, Max Length:2 * payment.cardInfo.ExpMM: String, The month is a positive integer less than 12, Required * payment.cardInfo.ExpYY: String, Year is 2 digits, Required * payment.cardInfo.Type: String, Required * payment.cardInfo.FullName: String, Optional * payment.encryptionTokenData.LowValueToken: String, Required * payment.addressVerificationData.AVSZIPCode: String, format is xxxxx or xxxxx-xxxx, Required * sellingBranch: String, Max Length:4 * specialInstruction: String, Max Length:234 * lineItems: Required * lineItems.itemNumber: String, Max Length:6 * lineItems.quantity: Integer, Max Length:10, Required * lineItems.unitOfMeasure: String, Max Length:3 * lineItems.description: String, Max Length:128 * lineItems.lineComments: String, Max Length:2048 * lineItems.productNumber: String, Max Length:40 * pickupDate: String, Format: yyyy-mm-dd * pickupTime: String, Recommended values: ["Morning", "Afternoon", "Anytime", "Special Request"] * UUID: String, Max Length:100 If "checkForAvailability" is "no", will not check availability of lineItems, otherwise will do check availability of lineItems "Payment" is optional. If payment is passed in the parameter, payWithCredit defaults to true, and the credit card process is carried out and verified. If payment is not passed in the parameter, the pay with cash process is carried out. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/submitOrderReq' responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/submitOrderRep' '401': description: 'Unauthorized, user do not login' '403': description: 'Forbidden, user do not has permission to access this API' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception /addMultipleItemsToOrder: post: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Add Multiple Items To Order summary: Add item(s) to cart description: | This service is able to add item(s) to cart. itemType can be set Standard item or Custom Steel,if no itemType inputed, default value is Standard item,if itemType = Custom Steel, should input description. parameters: - in: query name: reverseItems description: >- if "true", will adding items to the cart in reverse order, default is "true" schema: type: boolean requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/addItemsToOrderReq' responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/addItemsToOrderRep' '400': description: 'Bad Request, the request method is not valid' '401': description: 'Unauthorized, user do not login' '500': description: Internal exception /template: get: security: - JSESSIONID: [] DYN_USER_ID: [] DYN_USER_CONFIRM: [] siteId: [] rememberPassword: [] tags: - Template Services summary: List all templates and details for the current user description: >- This service is able to list all templates and the details for the current user parameters: - in: query name: account required: false description: 'If not empty, will filter results by given account id.' schema: type: string - in: query name: showItems required: false description: 'Default is false, if "true", display template items.' schema: type: string - in: query name: showItemCurrentVariation required: false description: >- Default is false, if "true", display current variation of each template item. schema: type: string - in: query name: showItemVariations required: false description: >- Default is false, if "true", display variations of each template item schema: type: string - in: query name: showPricing description: 'Default is false, if "true", display pricing of each template item.' schema: type: string - in: query name: showItemAvailable description: >- Default is true, if "false", do not display item regional availability. schema: type: string - in: query name: pageSize description: 'Default is 10, max 100 - record count of each page.' schema: type: integer format: int32 - in: query name: pageNo description: 'Default is 1, the first page, page number or page index.' schema: type: integer format: int32 responses: '200': description: | successful operation If failed, return messageCode, refer to messageCode doc. Example { "messageCode": "1001", "message": "Validation exception" } content: application/json: schema: $ref: '#/components/schemas/templatelistRep' '401': description: 'Unauthorized, user do not login' '405': description: 'Method not allowed, the request method is not valid for this API or this API is not available.' '500': description: Internal exception