Quotation process

Swagger-UI: line-quotation-v1 | OpenAPI file: line-quotation-v1.yml

When a personal line quotation is required (the package indicates that with the lineQuotationRequired parameter), the ordering process works different as a quotation first needs to be requested. This can take a couple of seconds and will show several options based on the supplied location.

Table of contents

Requesting

A quotation can be requested for a location by providing a couple of parameters, which all influence the resulting offer.

  • Line speed
  • Service level
  • IP requirements
  • Contract period

Depending on the available vendors it can take a couple of seconds before all quotations are ready. This is indicated by the state field in the response: when it returns with the value PENDING not all quotations have been finished and the information endpoint should be polled until the state field changes to READY. See the quotation states for all possible states.

While usually there will be multiple offers, this cannot be guaranteed.

Example quotation request
{
    "locations": [
        {
            "postcode": "1234AB",
            "houseNum": 1
        }
    ],
    "contractPeriod": 60,
    "evcs": [
        {
            "speed": 1000,
            "quality": "Basic",
            "prefixSizeIpv4": [
                30
            ],
            "prefixSizeIpv6": 48
        }
    ]
}
Example quotation response
{
    "manualQuotationRequired": false,
    "createOrder": false,
    "validFrom": "2024-07-26T16:12:29+02:00",
    "validTo": "2024-10-25T16:12:29+02:00",
    "locations": [
        {
            "postcode": "1234AB",
            "houseNum": 1,
            "houseNumAdd": null,
            "role": "UNI Site",
            "sublocations": []
        }
    ],
    "relatedParties": [],
    "results": [
        {
            "package": "VENDOR",
            "loyaltyCredits": 10,
            "quotationId": "Q240726420/1",
            "manualQuotationRequired": false,
            "totalTariff": {
                "NRC": "12.34",
                "MRC": "12.34"
            },
            "vendor": "Vendor",
            "networkSupplier": "Supplier",
            "items": [
                {
                    "name": "Fiber access cost",
                    "contractPeriod": 60,
                    "tariff": {
                        "NRC": "12.34",
                        "MRC": "12.34"
                    },
                    "meta": {
                        "productType": "connection"
                    }
                },
                {
                    "name": "PremiumEVC 1000 Mbit/s",
                    "contractPeriod": 60,
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "productType": "evc",
                        "speed": 1000
                    }
                },
                {
                    "name": "Gold SLA",
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "productType": "sla"
                    }
                },
                {
                    "name": "IP-adressen: 4x",
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "quantity": 4,
                        "productType": "ipaddress"
                    }
                }
            ]
        },
        {
            "package": "VENDOR",
            "loyaltyCredits": 5,
            "quotationId": "Q240726420/4",
            "manualQuotationRequired": false,
            "totalTariff": {
                "NRC": "12.34",
                "MRC": "12.34"
            },
            "vendor": "Vendor",
            "networkSupplier": "Supplier",
            "items": [
                {
                    "name": "Fiber access cost",
                    "contractPeriod": 60,
                    "tariff": {
                        "NRC": "12.34",
                        "MRC": "12.34"
                    },
                    "meta": {
                        "productType": "connection"
                    }
                },
                {
                    "name": "PremiumEVC 1000 Mbit/s",
                    "contractPeriod": 60,
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "productType": "evc",
                        "speed": 1000
                    }
                },
                {
                    "name": "Gold SLA",
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "productType": "sla"
                    }
                },
                {
                    "name": "IP-adressen: 4x",
                    "tariff": {
                        "NRC": "0.00",
                        "MRC": "0.00"
                    },
                    "meta": {
                        "quantity": 4,
                        "productType": "ipaddress"
                    }
                }
            ]
        }
    ],
    "lastModified": "2024-07-26T16:12:29+02:00",
    "renewable": true,
    "id": "c2243461-b444-41aa-8bb5-5574b3b94678",
    "state": "READY",
    "created": "2024-07-26T16:12:22+02:00"
}

Note that a quotation has a limited validity and should be accepted within the validity period for the pricing to remain the same. All requested quotations will be stored with the customer and can always be retrieved later using the information API. The information from the quotation is required to accept one of the returned options.

Accepting

When accepting a quotation some additional details are required, such as contact information and extended location details. Use the quotationId from the quotation request result to accept a fitting offer.

It is required to submit a value for all related party roles. See the available roles for more details on their meaning.

Example accept request
{
    "relatedParties": [
        {
            "companyName": "<redacted>",
            "email": "<redacted>",
            "firstName": "<redacted>",
            "lastName": "<redacted>",
            "phoneNumber": "<redacted>",
            "roles": [
                "BuyerImplementationContact",
                "UNISiteContact"
            ]
        },
        {
            "companyName": "<redacted>",
            "email": "<redacted>",
            "firstName": "<redacted>",
            "lastName": "<redacted>",
            "phoneNumber": "<redacted>",
            "roles": [
                "UNISiteContact"
            ]
        }
    ],
    "sublocations": [
        {
            "buildingType": "SINGLE_COMPANY"
        }
    ],
    "quotationId": "Q240726420/1"
}
Example accept response ```json { "orderId": "74c6f7b6-f765-475d-9099-0edf870d5f29" } ```

Renew an offer

It is possible to request a renewal using the exact same parameters. This can be used when an offer has expired and can no longer be accepted, but also on still open offers to get updated pricing.

The resulting offer and pricing can have changed since the original offer.