mmisp-lib 0.6.4__tar.gz → 0.7.1__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 (160) hide show
  1. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/PKG-INFO +3 -1
  2. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/pyproject.toml +3 -1
  3. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/attributes.py +60 -50
  4. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/auth_keys.py +16 -17
  5. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/authentication.py +12 -13
  6. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/common.py +3 -3
  7. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/events.py +132 -106
  8. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/feeds.py +15 -14
  9. mmisp_lib-0.7.1/src/mmisp/api_schemas/galaxies.py +238 -0
  10. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/galaxy_clusters.py +9 -9
  11. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/galaxy_common.py +1 -1
  12. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/noticelists.py +3 -3
  13. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/objects.py +14 -10
  14. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/organisations.py +25 -24
  15. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/responses/standard_status_response.py +1 -1
  16. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/roles.py +7 -7
  17. mmisp_lib-0.7.1/src/mmisp/api_schemas/server.py +54 -0
  18. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/servers.py +3 -3
  19. mmisp_lib-0.7.1/src/mmisp/api_schemas/shadow_attribute.py +27 -0
  20. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/sharing_groups.py +48 -48
  21. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/sightings.py +9 -8
  22. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/tags.py +6 -6
  23. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/taxonomies.py +3 -3
  24. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/user_settings.py +12 -12
  25. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/users.py +39 -25
  26. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/warninglists.py +8 -8
  27. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/config.py +5 -0
  28. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/database.py +14 -6
  29. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/attribute.py +2 -1
  30. mmisp_lib-0.7.1/src/mmisp/db/models/blocklist.py +39 -0
  31. mmisp_lib-0.7.1/src/mmisp/db/models/correlation.py +64 -0
  32. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/event.py +15 -0
  33. mmisp_lib-0.7.1/src/mmisp/db/models/post.py +18 -0
  34. mmisp_lib-0.7.1/src/mmisp/db/models/shadow_attribute.py +32 -0
  35. mmisp_lib-0.7.1/src/mmisp/db/models/threat_level.py +14 -0
  36. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/attributes.py +27 -0
  37. mmisp_lib-0.7.1/src/mmisp/lib/logger.py +75 -0
  38. mmisp_lib-0.7.1/src/mmisp/plugins/enrichment/data.py +62 -0
  39. mmisp_lib-0.7.1/src/mmisp/plugins/enrichment/enrichment_plugin.py +41 -0
  40. mmisp_lib-0.7.1/src/mmisp/plugins/exceptions.py +18 -0
  41. mmisp_lib-0.7.1/src/mmisp/plugins/models/attribute.py +20 -0
  42. mmisp_lib-0.7.1/src/mmisp/plugins/plugin_info.py +26 -0
  43. mmisp_lib-0.7.1/src/mmisp/plugins/plugin_type.py +12 -0
  44. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/fixtures.py +408 -10
  45. mmisp_lib-0.7.1/src/mmisp/tests/generators/attribute_generator.py +90 -0
  46. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/attribute_generator.py +16 -0
  47. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/correlation_exclusions_generator.py +6 -0
  48. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/correlation_value_generator.py +8 -0
  49. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/default_correlation_generator.py +27 -0
  50. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/event_generator.py +1 -0
  51. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/object_generator.py +17 -0
  52. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/over_correlating_value_generator.py +9 -0
  53. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/post_generator.py +12 -0
  54. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/shadow_attribute_generator.py +31 -0
  55. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/sharing_group_generator.py +4 -1
  56. mmisp_lib-0.7.1/src/mmisp/tests/generators/model_generators/sighting_generator.py +17 -0
  57. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/object_generator.py +2 -1
  58. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/tag_generator.py +39 -3
  59. mmisp_lib-0.7.1/src/mmisp/util/py.typed +0 -0
  60. mmisp_lib-0.7.1/src/mmisp/workflows/__init__.py +0 -0
  61. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/modules.py +1 -0
  62. mmisp_lib-0.7.1/src/mmisp/workflows/py.typed +0 -0
  63. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp_lib.egg-info/PKG-INFO +3 -1
  64. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp_lib.egg-info/SOURCES.txt +26 -0
  65. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp_lib.egg-info/requires.txt +2 -0
  66. mmisp_lib-0.6.4/src/mmisp/api_schemas/galaxies.py +0 -122
  67. mmisp_lib-0.6.4/src/mmisp/tests/generators/model_generators/attribute_generator.py +0 -5
  68. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/LICENSE +0 -0
  69. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/README.md +0 -0
  70. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/setup.cfg +0 -0
  71. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/__init__.py +0 -0
  72. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/jobs.py +0 -0
  73. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/logs.py +0 -0
  74. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/py.typed +0 -0
  75. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/responses/__init__.py +0 -0
  76. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/responses/check_graph_response.py +0 -0
  77. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/statistics.py +0 -0
  78. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/api_schemas/workflows.py +0 -0
  79. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/__init__.py +0 -0
  80. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/main.py +0 -0
  81. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/organisation.py +0 -0
  82. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/py.typed +0 -0
  83. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/setup.py +0 -0
  84. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/commandline_tool/user.py +0 -0
  85. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/__init__.py +0 -0
  86. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/additional_properties.py +0 -0
  87. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/all_models.py +0 -0
  88. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/mixins.py +0 -0
  89. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/__init__.py +0 -0
  90. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/admin_setting.py +0 -0
  91. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/auth_key.py +0 -0
  92. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/feed.py +0 -0
  93. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/galaxy.py +0 -0
  94. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/galaxy_cluster.py +0 -0
  95. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/identity_provider.py +0 -0
  96. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/log.py +0 -0
  97. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/noticelist.py +0 -0
  98. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/object.py +0 -0
  99. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/organisation.py +0 -0
  100. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/role.py +0 -0
  101. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/server.py +0 -0
  102. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/sharing_group.py +0 -0
  103. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/sighting.py +0 -0
  104. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/tag.py +0 -0
  105. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/taxonomy.py +0 -0
  106. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/user.py +0 -0
  107. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/user_setting.py +0 -0
  108. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/warninglist.py +0 -0
  109. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/workflow.py +0 -0
  110. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/models/workflow_blueprint.py +0 -0
  111. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/mypy.py +0 -0
  112. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/print_changes.py +0 -0
  113. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/db/py.typed +0 -0
  114. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/__init__.py +0 -0
  115. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/actions.py +0 -0
  116. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/attribute_search_filter.py +0 -0
  117. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/distribution.py +0 -0
  118. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/fallbacks.py +0 -0
  119. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/galaxies.py +0 -0
  120. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/logging.py +0 -0
  121. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/permissions.py +0 -0
  122. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/py.typed +0 -0
  123. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/serialisation_helper.py +0 -0
  124. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/lib/uuid.py +0 -0
  125. {mmisp_lib-0.6.4/src/mmisp/tests → mmisp_lib-0.7.1/src/mmisp/plugins}/__init__.py +0 -0
  126. {mmisp_lib-0.6.4/src/mmisp/util → mmisp_lib-0.7.1/src/mmisp/plugins/enrichment}/__init__.py +0 -0
  127. {mmisp_lib-0.6.4/src/mmisp/workflows → mmisp_lib-0.7.1/src/mmisp/plugins/models}/__init__.py +0 -0
  128. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/plugins/py.typed +0 -0
  129. /mmisp_lib-0.6.4/src/mmisp/util/py.typed → /mmisp_lib-0.7.1/src/mmisp/tests/__init__.py +0 -0
  130. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/compatibility_helpers.py +0 -0
  131. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/feed_generator.py +0 -0
  132. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/auth_key_generator.py +0 -0
  133. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/galaxy_generator.py +0 -0
  134. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/identity_provider_generator.py +0 -0
  135. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/noticelist_generator.py +0 -0
  136. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/organisation_generator.py +0 -0
  137. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/role_generator.py +0 -0
  138. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/server_generator.py +0 -0
  139. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/tag_generator.py +0 -0
  140. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/taxonomy_generator.py +0 -0
  141. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/user_generator.py +0 -0
  142. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/user_setting_generator.py +0 -0
  143. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/warninglist_generator.py +0 -0
  144. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/model_generators/workflow_generator.py +0 -0
  145. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/sighting_generator.py +0 -0
  146. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/tests/generators/taxonomies_generator.py +0 -0
  147. /mmisp_lib-0.6.4/src/mmisp/workflows/py.typed → /mmisp_lib-0.7.1/src/mmisp/util/__init__.py +0 -0
  148. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/util/crypto.py +0 -0
  149. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/util/models.py +0 -0
  150. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/util/partial.py +0 -0
  151. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/util/uuid.py +0 -0
  152. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/execution.py +0 -0
  153. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/fastapi.py +0 -0
  154. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/graph.py +0 -0
  155. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/input.py +0 -0
  156. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/legacy.py +0 -0
  157. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp/workflows/misp_core_format.py +0 -0
  158. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp_lib.egg-info/dependency_links.txt +0 -0
  159. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/src/mmisp_lib.egg-info/top_level.txt +0 -0
  160. {mmisp_lib-0.6.4 → mmisp_lib-0.7.1}/tests/test_commandline_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mmisp-lib
