This endpoint is used to obtain an Access Token using the Client Credentials Grant flow. This flow is typically used for machine-to-machine (M2M) communication where a specific user’s consent is not required, and the client application is acting on its own behalf.

Get offer details

Retrieves the detailed configuration, pricing references, and metadata for a specific service Offer identified by its namespace and name.

Request overview

FeatureDetails
MethodGET
Endpointhttps://test.api.gtt.services/apis/v1alpha/namespaces/{namespace}/offer/{name}
AuthenticationBearer Token

Path parameters

  • namespace (string): The unique identifier for the environment or tenant (e.g., 142034).
  • name (string): The unique resource name of the offer (e.g., telr-test-001).

Headers

  • Authorization (string): Required. Use the format Bearer <TOKEN>.

Response body schema

The response returns a JSON object representing the Offer resource.

1. Resource identifiers

  • kind: The type of resource (offer).
  • version: API version (e.g., v1alpha).
  • metadata: Contains timestamps, labels, and geo-spatial data (lat/long coordinates and Plus Codes).

2. Specification (spec)

The spec block contains the core business logic and configuration for the offer:

FieldDescription
**quoteRef / siteRef**References to the parent Quote and associated Site objects.
termsAn array of contract durations (e.g., 36 months) and their validity status.
addressFull geographic details of the service location, including normalized street data and UK-specific fields (if applicable).
**gaa / litBldgs**Pricing reference blocks for different connectivity types (DIA, Broadband, Ethernet).
networkConfigurationDefines HA options and LAN interface types (e.g., copper).
templateSelectionHardware/Software constraints such as firewall requirements, max bandwidth (e.g., 200 Mbps), and circuit limits.

3. Status and expiration

  • state.phase: The current lifecycle stage of the offer (e.g., design).
  • dateExpired: Epoch timestamp indicating when the offer pricing/validity expires.

Example response analysis

In the provided sample, the offer “telr-test-001” is for a site in Seattle, WA.

  • Pricing: The offer has successful pricing hits (hasOfferings: true) for DIA and Ethernet via GAA, but no Broadband offerings under the “Lit Buildings” category.
  • Hardware: It is configured for a maximum of 200 Mbps bandwidth and 2 WAN circuits.
  • Lifecycle: The offer is currently in the design phase.

Update offer configuration

This endpoint updates an existing Offer resource within a specific namespace. It is primarily used during the Design phase of a quote to refine technical specifications, select hardware templates, or adjust product attributes like speed and subnets.

Request overview

FeatureDetails
MethodPUT
Endpointhttps://test.api.gtt.services/apis/v1alpha/namespaces/{namespace}/offer/{name}
HeadersContent-Type: application/json, Authorization: Bearer <TOKEN>

Path parameters

  • namespace (string): The unique identifier for the tenant environment (e.g., 142034).
  • name (string): The unique resource name of the offer (e.g., telr-test-001).

Request body breakdown

The payload is a structured JSON representing the full state of the Offer resource. Key sections include:

1. Metadata and identification

  • **kind / version**: Identifies the resource type (offer) and API schema version (v1alpha).
  • annotations: Contains a checksum. This is often used for Optimistic Concurrency Control; the update may fail if the checksum doesn’t match the current server state to prevent overwriting intermediate changes.
  • geoLocation: Defines the physical delivery point using GeoJSON coordinates and Google Plus Codes.

2. Service specification (spec)

This is the core of the request where technical requirements are defined:

  • products: Defines the connectivity service.
  • typedia (Dedicated Internet Access).
  • speed100 (Mbps).
  • ipSuffix/29 (Subnet mask for the IP handoff).
  • templateSelection: Maps the service to specific hardware or virtual platforms.
  • platformEnvisionEDGE (The selected vendor/platform).
  • max_bandwidth_mbps2750 (The capacity limit of the selected template).
  • address: The granular location details, including street number, route, and UK-specific exchange codes if applicable.

3. Pricing and state

  • **gaa / litBldgs**: References to pre-calculated pricing objects for different access technologies (Broadband, Ethernet, DIA).
  • state.phase: Indicates the current lifecycle stage. In this request, it is set to design.

Sample request payload

{
    "kind": "offer",
    "version": "v1alpha",
    "namespace": "142034",
    "name": "telr-test-001",
    "metadata": {
        "dateCreated": 1770659951657,
        "dateUpdated": 1770661506547,
        "annotations": [
            "net.gtt.offer/checksum/2e096aa3a1c836fadb745251d0665770c1a7c57d215e784a6c43ac657e62ea0f"
        ]
    },
    "spec": {
        "products": [
            {
                "productSpecification": {
                    "externalId": "access",
                    "productCategory": "connect"
                },
                "attributes": {
                    "type": "dia",
                    "speed": 100,
                    "ipSuffix": "/29"
                }
            }
        ],
        "templateSelection": {
            "highAvailability": 1,
            "firewall": 1,
            "platform": 1,
            "availableTemplates": [
                {
                    "id": "31",
                    "name": "EnvisionEDGE Virtual Router",
                    "platform": "EnvisionEDGE",
                    "max_bandwidth_mbps": 2750
                }
            ]
        },
        "state": {
            "phase": "design"
        }
    }
}

