AT&T DevEx

Self-Install

This document provides a step-by-step guide for clients to use the Omni APIs for the fiber provide order flow | Self Install, including example requests for each major step. All endpoints are available under the base URL:

https://partner.att.com/omni-svcs

Call Sequence

1

Service Qualification

Validate and qualify a service address to determine which services (e.g., Internet, VOIP) are available at the location. Returns a normalized address and eligibility info.

Endpoint: POST /v1/servicequalification

Request

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "channel": {
    "id": "IND",
    "name": "IND",
    "extensions": [
      {
        "name": "subChannel",
        "value": "bestbuy"
      },
      {
        "name": "subChannelGroup",
        "value": "National Retail"
      }
    ]
  },
  "geographicAddress": {
    "postcode": "91911",
    "city": "CHULA VISTA",
    "stateOrProvince": "CA",
    "addressCharacteristic": [
      {
        "name": "addressLine1",
        "valueType": "string",
        "value": "3802 EAST MAIN ST"
      }
    ]
  },
  "offers": [
    {
      "productOfferingTypeGroup": "BBOffers",
      "customerType": "CONSUMER"
    }
  ]
}

Response

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
  "addressValidation": {
    "validationResult": "success",
    "validGeographicAddress": {
      "id": "00000NG3XH"
    }
  },
  "serviceQualification": [
    {
      "queryServiceQualificationDate": "2025-10-09T20:47:12.05Z",
      "serviceQualificationItem": [
        {
          "category": {
            "name": "INTERNET",
            "displayName": "Internet"
          },
          "service": {
            "displayName": "AT&T Fiber",
            "serviceType": "FIBER",
            "serviceCharacteristic": [
              {
                "name": "QualificationResult",
                "valueType": "string",
                "value": "unqualified"
              }
            ]
          }
        }
      ]
    }
  ],
  "offers": {
  "BBOffers": [
    {
      "id": "ibbndl_prod12300337_prod8580387_rwd-40800001_rwd-32300005_prod8960401",
      "name": "AT&T Internet 1000",
      ...
    }
  ]
}

Key Output:

  • addressId (from validated/qualified address)
  • QualificationResult returns whether an address is qualified or unqualified
  • List of eligible services (e.g., Internet, VOIP)
  • Offers list if offers were queried along with servicequalification

Feeds Into:

  • Use addressId in offer search and cart creation.
2

Search for Offers

Retrieve available product offers (base plans and addons) for the qualified address and selected service. This step provides the productOfferingId needed for cart creation.

Endpoint: POST /v1/offers/search

Request

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  "channel": {
    "id": "IND",
    "name": "IND",
    "extensions": [
      {
        "name": "subChannelGroup",
        "value": "National Retail"
      },
      {
        "name": "subChannel",
        "value": "Best Buy"
      }
    ]
  },
  "productOfferingTypeGroup": "BBOffers",
  "customerType": "CONSUMER",
  "serviceAddressId": "00000NG3XH"
}

Response

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[
  {
    "id": "ibbndl_prod12300337_prod8580387_rwd-40800001_rwd-32300005_prod8960401",
    "name": "AT&T Internet 1000",
    "bundledProductOffering": [
      {
        "id": "prod12300337",
        "name": "AT&T Internet 1000",
        "productOfferingType": "BB_Plan",
        "bundledProductOfferingOption": [
          {
            "numberRelOfferDefault": 1,
            "productOfferingPrice": [
              {
                "price": {
                  "dutyFreeAmount": {
                    "value": 90
                  }
                },
                "priceAlteration": [
                  {
                    "name": "Discount",
                    "immediatePromotionId": "62900028",
                    "priceType": "RC",
                    "price": {
                      "dutyFreeAmount": {
                        "value": 10
                      }
                    }
                  }
                ],
                "taxIncluded": "Excluded"
              }
            ]
          }
        ]
      },
      {
        "id": "prod8580387",
        "name": "Includes unlimited internet data",
        "productOfferingType": "BB_UsageAllowance",
        ...
      },
      {
        "id": "rwd-40800001",
        "name": "Switch and we'll pay your cancellation fee in full.",
        "productOfferingType": "BB_Reward",
        ...
      }
    ],
    "immediatePromotion": [
      {
        "id": "62900028",
        "status": "add",
        "promotion": {
          "id": "wrlnpr-62900028",
          "name": "Price includes $10/mo. discount when you sign up for paperless billing and AutoPay with a bank account. Or $5/mo. with a debit card.",
        }
      }
    ],
    "productOfferingTotalPrice": [
      {
        "priceType": "RC",
        "finalPrice": {
          "dutyFreeAmount": {
            "value": 80
          }
        }
      }
    ],
    "bundledProductOfferingGroupOption": [
      {
        "groupOptionId": "ibbndl_install_grp_prod8960401",
        "bundledProductOffering": [
          {
            "id": "prod8960401",
            "name": "Easy self-setup kit",
            "productOfferingType": "BB_Installation"
          }
        ]
      }
    ]
  }
]