3
- Version: 0.6.4
3
+ Version: 0.7.1
4
4
  Requires-Python: >=3.11.0
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -33,6 +33,8 @@ Requires-Dist: respx==0.20.2; extra == "dev"
33
33
  Requires-Dist: mysql-connector-python==8.3.0; extra == "dev"
34
34
  Requires-Dist: icecream; extra == "dev"
35
35
  Requires-Dist: asyncio; extra == "dev"
36
+ Requires-Dist: twine; extra == "dev"
37
+ Requires-Dist: build; extra == "dev"
36
38
 
37
39
  # Modern MISP - API
38
40
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mmisp-lib"
3
- version = "0.6.4"
3
+ version = "0.7.1"
4
4
  description = ""
5
5
  authors = []
6
6
  readme = "README.md"
@@ -41,6 +41,8 @@ dev = [
41
41
  "mysql-connector-python==8.3.0",
42
42
  "icecream",
43
43
  "asyncio",
44
+ "twine",
45
+ "build",
44
46
  ]
45
47
 
46
48
  [tool.setuptools.package-data]
@@ -1,4 +1,4 @@
1
- from typing import Annotated, Any, Dict, Optional
1
+ from typing import Annotated, Any, Dict, Optional, Type
2
2
 
3
3
  from pydantic import BaseModel, Field, root_validator, validator
