Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/deutschland_generator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ jobs:
set -C; echo "extends: spectral:oas" > .spectral.yaml
# Runs a single command using the runners shell
- name: "Lint file"
uses: stoplightio/spectral-action@v0.8.1
uses: stoplightio/spectral-action@v0.8.2
with:
file_glob: "openapi.yaml"

- name: "Generate deutschland code"
uses: wirthual/deutschland-generator-action@latest
with:
openapi-file: ${{ github.workspace }}/openapi.yaml
commit-to-git: false #true
upload-to-pypi: false #true
commit-to-git: true
upload-to-pypi: true
upload-to-testpypi: false
pypi-token: ${{ secrets.PYPI_PRODUCTION }}
testpypi-token: ${{ secrets.PYPI_TEST }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/openapi_check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
set -C; echo "extends: spectral:oas" > .spectral.yaml

# Run Spectral
- uses: stoplightio/spectral-action@v0.8.1
- uses: stoplightio/spectral-action@v0.8.2
with:
file_glob: openapi.yaml
spectral_ruleset: .spectral.yaml
2 changes: 1 addition & 1 deletion CNAME
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<url>.api.bund.dev
abfallnavi.api.bund.dev
58 changes: 42 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,54 @@

Zugriff auf die Termine der Müllabfuhr.

Die Firma [regio iT](https://www.regioit.de) bietet für diverse Komunen die Software [abfallnavi](https://www.regioit.de/produkte-leistungen/sap-loesungen/entsorgung/abfallapp-abfallnavi) an.
Die Firma [regio iT](https://www.regioit.de) bietet für diverse Kommunen die Software [abfallnavi](https://www.regioit.de/produkte-leistungen/sap-loesungen/entsorgung/abfallapp-abfallnavi) an.

## Bekannte Komunen:

## Bekannte Kommunen:

* [Aachen](https://serviceportal.aachen.de/abfallnavi)
* [AWA Entsorgungs GmbH](https://abfallkalender.regioit.de/abfall-webapp-awa/)
* Bergisch Gladbach
* Bergischer Abfallwirtschaftverbund
* Dinslaken
* Dorsten
* Gütersloh
* Halver
* Kreis Coesfeld
* Kreis Heinsberg
* Kreis Pinneberg
* [Bergisch Gladbach](https://www.bergischgladbach.de/abfuhrbezirksabfrage.aspx)
* [Bergischer Abfallwirtschaftverbund](https://www.bavweb.de/Bergischer-Abfallwirtschaftsverband/Einsammeln-und-Transportieren-in-/Engelskirchen/)
* [Dinslaken](https://www.dinslaken.de/de/dienstleistungen/abfall-navi/)
* [Dorsten](https://www.ebd-dorsten.de/)
* [Gütersloh](https://buergerportal.guetersloh.de/abfallkalender)
* [Halver](https://www.halver.de/2014/rathaus_politik/abfall/abfallkalender/index.php)
* [Kreis Coesfeld](https://www.wbc-coesfeld.de/service/abfall-infos-ihrer-stadt-gemeinde.html)
* [Kreis Heinsberg](https://abfallnavi.de/heinsberg/)
* [Kreis Pinneberg](https://abfall.kreis-pinneberg.de/Service+_+Termine/Abfuhrtermine+%28alle+Orte%29.html)
* [Kreis Warendorf](https://abfallnavi.de/krgt/)
* Lindlar
* Lüdenscheid
* Norderstedt
* [Lindlar](https://www.lindlar.de/buergerinfo-und-service/abfallentsorgung.html)
* [Lüdenscheid](https://www.stl-luedenscheid.de/abfallnavi)
* [Norderstedt](https://www.betriebsamt-norderstedt.de/Abfall/Service/Abfall-App/)
* [Nürnberg](https://www.nuernberg.de/internet/abfallwirtschaft/abfallkalender_app.html)
* Roetgen
* EGW Westmünsterland
* [Roetgen](https://buergerportal.roetgen.de/abfallnavi)
* [Solingen](https://www.solingen.de/tbs/inhalt/abfallnavi/)
* [EGW Westmünsterland](https://www.egw.de/service/abfallberatung/abfallappwestmunsterland/)

Weitere potentielle Kommunen:
* https://ozg.kdn.de/loesungen/details/abfallnawi


# Benutzungshinweis

Für die Abfrage von Terminen ist eine Reihe von IDs (von Orten, Straßen und/oder Hausnummern) in Erfahrung zu bringen.
**Vorsicht**:*IDs können sich mit der Zeit ändern*

1. Orte aus System holen (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte);
2. Mit Ort die Straßen abfragen (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte/$ortId/strassen);
3. Mit Straße die Hausnummern abfragen (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte/$ortId/strassen/$strassenId);
4. Mit Haunummer die möglichen Fraktionen (Müllsorten) abfragen (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/hausnummern/$hausnummernId/fraktionen);
5. Mit Hausnummer alle Termine abrufen (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/hausnummern/$hausnummernId/termine). Manchmal wird nicht nach Hausnummer unterschieden (z.B. https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/strassen/$strassenId/termine).

## Beispiel
```bash
ortId=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte | jq '.[0].id');
strassenId=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte/$ortId/strassen | jq '.[] | select(.name == "Aachener Strasse").id');
hausnummernId=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/orte/$ortId/strassen/$strassenId | jq '.[] | select(.name=="Aachener Strasse").hausNrList | .[] | select(.nr=="1").id');
fraktionsId=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/fraktionen | jq '.[] | select(.name=="Restabfall").id');
fraktionsId2=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/hausnummern/$hausnummernId/fraktionen | jq '.[] | select(.name=="Restabfall").id');
fraktionsId3=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/strassen/$strassenId/fraktionen);
termine=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/strassen/$strassenId/termine);
termine2=$(curl -s https://nuernberg-abfallapp.regioit.de/abfall-app-nuernberg/rest/hausnummern/$hausnummernId/termine);
```
26 changes: 2 additions & 24 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,36 +27,14 @@
document.getElementById('en').onclick = function() {
const ui = SwaggerUIBundle({
url: "openapi_en.yaml",
dom_id: "#openapi",
requestInterceptor: function(req) {
var mapping = {
// add mapping here
}
if(this.url !== "openapi_en.yaml") {
var url = new URL(req.url);
url.hostname = mapping[url.hostname];
req.url = url.href;
}
return req;
},
dom_id: "#openapi"
})

};
window.onload = function () {
const ui = SwaggerUIBundle({
url: "openapi.yaml",
dom_id: "#openapi",
requestInterceptor: function(req) {
var mapping = {
// add mapping here
}
if(this.url !== "openapi.yaml") {
var url = new URL(req.url);
url.hostname = mapping[url.hostname];
req.url = url.href;
}
return req;
},
dom_id: "#openapi"
})
}
</script>
Expand Down
92 changes: 75 additions & 17 deletions openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ servers:
- "nds" # Norderstedt
- "nuernberg" # Nürnberg
- "roe" # Roetgen
- "solingen" # Solingen
- "wml2" # EGW Westmünsterland
default: "nuernberg"
description: Region
Expand Down Expand Up @@ -51,9 +52,13 @@ info:
* `nds`: Norderstedt
* `nuernberg`: Nürnberg
* `roe`: Roetgen
* `solingen`: Solingen
* `wml2`: EGW Westmünsterland

# Benutzung

Für die Abfrage von Terminen ist eine Reihe von IDs (von Orten, Straßen und/oder Hausnummern) in Erfahrung zu bringen. Vorsicht:IDs können sich mit der Zeit ändern

1. Orte aus System holen
2. Mit Ort die Straßen abfragen
3. Mit Straße die Hausnummern abfragen
Expand All @@ -73,7 +78,7 @@ paths:
/orte:
get:
summary: Orte im System
description: Orte die von diesem API-Endpoint bedient werden
description: Orte die von diesem API-Endpoint bedient werden.
operationId: orte
tags:
- "Abholpunkte"
Expand All @@ -86,12 +91,36 @@ paths:
type: array
items:
$ref: "#/components/schemas/Ort"

/orte/{ortId}:
get:
summary: Informationen zu Ort
description: Informationen zu einem Ort
operationId: ort
tags:
- "Abholpunkte"
parameters:
- in: path
name: ortId
description: Id des Ortes
required: true
schema:
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Ort2"

/orte/{ortId}/strassen:
get:
summary: Straßen im Ort
description: |
Straßen im Ort.
Straßen im Ort. Siehe id unter Pfad `/orte` für die ortId.

**Warnung**: Die Antwort dieser Anfrage ist zu groß für Anzeige innerhalb der Webseite
operationId: strassenProOrt
Expand All @@ -104,13 +133,12 @@ paths:
required: true
schema:
type: integer
example: 4407686
responses:
"200":
description: |
OK

**Hinweis**: Nur in der ersten Straße ist `hausNrList` befüllt.
**Hinweis**: Nur für die erste Straße ist `hausNrList` befüllt.
content:
application/json:
schema:
Expand All @@ -121,7 +149,7 @@ paths:
/strassen/{strassenId}:
get:
summary: Hausnummern in Straße
description: Hausnummern in Straße
description: Hausnummern in Straße. Siehe id unter Pfad `/orte/{ortId}/strassen` für die strassenId.
operationId: hausnummernProStrasse
tags:
- "Abholpunkte"
Expand All @@ -132,7 +160,6 @@ paths:
required: true
schema:
type: integer
example: 4432667
responses:
"200":
description: OK
Expand All @@ -144,7 +171,7 @@ paths:
/fraktionen:
get:
summary: Müllarten im System
description: Welche Müllarten es im System
description: Welche Müllarten es im System gibt (z.B. Restabfall, Bioabfall, Papiertonne, Gelbe Tonne, Papiertonne 1100)
operationId: muellarten
tags:
- "Fraktionen"
Expand All @@ -161,7 +188,7 @@ paths:
/hausnummern/{hausnummernId}/fraktionen:
get:
summary: Müllarten für Hausnummer
description: Welche Müllarten es gibt an einer Hausnummer
description: Welche Müllarten es an einer Hausnummer gibt. Siehe id unter Pfad `/strassen/{strassenId}` für die hausnummernId.
operationId: muellartenProHausnummer
tags:
- "Fraktionen"
Expand All @@ -172,7 +199,6 @@ paths:
required: true
schema:
type: integer
example: 4432679
responses:
"200":
description: OK
Expand All @@ -183,10 +209,34 @@ paths:
items:
$ref: "#/components/schemas/Fraktion"

/strassen/{strassenId}/fraktionen:
get:
summary: Müllarten für Straßen
description: Welche Müllarten es in einer Straße gibt. Siehe id unter Pfad `/orte/{ortId}/strassen` für die strassenId.
operationId: muellartenProStrasse
tags:
- "Fraktionen"
parameters:
- in: path
name: strassenId
description: Id der Straße
required: true
schema:
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Fraktion"

/strassen/{strassenId}/termine:
get:
summary: Abholtermine für Straße
description: Abholtermine für Straße
description: Abholtermine für Straße. Siehe id unter Pfad `/orte/{ortId}/strassen` für die strassenId.
operationId: termineProStrasse
tags:
- "Termine"
Expand All @@ -197,7 +247,6 @@ paths:
required: true
schema:
type: integer
example: 4432667
- in: query
name: fraktion
required: true
Expand All @@ -219,7 +268,7 @@ paths:
/hausnummern/{hausnummernId}/termine:
get:
summary: Abholtermine für Hausnummer
description: Abholtermine für Hausnummer
description: Abholtermine für Hausnummer. Siehe id unter Pfad `/strassen/{strassenId}` für die hausnummernId.
operationId: termineProHaussnummer
tags:
- "Termine"
Expand All @@ -230,7 +279,6 @@ paths:
required: true
schema:
type: integer
example: 4432679
- in: query
name: fraktion
required: true
Expand Down Expand Up @@ -297,14 +345,12 @@ paths:
required: true
schema:
type: integer
example: 4432667
- in: query
name: hnr
description: Id der Hausnummer
required: true
schema:
type: integer
example: 4432679
- in: query
name: fraktion
required: true
Expand All @@ -325,6 +371,18 @@ paths:
components:
schemas:
Ort:
type: array
items:
type: object
properties:
id:
type: integer
format: int64
example: 4407686
name:
type: string
example: Nürnberg
Ort2:
type: object
properties:
id:
Expand All @@ -333,7 +391,7 @@ components:
example: 4407686
name:
type: string
example: Nürnberg
example: Nürnberg
Strasse:
type: object
properties:
Expand Down Expand Up @@ -417,7 +475,7 @@ components:
example: "17"
gueltigAb:
type: object
#example: null # TOOD Scheint immer null zu sein
#example: null # TODO Scheint immer null zu sein
fraktiionId:
type: integer
format: int64
Expand Down
Loading