internetdata 2.9.3__tar.gz → 2.9.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {internetdata-2.9.3 → internetdata-2.9.5}/PKG-INFO +2 -2
- {internetdata-2.9.3 → internetdata-2.9.5}/README.md +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/spec/openapi.yaml +32 -9
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/__init__.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/account_rotate_apikey.py +4 -4
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/download_database_v2.py +21 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_version.py +2 -2
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/client.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/errors.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/models.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/testdata/testdata.json +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/test_conformance.py +1 -1
- {internetdata-2.9.3 → internetdata-2.9.5}/.gitignore +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/LICENSE +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/pyproject.toml +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/scripts/download-spec.sh +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/scripts/generate.sh +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/scripts/publish.sh +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/scripts/v2_subset.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_core.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/account/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/account/account_identity.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/account_create_apikey.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/account_list_apikeys.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/account_reveal_apikey.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/account_revoke_apikey.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_authorize.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_device_authorization.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_metadata.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_register.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_revoke.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/oauth_token.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/database_checksum_v2.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/database_metadata_v2.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/list_databases.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/list_downloads.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/organization/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/organization/account_org.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/organization/account_org_members.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/client.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/errors.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/__init__.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_create_apikey_request.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_created_apikey.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_org.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_org_ref.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_org_wrap.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_rc.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_revealed_apikey.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_user.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/apikey_detail.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/apikey_list.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/client_registration.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/client_registration_request.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_checksum_v2_response_200.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_format.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_license_type_type_1.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_license_type_type_2_type_1.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_license_type_type_3_type_1.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_column.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_sample.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_sample_additional_property_item.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_sample_size.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_schema.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata_size.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/db_checksums.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/device_authorization.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/device_authorization_request.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/download.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/download_outcome.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/error.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/identity.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/list_databases_response_200.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/list_downloads_response_200.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_authorize_code_challenge_method.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_authorize_response_type.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_error.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_metadata.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_revoke_response_200.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/revoke_request.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/standing.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/token_request.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/token_response.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/types.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/aio.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/py.typed +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/conftest.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/helpers.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/test_client.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/test_download.py +0 -0
- {internetdata-2.9.3 → internetdata-2.9.5}/tests/test_oauth.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: internetdata
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.5
|
|
4
4
|
Summary: Official Python client library for the InternetData API. Download and verify licensed IP datasets.
|
|
5
5
|
Project-URL: Homepage, https://internetdata.io
|
|
6
6
|
Project-URL: Documentation, https://docs.internetdata.io
|
|
@@ -72,7 +72,7 @@ with InternetData(api_key) as client:
|
|
|
72
72
|
|
|
73
73
|
### The catalog
|
|
74
74
|
|
|
75
|
-
`list` answers database FAMILIES. A license is held against a family, while a download names a specific version, so the
|
|
75
|
+
`list` answers database FAMILIES. A license is held against a family, while a download names a specific version, so the IDs the other calls take come from each family's `versions`:
|
|
76
76
|
|
|
77
77
|
```python
|
|
78
78
|
for family in client.database.list():
|
|
@@ -38,7 +38,7 @@ with InternetData(api_key) as client:
|
|
|
38
38
|
|
|
39
39
|
### The catalog
|
|
40
40
|
|
|
41
|
-
`list` answers database FAMILIES. A license is held against a family, while a download names a specific version, so the
|
|
41
|
+
`list` answers database FAMILIES. A license is held against a family, while a download names a specific version, so the IDs the other calls take come from each family's `versions`:
|
|
42
42
|
|
|
43
43
|
```python
|
|
44
44
|
for family in client.database.list():
|
|
@@ -12,7 +12,7 @@ info:
|
|
|
12
12
|
email: support@internetdata.io
|
|
13
13
|
url: https://internetdata.io
|
|
14
14
|
termsOfService: https://internetdata.io/terms
|
|
15
|
-
version: 2026.
|
|
15
|
+
version: 2026.11.05
|
|
16
16
|
servers:
|
|
17
17
|
- url: https://internetdata.io
|
|
18
18
|
tags:
|
|
@@ -99,6 +99,7 @@ paths:
|
|
|
99
99
|
parameters:
|
|
100
100
|
- $ref: '#/components/parameters/DbId'
|
|
101
101
|
- $ref: '#/components/parameters/DbFormat'
|
|
102
|
+
- $ref: '#/components/parameters/DbBuild'
|
|
102
103
|
responses:
|
|
103
104
|
'302':
|
|
104
105
|
description: Follow the Location header to object storage.
|
|
@@ -107,7 +108,9 @@ paths:
|
|
|
107
108
|
schema:
|
|
108
109
|
type: string
|
|
109
110
|
'400':
|
|
110
|
-
description:
|
|
111
|
+
description: |
|
|
112
|
+
The database is not built in the requested format (`INVALID_FORMAT`),
|
|
113
|
+
or `build` is not a build's name (`INVALID_BUILD`).
|
|
111
114
|
content:
|
|
112
115
|
application/json:
|
|
113
116
|
schema:
|
|
@@ -118,6 +121,14 @@ paths:
|
|
|
118
121
|
$ref: '#/components/responses/V2Forbidden'
|
|
119
122
|
'404':
|
|
120
123
|
$ref: '#/components/responses/V2UnknownDatabase'
|
|
124
|
+
'410':
|
|
125
|
+
description: |
|
|
126
|
+
The build named in `build` is no longer kept (`BUILD_GONE`): builds are
|
|
127
|
+
kept 7 days. Download without `build` for the live one.
|
|
128
|
+
content:
|
|
129
|
+
application/json:
|
|
130
|
+
schema:
|
|
131
|
+
$ref: '#/components/schemas/Error'
|
|
121
132
|
'503':
|
|
122
133
|
$ref: '#/components/responses/V2NotAvailable'
|
|
123
134
|
/api/v2/database/metadata:
|
|
@@ -506,7 +517,7 @@ paths:
|
|
|
506
517
|
- API keys
|
|
507
518
|
summary: Rotate
|
|
508
519
|
description: |
|
|
509
|
-
Replaces the secret behind a key, keeping its
|
|
520
|
+
Replaces the secret behind a key, keeping its ID, name and settings.
|
|
510
521
|
The previous secret stops working immediately. The new secret comes
|
|
511
522
|
back in the answer, so this needs `apikeys.reveal` as well as
|
|
512
523
|
`apikeys.manage`.
|
|
@@ -890,7 +901,7 @@ components:
|
|
|
890
901
|
name: apikey
|
|
891
902
|
description: |
|
|
892
903
|
UUID-format API key issued to the customer. Each key is authorized for a
|
|
893
|
-
specific set of database
|
|
904
|
+
specific set of database IDs; requesting any other ID returns 403.
|
|
894
905
|
|
|
895
906
|
v1 only. The v2 endpoints take a console-issued key as a bearer token.
|
|
896
907
|
BearerAuth:
|
|
@@ -932,11 +943,23 @@ components:
|
|
|
932
943
|
description: Database file format.
|
|
933
944
|
schema:
|
|
934
945
|
$ref: '#/components/schemas/DatabaseFormat'
|
|
946
|
+
DbBuild:
|
|
947
|
+
name: build
|
|
948
|
+
in: query
|
|
949
|
+
required: false
|
|
950
|
+
description: |
|
|
951
|
+
One build of the database, by the name a `database.updated` webhook gives
|
|
952
|
+
it, so the file is the one whose `sha256` the webhook carries. Without
|
|
953
|
+
it, the build that is live.
|
|
954
|
+
schema:
|
|
955
|
+
type: string
|
|
956
|
+
pattern: ^[0-9]{8}\.[a-z0-9]{6}$
|
|
957
|
+
example: 20261105.0t53s5
|
|
935
958
|
ApikeyIdParam:
|
|
936
959
|
name: id
|
|
937
960
|
in: path
|
|
938
961
|
required: true
|
|
939
|
-
description: The key's
|
|
962
|
+
description: The key's ID, as returned by the list endpoint. Never the key itself.
|
|
940
963
|
schema:
|
|
941
964
|
type: string
|
|
942
965
|
format: uuid
|
|
@@ -973,7 +996,7 @@ components:
|
|
|
973
996
|
description: |
|
|
974
997
|
One database FAMILY, with your organization's license beside it. A
|
|
975
998
|
license covers the family, while a download names a specific version,
|
|
976
|
-
so the
|
|
999
|
+
so the IDs passed to `download` and `checksum` come from `versions`.
|
|
977
1000
|
required:
|
|
978
1001
|
- base
|
|
979
1002
|
- name
|
|
@@ -1061,7 +1084,7 @@ components:
|
|
|
1061
1084
|
properties:
|
|
1062
1085
|
id:
|
|
1063
1086
|
type: string
|
|
1064
|
-
description: The versioned
|
|
1087
|
+
description: The versioned ID. Pass this to `download`, `checksum` and `metadata`.
|
|
1065
1088
|
example: vpn_ip_v1
|
|
1066
1089
|
version:
|
|
1067
1090
|
type: integer
|
|
@@ -1072,7 +1095,7 @@ components:
|
|
|
1072
1095
|
type: array
|
|
1073
1096
|
description: |
|
|
1074
1097
|
The formats this version is BUILT in. Asking for another is a 400,
|
|
1075
|
-
not a gap - the `_provider` catalogs are keyed by provider
|
|
1098
|
+
not a gap - the `_provider` catalogs are keyed by provider ID, so no
|
|
1076
1099
|
MMDB exists for them.
|
|
1077
1100
|
items:
|
|
1078
1101
|
$ref: '#/components/schemas/DatabaseFormat'
|
|
@@ -1826,7 +1849,7 @@ components:
|
|
|
1826
1849
|
schema:
|
|
1827
1850
|
$ref: '#/components/schemas/DbInvalidApiKeyError'
|
|
1828
1851
|
Forbidden:
|
|
1829
|
-
description: The `apikey` is valid but is not authorized for the requested database
|
|
1852
|
+
description: The `apikey` is valid but is not authorized for the requested database ID.
|
|
1830
1853
|
content:
|
|
1831
1854
|
application/json:
|
|
1832
1855
|
schema:
|
|
@@ -73,7 +73,7 @@ def sync_detailed(
|
|
|
73
73
|
) -> Response[AccountCreatedApikey | AccountRc]:
|
|
74
74
|
"""Rotate
|
|
75
75
|
|
|
76
|
-
Replaces the secret behind a key, keeping its
|
|
76
|
+
Replaces the secret behind a key, keeping its ID, name and settings.
|
|
77
77
|
The previous secret stops working immediately. The new secret comes
|
|
78
78
|
back in the answer, so this needs `apikeys.reveal` as well as
|
|
79
79
|
`apikeys.manage`.
|
|
@@ -107,7 +107,7 @@ def sync(
|
|
|
107
107
|
) -> AccountCreatedApikey | AccountRc | None:
|
|
108
108
|
"""Rotate
|
|
109
109
|
|
|
110
|
-
Replaces the secret behind a key, keeping its
|
|
110
|
+
Replaces the secret behind a key, keeping its ID, name and settings.
|
|
111
111
|
The previous secret stops working immediately. The new secret comes
|
|
112
112
|
back in the answer, so this needs `apikeys.reveal` as well as
|
|
113
113
|
`apikeys.manage`.
|
|
@@ -136,7 +136,7 @@ async def asyncio_detailed(
|
|
|
136
136
|
) -> Response[AccountCreatedApikey | AccountRc]:
|
|
137
137
|
"""Rotate
|
|
138
138
|
|
|
139
|
-
Replaces the secret behind a key, keeping its
|
|
139
|
+
Replaces the secret behind a key, keeping its ID, name and settings.
|
|
140
140
|
The previous secret stops working immediately. The new secret comes
|
|
141
141
|
back in the answer, so this needs `apikeys.reveal` as well as
|
|
142
142
|
`apikeys.manage`.
|
|
@@ -168,7 +168,7 @@ async def asyncio(
|
|
|
168
168
|
) -> AccountCreatedApikey | AccountRc | None:
|
|
169
169
|
"""Rotate
|
|
170
170
|
|
|
171
|
-
Replaces the secret behind a key, keeping its
|
|
171
|
+
Replaces the secret behind a key, keeping its ID, name and settings.
|
|
172
172
|
The previous secret stops working immediately. The new secret comes
|
|
173
173
|
back in the answer, so this needs `apikeys.reveal` as well as
|
|
174
174
|
`apikeys.manage`.
|
|
@@ -7,13 +7,14 @@ from ... import errors
|
|
|
7
7
|
from ...client import AuthenticatedClient, Client
|
|
8
8
|
from ...models.database_format import DatabaseFormat
|
|
9
9
|
from ...models.error import Error
|
|
10
|
-
from ...types import UNSET, Response
|
|
10
|
+
from ...types import UNSET, Response, Unset
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _get_kwargs(
|
|
14
14
|
*,
|
|
15
15
|
id: str,
|
|
16
16
|
format_: DatabaseFormat,
|
|
17
|
+
build: str | Unset = UNSET,
|
|
17
18
|
) -> dict[str, Any]:
|
|
18
19
|
|
|
19
20
|
params: dict[str, Any] = {}
|
|
@@ -23,6 +24,8 @@ def _get_kwargs(
|
|
|
23
24
|
json_format_ = format_.value
|
|
24
25
|
params["format"] = json_format_
|
|
25
26
|
|
|
27
|
+
params["build"] = build
|
|
28
|
+
|
|
26
29
|
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
|
|
27
30
|
|
|
28
31
|
_kwargs: dict[str, Any] = {
|
|
@@ -61,6 +64,11 @@ def _parse_response(
|
|
|
61
64
|
|
|
62
65
|
return response_404
|
|
63
66
|
|
|
67
|
+
if response.status_code == 410:
|
|
68
|
+
response_410 = Error.from_dict(response.json())
|
|
69
|
+
|
|
70
|
+
return response_410
|
|
71
|
+
|
|
64
72
|
if response.status_code == 503:
|
|
65
73
|
response_503 = Error.from_dict(response.json())
|
|
66
74
|
|
|
@@ -88,6 +96,7 @@ def sync_detailed(
|
|
|
88
96
|
client: AuthenticatedClient,
|
|
89
97
|
id: str,
|
|
90
98
|
format_: DatabaseFormat,
|
|
99
|
+
build: str | Unset = UNSET,
|
|
91
100
|
) -> Response[Any | Error]:
|
|
92
101
|
"""Download
|
|
93
102
|
|
|
@@ -97,6 +106,7 @@ def sync_detailed(
|
|
|
97
106
|
Args:
|
|
98
107
|
id (str): Example: vpn_ip_v1.
|
|
99
108
|
format_ (DatabaseFormat): A file format a database version is published in. Example: mmdb.
|
|
109
|
+
build (str | Unset): Example: 20261105.0t53s5.
|
|
100
110
|
|
|
101
111
|
Raises:
|
|
102
112
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -109,6 +119,7 @@ def sync_detailed(
|
|
|
109
119
|
kwargs = _get_kwargs(
|
|
110
120
|
id=id,
|
|
111
121
|
format_=format_,
|
|
122
|
+
build=build,
|
|
112
123
|
)
|
|
113
124
|
|
|
114
125
|
response = client.get_httpx_client().request(
|
|
@@ -123,6 +134,7 @@ def sync(
|
|
|
123
134
|
client: AuthenticatedClient,
|
|
124
135
|
id: str,
|
|
125
136
|
format_: DatabaseFormat,
|
|
137
|
+
build: str | Unset = UNSET,
|
|
126
138
|
) -> Any | Error | None:
|
|
127
139
|
"""Download
|
|
128
140
|
|
|
@@ -132,6 +144,7 @@ def sync(
|
|
|
132
144
|
Args:
|
|
133
145
|
id (str): Example: vpn_ip_v1.
|
|
134
146
|
format_ (DatabaseFormat): A file format a database version is published in. Example: mmdb.
|
|
147
|
+
build (str | Unset): Example: 20261105.0t53s5.
|
|
135
148
|
|
|
136
149
|
Raises:
|
|
137
150
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -145,6 +158,7 @@ def sync(
|
|
|
145
158
|
client=client,
|
|
146
159
|
id=id,
|
|
147
160
|
format_=format_,
|
|
161
|
+
build=build,
|
|
148
162
|
).parsed
|
|
149
163
|
|
|
150
164
|
|
|
@@ -153,6 +167,7 @@ async def asyncio_detailed(
|
|
|
153
167
|
client: AuthenticatedClient,
|
|
154
168
|
id: str,
|
|
155
169
|
format_: DatabaseFormat,
|
|
170
|
+
build: str | Unset = UNSET,
|
|
156
171
|
) -> Response[Any | Error]:
|
|
157
172
|
"""Download
|
|
158
173
|
|
|
@@ -162,6 +177,7 @@ async def asyncio_detailed(
|
|
|
162
177
|
Args:
|
|
163
178
|
id (str): Example: vpn_ip_v1.
|
|
164
179
|
format_ (DatabaseFormat): A file format a database version is published in. Example: mmdb.
|
|
180
|
+
build (str | Unset): Example: 20261105.0t53s5.
|
|
165
181
|
|
|
166
182
|
Raises:
|
|
167
183
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -174,6 +190,7 @@ async def asyncio_detailed(
|
|
|
174
190
|
kwargs = _get_kwargs(
|
|
175
191
|
id=id,
|
|
176
192
|
format_=format_,
|
|
193
|
+
build=build,
|
|
177
194
|
)
|
|
178
195
|
|
|
179
196
|
response = await client.get_async_httpx_client().request(**kwargs)
|
|
@@ -186,6 +203,7 @@ async def asyncio(
|
|
|
186
203
|
client: AuthenticatedClient,
|
|
187
204
|
id: str,
|
|
188
205
|
format_: DatabaseFormat,
|
|
206
|
+
build: str | Unset = UNSET,
|
|
189
207
|
) -> Any | Error | None:
|
|
190
208
|
"""Download
|
|
191
209
|
|
|
@@ -195,6 +213,7 @@ async def asyncio(
|
|
|
195
213
|
Args:
|
|
196
214
|
id (str): Example: vpn_ip_v1.
|
|
197
215
|
format_ (DatabaseFormat): A file format a database version is published in. Example: mmdb.
|
|
216
|
+
build (str | Unset): Example: 20261105.0t53s5.
|
|
198
217
|
|
|
199
218
|
Raises:
|
|
200
219
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -209,5 +228,6 @@ async def asyncio(
|
|
|
209
228
|
client=client,
|
|
210
229
|
id=id,
|
|
211
230
|
format_=format_,
|
|
231
|
+
build=build,
|
|
212
232
|
)
|
|
213
233
|
).parsed
|
|
@@ -23,7 +23,7 @@ T = TypeVar("T", bound="Database")
|
|
|
23
23
|
class Database:
|
|
24
24
|
"""One database FAMILY, with your organization's license beside it. A
|
|
25
25
|
license covers the family, while a download names a specific version,
|
|
26
|
-
so the
|
|
26
|
+
so the IDs passed to `download` and `checksum` come from `versions`.
|
|
27
27
|
|
|
28
28
|
Attributes:
|
|
29
29
|
base (str): The family, e.g. `vpn_ip`. What a license is held against. Example: vpn_ip.
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_version.py
RENAMED
|
@@ -16,11 +16,11 @@ T = TypeVar("T", bound="DatabaseVersion")
|
|
|
16
16
|
class DatabaseVersion:
|
|
17
17
|
"""
|
|
18
18
|
Attributes:
|
|
19
|
-
id (str): The versioned
|
|
19
|
+
id (str): The versioned ID. Pass this to `download`, `checksum` and `metadata`. Example: vpn_ip_v1.
|
|
20
20
|
version (int): Example: 1.
|
|
21
21
|
summary (str):
|
|
22
22
|
formats (list[DatabaseFormat]): The formats this version is BUILT in. Asking for another is a 400,
|
|
23
|
-
not a gap - the `_provider` catalogs are keyed by provider
|
|
23
|
+
not a gap - the `_provider` catalogs are keyed by provider ID, so no
|
|
24
24
|
MMDB exists for them.
|
|
25
25
|
sample_formats (list[DatabaseFormat] | Unset): The formats an evaluation sample is published in, if any.
|
|
26
26
|
"""
|
|
@@ -184,7 +184,7 @@ class DatabaseApi:
|
|
|
184
184
|
for the key you are holding, so a listing held from one key is not an answer for
|
|
185
185
|
another.
|
|
186
186
|
|
|
187
|
-
A license covers a FAMILY, while a download names a version, so the
|
|
187
|
+
A license covers a FAMILY, while a download names a version, so the IDs for the
|
|
188
188
|
other calls come from each entry's `versions`.
|
|
189
189
|
|
|
190
190
|
`timeout` bounds each attempt at this call alone, in place of the client's.
|
|
@@ -128,7 +128,7 @@ def error_from_response(status: int, headers: httpx.Headers, body: Any) -> Inter
|
|
|
128
128
|
"""Classify a failed response.
|
|
129
129
|
|
|
130
130
|
Everything outside the four named statuses is decided by its RANGE rather than by an
|
|
131
|
-
enumerated list, which is the whole point: a 404 from a database
|
|
131
|
+
enumerated list, which is the whole point: a 404 from a database ID that does not
|
|
132
132
|
exist has to land on a client error, and mapping 400/401/403/429 and letting the rest
|
|
133
133
|
fall through to `server_error` retries it twice before failing. Three of the four
|
|
134
134
|
first SDKs shipped exactly that bug, so the shared corpus pins both 404 shapes.
|
|
@@ -39,7 +39,7 @@ Format = Literal["csvgz", "mmdb"]
|
|
|
39
39
|
|
|
40
40
|
Which of them a given version HAS is `DatabaseVersion.formats`; asking for another is a
|
|
41
41
|
`bad_request` rather than a gap, because the `_provider` catalogs are keyed by provider
|
|
42
|
-
|
|
42
|
+
ID and no MMDB exists for them.
|
|
43
43
|
"""
|
|
44
44
|
|
|
45
45
|
Standing = Literal["licensed", "expired", "unlicensed"]
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
"mmdb"
|
|
151
151
|
],
|
|
152
152
|
"visibility": {
|
|
153
|
-
"why": "A private family is one built for a single customer. It must be ABSENT from a listing for an org that does not license it, not present with standing 'unlicensed' - the standing field is the discovery surface for public datasets only. The server enforces this; an SDK must not reconstruct a catalog from any other source and must not assume the listing is the same for every key. The private
|
|
153
|
+
"why": "A private family is one built for a single customer. It must be ABSENT from a listing for an org that does not license it, not present with standing 'unlicensed' - the standing field is the discovery surface for public datasets only. The server enforces this; an SDK must not reconstruct a catalog from any other source and must not assume the listing is the same for every key. The private IDs are deliberately NOT named here: this corpus is committed into twelve PUBLIC repositories, so naming them would publish the customer relationship the rule exists to keep private.",
|
|
154
154
|
"clientRules": [
|
|
155
155
|
"listing-is-returned-as-served",
|
|
156
156
|
"no-catalog-is-compiled-into-the-client",
|
|
@@ -168,7 +168,7 @@ def test_the_listing_is_returned_exactly_as_served(make_client: ClientFactory) -
|
|
|
168
168
|
def test_no_catalog_is_compiled_into_the_client(make_client: ClientFactory) -> None:
|
|
169
169
|
"""An empty listing must stay empty.
|
|
170
170
|
|
|
171
|
-
This is the mistake worth guarding: a client that knows the published database
|
|
171
|
+
This is the mistake worth guarding: a client that knows the published database IDs -
|
|
172
172
|
from a bundled table, an enum, or a merge with anything - would hand back a family the
|
|
173
173
|
server deliberately withheld, and the leak answers 200 while moving no bytes.
|
|
174
174
|
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/account/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/api_keys/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/authorization/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/database_v_2/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/api/organization/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_org_ref.py
RENAMED
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_org_wrap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/account_user.py
RENAMED
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/apikey_detail.py
RENAMED
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/client_registration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_format.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/database_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/db_checksums.py
RENAMED
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/device_authorization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/download_outcome.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/oauth_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/revoke_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/token_request.py
RENAMED
|
File without changes
|
{internetdata-2.9.3 → internetdata-2.9.5}/src/internetdata/_generated/models/token_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|