internetdata 2.9.0__tar.gz → 2.9.2__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.
Files changed (98) hide show
  1. {internetdata-2.9.0 → internetdata-2.9.2}/PKG-INFO +2 -3
  2. {internetdata-2.9.0 → internetdata-2.9.2}/README.md +1 -2
  3. {internetdata-2.9.0 → internetdata-2.9.2}/spec/openapi.yaml +30 -10
  4. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/__init__.py +1 -1
  5. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/database_metadata_v2.py +5 -0
  6. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/list_databases.py +5 -0
  7. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/list_downloads.py +5 -0
  8. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/client_registration.py +1 -1
  9. {internetdata-2.9.0 → internetdata-2.9.2}/.gitignore +0 -0
  10. {internetdata-2.9.0 → internetdata-2.9.2}/LICENSE +0 -0
  11. {internetdata-2.9.0 → internetdata-2.9.2}/pyproject.toml +0 -0
  12. {internetdata-2.9.0 → internetdata-2.9.2}/scripts/download-spec.sh +0 -0
  13. {internetdata-2.9.0 → internetdata-2.9.2}/scripts/generate.sh +0 -0
  14. {internetdata-2.9.0 → internetdata-2.9.2}/scripts/publish.sh +0 -0
  15. {internetdata-2.9.0 → internetdata-2.9.2}/scripts/v2_subset.py +0 -0
  16. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_core.py +0 -0
  17. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/__init__.py +0 -0
  18. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/__init__.py +0 -0
  19. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/account/__init__.py +0 -0
  20. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/account/account_identity.py +0 -0
  21. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/__init__.py +0 -0
  22. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/account_create_apikey.py +0 -0
  23. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/account_list_apikeys.py +0 -0
  24. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/account_reveal_apikey.py +0 -0
  25. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/account_revoke_apikey.py +0 -0
  26. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/api_keys/account_rotate_apikey.py +0 -0
  27. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/__init__.py +0 -0
  28. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_authorize.py +0 -0
  29. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_device_authorization.py +0 -0
  30. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_metadata.py +0 -0
  31. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_register.py +0 -0
  32. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_revoke.py +0 -0
  33. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/authorization/oauth_token.py +0 -0
  34. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/__init__.py +0 -0
  35. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/database_checksum_v2.py +0 -0
  36. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/database_v_2/download_database_v2.py +0 -0
  37. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/organization/__init__.py +0 -0
  38. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/organization/account_org.py +0 -0
  39. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/api/organization/account_org_members.py +0 -0
  40. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/client.py +0 -0
  41. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/errors.py +0 -0
  42. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/__init__.py +0 -0
  43. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_create_apikey_request.py +0 -0
  44. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_created_apikey.py +0 -0
  45. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_org.py +0 -0
  46. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_org_ref.py +0 -0
  47. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_org_wrap.py +0 -0
  48. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_rc.py +0 -0
  49. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_revealed_apikey.py +0 -0
  50. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/account_user.py +0 -0
  51. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/apikey_detail.py +0 -0
  52. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/apikey_list.py +0 -0
  53. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/client_registration_request.py +0 -0
  54. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database.py +0 -0
  55. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_checksum_v2_response_200.py +0 -0
  56. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_format.py +0 -0
  57. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_license_type_type_1.py +0 -0
  58. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_license_type_type_2_type_1.py +0 -0
  59. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_license_type_type_3_type_1.py +0 -0
  60. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata.py +0 -0
  61. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_column.py +0 -0
  62. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_sample.py +0 -0
  63. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_sample_additional_property_item.py +0 -0
  64. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_sample_size.py +0 -0
  65. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_schema.py +0 -0
  66. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_metadata_size.py +0 -0
  67. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/database_version.py +0 -0
  68. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/db_checksums.py +0 -0
  69. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/device_authorization.py +0 -0
  70. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/device_authorization_request.py +0 -0
  71. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/download.py +0 -0
  72. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/download_outcome.py +0 -0
  73. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/error.py +0 -0
  74. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/identity.py +0 -0
  75. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/list_databases_response_200.py +0 -0
  76. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/list_downloads_response_200.py +0 -0
  77. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/oauth_authorize_code_challenge_method.py +0 -0
  78. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/oauth_authorize_response_type.py +0 -0
  79. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/oauth_error.py +0 -0
  80. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/oauth_metadata.py +0 -0
  81. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/oauth_revoke_response_200.py +0 -0
  82. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/revoke_request.py +0 -0
  83. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/standing.py +0 -0
  84. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/token_request.py +0 -0
  85. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/models/token_response.py +0 -0
  86. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/_generated/types.py +0 -0
  87. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/aio.py +0 -0
  88. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/client.py +0 -0
  89. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/errors.py +0 -0
  90. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/models.py +0 -0
  91. {internetdata-2.9.0 → internetdata-2.9.2}/src/internetdata/py.typed +0 -0
  92. {internetdata-2.9.0 → internetdata-2.9.2}/testdata/testdata.json +0 -0
  93. {internetdata-2.9.0 → internetdata-2.9.2}/tests/conftest.py +0 -0
  94. {internetdata-2.9.0 → internetdata-2.9.2}/tests/helpers.py +0 -0
  95. {internetdata-2.9.0 → internetdata-2.9.2}/tests/test_client.py +0 -0
  96. {internetdata-2.9.0 → internetdata-2.9.2}/tests/test_conformance.py +0 -0
  97. {internetdata-2.9.0 → internetdata-2.9.2}/tests/test_download.py +0 -0
  98. {internetdata-2.9.0 → internetdata-2.9.2}/tests/test_oauth.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: internetdata
