mmisp-lib 0.1.11__tar.gz → 0.3.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.1.11 → mmisp_lib-0.3.0}/PKG-INFO +9 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/README.md +3 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/pyproject.toml +16 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/attributes.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/auth_keys.py +52 -3
- mmisp_lib-0.3.0/src/mmisp/api_schemas/authentication.py +89 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/events.py +53 -52
- mmisp_lib-0.3.0/src/mmisp/api_schemas/galaxy_clusters.py +64 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/jobs.py +52 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/logs.py +9 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/organisations.py +126 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/responses/check_graph_response.py +172 -0
- {mmisp_lib-0.1.11/src/mmisp/api_schemas → mmisp_lib-0.3.0/src/mmisp/api_schemas/responses}/standard_status_response.py +6 -3
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/roles.py +80 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/servers.py +79 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/sharing_groups.py +1 -1
- mmisp_lib-0.3.0/src/mmisp/api_schemas/statistics.py +19 -0
- mmisp_lib-0.3.0/src/mmisp/api_schemas/users.py +182 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/warninglists.py +1 -1
- mmisp_lib-0.3.0/src/mmisp/api_schemas/workflows.py +30 -0
- mmisp_lib-0.3.0/src/mmisp/commandline_tool/main.py +179 -0
- mmisp_lib-0.3.0/src/mmisp/commandline_tool/organisation.py +157 -0
- mmisp_lib-0.3.0/src/mmisp/commandline_tool/setup.py +101 -0
- mmisp_lib-0.3.0/src/mmisp/commandline_tool/user.py +126 -0
- mmisp_lib-0.3.0/src/mmisp/db/config.py +23 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/database.py +30 -11
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/mixins.py +2 -2
- mmisp_lib-0.3.0/src/mmisp/db/models/admin_setting.py +17 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/attribute.py +4 -4
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/auth_key.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/event.py +2 -2
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/galaxy.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/galaxy_cluster.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/identity_provider.py +1 -1
- mmisp_lib-0.3.0/src/mmisp/db/models/log.py +33 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/object.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/organisation.py +1 -2
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/role.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/sharing_group.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/sighting.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/user_setting.py +2 -0
- mmisp_lib-0.3.0/src/mmisp/db/models/workflow.py +38 -0
- mmisp_lib-0.3.0/src/mmisp/db/models/workflow_blueprint.py +28 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/mypy.py +1 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/print_changes.py +1 -2
- mmisp_lib-0.3.0/src/mmisp/db/py.typed +0 -0
- mmisp_lib-0.3.0/src/mmisp/lib/__init__.py +0 -0
- mmisp_lib-0.3.0/src/mmisp/lib/actions.py +11 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/lib/attributes.py +1 -1
- mmisp_lib-0.3.0/src/mmisp/lib/logging.py +58 -0
- mmisp_lib-0.3.0/src/mmisp/lib/py.typed +0 -0
- mmisp_lib-0.3.0/src/mmisp/lib/uuid.py +10 -0
- mmisp_lib-0.3.0/src/mmisp/plugins/py.typed +0 -0
- mmisp_lib-0.3.0/src/mmisp/util/__init__.py +0 -0
- mmisp_lib-0.3.0/src/mmisp/util/crypto.py +11 -0
- mmisp_lib-0.3.0/src/mmisp/util/models.py +14 -0
- mmisp_lib-0.3.0/src/mmisp/util/partial.py +76 -0
- mmisp_lib-0.3.0/src/mmisp/util/py.typed +0 -0
- mmisp_lib-0.3.0/src/mmisp/util/uuid.py +10 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/__init__.py +0 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/execution.py +238 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/fastapi.py +162 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/graph.py +803 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/input.py +463 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/legacy.py +596 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/misp_core_format.py +163 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/modules.py +1359 -0
- mmisp_lib-0.3.0/src/mmisp/workflows/py.typed +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp_lib.egg-info/PKG-INFO +9 -1
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp_lib.egg-info/SOURCES.txt +39 -2
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp_lib.egg-info/requires.txt +5 -0
- mmisp_lib-0.3.0/tests/test_commandline_tool.py +255 -0
- mmisp_lib-0.1.11/src/mmisp/api_schemas/authentication.py +0 -38
- mmisp_lib-0.1.11/src/mmisp/api_schemas/organisations.py +0 -24
- mmisp_lib-0.1.11/src/mmisp/api_schemas/users.py +0 -52
- mmisp_lib-0.1.11/src/mmisp/db/config.py +0 -16
- mmisp_lib-0.1.11/tests/test_dummy.py +0 -2
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/LICENSE +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/setup.cfg +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/__init__.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/common.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/feeds.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/galaxies.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/noticelists.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/objects.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/py.typed +0 -0
- {mmisp_lib-0.1.11/src/mmisp/db → mmisp_lib-0.3.0/src/mmisp/api_schemas/responses}/__init__.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/sightings.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/tags.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/taxonomies.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/api_schemas/user_settings.py +0 -0
- {mmisp_lib-0.1.11/src/mmisp/db/models → mmisp_lib-0.3.0/src/mmisp/commandline_tool}/__init__.py +0 -0
- {mmisp_lib-0.1.11/src/mmisp/db → mmisp_lib-0.3.0/src/mmisp/commandline_tool}/py.typed +0 -0
- {mmisp_lib-0.1.11/src/mmisp/lib → mmisp_lib-0.3.0/src/mmisp/db}/__init__.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/all_models.py +0 -0
- /mmisp_lib-0.1.11/src/mmisp/lib/py.typed → /mmisp_lib-0.3.0/src/mmisp/db/models/__init__.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/feed.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/noticelist.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/server.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/tag.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/taxonomy.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/user.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/db/models/warninglist.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp/lib/permissions.py +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp_lib.egg-info/dependency_links.txt +0 -0
- {mmisp_lib-0.1.11 → mmisp_lib-0.3.0}/src/mmisp_lib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: mmisp-lib
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.0
|
4
4
|
Requires-Python: >=3.11.0
|
5
5
|
Description-Content-Type: text/markdown
|
6
6
|
License-File: LICENSE
|
@@ -19,15 +19,20 @@ Requires-Dist: argon2-cffi==23.1.0
|
|
19
19
|
Requires-Dist: bcrypt==4.1.2
|
20
20
|
Requires-Dist: nanoid==2.0.0
|
21
21
|
Requires-Dist: cryptography==42.0.5
|
22
|
+
Requires-Dist: jinja2~=3.1.4
|
23
|
+
Requires-Dist: fire
|
22
24
|
Provides-Extra: dev
|
23
25
|
Requires-Dist: ruff>=0.3.7; extra == "dev"
|
24
26
|
Requires-Dist: mypy==1.8.0; extra == "dev"
|
25
27
|
Requires-Dist: pre-commit==3.6.0; extra == "dev"
|
26
28
|
Requires-Dist: pytest==8.0.0; extra == "dev"
|
29
|
+
Requires-Dist: pytest-test-groups; extra == "dev"
|
27
30
|
Requires-Dist: pytest-asyncio==0.23.5.post1; extra == "dev"
|
28
31
|
Requires-Dist: pytest-cov==4.1.0; extra == "dev"
|
29
32
|
Requires-Dist: respx==0.20.2; extra == "dev"
|
30
33
|
Requires-Dist: mysql-connector-python==8.3.0; extra == "dev"
|
34
|
+
Requires-Dist: icecream; extra == "dev"
|
35
|
+
Requires-Dist: asyncio; extra == "dev"
|
31
36
|
|
32
37
|
# Modern MISP - API
|
33
38
|
|
@@ -45,6 +50,9 @@ Create a file called `.env` and copy the contents of `.env.example` into it. Fin
|
|
45
50
|
|
46
51
|
You should now be able to access the api on `localhost:4000`.
|
47
52
|
|
53
|
+
To use the commandline tool run `python .\src\mmisp\commandline_tool\main.py --h` from the base directory to view all commands. For detailed information of all commands: `python .\src\mmisp\commandline_tool\main.py --help`.
|
54
|
+
For setting up the DB use the commandline tool option for setup and then create your user account. In case you have not created a new organisation yet, please add your account to the setup basic organisation: ghost_org.
|
55
|
+
|
48
56
|
Run tests using `make test` (local database container required running) or `make test/lite`.
|
49
57
|
|
50
58
|
## Setting up your IDE
|
@@ -14,6 +14,9 @@ Create a file called `.env` and copy the contents of `.env.example` into it. Fin
|
|
14
14
|
|
15
15
|
You should now be able to access the api on `localhost:4000`.
|
16
16
|
|
17
|
+
To use the commandline tool run `python .\src\mmisp\commandline_tool\main.py --h` from the base directory to view all commands. For detailed information of all commands: `python .\src\mmisp\commandline_tool\main.py --help`.
|
18
|
+
For setting up the DB use the commandline tool option for setup and then create your user account. In case you have not created a new organisation yet, please add your account to the setup basic organisation: ghost_org.
|
19
|
+
|
17
20
|
Run tests using `make test` (local database container required running) or `make test/lite`.
|
18
21
|
|
19
22
|
## Setting up your IDE
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "mmisp-lib"
|
3
|
-
version = "0.
|
3
|
+
version = "0.3.0"
|
4
4
|
description = ""
|
5
5
|
authors = []
|
6
6
|
readme = "README.md"
|
@@ -23,6 +23,8 @@ dependencies = [
|
|
23
23
|
"bcrypt==4.1.2",
|
24
24
|
"nanoid==2.0.0",
|
25
25
|
"cryptography==42.0.5",
|
26
|
+
"jinja2~=3.1.4",
|
27
|
+
"fire",
|
26
28
|
]
|
27
29
|
|
28
30
|
|
@@ -32,26 +34,39 @@ dev = [
|
|
32
34
|
"mypy==1.8.0",
|
33
35
|
"pre-commit==3.6.0",
|
34
36
|
"pytest==8.0.0",
|
37
|
+
"pytest-test-groups",
|
35
38
|
"pytest-asyncio==0.23.5.post1",
|
36
39
|
"pytest-cov==4.1.0",
|
37
40
|
"respx==0.20.2",
|
38
41
|
"mysql-connector-python==8.3.0",
|
42
|
+
"icecream",
|
43
|
+
"asyncio",
|
39
44
|
]
|
40
45
|
|
41
46
|
[tool.setuptools.package-data]
|
42
47
|
"mmisp.lib" = ["py.typed"]
|
43
48
|
"mmisp.api_schemas" = ["py.typed"]
|
44
49
|
"mmisp.db" = ["py.typed"]
|
50
|
+
"mmisp.plugins" = ["py.typed"]
|
51
|
+
"mmisp.util" = ["py.typed"]
|
45
52
|
|
46
53
|
[tool.ruff]
|
47
54
|
fix = true
|
48
55
|
line-length = 120
|
49
56
|
required-version = ">=0.3.7"
|
50
57
|
src = ["src"]
|
58
|
+
unsafe-fixes = true
|
51
59
|
|
52
60
|
[tool.ruff.lint]
|
53
61
|
select = ["E", "F", "W", "I", "ICN", "ANN"]
|
54
62
|
ignore = ["ANN002", "ANN003", "ANN401"]
|
55
63
|
|
64
|
+
[tool.ruff.lint.per-file-ignores]
|
65
|
+
"tests/**" = ["ANN001", "ANN201", "ANN202", "S101"]
|
66
|
+
|
56
67
|
[tool.coverage.run]
|
57
68
|
concurrency = ["greenlet", "thread"]
|
69
|
+
include = [
|
70
|
+
"/usr/local/lib/python3.11/site-packages/mmisp/*",
|
71
|
+
"/home/mmisp/.local/lib/python3.11/site-packages/mmisp/*"
|
72
|
+
]
|
@@ -384,7 +384,7 @@ class AddAttributeResponse(BaseModel):
|
|
384
384
|
|
385
385
|
|
386
386
|
class AddAttributeBody(BaseModel):
|
387
|
-
type: literal_valid_attribute_types
|
387
|
+
type: literal_valid_attribute_types # type:ignore[valid-type]
|
388
388
|
value: str | None = None
|
389
389
|
value1: str | None = None
|
390
390
|
value2: str | None = None
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from datetime import datetime
|
2
|
+
from typing import List, Self, Union
|
2
3
|
|
3
|
-
from pydantic import BaseModel, PositiveInt, conint
|
4
|
+
from pydantic import BaseModel, PositiveInt, conint, validator
|
4
5
|
|
5
6
|
|
6
7
|
class SearchGetAuthKeysResponseItemUser(BaseModel):
|
@@ -41,6 +42,21 @@ class SearchGetAuthKeysResponseItemAuthKey(BaseModel):
|
|
41
42
|
unique_ips: list[str] | None = []
|
42
43
|
|
43
44
|
|
45
|
+
class SearchGetAuthKeysResponseAuthKey(BaseModel):
|
46
|
+
id: str
|
47
|
+
uuid: str
|
48
|
+
authkey_start: str
|
49
|
+
authkey_end: str
|
50
|
+
created: str
|
51
|
+
expiration: str
|
52
|
+
read_only: bool
|
53
|
+
user_id: str
|
54
|
+
comment: str | None
|
55
|
+
allowed_ips: list[str] | None = None
|
56
|
+
unique_ips: list[str] | None = []
|
57
|
+
last_used: str | None = None
|
58
|
+
|
59
|
+
|
44
60
|
class SearchGetAuthKeysResponseItem(BaseModel):
|
45
61
|
AuthKey: SearchGetAuthKeysResponseItemAuthKey
|
46
62
|
User: SearchGetAuthKeysResponseItemUser
|
@@ -49,6 +65,14 @@ class SearchGetAuthKeysResponseItem(BaseModel):
|
|
49
65
|
orm_mode = True
|
50
66
|
|
51
67
|
|
68
|
+
class SearchGetAuthKeysResponse(BaseModel):
|
69
|
+
AuthKey: SearchGetAuthKeysResponseAuthKey
|
70
|
+
User: SearchGetAuthKeysResponseItemUser
|
71
|
+
|
72
|
+
class Config:
|
73
|
+
orm_mode = True
|
74
|
+
|
75
|
+
|
52
76
|
class SearchAuthKeyBody(BaseModel):
|
53
77
|
page: PositiveInt = 1
|
54
78
|
limit: conint(gt=0, lt=500) = 25 # type: ignore
|
@@ -78,6 +102,20 @@ class EditAuthKeyResponseAuthKey(BaseModel):
|
|
78
102
|
allowed_ips: str | None = None
|
79
103
|
|
80
104
|
|
105
|
+
class EditAuthKeyResponseCompleteAuthKey(BaseModel):
|
106
|
+
id: str
|
107
|
+
uuid: str
|
108
|
+
authkey_start: str
|
109
|
+
authkey_end: str
|
110
|
+
created: str
|
111
|
+
expiration: str
|
112
|
+
read_only: bool
|
113
|
+
user_id: str
|
114
|
+
comment: str
|
115
|
+
allowed_ips: str | None = None
|
116
|
+
unique_ips: list[str] | None = None
|
117
|
+
|
118
|
+
|
81
119
|
class EditAuthKeyResponseUser(BaseModel):
|
82
120
|
id: str
|
83
121
|
org_id: str
|
@@ -88,11 +126,22 @@ class EditAuthKeyResponse(BaseModel):
|
|
88
126
|
User: EditAuthKeyResponseUser
|
89
127
|
|
90
128
|
|
129
|
+
class EditAuthKeyResponseCompl(BaseModel):
|
130
|
+
AuthKey: EditAuthKeyResponseCompleteAuthKey
|
131
|
+
User: EditAuthKeyResponseUser
|
132
|
+
|
133
|
+
|
91
134
|
class EditAuthKeyBody(BaseModel):
|
92
135
|
read_only: bool | None = None
|
93
136
|
comment: str | None = None
|
94
|
-
allowed_ips:
|
95
|
-
expiration:
|
137
|
+
allowed_ips: Union[str, List[str]] | None = None
|
138
|
+
expiration: str | None = None
|
139
|
+
|
140
|
+
@validator("allowed_ips", pre=True)
|
141
|
+
def ensure_list(cls: Self, v: str | List[str]) -> List[str]:
|
142
|
+
if isinstance(v, str):
|
143
|
+
return [v]
|
144
|
+
return v
|
96
145
|
|
97
146
|
|
98
147
|
class AddAuthKeyResponseAuthKey(BaseModel):
|
@@ -0,0 +1,89 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
|
6
|
+
class TokenResponse(BaseModel):
|
7
|
+
token: str
|
8
|
+
|
9
|
+
|
10
|
+
class ChangeLoginInfoResponse(BaseModel):
|
11
|
+
successful: bool
|
12
|
+
|
13
|
+
|
14
|
+
class IdentityProviderBody(BaseModel):
|
15
|
+
name: str
|
16
|
+
org_id: str
|
17
|
+
active: bool
|
18
|
+
base_url: str
|
19
|
+
client_id: str
|
20
|
+
client_secret: str
|
21
|
+
scope: str | None = None
|
22
|
+
|
23
|
+
|
24
|
+
class IdentityProviderCallbackBody(BaseModel):
|
25
|
+
code: str
|
26
|
+
redirect_uri: str
|
27
|
+
|
28
|
+
|
29
|
+
class IdentityProviderEditBody(BaseModel):
|
30
|
+
name: str | None = None
|
31
|
+
org_id: str | None = None
|
32
|
+
active: bool | None = None
|
33
|
+
base_url: str | None = None
|
34
|
+
client_id: str | None = None
|
35
|
+
client_secret: str | None = None
|
36
|
+
scope: str | None = None
|
37
|
+
|
38
|
+
|
39
|
+
class GetIdentityProviderResponse(BaseModel):
|
40
|
+
id: str
|
41
|
+
name: str
|
42
|
+
org_id: str
|
43
|
+
active: bool
|
44
|
+
base_url: str
|
45
|
+
client_id: str
|
46
|
+
client_secret: str
|
47
|
+
scope: str | None = None
|
48
|
+
|
49
|
+
|
50
|
+
class IdentityProviderInfo(BaseModel):
|
51
|
+
id: str
|
52
|
+
name: str
|
53
|
+
url: str | None = None
|
54
|
+
|
55
|
+
class Config:
|
56
|
+
orm_mode = True
|
57
|
+
|
58
|
+
|
59
|
+
class LoginType(Enum):
|
60
|
+
PASSWORD = "password"
|
61
|
+
IDENTITY_PROVIDER = "idp"
|
62
|
+
|
63
|
+
|
64
|
+
class StartLoginBody(BaseModel):
|
65
|
+
email: str
|
66
|
+
|
67
|
+
|
68
|
+
class PasswordLoginBody(BaseModel):
|
69
|
+
email: str
|
70
|
+
password: str
|
71
|
+
|
72
|
+
|
73
|
+
class SetPasswordBody(BaseModel):
|
74
|
+
password: str
|
75
|
+
|
76
|
+
|
77
|
+
class ChangePasswordBody(BaseModel):
|
78
|
+
email: str
|
79
|
+
password: str
|
80
|
+
oldPassword: str | None = None
|
81
|
+
|
82
|
+
|
83
|
+
class ExchangeTokenLoginBody(BaseModel):
|
84
|
+
exchangeToken: str
|
85
|
+
|
86
|
+
|
87
|
+
class StartLoginResponse(BaseModel):
|
88
|
+
loginType: LoginType
|
89
|
+
identityProviders: list[IdentityProviderInfo] = []
|
@@ -23,6 +23,46 @@ class AddEditGetEventGalaxyClusterMeta(BaseModel):
|
|
23
23
|
kill_chain: str | None = None
|
24
24
|
|
25
25
|
|
26
|
+
class FreeTextImportWorkerData(BaseModel):
|
27
|
+
data: str
|
28
|
+
|
29
|
+
|
30
|
+
class FreeTextImportWorkerUser(BaseModel):
|
31
|
+
user_id: int
|
32
|
+
|
33
|
+
|
34
|
+
class FreeTextImportWorkerBody(BaseModel):
|
35
|
+
user: FreeTextImportWorkerUser
|
36
|
+
data: FreeTextImportWorkerData
|
37
|
+
|
38
|
+
class Config:
|
39
|
+
orm_mode = True
|
40
|
+
|
41
|
+
|
42
|
+
class AddAttributeViaFreeTextImportEventResponse(BaseModel):
|
43
|
+
comment: str | None = None
|
44
|
+
value: str
|
45
|
+
original_value: str
|
46
|
+
to_ids: str
|
47
|
+
type: str
|
48
|
+
category: str
|
49
|
+
distribution: str
|
50
|
+
|
51
|
+
class Config:
|
52
|
+
orm_mode = True
|
53
|
+
|
54
|
+
|
55
|
+
class AddAttributeViaFreeTextImportEventAttributes(BaseModel):
|
56
|
+
value: str
|
57
|
+
|
58
|
+
|
59
|
+
class AddAttributeViaFreeTextImportEventBody(BaseModel):
|
60
|
+
Attribute: AddAttributeViaFreeTextImportEventAttributes
|
61
|
+
|
62
|
+
class Config:
|
63
|
+
orm_mode = True
|
64
|
+
|
65
|
+
|
26
66
|
class GetAllEventsGalaxyCluster(BaseModel):
|
27
67
|
id: str
|
28
68
|
uuid: str
|
@@ -130,7 +170,7 @@ class AddEditGetEventGalaxy(BaseModel):
|
|
130
170
|
class AddEditGetEventOrg(BaseModel):
|
131
171
|
id: str
|
132
172
|
name: str
|
133
|
-
uuid: str
|
173
|
+
uuid: str | None = None
|
134
174
|
local: bool | None = None
|
135
175
|
|
136
176
|
|
@@ -254,7 +294,7 @@ class AddEditGetEventResponse(BaseModel):
|
|
254
294
|
class GetAllEventsOrg(BaseModel):
|
255
295
|
id: str
|
256
296
|
name: str
|
257
|
-
uuid: str
|
297
|
+
uuid: str | None = None
|
258
298
|
|
259
299
|
|
260
300
|
class UnpublishEventResponse(BaseModel):
|
@@ -330,11 +370,19 @@ class PublishEventResponse(BaseModel):
|
|
330
370
|
orm_mode = True
|
331
371
|
|
332
372
|
|
373
|
+
class GetAllEventsEventTagTag(BaseModel):
|
374
|
+
id: str
|
375
|
+
name: str
|
376
|
+
colour: str
|
377
|
+
is_galaxy: bool
|
378
|
+
|
379
|
+
|
333
380
|
class IndexEventsEventTag(BaseModel):
|
334
381
|
id: str
|
335
382
|
event_id: str
|
336
383
|
tag_id: str
|
337
384
|
local: bool
|
385
|
+
Tag: GetAllEventsEventTagTag
|
338
386
|
|
339
387
|
|
340
388
|
class IndexEventsAttributes(BaseModel):
|
@@ -403,20 +451,13 @@ class ObjectEventResponse(BaseModel):
|
|
403
451
|
orgc_id: str | None = None
|
404
452
|
|
405
453
|
|
406
|
-
class GetAllEventsEventTagTag(BaseModel):
|
407
|
-
id: str
|
408
|
-
name: str
|
409
|
-
colour: str
|
410
|
-
is_galaxy: bool
|
411
|
-
|
412
|
-
|
413
454
|
class GetAllEventsEventTag(BaseModel):
|
414
455
|
id: str
|
415
456
|
event_id: str
|
416
457
|
tag_id: str
|
417
458
|
local: bool
|
418
|
-
relationship_type: str
|
419
|
-
Tag: GetAllEventsEventTagTag
|
459
|
+
relationship_type: str | None = None
|
460
|
+
Tag: GetAllEventsEventTagTag | None = None
|
420
461
|
|
421
462
|
|
422
463
|
class GetAllEventsResponse(BaseModel):
|
@@ -439,7 +480,7 @@ class GetAllEventsResponse(BaseModel):
|
|
439
480
|
sighting_timestamp: str
|
440
481
|
disable_correlation: bool
|
441
482
|
extends_uuid: str
|
442
|
-
event_creator_email: str # omitted
|
483
|
+
event_creator_email: str | None = None # omitted
|
443
484
|
protected: str | None = None
|
444
485
|
Org: GetAllEventsOrg
|
445
486
|
Orgc: GetAllEventsOrg
|
@@ -450,22 +491,6 @@ class GetAllEventsResponse(BaseModel):
|
|
450
491
|
orm_mode = True
|
451
492
|
|
452
493
|
|
453
|
-
class FreeTextImportWorkerData(BaseModel):
|
454
|
-
data: str
|
455
|
-
|
456
|
-
|
457
|
-
class FreeTextImportWorkerUser(BaseModel):
|
458
|
-
user_id: int
|
459
|
-
|
460
|
-
|
461
|
-
class FreeTextImportWorkerBody(BaseModel):
|
462
|
-
user: FreeTextImportWorkerUser
|
463
|
-
data: FreeTextImportWorkerData
|
464
|
-
|
465
|
-
class Config:
|
466
|
-
orm_mode = True
|
467
|
-
|
468
|
-
|
469
494
|
class EditEventBody(BaseModel):
|
470
495
|
info: str | None = None
|
471
496
|
org_id: str | None = None
|
@@ -545,30 +570,6 @@ class AddEventTag(BaseModel):
|
|
545
570
|
name: str
|
546
571
|
|
547
572
|
|
548
|
-
class AddAttributeViaFreeTextImportEventResponse(BaseModel):
|
549
|
-
comment: str | None = None
|
550
|
-
value: str
|
551
|
-
original_value: str
|
552
|
-
to_ids: str
|
553
|
-
type: str
|
554
|
-
category: str
|
555
|
-
distribution: str
|
556
|
-
|
557
|
-
class Config:
|
558
|
-
orm_mode = True
|
559
|
-
|
560
|
-
|
561
|
-
class AddAttributeViaFreeTextImportEventAttributes(BaseModel):
|
562
|
-
value: str
|
563
|
-
|
564
|
-
|
565
|
-
class AddAttributeViaFreeTextImportEventBody(BaseModel):
|
566
|
-
Attribute: AddAttributeViaFreeTextImportEventAttributes
|
567
|
-
|
568
|
-
class Config:
|
569
|
-
orm_mode = True
|
570
|
-
|
571
|
-
|
572
573
|
class AddEditGetEventRelatedEventAttributesOrg(BaseModel):
|
573
574
|
id: str
|
574
575
|
name: str
|
@@ -0,0 +1,64 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
from mmisp.api_schemas.events.add_edit_get_event_response import AddEditGetEventGalaxyClusterRelation
|
4
|
+
from mmisp.api_schemas.events.get_all_events_response import GetAllEventsGalaxyClusterGalaxy
|
5
|
+
from mmisp.api_schemas.galaxies import ExportGalaxyGalaxyElement, GetAllSearchGalaxiesAttributes
|
6
|
+
from mmisp.api_schemas.organisations import GetOrganisationResponse
|
7
|
+
from mmisp.api_schemas.organisations.organisation import Organisation
|
8
|
+
|
9
|
+
|
10
|
+
class GetGalaxyClusterResponse(BaseModel):
|
11
|
+
id: str | None = None
|
12
|
+
uuid: str | None = None
|
13
|
+
collection_uuid: str
|
14
|
+
type: str
|
15
|
+
value: str
|
16
|
+
tag_name: str
|
17
|
+
description: str
|
18
|
+
galaxy_id: str
|
19
|
+
source: str
|
20
|
+
authors: list[str]
|
21
|
+
version: str
|
22
|
+
distribution: str
|
23
|
+
sharing_group_id: str
|
24
|
+
org_id: str
|
25
|
+
orgc_id: str
|
26
|
+
default: bool
|
27
|
+
locked: bool
|
28
|
+
extends_uuid: str
|
29
|
+
extends_version: str
|
30
|
+
published: bool
|
31
|
+
deleted: bool
|
32
|
+
Galaxy: GetAllSearchGalaxiesAttributes
|
33
|
+
GalaxyElement: list[ExportGalaxyGalaxyElement]
|
34
|
+
Org: GetOrganisationResponse
|
35
|
+
Orgc: GetOrganisationResponse
|
36
|
+
|
37
|
+
|
38
|
+
class ExportGalaxyClusterResponse(BaseModel):
|
39
|
+
id: str
|
40
|
+
uuid: str
|
41
|
+
collection_uuid: str
|
42
|
+
type: str
|
43
|
+
value: str
|
44
|
+
tag_name: str
|
45
|
+
description: str
|
46
|
+
galaxy_id: str
|
47
|
+
source: str
|
48
|
+
authors: list[str]
|
49
|
+
version: str
|
50
|
+
distribution: str
|
51
|
+
sharing_group_id: str
|
52
|
+
org_id: str
|
53
|
+
orgc_id: str
|
54
|
+
default: bool
|
55
|
+
locked: bool
|
56
|
+
extends_uuid: str
|
57
|
+
extends_version: str
|
58
|
+
published: bool
|
59
|
+
deleted: bool
|
60
|
+
GalaxyElement: list[ExportGalaxyGalaxyElement]
|
61
|
+
Galaxy: GetAllEventsGalaxyClusterGalaxy
|
62
|
+
GalaxyClusterRelation: list[AddEditGetEventGalaxyClusterRelation] = []
|
63
|
+
Org: Organisation
|
64
|
+
Orgc: Organisation
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
|
4
|
+
class FreeTextProcessID(BaseModel):
|
5
|
+
id: str
|
6
|
+
|
7
|
+
|
8
|
+
class FreeTextImportWorkerData(BaseModel):
|
9
|
+
data: str
|
10
|
+
|
11
|
+
|
12
|
+
class FreeTextImportWorkerUser(BaseModel):
|
13
|
+
user_id: int
|
14
|
+
|
15
|
+
|
16
|
+
class FreeTextImportWorkerBody(BaseModel):
|
17
|
+
user: FreeTextImportWorkerUser
|
18
|
+
data: FreeTextImportWorkerData
|
19
|
+
|
20
|
+
class Config:
|
21
|
+
orm_mode = True
|
22
|
+
|
23
|
+
|
24
|
+
class AddAttributeViaFreeTextImportEventResponse(BaseModel):
|
25
|
+
event_id: str
|
26
|
+
value: str
|
27
|
+
original_value: str
|
28
|
+
to_ids: str
|
29
|
+
type: str
|
30
|
+
category: str
|
31
|
+
distribution: str
|
32
|
+
|
33
|
+
class Config:
|
34
|
+
orm_mode = True
|
35
|
+
|
36
|
+
|
37
|
+
class AddAttributeViaFreeTextImportEventBody(BaseModel):
|
38
|
+
value: str
|
39
|
+
returnMetaAttributes: bool
|
40
|
+
|
41
|
+
class Config:
|
42
|
+
orm_mode = True
|
43
|
+
|
44
|
+
|
45
|
+
class AttributeType(BaseModel):
|
46
|
+
types: list[str]
|
47
|
+
default_type: str
|
48
|
+
value: str
|
49
|
+
|
50
|
+
|
51
|
+
class ProcessFreeTextResponse(BaseModel):
|
52
|
+
attributes: list[AttributeType]
|