mmisp-lib 0.6.4__tar.gz → 0.7.0__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.
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/PKG-INFO +3 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/pyproject.toml +3 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/attributes.py +60 -50
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/auth_keys.py +16 -17
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/authentication.py +12 -13
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/common.py +3 -3
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/events.py +132 -106
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/feeds.py +15 -14
- mmisp_lib-0.7.0/src/mmisp/api_schemas/galaxies.py +238 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/galaxy_clusters.py +9 -9
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/galaxy_common.py +1 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/noticelists.py +3 -3
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/objects.py +14 -10
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/organisations.py +25 -24
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/responses/standard_status_response.py +1 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/roles.py +7 -9
- mmisp_lib-0.7.0/src/mmisp/api_schemas/server.py +54 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/servers.py +3 -3
- mmisp_lib-0.7.0/src/mmisp/api_schemas/shadow_attribute.py +27 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/sharing_groups.py +48 -48
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/sightings.py +9 -8
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/tags.py +6 -6
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/taxonomies.py +3 -3
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/user_settings.py +12 -12
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/users.py +39 -25
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/warninglists.py +8 -8
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/config.py +5 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/database.py +14 -6
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/attribute.py +2 -1
- mmisp_lib-0.7.0/src/mmisp/db/models/blocklist.py +39 -0
- mmisp_lib-0.7.0/src/mmisp/db/models/correlation.py +64 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/event.py +15 -0
- mmisp_lib-0.7.0/src/mmisp/db/models/post.py +18 -0
- mmisp_lib-0.7.0/src/mmisp/db/models/shadow_attribute.py +32 -0
- mmisp_lib-0.7.0/src/mmisp/db/models/threat_level.py +14 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/attributes.py +27 -0
- mmisp_lib-0.7.0/src/mmisp/lib/logger.py +75 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/enrichment/data.py +62 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/enrichment/enrichment_plugin.py +41 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/exceptions.py +18 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/models/attribute.py +20 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/plugin_info.py +26 -0
- mmisp_lib-0.7.0/src/mmisp/plugins/plugin_type.py +12 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/fixtures.py +408 -10
- mmisp_lib-0.7.0/src/mmisp/tests/generators/attribute_generator.py +90 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/attribute_generator.py +16 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/correlation_exclusions_generator.py +6 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/correlation_value_generator.py +8 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/default_correlation_generator.py +27 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/event_generator.py +1 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/object_generator.py +17 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/over_correlating_value_generator.py +9 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/post_generator.py +12 -0
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/shadow_attribute_generator.py +31 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/sharing_group_generator.py +4 -1
- mmisp_lib-0.7.0/src/mmisp/tests/generators/model_generators/sighting_generator.py +17 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/object_generator.py +2 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/tag_generator.py +39 -3
- mmisp_lib-0.7.0/src/mmisp/util/py.typed +0 -0
- mmisp_lib-0.7.0/src/mmisp/workflows/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/modules.py +1 -0
- mmisp_lib-0.7.0/src/mmisp/workflows/py.typed +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp_lib.egg-info/PKG-INFO +3 -1
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp_lib.egg-info/SOURCES.txt +26 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp_lib.egg-info/requires.txt +2 -0
- mmisp_lib-0.6.4/src/mmisp/api_schemas/galaxies.py +0 -122
- mmisp_lib-0.6.4/src/mmisp/tests/generators/model_generators/attribute_generator.py +0 -5
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/LICENSE +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/README.md +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/setup.cfg +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/jobs.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/logs.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/py.typed +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/responses/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/responses/check_graph_response.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/statistics.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/api_schemas/workflows.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/main.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/organisation.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/py.typed +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/setup.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/commandline_tool/user.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/additional_properties.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/all_models.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/mixins.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/admin_setting.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/auth_key.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/feed.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/galaxy.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/galaxy_cluster.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/identity_provider.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/log.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/noticelist.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/object.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/organisation.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/role.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/server.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/sharing_group.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/sighting.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/tag.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/taxonomy.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/user.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/user_setting.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/warninglist.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/workflow.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/models/workflow_blueprint.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/mypy.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/print_changes.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/db/py.typed +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/actions.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/attribute_search_filter.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/distribution.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/fallbacks.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/galaxies.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/logging.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/permissions.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/py.typed +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/serialisation_helper.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/lib/uuid.py +0 -0
- {mmisp_lib-0.6.4/src/mmisp/tests → mmisp_lib-0.7.0/src/mmisp/plugins}/__init__.py +0 -0
- {mmisp_lib-0.6.4/src/mmisp/util → mmisp_lib-0.7.0/src/mmisp/plugins/enrichment}/__init__.py +0 -0
- {mmisp_lib-0.6.4/src/mmisp/workflows → mmisp_lib-0.7.0/src/mmisp/plugins/models}/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/plugins/py.typed +0 -0
- /mmisp_lib-0.6.4/src/mmisp/util/py.typed → /mmisp_lib-0.7.0/src/mmisp/tests/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/compatibility_helpers.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/feed_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/auth_key_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/galaxy_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/identity_provider_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/noticelist_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/organisation_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/role_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/server_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/tag_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/taxonomy_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/user_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/user_setting_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/warninglist_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/model_generators/workflow_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/sighting_generator.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/tests/generators/taxonomies_generator.py +0 -0
- /mmisp_lib-0.6.4/src/mmisp/workflows/py.typed → /mmisp_lib-0.7.0/src/mmisp/util/__init__.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/util/crypto.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/util/models.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/util/partial.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/util/uuid.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/execution.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/fastapi.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/graph.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/input.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/legacy.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp/workflows/misp_core_format.py +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp_lib.egg-info/dependency_links.txt +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/src/mmisp_lib.egg-info/top_level.txt +0 -0
- {mmisp_lib-0.6.4 → mmisp_lib-0.7.0}/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.
|
3
|
+
Version: 0.7.0
|
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.
|
3
|
+
version = "0.7.0"
|
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:
|
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:
|
25
|
+
id: int
|
26
26
|
distribution: str
|
27
|
-
sharing_group_id:
|
27
|
+
sharing_group_id: int
|
28
28
|
|
29
29
|
|
30
30
|
class SearchAttributesEvent(BaseModel):
|
31
|
-
id:
|
32
|
-
org_id:
|
31
|
+
id: int
|
32
|
+
org_id: int
|
33
33
|
distribution: str
|
34
34
|
info: str
|
35
|
-
orgc_id:
|
35
|
+
orgc_id: int
|
36
36
|
uuid: str
|
37
37
|
publish_timestamp: int
|
38
38
|
|
39
39
|
|
40
40
|
class SearchAttributesAttributesDetails(BaseModel):
|
41
|
-
id:
|
42
|
-
event_id:
|
43
|
-
object_id:
|
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:
|
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:
|
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:
|
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:
|
144
|
-
event_id:
|
145
|
-
object_id:
|
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:
|
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:
|
189
|
-
event_id:
|
190
|
-
object_id:
|
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:
|
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
|
-
|
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:
|
218
|
-
event_id:
|
219
|
-
object_id:
|
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:
|
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
|
-
|
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:
|
261
|
+
id: int
|
253
262
|
name: str
|
254
263
|
colour: str
|
255
264
|
exportable: str
|
256
|
-
user_id:
|
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:
|
266
|
-
event_id:
|
267
|
-
object_id:
|
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:
|
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
|
-
|
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:
|
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:
|
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:
|
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:
|
354
|
-
event_id:
|
355
|
-
object_id:
|
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:
|
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:
|
388
|
-
object_id:
|
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:
|
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
|
-
|
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:
|
7
|
+
id: int
|
9
8
|
email: str
|
10
9
|
|
11
10
|
|
12
11
|
class ViewAuthKeyResponseWrapper(BaseModel):
|
13
|
-
id:
|
12
|
+
id: int
|
14
13
|
uuid: str
|
15
14
|
authkey_start: str
|
16
15
|
authkey_end: str
|
17
|
-
created:
|
16
|
+
created: str
|
18
17
|
expiration: int
|
19
18
|
read_only: bool
|
20
|
-
user_id:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
121
|
-
org_id:
|
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:
|
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:
|
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:
|
16
|
+
org_id: int
|
17
17
|
active: bool
|
18
18
|
base_url: str
|
19
19
|
client_id: str
|
20
|
-
client_secret:
|
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:
|
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:
|
35
|
+
client_secret: SecretStr | None = None
|
36
36
|
scope: str | None = None
|
37
37
|
|
38
38
|
|
39
39
|
class GetIdentityProviderResponse(BaseModel):
|
40
|
-
id:
|
40
|
+
id: int
|
41
41
|
name: str
|
42
|
-
org_id:
|
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:
|
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:
|
69
|
+
password: SecretStr
|
71
70
|
|
72
71
|
|
73
72
|
class SetPasswordBody(BaseModel):
|
74
|
-
password:
|
73
|
+
password: SecretStr
|
75
74
|
|
76
75
|
|
77
76
|
class ChangePasswordBody(BaseModel):
|
78
77
|
email: str
|
79
|
-
password:
|
80
|
-
oldPassword:
|
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:
|
5
|
+
id: int
|
6
6
|
name: str
|
7
7
|
colour: str
|
8
8
|
exportable: bool
|
9
|
-
org_id:
|
10
|
-
user_id:
|
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
|