From cdaf941c9e05c025334908ae8a99ad923376830d Mon Sep 17 00:00:00 2001 From: nitescuc <1108077+nitescuc@users.noreply.github.com> Date: Fri, 24 Apr 2026 09:00:38 +0000 Subject: [PATCH] Update python SDK 1.120.0 --- .../__pycache__/__init__.cpython-311.pyc | Bin 4946 -> 4954 bytes .../__pycache__/base_model.cpython-311.pyc | Bin 4370 -> 4378 bytes .../__pycache__/http_client.cpython-311.pyc | Bin 7760 -> 7768 bytes .../__pycache__/models.cpython-311.pyc | Bin 149055 -> 149356 bytes crowdsec_service_api/models.py | 9 +++- .../__pycache__/__init__.cpython-311.pyc | Bin 199 -> 207 bytes .../__pycache__/allowlists.cpython-311.pyc | Bin 12910 -> 12917 bytes .../__pycache__/blocklists.cpython-311.pyc | Bin 15114 -> 15121 bytes .../services/__pycache__/cves.cpython-311.pyc | Bin 11005 -> 11012 bytes .../__pycache__/decisions.cpython-311.pyc | Bin 3660 -> 3667 bytes .../__pycache__/fingerprints.cpython-311.pyc | Bin 10911 -> 10918 bytes .../services/__pycache__/hub.cpython-311.pyc | Bin 3270 -> 3277 bytes .../services/__pycache__/info.cpython-311.pyc | Bin 2028 -> 2035 bytes .../__pycache__/integrations.cpython-311.pyc | Bin 8068 -> 8075 bytes .../__pycache__/metrics.cpython-311.pyc | Bin 2600 -> 2607 bytes .../__pycache__/products.cpython-311.pyc | Bin 3775 -> 3782 bytes .../tracker_events.cpython-311.pyc | Bin 2907 -> 2914 bytes .../__pycache__/tracker_tags.cpython-311.pyc | Bin 5691 -> 5698 bytes .../__pycache__/vendors.cpython-311.pyc | Bin 10344 -> 10351 bytes crowdsec_service_api/services/allowlists.py | 2 +- crowdsec_service_api/services/blocklists.py | 2 +- crowdsec_service_api/services/cves.py | 2 +- crowdsec_service_api/services/decisions.py | 2 +- crowdsec_service_api/services/fingerprints.py | 2 +- crowdsec_service_api/services/hub.py | 2 +- crowdsec_service_api/services/info.py | 2 +- crowdsec_service_api/services/integrations.py | 2 +- crowdsec_service_api/services/metrics.py | 2 +- crowdsec_service_api/services/products.py | 2 +- .../services/tracker_events.py | 2 +- crowdsec_service_api/services/tracker_tags.py | 2 +- crowdsec_service_api/services/vendors.py | 2 +- public-openapi.json | 48 +++++++++++++++--- pyproject.toml | 2 +- uv.lock | 20 ++++---- 35 files changed, 72 insertions(+), 33 deletions(-) diff --git a/crowdsec_service_api/__pycache__/__init__.cpython-311.pyc b/crowdsec_service_api/__pycache__/__init__.cpython-311.pyc index 163833128b3d84b09ebdf0faece86a7e81a98355..1f247734856b803f5fb66cffed0b8e7db7c640c4 100644 GIT binary patch delta 64 zcmcblc1w+WIWI340}$vNzTU`P%cK^mpOK%Ns$W!^mzP?kA77qdl&znfpI4lpld79o NkO^gPUdFUW005Ps79#)v delta 56 zcmcbmc1ewUIWI340}xDhe7=#pmPsy9KO;XkRlle-FE6!7KfXM_C|kd%ELAtLAQMP$ JUdOaX0095p6F&d| diff --git a/crowdsec_service_api/__pycache__/base_model.cpython-311.pyc b/crowdsec_service_api/__pycache__/base_model.cpython-311.pyc index 20476fbbd38df73fef49d875e9b27b16023ef750..befe678c3f5d335957e15b35b58cfe97879bc400 100644 GIT binary patch delta 64 zcmbQFG)swlIWI340}#j24 delta 56 zcmbQGG)akjIWI340}wPgKHtc#%q$nIpOK%Ns$W!^mzP?kA77qdl&xP>ma3arkO`zW JhcF-G1pv`k5(@wT diff --git a/crowdsec_service_api/__pycache__/http_client.cpython-311.pyc b/crowdsec_service_api/__pycache__/http_client.cpython-311.pyc index d4fd3942ca303cfa7c5b4da3e0ae730f52566507..19cae6d8a7855138d43d554ece6819f177841e1b 100644 GIT binary patch delta 64 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 Co8-v= diff --git a/crowdsec_service_api/models.py b/crowdsec_service_api/models.py index 72bb22c..704c15e 100644 --- a/crowdsec_service_api/models.py +++ b/crowdsec_service_api/models.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: -# timestamp: 2026-04-21T09:21:23+00:00 +# timestamp: 2026-04-24T09:00:31+00:00 from __future__ import annotations @@ -1017,6 +1017,7 @@ class ThreatContext(BaseModelSdk): Optional[Dict[str, int]], Field( description='Attacker country distribution (country code → count)', + examples=[{'FR': 18, 'NL': 23, 'US': 36}], title='Attacker Countries', ), ] = None @@ -1024,6 +1025,7 @@ class ThreatContext(BaseModelSdk): Optional[Dict[str, int]], Field( description='Defender country distribution (country code → count)', + examples=[{'BE': 13, 'FR': 22, 'NL': 22}], title='Defender Countries', ), ] = None @@ -1031,6 +1033,7 @@ class ThreatContext(BaseModelSdk): Optional[Dict[str, int]], Field( description='Industry type distribution (type → count)', + examples=[{'commerce': 65, 'government': 5, 'non_profit': 30}], title='Industry Types', ), ] = None @@ -1038,6 +1041,7 @@ class ThreatContext(BaseModelSdk): Optional[Dict[str, int]], Field( description='Industry risk profile distribution (profile → count)', + examples=[{'SOHO': 25, 'public_service': 10, 'technology_business': 65}], title='Industry Risk Profiles', ), ] = None @@ -1045,6 +1049,7 @@ class ThreatContext(BaseModelSdk): Optional[Dict[str, int]], Field( description='Attacker objective distribution (objective → count)', + examples=[{'data_exfiltration': 10, 'infrastructure_takeover': 90}], title='Attacker Objectives', ), ] = None @@ -1306,7 +1311,7 @@ class BlocklistsUploadBlocklistContentQueryParameters(BaseModelSdk): Optional[datetime], Field( description='Blocklist expiration', - examples=['2026-04-17T08:43:44.302226+00:00'], + examples=['2026-04-24T08:57:58.552024+00:00'], title='Expiration', ), ] = None diff --git a/crowdsec_service_api/services/__pycache__/__init__.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/__init__.cpython-311.pyc index c6a195485a921a398d492e3c22dc5b9a5c1e8b3e..207886a93537fe9b0d8e81a866721c452410b55c 100644 GIT binary patch delta 46 wcmX@kc%G4aIWI340}#jz>% delta 38 scmX@lc$|@YIWI340}wPgKA*^K${01#QJAZ!ELAtLAXC4nY+_m_0LWqsT>t<8 diff --git a/crowdsec_service_api/services/__pycache__/allowlists.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/allowlists.cpython-311.pyc index 6ea5649913ece2d4af0471a95e6407b7f34cbbfa..2a97e230fd0cea398ab9d59dd4caa7a7927b97db 100644 GIT binary patch delta 192 zcmaEt@->BbIWI340}$vNzRrx;$m_~1E0bK5U!GE&njBx8T2z*qoEo24kg0E|XJ}-g zXE3>dIY=!pPB{#F^Ww8JNU+g_e delta 185 zcmeyG@-BsUIWI340}xDhe4ZJ(k=K=3PBytHzdWTlH95XGwWusJIW<19AXC50K+n)r z&&X_YK68*sWdA9?qxqa delta 185 zcmbPO)>X#4oR^o20SG2LKF_?dk@qOGoNRJYetAl9YI1yWYEfBca%y~HL8gA0fu5nM zo{`z)_sl_ZG5Q(#xvBa^rFnU&Mf&mO`9<0KMP;eFAcaL`lhau$gcC1tNL=Jdy26ok o0fshzVmW4Dm(2Kqfsr+taYhJ)UJ(qTFGR;f7jb6JLOIWI340}$vNzRvv5zLD=e6Qj)J`OKp1hI)oZ26_gQrI~}&lJzt4b5r$; zO7rqki}d5m^NX_elk@Y6^K(*l6ALn-?8)8CWx@#;I3zA|Bwpc2yZ}R+MOggV?UEQj dFfg(vG0q5q&?|x=^o8hn2m>#UnSq|6 zsh*M9WGUt#xoG{2{M=OiqSCy))FS=(^8BJ~{i3o|U68_}vdNQ}%Y+jza7bL_NV>w2 pbODAoOSAa1+a)u8U|?iTW}FcMp;rV$=nK*D5C&dy^9t_OOaT4nIuQT> diff --git a/crowdsec_service_api/services/__pycache__/fingerprints.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/fingerprints.cpython-311.pyc index 100a01d31e4050bf875ca352f04a4837bf25920c..6bbf78d864af7e07eee021ca02848e677dd12697 100644 GIT binary patch delta 162 zcmbOqx-67;IWI340}$vNzRp~{k#{mPqs-)m%%bdudWJ>@dIppCF$XcGO%`Mk7D~>~ zE6&eJ)lDqO)Q7Mq>#@`bCtTo=xX6)sg(L9-3~k=alBH;u#Q1@Mku`~NMhJvn5e%U( PM8`uIc*)JFYE~=&hG#FA delta 169 zcmZ1$IzNvBkyEpM%l>=nMFCu4D<|5^^D9W?_~~>i__1@&rQ`Y zD$UDFEz*xK&o9c>FDgsbO)SU+(vwYDYJ?Lna7bL_NV>w2bODAoA7RN-v`c3Ez`)3w Z%s3+iLazvh&=;cPAq>3a<{ULE769X?Gs^$~ diff --git a/crowdsec_service_api/services/__pycache__/hub.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/hub.cpython-311.pyc index 54c3d53885a08d42f6d64ce826721d7d4f44ef1d..ce7c64d24723cd34cec49c9241046c6a6879b4fc 100644 GIT binary patch delta 176 zcmX>mc~+8lIWI340}$vNzRpzM$eX~#C^MO#S(M#S&(O#~&tP&lQ;=G$enx(7s(w*v zUS4XEetda;QMP_^eqM2YPO5HVK_-+v`8QLRaKZ%+iHjVGS2z+cz|iIj<_BzcNsJ#D c7+I4TXM{lL6~PetLUcTYftTDojmv-u0Go+5IsgCw delta 185 zcmX>rc}$XbIWI340}xDhe4eSYkvD-!PBytHzdWTlH95XGwWusJIW<19AXC50K+n)r z&&X_Y7gLa2sD4I%ZmND!X ofT7Lx%n#V?k{LfRFtR2y&Ip0fD}o{Ph3I$)124IGE|&ol0N#Q*!vFvP diff --git a/crowdsec_service_api/services/__pycache__/info.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/info.cpython-311.pyc index 431d4d1996f576be20f996bf812295e05c94fe5e..e16ce7398c94fcdcc1aa60fb7d890fb24bff5ab8 100644 GIT binary patch delta 192 zcmaFE|Cyh6IWI340}$vNzRoP$$ZN|aE0bK5U!GE&njBx8T2z*qoEo24kg0E|XJ}-g zXD~T~DM&3&KO;XkRlle-FE6!7KfXM_C|f@{Kd(4HCsh}u7Q&upPB{z$(-CzU&*JwP) delta 185 zcmey&|AwD;IWI340}xDhe4bgpk=K?O^z>4Eh@`QPK{42$kaE~Gc+>L zGnj0}9Hf?}pOK%Ns$W!^mzP?kA77qdl&znfpI4lpld20+3t>-Q#atttaDhYOB1hsC rj>HQvwAqqnnYdjN;|B&t)+ELmArN{+FoeDk9S>pPB{$2;q%#8mqa{2v delta 185 zcmeCSZ?WfH&dbZi00fgApJ#sA$ji?xC!1W9U!GE&njBx8T2z*qoEo24kf~p0pl4{R zXJj_nk~v5&PCp|*H&wr=G%qi;NI$+jzbIS3s4P_%q_C)L@ ofT7I}EX&00k{LfRFtR2y&Ip0fD}o{Ph3I$)124H*MJAmY01&@9?*IS* diff --git a/crowdsec_service_api/services/__pycache__/metrics.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/metrics.cpython-311.pyc index 319ef0f78ff8bcef5b7ef765fe96db88daad312a..f71d89f0d1002bf01a5d82aa3b8674da01f4aa1a 100644 GIT binary patch delta 176 zcmZ1>vR;IDIWI340}$vNzRrBUk+*?~QD(9}vnacvo}rO}p26hROhIai`WgATsrp5w zd3mWt`tjxYMcMkv`FX|pIjOpd1({IxWNGFi;e-nu5*IlVuW%$@fT7I`n7LW(k{CZQ cFtR2w&Ip0fD}o{Ph3I$)124JxCA&Qn0HAp^^#A|> delta 185 zcmZ24vOt<8 diff --git a/crowdsec_service_api/services/__pycache__/products.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/products.cpython-311.pyc index a5ee5ccc09ac3d37543c8da613a58feac6453b0b..160c3d8258492c0856e0156f2312aeca6e8ed52e 100644 GIT binary patch delta 192 zcmdlldrX#hIWI340}$vNzRvXC$a|bgRwlV9zdWTlH95XGwWusJIW<19AXDE^&(O#~ z&tUQ=rXaN>{fzwFRQ;mTyu8#R{rK|yqHO)-{Ji4)oK#(qS_pe`5_5@g!UYbAiyVnp rI1(?w(B_xSuh{L97(XyDvL-Rk2!YTmf+6&U=y(VNFS%KeXB`s&Q{z45 delta 185 zcmX>myI+=fIWI340}xDhe4gpEk@q;0oNRJYetAl9YI1yWYEfBca%y~HL8gA0fu5nM zo{`z)k4!;wQTiGAxvBa^rFnU&Mf&mO`9<0KMP;eFAcaL`lQWr1gcC1tNL=Jdy26ok o0fshzV1C7Jm(2Kqfsr+taYhJ)UJ(qTFGR;f7 diff --git a/crowdsec_service_api/services/__pycache__/tracker_events.cpython-311.pyc b/crowdsec_service_api/services/__pycache__/tracker_events.cpython-311.pyc index 8bdc48e8456376c27f977642a666be33841d3948..6b04d9134eccb1b622f81c0e38c5f1fcd8c14535 100644 GIT binary patch delta 192 zcmcaD_DGC(IWI340}$vNzRrBGk#`G|tW0uIetAl9YI1yWYEfBca%y~HL8iW;o}rO} zp26h%OhIZH`WgATsrp5wd3mWt`tjxYMcMkv`FX|pIjOoJwGj4Xf987OgbN%J7daBI ra3o%Uq0JAOkFnS#F@9iRWKCk65dxuC1ViWx(eV%lUUKtOjxr_yxDGz$ delta 171 zcmaDPc3X^hIWI340}xDhe4hDmBkvX_Ioaf*{PL9I)a3Z$)S|M?nS(6xNgh1#O!4UdFbUcKCm)tyGXbv*~I=wzG delta 192 zcmX@4vs;IEIWI340}xDhe4aUHBX10|oNRJYetAl9YI1yWYEfBca%y~HL8gA0fu5nM zo{`z)Hs&C?IQ@+L+*JLd(!9LXBK`RC{Gx3AqOw$7kiw#}$^V$Eg%dAuNL=Jdy26ok u0fsjBu-xHwOlJJRz{r}+I3ol?uLy?F7oy`K3<4zA None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def list_allowlists( self, diff --git a/crowdsec_service_api/services/blocklists.py b/crowdsec_service_api/services/blocklists.py index 65bf0d6..6f22d42 100644 --- a/crowdsec_service_api/services/blocklists.py +++ b/crowdsec_service_api/services/blocklists.py @@ -11,7 +11,7 @@ class Blocklists(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_blocklists( self, diff --git a/crowdsec_service_api/services/cves.py b/crowdsec_service_api/services/cves.py index b0d0745..8b02bbc 100644 --- a/crowdsec_service_api/services/cves.py +++ b/crowdsec_service_api/services/cves.py @@ -11,7 +11,7 @@ class Cves(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_cves( self, diff --git a/crowdsec_service_api/services/decisions.py b/crowdsec_service_api/services/decisions.py index 077a642..2fce5d8 100644 --- a/crowdsec_service_api/services/decisions.py +++ b/crowdsec_service_api/services/decisions.py @@ -11,7 +11,7 @@ class Decisions(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_decisions( self, diff --git a/crowdsec_service_api/services/fingerprints.py b/crowdsec_service_api/services/fingerprints.py index 25d9ac6..a015924 100644 --- a/crowdsec_service_api/services/fingerprints.py +++ b/crowdsec_service_api/services/fingerprints.py @@ -11,7 +11,7 @@ class Fingerprints(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_fingerprint_rules( self, diff --git a/crowdsec_service_api/services/hub.py b/crowdsec_service_api/services/hub.py index d488520..b3a57d0 100644 --- a/crowdsec_service_api/services/hub.py +++ b/crowdsec_service_api/services/hub.py @@ -11,7 +11,7 @@ class Hub(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_index( self, diff --git a/crowdsec_service_api/services/info.py b/crowdsec_service_api/services/info.py index 9137d39..629ceae 100644 --- a/crowdsec_service_api/services/info.py +++ b/crowdsec_service_api/services/info.py @@ -11,7 +11,7 @@ class Info(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_info( self, diff --git a/crowdsec_service_api/services/integrations.py b/crowdsec_service_api/services/integrations.py index d5e2589..36ae3f2 100644 --- a/crowdsec_service_api/services/integrations.py +++ b/crowdsec_service_api/services/integrations.py @@ -11,7 +11,7 @@ class Integrations(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_integrations( self, diff --git a/crowdsec_service_api/services/metrics.py b/crowdsec_service_api/services/metrics.py index df84939..524f123 100644 --- a/crowdsec_service_api/services/metrics.py +++ b/crowdsec_service_api/services/metrics.py @@ -11,7 +11,7 @@ class Metrics(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_metrics_remediation( self, diff --git a/crowdsec_service_api/services/products.py b/crowdsec_service_api/services/products.py index 02e32df..6b09f6a 100644 --- a/crowdsec_service_api/services/products.py +++ b/crowdsec_service_api/services/products.py @@ -11,7 +11,7 @@ class Products(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_products( self, diff --git a/crowdsec_service_api/services/tracker_events.py b/crowdsec_service_api/services/tracker_events.py index eddace0..d2a4766 100644 --- a/crowdsec_service_api/services/tracker_events.py +++ b/crowdsec_service_api/services/tracker_events.py @@ -11,7 +11,7 @@ class TrackerEvents(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_exploitation_phase_change_events( self, diff --git a/crowdsec_service_api/services/tracker_tags.py b/crowdsec_service_api/services/tracker_tags.py index 5485b3f..56241f4 100644 --- a/crowdsec_service_api/services/tracker_tags.py +++ b/crowdsec_service_api/services/tracker_tags.py @@ -11,7 +11,7 @@ class TrackerTags(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_tags( self, diff --git a/crowdsec_service_api/services/vendors.py b/crowdsec_service_api/services/vendors.py index c5ae5fb..cd166fd 100644 --- a/crowdsec_service_api/services/vendors.py +++ b/crowdsec_service_api/services/vendors.py @@ -11,7 +11,7 @@ class Vendors(Service): def __init__(self, auth: Auth, base_url: str = "https://admin.api.crowdsec.net/v1") -> None: - super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/v0.15.26") + super().__init__(base_url=base_url, auth=auth, user_agent="crowdsec_service_api/1.120.0") def get_vendors( self, diff --git a/public-openapi.json b/public-openapi.json index 0492c9e..a1793b1 100644 --- a/public-openapi.json +++ b/public-openapi.json @@ -3,7 +3,7 @@ "info": { "title": "Service API", "description": "This is the API to manage Crowdsec services", - "version": "1.70.4", + "version": "1.70.6", "contact": { "name": "CrowdSec", "url": "https://crowdsec.net", @@ -1243,7 +1243,7 @@ ], "description": "Blocklist expiration", "examples": [ - "2026-04-17T08:43:44.302226+00:00" + "2026-04-24T08:57:58.552024+00:00" ], "title": "Expiration" }, @@ -13402,7 +13402,14 @@ }, "type": "object", "title": "Attacker Countries", - "description": "Attacker country distribution (country code \u2192 count)" + "description": "Attacker country distribution (country code \u2192 count)", + "examples": [ + { + "FR": 18, + "NL": 23, + "US": 36 + } + ] }, "defender_countries": { "additionalProperties": { @@ -13410,7 +13417,14 @@ }, "type": "object", "title": "Defender Countries", - "description": "Defender country distribution (country code \u2192 count)" + "description": "Defender country distribution (country code \u2192 count)", + "examples": [ + { + "BE": 13, + "FR": 22, + "NL": 22 + } + ] }, "industry_types": { "additionalProperties": { @@ -13421,7 +13435,14 @@ }, "type": "object", "title": "Industry Types", - "description": "Industry type distribution (type \u2192 count)" + "description": "Industry type distribution (type \u2192 count)", + "examples": [ + { + "commerce": 65, + "government": 5, + "non_profit": 30 + } + ] }, "industry_risk_profiles": { "additionalProperties": { @@ -13432,7 +13453,14 @@ }, "type": "object", "title": "Industry Risk Profiles", - "description": "Industry risk profile distribution (profile \u2192 count)" + "description": "Industry risk profile distribution (profile \u2192 count)", + "examples": [ + { + "SOHO": 25, + "public_service": 10, + "technology_business": 65 + } + ] }, "attacker_objectives": { "additionalProperties": { @@ -13443,7 +13471,13 @@ }, "type": "object", "title": "Attacker Objectives", - "description": "Attacker objective distribution (objective \u2192 count)" + "description": "Attacker objective distribution (objective \u2192 count)", + "examples": [ + { + "data_exfiltration": 10, + "infrastructure_takeover": 90 + } + ] } }, "type": "object", diff --git a/pyproject.toml b/pyproject.toml index a0f93d8..6d001bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "crowdsec_service_api" -version = "v0.15.26" +version = "1.120.0" license = { text = "MIT" } authors = [ { name="crowdsec", email="info@crowdsec.net" } diff --git a/uv.lock b/uv.lock index 613efa8..d351339 100644 --- a/uv.lock +++ b/uv.lock @@ -26,30 +26,30 @@ wheels = [ [[package]] name = "botocore" -version = "1.42.92" +version = "1.42.95" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/0a/6785ce224ba4483b3e1282d959e1dd2c2898823336f013464c43cb154036/botocore-1.42.92.tar.gz", hash = "sha256:f1193d3057a2d0267353d7ef4e136be37ea432336d097fcb1951fae566ca3a22", size = 15235239, upload-time = "2026-04-20T19:38:05.085Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/29/a6d95515b49357891f63cb7a93fef37334118ba7d11d686d139e5d648733/botocore-1.42.95.tar.gz", hash = "sha256:f23a78b76def67222ddac738fb65475f55d17fd88c1e18573b3a561135ec4527", size = 15260896, upload-time = "2026-04-23T21:35:22.335Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/b8/41d4d7ba75a4fb4f11362e96371a12695bc6ba0bb7cc680137db0213f97e/botocore-1.42.92-py3-none-any.whl", hash = "sha256:09ddefddbb1565ceef4b44b4b6e61b1ca5f12701d1494ecc85c1133d1b1e81fb", size = 14916275, upload-time = "2026-04-20T19:38:01.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ee/b08867e183922dd356d2d8f23bafd7bb6b24c5992bdb301873edbb096e2d/botocore-1.42.95-py3-none-any.whl", hash = "sha256:3381279d26792df2fcc3d5d7fa052ecf1949a0fe1ea819bf35d61e943c15a3b6", size = 14943430, upload-time = "2026-04-23T21:35:18.976Z" }, ] [[package]] name = "certifi" -version = "2026.2.25" +version = "2026.4.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, ] [[package]] name = "crowdsec-service-api" -version = "0.15.26" +version = "1.120.0" source = { editable = "." } dependencies = [ { name = "botocore" }, @@ -126,11 +126,11 @@ wheels = [ [[package]] name = "idna" -version = "3.11" +version = "3.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" }, ] [[package]]