496 lines
14 KiB
YAML
496 lines
14 KiB
YAML
openapi: 3.0.1
|
|
info:
|
|
title: thetool Preorder API
|
|
description: API Dokumentation für thetool Vorbestellung
|
|
contact:
|
|
name: thetool Development Team
|
|
email: thetool-api-support@xinon.at
|
|
license:
|
|
name: Apache 2.0 License
|
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
version: 1.0.0
|
|
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: Informationen zum Netzgebiet und Speichern von Vorbestellungen
|
|
paths:
|
|
/addressdb/findAddress:
|
|
post:
|
|
tags:
|
|
- addressdb
|
|
summary: Adressen suchen
|
|
description: Sucht nach Adressen
|
|
operationId: findAddresses
|
|
requestBody:
|
|
description: |
|
|
addressSearchRequest object
|
|
|
|
Parameter müssen mindestens 3 Zeichen lang sein
|
|
|
|
`street` ist erforderlich
|
|
|
|
`zip` muss mindestens 2 Zeichen lang sein
|
|
required: true
|
|
content:
|
|
'application/json':
|
|
schema:
|
|
$ref: '#/components/schemas/Address'
|
|
'application/x-www-form-urlencoded':
|
|
schema:
|
|
$ref: '#/components/schemas/Address'
|
|
responses:
|
|
'200':
|
|
description: Successful operation
|
|
content:
|
|
application/json:
|
|
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/findStreet:
|
|
post:
|
|
tags:
|
|
- addressdb
|
|
summary: Straßen suchen
|
|
description: Sucht nach Straßen
|
|
operationId: findStreets
|
|
requestBody:
|
|
description: addressComponentSearchRequest object. Parameter `search` muss mindestens 3 Zeichen lang sein.
|
|
required: true
|
|
content:
|
|
'application/json':
|
|
schema:
|
|
$ref: '#/components/schemas/addressComponentSearchRequest'
|
|
'application/x-www-form-urlencoded':
|
|
schema:
|
|
$ref: '#/components/schemas/addressComponentSearchRequest'
|
|
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:
|
|
post:
|
|
tags:
|
|
- addressdb
|
|
summary: Postleitzahlen suchen
|
|
description: Sucht nach Postleitzahlen
|
|
operationId: findZips
|
|
requestBody:
|
|
description: zipSearchRequest object. Parameter `search` muss mindestens 2 Zeichen lang sein.
|
|
required: true
|
|
content:
|
|
'application/json':
|
|
schema:
|
|
$ref: '#/components/schemas/zipComponentSearchRequest'
|
|
'application/x-www-form-urlencoded':
|
|
schema:
|
|
$ref: '#/components/schemas/zipComponentSearchRequest'
|
|
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:
|
|
post:
|
|
tags:
|
|
- addressdb
|
|
summary: Ortschaften suchen
|
|
description: Sucht nach Ortschaften
|
|
operationId: findCity
|
|
requestBody:
|
|
description: addressComponentSearchRequest object. Parameter `search` muss mindestens 3 Zeichen lang sein.
|
|
required: true
|
|
content:
|
|
'application/json':
|
|
schema:
|
|
$ref: '#/components/schemas/addressComponentSearchRequest'
|
|
'application/x-www-form-urlencoded':
|
|
schema:
|
|
$ref: '#/components/schemas/addressComponentSearchRequest'
|
|
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
|
|
/preorder:
|
|
post:
|
|
tags:
|
|
- preorder
|
|
summary: Vorbestellung registrieren
|
|
description: "Registriert eine Vorbestellung. Parameter `type` bestimmt Vorbestelltyp: 'interest' = Interessensbekundung, 'provision' = Vorsorgeanschluss, 'order' = Vollanschluss"
|
|
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
|
|
'400':
|
|
description: |
|
|
Bad Request
|
|
|
|
Parameter missing or malformed
|
|
'401':
|
|
description: Unauthorized
|
|
'404':
|
|
description: Adresse oder Wohneinheit nicht gefunden
|
|
# /preorder/{code}:
|
|
# get:
|
|
# tags:
|
|
# - preorder
|
|
# summary: Details zur Vorbestellung (noch nicht Final)
|
|
# description: Gibt Details zum Status der Vorbestellung/Bestellung zurück **(noch nicht Final)**
|
|
# operationId: getPreorderStatus
|
|
# parameters:
|
|
# - name: code
|
|
# in: path
|
|
# description: code der Vorbestellung
|
|
# required: true
|
|
# schema:
|
|
# type: string
|
|
# responses:
|
|
# '200':
|
|
# description: |
|
|
# Successful operation
|
|
#
|
|
# Mögliche Werte für Rückgabewert `status`
|
|
#
|
|
# | id | text | description |
|
|
# |------|------|-------------|
|
|
# | 100 | Aufgenommen | Interessensbekundung/Vorbestellung aufgenommen |
|
|
# | 110 | Tiefbau in Planung | |
|
|
# | 120 | Tiefbau in Arbeit | |
|
|
# | 200 | Tiefbau abgeschlossen | |
|
|
# | 210 | Leitungsbau in planung | |
|
|
# | 220 | Leitungsbau in Arbeit | |
|
|
# | 230 | Leitungsbau abgeschlossen | |
|
|
# | 300 | Leitungskonfiguration in Planung | |
|
|
# | 310 | Leitungskonfiguration in Arbeit | |
|
|
# | 320 | Leitung hergestellt | Produkt bestellbar |
|
|
# 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
|
|
components:
|
|
schemas:
|
|
addressComponentSearchRequest:
|
|
type: object
|
|
properties:
|
|
search:
|
|
type: string
|
|
description: Suchbegriff von mindestens 3 Zeichen Länge
|
|
minLength: 3
|
|
zipComponentSearchRequest:
|
|
type: object
|
|
properties:
|
|
search:
|
|
type: string
|
|
description: Suchbegriff von mindestens 2 Zeichen Länge
|
|
minLength: 2
|
|
Zips:
|
|
type: array
|
|
items:
|
|
type: string
|
|
Cities:
|
|
type: array
|
|
items:
|
|
type: string
|
|
Streets:
|
|
type: array
|
|
items:
|
|
type: string
|
|
Addresses:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Address'
|
|
Address:
|
|
type: object
|
|
properties:
|
|
street:
|
|
type: string
|
|
description: Straße
|
|
housenumber:
|
|
type: string
|
|
description: Hausnummer
|
|
zip:
|
|
type: string
|
|
description: PLZ
|
|
city:
|
|
type: string
|
|
description: Ortschaft
|
|
required:
|
|
- street
|
|
addressResponse:
|
|
type: object
|
|
properties:
|
|
street:
|
|
type: string
|
|
description: Strasse der Anschlussadresse
|
|
housenumber:
|
|
type: string
|
|
description: Hausnummer der Anschlussadresse
|
|
zip:
|
|
type: string
|
|
description: PLZ der Anschlussadresse
|
|
city:
|
|
type: string
|
|
description: Ort der Anschlussadresse
|
|
block:
|
|
type: string
|
|
description: Block der Anschlussadresse
|
|
stock:
|
|
type: string
|
|
description: Stock der Anschlussadresse
|
|
stiege:
|
|
type: string
|
|
description: Stiege 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
|
|
zip:
|
|
type: string
|
|
description: PLZ Kunde
|
|
city:
|
|
type: string
|
|
description: Ort Kunde
|
|
phone:
|
|
type: string
|
|
description: Telefonnummer Kunde
|
|
email:
|
|
type: string
|
|
description: Emailadresse Kunde
|
|
preorderRequest:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [interest, provision]
|
|
description: Vorbestelltyp (`interest` = Interessensbekundung, `provision` = Vorsorgeanschluss)
|
|
address:
|
|
type: object
|
|
properties:
|
|
street:
|
|
type: string
|
|
description: Strasse der Anschlussadresse
|
|
housenumber:
|
|
type: string
|
|
description: Hausnummer der Anschlussadresse
|
|
zip:
|
|
type: string
|
|
description: PLZ der Anschlussadresse
|
|
city:
|
|
type: string
|
|
description: Ort der Anschlussadresse
|
|
block:
|
|
type: string
|
|
description: Block der Anschlussadresse
|
|
stock:
|
|
type: string
|
|
description: Stock der Anschlussadresse
|
|
stiege:
|
|
type: string
|
|
description: Stiege der Anschlussadresse
|
|
tuer:
|
|
type: string
|
|
description: Tür der Anschlussadresse
|
|
required:
|
|
- street
|
|
- housenumber
|
|
- zip
|
|
- city
|
|
customer:
|
|
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
|
|
zip:
|
|
type: string
|
|
description: PLZ Kunde
|
|
city:
|
|
type: string
|
|
description: Ort Kunde
|
|
phone:
|
|
type: string
|
|
description: Telefonnummer Kunde
|
|
email:
|
|
type: string
|
|
description: Emailadresse Kunde
|
|
required:
|
|
- firstname
|
|
- lastname
|
|
- street
|
|
- zip
|
|
- city
|
|
preorderStatusDetail:
|
|
type: object
|
|
properties:
|
|
address:
|
|
$ref: '#/components/schemas/addressResponse'
|
|
customer:
|
|
$ref: '#/components/schemas/customerResponse'
|
|
status:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: int
|
|
description: status ID
|
|
example: 220
|
|
text:
|
|
type: string
|
|
description: Statustext
|
|
|
|
example: Tiefbau abgeschlossen, Leitungsbau ausständig
|
|
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: []
|