Files
thetool/public/docs/preorder-api.yaml
2025-04-28 15:59:20 +02:00

1870 lines
63 KiB
YAML

openapi: 3.0.1
info:
title: thetool Preorder API
description: API Dokumentation für thetool Akquise-Plattform
license:
name: Apache 2.0 License
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.2.2
servers:
- url: https://thetool-test.xinon.at/api/v1
- url: https://thetool.xinon.at/api/v1
tags:
- name: addressdb
description: Abfrage von GWR-Daten
- name: preorder
description: Abfragen und Operationen zu Vorbestellungen
- name: Customer Installation Feedback
description: Kundenfeedback Lehrrohrverlegung
paths:
/addressdb/getClusters:
get:
tags:
- addressdb
summary: Gibt alle Cluster aus
description: Retourniert Liste aller Cluster mit ID und Name
operationId: getClusters
responses:
'200':
description: Successful operation
content:
"application/json":
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
clusters:
type: array
items:
type: object
properties:
id:
type: string
description: ID des Clusters
example: "JP-TYO-01-4"
name:
type: string
description: Name des Clusters
example: "Tokyo - Akihabara Süd"
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/searchAddress:
get:
tags:
- addressdb
summary: Freitextsuche nach Adressen mit Ausbaustatus
description: Sucht Adressen die den Suchbegriff beinhalten. Retourniert Adressen mit Ausbaustatus und Wohneinheiten
operationId: searchAddresses
parameters:
- name: format
description: "Ausgabeformat: `flat` (Ein Array-Element pro Wohneinheit mit Gebäudedaten; **default**) oder `tree` (Ein Array-Element pro Gebäude mit Wohneinheiten-Array)"
in: query
schema:
type: string
example: flat
- name: search
description: Suchbegriff
in: query
schema:
type: string
required: true
responses:
'200':
description: |
Successful operation
Der Rückgabewert `preorderType` gibt an, welche Vorbestelltypen an dieser Adresse erlaubt sind:
| preorderType | description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
Ein leeres Array bedeutet, dass derzeit kein Ausbau stattfindet/geplant ist.
---
Ist bekannt, dass die Adresse zukünftig ausgebaut wird, steht im Feld `rollout_year` das geplante Ausbaujahr. `rollout_info` kann weitere informationen beinhalten.
content:
"application/json (format: tree)":
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
addresses:
$ref: '#/components/schemas/AddressesTree'
"application/json (format: flat)":
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
addresses:
$ref: '#/components/schemas/Addresses'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/findAddress:
get:
tags:
- addressdb
summary: Strukturierte Suche nach Adressen mit Ausbaustatus
description: Sucht nach Adressen. Retourniert Adressen mit Ausbaustatus und Wohneinheiten
operationId: findAddresses
parameters:
- name: format
description: "Ausgabeformat: `flat` (Ein Array-Element pro Wohneinheit mit Gebäudedaten; **default**) oder `tree` (Ein Array-Element pro Gebäude mit Wohneinheiten-Array)"
in: query
schema:
type: string
- name: cluster_id
description: Cluster ID
in: query
schema:
type: string
- name: street
description: Straße Suchbegriff
in: query
schema:
type: string
required: true
- name: zip
description: Postleitzahl Suchbegriff
in: query
schema:
type: string
- name: city
description: Stadt Suchbegriff
in: query
schema:
type: string
- name: district
description: Ortsteil Suchbegriff
in: query
schema:
type: string
- name: housenumber
description: Hausnummer Suchbegriff
in: query
schema:
type: string
- name: stiege
description: Stiege Suchbegriff
in: query
schema:
type: string
responses:
'200':
description: |
Successful operation
Der Rückgabewert `preorderType` gibt an, welche Vorbestelltypen an dieser Adresse erlaubt sind:
| preorderType | description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
Ein leeres Array bedeutet, dass derzeit kein Ausbau stattfindet/geplant ist.
---
Ist bekannt, dass die Adresse zukünftig ausgebaut wird, steht im Feld `rollout_year` das geplante Ausbaujahr. `rollout_info` kann weitere informationen beinhalten.
content:
"application/json (format: tree)":
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
addresses:
$ref: '#/components/schemas/AddressesTree'
"application/json (format: flat)":
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
addresses:
$ref: '#/components/schemas/Addresses'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/{oaid}/pricing:
get:
tags:
- addressdb
summary: Liefert Endkundenpreise
description: Liefert Endkundenpreise für die angegebene Adresse
operationId: getAddressPricing
parameters:
- name: oaid
description: "**OAID** der Wohneinheit; Wie in `searchAddress` oder `findAddress` zurückgegeben. Preise sind `0`, wenn Herstellungsentgelt bereits bezahlt wurde."
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
oaid:
type: string
description: OAID der Wohneinheit
example: "AT-9999-abcdef01"
enduser_setup_price_net:
type: number
description: Herstellungsentgelt für Endkunde Netto
example: 1250
enduser_setup_price_gross:
type: number
description: Herstellungsentgelt für Endkunde Brutto
example: 1500
enduser_setup_info:
type: string
description: Zusätzliche Information zum Preis
example: Rabattaktion in Gemeinde
nullable: true
enduser_setup_is_discount:
type: boolean
description: "`true` wenn der Preis ein Aktionspreis ist. Sonst `false`"
example: true
enduser_setup_valid_until:
type: string
format: date-time
description: Gültigkeitsdatum des Herstellungsentgelts, sofern in Aktionszeitraum, sonst `null`
example: "2025-05-31"
nullable: true
vatrate:
type: number
description: "Mehrwertsteuersatz in %"
example: 20
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/findStreet:
get:
tags:
- addressdb
summary: Straßen suchen
description: Sucht nach Straßen
operationId: findStreets
parameters:
- name: cluster_id
description: Cluster ID
in: query
schema:
type: string
- name: street
description: Straße Suchbegriff
in: query
schema:
type: string
- name: zip
description: Postleitzahl Suchbegriff
in: query
schema:
type: string
- name: city
description: Stadt Suchbegriff
in: query
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
streets:
$ref: '#/components/schemas/Streets'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/findZip:
get:
tags:
- addressdb
summary: Postleitzahlen suchen
description: Sucht nach Postleitzahlen
operationId: findZips
parameters:
- name: cluster_id
description: Cluster ID
in: query
schema:
type: string
- name: zip
description: Postleitzahl Suchbegriff
in: query
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
zips:
$ref: '#/components/schemas/Zips'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/findCity:
get:
tags:
- addressdb
summary: Gemeinden suchen
description: Sucht nach Gemeinden
operationId: findCity
parameters:
- name: cluster_id
description: Cluster ID
in: query
schema:
type: string
- name: zip
description: Postleitzahl Suchbegriff
in: query
schema:
type: string
- name: city
description: Stadt Suchbegriff
in: query
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
cities:
$ref: '#/components/schemas/Cities'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/addressdb/findDistrict:
get:
tags:
- addressdb
summary: Ortsteile suchen
description: Sucht nach Ortsteilen
operationId: findDistrict
parameters:
- name: cluster_id
description: Cluster ID
in: query
schema:
type: string
- name: zip
description: Postleitzahl Suchbegriff
in: query
schema:
type: string
- name: city
description: Gemeinde Suchbegriff
in: query
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
cities:
$ref: '#/components/schemas/CityDistricts'
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
/preorder:
post:
tags:
- preorder
summary: (Vor-)bestellung registrieren
description: |
Registriert eine (Vor-)bestellung. Bestellungsart wird mit `preorderType` definiert.
Handelt es sich um einen zusätzlichen Anschluss in der Wohneinheit muss der Paramerter `isAdditionalOrder` auf `true` gestellt werden, da sonst ein Fehler zurückgegeben wird.
---
Parameter `address`: Anschlussadresse.
Das Feld `oaid` ist **optional**: Wird die **OAID der Adresse** oder die **OAID der Wohneinheit** übergeben, können die Adressbestandteile leer/NULL sein oder ganz entfallen.
Soll Starterkit an Anschlussadresse gesendet werden, muss `address.is_shipping` auf true gestellt werden, bei false wird das Starterkit an Vertragsinhaber (`customer`) gesendet.
Wohneinheitsidentifikation (Block, Stock, Tür) kann strukturiert mit jeweils einem eigenen Feld übergeben werden oder alle Wohneinheitsdaten in einem einzigen String (`unit_string`).
---
Parameter `address_info`: **(Optional)** Zusätzliche Informationen zur Anschlusssdresse
Parameter `customer`: Vertragsinhaber
---
Parameter `preorderType` bestimmt Vorbestelltyp:
| preorderType | Description |
|--------------|-------------|
| interest | Interessensbekundung|
| provision | Vorsorgeanschluss|
| order | Vollanschluss|
| reorder | Nachbestellung (nach Bauabschluss) |
---
Parameter `connectionCount`: Anzahl Anschlüsse für Rabatt bei mehreren Anschlüssen in Mehrfamilienhaus
---
Parameter `connectionType` bestimmt den Anschlusstyp:
|connectionType | description |
|---------------|-------------|
| single-dwelling | Einfamilienhaus
| multi-dwelling | Mehrfamilienhaus (bis 3 Wohneinheiten)
| apartment-building | Mehrparteienhaus (ab 4 Wohneinheiten)
| apartment | Wohneinheit in Mehrparteienhaus
| business | Gewerbebetrieb |
---
Parameter `addonServices`: **(Optional)** Array für zusätzlich gebuchte Services. Services müssen nicht vordefiniert sein, es können benutzerdefinierte Services übergeben werden.
Das Array `data` ist optional und kann frei befüllt werden, um weitere Details zum Service zu speichern (z.B. extra Einwilligung zur Datenweitergabe an Dienstleister)
Folgende Services sind vordefiniert:
| Service | description |
|---------|-------------|
| installation_onproperty | Lehrrohrverlegung am Grundstück |
| installation_inhouse | Glasfaserverlegung im Haus |
| ... | ...|
---
Parameter `extref`: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
---
Parameter `additionalData`: **(Optional)** Object für zusätzliche individuelle Daten, die in der Vorbestellung gespeichert werden. Wird in `GET /preorder` retourniert.
operationId: submitPreorder
requestBody:
description: PreorderRequest object
required: true
content:
'application/json':
schema:
$ref: '#/components/schemas/preorderRequest'
'application/x-www-form-urlencoded':
schema:
$ref: '#/components/schemas/preorderRequest'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
code:
type: string
description: Code für Statusabfrage
example: A1B2C3D4
oaid:
type: string
description: OAID
example: AT-9999-abcdef01
extref:
type: string
description: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
status:
type: object
properties:
code:
type: integer
description: status ID
example: 230
text:
type: string
description: Statustext
example: Fiber installation work assigned
flags:
type: array
items:
type: object
properties:
code:
type: integer
example: 141
text:
type: string
example: "Conduit on property border and FCP prepaired"
value:
type: boolean
example: true
additionalData:
type: object
description: Benutzerdefiniertes Objekt. Wird unverändert gespeichert und in `GET /preorder` wieder ausgegeben
example:
myData: Hallo
moreData: Welt
lotsMoreData:
- key: name
value: test
- key: another Key
value: more value
created:
type: string
format: date-time
description: Zeitpunkt der Anlage der Bestellung in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
created_ts:
type: integer
description: Zeitpunkt der Anlage der Bestellung in Sekunden seit der Unix Epoche
example: 1675206000
updated:
type: string
format: date-time
description: Zeitpunkt der letzen Bearbeitung der Bestellung in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
updated_ts:
type: integer
description: Zeitpunkt der letzten Bearbeitung der Bestellung in Sekunden seit der Unix Epoche
example: 1675206000
'400':
description: |
Bad Request
Parameter missing or malformed
'401':
description: Unauthorized
'403':
description: Vorbestellung für diese Wohneinheit bereits vorhanden
'404':
description: Adresse oder Wohneinheit nicht gefunden
/preorder/open:
get:
tags:
- preorder
summary:
Liste offener Vorbestellungen
description: Gibt Liste aller offener Vorbestellungen aus, Optional gefiltert nach Zeitpunkt der letzten Bearbeitung
parameters:
- name: ts
in: query
description: |
Optional: Timestamp. Wenn gesetzt, werden Nur Bestellungen zurückgeliefert, welche ab diesem Zeitpunkt geändert wurden.
Format: String in ISO 8601 Format oder Integer in Sekunden seit der Unix Epoche
required: false
schema:
oneOf:
- $ref: "#/components/schemas/timestampString"
- $ref: "#/components/schemas/timestampInt"
responses:
'200':
description: |
Successful operation
Mögliche `status` Werte:
| code | text | description |
|------|------|-------------|
| 10 | new | Neu |
| 110 | Underground construction planning | Tiefbau in Planung |
| 120 | Underground construction planning finished | Tiefbau Planung abgeschlossen |
| 130 | Underground construction work assigned | Bauauftrag zugeteilt |
| 140 | Conduit at property border | Rohr an Grundstücksgrenze |
| 210 | Fiber planning | Leitungsplan in Arbeit |
| 220 | Fiber planning finished | Leitungsplan abgeschlossen |
| 230 | Fiber installation work assigned | Bauauftrag zugeteilt |
| 235 | Fiber on property line | Faser an Grundstücksgrenze |
| 240 | Fiber in building | Faser im Gebäude |
| 241 | BEP installed (multi-dwelling) | HÜP installiert (MPH) |
| 244 | BEP installed (single-dwelling) | HÜP installiert (EFH) |
| 245 | OTO installed | Anschlussbox installiert |
| 250 | ONT ready | ONT vorbereitet |
| 260 | ONT picked up or shipped | ONT abgeholt oder versandt |
| 300 | ONT installed | ONT in Betrieb |
| 500 | Finished | Fertiggestellt |
| 899 | Cancelled | Storniert: Keine Leitungsrechte / Genehmigung |
| 900 | Cancelled | Storniert: Wirtschaftliche Umstände |
| 910 | Cancelled | Storniert: Keine Begründung |
| 920 | Cancelled | Gekündigt durch Kunde |
| 921 | Cancelled | Gekündigt durch ISP |
---
Mögliche Status `flag`s:
| code | text | description |
|------|------|-------------|
| 141 | Conduit on property border and FCP prepaired | |
| 145 | Installation kit picked up or shipped | Hausanschlusspaket an Kunden übergeben/versandt |
| 150 | Borderpoint connected | |
| 200 | Conduit in building | Rohr im Gebäude |
| 242 | Inhouse cabeling finished (multi-dwelling) | Hausverkabelung erledigt (MPH) |
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
preorders:
type: array
items:
$ref: '#/components/schemas/preorderStatusDetail'
'401':
description: Unauthorized
/preorder/{id}:
get:
tags:
- preorder
summary: Details und Status zur Vorbestellung
description: Gibt Details zum Status der Vorbestellung/Bestellung zurück. id kann automatisch generierter **code** der Vorbestellung, **OAID** der Wohneinheit oder providereigene ID (**extref**) sein.
operationId: getPreorderStatus
parameters:
- name: id
in: path
description: Automatisch generierter **code** der Vorbestellung, **OAID** der Wohneinheit oder providereigene ID (**extref**)
required: true
schema:
type: string
responses:
'200':
description: |
Successful operation
Mögliche Werte für Rückgabewert `status`:
| code | text | description |
|------|------|-------------|
| 10 | new | Neu |
| 110 | Underground construction planning | Tiefbau in Planung |
| 120 | Underground construction planning finished | Tiefbau Planung abgeschlossen |
| 130 | Underground construction work assigned | Bauauftrag zugeteilt |
| 140 | Conduit at property border | Rohr an Grundstücksgrenze |
| 210 | Fiber planning | Leitungsplan in Arbeit |
| 220 | Fiber planning finished | Leitungsplan abgeschlossen |
| 230 | Fiber installation work assigned | Bauauftrag zugeteilt |
| 235 | Fiber on property line | Faser an Grundstücksgrenze |
| 240 | Fiber in building | Faser im Gebäude |
| 241 | BEP installed (multi-dwelling) | HÜP installiert (MPH) |
| 244 | BEP installed (single-dwelling) | HÜP installiert (EFH) |
| 245 | OTO installed | Anschlussbox installiert |
| 250 | ONT ready | ONT vorbereitet |
| 260 | ONT picked up or shipped | ONT abgeholt oder versandt |
| 300 | ONT installed | ONT in Betrieb |
| 500 | Finished | Fertiggestellt |
| 899 | Cancelled | Storniert: Keine Leitungsrechte / Genehmigung |
| 900 | Cancelled | Storniert: Wirtschaftliche Umstände |
| 910 | Cancelled | Storniert: Keine Begründung |
| 920 | Cancelled | Gekündigt durch Kunde |
| 921 | Cancelled | Gekündigt durch ISP |
---
Mögliche Status `flag`s:
| code | text | description |
|------|------|-------------|
| 141 | Conduit on property border and FCP prepaired | |
| 145 | Installation kit picked up or shipped | Hausanschlusspaket an Kunden übergeben/versandt |
| 150 | Borderpoint connected | |
| 200 | Conduit in building | Rohr im Gebäude |
| 242 | Inhouse cabeling finished (multi-dwelling) | Hausverkabelung erledigt (MPH) |
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
$ref: '#/components/schemas/preorderStatusDetail'
'401':
description: Unauthorized
'404':
description: Vorbestellung nicht gefunden
delete:
tags:
- preorder
summary: Bestellung stornieren/kündigen
description: Erstellt einen Storno Request
operationId: cancelPreorder
parameters:
- name: id
in: path
description: Automatisch generierter **code** der Vorbestellung, **OAID** der Wohneinheit oder providereigene ID (**extref**)
required: true
schema:
type: string
- name: status
in: query
description: |
Kündigungsgund (**Default**: 910)
| code | text | description |
|------|------|-------------|
| 899 | Cancelled | Storniert: Keine Leitungsrechte / Genehmigung |
| 900 | Cancelled | Storniert: Wirtschaftliche Umstände |
| 910 | Cancelled | Storniert: Keine Begründung |
| 920 | Cancelled | Gekündigt durch Kunde |
| 921 | Cancelled | Gekündigt durch ISP |
schema:
type: integer
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
type: object
properties:
message:
type: string
description: Statustext
example: Cancellation request submited
'401':
description: Unauthorized
'403':
description: Keine Berechtigung oder Storno Request bereits vorhanden
'404':
description: Bestellung nicht gefunden oder bereits storniert
/preorder/{id}/clientInstallationFinished:
post:
tags:
- preorder
summary: Bestellung auf Status 200 - Rohr im Gebäude setzen
description: Setzt Status der Bestellung auf 200 - Rohr im Gebäude. Wird gesetzt wenn beim Kunden die Lehrrohrinstallation abgeschlossen ist.
operationId: setClientInstallationFinished
parameters:
- name: id
in: path
description: Automatisch generierter **code** der Vorbestellung, **OAID** der Wohneinheit oder providereigene ID (**extref**)
required: true
schema:
type: string
responses:
'200':
description: Successful operation
'401':
description: Unauthorized
'404':
description: Vorbestellung nicht gefunden
/preorder/{id}/serviceActivated:
post:
tags:
- preorder
summary: Bestellung auf Status 500 - Fertiggestellt setzen
description: Setzt Status der Bestellung auf 500 - Fertiggestellt. Wird gesetzt, wenn beim Kunden alle Installationsarbeiten abgeschlossen sind und der Service aktiv ist. Optional mit Aktivierungsdateum
operationId: setInhouseIntallationFinishedWithActivationDate
parameters:
- name: id
in: path
description: Automatisch generierter **code** der Vorbestellung, **OAID** der Wohneinheit oder providereigene ID (**extref**)
required: true
schema:
type: string
- name: activation_date
in: query
description: (Optional) Tatsächliches Aktivierungsdatum bei nachträglicher Aktivmeldung. Muss in der Vergangenheit liegen. ISO 8601 Format
required: false
schema:
type: string
format: date-time
responses:
'200':
description: Successful operation
'401':
description: Unauthorized
'404':
description: Vorbestellung nicht gefunden
/preorder/customerInstallationFeedback:
get:
tags:
- Customer Installation Feedback
summary: Anschluss-/Kundendaten zu ciftoken
description: Gibt Anschluss-/Kundendaten zum abgefragten CIF-Token zurück. Dient zum Validieren des Anschlusses durch den Kunden
operationId: getCifData
parameters:
- name: ciftoken
in: query
description: Client Installation Feedback Token
required: true
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: Status string
example: OK
result:
$ref: '#/components/schemas/cifResponseData'
'400':
description: ciftoken missing
'401':
description: Unauthorized
'404':
description: Invalid ciftoken
post:
tags:
- Customer Installation Feedback
summary: Bestellung auf Status 200 - Rohr im Gebäude setzen
description: Setzt Status der Bestellung auf 200 - Rohr im Gebäude. Wird gesetzt wenn beim Kunden die Lehrrohrinstallation abgeschlossen ist. (CIF)
operationId: setCifData
parameters:
- name: ciftoken
in: query
description: Client Installation Feedback Token
required: true
schema:
type: string
responses:
'200':
description: Successful operation
'400':
description: ciftoken missing
'401':
description: Unauthorized
'404':
description: Invalid ciftoken
components:
schemas:
timestampString:
type: string
format: date-time
description: ISO 8601 Timestamp
timestampInt:
type: integer
description: Timestamp in seconds of the Unix Epoch
Zips:
type: array
items:
type: string
Cities:
type: array
items:
type: string
CityDistricts:
type: object
additionalProperties:
type: array
items:
type: string
example:
Premstätten:
- Hautzendorf
- Laa
- Oberpremstätten
- Unterpremstätten
Streets:
type: array
items:
type: string
AddressesTree:
type: array
items:
$ref: '#/components/schemas/AddressTree'
Addresses:
type: array
items:
$ref: '#/components/schemas/Address'
AddressTree:
type: object
properties:
oaid:
type: string
description: OAID des Gebäudes
example: AT-9999-abcdef01
street:
type: string
description: Strasse
example: Beispielstraße
housenumber:
type: string
description: Hausnummer
example: 13
stiege:
type: string
description: Stiege
example: 2
zip:
type: string
description: PLZ
example: 9999
city:
type: string
description: Ortschaft
example: Ortschaft
municipality:
type: string
description: Gemeinde
example: Gemeinde
district:
type: string
description: Ortsteil
example: Ortsteil
lot_number:
type: string
description: Grundstücksnummer
example: 123/7
meridian:
type: string
description: Meridian der Zugangskoordinate
example: "M31"
rw:
type: string
description: Rechtswert der Zugangskoordinate
example: "58876.54"
hw:
type: string
description: Hochwert der Zugangskoordinate
example: "262389.89"
building_unit_count:
type: integer
description: Anzahl Wohneinheiten im Gebäude
example: 6
gps_lat:
type: number
description: Breitengrad der GPS-Koordinate (Dezimal)
example: 48.517560
gps_long:
type: number
description: Längengrad der GPS-Koordinate (Dezimal)
example: 13.950665
rollout_year:
type: integer
description: Jahr des geplanten Ausbaus
example: 2024
rollout_info:
type: string
description: Infotext begzl. Bauplanung
example: null
preorderTypes:
type: array
example: ["interest", "provision", "order", "reorder"]
description: |
Erlaubte Vorbestelltypen:
| preorderType | description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
items:
type: string
units:
type: array
items:
type: object
properties:
oaid:
type: string
description: OAID der Wohneinheit
example: AT-9999-abcdef01.001
num:
type: integer
description: Fortlaufende Nummer der Wohneinheit
example: 2
block:
type: string
description: Block
example: ""
stock:
type: string
description: Stock
example: 42
tuer:
type: string
description: Tür
example: 1337
zusatz:
type: string
description: Addresszusatz
example: im Carport
required:
- street
Address:
type: object
properties:
oaid:
type: string
description: OAID der Wohneinheit
example: AT-9999-abcdef01.001
building_oaid:
type: string
description: OAID des Gebäudes
example: AT-9999-abcdef01
street:
type: string
description: Strasse
example: Beispielstraße
housenumber:
type: string
description: Hausnummer
example: 13
stiege:
type: string
description: Stiege
example: 2
zip:
type: string
description: PLZ
example: 9999
city:
type: string
description: Ortschaft
example: Ortschaft
municipality:
type: string
description: Gemeinde
example: Gemeinde
district:
type: string
description: Ortsteil
example: Ortsteil
lot_number:
type: string
description: Grundstücksnummer
example: 123/7
meridian:
type: string
description: Meridian der Zugangskoordinate
example: "M31"
rw:
type: string
description: Rechtswert der Zugangskoordinate
example: "58876.54"
hw:
type: string
description: Hochwert der Zugangskoordinate
example: "262389.89"
building_unit_count:
type: integer
description: Anzahl Wohneinheiten im Gebäude
example: 6
num:
type: integer
description: Fortlaufende Nummer der Wohneinheit
example: 2
block:
type: string
description: Block
example: ""
stock:
type: string
description: Stock
example: 42
tuer:
type: string
description: Tür
example: 1337
zusatz:
type: string
description: Addresszusatz
example: im Carport
gps_lat:
type: number
description: Breitengrad der GPS-Koordinate (Dezimal)
example: 48.517560
gps_long:
type: number
description: Längengrad der GPS-Koordinate (Dezimal)
example: 13.950665
rollout_year:
type: integer
description: Jahr des geplanten Ausbaus
example: 2024
rollout_info:
type: string
description: Infotext begzl. Bauplanung
example: Bauplan 2024
preorderTypes:
type: array
example: ["interest", "provision", "order", "reorder"]
description: |
Erlaubte Vorbestelltypen:
| preorderType | description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
items:
type: string
required:
- street
addressResponse:
type: object
properties:
cluster_id:
type: string
description: Cluster ID
street:
type: string
description: Strasse der Anschlussadresse
housenumber:
type: string
description: Hausnummer der Anschlussadresse
stiege:
type: string
description: Stiege der Anschlussadresse
zip:
type: string
description: PLZ der Anschlussadresse
city:
type: string
description: Ort der Anschlussadresse
municipality:
type: string
description: Gemeinde der Anschlussadresse
block:
type: string
description: Block der Anschlussadresse
stock:
type: string
description: Stock der Anschlussadresse
tuer:
type: string
description: Tür der Anschlussadresse
customerResponse:
type: object
properties:
company:
type: string
description: Firmenname Kunde
uid:
type: string
description: UID (wenn Firmenkunde)
firstname:
type: string
description: Vorname Kunde
lastname:
type: string
description: Nachname Kunde
street:
type: string
description: Straße Kunde
housenumber:
type: string
description: Hausnummer Kunde
zip:
type: string
description: PLZ Kunde
city:
type: string
description: Ort Kunde
block:
type: string
description: Adresszusatz
example: null
stiege:
type: string
description: Adresszusatz
example: null
stock:
type: string
description: Adresszusatz
example: null
tuer:
type: string
description: Adresszusatz
example: null
phone:
type: string
description: Telefonnummer Kunde
email:
type: string
description: Emailadresse Kunde
preorderRequest:
type: object
properties:
extref:
type: string
description: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
orderDate:
type: string
format: date
description: Bestell- oder Vertragsdatum ISO 8601 Format. Darf nicht älter als 14 Tage sein
example: "2023-02-01"
preorderType:
type: string
enum: [interest, provision, order]
description: |
Vorbestelltyp
| preorderType | Description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
connectionType:
type: string
enum: [single-dwelling, multi-dwelling, apartment-building, apartment, business]
description: |
|connectionType | description |
|---------------|-------------|
| single-dwelling | Einfamilienhaus
| multi-dwelling | Mehrfamilienhaus (bis 3 Wohneinheiten)
| apartment-building | Mehrparteienhaus (ab 4 Wohneinheiten)
| apartment | Wohneinheit in Mehrparteienhaus
| business | Gewerbebetrieb |
connectionCount:
type: integer
default: 1
description: Anzahl Anschlüsse bei mehreren Anschlüssen in Mehrfamilienhaus
nullable: true
isAdditionalOrder:
type: boolean
default: false
description: wenn es sich um eine Zweitbestellung auf einer Wohneinheit handelt, muss `isAdditonalOrder` auf `true` gestellt werden, damit die Bestellung akzeptiert wird.
nullable: true
technology:
type: string
default: gpon
description: Bei Provider eingesetzte Technologie (optional, falls für Patchpunkt im POP nötig)
example: gpon
nullable: true
equipment_name:
type: string
default: null
description: Patchpunkt im POP (Gerätename)
nullable: true
example: "swmurau01"
equipment_port:
type: string
default: null
description: Patchpunkt im POP (Portnummer)
nullable: true
example: "b24"
acceptMarketing:
type: boolean
description: Zustimmung Datenspeicherung/-weitergabe
acceptAgb:
type: boolean
description: Zustimmung AGB
acceptDsgvo:
type: boolean
description: Zustimmung DSGVO
acceptWithdrawal:
type: boolean
description: Informationen zu Rücktrittsrecht akzeptiert
acceptDigging:
type: boolean
description: Zustimmung zu Grabungsarbeiten auf Privatgrund/Privatstraße gegeben
address:
type: object
description: Anschlussadresse
properties:
oaid:
type: string
description: Optional. OAID der Adresse oder OAID der Wohneinheit. Wird OAID angegeben, können die Adressbestandteile entfallen
example: AT-9999-abcdef01.001
street:
type: string
description: Strasse der Anschlussadresse
example: Beispielstraße
housenumber:
type: string
description: Hausnummer der Anschlussadresse
example: 13
stiege:
type: string
description: Stiege der Anschlussadresse
example: "2"
zip:
type: string
description: PLZ der Anschlussadresse
example: 9999
city:
type: string
description: Ort der Anschlussadresse
example: Beispielhausen
block:
type: string
description: Block der Anschlussadresse
example: ""
stock:
type: string
description: Stock der Anschlussadresse
example: 42
tuer:
type: string
description: Tür der Anschlussadresse
example: 1337
unit_string:
type: string
description: Zusatzangaben zur Identifizierung der Wohneinheit in einem String. Kann statt den Einzelfeldern (Block, Stiege, Stock, Tür) angegeben werden
example: Stg. 2 Stock 3 Tür 7
is_shipping:
type: boolean
description: Soll Starterkit an Anschlussadresse gesendet werden. Bei false wird das Starterkit an Vertrasinhaber (`customer`) gesendet.
example: true
address_info:
type: string
description: Zusätzliche Info zur Adresse
example: im Carport
customer:
type: object
description: Vertragsinhaber
properties:
type:
type: string
enum: ["owner","tenant"]
description: |
Ist diese Adresse Besitzer oder Bewohner der Wohneinheit. Optional, aber kann je nach Kampagne ein Pflichtfeld sein.
| type | Description |
|--------|-------------|
| owner | Ist Besitzer |
| tenant | Ist Bewohner|
company:
type: string
description: Firmenname Kunde
example:
uid:
type: string
description: UID (wenn Firmenkunde)
example:
firstname:
type: string
description: Vorname Kunde
example: Vor
lastname:
type: string
description: Nachname Kunde
example: Nachname
street:
type: string
description: Straße Kunde
example: Beispielstraße
housenumber:
type: string
description: Hausnummer Kunde
example: 42
zip:
type: string
description: PLZ Kunde
example: 9999
city:
type: string
description: Ort Kunde
example: Beispielhausen
block:
type: string
description: Adresszusatz
example: null
stiege:
type: string
description: Adresszusatz
example: null
stock:
type: string
description: Adresszusatz
example: null
tuer:
type: string
description: Adresszusatz
example: null
unit_string:
type: string
description: Zusatzangaben zur Identifizierung der Wohneinheit in einem String. Kann statt den Einzelfeldern (Block, Stiege, Stock, Tür) angegeben werden
example: Stg. 2 Stock 3 Tür 7
phone:
type: string
description: Telefonnummer Kunde
example: "01 1234 567 89"
email:
type: string
description: Emailadresse Kunde
example: this.email@does-not.exist
required:
- firstname
- lastname
- street
- zip
- city
addonServices:
type: array
description: |
Zusätzlich gebuchte Services
Services müssen nicht vordefiniert sein, es können benutzerdefinierte Services übergeben werden
items:
type: object
properties:
service:
type: string
description: Name des gebuchten Service
example: installation_inhouse
ordered:
type: boolean
description: Wurde dieses Service dazu gebucht
example: true
data:
type: array
items:
type: object
description: Zusätzlich benötigte Felder für Service
properties:
name:
type: string
description: Name für zusätzliches Feld
example: accept_data_forwarding
value:
type: string
description: Wert für zusätzliches Feld
example: true
additionalData:
type: object
description: Benutzerdefiniertes Objekt. Wird unverändert gespeichert und in `GET /preorder` wieder ausgegeben
example:
myData: Hallo
moreData: Welt
lotsMoreData:
- key: name
value: test
- key: another Key
value: more value
required:
- connectionType
- preorderType
- acceptMarketing
- acceptAgb
- acceptDsgvo
- acceptWithdrawal
- address
- customer
preorderStatusDetail:
type: object
properties:
code:
type: string
description: Eindeutiger Code der Vorbestellung
example: A1B2C3D4
oaid:
type: string
description: Open Access ID der Wohneinheit
example: AT-9999-abcdef01.001
extref:
type: string
description: Providereigener Identifikationsstring. Wird unverändert gespeichert und kann statt `code` in `GET /preorder` und `DELETE /preorder` angegeben werden. **Darf nicht mit Dateiendung wie z.B. `.json`, `.csv` enden, da diese als Ausgabeformat interpretiert werden können**
orderDate:
type: string
format: date
description: Bestell- oder Vertragsdatum ISO 8601 Format
example: "2023-02-01"
status:
type: object
properties:
code:
type: integer
description: status ID
example: 230
text:
type: string
description: Statustext
example: Fiber installation work assigned
flags:
type: array
items:
type: object
properties:
code:
type: integer
example: 141
text:
type: string
example: "Conduit on property border and FCP prepaired"
value:
type: boolean
example: true
ciftoken:
type: string
description: Customer Installation Feedback Token
example: "XArjnWQXGq4a8JWF"
cifurl:
type: string
description: Customer Installation Feedback Url
example: "https://pro.ichwillglasfaser.at/ClientSubmit/finishedInstallationWork?c=XArjnWQXGq4a8JWF"
cifcableurl:
type: string
description: Url to order various lengths of cable for Customer Installation
example: "https://www.ichwillglasfaser.at/CableOrderForm"
installationDate:
type: string
format: date-time
description: Installationstermin in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
connectionType:
type: string
enum: [single-dwelling, multi-dwelling, apartment-building, apartment, business]
description: |
|connectionType | description |
|---------------|-------------|
| single-dwelling | Einfamilienhaus
| multi-dwelling | Mehrfamilienhaus (bis 3 Wohneinheiten)
| apartment-building | Mehrparteienhaus (ab 4 Wohneinheiten)
| apartment | Wohneinheit in Mehrparteienhaus
| business | Gewerbebetrieb |
connectionCount:
type: integer
default: 1
description: Anzahl Anschlüsse für Rabatt bei mehreren Anschlüssen in Mehrfamilienhaus
nullable: true
preorderType:
type: string
enum: [interest, provision, order]
description: |
Vorbestelltyp
| preorderType | Description |
|--------------|-------------|
| interest | Interessensbekundung |
| provision | Vorsorgeanschluss |
| order | Vollanschluss |
| reorder | Nachbestellung (nach Bauabschluss) |
technology:
type: string
default: gpon
description: Bei Provider eingesetzte Technologie (optional, falls für Patchpunkt im POP nötig)
example: gpon
nullable: true
equipment_name:
type: string
default: null
description: Patchpunkt im POP (Gerätename)
nullable: true
example: "swmurau01"
equipment_port:
type: string
default: null
description: Patchpunkt im POP (Portnummer)
nullable: true
example: "b24"
acceptMarketing:
type: boolean
description: Zustimmung Datenspeicherung/-weitergabe
acceptAgb:
type: boolean
description: Zustimmung AGB
acceptDsgvo:
type: boolean
description: Zustimmung DSGVO
acceptWithdrawal:
type: boolean
description: Informationen zu Rücktrittsrecht akzeptiert
acceptDigging:
type: boolean
description: Zustimmung zu Grabungsarbeiten auf Privatgrund/Privatstraße gegeben
address_info:
type: string
description: Zusätzliche Info zur Adresse
example: im Carport
address:
$ref: '#/components/schemas/addressResponse'
customer:
$ref: '#/components/schemas/customerResponse'
addonServices:
type: array
description: |
Zusätzlich gebuchte Services
Services müssen nicht vordefiniert sein, es können benutzerdefinierte Services übergeben werden
items:
type: object
properties:
service:
type: string
description: Name des gebuchten Service
example: installation_inhouse
ordered:
type: boolean
description: Wurde dieses Service dazu gebucht
example: true
data:
type: array
items:
type: object
description: Zusätzlich benötigte Felder für Service
properties:
name:
type: string
description: Name für zusätzliches Feld
example: accept_data_forwarding
value:
type: string
description: Wert für zusätzliches Feld
example: true
additionalData:
type: object
description: Benutzerdefiniertes Objekt. Wird unverändert gespeichert und in `GET /preorder` wieder ausgegeben
example:
myData: Hallo
moreData: Welt
lotsMoreData:
- key: name
value: test
- key: another Key
value: more value
created:
type: string
format: date-time
description: Zeitpunkt der Anlage der Bestellung in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
created_ts:
type: integer
description: Zeitpunkt der Anlage der Bestellung in Sekunden seit der Unix Epoche
example: 1675206000
updated:
type: string
format: date-time
description: Zeitpunkt der letzen Bearbeitung der Bestellung in ISO 8601 Format
example: "2023-02-01T00:00:00+01:00"
updated_ts:
type: integer
description: Zeitpunkt der letzten Bearbeitung der Bestellung in Sekunden seit der Unix Epoche
example: 1675206000
cifResponseData:
type: object
properties:
ciftoken:
type: string
description: Cif Token
example: AbcdEFG123
code:
type: string
description: Eindeutiger Code der Vorbestellung
example: A1B2C3D4
oaid:
type: string
description: Open Access ID der Wohneinheit
example: AT-9999-abcdef01.001
company:
type: string
description: Firmenname Kunde
example:
uid:
type: string
description: UID (wenn Firmenkunde)
example:
firstname:
type: string
description: Vorname Kunde
example: Vor
lastname:
type: string
description: Nachname Kunde
example: Nachname
street:
type: string
description: Straße Kunde
example: Beispielstraße
housenumber:
type: string
description: Hausnummer Kunde
example: 42
stiege:
type: string
description: Stiege
example: 2
zip:
type: string
description: PLZ Kunde
example: 9999
city:
type: string
description: Gemeinde oder Ortschaft
example: Gemeinde/Ort
municipality:
type: string
description: Gemeinde
example: Gemeinde
district:
type: string
description: Ortschaft/Ortsteil
example: Ortschaft/Ortsteil
block:
type: string
description: Adresszusatz
example: null
stock:
type: string
description: Adresszusatz
example: null
tuer:
type: string
description: Adresszusatz
example: null
securitySchemes:
api_key_header:
type: apiKey
name: X-Api-Key
in: header
api_key_query:
type: apiKey
name: apikey
in: query
security:
- api_key_header: []
- api_key_query: []