Get the brand registration
Returns the rooftop's brand registration, if any, and the rooftop address on file.
Looks up the rooftop's registration with the phone carrier's registration service, and reads the rooftop address from the rooftop record. Returns customer_profiles (empty if nothing has been saved, otherwise one entry) and address. Registration status is reported as:
pendingfor drafts and anything not yet decidedapprovedwhen activerejectedwhen failed
state tells a draft (draft) apart from a real submission (submitted). Nothing is written.
Before you call it
-
You need
enterpriseIdandteamId. Pass them asenterprise_idandteam_id(snake_case). -
Authentication: Bearer token of a signed-in console user. The token is checked; the route does not check that the caller belongs to the rooftop.
-
Rate limit: Not documented
-
Processing: Synchronous. Waits for the registration lookup and the address read.
Request
- Send
Authorization: Bearer YOUR_TOKEN. - If
customer_profilesis empty, show a blank form. - If
stateisdraftorstatusisrejected, let the user edit and resubmit. Otherwise treat the form as read-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
| Query parameters | — | — | Sent in the query string. |
enterprise_id | string | Required | Dealer group ID. |
team_id | string | Required | Rooftop ID. |
| Headers | — | — | Sent as HTTP headers. |
Authorization | string | Required | Bearer YOUR_TOKEN |
Sample request
curl -X GET "https://api.spyne.ai/user-management/v1/twilio/customer-profiles?enterprise_id=<enterpriseId>&team_id=<teamId>" \
-H "Authorization: Bearer YOUR_TOKEN"import requests
res = requests.get(
"https://api.spyne.ai/user-management/v1/twilio/customer-profiles",
params={"enterprise_id": "<enterpriseId>", "team_id": "<teamId>"},
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(res.status_code, res.json())const qs = new URLSearchParams({ enterprise_id: "<enterpriseId>", team_id: "<teamId>" });
const res = await fetch(`https://api.spyne.ai/user-management/v1/twilio/customer-profiles?${qs}`, {
headers: { Authorization: "Bearer YOUR_TOKEN" },
});
console.log(res.status, await res.json());Sample response
{
"message": "Customer profiles fetched successfully",
"error": false,
"code": "",
"details": null,
"data": {
"address": {
"addressLine1": "100 Example Ave",
"city": "Austin",
"state": "TX",
"country": "United States",
"zipcode": "78701",
"address_line": "100 Example Ave",
"pin_code": "78701"
},
"customer_profiles": [
{
"customer_profile_id": "<providerResourceId>",
"business_details": {
"name": "Example Motors LLC",
"display_name": "Example Motors",
"address": { "street": "100 Example Ave", "city": "Austin", "state": "TX", "zip": "78701", "country": "US" },
"type": "private_profit",
"industry": "AUTOMOTIVE",
"registration_id_type": "EIN",
"registration_id_value": "12-3456789",
"website": "https://www.example.com",
"email": "[email protected]",
"isd_code": "+1",
"phone": "5550100000",
"privacy_policy_url": "https://www.example.com/privacy",
"terms_and_conditions_url": "https://www.example.com/terms"
},
"authorized_representatives": [
{
"first_name": "Jane",
"last_name": "Doe",
"email": "[email protected]",
"isd_code": "+1",
"phone_number": "5550100000",
"title": "General Manager",
"position": "GM",
"employee_id": "101"
}
],
"enterprise_id": "<enterpriseId>",
"team_id": "<teamId>",
"state": "submitted",
"status": "pending",
"failure_reason": null
}
]
}
}{ "message": "enterprise_id and team_id are required", "error": true, "code": "ERROR_BAD_REQ_400", "details": null, "data": null }{ "message": "Invalid Token", "error": true, "code": "ERROR_AUTH_401", "details": "", "data": null }{ "message": "...", "error": true, "code": "ERROR_SERVER_500", "details": "", "data": null }200 OK. With no registration yet, customer_profiles is []. With no address on file, address is null.
400 Bad Request (missing input). The response body is the framework's default input-validation error. Its shape is not defined in the code. An empty value instead returns the body in the 400 Bad Request (missing input) tab.
Response fields
| Parameter | Type | Description |
|---|---|---|
data.address | object or null | Rooftop address as saved by Save rooftop details. |
data.customer_profiles[] | array | Zero or one registration. |
...customer_profile_id | string or null | Carrier-side registration ID. |
...business_details | object | Legal name, display name (caller ID name), address, entity type, industry, EIN, website, email, phone, privacy and terms URLs. |
...authorized_representatives[] | array | One representative: name, email, phone, title (job title), position (job position category), employee_id (directory contact ID). |
...state | string | draft or submitted. |
...status | string | pending, approved or rejected. |
...failure_reason | string or null | Why it was rejected. |
Errors
| Status | Reason | When it happens |
|---|---|---|
400 | Invalid input | enterprise_id or team_id is missing or empty. |
401 | ERROR_AUTH_401 | Missing or invalid token. |
500 | ERROR_SERVER_500 | The registration lookup failed for a reason other than "not found", or the address read failed. |
Next
Pre-fill the form. Offer directory contacts from List the employee directory as the authorized representative. Save with Submit or save the brand registration. The checklist also reads this endpoint to show a rejected registration as needing attention.
- Called before: Save rooftop details, List the employee directory.
- Called after: Submit or save the brand registration.
Updated about 1 hour ago