Key Output:

  • productOfferingId (for selected base offer and addons)

Feeds Into:

  • Use productOfferingId in cart creation (add to cart).
3

Create Cart

Create a new shopping cart and add selected product offerings to it. The cartId returned is used for all subsequent order steps.

Endpoint: POST /v1/cart/create

Request

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
  "channel": {
    "id": "IND",
    "name": "IND",
    "extensions": [
      { "name": "subChannel", "value": "bestbuy" },
      { "name": "subChannelGroup", "value": "National Retail" }
    ]
  },
  "items": [
    {
      "action": "add",
      "itemType": "BB_Offer",
      "offerId": "ibbndl_prod12120279_prod8580387_rwd-32300005_rwd-40800001_rwd-42900039_prod9040405",
      "productOrderItemId": "123",
      "quantity": 1,
      "product": {
        "isBundle": true,
        "place": [
          { "id": "{{placeId}}", "role": "SA", "name": "ServiceAddress" }
        ]
      },
      "billingAccount": {
        "characteristic": [
          { "name": "autopayIntent", "value": "true" },
          { "name": "presentationMediaIntent", "value": "email" }
        ]
      }
    }
  ],
  "relatedParty": [
    {
      "name": "RS and I Inc",
      "referredType": "dealerLocation",
      "id": "G5MGG",
      "role": "partner"
    },
    {
      "referredType": "customer",
      "role": "customer",
      "extensions": [
        { "name": "CustomerType", "value": "Consumer" },
        { "name": "CustomerSubType", "value": "Individual" }
      ]
    }
  ]
}

Response

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "id": "ac1a0de0-f266-11f0-9f46-f96180f90f75", // cartId
  "category": "BB_Offer",
  "orderDate": "2026-01-15T23:05:23.646Z",
  "lastUpdate": "2026-01-16T15:41:11.139Z",
  "orderPriceDate": "2026-01-16T15:41:08.762Z",
  "orderTotalPrice": [...],
  "productOrderItem": [...],
  "relatedParty": [...],
  "state": "inProgress",
  "immediatePromotion": [...],
  "validation": {
    "readyToCheckout": true
  }
}

Key Output:

  • cartId (unique identifier for the cart)

Feeds Into:

  • Use cartId in registration, credit check, checkout config, payment, and express submit APIs.
4

Register Customer

Register a new customer or update an existing one, associating them with the cart. This step ensures the order is linked to a valid individualId.

Endpoint: POST /v1/customer/registration

Request

1
2
3
4
5
6
7
8
9
{
  "emailAddress": "user@example.com",
  "emailAddressVerified": true,
  "givenName": "John",
  "familyName": "Doe",
  "phoneNumber": "1234567890",
  "phoneNumberVerified": true,
  "cartId": "24-xxx"
}

Key Output:

  • BillingAccountId (created)
  • cartId (passed through)

Feeds Into:

  • Use individualId for credit check and as a related party in cart updates.
5

Credit Check

Perform a real-time credit check for the customer associated with the cart. The result determines if the order can proceed or if additional steps (like debt payment) are required.

Endpoint: POST /v1/cart/{cartId}/credit

Request

1
2
3
4
5
6
7
8
9
10
11
{
  "userInfo": {
    "birthdate": "1959-01-01",
    "legalId": [
      {
        "identificationId": "666050459",
        "identificationType": "SocialSecurityNumber"
      }
    ]
  }
}

Response

1
2
3
4
5
6
{
  "unifiedCreditTransactionId": "",
  "casApplicationId": "",
  "unifiedPolicyTransactionId": "",
  "creditRisk": "LOW"
}

Key Output:

  • unifiedCreditTransactionId (for tracking)
  • Credit risk result (LOW/HIGH)

Feeds Into:

  • Use result to determine if additional steps (e.g., debt payment) are needed before proceeding to checkout and payment.
6

Get Checkout Configurations

Retrieve available fulfillment options, appointment dates, and terms for the order. This information is needed to finalize delivery and installation details.

Endpoint: POST /checkout-config-options

Request

