- The
min_downloadandmax_downloadparameters do not exclude values outside the specified range but instead prioritize those within it. - All products within a single quote request must be of the same type (either all Broadband or all DIA).
- Invalid values for
term,product_type,min_download,max_download,ip_type, andip_blockwill result in a400 Bad Requesterror.
Create Quote
/api/v1/quotes/externalAccessExpressInitiates a quote request to retrieve available product offerings based on the provided criteria. This is typically the first step in the service provisioning workflow, where you provide location and product details to receive pricing and product offerings. The response behavior varies by product type: Broadband quotes return immediately, while DIA quotes require polling the quote results endpoint to retrieve the final quote details.
urn:grt:accessexpressapplication/jsonRequest
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
quote_name | string | No | A user-defined name for the quote request |
customer_name | string | No | The name of the customer for whom the quote is being generated |
email | string | Yes | The requester's email address. Must be a valid format |
business_unit | string | Yes | Identifies the requesting business unit |
requester | string | Yes | The name of the person initiating the quote request |
granted_tenant_macnum | string | No | The company macnum on whose behalf the action is performed |
locations | array | Yes | A list of service locations for which product offerings are being requested. Each location includes its own address and product list |
Location Object
Each item in the locations list should contain:
| Field | Type | Required | Description |
|---|---|---|---|
address1 | string | Yes | Primary street address |
address2 | string | No | Secondary address info (e.g., Suite, Apt) |
city | string | Yes | City name |
state | string | Yes | Two-letter state code (e.g., "TX", "CA") |
zip_code | string | Yes | ZIP or postal code |
products | array | Yes | A list of product requirement objects (see Product Object below) |
Product Object
Each products item describes preferences and constraints for a product offering:
| Field | Type | Required | Description |
|---|---|---|---|
product_type | string | Yes | Type of product requested. Valid values: "Broadband" or "DIA" |
term | string | No | Contract term. Valid values: "1", "2", or "3" (representing years) |
min_download | string | No | Minimum download speed. Valid values: "10", "20", "50", "100", "250", "500", "700", "1000" |
max_download | string | No | Maximum download speed. Valid values: Same as min_download. If both are provided, minimum must not exceed maximum |
include_carriers | array[string] | No | A list of carrier names to explicitly include in the quote |
exclude_carriers | array[string] | No | A list of carrier names to exclude |
preferred_carriers | array[string] | No | Carrier names that are preferred over others |
ip_type | string | No | Type of IP service. Valid values: "static" or "dynamic" |
ip_block | string | No | Size of the IP address block. Valid values: "/29" or "/30" |
include_mns | boolean | No | Whether to include managed network services in the quote |
Important Notes
Example Request
Response
Note: Quote options are sorted by priority in ascending order, where a lower number indicates higher priority.
Broadband Response
For Broadband-type products, results will be returned immediately in the response with the following key sections:
-
accounts: This list contains all available accounts associated with the given location, which can be used in the downstream API for ordering services. If no accounts are found, a message will indicate to use the/orders/create/externalendpoint to request account creation. -
quote_request_options: This section includes quote-related data along with the list of products found for each location. The available offerings are nested under theformal_products_offeringskey. -
invalid_addresses: If a provided location cannot be verified by the MelissaData service, it will be included under this key. Each entry will contain the original input data along with a detailed error message explaining why the location was considered invalid.
Success Response (200 OK)
Key Response Fields
quote_request_id: Unique identifier for this quote request. Required for subsequent operations including Create Order and Quote Results Retrieval.formal_product_offering_id: Identifier for a specific product offering. Use this value when creating an order to select the desired product.quote_status: Current status of the quote. Values:"Checking availability","Order services","Closed", or"Quote expired".accounts: Available accounts for the location. Use the account information when creating orders.
DIA Quote Behavior
For DIA-type products, the response behavior is different. If the request is successfully submitted, a “Checking availability” status will be returned along with the corresponding quote_request_id. To retrieve the results once processing is complete, you must call the /api/v1/quotes/external/{quote_request_id}/results endpoint.
If internal issues occur during processing, the quote will be marked with status “Closed”. In such cases, contact support via g360support@granitenet.com or through the G360 portal.
Code Samples
Validation Rules
Input Constraints
- State Code: Must be a valid two-letter US state code (e.g., “TX”, “CA”, “NY”)
- ZIP Code: Must be a valid ZIP or postal code format
- Product Type: Must be exactly
"Broadband"or"DIA"(case-sensitive) - Term: Must be
"1","2", or"3"(representing years) - Speed Tiers:
min_downloadandmax_downloadmust be one of:"10","20","50","100","250","500","700","1000" - IP Type: Must be
"static"or"dynamic" - IP Block: Must be
"/29"or"/30" - Email: Must be a valid email address format
Behavioral Rules
- Product Type Consistency: All products within a single quote request must be of the same type (either all Broadband or all DIA).
- Speed Range: If both
min_downloadandmax_downloadare provided, the minimum must not exceed the maximum. - Speed Prioritization: The
min_downloadandmax_downloadparameters prioritize results within the range but do not exclude values outside it.
Errors
| HTTP Status | Error Description | Resolution |
|---|---|---|
400 | Validation Error | Review the error response body for specific field validation errors. Ensure all required fields are present, data types are correct, and values meet constraints (e.g., valid state code, ZIP code format, valid product type, term values). |
401 | Authentication Failed | Verify your access token is valid and included in the Authorization header with the "Bearer " prefix. Check token expiration and regenerate if necessary. |
403 | Permission Denied | Your access token does not have the required scope (urn:grt:accessexpress). Contact your administrator to request the appropriate permissions. |
429 | Rate Limit Exceeded | You have exceeded the rate limit of 60 requests per minute. Check the Retry-After header in the response to determine when to retry. Implement exponential backoff in your integration. |
500 | Internal Server Error | An unexpected error occurred on the server. Retry the request after a brief delay. If the issue persists, contact Granite support with the request ID from the error response. |
DIA-Type Product Behavior
Important: DIA-Type Products Require Polling
For DIA-type products, product results will not be included in the initial response due to third-party constraints. However, the accounts and invalid_addresses sections will still be present as usual.
If the request is successfully submitted, a “Checking availability” status will be returned along with the corresponding quote_request_id.
To retrieve the results for this quote once processing is complete, you will need to call the endpoint: /api/v1/quotes/external/{quote_request_id}/results (see Get Quote Results for details).
Error Handling for Quote Processing
If internal issues occur during processing, the quote will be marked with the status “Closed”, and no results will be returned. In such cases, please contact our support team via the support email (g360support@granitenet.com) or through the G360 portal for assistance and troubleshooting.