Skip to Content
G360Use Case GuidesBroadband Quote-to-Order
POSTapi/v1/quotes/external

Broadband Quote-to-Order

USE CASE GUIDE

Initiates a quote request to retrieve available broadband or DIA product offerings based on location and product criteria. This is typically the first step in the service provisioning workflow.

API Call Flow

POST
Create Quote
Application Logic
Review Offerings
POST
Create Order
GET
Track Order

Step-by-Step Walkthrough

Step 1: Create a Broadband Quote

The first step is to create a quote by providing the service location and product details. This API call returns available product offerings with pricing information that you can present to your customer.

What this step does: Submits location and product preferences to receive available broadband service options and pricing.

Why this step: You need to know what services are available at the customer’s location and their associated costs before creating an order.

Important: Save the quote_request_id from the response—you’ll need it to create the order in Step 3. Also save the formal_product_offering_id of the product your customer selects.

Request Parameters

Parameters

FieldTypeRequiredDescription
locationobjectYesLocation details for the service address
productobjectYesProduct configuration details
account_macnumstringNoExisting account MAC number. Exactly one of account_macnum or account_to_create must be provided.
account_to_createobjectNoAccount details for new account creation. Exactly one of account_macnum or account_to_create must be provided.

Location Object

FieldTypeRequiredDescription
street_addressstringYesStreet address of the service location
citystringYesCity name
statestringYesTwo-letter state code (e.g., "CA", "NY")
zip_codestringYes5-digit ZIP code
unit_numberstringNoUnit or suite number, if applicable

Product Object

FieldTypeRequiredDescription
product_typestringYesProduct type: "Broadband" or "DIA"
termintegerYesContract term in years. Valid values: 1, 2, or 3
bandwidth_mbpsintegerNoDesired bandwidth in Mbps. Required for DIA products.

Account to Create Object

FieldTypeRequiredDescription
company_namestringYesCompany or organization name
contact_emailstringYesPrimary contact email address
contact_phonestringYesPrimary contact phone number (E.164 format)

Example Request

Response

Success Response (200 OK)

Response Behavior Varies by Product Type

Broadband: Quotes return immediately with complete product offerings and pricing. You can proceed directly to the Create Order step using the quote_request_id and selected formal_product_offering_id.

DIA: Quotes require asynchronous processing. The initial response includes a quote_request_id with status “pending”. You must poll the Get Quote Status endpoint until the status is “completed” before proceeding to Create Order.

Key Response Fields

  • quote_request_id: Unique identifier for this quote request. Required for subsequent operations including Create Order and Get Quote Status.
  • formal_product_offering_id: Identifier for a specific product offering. Use this value when creating an order to select the desired product.
  • status: Current status of the quote. Values: "pending", "completed", "expired", or "failed".
  • expires_at: ISO 8601 timestamp indicating when the quote expires. Quotes must be used to create an order before this time.

Code Sample

Step 2: Review Product Offerings

After creating the quote, review the available product offerings and let your customer select their preferred option. This is application logic that happens in your system—no API call is needed.

What this step does: Displays the product offerings returned from Step 1 and allows the customer to select their preferred service.

Why this step: Customers need to see pricing and service details before committing to an order.

Important: Save the formal_product_offering_id of the selected offering—you’ll need it in Step 3 to create the order.

Code Sample

Step 3: Create Order

Once the customer has selected a product offering, create an order using the quote_request_id from Step 1 and the formal_product_offering_id from Step 2.

What this step does: Converts the quote into an actual service order.

Why this step: The order initiates the service provisioning process.

Data dependencies: Requires quote_request_id from Step 1 and formal_product_offering_id from Step 2.

Code Sample

Step 4: Track Order Status

After creating an order, periodically check its status to monitor the provisioning progress.

What this step does: Retrieves the current status of an order.

Why this step: You need to know when the service has been provisioned and is ready for use.

Data dependencies: Requires order_id from Step 3.

Code Sample

Edge Cases & Error Handling

Invalid Address

If an address cannot be serviced, the API will return an error response. Check for invalid_addresses in the response.

No Product Offerings Returned

If no product offerings are available for a location, handle this gracefully.

Expired Quote

Quotes expire after 30 days. Always check expires_at before creating an order.

Broadband vs DIA Quote Flows

Broadband quotes return immediately with complete data. DIA quotes require polling.

For detailed endpoint documentation, see:

Validation Rules

Input Constraints

  • State Code: Must be a valid two-letter US state code (e.g., “CA”, “NY”, “TX”)
  • ZIP Code: Must be a valid 5-digit US ZIP code
  • Product Type: Must be exactly "Broadband" or "DIA" (case-sensitive)
  • Term: Must be 1, 2, or 3 (representing years)
  • Bandwidth: Must be a positive integer. Minimum 10 Mbps for Broadband, minimum 10 Mbps for DIA
  • Phone Number: Must be in E.164 format (e.g., “+14155551234”)
  • Email: Must be a valid email address format

Behavioral Rules

  • Account Selection: Exactly one of account_macnum or account_to_create must be provided. If account_macnum is provided, the account must exist and be accessible with the current authentication scope.
  • Bandwidth Requirement: bandwidth_mbps is required when product_type is "DIA". It is optional for "Broadband" products.
  • Location Validation: The provided address must be serviceable. Invalid or unserviceable addresses will return a 400 error with details.

Expiration and Timing Rules

  • Quote Expiration: Quotes expire 30 days after creation. The expires_at field in the response indicates the exact expiration time.
  • Rate Limiting: This endpoint is rate-limited to 60 requests per minute per API key. Exceeding this limit returns a 429 status code with a Retry-After header indicating when to retry.
  • DIA Processing Time: DIA quotes typically take 2-5 minutes to process. Poll the Get Quote Status endpoint every 30 seconds until status is "completed".

Errors

HTTP StatusError DescriptionResolution
400Validation ErrorReview 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).
401Authentication FailedVerify your access token is valid and included in the Authorization header with the "Bearer " prefix. Check token expiration and regenerate if necessary.
403Permission DeniedYour access token does not have the required scope (urn:grt:accessexpress). Contact your administrator to request the appropriate permissions.
404Account Not FoundThe provided account_macnum does not exist or is not accessible with your current authentication. Verify the MAC number or use account_to_create instead.
422Unserviceable LocationThe provided address is not serviceable for the requested product type. Review the error details for alternative locations or product options.
429Rate Limit ExceededYou 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.
500Internal Server ErrorAn 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.
Last updated on