Expected response

  • 200 OK: Returns the fully updated Offer object, including a refreshed dateUpdated timestamp.
  • 400 Bad Request: Occurs if the payload violates schema constraints (e.g., speed exceeds template limits).
  • 409 Conflict: Occurs if the checksum in annotations does not match the current version on the server.

Partial update (PATCH) offer

This endpoint performs a partial update to an existing Offer resource using the JSON Patch (RFC 6902) standard. Unlike a PUT request, which requires sending the entire resource, PATCH allows you to modify specific fields—in this case, updating the product configuration without touching other metadata or site details.

1. Request overview

ComponentValue
MethodPATCH
Endpointhttps://test.api.gtt.services/apis/v1alpha/namespaces/{namespace}/offer/{name}
Content-Typeapplication/json
AuthenticationBearer Token

Path parameters

  • namespace: The tenant ID (e.g., 142034).
  • name: The specific offer ID (e.g., telr-test-001).

2. JSON patch operations

The request body uses a list of operation objects. This is a powerful way to ensure atomicity and precision when updating complex nested resources.

Update payload analysis

[
  {
    "op": "replace",
    "path": "/spec/products",
    "value": [ ... ]
  }
]
  • op: The operation type (replace).
  • path: The JSON pointer to the target field (/spec/products).
  • value: The new array of product objects to be injected. In this example, it sets a DIA 100 Mbps service with a /29 IP suffix.

3. Response highlights

A successful PATCH returns the fully updated resource.

  • Timestamps: The metadata.dateUpdated is refreshed to reflect the patch time (e.g., 1770918180746).
  • Integrity: A new net.gtt.offer/checksum is generated in the annotations field. You must use this new checksum for any subsequent PUT or PATCH operations to avoid version conflicts.
  • Side Effects: Updating the product configuration may trigger backend recalculations. Notice in the sample response that templateSelection.maxBandwidthMbps has been updated to 100 to align with the new product speed.

4. Comparison: PUT vs. PATCH

FeaturePUTPATCH (JSON Patch)
PayloadFull resource object.Array of specific operations.
Use CaseOverwriting a resource or full-state sync.Precise updates to specific nested fields.
RiskCan accidentally nullify fields if not sent.High precision; only touches what is specified.

Sample request body

[
  {
    "op": "replace",
    "path": "/spec/products",
    "value": [
      {
        "productSpecification": {
          "externalId": "access",
          "productCategory": "connect"
        },
        "attributes": {
          "type": "dia",
          "speed": 100,
          "ipSuffix": "/29"
        }
      }
    ]
  }
]

Product specification documentation (JSON Patch)

This documentation covers the various configurations for the /spec/products array within the GTT Offer API. These payloads utilize the JSON Patch (RFC 6902) standard to replace existing product configurations with specific connectivity types, ranging from wireline Dedicated Internet Access (DIA) to wireless 5G solutions.

1. Wireline connectivity (DIA)

Used for standard Dedicated Internet Access over fiber or copper. These specifications require defined bandwidth speeds and IP allocation details.

FeatureDIA 100M ConfigurationDIA 500M Configuration
externalIdaccessaccess
Typediadia
Speed100 Mbps500 Mbps
IP Subnet/29/29

Business Logic: Upgrading speed via PATCH allows for rapid re-quoting of a site without re-entering geographic or site-specific metadata.

2. Wireless connectivity (5G solutions)

Wireless products are categorized by their Role (Primary vs. Backup) and their Mounting Environment (Indoor vs. Outdoor). Unlike DIA, wireless specifications include an outdoor boolean to determine the necessary hardware and installation type.

A. 5G primary access

Designed for sites where 5G is the main circuit. It typically includes a speed attribute.

  • Indoor Primary: Used for standard office environments where the 5G gateway is placed inside.
  • outdoor: falserole: primaryspeed: "100"
  • Outdoor Primary: Used for sites requiring an external antenna or enclosure to ensure signal integrity.
  • outdoor: truerole: primaryspeed: "100"

B. 5G backup access

Designed for failover redundancy. These configurations typically omit the speed attribute as they rely on “Best Effort” wireless delivery during primary circuit outages.

  • Indoor Backup: outdoor: falserole: backup
  • Outdoor Backup: outdoor: truerole: backup

3. Attribute dictionary

The following table defines the key fields within the attributes object for all product types:

AttributeTypeDescription
typeStringThe specific technology type (e.g., dia, 5G primary, 5G backup).
speedString/IntThe provisioned bandwidth. (Note: Wireline uses Integer; Wireless often uses String).
ipSuffixStringThe CIDR notation for the IP handoff (e.g., /29 for 5 usable IPs).
outdoorBooleantrue if outdoor hardware/mounting is required for signal optimization.
roleStringDefines the circuit hierarchy: primary or backup.

4. Implementation example (JSON patch)

To update an offer to an Outdoor 5G Primary configuration, use the following operation:

[
    {
        "op": "replace",
        "path": "/spec/products",
        "value": [
            {
                "productSpecification": {
                    "productCategory": "connect"
                },
                "attributes": {
                    "type": "5G primary",
                    "outdoor": true,
                    "speed": "100",
                    "role": "primary"
                }
            }
        ]
    }
]