4
4
 
@@ -13,7 +13,7 @@ from mmisp.lib.attributes import (
13
13
 
14
14
 
15
15
  class GetAttributeTag(BaseModel):
16
- id: str
16
+ id: int
17
17
  name: str
18
18
  colour: str
19
19
  numerical_value: int | None = None
@@ -22,25 +22,25 @@ class GetAttributeTag(BaseModel):
22
22
 
23
23
 
24
24
  class SearchAttributesObject(BaseModel):
25
- id: str
25
+ id: int
26
26
  distribution: str
27
- sharing_group_id: str
27
+ sharing_group_id: int
28
28
 
29
29
 
30
30
  class SearchAttributesEvent(BaseModel):
31
- id: str
32
- org_id: str
31
+ id: int
32
+ org_id: int
33
33
  distribution: str
34
34
  info: str
35
- orgc_id: str
35
+ orgc_id: int
36
36
  uuid: str
37
37
  publish_timestamp: int
38
38
 
39
39
 
40
40
  class SearchAttributesAttributesDetails(BaseModel):
41
- id: str
42
- event_id: str | None = None
43
- object_id: str | None = None
41
+ id: int
42
+ event_id: int | None = None
43
+ object_id: int | None = None
44
44
  object_relation: str | None = None
45
45
  category: str
46
46
  type: str
@@ -49,12 +49,14 @@ class SearchAttributesAttributesDetails(BaseModel):
49
49
  uuid: str
50
50
  timestamp: str
51
51
  distribution: str
52
- sharing_group_id: str | None = None
52
+ sharing_group_id: int | None = None
53
53
  comment: str | None = None
54
54
  deleted: bool
55
55
  disable_correlation: bool
56
56
  first_seen: str | None = None
57
57
  last_seen: str | None = None
58
+ event_uuid: str | None = None
59
+ data: str | None = None
58
60
  Event: SearchAttributesEvent | None = None
59
61
  Object: SearchAttributesObject | None = None
60
62
  Tag: list[GetAttributeTag] | None = None
@@ -105,6 +107,9 @@ class RestSearchFilter(BaseModel):
105
107
 
106
108
 
107
109
  class SearchAttributesBody(RestSearchFilter):
110
+ class Config:
111
+ allow_population_by_field_name = True
112
+
108
113
  returnFormat: str = "json"
109
114
  page: int | None = None
110
115
  limit: int | None = None
@@ -115,14 +120,14 @@ class SearchAttributesBody(RestSearchFilter):
115
120
  attribute_timestamp: str | None = None
116
121
  enforce_warninglist: Annotated[bool | None, Field(alias="enforceWarninglist")]
117
122
  event_timestamp: str | None = None
118
- threat_level_id: str | None = None
123
+ threat_level_id: int | None = None
119
124
  eventinfo: str | None = None
120
125
  sharinggroup: list[str] | None = None
121
126
  decaying_model: Annotated[str | None, Field(alias="decayingModel")] = None
122
127
  score: str | None = None
123
128
  first_seen: str | None = None
124
129
  last_seen: str | None = None
125
- include_event_uuid: Annotated[bool | None, Field(alias="includeEventUuid")] = None
130
+ include_event_uuid: bool | None = Field(alias="includeEventUuid", default=None)
126
131
  include_event_tags: Annotated[bool | None, Field(alias="includeEventTags")] = None
127
132
  include_proposals: Annotated[bool | None, Field(alias="includeProposals")] = None
128
133
  requested_attributes: list[str] | None = None
@@ -140,9 +145,9 @@ class SearchAttributesBody(RestSearchFilter):
140
145
 
141
146
 
142
147
  class RestoreAttributeResponse(BaseModel):
143
- id: str
144
- event_id: str
145
- object_id: str
148
+ id: int
149
+ event_id: int
150
+ object_id: int
146
151
  object_relation: str
147
152
  category: str
148
153
  type: str
@@ -151,7 +156,7 @@ class RestoreAttributeResponse(BaseModel):
151
156
  uuid: str
152
157
  timestamp: str
153
158
  distribution: str
154
- sharing_group_id: str
159
+ sharing_group_id: int
155
160
  comment: str
156
161
  deleted: bool
157
162
  disable_correlation: bool
@@ -185,9 +190,9 @@ class GetDescribeTypesResponse(BaseModel):
185
190
 
186
191
 
187
192
  class GetAttributeAttributes(BaseModel):
188
- id: str
189
- event_id: str
190
- object_id: str
193
+ id: int
194
+ event_id: int
195
+ object_id: int
191
196
  object_relation: Optional[str] = Field(..., nullable=True)
192
197
  category: str
193
198
  type: str
@@ -196,14 +201,15 @@ class GetAttributeAttributes(BaseModel):
196
201
  uuid: str
197
202
  timestamp: str
198
203
  distribution: str
199
- sharing_group_id: str
204
+ sharing_group_id: int
200
205
  comment: str | None = None
201
- deleted: bool
202
- disable_correlation: bool
206
+ deleted: bool = False
207
+ disable_correlation: bool = False
203
208
  first_seen: Optional[str] = Field(..., nullable=True)
204
209
  last_seen: Optional[str] = Field(..., nullable=True)
205
210
  event_uuid: str
206
- tag: list[GetAttributeTag] | None = None
211
+ data: str | None = None
212
+ Tag: list[GetAttributeTag] | None = None
207
213
 
208
214
 
209
215
  class GetAttributeResponse(BaseModel):
@@ -214,9 +220,9 @@ class GetAttributeResponse(BaseModel):
214
220
 
215
221
 
216
222
  class GetAllAttributesResponse(BaseModel):
217
- id: str
218
- event_id: str | None = None
219
- object_id: str | None = None
223
+ id: int
224
+ event_id: int | None = None
225
+ object_id: int | None = None
220
226
  object_relation: str | None = None
221
227
  category: str | None = None
222
228
  type: str
@@ -226,7 +232,7 @@ class GetAllAttributesResponse(BaseModel):
226
232
  uuid: str | None = None
227
233
  timestamp: str | None = None
228
234
  distribution: str | None = None
229
- sharing_group_id: str | None = None
235
+ sharing_group_id: int | None = None
230
236
  comment: str | None = None
231
237
  deleted: bool | None = None
232
238
  disable_correlation: bool | None = None
@@ -234,8 +240,11 @@ class GetAllAttributesResponse(BaseModel):
234
240
  last_seen: str | None = None
235
241
  value: str | None = None
236
242
 
237
- @validator("sharing_group_id", always=True)
238
- def check_sharing_group_id(cls, value: Any, values: Dict[str, Any]) -> Optional[int]: # noqa: ANN101
243
+ @validator("sharing_group_id", always=True, allow_reuse=True)
244
+ @classmethod
245
+ def check_sharing_group_id(
246
+ cls: Type["GetAllAttributesResponse"], value: Any, values: Dict[str, Any]
247
+ ) -> Optional[int]: # noqa: ANN101
239
248
  """
240
249
  If distribution equals 4, sharing_group_id will be shown.
241
250
  """
@@ -249,11 +258,11 @@ class GetAllAttributesResponse(BaseModel):
249
258
 
250
259
 
251
260
  class EditAttributeTag(BaseModel):
252
- id: str
261
+ id: int
253
262
  name: str
254
263
  colour: str
255
264
  exportable: str
256
- user_id: str
265
+ user_id: int
257
266
  hide_tag: bool
258
267
  numerical_value: int
259
268
  is_galaxy: bool
@@ -262,9 +271,9 @@ class EditAttributeTag(BaseModel):
262
271
 
263
272
 
264
273
  class EditAttributeAttributes(BaseModel):
265
- id: str
266
- event_id: str
267
- object_id: str
274
+ id: int
275
+ event_id: int
276
+ object_id: int
268
277
  object_relation: str | None = None
269
278
  category: str
270
279
  type: str
@@ -273,13 +282,13 @@ class EditAttributeAttributes(BaseModel):
273
282
  uuid: str
274
283
  timestamp: str
275
284
  distribution: str
276
- sharing_group_id: str
285
+ sharing_group_id: int
277
286
  comment: str | None = None
278
287
  deleted: bool
279
288
  disable_correlation: bool
280
289
  first_seen: str | None = None
281
290
  last_seen: str | None = None
282
- tag: list[EditAttributeTag]
291
+ Tag: list[EditAttributeTag]
283
292
 
284
293
 
285
294
  class EditAttributeResponse(BaseModel):
@@ -294,14 +303,14 @@ class EditAttributeBody(BaseModel):
294
303
  value: str | None = None
295
304
  value1: str | None = None
296
305
  value2: str | None = None
297
- object_id: str | None = None
306
+ object_id: int | None = None
298
307
  object_relation: str | None = None
299
308
  category: str | None = None
300
309
  to_ids: bool | None = None
301
310
  uuid: str | None = None
302
311
  timestamp: str | None = None
303
312
  distribution: str | None = None
304
- sharing_group_id: str | None = None
313
+ sharing_group_id: int | None = None
305
314
  comment: str | None = None
306
315
  deleted: bool | None = None
307
316
  disable_correlation: bool | None = None
@@ -318,14 +327,14 @@ class DeleteSelectedAttributeResponse(BaseModel):
318
327
  name: str
319
328
  message: str
320
329
  url: str
321
- id: str
330
+ id: int
322
331
 
323
332
  class Config:
324
333
  orm_mode = True
325
334
 
326
335
 
327
336
  class DeleteSelectedAttributeBody(BaseModel):
328
- id: str # id = "all" deletes all attributes in the event
337
+ id: str # ids can be space separated, id = "all" deletes all attributes in the event
329
338
  allow_hard_delete: bool | None = None
330
339
 
331
340
  class Config:
@@ -350,9 +359,9 @@ class AddRemoveTagAttributeResponse(BaseModel):
350
359
 
351
360
 
352
361
  class AddAttributeAttributes(BaseModel):
353
- id: str
354
- event_id: str
355
- object_id: str
362
+ id: int
363
+ event_id: int
364
+ object_id: int
356
365
  object_relation: Optional[str] = Field(..., nullable=True)
357
366
  category: str
358
367
  type: str
@@ -363,7 +372,7 @@ class AddAttributeAttributes(BaseModel):
363
372
  uuid: str
364
373
  timestamp: str
365
374
  distribution: str
366
- sharing_group_id: str
375
+ sharing_group_id: int
367
376
  comment: str | None = None
368
377
  deleted: bool
369
378
  disable_correlation: bool
@@ -384,23 +393,24 @@ class AddAttributeBody(BaseModel):
384
393
  value: str | None = None
385
394
  value1: str | None = None
386
395
  value2: str | None = None
387
- event_id: str | None = None
388
- object_id: str | None = None
396
+ event_id: int | None = None
397
+ object_id: int | None = None
389
398
  object_relation: str | None = None
390
399
  category: str | None = None
391
400
  to_ids: bool | None = None
392
401
  uuid: str | None = None
393
402
  timestamp: str | None = None
394
403
  distribution: str | None = None
395
- sharing_group_id: str | None = None
404
+ sharing_group_id: int | None = None
396
405
  comment: str | None = None
397
406
  deleted: bool | None = None
398
407
  disable_correlation: bool | None = None
399
408
  first_seen: str | None = None
400
409
  last_seen: str | None = None
401
410
 
402
- @root_validator
403
- def ensure_value_or_value1_is_set(cls, data: dict[str, Any]) -> Optional[dict[str, Any]]: # noqa: ANN101
411
+ @root_validator(allow_reuse=True)
412
+ @classmethod
413
+ def ensure_value_or_value1_is_set(cls: Type["AddAttributeBody"], data: dict[str, Any]) -> Optional[dict[str, Any]]: # noqa: ANN101
404
414
  required_values: list[str] = [str(data.get("value")), str(data.get("value1"))]
405
415
  if all(item is None for item in required_values):
406
416
  raise ValueError("value or value1 has to be set")
@@ -1,23 +1,22 @@
1
- from datetime import datetime
2
1
  from typing import List, Self, Union
3
2
 
4
3
  from pydantic import BaseModel, PositiveInt, conint, validator
5
4
 
6
5
 
7
6
  class SearchGetAuthKeysResponseItemUser(BaseModel):
8
- id: str
7
+ id: int
9
8
  email: str
10
9
 
11
10
 
12
11
  class ViewAuthKeyResponseWrapper(BaseModel):
13
- id: str
12
+ id: int
14
13
  uuid: str
15
14
  authkey_start: str
16
15
  authkey_end: str
17
- created: datetime
16
+ created: str
18
17
  expiration: int
19
18
  read_only: bool
20
- user_id: str
19
+ user_id: int
21
20
  comment: str
22
21
  allowed_ips: list[str] | None = None
23
22
  unique_ips: list[str] | None = []
@@ -29,21 +28,21 @@ class ViewAuthKeysResponse(BaseModel):
29
28
 
30
29
 
31
30
  class SearchGetAuthKeysResponseItemAuthKey(BaseModel):
32
- id: str
31
+ id: int
33
32
  uuid: str
34
33
  authkey_start: str
35
34
  authkey_end: str
36
35
  created: str
37
36
  expiration: str
38
37
  read_only: bool
39
- user_id: str
38
+ user_id: int
40
39
  comment: str | None
41
40
  allowed_ips: list[str] | None = None
42
41
  unique_ips: list[str] | None = []
43
42
 
44
43
 
45
44
  class SearchGetAuthKeysResponseAuthKey(BaseModel):
46
- id: str
45
+ id: int
47
46
  uuid: str
48
47
  authkey_start: str
49
48
  authkey_end: str
@@ -76,34 +75,34 @@ class SearchGetAuthKeysResponse(BaseModel):
76
75
  class SearchAuthKeyBody(BaseModel):
77
76
  page: PositiveInt = 1
78
77
  limit: conint(gt=0, lt=500) = 25 # type: ignore
79
- id: str | None = None
78
+ id: int | None = None
80
79
  uuid: str | None = None
81
80
  authkey_start: str | None = None
82
81
  authkey_end: str | None = None
83
82
  created: str | None = None
84
83
  expiration: str | None = None
85
84
  read_only: bool | None = None
86
- user_id: str | None = None
85
+ user_id: int | None = None
87
86
  comment: str | None = None
88
87
  allowed_ips: str | list[str] | None = None
89
88
  last_used: str | None = None # deprecated
90
89
 
91
90
 
92
91
  class EditAuthKeyResponseAuthKey(BaseModel):
93
- id: str
92
+ id: int
94
93
  uuid: str
95
94
  authkey_start: str
96
95
  authkey_end: str
97
96
  created: str
98
97
  expiration: str
99
98
  read_only: bool
100
- user_id: str
99
+ user_id: int
101
100
  comment: str
102
101
  allowed_ips: str | None = None
103
102
 
104
103
 
105
104
  class EditAuthKeyResponseCompleteAuthKey(BaseModel):
106
- id: str
105
+ id: int
107
106
  uuid: str
108
107
  authkey_start: str
109
108
  authkey_end: str
@@ -117,8 +116,8 @@ class EditAuthKeyResponseCompleteAuthKey(BaseModel):
117
116
 
118
117
 
119
118
  class EditAuthKeyResponseUser(BaseModel):
120
- id: str
121
- org_id: str
119
+ id: int
120
+ org_id: int
122
121
 
123
122
 
124
123
  class EditAuthKeyResponse(BaseModel):
@@ -145,14 +144,14 @@ class EditAuthKeyBody(BaseModel):
145
144
 
146
145
 
147
146
  class AddAuthKeyResponseAuthKey(BaseModel):
148
- id: str
147
+ id: int
149
148
  uuid: str
150
149
  authkey_start: str
151
150
  authkey_end: str
152
151
  created: str
153
152
  expiration: str | None = "0"
154
153
  read_only: bool
155
- user_id: str
154
+ user_id: int
156
155
  comment: str | None = None
157
156
  allowed_ips: list[str] | None = None
158
157
  unique_ips: list[str]
@@ -1,6 +1,6 @@
1
1
  from enum import Enum
2
2
 
3
- from pydantic import BaseModel
3
+ from pydantic import BaseModel, SecretStr
4
4
 
5
5
 
6
6
  class TokenResponse(BaseModel):
@@ -13,11 +13,11 @@ class ChangeLoginInfoResponse(BaseModel):
13
13
 
14
14
  class IdentityProviderBody(BaseModel):
15
15
  name: str
16
- org_id: str
16
+ org_id: int
17
17
  active: bool
18
18
  base_url: str
19
19
  client_id: str
20
- client_secret: str
20
+ client_secret: SecretStr
21
21
  scope: str | None = None
22
22
 
23
23
 
@@ -28,27 +28,26 @@ class IdentityProviderCallbackBody(BaseModel):
28
28
 
29
29
  class IdentityProviderEditBody(BaseModel):
30
30
  name: str | None = None
31
- org_id: str | None = None
31
+ org_id: int | None = None
32
32
  active: bool | None = None
33
33
  base_url: str | None = None
34
34
  client_id: str | None = None
35
- client_secret: str | None = None
35
+ client_secret: SecretStr | None = None
36
36
  scope: str | None = None
37
37
 
38
38
 
39
39
  class GetIdentityProviderResponse(BaseModel):
40
- id: str
40
+ id: int
41
41
  name: str
42
- org_id: str
42
+ org_id: int
43
43
  active: bool
44
44
  base_url: str
45
45
  client_id: str
46
- client_secret: str
47
46
  scope: str | None = None
48
47
 
49
48
 
50
49
  class IdentityProviderInfo(BaseModel):
51
- id: str
50
+ id: int
52
51
  name: str
53
52
  url: str | None = None
54
53
 
@@ -67,17 +66,17 @@ class StartLoginBody(BaseModel):
67
66
 
68
67
  class PasswordLoginBody(BaseModel):
69
68
  email: str
70
- password: str
69
+ password: SecretStr
71
70
 
72
71
 
73
72
  class SetPasswordBody(BaseModel):
74
- password: str
73
+ password: SecretStr
75
74
 
76
75
 
77
76
  class ChangePasswordBody(BaseModel):
78
77
  email: str
79
- password: str
80
- oldPassword: str | None = None
78
+ password: SecretStr
79
+ oldPassword: SecretStr | None = None
81
80
 
82
81
 
83
82
  class ExchangeTokenLoginBody(BaseModel):
@@ -2,12 +2,12 @@ from pydantic import BaseModel
2
2
 
3
3
 
4
4
  class TagAttributesResponse(BaseModel):
5
- id: str
5
+ id: int
6
6
  name: str
7
7
  colour: str
8
8
  exportable: bool
9
- org_id: str | None = None
10
- user_id: str | None = None
9
+ org_id: int | None = None
10
+ user_id: int | None = None
11
11
  hide_tag: bool | None = None
12
12
  numerical_value: str | None = None
13
13
  is_galaxy: bool | None = None