Repository: CS-SI/eodag

Issue:
rename camelCase parameters and methods
Rename:
- `sortBy` to `sortby`
- `orderDownload` to `order_download`
- `orderDownloadStatus` to `order_download_status`

Discussion:
github-actions[bot]: ## Test Results
  2 files   -     2    2 suites   - 2   1m 34s :stopwatch: - 4m 43s
553 tests ±    0  549 :white_check_mark:  -     1  3 :zzz: ± 0  1 :x: +1 
553 runs   - 1 659  549 :white_check_mark:  - 1 561  3 :zzz:  - 99  1 :x: +1 

For more details on these failures, see [this check](https://github.com/CS-SI/eodag/runs/27870645132).

Results for commit 860b476c. ± Comparison against base commit a456422e.

[test-results]:data:application/gzip;base64,H4sIAOwtoWYC/1WMyw7CIBQFf6Vh7QIo0OLPGLhCQmyL4bEy/ruXGktdzpyTeREfFpfJdeCXgeQaygH3mkwJcUPUAhmX0jYpxx/dcgVoSuiuHuGJqn+8CQsKdgiXUkxoKJpUt95s8J/8ml7c+RTc+dyDuK6hIJBZUSsmBVwZKSSMTFgzOQaUM668HPkMVmnuyfsD3pyDlwQBAAA=

github-actions[bot]: ![badge](https://raw.githubusercontent.com/CS-SI/eodag/_xml_coverage_reports/data/rename-to-camelcase/./badge.svg)


## Code Coverage (Ubuntu)

<details>


```
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         303      50  83.50%   654-700, 802-853, 857
config.py                                      356      27  92.42%   81-83, 92, 100, 104-106, 183, 195, 468-470, 534-537, 584-585, 594-595, 674, 743-748, 750
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/core.py                                    752      75  90.03%   373, 598, 642-645, 683, 720, 750, 798, 802-807, 833, 929, 1012, 1149, 1239-1251, 1291, 1293, 1321, 1325-1336, 1349-1355, 1445-1448, 1481-1501, 1557, 1574-1577, 1589-1592, 1614-1621, 1947, 1980-1986, 2253, 2257-2260, 2274-2276, 2311
api/search_result.py                            51       4  92.16%   75, 84, 91, 105
api/product/__init__.py                          6       0  100.00%
api/product/_assets.py                          48       5  89.58%   80, 157, 167, 170-174
api/product/_product.py                        187      20  89.30%   70-72, 242-243, 325, 354, 415, 429-432, 445, 469-472, 515-521
api/product/metadata_mapping.py                675      81  88.00%   131-133, 234, 266-267, 313-314, 324-336, 338, 349, 355-367, 412-413, 450, 471-474, 497, 505-506, 582-583, 607-608, 614-617, 632-633, 782, 828, 1002-1007, 1138, 1152-1172, 1192, 1197, 1307, 1329, 1343, 1356-1375, 1414, 1466, 1504-1508, 1527
api/product/drivers/__init__.py                  6       0  100.00%
api/product/drivers/base.py                      6       1  83.33%   41
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 21       2  90.48%   48, 55
plugins/manager.py                             130      12  90.77%   105-110, 160, 201, 223, 227, 253, 292-293
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           91       8  91.21%   150-152, 199-200, 226-228
plugins/apis/usgs.py                           180      31  82.78%   132, 234, 268, 304-306, 311, 337-338, 343, 373-380, 391-396, 418-424, 426-432, 455
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py              19       0  100.00%
plugins/authentication/base.py                  17       2  88.24%   34, 47
plugins/authentication/generic.py               14       2  85.71%   40, 50
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       4  91.30%   132, 156-161
plugins/authentication/oauth.py                 13       7  46.15%   32-34, 38-41
plugins/authentication/openid_connect.py       183      17  90.71%   119, 133-158, 166, 320-323, 347
plugins/authentication/qsauth.py                34       1  97.06%   83
plugins/authentication/sas_auth.py              47       1  97.87%   76
plugins/authentication/token.py                 88      16  81.82%   79, 107, 109, 131-143, 198-202
plugins/authentication/token_exchange.py        35      19  45.71%   74-80, 92-120
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   40
plugins/crunch/filter_date.py                   59      14  76.27%   51-56, 70, 79, 88, 91, 103-105, 114-116, 123
plugins/crunch/filter_latest_intersect.py       47       8  82.98%   51-52, 71, 80-83, 85, 92-95
plugins/crunch/filter_latest_tpl_name.py        31       1  96.77%   87
plugins/crunch/filter_overlap.py                66      18  72.73%   28-30, 72-75, 82-85, 91, 99, 110-126
plugins/crunch/filter_property.py               30       7  76.67%   58-63, 66-67, 83-87
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        489     163  66.67%   273, 286, 353-356, 370-374, 420-422, 426, 460-461, 467-471, 504, 539, 543, 550, 580-588, 592, 630-638, 645-647, 688-762, 780-841, 852-857, 873-886, 915, 930-932, 935, 945-953, 961-974, 984-1015, 1022-1034, 1075, 1101, 1146-1148, 1368
plugins/download/base.py                       253      51  79.84%   145, 180, 319-320, 340-346, 377-381, 387-388, 432, 435-449, 461, 465, 538-542, 572-573, 581-598, 605-613, 615-619, 666, 688, 710, 718
plugins/download/creodias_s3.py                 17       9  47.06%   44-58
plugins/download/http.py                       534     129  75.84%   203-215, 217-218, 253-256, 320-323, 325-326, 333-338, 356-371, 388-390, 402, 450, 457-463, 481, 495, 509, 517-519, 535-540, 551, 569, 611-615, 637, 677, 722, 736-742, 778-842, 860, 893-902, 928-929, 956-961, 967, 970, 986, 1003-1004, 1034-1035, 1042, 1103-1109, 1164-1165, 1171, 1181, 1217, 1253, 1271-1287, 1313-1315
plugins/download/s3rest.py                     116      24  79.31%   121, 157, 164, 199, 229-236, 239-241, 245, 258-264, 272-273, 276-280, 303, 324-327
plugins/search/__init__.py                      22       0  100.00%
plugins/search/base.py                         128       9  92.97%   104, 108, 121, 271, 291, 350-351, 371, 380
plugins/search/build_search_result.py          181      23  87.29%   97, 141-142, 148, 159, 295-298, 327, 384-401, 463, 466, 476, 493, 521, 523
plugins/search/cop_marine.py                   197      47  76.14%   55, 63-65, 71-72, 88, 90, 93, 128-130, 142-143, 183-192, 196, 199, 203, 221, 251, 255, 270, 274, 278, 282, 286-290, 296-299, 302-316, 333, 356, 359, 365
plugins/search/creodias_s3.py                   55       3  94.55%   56, 74, 108
plugins/search/csw.py                          105      81  22.86%   58-59, 63-64, 72-120, 126-139, 147-179, 197-238
plugins/search/data_request_search.py          200      67  66.50%   90-93, 109, 121, 125-126, 137, 142, 147, 154, 167-170, 224-225, 229, 239-245, 250, 276-279, 287-298, 315, 317, 324-325, 327-328, 346-350, 383, 393, 404, 417, 423-438, 443
plugins/search/qssearch.py                     664      80  87.95%   391, 395-401, 409-410, 516-522, 572, 588, 598, 625, 627, 670-673, 747-748, 796, 815, 830, 888, 909, 912-913, 922-923, 932-933, 942-943, 970, 1041-1046, 1050-1059, 1093, 1115, 1175, 1224, 1298-1302, 1362, 1365, 1371-1372, 1393, 1420-1432, 1439, 1471-1473, 1483-1489, 1519, 1542, 1557, 1579, 1688-1698
plugins/search/static_stac_search.py            72      10  86.11%   101-128, 144, 157
rest/__init__.py                                 4       2  50.00%   21-22
rest/cache.py                                   33       7  78.79%   35-37, 53-55, 59, 68
rest/config.py                                  26       0  100.00%
rest/constants.py                                7       0  100.00%
rest/core.py                                   234      26  88.89%   281, 367, 477, 704, 711-759
rest/server.py                                 283      53  81.27%   108, 131-133, 246-248, 304-305, 317-333, 425-430, 458, 626-633, 662, 706-707, 730, 803-805, 822-827, 856, 858, 862-863, 867-868
rest/stac.py                                   464     120  74.14%   322, 344, 392-395, 419-445, 450-456, 479-481, 504, 539-540, 568, 581, 626-666, 694-710, 789-802, 809, 865-866, 933, 1001-1003, 1222, 1232-1244, 1257-1279, 1293-1338, 1500-1501
rest/types/__init__.py                           0       0  100.00%
rest/types/collections_search.py                13      13  0.00%    18-44
rest/types/eodag_search.py                     179       5  97.21%   232-236, 289, 292, 360
rest/types/queryables.py                        56       1  98.21%   174
rest/types/stac_search.py                      126       7  94.44%   131, 177, 192-194, 202, 206
rest/utils/__init__.py                          93      12  87.10%   108-109, 128-130, 182, 192-206
rest/utils/cql_evaluate.py                      48       5  89.58%   69, 76, 90, 97, 105
rest/utils/rfc3339.py                           23       3  86.96%   49, 61, 63
types/__init__.py                              114      14  87.72%   53, 70, 129-132, 199, 213-222, 232, 253, 266
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             81       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 105
types/whoosh.py                                 15       0  100.00%
utils/__init__.py                              500      37  92.60%   85, 90, 194-195, 204-231, 234, 248, 330-334, 410-414, 435-437, 519, 534, 572-573, 969-972, 980-981, 1022-1023, 1205
utils/constraints.py                           119      37  68.91%   94-103, 144, 149, 153, 164, 190-192, 202, 216-232, 241-252
utils/exceptions.py                             35       1  97.14%   93
utils/import_system.py                          28      19  32.14%   67-81, 93-103
utils/logging.py                                29       1  96.55%   123
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   30       8  73.33%   36, 38, 42, 76, 94-101
utils/requests.py                               55      11  80.00%   69, 96, 98, 100, 102, 104, 123, 131-133, 141
utils/rest.py                                   36       1  97.22%   57
utils/stac_reader.py                           111      45  59.46%   56-57, 63-85, 95-97, 101, 143, 159-162, 215-224, 234-264
TOTAL                                         9534    1624  82.97%
```

</details>


### Diff against develop

```
Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%
```


Results for commit: 0fe60d74d01ee1938ce3ee913c7a52f64605800f


_Minimum allowed coverage is `70%`_


:recycle: This comment has been updated with latest results


<!-- Sticky Pull Request Commentartifacts/unit-test-results-python3.12-ubuntu-latest/coverage.xml -->
github-actions[bot]: ![badge](https://raw.githubusercontent.com/CS-SI/eodag/_xml_coverage_reports_win/data/rename-to-camelcase/./badge.svg)


## Code Coverage (Windows)

<details>


```
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                      8       0  100.00%
cli.py                                         303      50  83.50%   654-700, 802-853, 857
config.py                                      356      28  92.13%   81-83, 92, 100, 104-106, 183, 195, 468-470, 534-537, 584-585, 594-595, 674, 708, 743-748, 750
crunch.py                                        5       5  0.00%    20-24
api/__init__.py                                  0       0  100.00%
api/core.py                                    752      75  90.03%   373, 598, 642-645, 683, 720, 750, 798, 802-807, 833, 929, 1012, 1149, 1239-1251, 1291, 1293, 1321, 1325-1336, 1349-1355, 1445-1448, 1481-1501, 1557, 1574-1577, 1589-1592, 1614-1621, 1947, 1980-1986, 2253, 2257-2260, 2274-2276, 2311
api/search_result.py                            51       4  92.16%   75, 84, 91, 105
api/product/__init__.py                          6       0  100.00%
api/product/_assets.py                          48       5  89.58%   80, 157, 167, 170-174
api/product/_product.py                        187      20  89.30%   70-72, 242-243, 325, 354, 415, 429-432, 445, 469-472, 515-521
api/product/metadata_mapping.py                675      81  88.00%   131-133, 234, 266-267, 313-314, 324-336, 338, 349, 355-367, 412-413, 450, 471-474, 497, 505-506, 582-583, 607-608, 614-617, 632-633, 782, 828, 1002-1007, 1138, 1152-1172, 1192, 1197, 1307, 1329, 1343, 1356-1375, 1414, 1466, 1504-1508, 1527
api/product/drivers/__init__.py                  6       0  100.00%
api/product/drivers/base.py                      6       1  83.33%   41
plugins/__init__.py                              0       0  100.00%
plugins/base.py                                 21       3  85.71%   48, 55, 68
plugins/manager.py                             130      12  90.77%   105-110, 160, 201, 223, 227, 253, 292-293
plugins/apis/__init__.py                         0       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           91       8  91.21%   150-152, 199-200, 226-228
plugins/apis/usgs.py                           180      31  82.78%   132, 234, 268, 304-306, 311, 337-338, 343, 373-380, 391-396, 418-424, 426-432, 455
plugins/authentication/__init__.py               6       1  83.33%   31
plugins/authentication/aws_auth.py              19       0  100.00%
plugins/authentication/base.py                  17       2  88.24%   34, 47
plugins/authentication/generic.py               14       2  85.71%   40, 50
plugins/authentication/header.py                19       0  100.00%
plugins/authentication/keycloak.py              46       4  91.30%   132, 156-161
plugins/authentication/oauth.py                 13       7  46.15%   32-34, 38-41
plugins/authentication/openid_connect.py       183      17  90.71%   119, 133-158, 166, 320-323, 347
plugins/authentication/qsauth.py                34       1  97.06%   83
plugins/authentication/sas_auth.py              47       1  97.87%   76
plugins/authentication/token.py                 88      16  81.82%   79, 107, 109, 131-143, 198-202
plugins/authentication/token_exchange.py        35      19  45.71%   74-80, 92-120
plugins/crunch/__init__.py                       0       0  100.00%
plugins/crunch/base.py                          10       1  90.00%   40
plugins/crunch/filter_date.py                   59      14  76.27%   51-56, 70, 79, 88, 91, 103-105, 114-116, 123
plugins/crunch/filter_latest_intersect.py       47      33  29.79%   48-53, 69-114
plugins/crunch/filter_latest_tpl_name.py        31       1  96.77%   87
plugins/crunch/filter_overlap.py                66      18  72.73%   28-30, 72-75, 82-85, 91, 99, 110-126
plugins/crunch/filter_property.py               30       7  76.67%   58-63, 66-67, 83-87
plugins/download/__init__.py                     0       0  100.00%
plugins/download/aws.py                        489     163  66.67%   273, 286, 353-356, 370-374, 420-422, 426, 460-461, 467-471, 504, 539, 543, 550, 580-588, 592, 630-638, 645-647, 688-762, 780-841, 852-857, 873-886, 915, 930-932, 935, 945-953, 961-974, 984-1015, 1022-1034, 1075, 1101, 1146-1148, 1368
plugins/download/base.py                       253      53  79.05%   145, 180, 250-252, 319-320, 340-346, 377-381, 387-388, 432, 435-449, 461, 465, 538-542, 572-573, 581-598, 605-613, 615-619, 666, 688, 710, 718
plugins/download/creodias_s3.py                 17       9  47.06%   44-58
plugins/download/http.py                       534     130  75.66%   203-215, 217-218, 253-256, 320-323, 325-326, 333-338, 356-371, 388-390, 402, 450, 457-463, 481, 495, 509, 517-519, 535-540, 551, 569, 611-615, 637, 677, 722, 736-742, 778-842, 860, 893-902, 928-929, 956-961, 967, 970, 986, 1003-1004, 1017, 1034-1035, 1042, 1103-1109, 1164-1165, 1171, 1181, 1217, 1253, 1271-1287, 1313-1315
plugins/download/s3rest.py                     116      24  79.31%   121, 157, 164, 199, 229-236, 239-241, 245, 258-264, 272-273, 276-280, 303, 324-327
plugins/search/__init__.py                      22       0  100.00%
plugins/search/base.py                         128      14  89.06%   104, 108, 121, 271, 291, 350-351, 371, 374-382, 384
plugins/search/build_search_result.py          181      30  83.43%   97, 141-142, 148, 159, 295-298, 327, 384-401, 463, 466, 476, 493, 513-528
plugins/search/cop_marine.py                   197      47  76.14%   55, 63-65, 71-72, 88, 90, 93, 128-130, 142-143, 183-192, 196, 199, 203, 221, 251, 255, 270, 274, 278, 282, 286-290, 296-299, 302-316, 333, 356, 359, 365
plugins/search/creodias_s3.py                   55       3  94.55%   56, 74, 108
plugins/search/csw.py                          105      81  22.86%   58-59, 63-64, 72-120, 126-139, 147-179, 197-238
plugins/search/data_request_search.py          200      67  66.50%   90-93, 109, 121, 125-126, 137, 142, 147, 154, 167-170, 224-225, 229, 239-245, 250, 276-279, 287-298, 315, 317, 324-325, 327-328, 346-350, 383, 393, 404, 417, 423-438, 443
plugins/search/qssearch.py                     664     108  83.73%   391, 395-401, 409-410, 516-522, 572, 575, 588, 598, 617-632, 670-673, 747-748, 796, 815, 830, 888, 909, 912-913, 922-923, 932-933, 942-943, 970, 1041-1046, 1050-1059, 1093, 1115, 1175, 1224, 1298-1302, 1362, 1365, 1371-1372, 1393, 1420-1432, 1439, 1471-1473, 1483-1489, 1519, 1542, 1557, 1579, 1647-1718
plugins/search/static_stac_search.py            72      10  86.11%   101-128, 144, 157
rest/__init__.py                                 4       2  50.00%   21-22
rest/cache.py                                   33      22  33.33%   35-37, 44-70
rest/config.py                                  26       4  84.62%   34-36, 68
rest/constants.py                                7       0  100.00%
rest/core.py                                   234     149  36.32%   167-248, 272-326, 339-377, 414-446, 466-482, 505-516, 525-561, 580, 626-665, 704, 711-759
rest/server.py                                 283     283  0.00%    18-879
rest/stac.py                                   464     393  15.30%   128-134, 142-167, 198-203, 235, 255-378, 388-457, 475-514, 530-583, 593-616, 626-666, 694-710, 720, 736-739, 758-828, 846-882, 911-936, 944-960, 968-973, 983-1010, 1020-1022, 1030-1032, 1045-1047, 1061-1078, 1088-1109, 1119-1141, 1149-1166, 1189-1212, 1222, 1232-1244, 1257-1279, 1293-1338, 1346-1363, 1373-1531
rest/types/__init__.py                           0       0  100.00%
rest/types/collections_search.py                13      13  0.00%    18-44
rest/types/eodag_search.py                     179      15  91.62%   122, 232-236, 269-271, 289, 292, 298, 302, 360, 372-375
rest/types/queryables.py                        56      13  76.79%   51-52, 59-60, 67-68, 97-102, 111-112, 174
rest/types/stac_search.py                      126      18  85.71%   129-131, 155-156, 161-162, 177, 192-194, 202, 206, 253-258
rest/utils/__init__.py                          93      30  67.74%   79-85, 105, 108-109, 128-130, 143, 150, 175-183, 190-211
rest/utils/cql_evaluate.py                      48       5  89.58%   69, 76, 90, 97, 105
rest/utils/rfc3339.py                           23       6  73.91%   41, 44-45, 49, 61, 63
types/__init__.py                              114      39  65.79%   53, 66-70, 81-93, 120-122, 129-132, 172, 199, 209-225, 230, 232, 253, 258, 266, 276
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             81       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 105
types/whoosh.py                                 15       0  100.00%
utils/__init__.py                              500      39  92.20%   85, 90, 194-195, 204-231, 234, 248, 330-334, 410-414, 435-437, 519, 534, 572-573, 969-972, 980-981, 1022-1023, 1056, 1205, 1381
utils/constraints.py                           119      37  68.91%   94-103, 144, 149, 153, 164, 190-192, 202, 216-232, 241-252
utils/exceptions.py                             35       1  97.14%   93
utils/import_system.py                          28      19  32.14%   67-81, 93-103
utils/logging.py                                29       1  96.55%   123
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/repr.py                                   30       8  73.33%   36, 38, 42, 76, 94-101
utils/requests.py                               55      11  80.00%   69, 96, 98, 100, 102, 104, 123, 131-133, 141
utils/rest.py                                   36       1  97.22%   57
utils/stac_reader.py                           111      45  59.46%   56-57, 63-85, 95-97, 101, 143, 159-162, 215-224, 234-264
TOTAL                                         9534    2420  74.62%
```

</details>


### Diff against develop

```
Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%
```


Results for commit: 0fe60d74d01ee1938ce3ee913c7a52f64605800f


_Minimum allowed coverage is `70%`_


:recycle: This comment has been updated with latest results


<!-- Sticky Pull Request Commentartifacts/unit-test-results-python3.12-windows-latest/coverage.xml -->

Patch:
diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb
index c131f344..ac416c2b 100644
--- a/docs/notebooks/api_user_guide/4_search.ipynb
+++ b/docs/notebooks/api_user_guide/4_search.ipynb
@@ -2140,14 +2140,14 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "#### `sortBy`"
+    "#### `sort_by`"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "EO products can be sorted by metadata that the provider used supports as sorting parameters (see the [available_sortables()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.available_sortables) method) in the wanted sorting order (`ASC`|`DESC`) by passing the `sortBy` kwarg. If `sortBy` is not passed but the provider has a default sorting parameter, the sort is realized with it. If the number of sorting parameters exceeds the maximum allowed for the provider or if the provider does not support the sorting feature or at least one sorting parameter, an error is returned."
+    "EO products can be sorted by metadata that the provider used supports as sorting parameters (see the [available_sortables()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.available_sortables) method) in the wanted sorting order (`ASC`|`DESC`) by passing the `sort_by` kwarg. If `sort_by` is not passed but the provider has a default sorting parameter, the sort is realized with it. If the number of sorting parameters exceeds the maximum allowed for the provider or if the provider does not support the sorting feature or at least one sorting parameter, an error is returned."
    ]
   },
   {
@@ -2183,7 +2183,7 @@
     ")\n",
     "sorted_by_start_date_in_desc_order_products = dag.search(\n",
     "    provider=\"cop_dataspace\",\n",
-    "    sortBy=[(\"startTimeFromAscendingNode\", \"DESC\")],\n",
+    "    sort_by=[(\"startTimeFromAscendingNode\", \"DESC\")],\n",
     "    **default_search_criteria\n",
     ")\n",
     "print(\n",
diff --git a/eodag/plugins/apis/usgs.py b/eodag/plugins/apis/usgs.py
index d4ecf61f..d15407b2 100644
--- a/eodag/plugins/apis/usgs.py
+++ b/eodag/plugins/apis/usgs.py
@@ -128,13 +128,14 @@ class UsgsApi(Api):
             raise NoMatchingProductType(
                 "Cannot search on USGS without productType specified"
             )
-        if kwargs.get("sortBy"):
+        if kwargs.get("sort_by"):
             raise ValidationError("USGS does not support sorting feature")
 
         self.authenticate()
 
         product_type_def_params = self.config.products.get(  # type: ignore
-            product_type, self.config.products[GENERIC_PRODUCT_TYPE]  # type: ignore
+            product_type,
+            self.config.products[GENERIC_PRODUCT_TYPE],  # type: ignore
         )
         usgs_dataset = format_dict_items(product_type_def_params, **kwargs)["dataset"]
         start_date = kwargs.pop("startTimeFromAscendingNode", None)
@@ -288,7 +289,8 @@ class UsgsApi(Api):
         outputs_extension = cast(
             str,
             self.config.products.get(  # type: ignore
-                product.product_type, self.config.products[GENERIC_PRODUCT_TYPE]  # type: ignore
+                product.product_type,
+                self.config.products[GENERIC_PRODUCT_TYPE],  # type: ignore
             ).get("outputs_extension", ".tar.gz"),
         )
         kwargs["outputs_extension"] = kwargs.get("outputs_extension", outputs_extension)
diff --git a/eodag/plugins/download/http.py b/eodag/plugins/download/http.py
index 51bd67a3..e7cd1510 100644
--- a/eodag/plugins/download/http.py
+++ b/eodag/plugins/download/http.py
@@ -122,7 +122,7 @@ class HTTPDownload(Download):
     def __init__(self, provider: str, config: PluginConfig) -> None:
         super(HTTPDownload, self).__init__(provider, config)
 
-    def orderDownload(
+    def order_download(
         self,
         product: EOProduct,
         auth: Optional[AuthBase] = None,
@@ -257,7 +257,7 @@ class HTTPDownload(Download):
 
         return json_response
 
-    def orderDownloadStatus(
+    def order_download_status(
         self,
         product: EOProduct,
         auth: Optional[AuthBase] = None,
@@ -934,13 +934,13 @@ class HTTPDownload(Download):
             and product.properties.get("storageStatus") == OFFLINE_STATUS
             and not product.properties.get("orderStatus")
         ):
-            self.orderDownload(product=product, auth=auth)
+            self.order_download(product=product, auth=auth)
 
         if (
             product.properties.get("orderStatusLink", None)
             and product.properties.get("storageStatus") != ONLINE_STATUS
         ):
-            self.orderDownloadStatus(product=product, auth=auth)
+            self.order_download_status(product=product, auth=auth)
 
         params = kwargs.pop("dl_url_params", None) or getattr(
             self.config, "dl_url_params", {}
@@ -1083,7 +1083,6 @@ class HTTPDownload(Download):
 
         # loop for assets download
         for asset in assets_values:
-
             if not asset["href"] or asset["href"].startswith("file:"):
                 logger.info(
                     f"Local asset detected. Download skipped for {asset['href']}"
diff --git a/eodag/plugins/download/s3rest.py b/eodag/plugins/download/s3rest.py
index f3349661..39517b20 100644
--- a/eodag/plugins/download/s3rest.py
+++ b/eodag/plugins/download/s3rest.py
@@ -133,7 +133,7 @@ class S3RestDownload(Download):
             and "storageStatus" in product.properties
             and product.properties["storageStatus"] != ONLINE_STATUS
         ):
-            self.http_download_plugin.orderDownload(product=product, auth=auth)
+            self.http_download_plugin.order_download(product=product, auth=auth)
 
         @self._download_retry(product, wait, timeout)
         def download_request(
@@ -145,7 +145,7 @@ class S3RestDownload(Download):
         ):
             # check order status
             if product.properties.get("orderStatusLink", None):
-                self.http_download_plugin.orderDownloadStatus(
+                self.http_download_plugin.order_download_status(
                     product=product, auth=auth
                 )
 
diff --git a/eodag/plugins/search/base.py b/eodag/plugins/search/base.py
index d0318a88..1ac9dd00 100644
--- a/eodag/plugins/search/base.py
+++ b/eodag/plugins/search/base.py
@@ -206,16 +206,16 @@ class Search(PluginTopic):
         return self.config.metadata_mapping
 
     def get_sort_by_arg(self, kwargs: Dict[str, Any]) -> Optional[SortByList]:
-        """Extract the "sortBy" argument from the kwargs or the provider default sort configuration
+        """Extract the "sort_by" argument from the kwargs or the provider default sort configuration
 
         :param kwargs: Search arguments
         :type kwargs: Dict[str, Any]
-        :returns: The "sortBy" argument from the kwargs or the provider default sort configuration
+        :returns: The "sort_by" argument from the kwargs or the provider default sort configuration
         :rtype: :class:`~eodag.types.search_args.SortByList`
         """
-        # remove "sortBy" from search args if exists because it is not part of metadata mapping,
+        # remove "sort_by" from search args if exists because it is not part of metadata mapping,
         # it will complete the query string or body once metadata mapping will be done
-        sort_by_arg_tmp = kwargs.pop("sortBy", None)
+        sort_by_arg_tmp = kwargs.pop("sort_by", None)
         sort_by_arg = sort_by_arg_tmp or getattr(self.config, "sort", {}).get(
             "sort_by_default", None
         )
@@ -230,11 +230,11 @@ class Search(PluginTopic):
         self, sort_by_arg: SortByList
     ) -> Tuple[str, Dict[str, List[Dict[str, str]]]]:
         """Build the sorting part of the query string or body by transforming
-        the "sortBy" argument into a provider-specific string or dictionnary
+        the "sort_by" argument into a provider-specific string or dictionnary
 
-        :param sort_by_arg: the "sortBy" argument in EODAG format
+        :param sort_by_arg: the "sort_by" argument in EODAG format
         :type sort_by_arg: :class:`~eodag.types.search_args.SortByList`
-        :returns: The "sortBy" argument in provider-specific format
+        :returns: The "sort_by" argument in provider-specific format
         :rtype: Union[str, Dict[str, List[Dict[str, str]]]]
         """
         if not hasattr(self.config, "sort"):
diff --git a/eodag/plugins/search/data_request_search.py b/eodag/plugins/search/data_request_search.py
index 2c990b1f..1ba34563 100644
--- a/eodag/plugins/search/data_request_search.py
+++ b/eodag/plugins/search/data_request_search.py
@@ -133,7 +133,7 @@ class DataRequestSearch(Search):
         """
         performs the search for a provider where several steps are required to fetch the data
         """
-        if kwargs.get("sortBy"):
+        if kwargs.get("sort_by"):
             raise ValidationError(f"{self.provider} does not support sorting feature")
 
         product_type = kwargs.get("productType", None)
diff --git a/eodag/rest/core.py b/eodag/rest/core.py
index 656fb593..6fb159ed 100644
--- a/eodag/rest/core.py
+++ b/eodag/rest/core.py
@@ -350,11 +350,13 @@ def _order_and_update(
     if (
         product.properties.get("storageStatus") != ONLINE_STATUS
         and NOT_AVAILABLE in product.properties.get("orderStatusLink", "")
-        and hasattr(product.downloader, "orderDownload")
+        and hasattr(product.downloader, "order_download")
     ):
         # first order
         logger.debug("Order product")
-        order_status_dict = product.downloader.orderDownload(product=product, auth=auth)
+        order_status_dict = product.downloader.order_download(
+            product=product, auth=auth
+        )
         query_args.update(order_status_dict or {})
 
     if (
@@ -365,11 +367,11 @@ def _order_and_update(
         product.properties["storageStatus"] = STAGING_STATUS
 
     if product.properties.get("storageStatus") == STAGING_STATUS and hasattr(
-        product.downloader, "orderDownloadStatus"
+        product.downloader, "order_download_status"
     ):
         # check order status if needed
         logger.debug("Checking product order status")
-        product.downloader.orderDownloadStatus(product=product, auth=auth)
+        product.downloader.order_download_status(product=product, auth=auth)
 
     if product.properties.get("storageStatus") != ONLINE_STATUS:
         raise NotAvailableError("Product is not available yet")
diff --git a/eodag/rest/types/eodag_search.py b/eodag/rest/types/eodag_search.py
index 2557d83b..38089cbf 100644
--- a/eodag/rest/types/eodag_search.py
+++ b/eodag/rest/types/eodag_search.py
@@ -110,7 +110,7 @@ class EODAGSearch(BaseModel):
     illuminationAzimuthAngle: Optional[float] = Field(None, alias="view:sun_azimuth")
     page: Optional[int] = Field(1)
     items_per_page: int = Field(DEFAULT_ITEMS_PER_PAGE, alias="limit")
-    sortBy: Optional[List[Tuple[str, str]]] = Field(None, alias="sortby")
+    sort_by: Optional[List[Tuple[str, str]]] = Field(None, alias="sortby")
     raise_errors: bool = False
 
     _to_eodag_map: Dict[str, str]
@@ -311,14 +311,14 @@ class EODAGSearch(BaseModel):
             return ",".join(v)
         return v
 
-    @field_validator("sortBy", mode="before")
+    @field_validator("sort_by", mode="before")
     @classmethod
     def parse_sortby(
         cls,
         sortby_post_params: List[Dict[str, str]],
     ) -> List[Tuple[str, str]]:
         """
-        Convert STAC POST sortby to EODAG sortby
+        Convert STAC POST sortby to EODAG sort_by
         """
         special_fields = {
             "start": "startTimeFromAscendingNode",
diff --git a/eodag/rest/types/stac_search.py b/eodag/rest/types/stac_search.py
index 6f04da23..2675bacb 100644
--- a/eodag/rest/types/stac_search.py
+++ b/eodag/rest/types/stac_search.py
@@ -16,6 +16,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 """Model describing a STAC search POST request"""
+
 from __future__ import annotations
 
 from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Tuple, Union
@@ -71,7 +72,7 @@ Geometry = Union[
 Direction = Annotated[Literal["asc", "desc"], StringConstraints(min_length=1)]
 
 
-class Sortby(BaseModel):
+class SortBy(BaseModel):
     """
     A class representing a parameter with which we want to sort results and its sorting order in a
     POST search
@@ -117,7 +118,7 @@ class SearchPostRequest(BaseModel):
         description="The language used for filtering.",
         validate_default=True,
     )
-    sortby: Optional[List[Sortby]] = None
+    sortby: Optional[List[SortBy]] = None
     crunch: Optional[str] = None
 
     @field_serializer("intersects")
@@ -259,16 +260,16 @@ class SearchPostRequest(BaseModel):
 
 def sortby2list(
     v: Optional[str],
-) -> Optional[List[Sortby]]:
+) -> Optional[List[SortBy]]:
     """
     Convert sortby filter parameter GET syntax to POST syntax
     """
     if not v:
         return None
-    sortby: List[Sortby] = []
+    sortby: List[SortBy] = []
     for sortby_param in v.split(","):
         sortby_param = sortby_param.strip()
         direction: Direction = "desc" if sortby_param.startswith("-") else "asc"
         field = sortby_param.lstrip("+-")
-        sortby.append(Sortby(field=field, direction=direction))
+        sortby.append(SortBy(field=field, direction=direction))
     return sortby
diff --git a/eodag/types/search_args.py b/eodag/types/search_args.py
index e3f5510c..0ebc6e7d 100644
--- a/eodag/types/search_args.py
+++ b/eodag/types/search_args.py
@@ -51,7 +51,7 @@ class SearchArgs(BaseModel):
     locations: Optional[Dict[str, str]] = Field(None)
     page: Optional[int] = Field(DEFAULT_PAGE, gt=0)  # type: ignore
     items_per_page: Optional[PositiveInt] = Field(DEFAULT_ITEMS_PER_PAGE)  # type: ignore
-    sortBy: Optional[SortByList] = Field(None)  # type: ignore
+    sort_by: Optional[SortByList] = Field(None)  # type: ignore
 
     @field_validator("start", "end", mode="before")
     @classmethod
@@ -87,16 +87,17 @@ class SearchArgs(BaseModel):
 
         raise TypeError(f"Invalid geometry type: {type(v)}")
 
-    @field_validator("sortBy", mode="before")
+    @field_validator("sort_by", mode="before")
     @classmethod
     def check_sort_by_arg(
-        cls, sort_by_arg: Optional[SortByList]  # type: ignore
+        cls,
+        sort_by_arg: Optional[SortByList],  # type: ignore
     ) -> Optional[SortByList]:  # type: ignore
-        """Check if the sortBy argument is correct
+        """Check if the sort_by argument is correct
 
-        :param sort_by_arg: The sortBy argument
+        :param sort_by_arg: The sort_by argument
         :type sort_by_arg: str
-        :returns: The sortBy argument with sorting order parsed (whitespace(s) are
+        :returns: The sort_by argument with sorting order parsed (whitespace(s) are
                   removed and only the 3 first letters in uppercase are kept)
         :rtype: str
         """


Test patch:
diff --git a/tests/units/test_core.py b/tests/units/test_core.py
index 9fc9cdd9..63749da5 100644
--- a/tests/units/test_core.py
+++ b/tests/units/test_core.py
@@ -2669,7 +2669,7 @@ class TestCoreSearch(TestCoreBase):
         mock_postjsonsearch__request,
     ):
         """search must sort results by sorting parameter(s) in their sorting order
-        from the "sortBy" argument or by default sorting parameter if exists"""
+        from the "sort_by" argument or by default sorting parameter if exists"""
         mock_qssearch__request.return_value.json.return_value = {
             "properties": {"totalResults": 2},
             "features": [],
@@ -2720,7 +2720,7 @@ class TestCoreSearch(TestCoreBase):
         dag.search(
             provider="dummy_provider",
             productType="S2_MSI_L1C",
-            sortBy=[("eodagSortParam", "DESC")],
+            sort_by=[("eodagSortParam", "DESC")],
         )
 
         # a provider-specific string has been created to sort by
@@ -2739,7 +2739,7 @@ class TestCoreSearch(TestCoreBase):
                     next_page_query_obj: '{{"limit":{items_per_page},"page":{page}}}'
                     total_items_nb_key_path: '$.meta.found'
                 sort:
-                    sort_by_tpl: '{{"sortby": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
+                    sort_by_tpl: '{{"sort_by": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}'
                     sort_param_mapping:
                         eodagSortParam: providerSortParam
                     sort_order_mapping:
@@ -2755,22 +2755,22 @@ class TestCoreSearch(TestCoreBase):
         dag.search(
             provider="other_dummy_provider",
             productType="S2_MSI_L1C",
-            sortBy=[("eodagSortParam", "DESC")],
+            sort_by=[("eodagSortParam", "DESC")],
         )
 
         # a provider-specific dictionnary has been created to sort by
         self.assertIn(
-            "sortby", mock_postjsonsearch__request.call_args[0][1].query_params.keys()
+            "sort_by", mock_postjsonsearch__request.call_args[0][1].query_params.keys()
         )
         self.assertEqual(
             [{"field": "providerSortParam", "direction": "desc"}],
-            mock_postjsonsearch__request.call_args[0][1].query_params["sortby"],
+            mock_postjsonsearch__request.call_args[0][1].query_params["sort_by"],
         )
 
         # TODO: sort by default sorting parameter and sorting order
 
     def test_search_sort_by_raise_errors(self):
-        """search used with "sortBy" argument must raise errors if the argument is incorrect or if the provider does
+        """search used with "sort_by" argument must raise errors if the argument is incorrect or if the provider does
         not support a maximum number of sorting parameter, one sorting parameter or the sorting feature
         """
         dag = EODataAccessGateway()
@@ -2794,7 +2794,7 @@ class TestCoreSearch(TestCoreBase):
             dag.search(
                 provider="dummy_provider",
                 productType="S2_MSI_L1C",
-                sortBy=[("eodagSortParam", "ASC")],
+                sort_by=[("eodagSortParam", "ASC")],
             )
             self.assertIn(
                 "dummy_provider does not support sorting feature", str(cm_logs.output)
@@ -2827,7 +2827,7 @@ class TestCoreSearch(TestCoreBase):
             dag.search(
                 provider="dummy_provider",
                 productType="S2_MSI_L1C",
-                sortBy=[("otherEodagSortParam", "ASC")],
+                sort_by=[("otherEodagSortParam", "ASC")],
             )
             self.assertIn(
                 "\\'otherEodagSortParam\\' parameter is not sortable with dummy_provider. "
@@ -2864,7 +2864,7 @@ class TestCoreSearch(TestCoreBase):
             dag.search(
                 provider="dummy_provider",
                 productType="S2_MSI_L1C",
-                sortBy=[("eodagSortParam", "ASC"), ("otherEodagSortParam", "ASC")],
+                sort_by=[("eodagSortParam", "ASC"), ("otherEodagSortParam", "ASC")],
             )
             self.assertIn(
                 "Search results can be sorted by only 1 parameter(s) with dummy_provider",
diff --git a/tests/units/test_download_plugins.py b/tests/units/test_download_plugins.py
index e8e0574e..2e4f49cb 100644
--- a/tests/units/test_download_plugins.py
+++ b/tests/units/test_download_plugins.py
@@ -1122,7 +1122,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
 
     @mock.patch("eodag.plugins.download.http.requests.request", autospec=True)
     def test_plugins_download_http_order_get(self, mock_request):
-        """HTTPDownload.orderDownload() must request using orderLink and GET protocol"""
+        """HTTPDownload.order_download() must request using orderLink and GET protocol"""
         plugin = self.get_download_plugin(self.product)
         self.product.properties["orderLink"] = "http://somewhere/order"
         self.product.properties["storageStatus"] = OFFLINE_STATUS
@@ -1135,7 +1135,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
             auth_plugin.config.credentials = {"username": "foo", "password": "bar"}
             auth = auth_plugin.authenticate()
 
-            plugin.orderDownload(self.product, auth=auth)
+            plugin.order_download(self.product, auth=auth)
 
             mock_request.assert_called_once_with(
                 method="GET",
@@ -1153,7 +1153,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
 
     @mock.patch("eodag.plugins.download.http.requests.request", autospec=True)
     def test_plugins_download_http_order_post(self, mock_request):
-        """HTTPDownload.orderDownload() must request using orderLink and POST protocol"""
+        """HTTPDownload.order_download() must request using orderLink and POST protocol"""
         plugin = self.get_download_plugin(self.product)
         self.product.properties["storageStatus"] = OFFLINE_STATUS
         plugin.config.order_method = "POST"
@@ -1164,7 +1164,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
 
         # orderLink without query query args
         self.product.properties["orderLink"] = "http://somewhere/order"
-        plugin.orderDownload(self.product, auth=auth)
+        plugin.order_download(self.product, auth=auth)
         mock_request.assert_called_once_with(
             method="POST",
             url=self.product.properties["orderLink"],
@@ -1176,7 +1176,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
         # orderLink with query query args
         mock_request.reset_mock()
         self.product.properties["orderLink"] = "http://somewhere/order?foo=bar"
-        plugin.orderDownload(self.product, auth=auth)
+        plugin.order_download(self.product, auth=auth)
         mock_request.assert_called_once_with(
             method="POST",
             url="http://somewhere/order",
@@ -1192,7 +1192,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
         self.product.properties[
             "orderLink"
         ] = 'http://somewhere/order?{"location": "dataset_id=lorem&data_version=202211", "cacheable": "true"}'
-        plugin.orderDownload(self.product, auth=auth)
+        plugin.order_download(self.product, auth=auth)
         mock_request.assert_called_once_with(
             method="POST",
             url="http://somewhere/order",
@@ -1207,7 +1207,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
         )
 
     def test_plugins_download_http_order_status(self):
-        """HTTPDownload.orderDownloadStatus() must request status using orderStatusLink"""
+        """HTTPDownload.order_download_status() must request status using orderStatusLink"""
         plugin = self.get_download_plugin(self.product)
         plugin.config.order_status = {
             "metadata_mapping": {
@@ -1233,7 +1233,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
             )
 
             with self.assertRaises(DownloadError):
-                plugin.orderDownloadStatus(self.product, auth=auth)
+                plugin.order_download_status(self.product, auth=auth)
 
             self.assertIn(
                 list(USER_AGENT.items())[0], responses.calls[0].request.headers.items()
@@ -1243,7 +1243,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
         run()
 
     def test_plugins_download_http_order_status_search_again(self):
-        """HTTPDownload.orderDownloadStatus() must search again after success if needed"""
+        """HTTPDownload.order_download_status() must search again after success if needed"""
         plugin = self.get_download_plugin(self.product)
         plugin.config.order_status = {
             "metadata_mapping": {"status": "$.json.status"},
@@ -1284,7 +1284,7 @@ class TestDownloadPluginHttp(BaseDownloadPluginTest):
                 ),
             )
 
-            plugin.orderDownloadStatus(self.product, auth=auth)
+            plugin.order_download_status(self.product, auth=auth)
 
             self.assertEqual(
                 self.product.properties["downloadLink"], "http://new-download-link"
@@ -1793,9 +1793,11 @@ class TestDownloadPluginS3Rest(BaseDownloadPluginTest):
         )
 
     @mock.patch(
-        "eodag.plugins.download.http.HTTPDownload.orderDownloadStatus", autospec=True
+        "eodag.plugins.download.http.HTTPDownload.order_download_status", autospec=True
+    )
+    @mock.patch(
+        "eodag.plugins.download.http.HTTPDownload.order_download", autospec=True
     )
-    @mock.patch("eodag.plugins.download.http.HTTPDownload.orderDownload", autospec=True)
     def test_plugins_download_s3rest_online(self, mock_order, mock_order_status):
         """S3RestDownload.download() must create outputfiles"""
 
@@ -1863,9 +1865,11 @@ class TestDownloadPluginS3Rest(BaseDownloadPluginTest):
         mock_order_status.assert_not_called()
 
     @mock.patch(
-        "eodag.plugins.download.http.HTTPDownload.orderDownloadStatus", autospec=True
+        "eodag.plugins.download.http.HTTPDownload.order_download_status", autospec=True
+    )
+    @mock.patch(
+        "eodag.plugins.download.http.HTTPDownload.order_download", autospec=True
     )
-    @mock.patch("eodag.plugins.download.http.HTTPDownload.orderDownload", autospec=True)
     def test_plugins_download_s3rest_offline(self, mock_order, mock_order_status):
         """S3RestDownload.download() must order offline products"""
 
diff --git a/tests/units/test_http_server.py b/tests/units/test_http_server.py
index f47acbdb..92343125 100644
--- a/tests/units/test_http_server.py
+++ b/tests/units/test_http_server.py
@@ -1242,8 +1242,8 @@ class RequestTestCase(unittest.TestCase):
         product = two_results[0]
         mock_search.return_value = SearchResult([product], 1)
         product.downloader_auth = MagicMock()
-        product.downloader.orderDownload = MagicMock(return_value={"status": "foo"})
-        product.downloader.orderDownloadStatus = MagicMock()
+        product.downloader.order_download = MagicMock(return_value={"status": "foo"})
+        product.downloader.order_download_status = MagicMock()
         product.downloader.order_response_process = MagicMock()
         product.downloader._stream_download_dict = MagicMock(
             side_effect=NotAvailableError("Product offline. Try again later.")
@@ -1257,8 +1257,8 @@ class RequestTestCase(unittest.TestCase):
         self._request_not_found(
             f"catalogs/{self.tested_product_type}/items/foo/download"
         )
-        product.downloader.orderDownload.assert_not_called()
-        product.downloader.orderDownloadStatus.assert_not_called()
+        product.downloader.order_download.assert_not_called()
+        product.downloader.order_download_status.assert_not_called()
         product.downloader.order_response_process.assert_not_called()
         product.downloader._stream_download_dict.assert_called_once()
         product.downloader._stream_download_dict.reset_mock()
@@ -1269,9 +1269,9 @@ class RequestTestCase(unittest.TestCase):
         resp_json = self._request_accepted(
             f"catalogs/{self.tested_product_type}/items/foo/download"
         )
-        product.downloader.orderDownload.assert_called_once()
-        product.downloader.orderDownload.reset_mock()
-        product.downloader.orderDownloadStatus.assert_not_called()
+        product.downloader.order_download.assert_called_once()
+        product.downloader.order_download.reset_mock()
+        product.downloader.order_download_status.assert_not_called()
         product.downloader.order_response_process.assert_called()
         product.downloader.order_response_process.reset_mock()
         product.downloader._stream_download_dict.assert_not_called()
@@ -1284,8 +1284,8 @@ class RequestTestCase(unittest.TestCase):
         resp_json = self._request_accepted(
             f"catalogs/{self.tested_product_type}/items/foo/download"
         )
-        product.downloader.orderDownload.assert_not_called()
-        product.downloader.orderDownloadStatus.assert_not_called()
+        product.downloader.order_download.assert_not_called()
+        product.downloader.order_download_status.assert_not_called()
         product.downloader.order_response_process.assert_not_called()
         product.downloader._stream_download_dict.assert_called_once()
         product.downloader._stream_download_dict.reset_mock()
@@ -1298,9 +1298,9 @@ class RequestTestCase(unittest.TestCase):
         self._request_accepted(
             f"catalogs/{self.tested_product_type}/items/foo/download"
         )
-        product.downloader.orderDownload.assert_not_called()
-        product.downloader.orderDownloadStatus.assert_called_once()
-        product.downloader.orderDownloadStatus.reset_mock()
+        product.downloader.order_download.assert_not_called()
+        product.downloader.order_download_status.assert_called_once()
+        product.downloader.order_download_status.reset_mock()
         product.downloader.order_response_process.assert_called()
         product.downloader.order_response_process.reset_mock()
         product.downloader._stream_download_dict.assert_not_called()
diff --git a/tests/units/test_search_types.py b/tests/units/test_search_types.py
index 747abd83..1453424a 100644
--- a/tests/units/test_search_types.py
+++ b/tests/units/test_search_types.py
@@ -26,24 +26,27 @@ from eodag.utils.exceptions import ValidationError as EodagValidationError
 
 class TestStacSearch(unittest.TestCase):
     def test_search_sort_by_arg(self):
-        """search used with "sortBy" argument must not raise errors if the argument is correct"""
-        # "sortBy" argument must be a list of tuples of two elements and the second element must be "ASC" or "DESC"
+        """search used with "sort_by" argument must not raise errors if the argument is correct"""
+        # "sort_by" argument must be a list of tuples of two elements and the second element must be "ASC" or "DESC"
         search_args.SearchArgs.model_validate(
-            {"productType": "dummy_product_type", "sortBy": [("eodagSortParam", "ASC")]}
+            {
+                "productType": "dummy_product_type",
+                "sort_by": [("eodagSortParam", "ASC")],
+            }
         )
         search_args.SearchArgs.model_validate(
             {
                 "productType": "dummy_product_type",
-                "sortBy": [("eodagSortParam", "DESC")],
+                "sort_by": [("eodagSortParam", "DESC")],
             }
         )
 
     def test_search_sort_by_arg_with_errors(self):
-        """search used with "sortBy" argument must raise errors if the argument is incorrect"""
+        """search used with "sort_by" argument must raise errors if the argument is incorrect"""
         # raise a Pydantic error with an empty list
         with self.assertRaises(ValidationError) as context:
             search_args.SearchArgs.model_validate(
-                {"productType": "dummy_product_type", "sortBy": []}
+                {"productType": "dummy_product_type", "sort_by": []}
             )
         self.assertIn(
             "List should have at least 1 item after validation, not 0",
@@ -52,7 +55,7 @@ class TestStacSearch(unittest.TestCase):
         # raise a Pydantic error with syntax errors
         with self.assertRaises(ValidationError) as context:
             search_args.SearchArgs.model_validate(
-                {"productType": "dummy_product_type", "sortBy": "eodagSortParam ASC"}
+                {"productType": "dummy_product_type", "sort_by": "eodagSortParam ASC"}
             )
         self.assertIn(
             "Sort argument must be a list of tuple(s), got a '<class 'str'>' instead",
@@ -60,7 +63,7 @@ class TestStacSearch(unittest.TestCase):
         )
         with self.assertRaises(ValidationError) as context:
             search_args.SearchArgs.model_validate(
-                {"productType": "dummy_product_type", "sortBy": ["eodagSortParam ASC"]}
+                {"productType": "dummy_product_type", "sort_by": ["eodagSortParam ASC"]}
             )
         self.assertIn(
             "Sort argument must be a list of tuple(s), got a list of '<class 'str'>' instead",
@@ -71,7 +74,7 @@ class TestStacSearch(unittest.TestCase):
             search_args.SearchArgs.model_validate(
                 {
                     "productType": "dummy_product_type",
-                    "sortBy": [("eodagSortParam", " wrong_order ")],
+                    "sort_by": [("eodagSortParam", " wrong_order ")],
                 }
             )
         self.assertIn(
@@ -84,7 +87,7 @@ class TestStacSearch(unittest.TestCase):
             search_args.SearchArgs.model_validate(
                 {
                     "productType": "dummy_product_type",
-                    "sortBy": [("eodagSortParam", "ASC"), ("eodagSortParam", "DESC")],
+                    "sort_by": [("eodagSortParam", "ASC"), ("eodagSortParam", "DESC")],
                 }
             )
         self.assertIn(
diff --git a/tests/units/test_stac_types.py b/tests/units/test_stac_types.py
index fa011285..fb056ad7 100644
--- a/tests/units/test_stac_types.py
+++ b/tests/units/test_stac_types.py
@@ -9,18 +9,18 @@ from eodag.rest.types import eodag_search, stac_search
 class TestStacSearch(unittest.TestCase):
     def test_sortby(self):
         # Test with valid field and direction
-        sortby = stac_search.Sortby(field="test", direction="asc")
+        sortby = stac_search.SortBy(field="test", direction="asc")
         self.assertEqual(sortby.field, "test")
         self.assertEqual(sortby.direction, "asc")
 
         # Test with invalid direction
         with self.assertRaises(ValidationError) as context:
-            stac_search.Sortby(field="test", direction="invalid")
+            stac_search.SortBy(field="test", direction="invalid")
         self.assertTrue("Input should be 'asc' or 'desc'" in str(context.exception))
 
         # Test with empty field
         with self.assertRaises(ValidationError) as context:
-            stac_search.Sortby(field="", direction="asc")
+            stac_search.SortBy(field="", direction="asc")
 
     def test_sortby2list(self):
         # Test with no input
@@ -28,6 +28,7 @@ class TestStacSearch(unittest.TestCase):
 
         # Test with valid input
         sortby_list = stac_search.sortby2list("test,+test2,-test3")
+        self.assertIsNotNone(sortby_list)
         self.assertEqual(len(sortby_list), 3)
         self.assertEqual(sortby_list[0].field, "test")
         self.assertEqual(sortby_list[0].direction, "asc")
@@ -404,7 +405,7 @@ class TestEODAGSearch(unittest.TestCase):
                 exclude_none=True
             ),
             {
-                "sortBy": [("test", "desc")],
+                "sort_by": [("test", "desc")],
                 "productType": "test_collection",
                 "items_per_page": 20,
                 "page": 1,