⏱️ Time to Complete: 30-45 minutes
jobAccountNumber saved (from Step 5)| Credential | Description | Example |
|---|---|---|
client_id | Your unique application identifier | srs_partner_12345 |
client_secret | Confidential key (keep secure!) | a1b2c3d4e5f6g7h8... |
| API Base URL | Environment endpoint | https://services-qa.roofhub.pro |
| Environment | Testing environment type | Staging |
access_token valid for 24 hoursAuthorization: Bearer {token} header for all API requestsPOST /authentication/tokenContent-Type: application/json{
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"grant_type": "client_credentials",
"scope": "ALL"
}{
"token_type": "Bearer", // 🔑 Always "Bearer" for OAuth 2.0
"expires_in": 86400, // ⏰ Token expires in 24 hours (86400 seconds)
"ext_expires_in": 86400, // 🔄 Extended expiration time
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." // 🎯 Use this in all API requests
}GET /customers/validate/Authorization: Bearer {token}Content-Type: application/json| Parameter | Type | Required | Description |
|---|---|---|---|
accountNumber | string | ✅ | Customer account number |
invoiceNumber | string | ⚠️ Optional | Invoice number for validation |
invoiceDate | string | ⚠️ Optional | Invoice date (YYYY-MM-DD) |
{
"validIndicator": "Y", // 🔑 CRITICAL - Must be "Y" to proceed (not boolean!)
"customerId": 46225, // 🎯 Unique customer ID
"accountNumber": "STO1170", // 🎯 Save this for Step 5 (finding customer branches)
"customerName": "STORM TEAM CONSTRUCTION INC", // 👤 Display for user confirmation
"homeBranchId": "3", // 🏢 Default branch for this customer
"customerAddress1": "4050 S US HWY 1", // 📍 Customer address line 1
"customerAddress2": "SUITE 303", // 📍 Customer address line 2
"customerAddress3": "", // 📍 Customer address line 3 (optional)
"customerCity": "JUPITER", // 🏙️ Customer city
"customerState": "FL", // 🗺️ Customer state
"customerZipCode": "33477", // 📮 Customer zip code
"customerPhone": "6146944583" // 📞 Customer contact phone
}| Field | Description | Usage |
|---|---|---|
validIndicator | 🔑 CRITICAL - Must be "Y" (string!) | Validation status |
accountNumber | 🎯 Customer account code | Save for Step 5 |
customerId | 🆔 Unique customer ID | Reference identifier |
customerName | 👤 Company name | Display to user |
homeBranchId | 🏢 Default branch ID | Preferred location |
customerAddress1-3 | 📍 Street address | Shipping reference |
customerCity | 🏙️ City | Geographic data |
customerState | 🗺️ State code | Geographic data |
customerZipCode | 📮 ZIP/Postal code | Geographic data |
customerPhone | 📞 Contact number | Communication |
validIndicator === "Y" before proceeding with order flow. It's a string value, not boolean!GET /branches/v2/branchLocationsAuthorization: Bearer {token}Content-Type: application/json[
{
"brandName": "SUNCOAST ROOFERS SUPPLY", // 🏢 Brand identity
"branchName": "SUNCOAST - PORT CHARLOTTE", // 🏪 Display name
"branchCode": "SRPCH", // 🔑 Used in subsequent API calls (Step 6)
"branchAddress": "23264 Harbor View Road", // 📍 Street address
"branchCity": "Port Charlotte", // 🏙️ City
"branchState": "FL", // 🗺️ State
"branchZip": "33980", // 📮 Zip code
"branchFax": "941-279-2804", // 📠 Fax number
"branchPhone": "941-279-2795", // 📞 Phone number
"shippingMethods": ["Ground Drop", "Roof Load"], // 🚚 Available shipping options
"salesTypes": { // 🛒 Order types supported
"Delivery": "WHSE",
"Pickup": "WILLCALL"
},
"businessHours": "MONDAY - FRIDAY, 7:00 AM TO 4:00 PM", // ⏰ Operating hours
"ordersEmail": "OrdersPortCharlotte@SuncoastRoofersSupply.com" // 📧 Order contact email
},
{
"brandName": "SUNCOAST ROOFERS SUPPLY",
"branchName": "SUNCOAST - TAMPA",
"branchCode": "SRTPA",
"branchAddress": "5801 E Adamo Dr",
"branchCity": "Tampa",
"branchState": "FL",
"branchZip": "33605",
"branchFax": "813-241-8989",
"branchPhone": "813-241-8900",
"shippingMethods": ["Ground Drop", "Roof Load"],
"salesTypes": {
"Delivery": "WHSE",
"Pickup": "WILLCALL"
},
"businessHours": "MONDAY - FRIDAY, 7:00 AM TO 4:00 PM",
"ordersEmail": "OrdersTampa@SuncoastRoofersSupply.com"
}
]| Field | Description | Usage |
|---|---|---|
branchCode | 🔑 Branch identifier | Use in Steps 6, 7, 8 |
branchName | 🏪 Display name | Show to users |
branchAddress | 📍 Street address | Location info |
branchCity | 🏙️ City | Geographic filter |
branchState | 🗺️ State code | Geographic filter |
branchZip | 📮 ZIP code | Location lookup |
branchPhone | 📞 Contact number | Customer support |
branchFax | 📠 Fax number | Alternative contact |
shippingMethods | 🚚 Delivery options | Order configuration |
salesTypes | 🛒 Order types | Pickup vs Delivery |
businessHours | ⏰ Operating hours | Scheduling |
ordersEmail | 📧 Order contact | Email notifications |
client_id and client_secretgrant_type is exactly "client_credentials"client_credential (singular) won't workvalidIndicator is not "Y""CUST12345" not "CUST-12345"[] (empty array)Authorization: Bearer YOUR_TOKEN/branches/v2/branchLocations