3
- Version: 2.9.0
3
+ Version: 2.9.2
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
@@ -225,14 +225,13 @@ Check that `state` came back as you sent it before you exchange `code`, which wo
225
225
 
226
226
  ### Register a client
227
227
 
228
- An app with no client ID, and no client metadata document to use as one, registers itself and signs in with the `client_id` it gets back:
228
+ An app with no client ID, and no client metadata document to use as one, registers itself, then signs in with the `client_id` it gets back as the client ID for `authorization_url` and `exchange_authorization_code`:
229
229
 
230
230
  ```python
231
231
  client = InternetData()
232
232
  registration = client.oauth.register(
233
233
  ["http://127.0.0.1:8765/callback"], client_name="Your App"
234
234
  )
235
- # registration.client_id is the client ID for authorization_url and exchange_authorization_code.
236
235
  ```
237
236
 
238
237
  Each redirect URI must be https on a public host name, or http on a loopback address, which then matches any port. Nothing is kept until a person approves the client, so an app with no client ID saved can simply register again.
@@ -191,14 +191,13 @@ Check that `state` came back as you sent it before you exchange `code`, which wo
191
191
 
192
192
  ### Register a client
193
193
 
194
- An app with no client ID, and no client metadata document to use as one, registers itself and signs in with the `client_id` it gets back:
194
+ An app with no client ID, and no client metadata document to use as one, registers itself, then signs in with the `client_id` it gets back as the client ID for `authorization_url` and `exchange_authorization_code`:
195
195
 
196
196
  ```python
197
197
  client = InternetData()
198
198
  registration = client.oauth.register(
199
199
  ["http://127.0.0.1:8765/callback"], client_name="Your App"
200
200
  )
201
- # registration.client_id is the client ID for authorization_url and exchange_authorization_code.
202
201
  ```
203
202
 
204
203
  Each redirect URI must be https on a public host name, or http on a loopback address, which then matches any port. Nothing is kept until a person approves the client, so an app with no client ID saved can simply register again.
@@ -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.10.16
15
+ version: 2026.10.21
16
16
  servers:
17
17
  - url: https://internetdata.io
18
18
  tags:
@@ -81,6 +81,8 @@ paths:
81
81
  $ref: '#/components/schemas/Database'
82
82
  '401':
83
83
  $ref: '#/components/responses/V2Unauthorized'
84
+ '403':
85
+ $ref: '#/components/responses/V2IpNotAllowed'
84
86
  /api/v2/database/download:
85
87
  get:
86
88
  tags:
@@ -113,7 +115,7 @@ paths:
113
115
  '401':
114
116
  $ref: '#/components/responses/V2Unauthorized'
115
117
  '403':
116
- $ref: '#/components/responses/V2NotLicensed'
118
+ $ref: '#/components/responses/V2Forbidden'
117
119
  '404':
118
120
  $ref: '#/components/responses/V2UnknownDatabase'
119
121
  '503':
@@ -146,6 +148,8 @@ paths:
146
148
  $ref: '#/components/schemas/DatabaseMetadata'
147
149
  '401':
148
150
  $ref: '#/components/responses/V2Unauthorized'
151
+ '403':
152
+ $ref: '#/components/responses/V2IpNotAllowed'
149
153
  '404':
150
154
  $ref: '#/components/responses/V2UnknownDatabase'
151
155
  '503':
@@ -192,7 +196,7 @@ paths:
192
196
  '401':
193
197
  $ref: '#/components/responses/V2Unauthorized'
194
198
  '403':
195
- $ref: '#/components/responses/V2NotLicensed'
199
+ $ref: '#/components/responses/V2Forbidden'
196
200
  '404':
