Repository: obspy/obspy

Issue:
FDSN client / get_stations_bulk(): typo in query parameter of POST request
### Avoid duplicates

- [X] I searched existing issues

### Bug Summary

A rather stupid typo for a query parameter, but it seems that it took quite some time to surface. 
It has been around for more then 8 years.
Impressive but true. 

https://github.com/obspy/obspy/blob/1c656830a33e72b7d335f01d28c38b97d8c4d58a/obspy/clients/fdsn/client.py#L1185

Probably most other services just ignore unknown parameters.


### Code to Reproduce

```python
import obspy
from obspy.clients.fdsn import Client

client = Client("INGV", debug=True)

bulk = [('IV', 'ACER','*', 'BHZ,HHZ', '2021-01-01T00:00:00','2021-12-31T00:00:00')]

inv = client.get_stations_bulk(bulk, 
                               level="channel", 
                               includerestricted=False)
```


### Error Traceback

```Python traceback
Downloading http://webservices.ingv.it/fdsnws/station/1/query with requesting gzip compression
Sending along the following payload:
----------------------------------------------------------------------
level=channel
includerestriced=false
IV ACER * BHZ,HHZ 2021-01-01T00:00:00 2021-12-31T00:00:00
----------------------------------------------------------------------
HTTP error 400, reason Bad Request, while downloading 'http://webservices.ingv.it/fdsnws/station/1/query': b'Error 400\n\nBad Request: \n doIngvProcessing - Unknown query parameters: includerestriced\n\nRequest: \n http://webservices.ingv.it/fdsnws/station/1/query\n\nInput request (POST): \nlevel=channel\nincluderestriced=false\nIV ACER * BHZ,HHZ 2021-01-01T00:00:00 2021-12-31T00:00:00\n\nRequest Submitted: \n 2022-09-13T14:09:55 UTC\n\nService version: \n 1.1.48.6'

---------------------------------------------------------------------------
FDSNBadRequestException                   Traceback (most recent call last)
Input In [4], in <cell line: 4>()
      1 bulk = [('IV', 'ACER','*', 'BHZ,HHZ', '2021-01-01T00:00:00','2021-12-31T00:00:00')]
      2 #IV AGLI * BHZ,HHZ 2021-01-01T00:00:00 2021-12-31T00:00:00
----> 4 inv = client.get_stations_bulk(bulk, 
      5                                level="channel", 
      6                                includerestricted=False)

File /opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/obspy/clients/fdsn/client.py:1191, in Client.get_stations_bulk(self, bulk, level, includerestricted, includeavailability, filename, **kwargs)
   1187 bulk = get_bulk_string(bulk, arguments)
   1189 url = self._build_url("station", "query")
-> 1191 data_stream = self._download(url,
   1192                              data=bulk)
   1193 data_stream.seek(0, 0)
   1194 if filename:

File /opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/obspy/clients/fdsn/client.py:1419, in Client._download(self, url, return_string, data, use_gzip)
   1414 def _download(self, url, return_string=False, data=None, use_gzip=True):
   1415     code, data = download_url(
   1416         url, opener=self._url_opener, headers=self.request_headers,
   1417         debug=self.debug, return_string=return_string, data=data,
   1418         timeout=self.timeout, use_gzip=use_gzip)
-> 1419     raise_on_error(code, data)
   1420     return data

File /opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/obspy/clients/fdsn/client.py:1751, in raise_on_error(code, data)
   1748 elif code == 400:
   1749     msg = ("Bad request. If you think your request was valid "
   1750            "please contact the developers.")
-> 1751     raise FDSNBadRequestException(msg, server_info)
   1752 elif code == 401:
   1753     raise FDSNUnauthorizedException("Unauthorized, authentication "
   1754                                     "required.", server_info)

FDSNBadRequestException: Bad request. If you think your request was valid please contact the developers.
HTTP Status code: 400
Detailed response of server:
```


### ObsPy Version?

discovered on 1.3.0; but seems to be present on master as well

### Operating System?

macOS (not relevant)

### Python Version?

3.10.7 (not relevant)

### Installation Method?

_No response_


Discussion:

Resolving patch:
diff --git a/obspy/clients/fdsn/client.py b/obspy/clients/fdsn/client.py
--- a/obspy/clients/fdsn/client.py
+++ b/obspy/clients/fdsn/client.py
@@ -1182,7 +1182,7 @@ def get_stations_bulk(self, bulk, level=None, includerestricted=None,
 
         arguments = OrderedDict(
             level=level,
-            includerestriced=includerestricted,
+            includerestricted=includerestricted,
             includeavailability=includeavailability
         )
         bulk = get_bulk_string(bulk, arguments)


Test patch: