openapi: 3.0.0
info:
title: WBA APIs
version: "v1"
description: |
KPN Wholesale Broadband Access (WBA) is a KPN Wholesale product offering copper and fiber access to wholesale customers. WBA has the following APIs available:
* Functional Product Information: The Functional Product Information (FPI) service is used to provide WBA access information for new and existing WBA connections. FPI provides carrier vendor information and WBA technology availability with actual up and down bitrates with a reliability per technology type.
* Carrier Information Product: information about the infrastructure and active services on the physical connection of a customer address.
### Key highlights
- **Sandbox:** Full-fledged capabilities.
- **Security:** HTTPS, OAuth, Rate limit.
- **Versioning:** Supports version-less API, version tight. If no version
is provided (in the header) it defaults to latest version.
- **Response headers:** See Schemas > ResponseHeaders or [Schemas > ResponseHeaders](https://app.swaggerhub.com/apis/kpn/wholesale-wba-kpn/v1#/ResponseHeaders) (opens in another window).
## [Source view](https://app.swaggerhub.com/apis/kpn/wholesale-wba-kpn/)<br/>
## [Documentation view](https://app.swaggerhub.com/apis-docs/kpn/wholesale-wba-kpn/)
---
## [KPN API Store](https://developer.kpn.com/)<br/>
[Getting Started](https://developer.kpn.com/getting-started)
---
contact:
name: API Support
email: api_developer@kpn.com
url: 'https://developer.kpn.com/support'
termsOfService: 'https://developer.kpn.com/legal'
tags:
- name: default
description: ''
servers:
- url: 'https://api-prd.kpn.com/wba/adresses'
externalDocs:
description: KPN Wholesale Broadband Access
url: https://www.kpn-wholesale.com/product-information/broadband/wba.htm
paths:
'/functional-products':
get:
summary: Functional Product Information
tags: [default]
description: |
This API is in line with WBA FPI v24.
The Functional Product Information (FPI) service is used to provide WBA access information for new and existing WBA connections. FPI provides carrier vendor information and WBA technology availability with actual up and down bitrates with a reliability per technology type. The reliability is defined as the probability that the bitrate can be achieved and is only applicable for WBA connections on copper lines. The provided reliability in FPI is within 50% to 100%. The reliability for fiber WBA connections is always 100%. It is allowed to request different reliability per copper technology type.
An address is mandatory in the FPI request.
For an existing WBA broadband connection, the WSO specifies the xdf-access-serviceid, provided by KPN when the connection was delivered. The xdf-access-serviceid is the unique identifier for the current access connection. The bitrates up/down are determined by measurement on the broadband connection of the xdf-access-serviceid.
An address can have one or more carrier vendors. FPI provides information for the following carrier vendors:
- MDF: WBA services on copper lines from central office (MDF)
- SDF: WBA services on copper lines from street cabinet (SDF)
- REGG: WBA Fiber to the Home (FttH) services from Reggefiber
- KPNFO: WBA Fiber to the Office (FttO) services form KPNFO
The API request should be of the form `/wba/addresses/{requested-address}/functional-products?{query-parameters}`.
Example with URL encoding:
`/wba/addresses/requested-zipcode%3D1234AB%2Crequested-housenumber%3D12%2Crequested-housenrext%3DA/functional-products?connectionpointnumber=001&technologyreliability=%5B%7B%22technology-type%22%3A%22ADSL2+_ISDN%22%2C%22reliability%22%3A%2280%22%7D%2C%7B%22technology-type%22%3A%22GPON%22%7D%5D`
parameters:
- $ref: '#/components/parameters/originator'
- $ref: '#/components/parameters/requested-address'
- $ref: '#/components/parameters/connectionpointnumber'
- $ref: '#/components/parameters/fiber-terminationpoint-id'
- $ref: '#/components/parameters/xdf-access-serviceid'
- $ref: '#/components/parameters/technologyreliability'
responses:
'200':
description: WBA Functional Product Information response
content:
application/json:
schema:
type: object
properties:
enduserinfo:
$ref: '#/components/schemas/enduserinfo-fpi-schema'
actualuserinfo:
$ref: '#/components/schemas/actualuserinfo-schema'
carriervendor:
$ref: '#/components/schemas/carriervendor-fpi-schema'
technologyavailability:
$ref: '#/components/schemas/technologyavailability-schema'
errorinfo:
type: object
properties:
errorcode:
$ref: '#/components/schemas/errorcode-schema'
commentcode:
$ref: '#/components/schemas/commentcode-schema'
400:
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/error"
401:
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/error"
403:
description: Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/error"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
429:
description: too many requests
content:
application/json:
schema:
$ref: "#/components/schemas/error"
500:
description: server error
content:
application/json:
schema:
$ref: "#/components/schemas/error"
'/carriers':
get:
summary: Carrier Information Product
description: |
This API is in line with WBA CIP v44.
The Carrier Information Product (CIP) service provides information about the infrastructure and active services on the physical connection of a customer address. For physical carrier Copper, the ISRA with current and future connection details of all copperlines are shown. For physical carrier Fiber, all fiber-terminationpoints are shown including current and future connection details. To support WSO’s clean order process, a list of house number extensions per carrier-vendor will be provided in case of a wrong or missing housenumber extension and there are no other identifiers (i.e. phone number or xdf-access-service-id) specified for the connection.
The Carrier Information service can be used for several scenarios:
1. Scenario for an address connected to physical carrier Copper. User creates a CIP request for physical carrier Copper and the connection details for the copper connection will be shown
2. Scenario for an address connected to physical carrier Fiber. User creates a CIP request for physical carrier Fiber and the connection details for the fiber connection will be shown
3. Scenario for an address connected to both Copper and Fiber. User creates a CIP request without specifying physical carrier (empty field) and the connection details for the copper and fiber connection will be shown.
When the user requests information for a Copper carrier, an optional phonenumber, xdf-service-id or a connectionpointnumber can be provided. The Carrier Info Product provides current and future type of services on all copper lines of the ISRA-connectionpoint. Note that there may be more than one ISRA-connectionpoints on the customer’s address. In case one or two ISRA-connectionpoints exists, all connection details of those ISRA’s will be shown. If more than two ISRA-connectionpoints exist, the list of ISRA’s is shown without connection details and errorcode 642 will be returned When the user requests information for a Fiber carrier, an optional fiber-terminationpoint-id can be provided. The Carrier Info Product provides current and future type of services on the specified fiber-terminationpoint-id. If no fiber-terminationpoint was specified, the Carrier Info Service provides current and future type of services on all fiber-terminationpoints.
The API request should be of the form `/wba/addresses/{requested-address}/carriers?{query-parameters}`.
Example without URL encoding:
`/wba/addresses/requested-zipcode=1234AB,requested-housenumber=12,requested-housenrext=A/carriers?connectionpointnumber=001`
Example with URL encoding:
`/wba/addresses/requested-zipcode%3D1234AB%2Crequested-housenumber%3D12%2Crequested-housenrext%3DA/carriers?connectionpointnumber=001`
tags: [default]
responses:
'200':
description: WBA Carrier Information Product response
content:
application/json:
schema:
type: object
properties:
enduserinfo:
$ref: '#/components/schemas/enduserinfo-cip-schema'
planneduserinfo:
$ref: '#/components/schemas/planneduserinfo-schema'
carriervendor:
$ref: '#/components/schemas/carriervendor-cip-schema'
copperinfo:
$ref: '#/components/schemas/copperinfo-schema'
fiberinfo:
$ref: '#/components/schemas/fiberinfo-schema'
errorinfo:
type: object
properties:
errorcode:
$ref: '#/components/schemas/errorcode-schema'
commentcode:
$ref: '#/components/schemas/commentcode-schema'
note:
$ref: '#/components/schemas/note-schema'
400:
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/error"
401:
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/error"
403:
description: Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/error"
404:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
429:
description: too many requests
content:
application/json:
schema:
$ref: "#/components/schemas/error"
500:
description: server error
content:
application/json:
schema:
$ref: "#/components/schemas/error"
parameters:
- $ref: '#/components/parameters/originator'
- $ref: '#/components/parameters/requested-address'
- $ref: '#/components/parameters/physical-carrier'
- $ref: '#/components/parameters/requested-phonenumber'
- $ref: '#/components/parameters/xdf-access-serviceid'
- $ref: '#/components/parameters/connectionpointnumber'
- $ref: '#/components/parameters/fiber-terminationpoint-id'
components:
parameters:
originator:
in: header
name: X-Originator
required: true
schema:
$ref: '#/components/schemas/originator-schema'
requested-address:
schema:
$ref: '#/components/schemas/requested-address-schema'
name: requested-address
in: path
style: simple
explode: true
required: true
description: |
The address for which to retrieve the functional product information or carrier information. The path parameter request-address is a serialised object and should be of form requested-zipcode={requested-zipcode}},requested-housenumber={requested-housenumber},requested-housenrext={requested-housenrext} with requested-housenrext as optional property. Examples
- With URL encoding: requested-zipcode%3D1234AB%2Crequested-housenumber%3D12%2Crequested-housenrext%3DA
/wba/addresses/requested-zipcode%3D1234AB%2Crequested-housenumber%3D12%2Crequested-housenrext%3DA/functional-products
/wba/addresses/requested-zipcode%3D1234AB%2Crequested-housenumber%3D12%2Crequested-housenrext%3DA/carrier
connectionpointnumber:
in: query
name: connectionpointnumber
description: 'The connectionpointnumber is an identification for the ISRA on the end-user’s address (e.g. 001, B, MTK, METERKAS). In case more connectionpoints exists on an address, the connectionpointnumber is required to retrieve connection details. If no connectionpointnumber was specified, the Carrier Information service will provide connection details for one or two ISRAs. If more than two ISRA’s are connected at the customers address, the Carrier Information service provides the list of available ISRA’s on the end-user address. This field is optional.'
schema:
$ref: '#/components/schemas/connectionpointnumber-schema'
fiber-terminationpoint-id:
in: query
name: fiber-terminationpoint-id
description: 'This is an optional field which specifies the fiber terminationpoint-id at the end-user’s address. In case of FTTH from carrier vendor Reggefiber (REGG), the fiber-terminationpoint-id is the name of the room on the address where the fiber is terminated. If a fiber-terminationpoint-id is specified, the Carrier Information Product will provide the current and future (planned) connection details for the given fiber-terminationpoint-id. If no fiber-terminationpoint-id is specified, the carrier-info will provide current and future connections of all fiber-terminationpoints on the end-user address.'
schema:
$ref: '#/components/schemas/fiber-terminationpoint-id-schema'
physical-carrier:
in: query
name: physical-carrier
description: 'Physical carrier of the connection between the end-user’s termination point (ISRA) and the remote access point (MDF/SDF/ODF). Valid input values are “Copper” or “Fiber”. This field is optional.'
schema:
$ref: '#/components/schemas/physical-carrier-schema'
requested-phonenumber:
in: query
name: requested-phonenumber
description: 'This is the phonenumber that will be used as reference for the copper-line and the ISRA. If a phonenumber is specified, address corrections can be done on zipcode, house number and house number extension. This field is optional.'
schema:
$ref: '#/components/schemas/phonenumber-schema'
technologyreliability:
in: query
name: technologyreliability
description: |
The optional technologyreliability query parameter should be provided as JSON array of objects. FPI uses a list of default technology types and reliability when these parameters are not used. A specified technology type and reliability in FPI overrules the default setting. ADSL_ISDN, SDSL and ADSL2+_ISDN are not shown in the output, unless explicitly specified in the request.
Examples:
[
{
"technology-type":"ADSL2+_ISDN",
"reliability":"80"
}
]
[
{
"technology-type":"GPON",
}
]
[
{
"technology-type":"ADSL2+_ISDN",
"reliability":"80"
},
{
"technology-type":"ADSL2+_POTS",
"reliability":"80"
}
]
[
{
"technology-type":"ADSL2+_ISDN",
"reliability":"80"
},
{
"technology-type":"GPON"
}
]
Note to supply this as query parameter, the special characeters must be url encoded. i.e. technologyreliability=[{"technology-type":"ADSL2+_ISDN","reliability":"80"},{"technology-type":"GPON"}] becomes technologyreliability=%5B%7B%22technology-type%22%3A%22ADSL2+_ISDN%22%2C%22reliability%22%3A%2280%22%7D%2C%7B%22technology-type%22%3A%22GPON%22%7D%5D
content:
application/json:
schema:
$ref: '#/components/schemas/technologyreliability-schema'
xdf-access-serviceid:
in: query
name: xdf-access-serviceid
description: 'The xdf-access-service-id is a 1-to-1 relationship between the address and the active copperpair. The xdf-access-service-id is used to provide most accurate bitrate and available technology type information for an existing WBA connection. If an xdf-access-serviceid is specified, address corrections can be done on zipcode, house number and house number extension. This field is optional.'
schema:
$ref: '#/components/schemas/xdf-access-serviceid-schema'
schemas:
ResponseHeaders:
properties:
sunset:
description: This field will be populated with the deprecation details. By default the value is `n/a`.
title: sunset
type: string
api-version:
description: Indicates the API version you have used.
title: api-version
type: string
quota-interval:
description: Used to specify an integer (for example, 1, 2, 5, 60, and so on) that will be paired with the `quota-time-unit` you specify (minute, hour, day, week, or month) to determine a time period during which the quota use is calculated. For example, an interval of 24 with a `quota-time-unit` of `hour` means that the quota will be calculated over the course of 24 hours.
title: quota-interval
type: integer
quota-limit:
description: Number of API calls an user can make within a given time period. When quota is exceeded, the number of requests will be throttled or fail completely.
title: quota-limit
type: string
quota-reset-UTC:
description: All quota times are set to the Coordinated Universal Time (UTC) time zone.
title: quota-reset-UTC
type: string
quota-time-unit:
description: Used to specify the unit of time applicable to the quota. For example, an interval of 24 with a quota-time-unit of hour means that the quota will be calculated over the course of 24 hours.
title: quota-time-unit
type: string
quota-used:
description: Number of API requests made within the quota.
title: quota-used
type: string
access-control-allow-credentials:
description: Tells browsers whether to expose the response to frontend JavaScript when the request's credentials mode (`Request.credentials`) is `include`. If that is the case, browsers will only expose the response to frontend JavaScript if the `access-control-allow-credentials` value is `true`.
title: access-control-allow-credentials
type: boolean
access-control-allow-origin:
description: Indicates whether the response can be shared with requesting code from the given origin.
title: access-control-allow-origin
type: string
access-control-allow-headers:
description: Used in response to a pre-flight request, which includes the `access-control-request-headers` to indicate which HTTP headers can be used during the actual request.
title: access-control-allow-headers
type: string
access-control-max-age:
description: Indicates how long the results of a pre-flight request (the information contained in the `access-control-allow-methods` and `access-control-allow-headers` headers) can be cached.
title: access-control-max-age
type: string
access-control-allow-methods:
description: Indicates which HTTP methods are allowed on a particular endpoint for cross-origin requests. For example, `GET`, `PUT`, `POST`, `DELETE`.
title: access-control-allow-methods
type: string
content-length:
description: Indicates the size of the entity-body, in bytes, sent to the recipient.
title: content-length
type: string
content-type:
description: Indicates the resource's media type. For example, `application/json`.
title: content-type
type: string
error:
type: object
properties:
transactionId:
type: string
description: Transaction id of the the request
title: Transaction ID
status:
type: string
description: Status
title: Status
name:
type: string
description: Error name
title: Error name
message:
type: string
description: Error message
title: Error message
info:
type: string
description: Additional information about error
title: Info
access-area-id-schema:
type: string
maxLength: 8
description: An Access Area consists of a set of locations with DSLAMs connected to the Ethernet Transport Network.
example: AA/12345
actualuserinfo-schema:
type: object
description: This object is copied from the user provided address (requested address). This container is not filled when an error is returned.
properties:
zipcode:
$ref: '#/components/schemas/zipcode-schema'
housenumber:
$ref: '#/components/schemas/housenumber-schema'
housenrext:
$ref: '#/components/schemas/housenrext-schema'
planneduserinfo-schema:
type: object
description: The “planned” user-info is the customer address from installed base. Zipcode and housenumber may be corrected in case a phonenumber or xdf-access-serviceid was specified in the request.
properties:
zipcode:
$ref: '#/components/schemas/zipcode-schema'
housenumber:
$ref: '#/components/schemas/housenumber-schema'
housenrext:
$ref: '#/components/schemas/housenrext-schema'
street:
$ref: '#/components/schemas/street-schema'
city:
$ref: '#/components/schemas/city-schema'
areapop-schema:
type: string
maxLength: 15
description: This field is filled with the AreaPoP (PoP location of the carrier vendor Fiber) connected to the customers address.
asw-schema:
type: string
maxLength: 2
description: 'Access Stability Value (ASW) is a broadband performance indicator from 1 (‘bad line’) to 10 (‘excellent line’). ASW is applicable for xDSL technology types on copper carriers except for technology type SDSL. ASW is not applicable for Fiber technology types FTTH and FTTO. ASW is determined by the actual speed measured on the DSL modem, the predicted speed for the same technology based on length and the line stability. ASW is determined on a weekly basis for active connections. An ASW value can be empty if one of the variables (actual speed, predicted speed, line stability) is not available.'
example: 8
availability-schema:
type: string
maxLength: 50
description: |
This field indicates the availability per technology type. A technology type can be Open (O), Planned (P), Closed (C) or Temporary Closed (TC). A technology type can be set to TC in case port-capacity is not available in the Distribution Point.''
example: O
carrier-status-schema:
type: string
description: |
In case of a full match, the carrier status for each carrier-vendor will be shown. For carrier-vendor MDF/SDF, carrier-status will be Open or Planned (e.g. High-Rise building, or another reason why copper status is planned). If Copper is not feasible on this address, carrier-status is set to Closed. For carrier-vendor REGG or KPNFO, carrier-status will be returned based on the nl-type. If Fiber is not available on this address, carrier-status is set to Closed. In case of a fiber NL-type 9, carrier status is set to Planned. In case of a partial address match on Copper, no carrier-status can be returned. In case of a partial address match on Fiber, the carrier-status will be selected.
example: O
bandwidth-up-schema:
type: string
maxLength: 50
description: 'This field provides the expected actual up bitrate in kbps, i.e. the actual bitrate as defined in the corresponding technology standard for an xDSL modem or a fiber NT (see WBA Annex 2).'
example: 20139
bandwidth-down-schema:
type: string
maxLength: 50
description: 'This field provides the expected actual down bitrate in kbps, i.e. the actual bitrate as defined in the corresponding technology standard for an xDSL modem or a fiber NT (see WBA Annex 2).'
example: 71968
bonding-allowed-schema:
type: string
pattern: '(0|1|2|3)?'
maxLength: 1
example: 2
description: |
Bonding allowed information is mainly based on the quality of the copper cable and must not be confused with free available copper pairs. Refer to the table below with the values for the field bonding-allowed.
0: No pair bonding. Bonding is not available and will not become available.
1: Pair bonding upgrade not yet finished. Bonding not available yet. Check on quality of additional connections needed for bonding is not yet finished.
2: Pair bonding upgrade finished. Bonding is available. Quality of additional connections for bonding is checked
3: Temporary not available. Bonding temporary not available.
cable-length-schema:
type: string
maxLength: 12
description: 'Length of the copper cable connection (in meters) which can be used to determine NLS-type 3 category. In case this length <25m and no free copper pairs are available, a new line can be requested as NLS-type 3. In case this length is >=25m and no free copper pairs are available, WSO needs to request a quotation for installation of a new NLS-type 3 line via infraportal https://www.vwtelecom.com/cit-team WSO can submit a WBA order on NLS-type 1, when copperpair on ISRA is delivered.'
example: 55
carriervendor-fpi-schema:
type: array
items:
type: object
description: 'The carriervendor object has carrier vendor information (MDF, SDF, REGG or KPNFO) for the requested address.'
properties:
carrier-vendor-id:
$ref: '#/components/schemas/carrier-vendor-id-schema'
carrier-status:
$ref: '#/components/schemas/carrier-status-schema'
asw:
$ref: '#/components/schemas/asw-schema'
ftu-type:
$ref: '#/components/schemas/ftu-type-schema'
nl-type:
$ref: '#/components/schemas/nl-type-schema'
plan-date:
$ref: '#/components/schemas/plan-date-schema'
has-date:
$ref: '#/components/schemas/has-date-schema'
san-only:
$ref: '#/components/schemas/san-only-schema'
commentcode:
$ref: '#/components/schemas/commentcode-schema'
addresslist:
type: array
items:
type: object
description: |
The addresslist optional object is used in case of a partial address match. All known addresses (list of house number extension) for the carrier-vendor (MDF, SDF, REGG, KPNFO) will be provided. In case of a full match and multiple copper or fiber termination points exists, FPI will return the list of known Copper ISRA connectionpoint (only connectionpoint number) or fiber-termination point on the requested address.
properties:
zipcode:
$ref: '#/components/schemas/zipcode-schema'
housenumber:
$ref: '#/components/schemas/housenumber-schema'
housenrext:
$ref: '#/components/schemas/housenrext-schema'
isra-specs:
$ref: '#/components/schemas/isra-specs-schema'
fiber-terminationpoint-id:
$ref: '#/components/schemas/fiber-terminationpoint-id-schema'
carriervendor-cip-schema:
type: array
items:
type: object
description: 'The optional carriervendor object is used when the requested housenumber-extension does not exists and there is no other identifier (phonenumber or xdf-access-serviceid) in the request to identify the connection. All known addresses per carrier-vendor / physical-carrier will be provided including carrier-status (Open, Closed, Planned) and planned-nl-type for fiber. Errorcode 251 is returned in case requested zipcode and housenumber exists, but the requested housenumber extension is missing or incorrect. The list of known housenumber extensions on the requested addresses is provided for each carrier-vendor (MDF, SDF, REGG, non-network). The WSO can choose a valid housenumber extension from the list. Errorcode 202 will be returned in case the requested zipcode and housenumber is unknown.'
properties:
carrier-vendor-id:
$ref: '#/components/schemas/carrier-vendor-id-schema'
physical-carrier:
$ref: '#/components/schemas/physical-carrier-schema'
address:
type: array
items:
type: object
description: |
This is the list of the known zipcode, house number, house number extension, carrier-status and planned-nl-type per carrier-vendor (REGG, KPNFO, MDF or non-network). Note that in CIPv44, housenrext has a max of 5 positions.
properties:
zipcode:
$ref: '#/components/schemas/zipcode-schema'
housenumber:
$ref: '#/components/schemas/housenumber-schema'
housenrext:
$ref: '#/components/schemas/housenrext-schema'
carrier-status:
$ref: '#/components/schemas/carrier-status-schema'
planned-nl-type:
$ref: '#/components/schemas/nl-type-schema'
carrier-vendor-id-schema:
type: string
maxLength: 50
description: 'The carrier-vendor is the provider of the WBA physical carrier between DSLAM port and customer location, i.e.: - Copper carrier: MDF, SDF - Fiber carrier: REGG, KPNFO. Non-network will be returned for an existing address where no infrastructure (fiber or copper) is found in the installed base.'
example: REGG
cgb-name-schema:
type: string
maxLength: 16
example: Asd-C
description: This is the MDF-location where the end-user address is connected to.
city-schema:
type: string
maxLength: 24
example: Den Haag
commentcode-schema:
type: string
maxLength: 80
description: |
Commentcodes are never blocking but meant to inform the WSO about certain situations.
Following commentcodes are defined for Carrier Info requests:
- The Requested phonenumber and numeric part of the zipcode is known, the alpha- part is not valid. KPN has provided the correct zipcode.
- Address used in input is found. Planneduserinfo container has the technical address where the physical carrier (Copper/ISRA of Fiber termination-point) is delivered in de building
- Numeric part zipcode valid and alphanumeric part zipcode invalid MDF Service ID is correct
- Copper cannot be delivered, commentcode provides reason.
- Fiber cannot be delivered, commentcode provides reason.
- Advice to order with Test & Label
- Address is complex address
Following commentcodes are applicable for the technology availability. In some cases, it is necessary to (temporarily) limit the availability of a specific technology type, e.g. when EoF is not available for new connections (commentcode 9107) or when a technology type is closed for new connec
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kpn/refs/heads/main/openapi/kpn-wholesale-wba-openapi.yml