197
201
  $ref: '#/components/responses/V2UnknownDatabase'
198
202
  '503':
@@ -236,6 +240,8 @@ paths:
236
240
  $ref: '#/components/schemas/Download'
237
241
  '401':
238
242
  $ref: '#/components/responses/V2Unauthorized'
243
+ '403':
244
+ $ref: '#/components/responses/V2IpNotAllowed'
239
245
  /api/v1/database/download:
240
246
  get:
241
247
  tags:
@@ -1705,7 +1711,8 @@ components:
1705
1711
  type: string
1706
1712
  client_id_issued_at:
1707
1713
  type: integer
1708
- description: Unix seconds.
1714
+ format: int64
1715
+ description: Unix seconds. 64-bit, since 32 bits run out on 2038-01-19.
1709
1716
  client_name:
1710
1717
  type: string
1711
1718
  description: As the person will see it.
@@ -1757,18 +1764,31 @@ components:
1757
1764
  responses:
1758
1765
  V2Unauthorized:
1759
1766
  description: |
1760
- Missing or invalid bearer key, the key lacks the `db.download` scope, or
1761
- it belongs to no organization.
1767
+ Missing, invalid, revoked or expired key; the key lacks the
1768
+ `db.download` scope; or the key belongs to no active organization.
1769
+ Each answers the same.
1762
1770
  `rc`: `UNAUTHORIZED`.
1763
1771
  content:
1764
1772
  application/json:
1765
1773
  schema:
1766
1774
  $ref: '#/components/schemas/Error'
1767
- V2NotLicensed:
1775
+ V2IpNotAllowed:
1776
+ description: |
1777
+ The request comes from an address outside the key's or its
1778
+ organization's allowed addresses. Change the allowlist or call from an
1779
+ allowed address: the key itself is fine.
1780
+ `rc`: `IP_NOT_ALLOWED`.
1781
+ content:
1782
+ application/json:
1783
+ schema:
1784
+ $ref: '#/components/schemas/Error'
1785
+ V2Forbidden:
1768
1786
  description: |
1769
- Your organization holds no license for this database, or its term has
1770
- ended.
1771
- `rc`: `NOT_LICENSED`, `LICENSE_EXPIRED`.
1787
+ Your organization holds no license for this database (`NOT_LICENSED`),
1788
+ or its term has ended (`LICENSE_EXPIRED`); or the request comes from an
1789
+ address outside the key's or its organization's allowed addresses
1790
+ (`IP_NOT_ALLOWED`).
1791
+ `rc`: `NOT_LICENSED`, `LICENSE_EXPIRED`, `IP_NOT_ALLOWED`.
1772
1792
  content:
1773
1793
  application/json:
1774
1794
  schema:
@@ -40,7 +40,7 @@ from .models import (
40
40
  TokenResponse,
41
41
  )
42
42
 
43
- __version__ = "2.9.0"
43
+ __version__ = "2.9.2"
44
44
 
45
45
  __all__ = [
46
46
  "DATABASE_FORMATS",
@@ -43,6 +43,11 @@ def _parse_response(
43
43
 
44
44
  return response_401
45
45
 
46
+ if response.status_code == 403:
47
+ response_403 = Error.from_dict(response.json())
48
+
49
+ return response_403
50
+
46
51
  if response.status_code == 404:
47
52
  response_404 = Error.from_dict(response.json())
48
53
 
@@ -33,6 +33,11 @@ def _parse_response(
33
33
 
34
34
  return response_401
35
35
 
36
+ if response.status_code == 403:
37
+ response_403 = Error.from_dict(response.json())
38
+
39
+ return response_403
40
+
36
41
  if client.raise_on_unexpected_status:
37
42
  raise errors.UnexpectedStatus(response.status_code, response.content)
38
43
  else:
@@ -43,6 +43,11 @@ def _parse_response(
43
43
 
44
44
  return response_401
45
45
 
46
+ if response.status_code == 403:
47
+ response_403 = Error.from_dict(response.json())
48
+
49
+ return response_403
50
+
46
51
  if client.raise_on_unexpected_status:
47
52
  raise errors.UnexpectedStatus(response.status_code, response.content)
48
53
  else:
@@ -16,7 +16,7 @@ class ClientRegistration:
16
16
  """
17
17
  Attributes:
18
18
  client_id (str):
19
- client_id_issued_at (int): Unix seconds.
19
+ client_id_issued_at (int): Unix seconds. 64-bit, since 32 bits run out on 2038-01-19.
20
20
  client_name (str): As the person will see it.
21
21
  redirect_uris (list[str]):
22
22
  token_endpoint_auth_method (str): Always `none`.
File without changes
File without changes