openapi: 3.0.0 info: version: 1.0.0 title: High-Level Design FTTx description: | The High-Level Design FTTx API supports Fiber to the Home (FTTH) engineering jobs. It allows you to calculate the required work and cost for Fiber rollout in a provided region. Run the endpoints in this order: 1. **POST /startJobS3** to retrieve a signed URL for Amazon S3 bucket. Send this URL using the following endpoint. 2. **PUT /s3url_uploads/{jsonFileNameAndExtension}** to upload the job. 3. **GET /jobStatus/{jobId}** to retrieve the status of the job. 4. **GET / jobResultS3/{jobId}** to retrieve a signed URL for the Amazon Simple Storage Service (Amazon S3) bucket. Send this URL using the following endpoint. 5. **GET /Output/{jsonFileNameAndExtension}** to retrieve the results of the engineering job. ### Key highlights - **Security:** HTTPS, OAuth, Rate limit - **Versioning:** Supports version-less API, version tight. If no version is provided (in header) it defaults to latest version. [Source view](https://app.swaggerhub.com/apis/kpn/high-level_design_ftth)
[Documentation view](https://app.swaggerhub.com/apis-docs/kpn/high-level_design_ftth) --- [KPN Developer](https://developer.kpn.com/)
[Getting Started](https://developer.kpn.com/getting-started) servers: - url: "https://api-prd.kpn.com/network/kpn/ftth-engineering/" variables: {} externalDocs: description: HTTP response headers url: https://developer.kpn.com/documentation-response-headers paths: /startJobS3: post: tags: - Start engineering job summary: Request a signed URL to start an FTTx engineering job. description: >- Submits a new engineering job identifier. The response is a signed URL for the Amazon Simple Storage Service (Amazon S3) bucket. The input data for the engineering job needs to be uploaded to the received the signed URL location. See **/s3url_uploads** endpoint. parameters: - in: header name: jsonFileName required: true schema: $ref: '#/components/schemas/jsonFileNameSchema' description: The **jobId** of the engineering job that you want to run. This will be used as identifier (and filename) for the Amazon Simple Storage Service (Amazon S3) bucket where you need to submit the input data for the engineering job. responses: 200: description: The result of the startJobS3 is a signed URL for the Amazon Simple Storage Service (Amazon S3) bucket. The input data for the engineering job needs to be uploaded to the received signed URL location. content: application/json: schema: $ref: '#/components/schemas/signedInputUrl' 400: $ref: '#/components/responses/bad_request' 401: $ref: '#/components/responses/unauthorized' 403: $ref: '#/components/responses/forbidden' 404: $ref: '#/components/responses/not_found' 429: $ref: '#/components/responses/too_many' 500: $ref: '#/components/responses/server_error' 502: $ref: '#/components/responses/gateway_error' 503: $ref: '#/components/responses/service_unavailable' /s3url_uploads/{jsonFileNameAndExtension}: put: tags: - Start engineering job summary: Submit the input for the engineering job. description: >- Uploads the data of the new engineering job for calculation. Use the signed URL received from **/startJobS3** for this. In the request body you need to specify an area for engineering. When the input has been submitted, this is detected and the calculation will start. servers: - url: https://ftth-engineering-prod.s3.amazonaws.com description: This API call is done towards an Amazon Simple Storage Service (Amazon S3) bucket instead of the API store server. parameters: - in: path name: jsonFileNameAndExtension required: true description: | The **jobId** of the engineering job you defined in **/startJobS3** or **/jobResultS3** with added .json extension.
Pattern: `^.+\.(json)$`
Example: `FTTx_AdamNorth_Input_Dec2020.json` schema: $ref: '#/components/schemas/jsonFileNameAndExtensionSchema' - in: query name: X-Amz-Algorithm required: true description: >- Identifies the version of AWS Signature and the algorithm used to calculate the signature. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AWS4-HMAC-SHA256` schema: $ref: '#/components/schemas/amzAlgorithm' - in: query name: X-Amz-Credential required: true description: >- This parameter provides scope (AWS region and service) for which the signature is valid. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AAAAAA%2F20201201%2Feu-west-1%2Fs3%2Faws4_request` schema: $ref: '#/components/schemas/amzCredential' - in: query name: X-Amz-Date required: true description: | The date when the signedUrl was generated. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `20201201T120000Z` schema: $ref: '#/components/schemas/amzDate' - in: query name: X-Amz-Expires required: true description: | Provides the time period, in seconds, for which the generated presigned URL is valid. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `3600` schema: $ref: '#/components/schemas/amzExpires' - in: query name: X-Amz-SignedHeaders required: true description: | Lists the headers used to calculate the signature. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS**.
Example: `host` schema: $ref: '#/components/schemas/amzSignedHeaders' - in: query name: X-Amz-Security-Token required: true description: | Additional credential parameter. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AAAAAAAAAAluX2VjEA0aCWV1LXdlc3QtMSJIMEYCIQDKnFBi14jhVzfJHKod%2FCpwTIFkAj3kttgcdNRSngk49gIhAK6DboCvbtAmjlWDG5pBgzaFV1lXC0yFZWelULkpV%2FNVKuUBCNb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjUyNDM0MTA2NTI4Igwfybzhyrjg3aq7hbMquQHE00Xe9PiL%2BS%2BSlhrzrpOKg2y%2F5qfjbR2BrGcPpxta3EiBwUpvmXR%2F%2BqkQBG7BuJifYKaDkdnOS%2B3OzxkV2WRHnKnlNwann1vCLTS9AWGdNRFLE72iJ2s%2BT3lwQp%2BR6bGMjcfqEDm84MR3gINTpSp84y9bt9hoxtxfXzF8SfGv5LVoN45K8Rf%2B%2BqF7%2BwF03JWV50Klauq4hneHRiyWsUgQY6pFMN14xj83Jn5fxKJi0L7qh%2BWBfMnDCTCW1%2Fv%2FBTrfAbwZuNzIkBmhmHsmDO9hS2dLEfqpH9GpPUl8YLY3vfjATqpjnz241WrrBdyTawUFbiTEbcKx05dUwbkUdLRP2i9CZVLAl%2Bqk0J6VYmIEhhU2RS54oHCZzinEVzsdo%2BS5eXRQ9BiAD8OCH2gP3a7bXDx9HOBxSdbGMv5mXMeP1wsdjC7e%2FkVsQlEtBTNgc62EiloUbQlPiQyb1OQEMMGZd%2BV5N%2FxdNq%2For1UraAbvxAAzGHUqQff4rmZCEDbO5uv2kwWDR1boarpQeEG8Q3j%2BxSNde%2FG%2BUjg425uIAAAAAAAAAA` schema: $ref: '#/components/schemas/amzSecurityToken' - in: query name: X-Amz-Signature required: true description: | The signature to authenticate your request. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `aaaaaaaaaa09c013193ffd301019b60308a092c972b22fdfcb8424bbbbbbbbbb` schema: $ref: '#/components/schemas/amzSignature' requestBody: content: application/json: schema: $ref: '#/components/schemas/Job' responses: 200: description: Successful input data submission. /jobStatus/{jobId}: get: tags: - Retrieve job result summary: Returns the current status of the calculation job identified by jobId description: >- This method is called by the HLD front-end to get the current status of a job parameters: - in: path name: jobId required: true schema: $ref: '#/components/schemas/jsonFileNameSchema' responses: 200: description: Job status content: application/json: schema: $ref: '#/components/schemas/jobStatus' 400: $ref: '#/components/responses/bad_request' 401: $ref: '#/components/responses/unauthorized' 403: $ref: '#/components/responses/forbidden' 404: $ref: '#/components/responses/not_found' 429: $ref: '#/components/responses/too_many' 500: $ref: '#/components/responses/server_error' 502: $ref: '#/components/responses/gateway_error' 503: $ref: '#/components/responses/service_unavailable' /jobResultS3/{jobId}: get: tags: - Retrieve job result summary: Returns a signed URL where the results of an engineering job can be retrieved. description: >- When an engineering job is finished. This endpoint should be called first to retrieve a signed URL for the Amazon Simple Storage Service (Amazon S3) bucket where the results are stored. More details on how to use this URL to retrieve the results are specified in the /Output endpoint. parameters: - in: path name: jobId required: true schema: $ref: '#/components/schemas/jsonFileNameSchema' responses: 200: description: | The expected response is a signed URL for the Amazon Simple Storage Service (Amazon S3) bucket.
This signed URL is then to be used to retreieve the engineering job results, see **/Output/{jsonFileNameAndExtension}**. content: application/json: schema: $ref: '#/components/schemas/signedOutputUrl' 400: $ref: '#/components/responses/bad_request' 401: $ref: '#/components/responses/unauthorized' 403: $ref: '#/components/responses/forbidden' 404: $ref: '#/components/responses/not_found' 429: $ref: '#/components/responses/too_many' 500: $ref: '#/components/responses/server_error' 502: $ref: '#/components/responses/gateway_error' 503: $ref: '#/components/responses/service_unavailable' /Output/{jsonFileNameAndExtension}: get: tags: - Retrieve job result summary: Retrieve the results of an engineering job. description: >- Retrieves the results of the engineering job. Use the signed URL received from /jobResultS3/{jobId} for this. servers: - url: https://ftth-engineering-prod.s3.amazonaws.com description: This API request is done towards an Amazon Simple Storage Service (Amazon S3) bucket instead of the API store server. parameters: - in: path name: jsonFileNameAndExtension required: true description: | The **jobId** of the engineering job you defined in **/startJobS3** or **/jobResultS3** with added .json extension.
Pattern: `^.+\.(json)$`
Example: `FTTx_AdamNorth_Input_Dec2020.json` schema: $ref: '#/components/schemas/jsonFileNameAndExtensionSchema' - in: query name: X-Amz-Algorithm required: true description: >- Identifies the version of AWS Signature and the algorithm used to calculate the signature. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AWS4-HMAC-SHA256` schema: $ref: '#/components/schemas/amzAlgorithm' - in: query name: X-Amz-Credential required: true description: >- This parameter provides scope (AWS region and service) for which the signature is valid. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AAAAAA%2F20201201%2Feu-west-1%2Fs3%2Faws4_request` schema: $ref: '#/components/schemas/amzCredential' - in: query name: X-Amz-Date required: true description: | The date when the signedUrl was generated. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `20201201T120000Z` schema: $ref: '#/components/schemas/amzDate' - in: query name: X-Amz-Expires required: true description: | Provides the time period, in seconds, for which the generated presigned URL is valid. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `3600` schema: $ref: '#/components/schemas/amzExpires' - in: query name: X-Amz-SignedHeaders required: true description: | Lists the headers used to calculate the signature. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS**.
Example: `host` schema: $ref: '#/components/schemas/amzSignedHeaders' - in: query name: X-Amz-Security-Token required: true description: | Additional credential parameter. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `AAAAAAAAAAluX2VjEA0aCWV1LXdlc3QtMSJIMEYCIQDKnFBi14jhVzfJHKod%2FCpwTIFkAj3kttgcdNRSngk49gIhAK6DboCvbtAmjlWDG5pBgzaFV1lXC0yFZWelULkpV%2FNVKuUBCNb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjUyNDM0MTA2NTI4Igwfybzhyrjg3aq7hbMquQHE00Xe9PiL%2BS%2BSlhrzrpOKg2y%2F5qfjbR2BrGcPpxta3EiBwUpvmXR%2F%2BqkQBG7BuJifYKaDkdnOS%2B3OzxkV2WRHnKnlNwann1vCLTS9AWGdNRFLE72iJ2s%2BT3lwQp%2BR6bGMjcfqEDm84MR3gINTpSp84y9bt9hoxtxfXzF8SfGv5LVoN45K8Rf%2B%2BqF7%2BwF03JWV50Klauq4hneHRiyWsUgQY6pFMN14xj83Jn5fxKJi0L7qh%2BWBfMnDCTCW1%2Fv%2FBTrfAbwZuNzIkBmhmHsmDO9hS2dLEfqpH9GpPUl8YLY3vfjATqpjnz241WrrBdyTawUFbiTEbcKx05dUwbkUdLRP2i9CZVLAl%2Bqk0J6VYmIEhhU2RS54oHCZzinEVzsdo%2BS5eXRQ9BiAD8OCH2gP3a7bXDx9HOBxSdbGMv5mXMeP1wsdjC7e%2FkVsQlEtBTNgc62EiloUbQlPiQyb1OQEMMGZd%2BV5N%2FxdNq%2For1UraAbvxAAzGHUqQff4rmZCEDbO5uv2kwWDR1boarpQeEG8Q3j%2BxSNde%2FG%2BUjg425uIAAAAAAAAAA` schema: $ref: '#/components/schemas/amzSecurityToken' - in: query name: X-Amz-Signature required: true description: | The signature to authenticate your request. Use the value provided as part of the signed URL response of **/startJobS3** or **/jobResultS3**.
Example: `aaaaaaaaaa09c013193ffd301019b60308a092c972b22fdfcb8424bbbbbbbbbb` schema: $ref: '#/components/schemas/amzSignature' responses: 200: description: >- This is the result of the High-Level Design FTTx engieering job, based on the input provided. content: application/json: schema: $ref: '#/components/schemas/jobResult' security: - oauth2: [] components: securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://api-prd.kpn.com/oauth/client_credential/accesstoken?grant_type=client_credentials scopes: {} schemas: address: type: object properties: zipcode: type: string description: The postal code. street: type: string description: The name of the street. housenumber: type: integer description: The number of the property. extension: type: string description: | The extension of the house number, for example: `a-c`. x: type: number format: double description: x coordinates. y: type: number format: double description: x coordinates. city: type: string description: The name of the city or town. bagGeometryIdentificatie: type: string description: | Can be a Pand (non-residential/non-office building) or an addressable object (Pand or Ligplaats) with an Addresses and Buildings key register (BAG) id. It represents a contour. usagegoals: type: array items: type: string example: bijvoorbeeld "woonfunctie" of "logiesfunctie" NetworkType: type: string description: P2P or PON to indicate what the FTTH model should do. enum: - P2P - PON Job: type: object description: The input data to be used for the engineering job, most importantly the addresses of the region for which to perform the engineering job. amongst. properties: jobId: type: string format: uuid description: The unique UUID for this job. cable7x14Costs: type: number format: double description: 7x14 is a duct which contains 7 subducts in which a 96fold fibercable could be blown. A 7x14 duct is deployed between the Point Of Presence (PoP) - the central office - the splitter cabinet (OAP). cable2x14Costs: type: number format: double description: 2x14 is a duct which contains 2 subducts in which a 96fold fibercable could be blown. A 2x14 duct is deployed between the splitter cabinet (OAP) and a Distribution Point. cableDacCosts: type: number format: double description: DAC stands for Direct Access Cable, this is the cable deployed from the households to a Distribution Point. This is a Direct Buried cable. hasCosts: type: number format: double description: Tuinboring or Huisaansluiting (HAS) is the lead-in from the public pavement to the household. By using an airdriven drilling, there is no need to dig in the garden. dpCosts: type: number format: double description: DP, the distribution Point. In the distribution point a number of households are aggregated (normally around 45 households). In the DP the fibers of the DAC are welted to the 96fold cable. cable96vCosts: type: number format: double description: Blowing of 96fold fiber cable. From the PoP a 96fold cable is blown to the splitters cabinet (OAP) through the 7x14 duct, and from the OAP, a 96fold fiber cable is blown to 2 DP's in cascade (2x 48 fibers). bisCosts: type: number format: double description: Cost of digging the trench miniPopCosts: type: number format: double description: Cost of a small Point of Presence cityPopCosts: type: number format: double description: Cost of a Point of Presence 6,6m2 floorTiles: type: number format: double description: Percentage of the ground that contains floor klinkers. klinkers: type: number format: double description: Percentage of the ground that contains floor tiles. pavement: type: number format: double description: Percentage of the ground that contains floor pavement. green: type: number format: double description: Percentage of the ground that contains floor green - grass. asphalt: type: number format: double description: Percentage of the ground that contains floor asphalt. treeDrilling: type: number format: double description: Percentage of the total amount of drilling that has trees blocking. sand: type: number format: double description: Percentage of sand in the ground of the selected area of households. peat: type: number format: double description: Percentage of peat in the ground of the selected area of households. clay: type: number format: double description: Percentage of clay in the ground of the selected area of households. loss: type: number format: double description: Percentage of loss in the ground of the selected area of households. projectSpecificCosts: description: Costs that can be added to project specific cases. type: number format: double feesAndDegeneration: type: number format: double description: Fees and Degeneration per household that should be payed to the municipality. backhaulCost: type: number format: double description: Standard costs per household to connect it towards the backhaul and the core network. contractor: type: string description: Choose a contractor to determine cost levels. depthPosition: type: string description: Choose a depthPosition to determine cost, can be 30 cm, 40/45 cm, 50 cm, 60 cm. areaPopCosts: type: number format: double description: Cost of a Point of Presence 15m2. maxDpConnections: type: number format: double description: The maximal number of households that could be connected in the distribution point. networkType: $ref: '#/components/schemas/NetworkType' popLocation: $ref: '#/components/schemas/Coordinate' addresses: type: array items: $ref: '#/components/schemas/address' description: The addresses to include in the engineering process. signedInputUrl: type: object properties: signedUrl: type: string format: uri example: 'https://ftth-engineering-prod.s3.amazonaws.com/s3url_uploads/FTTx_AdamNorth_Input_Dec2020.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAA%2F20201201%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20201201T120000Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=AAAAAAAAAAluX2VjEA0aCWV1LXdlc3QtMSJIMEYCIQDKnFBi14jhVzfJHKod%2FCpwTIFkAj3kttgcdNRSngk49gIhAK6DboCvbtAmjlWDG5pBgzaFV1lXC0yFZWelULkpV%2FNVKuUBCNb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjUyNDM0MTA2NTI4Igwfybzhyrjg3aq7hbMquQHE00Xe9PiL%2BS%2BSlhrzrpOKg2y%2F5qfjbR2BrGcPpxta3EiBwUpvmXR%2F%2BqkQBG7BuJifYKaDkdnOS%2B3OzxkV2WRHnKnlNwann1vCLTS9AWGdNRFLE72iJ2s%2BT3lwQp%2BR6bGMjcfqEDm84MR3gINTpSp84y9bt9hoxtxfXzF8SfGv5LVoN45K8Rf%2B%2BqF7%2BwF03JWV50Klauq4hneHRiyWsUgQY6pFMN14xj83Jn5fxKJi0L7qh%2BWBfMnDCTCW1%2Fv%2FBTrfAbwZuNzIkBmhmHsmDO9hS2dLEfqpH9GpPUl8YLY3vfjATqpjnz241WrrBdyTawUFbiTEbcKx05dUwbkUdLRP2i9CZVLAl%2Bqk0J6VYmIEhhU2RS54oHCZzinEVzsdo%2BS5eXRQ9BiAD8OCH2gP3a7bXDx9HOBxSdbGMv5mXMeP1wsdjC7e%2FkVsQlEtBTNgc62EiloUbQlPiQyb1OQEMMGZd%2BV5N%2FxdNq%2For1UraAbvxAAzGHUqQff4rmZCEDbO5uv2kwWDR1boarpQeEG8Q3j%2BxSNde%2FG%2BUjg425uIAAAAAAAAAA&X-Amz-Signature=aaaaaaaaaa09c013193ffd301019b60308a092c972b22fdfcb8424bbbbbbbbbb' signedOutputUrl: type: object properties: signedUrl: type: string format: uri example: 'https://ftth-engineering-prod.s3.amazonaws.com/Output/FTTx_AdamNorth_Input_Dec2020.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAA%2F20201201%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20201201T120000Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=AAAAAAAAAAluX2VjEA0aCWV1LXdlc3QtMSJIMEYCIQDKnFBi14jhVzfJHKod%2FCpwTIFkAj3kttgcdNRSngk49gIhAK6DboCvbtAmjlWDG5pBgzaFV1lXC0yFZWelULkpV%2FNVKuUBCNb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjUyNDM0MTA2NTI4Igwfybzhyrjg3aq7hbMquQHE00Xe9PiL%2BS%2BSlhrzrpOKg2y%2F5qfjbR2BrGcPpxta3EiBwUpvmXR%2F%2BqkQBG7BuJifYKaDkdnOS%2B3OzxkV2WRHnKnlNwann1vCLTS9AWGdNRFLE72iJ2s%2BT3lwQp%2BR6bGMjcfqEDm84MR3gINTpSp84y9bt9hoxtxfXzF8SfGv5LVoN45K8Rf%2B%2BqF7%2BwF03JWV50Klauq4hneHRiyWsUgQY6pFMN14xj83Jn5fxKJi0L7qh%2BWBfMnDCTCW1%2Fv%2FBTrfAbwZuNzIkBmhmHsmDO9hS2dLEfqpH9GpPUl8YLY3vfjATqpjnz241WrrBdyTawUFbiTEbcKx05dUwbkUdLRP2i9CZVLAl%2Bqk0J6VYmIEhhU2RS54oHCZzinEVzsdo%2BS5eXRQ9BiAD8OCH2gP3a7bXDx9HOBxSdbGMv5mXMeP1wsdjC7e%2FkVsQlEtBTNgc62EiloUbQlPiQyb1OQEMMGZd%2BV5N%2FxdNq%2For1UraAbvxAAzGHUqQff4rmZCEDbO5uv2kwWDR1boarpQeEG8Q3j%2BxSNde%2FG%2BUjg425uIAAAAAAAAAA&X-Amz-Signature=aaaaaaaaaa09c013193ffd301019b60308a092c972b22fdfcb8424bbbbbbbbbb' jobStatus: type: object properties: #refer UpdateJobStatusScheduler.mapToDomain(nl.reggefiber.hld.rest2.hld.model.JobStatus source) for allowed string values status: type: string enum: - queued - accepted - running - done - failed - unknown jobResult: type: object properties: status: type: string jobId: type: string format: uuid numberOfCoreAreas: type: integer format: int32 amountHp: type: integer format: int32 description: Total number of adresses after filtering on existing FttH adresses/BC received from Python amountHpLowRise: type: integer format: int32 description: Total number of low-rise adresses after filtering on existing FttH adresses/BC received from Python amountHpHighRise: type: integer format: int32 description: Total number of high-rise adresses after filtering on existing FttH adresses/BC received from Python totalCable7x14Length: type: number format: double description: Total length of the 7x14 ducts, received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP' totalCable2x14Length: type: number format: double description: Total length of the 2x14 ducts, received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP' totalCable96vLength: type: number format: double description: Total length of the 96fold fibercable received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP' totalCableDacLength: type: number format: double description: Total length of the DAC's, received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP' totalBisLength: type: number format: double description: Total length of digging, received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP' hasLength: type: number format: double description: Total length of lead-ins, received from Python. Column per HP should be calculated by dividing the total length by 'Aantal HP laagbouw' lengthDirectionalBoring: type: number format: double description: Total length of Horizontal Directional Drillings (HDD), received from Python. Column per HP should not be calculated amountDp: type: number format: double description: Total number of DP's, received from Python. Column per HP should not be calculated ftthDeploymentCosts: type: number format: double description: Cost per HP to build the network, received from Python. Column Totaal should be calculated by multiplying the cost per HP with 'Aantal HP' incaContractCapex: type: number format: double description: Cost per HP to build the network according to the INCA model (simplified calculation method agreed on with the contractor), received from Python. Column Totaal should be calculated by multiplying the cost per HP with 'Aantal HP' incaCapex: type: number format: double description: Cost per HP to build the network according to the INCA model (simplified calculation method agreed on with the contractor) including some internal costs like active costs (e.g. DSLAM), received from Python. Column Totaal should be calculated by multiplying the cost per HP with 'Aantal HP' maximalCableLength: type: number format: double description: The maximum length from household to PoP, received from Python distributionPoints: type: array items: $ref: '#/components/schemas/DistributionPoint' cables96v: type: array items: $ref: '#/components/schemas/Cable96V' coreCables: type: array items: $ref: '#/components/schemas/CoreCable' pops: type: array items: $ref: '#/components/schemas/Pop' splitters: type: array items: $ref: '#/components/schemas/Splitter' haslist: type: array items: $ref: '#/components/schemas/Has' trenches: type: array items: $ref: '#/components/schemas/Trench' message: type: string DistributionPoint: type: object properties: id: type: string x: type: number format: double y: type: number format: double hhRoutes: type: array items: $ref: '#/components/schemas/HHRoute' required: - id - x - 'y' - hhRoutes HHRoute: type: object properties: trenchIds: type: array items: type: string Cable96V: type: object properties: distributionPointId1: type: string distributionPointId2: type: string coreCableId: type: integer format: int64 example: 222 trenchIds: type: array items: type: string CoreCable: type: object properties: id: type: integer format: int64 example: 222 popId: type: integer format: int64 example: 333 trenchIds: type: array items: type: string Pop: type: object properties: id: type: integer format: int64 example: 333 type: type: string example: CP-AP_1496 enum: - CP-AP_528 - CP-AP_1496 - CP-AP_1848 - CP-AP_3696 - AP_3696 x: type: number format: double example: 52.99187331 y: type: number format: double example: 5.99117733 Splitter: type: object properties: id: type: integer format: int64 example: 754 type: type: string example: Splitter x: type: number format: double example: 52.99187331 y: type: number format: double example: 5.99117733 Has: type: object description: Has geo properties properties: id: type: string example: HAS 1127PV189 x1: type: number format: double y1: type: number format: double x2: type: number format: double y2: type: number format: double Trench: type: object description: Trench properties properties: id: type: string example: 1005_up_12800 x1: type: number format: double y1: type: number format: double x2: type: number format: double y2: type: number format: double length: type: number format: double surfaceType: type: string enum: - premium_road - road example: road Coordinate: type: object description: Location of a point on a two-dimensional plane. properties: x: type: number format: double description: x coordinates. National triangle coordinates (RD coordinates) in meters. y: type: number format: double description: y coordinates. National triangle coordinates (RD coordinates) in meters. jsonFileNameSchema: type: string example: 'FTTx_AdamNorth_Input_Dec2020' jsonFileNameAndExtensionSchema: type: string pattern: '^.+\.(json)$' example: 'FTTx_AdamNorth_Input_Dec2020.json' description: | The `jobId` of the engineering job you defined in /startJobS3 or /jobResultS3 with added .json extension. amzAlgorithm: type: string example: 'AWS4-HMAC-SHA256' description: >- Identifies the version of AWS Signature and the algorithm used to calculate the signature. Use the value provided as part of the signed URL response of `/startJobS3` or `/jobResultS3`. amzCredential: type: string example: 'AAAAAA%2F20201201%2Feu-west-1%2Fs3%2Faws4_request' description: >- This parameter provides scope (AWS region and service) for which the signature is valid. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. amzDate: type: string example: '20201201T120000Z' description: The date when the signedUrl was generated. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. amzExpires: type: string example: '3600' description: Provides the time period, in seconds, for which the generated presigned URL is valid. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. amzSignedHeaders: type: string example: 'host' description: Lists the headers used to calculate the signature. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. amzSecurityToken: type: string example: 'AAAAAAAAAAluX2VjEA0aCWV1LXdlc3QtMSJIMEYCIQDKnFBi14jhVzfJHKod%2FCpwTIFkAj3kttgcdNRSngk49gIhAK6DboCvbtAmjlWDG5pBgzaFV1lXC0yFZWelULkpV%2FNVKuUBCNb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjUyNDM0MTA2NTI4Igwfybzhyrjg3aq7hbMquQHE00Xe9PiL%2BS%2BSlhrzrpOKg2y%2F5qfjbR2BrGcPpxta3EiBwUpvmXR%2F%2BqkQBG7BuJifYKaDkdnOS%2B3OzxkV2WRHnKnlNwann1vCLTS9AWGdNRFLE72iJ2s%2BT3lwQp%2BR6bGMjcfqEDm84MR3gINTpSp84y9bt9hoxtxfXzF8SfGv5LVoN45K8Rf%2B%2BqF7%2BwF03JWV50Klauq4hneHRiyWsUgQY6pFMN14xj83Jn5fxKJi0L7qh%2BWBfMnDCTCW1%2Fv%2FBTrfAbwZuNzIkBmhmHsmDO9hS2dLEfqpH9GpPUl8YLY3vfjATqpjnz241WrrBdyTawUFbiTEbcKx05dUwbkUdLRP2i9CZVLAl%2Bqk0J6VYmIEhhU2RS54oHCZzinEVzsdo%2BS5eXRQ9BiAD8OCH2gP3a7bXDx9HOBxSdbGMv5mXMeP1wsdjC7e%2FkVsQlEtBTNgc62EiloUbQlPiQyb1OQEMMGZd%2BV5N%2FxdNq%2For1UraAbvxAAzGHUqQff4rmZCEDbO5uv2kwWDR1boarpQeEG8Q3j%2BxSNde%2FG%2BUjg425uIAAAAAAAAAA' description: Additional credential parameter. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. amzSignature: type: string example: 'aaaaaaaaaa09c013193ffd301019b60308a092c972b22fdfcb8424bbbbbbbbbb' description: The signature to authenticate your request. Use the value provided as part of the signed URL response of /startJobS3 or /jobResultS3. 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 responses: bad_request: description: Bad request content: application/json: schema: $ref: '#/components/schemas/error' unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' forbidden: description: forbidden content: application/json: schema: $ref: '#/components/schemas/error' not_found: description: not found content: application/json: schema: $ref: '#/components/schemas/error' too_many: description: too many requests content: application/json: schema: $ref: '#/components/schemas/error' server_error: description: server error content: application/json: schema: $ref: '#/components/schemas/error' gateway_error: description: gateway_error content: application/json: schema: $ref: '#/components/schemas/error' service_unavailable: description: service unavailable content: application/json: schema: $ref: '#/components/schemas/error' empty_file: description: uploaded file has size 0 content: application/json: schema: $ref: '#/components/schemas/error' precondition_required: description: precondition required content: application/json: schema: $ref: '#/components/schemas/error'