GIScience / GIScience/ohsome-quality-api
Ohsome API unavailable
- Dominant language
- Python
- Stars
- 51
- Forks
- 7
- Avg merge
- 21h 54m
- Merged PRs (30d)
- 9
Description
Ohsome dashboard returns 503 Service Unavaiable
Example https://dashboard.ohsome.org/en/#backend=oqtApi&topic=building-count&adminids=-52411&indicators=mapping-saturation
```
OhsomeApiError
Querying the ohsome API failed! Service Unavailable
```
```
{ "headers": { "headers": {}, "normalizedNames": {}, "lazyUpdate": null }, "status": 503, "statusText": "Unknown Error", "url": "https://api.ohsome.org/v1/elements/count", "ok": false, "redirected": false, "responseType": "cors", "name": "HttpErrorResponse", "message": "Http failure response for https://api.ohsome.org/v1/elements/count: 503 ", "error": { "timestamp": "2026-07-03T13:47:12.573+00:00", "status": 503, "error": "Service Unavailable", "path": "/elements/count" } }
```
No error in web console, only this other error
```
polyfills-CUXT7X2P.js:2 POST https://api.quality.ohsome.org/v1/indicators/mapping-saturation 422 (Unprocessable Content)
(anonymous) @ polyfills-CUXT7X2P.js:2
t. @ polyfills-CUXT7X2P.js:1
(anonymous) @ main-FJ2IVEKD.js:4087
(anonymous) @ main-FJ2IVEKD.js:4087
runOutsideAngular @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4087
(anonymous) @ chunk-VISIUPMA.js:1
A @ polyfills-CUXT7X2P.js:2
D @ chunk-VISIUPMA.js:1
doRequest @ main-FJ2IVEKD.js:4087
(anonymous) @ main-FJ2IVEKD.js:4087
_trySubscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
r @ main-FJ2IVEKD.js:4085
o @ main-FJ2IVEKD.js:4085
_next @ main-FJ2IVEKD.js:4085
next @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
_trySubscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
mA @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
(anonymous) @ main-FJ2IVEKD.js:4085
Lg @ main-FJ2IVEKD.js:4085
subscribe @ main-FJ2IVEKD.js:4085
getIndicatorResults @ main-FJ2IVEKD.js:4095
ngOnInit @ main-FJ2IVEKD.js:4095
d4 @ main-FJ2IVEKD.js:4086
Z6 @ main-FJ2IVEKD.js:4086
Y4 @ main-FJ2IVEKD.js:4086
e_ @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
t5 @ main-FJ2IVEKD.js:4086
e5 @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
FF @ main-FJ2IVEKD.js:4086
Qk @ main-FJ2IVEKD.js:4086
detectChanges @ main-FJ2IVEKD.js:4086
ngOnInit @ main-FJ2IVEKD.js:4095
d4 @ main-FJ2IVEKD.js:4086
Z6 @ main-FJ2IVEKD.js:4086
Y4 @ main-FJ2IVEKD.js:4086
e_ @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
t5 @ main-FJ2IVEKD.js:4086
e5 @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
t5 @ main-FJ2IVEKD.js:4086
NF @ main-FJ2IVEKD.js:4086
n5 @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
t5 @ main-FJ2IVEKD.js:4086
NF @ main-FJ2IVEKD.js:4086
n5 @ main-FJ2IVEKD.js:4086
RF @ main-FJ2IVEKD.js:4086
aM @ main-FJ2IVEKD.js:4086
FF @ main-FJ2IVEKD.js:4086
Qk @ main-FJ2IVEKD.js:4086
synchronizeOnce @ main-FJ2IVEKD.js:4086
synchronize @ main-FJ2IVEKD.js:4086
tickImpl @ main-FJ2IVEKD.js:4086
_tick @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4086
run @ main-FJ2IVEKD.js:4086
tick @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4086
D. @ polyfills-CUXT7X2P.js:1
invokeTask @ polyfills-CUXT7X2P.js:1
runTask @ polyfills-CUXT7X2P.js:1
invokeTask @ polyfills-CUXT7X2P.js:1
T.g.useG.invoke @ polyfills-CUXT7X2P.js:1
E._.args. @ polyfills-CUXT7X2P.js:1
requestAnimationFrame
E @ polyfills-CUXT7X2P.js:1
scheduleTask @ polyfills-CUXT7X2P.js:1
scheduleTask @ polyfills-CUXT7X2P.js:1
scheduleMacroTask @ polyfills-CUXT7X2P.js:1
ze @ polyfills-CUXT7X2P.js:1
(anonymous) @ polyfills-CUXT7X2P.js:1
t. @ polyfills-CUXT7X2P.js:1
M3 @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4086
runOutsideAngular @ main-FJ2IVEKD.js:4086
notify @ main-FJ2IVEKD.js:4086
iT @ main-FJ2IVEKD.js:4086
n @ main-FJ2IVEKD.js:4086
(anonymous) @ main-FJ2IVEKD.js:4086
invokeTask @ polyfills-CUXT7X2P.js:1
runTask @ polyfills-CUXT7X2P.js:1
invokeTask @ polyfills-CUXT7X2P.js:1
Z @ polyfills-CUXT7X2P.js:1
j @ polyfills-CUXT7X2P.js:1
x @ polyfills-CUXT7X2P.js:1
```
Chrome 150.0.7871.47 on Windows 10
cc @matthiasschaub
Contributor guide
Research direction
Start by reproducing the dashboard request from the supplied example and checking the reported /v1/elements/count and /v1/indicators/mapping-saturation endpoints. Trace the API path responsible for these responses; done means the dashboard request no longer produces the reported 503 or 422 errors, with the cause and verification documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100