1
2
3
4
{
  "cartId": "57d95fe0-caf4-11f0-aa1c-47d951a990cf",
  "fulfillmentAddressId": "0000194ZX9"
}

Response

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
  "fulfillmentOptions":  {
      "fulfillmentMethod": "DF",
      "signalStatus": "SELL",
      "availableQty": 1,
      "available": true,
      "dates": {
        "shipmentDates": {
          "dateFrom": "2026-01-19",
          "dateTo": "2026-01-23"
        },
        "deliveryDates": {
          "dateFrom": "2026-01-19",
          "dateTo": "2026-01-23"
        }
      },
      "productOffering": {
        "id": "bb-std-delivery-01",
        "name": "Standard Shipping",
        "productOfferingType": "Delivery_Method"
      },
      "productOrderItemRelationship": [
        {
          "id": "8d7aee6e-2387-448b-b69e-7461b5699b39",
          "relationshipType": "Delivering"
        }
      ],
      "finalPrice": {
        "dutyFreeAmount": {
          "unit": "USD",
          "value": 0.0
        }
      }
    }
  ],
  "appointmentDates": {
    "realTime": {},
    "preferred": {}
  },
  "terms": {
      "name": "CSA",
      "extensions": [
        {
          "name": "title",
          "value": "AT&T Consumer Service Agreement"
        },
        ...
      ]
    }
  },
  "validation": {
    "status": "incomplete",
    "readyToCheckout": true,
    "readyToSubmit": false,
    "validationMessage": [...],
    "configuration": [
      {
        "status": "incomplete",
        "type": "FulfillmentOptions",
        "required": true
      },
      {
        "status": "incomplete",
        "type": "Terms",
        "required": true
      },
      {
        "status": "complete",
        "type": "payment",
        "subtype": "DWNPAY",
        "required": false
      },
      {
        "status": "incomplete",
        "type": "Installation",
        "required": false
      },
      ...
    ]
  }
}

Key Output:

  • Fulfillment options, appointment dates, terms

Feeds Into:

  • Use selected fulfillment and appointment details in express submit.
7

Save Payment Method

Save and validate the customer's payment method for the order. The resulting paymentProfileId is referenced in the final order submission.

Endpoint: POST /payment-methods Request

Request

1
2
3
4
5
6
7
8
9
10
{
  "paymentMethods": [
    {
      "id": "pm-123",
      "amount": 100.00,
      "storeTermsConditionConsent": true,
      "cartId": "24-xxx"
    }
  ]
}

Response

1
2
3
4
{
  "status": "success",
  "paymentMethodId": "RTB,DF,1234"
}

Key Output:

  • paymentProfileId (for saved payment method)

Feeds Into:

  • Use paymentProfileId in express submit for payment reference.
8

Express Order Submit

Submit the fully-formed order, including all customer, cart, payment, fulfillment, and appointment details. This step completes the order process and returns an acknowledgement.

Endpoint: POST /v1/cart/{cartId}/express-submit

Request

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
  "paymentMethods": [
    {
      "paymentProfileId": "123456789",
      "_paymentMethodRef": "paymentMethodRef2"
    }
  ],
  "enrollment": {
    "paperLess": "enrolled",
    "autoPay": "enrolled",
    "paymentMethodRef": "paymentMethodRef1"
  },
  "terms": {
    "acceptedKeys": ["EC", "ABP"]
  },
  "installationAppointment": {
    "installationDayContact": {
      "givenName": "Jon",
      "familyName": "Test45",
      "contactMedium": [
        {
          "mediumType": "telephone",
          "characteristic": {
            "contactType": "home",
            "phoneNumber": "3243432442"
          },
          "preferred": true
        }
      ]
    },
    "selected": {
      "id": "S3128670072-2023-05-09-8-10",
      "@type": "realTime",
      "note": [
        { "text": "test note" }
      ]
    }
  }
}

Response

1
2
3
4
5
6
7
{
  "id": "177a1210-f019-11f0-a4f6-dd46c526bb51",
  "customerOrderId": "25-76826709685300",
  "state": "Submitted",
  "submissionDate": "2024-10-05T14:48:00.000Z",
  "orderSummaryAccessToken": "e2456215530fa8f6ddd1254a75482d08976559191"
}

Key Inputs Needed:

  • cartId (from cart creation)
  • paymentProfileId (from payment method save)
  • Fulfillment and appointment details (from checkout config)
  • individualId (from registration)
  • Terms acceptance keys

Feeds Into:

  • Submits the order and returns order acknowledgement and status.
  • If there are any failures then validaiton messages will be returned in productOrder node.