diff --git a/alertaclient/api.py b/alertaclient/api.py
index 9b01293..391d7b3 100644
--- a/alertaclient/api.py
+++ b/alertaclient/api.py
@@ -510,6 +510,9 @@ class TokenAuth(AuthBase):
 
 class HTTPClient:
 
+    DEFAULT_PAGE_NUMBER = 1
+    DEFAULT_PAGE_SIZE = 50
+
     def __init__(self, endpoint, key=None, secret=None, token=None, username=None, password=None, timeout=30.0, ssl_verify=True, headers=None, debug=False):
         self.endpoint = endpoint
         self.auth = None
@@ -542,9 +545,9 @@ class HTTPClient:
     def get(self, path, query=None, **kwargs):
         query = query or []
         if 'page' in kwargs:
-            query.append(('page', kwargs['page']))
+            query.append(('page', kwargs.get('page') or self.DEFAULT_PAGE_NUMBER))
         if 'page_size' in kwargs:
-            query.append(('page-size', kwargs['page_size']))
+            query.append(('page-size', kwargs.get('page_size') or self.DEFAULT_PAGE_SIZE))
 
         url = self.endpoint + path + '?' + urlencode(query, doseq=True)
         try:

SDK passing page size as "None" if not set
**Issue Summary**

api_1  | 192.168.208.4 - - [19/Apr/2020 09:58:23] "GET /alert/0a4e3cdd-65c2-4e20-8d9e-678123fef2af/notes?page=1&page-size=None HTTP/1.1" 200 -


**Environment**
- OS: [eg. Linux, Mac, Windows]
- API version: [eg. 6.8.1]
- Deployment: [eg. Docker, Heroku, AWS, GCloud, self-hosted]
- For self-hosted, WSGI environment: [eg. nginx/uwsgi, apache/mod_wsgi]

- Database: [eg. MongoDB, Postgres]

- Server config:
  Auth enabled? Yes/No
  Auth provider? Google, GitHub, OpenID, Basic, LDAP, etc
  Customer views? Yes/No
  (or provide the `/config` endpoint output)

- web UI version: [eg. 6.8.1]
- CLI version: [eg. 6.8.1]

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....' or Run '...'
3. Scroll down to '....'
4. See error (include command output)

For web app issues, include any web browser JavaScript console errors.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional context**
Add any other context about the problem here.


NOTE: Please provide as much information about your issue as possible.
Failure to provide basic details about your specific environment make
it impossible to know if an issue has already been fixed, can delay a
response and may result in your issue being closed without a resolution.


diff --git a/tests/unit/test_http_client.py b/tests/unit/test_http_client.py
new file mode 100644
index 0000000..e0deb7e
--- /dev/null
+++ b/tests/unit/test_http_client.py
@@ -0,0 +1,47 @@
+import unittest
+
+import requests_mock
+
+from alertaclient.api import HTTPClient
+
+
+class HttpClientTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.http = HTTPClient(endpoint='https://httpbin.org')
+
+    @requests_mock.mock()
+    def test_query_string(self, m):
+
+        m.get('https://httpbin.org/get', text='{}')
+        m.post('https://httpbin.org/post', text='{}')
+        m.put('https://httpbin.org/put', text='{}')
+        m.delete('https://httpbin.org/delete', text='{}')
+
+        self.http.get(path='/get', query=None)
+        self.http.get(path='/get', query=(('foo', 'bar'), ('quxx', 'baz')))
+        self.http.get(path='/get', query=None, page=None)
+        self.http.get(path='/get', query=None, page=2, page_size=None)
+        self.http.get(path='/get', query=None, page=None, page_size=None)
+        self.http.get(path='/get', query=None, page=2, page_size=100)
+        self.http.get(path='/get', query=None, page_size=20)
+        self.http.get(path='/get', query=None, page=None, page_size=200)
+
+        history = m.request_history
+        self.assertEqual(history[0].url, 'https://httpbin.org/get')
+        self.assertEqual(history[1].url, 'https://httpbin.org/get?foo=bar&quxx=baz')
+        self.assertEqual(history[2].url, 'https://httpbin.org/get?page=1')
+        self.assertEqual(history[3].url, 'https://httpbin.org/get?page=2&page-size=50')
+        self.assertEqual(history[4].url, 'https://httpbin.org/get?page=1&page-size=50')
+        self.assertEqual(history[5].url, 'https://httpbin.org/get?page=2&page-size=100')
+        self.assertEqual(history[6].url, 'https://httpbin.org/get?page-size=20')
+        self.assertEqual(history[7].url, 'https://httpbin.org/get?page=1&page-size=200')
+
+        self.http.post(path='/post', data='{}')
+        self.assertEqual(history[8].url, 'https://httpbin.org/post')
+
+        self.http.put(path='/put', data='{}')
+        self.assertEqual(history[9].url, 'https://httpbin.org/put')
+
+        self.http.delete(path='/delete')
+        self.assertEqual(history[10].url, 'https://httpbin.org/delete')

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest requests_mock
apt-get update apt-get install -y build-essential libffi-dev openssl libssl-dev libpq-dev python3-dev
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/alerta/python-alerta-client.git@10f200428c8e5be995b8925b2663ac22ad88080a#egg=alerta
certifi==2025.1.31
chardet==3.0.4
Click==7.0
exceptiongroup==1.2.2
idna==2.8
iniconfig==2.1.0
mohawk==1.1.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
pytz==2019.3
PyYAML==5.3
requests==2.22.0
requests-hawk==1.0.1
requests-mock==1.12.1
six==1.17.0
tabulate==0.8.6
tomli==2.2.1
urllib3==1.25.11

name: python-alerta-client
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - chardet==3.0.4
      - click==7.0
      - exceptiongroup==1.2.2
      - idna==2.8
      - iniconfig==2.1.0
      - mohawk==1.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytz==2019.3
      - pyyaml==5.3
      - requests==2.22.0
      - requests-hawk==1.0.1
      - requests-mock==1.12.1
      - six==1.17.0
      - tabulate==0.8.6
      - tomli==2.2.1
      - urllib3==1.25.11
prefix: /opt/conda/envs/python-alerta-client

tests/unit/test_http_client.py::HttpClientTestCase::test_query_string
alertaclient/api.py
alertaclient/api.py