⏱️ Time to Complete: 30-45 minutes
Subject: API Access Request - [Your Company Name]
Hello SRS API Support Team,
We would like to request API credentials for integration with SRS.
Company Name: [Your Company]
Integration Use Case: [Brief description - e.g., "E-commerce platform order submission"]
Technical Contact Name: [Name]
Technical Contact Email: [Email]
Technical Contact Phone: [Phone]
Environment Needed: QA/Staging (for testing)
Please let us know if you need any additional information.
Thank you!
[Your Name]| 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
}POST /api/customer/validateAuthorization: Bearer {token}Content-Type: application/json{
"customerIdentifier": "CUST12345"
}customerIdentifier can be customer code, email address, or account number.{
"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| Code | Meaning | Action |
|---|---|---|
200 | Success | Parse response data |
400 | Bad Request | Check request body format |
401 | Unauthorized | Verify credentials/token |
403 | Forbidden | Check API access permissions |
404 | Not Found | Verify endpoint URL |
429 | Too Many Requests | Implement rate limiting |
500 | Server Error | Retry after delay, contact support |
503 | Service Unavailable | System maintenance, retry later |
client_id and client_secret are correctgrant_type is exactly "client_credentials"Bearer YOUR_TOKENSubject: API Support - [Brief Issue Description]
Client ID: your_client_id
Environment: QA/Staging
Issue: [Describe the problem]
Steps to Reproduce:
1. Call endpoint X with payload Y
2. Receive error Z
Expected: [What should happen]
Actual: [What actually happens]
Request:
[Include sanitized request]
Response:
[Include response with error]
Troubleshooting Attempted:
- Tried X, result was Y
- Verified Z
Please advise.1. REQUEST CREDENTIALS
↓
Email: APISupportTeam@srsdistribution.com
Wait: 1-2 business days
↓
Receive: client_id + client_secret
2. AUTHENTICATE
↓
POST /authentication/token
Body: { client_id, client_secret, grant_type, scope }
↓
Receive: access_token (valid 24h)
3. VALIDATE CUSTOMER
↓
POST /api/customer/validate
Header: Authorization: Bearer {token}
Body: { customerIdentifier }
↓
Receive: accountNumber, validIndicator
4. GET BRANCHES
↓
GET /branches/v2/branchLocations
Header: Authorization: Bearer {token}
↓
Receive: List of all branches| Field | Source | Used In | Example |
|---|---|---|---|
access_token | Step 2 | All API calls | eyJhbGc... |
accountNumber | Step 3 | Step 5, Step 8 | "STO1170" |
customerName | Step 3 | Display to user | "ACME Corp" |
branchCode | Step 4 | Steps 5, 6, 7, 8 | "BRRIV" |
validIndicator as boolean (it's a string!)Authorization header