From 14955f4ad53c78f6d7aebcc1f1464ba049bc8adc Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Thu, 25 Jun 2026 01:01:15 +0000 Subject: [PATCH 1/2] ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.785.0 --- .speakeasy/gen.lock | 551 ++++++++- .speakeasy/gen.yaml | 4 +- .speakeasy/workflow.lock | 14 +- README-PYPI.md | 5 + README.md | 5 + RELEASES.md | 12 +- .../bulkcreatetagassignmentsinputbody.md | 9 + .../bulkdeletetagassignmentsinputbody.md | 9 + docs/models/clickhousehttp.md | 13 + docs/models/clickhousehttperror.md | 9 + docs/models/clickhousenative.md | 16 + docs/models/clickhousenativeerror.md | 10 + docs/models/endpointscan.md | 4 +- docs/models/endpointscanstate.md | 4 +- docs/models/gopher.md | 10 + docs/models/gopheritem.md | 12 + docs/models/hostenrichment.md | 20 + docs/models/hostenrichmentasset.md | 9 + docs/models/hostenrichmentservice.md | 11 + docs/models/httpredirectchainlink.md | 1 + .../models/httpredirectchainlinkhttpstatus.md | 9 + docs/models/malloryai.md | 16 + docs/models/malloryaiobservable.md | 14 + docs/models/malloryaiopinion.md | 19 + docs/models/malloryaiopinionattributes.md | 11 + docs/models/malloryaiverdictsummary.md | 9 + docs/models/openflow.md | 24 + docs/models/openflowhelloelement.md | 9 + docs/models/queryparamstatus.md | 23 + docs/models/queryparamtype.md | 19 + docs/models/reolinkbaichuan.md | 14 + docs/models/reolinkbaichuanalarmchannel.md | 12 + .../responseenvelopehostenrichmentasset.md | 8 + docs/models/responseenvelopetagoperation.md | 8 + .../responseenvelopetagoperationslist.md | 8 + docs/models/rtmp.md | 14 + docs/models/rtmpconnectstatus.md | 11 + docs/models/service.md | 7 + docs/models/servicescan.md | 7 + docs/models/synergy.md | 10 + docs/models/tagoperation.md | 20 + docs/models/tagoperationslist.md | 10 + docs/models/tagoperationstatus.md | 25 + docs/models/tagoperationtype.md | 21 + docs/models/thirdparty.md | 8 + .../v3globaldataassethostenrichmentglobals.md | 8 + .../v3globaldataassethostenrichmentrequest.md | 9 + ...v3globaldataassethostenrichmentresponse.md | 9 + .../v3tagsbulkcreateassignmentsglobals.md | 8 + .../v3tagsbulkcreateassignmentsrequest.md | 10 + .../v3tagsbulkcreateassignmentsresponse.md | 9 + .../v3tagsbulkdeleteassignmentsglobals.md | 8 + .../v3tagsbulkdeleteassignmentsrequest.md | 10 + .../v3tagsbulkdeleteassignmentsresponse.md | 9 + docs/models/v3tagscanceloperationglobals.md | 8 + docs/models/v3tagscanceloperationrequest.md | 10 + docs/models/v3tagscanceloperationresponse.md | 9 + docs/models/v3tagslistoperationsglobals.md | 8 + .../v3tagslistoperationsqueryparamorderby.md | 19 + docs/models/v3tagslistoperationsrequest.md | 14 + docs/models/v3tagslistoperationsresponse.md | 9 + docs/models/wincecerdisp.md | 15 + docs/models/wordpress.md | 13 + docs/sdks/globaldata/README.md | 45 + docs/sdks/tagsandcomments/README.md | 186 +++ pyproject.toml | 2 +- src/censys_platform/_version.py | 8 +- src/censys_platform/global_data.py | 218 ++++ src/censys_platform/models/__init__.py | 314 +++++ .../bulkcreatetagassignmentsinputbody.py | 38 + .../bulkdeletetagassignmentsinputbody.py | 39 + src/censys_platform/models/clickhousehttp.py | 71 ++ .../models/clickhousehttp_error.py | 34 + .../models/clickhousenative.py | 71 ++ .../models/clickhousenative_error.py | 37 + src/censys_platform/models/endpointscan.py | 10 + .../models/endpointscanstate.py | 10 + src/censys_platform/models/gopher.py | 53 + src/censys_platform/models/gopher_item.py | 45 + src/censys_platform/models/hostenrichment.py | 113 ++ .../models/hostenrichmentasset.py | 18 + .../models/hostenrichmentservice.py | 57 + .../models/http_redirectchainlink.py | 17 +- .../http_redirectchainlink_httpstatus.py | 38 + src/censys_platform/models/malloryai.py | 88 ++ .../models/malloryai_observable.py | 59 + .../models/malloryai_opinion.py | 83 ++ .../models/malloryai_opinion_attributes.py | 69 ++ .../models/malloryai_verdictsummary.py | 34 + src/censys_platform/models/openflow.py | 115 ++ .../models/openflow_helloelement.py | 49 + src/censys_platform/models/reolinkbaichuan.py | 78 ++ .../models/reolinkbaichuan_alarmchannel.py | 45 + .../responseenvelopehostenrichmentasset.py | 32 + .../models/responseenvelopetagoperation.py | 32 + .../responseenvelopetagoperationslist.py | 32 + src/censys_platform/models/rtmp.py | 60 + .../models/rtmp_connectstatus.py | 40 + src/censys_platform/models/service.py | 35 + src/censys_platform/models/servicescan.py | 35 + src/censys_platform/models/synergy.py | 37 + src/censys_platform/models/tagoperation.py | 132 +++ .../models/tagoperationslist.py | 53 + src/censys_platform/models/thirdparty.py | 49 + .../v3_globaldata_asset_host_enrichmentop.py | 86 ++ .../v3_tags_bulk_create_assignmentsop.py | 101 ++ .../v3_tags_bulk_delete_assignmentsop.py | 101 ++ .../models/v3_tags_cancel_operationop.py | 93 ++ .../models/v3_tags_list_operationsop.py | 154 +++ src/censys_platform/models/wincecerdisp.py | 63 + src/censys_platform/models/wordpress.py | 70 ++ src/censys_platform/tags_and_comments.py | 1012 ++++++++++++++++- src/censys_platform/types/base64fileinput.py | 4 + src/censys_platform/utils/eventstreaming.py | 25 +- src/censys_platform/utils/forms.py | 5 + src/censys_platform/utils/retries.py | 95 +- 116 files changed, 5511 insertions(+), 128 deletions(-) create mode 100644 docs/models/bulkcreatetagassignmentsinputbody.md create mode 100644 docs/models/bulkdeletetagassignmentsinputbody.md create mode 100644 docs/models/clickhousehttp.md create mode 100644 docs/models/clickhousehttperror.md create mode 100644 docs/models/clickhousenative.md create mode 100644 docs/models/clickhousenativeerror.md create mode 100644 docs/models/gopher.md create mode 100644 docs/models/gopheritem.md create mode 100644 docs/models/hostenrichment.md create mode 100644 docs/models/hostenrichmentasset.md create mode 100644 docs/models/hostenrichmentservice.md create mode 100644 docs/models/httpredirectchainlinkhttpstatus.md create mode 100644 docs/models/malloryai.md create mode 100644 docs/models/malloryaiobservable.md create mode 100644 docs/models/malloryaiopinion.md create mode 100644 docs/models/malloryaiopinionattributes.md create mode 100644 docs/models/malloryaiverdictsummary.md create mode 100644 docs/models/openflow.md create mode 100644 docs/models/openflowhelloelement.md create mode 100644 docs/models/queryparamstatus.md create mode 100644 docs/models/queryparamtype.md create mode 100644 docs/models/reolinkbaichuan.md create mode 100644 docs/models/reolinkbaichuanalarmchannel.md create mode 100644 docs/models/responseenvelopehostenrichmentasset.md create mode 100644 docs/models/responseenvelopetagoperation.md create mode 100644 docs/models/responseenvelopetagoperationslist.md create mode 100644 docs/models/rtmp.md create mode 100644 docs/models/rtmpconnectstatus.md create mode 100644 docs/models/synergy.md create mode 100644 docs/models/tagoperation.md create mode 100644 docs/models/tagoperationslist.md create mode 100644 docs/models/tagoperationstatus.md create mode 100644 docs/models/tagoperationtype.md create mode 100644 docs/models/thirdparty.md create mode 100644 docs/models/v3globaldataassethostenrichmentglobals.md create mode 100644 docs/models/v3globaldataassethostenrichmentrequest.md create mode 100644 docs/models/v3globaldataassethostenrichmentresponse.md create mode 100644 docs/models/v3tagsbulkcreateassignmentsglobals.md create mode 100644 docs/models/v3tagsbulkcreateassignmentsrequest.md create mode 100644 docs/models/v3tagsbulkcreateassignmentsresponse.md create mode 100644 docs/models/v3tagsbulkdeleteassignmentsglobals.md create mode 100644 docs/models/v3tagsbulkdeleteassignmentsrequest.md create mode 100644 docs/models/v3tagsbulkdeleteassignmentsresponse.md create mode 100644 docs/models/v3tagscanceloperationglobals.md create mode 100644 docs/models/v3tagscanceloperationrequest.md create mode 100644 docs/models/v3tagscanceloperationresponse.md create mode 100644 docs/models/v3tagslistoperationsglobals.md create mode 100644 docs/models/v3tagslistoperationsqueryparamorderby.md create mode 100644 docs/models/v3tagslistoperationsrequest.md create mode 100644 docs/models/v3tagslistoperationsresponse.md create mode 100644 docs/models/wincecerdisp.md create mode 100644 docs/models/wordpress.md create mode 100644 src/censys_platform/models/bulkcreatetagassignmentsinputbody.py create mode 100644 src/censys_platform/models/bulkdeletetagassignmentsinputbody.py create mode 100644 src/censys_platform/models/clickhousehttp.py create mode 100644 src/censys_platform/models/clickhousehttp_error.py create mode 100644 src/censys_platform/models/clickhousenative.py create mode 100644 src/censys_platform/models/clickhousenative_error.py create mode 100644 src/censys_platform/models/gopher.py create mode 100644 src/censys_platform/models/gopher_item.py create mode 100644 src/censys_platform/models/hostenrichment.py create mode 100644 src/censys_platform/models/hostenrichmentasset.py create mode 100644 src/censys_platform/models/hostenrichmentservice.py create mode 100644 src/censys_platform/models/http_redirectchainlink_httpstatus.py create mode 100644 src/censys_platform/models/malloryai.py create mode 100644 src/censys_platform/models/malloryai_observable.py create mode 100644 src/censys_platform/models/malloryai_opinion.py create mode 100644 src/censys_platform/models/malloryai_opinion_attributes.py create mode 100644 src/censys_platform/models/malloryai_verdictsummary.py create mode 100644 src/censys_platform/models/openflow.py create mode 100644 src/censys_platform/models/openflow_helloelement.py create mode 100644 src/censys_platform/models/reolinkbaichuan.py create mode 100644 src/censys_platform/models/reolinkbaichuan_alarmchannel.py create mode 100644 src/censys_platform/models/responseenvelopehostenrichmentasset.py create mode 100644 src/censys_platform/models/responseenvelopetagoperation.py create mode 100644 src/censys_platform/models/responseenvelopetagoperationslist.py create mode 100644 src/censys_platform/models/rtmp.py create mode 100644 src/censys_platform/models/rtmp_connectstatus.py create mode 100644 src/censys_platform/models/synergy.py create mode 100644 src/censys_platform/models/tagoperation.py create mode 100644 src/censys_platform/models/tagoperationslist.py create mode 100644 src/censys_platform/models/thirdparty.py create mode 100644 src/censys_platform/models/v3_globaldata_asset_host_enrichmentop.py create mode 100644 src/censys_platform/models/v3_tags_bulk_create_assignmentsop.py create mode 100644 src/censys_platform/models/v3_tags_bulk_delete_assignmentsop.py create mode 100644 src/censys_platform/models/v3_tags_cancel_operationop.py create mode 100644 src/censys_platform/models/v3_tags_list_operationsop.py create mode 100644 src/censys_platform/models/wincecerdisp.py create mode 100644 src/censys_platform/models/wordpress.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 180a6fed..f7758914 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,25 +1,25 @@ lockVersion: 2.0.0 id: 5ca2c9b7-aea6-4a23-a631-998fcc6c18a8 management: - docChecksum: d6a5aa81dd7b887528be46ee0bf93613 - docVersion: 1.0.107 - speakeasyVersion: 1.777.1 - generationVersion: 2.903.2 - releaseVersion: 0.14.3 - configChecksum: bf06c9495b3e1f32fcb236cddf5c7299 + docChecksum: e97cdc006a7bb50d6d1da16408ab189d + docVersion: 1.0.111 + speakeasyVersion: 1.785.0 + generationVersion: 2.912.1 + releaseVersion: 0.14.4 + configChecksum: 3d018075ee7c357dc9807f85b1f2022f repoURL: https://github.com/censys/censys-sdk-python.git installationURL: https://github.com/censys/censys-sdk-python.git published: true persistentEdits: - generation_id: 866c6ce2-4512-48e2-be62-1bb5b18a03ae - pristine_commit_hash: 9e9e866a225e6ac195951da5a402f2aa0dc82193 - pristine_tree_hash: c45fa29ac8f854325d7a3ef20388b4c5114ad5cd + generation_id: 673af8e6-5cdb-452e-868d-8484e856333a + pristine_commit_hash: abf1252a0e7ba1817b4a021d4d7549c4945f1bda + pristine_tree_hash: a70ba1e93cc5abbbc48b4d734b166030e9c5cd81 features: python: acceptHeaders: 3.0.0 additionalDependencies: 1.1.0 constsAndDefaults: 1.0.7 - core: 6.0.29 + core: 6.0.31 defaultEnabledRetries: 0.2.0 downloadStreams: 1.0.1 enumUnions: 0.1.1 @@ -36,8 +36,8 @@ features: nameOverrides: 3.0.3 nullables: 1.0.2 responseFormat: 1.1.0 - retries: 3.0.5 - sdkHooks: 1.2.1 + retries: 3.0.7 + sdkHooks: 1.2.2 unions: 3.1.6 trackedFiles: .gitattributes: @@ -164,6 +164,14 @@ trackedFiles: id: a1a1588fb5e8 last_write_checksum: sha1:fe1e7216999cb66bf91c287de949c641da664549 pristine_git_object: f42111021022ba665658525e8ffb15230ce48745 + docs/models/bulkcreatetagassignmentsinputbody.md: + id: 6f062d08515f + last_write_checksum: sha1:223816b509da357fc377461d9e01380242a268a6 + pristine_git_object: a9ea33b7a19733c809d64ee3e808ac6eefa96869 + docs/models/bulkdeletetagassignmentsinputbody.md: + id: 7afe4101b451 + last_write_checksum: sha1:bbdfafd37bd5ed1e7e22703ed2e59862febc75e2 + pristine_git_object: 542a21124555446a855f82b8faca3ad57120dbd7 docs/models/byrole.md: id: a02e627441e1 last_write_checksum: sha1:3370f32236e190d1e1325ece9622931cbd3b6ad4 @@ -280,6 +288,22 @@ trackedFiles: id: f63e114040a7 last_write_checksum: sha1:e1e88b016631192303b4535e729640e25cd375da pristine_git_object: 4b132d2283c3cc97457da74c63ab0cc133a2c620 + docs/models/clickhousehttp.md: + id: ab39ef967549 + last_write_checksum: sha1:7fbb46e806bfbcf0e78bd80c219eed1f8e18ff01 + pristine_git_object: 89382b53ff4153e424af55aafd815e640532e3c0 + docs/models/clickhousehttperror.md: + id: 917fad17a1e9 + last_write_checksum: sha1:12b69a6b9c572edc56f0637881f9dfb97a162e97 + pristine_git_object: 23227072c20c08fe9c0747c19751e08acaa8c31d + docs/models/clickhousenative.md: + id: 0a050160f72f + last_write_checksum: sha1:b0b61d9da6144ff6e3b15bd492fbb5b6e2e5a64e + pristine_git_object: ca5192920ffdf16ea1fea82785131bbebe3a4994 + docs/models/clickhousenativeerror.md: + id: 82ff5fdba2d7 + last_write_checksum: sha1:f5e80147fab227b08fc83ed98893e4ed2d8026c3 + pristine_git_object: d9c291b5c4f3163a46ed6bf96a3badd6b6e1ba1d docs/models/cmore.md: id: 684b0e25b113 last_write_checksum: sha1:085d0908252b65e72c74f780c7d362bae9f035ad @@ -754,16 +778,16 @@ trackedFiles: pristine_git_object: 9c735895110f3b56d5e26c570d15cf143747c533 docs/models/endpointscan.md: id: 74c09badb875 - last_write_checksum: sha1:c6425d8b7988f5792f5304c57c9c8f948bb74828 - pristine_git_object: fd99838b0673b518e7e506256d6ca6cb1bb4c389 + last_write_checksum: sha1:0cee8d36a37dfb7612a1a2b7dc8bd7bb6b8a1b80 + pristine_git_object: 86448e77d7b6686e0dd466108477d2d69cce5c00 docs/models/endpointscanned.md: id: 3ea99f65fa10 last_write_checksum: sha1:ac0e3f51e3b56992018881630868f2145f006767 pristine_git_object: 329a0199b23767a9ae036c09997ed2899f9ddda7 docs/models/endpointscanstate.md: id: e2ee34e6abd2 - last_write_checksum: sha1:1d0c78d3d0222bdc7434c484a98dd99a8a036cd7 - pristine_git_object: 434ea07b8b4cd580b938af0f4a569dfa9f6fc7cd + last_write_checksum: sha1:c21d1e191945918ab51cecd0b7178297a29a4e31 + pristine_git_object: 465932b9a9f15a83fa0376ffc263ab0e0c3cc106 docs/models/endpointscanstatetransportprotocol.md: id: 70cde6881504 last_write_checksum: sha1:90077eafdf227363cbd2905d0a204ef01a53e16b @@ -912,6 +936,14 @@ trackedFiles: id: 1b8c75f0d35c last_write_checksum: sha1:c3cec4ce493ff21cfc26427ad6d1642a31981506 pristine_git_object: 2efbc40918fabbccce034c15b6a4c22158f7ffd1 + docs/models/gopher.md: + id: 1a97bac7ab41 + last_write_checksum: sha1:8617d11bf3f49f046e70d82639bbe049494a0096 + pristine_git_object: 30748625ce157d359ba80968028c742c23994bc4 + docs/models/gopheritem.md: + id: 8dcb591a2e3a + last_write_checksum: sha1:8badd8d6de4e028b91c539ff61393912be1e1ede + pristine_git_object: a4581b87bfe3c5daedc05ca38a0a576c3b7a185b docs/models/granularity.md: id: 3cee51c03dea last_write_checksum: sha1:5f43cd835ed8d1ae9641d288f795feab301500bc @@ -972,6 +1004,18 @@ trackedFiles: id: 59877d4ca144 last_write_checksum: sha1:a71c4d7c55ab2b459d878afd97eeb1d7fc281b60 pristine_git_object: 1c0b3433dd61d54161c0e257dbf85536029aee58 + docs/models/hostenrichment.md: + id: ccefd65293aa + last_write_checksum: sha1:036c114d6bf49d24c2a503d8bfcc3c3d4c9642a9 + pristine_git_object: c36f53d5e157b0a01c5c2438ee2feada8a1b80f7 + docs/models/hostenrichmentasset.md: + id: "928151057873" + last_write_checksum: sha1:de727c11d7861d48ec3587d3f6f5fa3fa7a3af3f + pristine_git_object: a5e325ad83ab639804e5b28409b46d2f3a9594cc + docs/models/hostenrichmentservice.md: + id: 8f9f50391cbb + last_write_checksum: sha1:8688978edb45049e8abab3666958e607a3d392c2 + pristine_git_object: 123892be5bf3dae6ea2be6af5ffb6cdc0cfca903 docs/models/hostnameport.md: id: 14aafa969ab8 last_write_checksum: sha1:7669ffb60792d12cecc3884c29cf07dccb34bf53 @@ -1010,8 +1054,12 @@ trackedFiles: pristine_git_object: 6a9461229a2b87161635b073e6007d66044070d6 docs/models/httpredirectchainlink.md: id: 181e28b37e66 - last_write_checksum: sha1:fb05819db5df942382f0fd1ae54e686b0a087435 - pristine_git_object: a4f6ac2e17331d3c8fa2c2a4d99c9fbe3d9127b6 + last_write_checksum: sha1:116c1cc0fc343ed838caf9858503029c2db4a1f1 + pristine_git_object: 89bce4b0adc08329bfec3472d305822cbf21a464 + docs/models/httpredirectchainlinkhttpstatus.md: + id: 1910be808ee6 + last_write_checksum: sha1:31a7bb7b71a8a227c1afec62fdbacc436443591c + pristine_git_object: 34400b2eb6e76c96ce0eb78ae7ab63c3f3dafaea docs/models/httpredirectchainlinktransportprotocol.md: id: 49a3925246e8 last_write_checksum: sha1:60a46e952784cf14bb1bcc2134e0ea0aa6bc3128 @@ -1288,6 +1336,26 @@ trackedFiles: id: a3c21c182bf8 last_write_checksum: sha1:117ba0062fddb9725c95551d488374f9cdc78a38 pristine_git_object: ac6665971ddaab09a823b4b3f9f50114d134b020 + docs/models/malloryai.md: + id: 6dd469e68781 + last_write_checksum: sha1:5d48e2e31aaa3bacbed1473572d98ce11745a581 + pristine_git_object: 07fe8cf7a3de1a24eb69ccfe6e9905623862d002 + docs/models/malloryaiobservable.md: + id: f2e715171caf + last_write_checksum: sha1:d39c99c477c7b7c839815f9094426fbfa8db9520 + pristine_git_object: a6e99a970f8ede7a262118b4907f7aa508b81a4b + docs/models/malloryaiopinion.md: + id: a027f2962d53 + last_write_checksum: sha1:812986044cf92a187d6173bd7b034f103cc77b2d + pristine_git_object: 390ecc8885389ba0be69708a4c4d2091518836d7 + docs/models/malloryaiopinionattributes.md: + id: b008e67d8870 + last_write_checksum: sha1:88e3f803bad61e6ac03ef171c51973a88294d47c + pristine_git_object: afc7d03b9b04714d2b172cc0e3cd16d16ba6b2fb + docs/models/malloryaiverdictsummary.md: + id: 0958a8709eb8 + last_write_checksum: sha1:456342b98212d6e9abe17734d108b18aa3a9894c + pristine_git_object: e943926f93c8a9d428959ac0ea144a414f660d2c docs/models/matchedservice.md: id: d4515aa8453a last_write_checksum: sha1:06d4d27dd8a8678723dd7114e015f624ca754fa1 @@ -1616,6 +1684,14 @@ trackedFiles: id: c238abc1fd4f last_write_checksum: sha1:a0e65fb2f2c9c5f310aa46a9a5501b6233094feb pristine_git_object: c9df44dec9d6fb8f99826b2c310a7846658d4890 + docs/models/openflow.md: + id: e983aa41e36f + last_write_checksum: sha1:de2cd890ff4ea4c18ee267c41949ea9fcac933fc + pristine_git_object: a4e26eedaeccc278c895442e4269b52f22259b48 + docs/models/openflowhelloelement.md: + id: e5e2facfb985 + last_write_checksum: sha1:1bc232433058373ef405f4490ae5ffc75427c3be + pristine_git_object: ef75d8abcbbfeda59d69cd68dfd86687c1d7b7cd docs/models/openvpn.md: id: 78daf757fc35 last_write_checksum: sha1:379955771acb5b5584e917cdb2bc609092221693 @@ -1852,10 +1928,18 @@ trackedFiles: id: 2d1bb9c4e269 last_write_checksum: sha1:39b4f281e8732df64dab4b6a889e2cbe125734f3 pristine_git_object: f9b3f9a819b38295213964444d71ba4664e50a85 + docs/models/queryparamstatus.md: + id: 15628120923d + last_write_checksum: sha1:e22dadc91d02ab1aa5f95c3d8c5bb61dd7d609ab + pristine_git_object: f080d4f0ed3669d71d962f5050c5f4fcf060b94c docs/models/queryparamtransportprotocol.md: id: b6531f948a00 last_write_checksum: sha1:386ab93342f86c93e671fe9cedd0d18faba4daa9 pristine_git_object: c3b838a17b27ea337fd9709b020567ed0d6122de + docs/models/queryparamtype.md: + id: 93c913e21973 + last_write_checksum: sha1:8466b2f9613c73b228b75c648cab4b0e925ffb6e + pristine_git_object: dff4942a03682634ffe1bff03304b172139e99d9 docs/models/rawcertificateresponse.md: id: 00e77f0193cd last_write_checksum: sha1:fac061afc8fa18938c314df7da070cd2eeecd744 @@ -1952,6 +2036,14 @@ trackedFiles: id: a706da091200 last_write_checksum: sha1:012547703296a6c341613f2c73d42e0ce3c28335 pristine_git_object: 65d56dce3b47037e8d808a12153b4f99c0843b26 + docs/models/reolinkbaichuan.md: + id: 513066719e7b + last_write_checksum: sha1:55c8e039371f9c7b2019e55012a89ebd24e0143c + pristine_git_object: 49fee3b255bf380894337cdf28f3720dd45a0c6f + docs/models/reolinkbaichuanalarmchannel.md: + id: 0156915600aa + last_write_checksum: sha1:54b6592531359cdd018527e0e322af0fceae3f4e + pristine_git_object: 4f87702d347c482b7ad80bd161f9574cbdf3f3ee docs/models/replaycapabilities.md: id: dc46cb1280c5 last_write_checksum: sha1:2caca5c4f70330b3a2361d5cc007b1e303a979c0 @@ -2040,6 +2132,10 @@ trackedFiles: id: 3a27c86f15fd last_write_checksum: sha1:9c564116ca0e4c06f3cc752dc1d2a71888b73f78 pristine_git_object: a56fb96d14eec396912f48fbace33417d058c7b1 + docs/models/responseenvelopehostenrichmentasset.md: + id: ef20797fd98f + last_write_checksum: sha1:60a0ab3e3d7c55c7b805a02517c2a0eb289bd552 + pristine_git_object: 104bc24bd1fe7f775763466278ba1f835297ea84 docs/models/responseenvelopehostobservationresponse.md: id: 754a542de7b1 last_write_checksum: sha1:77476405819cba49ebefbddb3a08ffa6debf85a4 @@ -2108,6 +2204,14 @@ trackedFiles: id: ccd4e343bbcb last_write_checksum: sha1:eaa2f72273054bd13ae948dd537220339f159ce8 pristine_git_object: c7f36aa97142f80dedd199e5f8b9f7f2cc7a7d39 + docs/models/responseenvelopetagoperation.md: + id: 4819b4f0aedd + last_write_checksum: sha1:d75918b0ab92da12c621ad584acc32ba39b06253 + pristine_git_object: 7f506835bf9bc3fb80573fed750c24599f6f0a7d + docs/models/responseenvelopetagoperationslist.md: + id: 48bc1291c027 + last_write_checksum: sha1:9c1f8725ffdfea0a78c60f2277fb3eb695ad47b9 + pristine_git_object: 0cf8b2b0aa1f2dab2737b1126eedb37da9c490c7 docs/models/responseenvelopetagslist.md: id: 61ece20261a5 last_write_checksum: sha1:d717f923b35fc6cececed2881c624b8ce3d5280c @@ -2220,6 +2324,14 @@ trackedFiles: id: 43e5235424c8 last_write_checksum: sha1:3407a338189668781826bc04d0d4bbc2163a56e0 pristine_git_object: 26aa1ef5b7ef91bed7aa9ffae302584d46dd2bb6 + docs/models/rtmp.md: + id: 6e522dc381d9 + last_write_checksum: sha1:c8b5dd2f5099203a7c6db4b7bee90535709f1977 + pristine_git_object: d57a5d9fc92e9beedd71473ba64ecd462376fba1 + docs/models/rtmpconnectstatus.md: + id: f9315c84fa19 + last_write_checksum: sha1:bc735f17f98145e41bdfaacb7cc256114783b683 + pristine_git_object: 1daf9cba878dda2a57bcfc117c89fa14c68b54e2 docs/models/rtsp.md: id: 54f0194570d7 last_write_checksum: sha1:4f9ed5f792358ccafbcfb6707026adf3e0acdb15 @@ -2402,8 +2514,8 @@ trackedFiles: pristine_git_object: 61ab9835916f66983134f42416d3c9c860c00420 docs/models/service.md: id: d38041323049 - last_write_checksum: sha1:72c4d681d97cae2ad0004a2113b40a5fdddab94e - pristine_git_object: 72d9a2d3b662e03e682642925fcb3e26f54e5db4 + last_write_checksum: sha1:d0116ae5591d90050e6f631b1b0aca085cb52457 + pristine_git_object: 7b9e416b7be63cc2292c8ca1ff58008058d252b0 docs/models/serviceid.md: id: 78670c733096 last_write_checksum: sha1:4388c75f08f99206fc758d5d47396f1a13fd37e1 @@ -2418,8 +2530,8 @@ trackedFiles: pristine_git_object: bc2f400913efe8d7b2e01c2f6ed70f84b7937915 docs/models/servicescan.md: id: 5079b5eb4109 - last_write_checksum: sha1:0bbad062e425782c9a8ca4ab5c96624f4d4e308b - pristine_git_object: cc450cfdec0c0002fff4e9391248b0e21013a05f + last_write_checksum: sha1:0e202d7753a72f6c23834946f60b5321bdb01072 + pristine_git_object: 11fe587495e6f77db298827e33d008cc458a08f9 docs/models/servicescanned.md: id: 8783aac64d52 last_write_checksum: sha1:95fa8c18ec2267c5969827ee2576a45c793fc904 @@ -2612,6 +2724,10 @@ trackedFiles: id: a1bb299d5525 last_write_checksum: sha1:bdb44a9dd40553e9a66919cac1973d6fa110dae6 pristine_git_object: e9a37d31cecd2e1805c3d8ae89049cef2e9f7754 + docs/models/synergy.md: + id: bbad33d4cde4 + last_write_checksum: sha1:bc132a9e37e4f2b4ca436ea671ccf7a7ee8cdef5 + pristine_git_object: 43f2b996fa664c5aaf37870168fa19ba5496ee82 docs/models/systemcapabilities.md: id: cffaed2afe8b last_write_checksum: sha1:1d714145d1cd8f1f2c9f72ed11ce9a6263b9d4af @@ -2636,6 +2752,22 @@ trackedFiles: id: ec22303b55e1 last_write_checksum: sha1:a92d3c6ca888191667b49123fb4f670c18de3774 pristine_git_object: 64e4c40f81d10753f359dc57b4b885b11b748acf + docs/models/tagoperation.md: + id: 481cb7a43fd5 + last_write_checksum: sha1:45b488a08a03204691280cfc94ae8aac5f597126 + pristine_git_object: 4254effaf0088c108f7a025b59d22a1985c81021 + docs/models/tagoperationslist.md: + id: 8a51ce371624 + last_write_checksum: sha1:801382fdad95524e2c71d4782042f13a5f99f9e5 + pristine_git_object: c0178c33941954c8395c6c04d68d07ab84542de9 + docs/models/tagoperationstatus.md: + id: f88921099d3d + last_write_checksum: sha1:1ede3b930b1a77afe5c0f4788a2a8de827a898dc + pristine_git_object: 9f46718f2086369f1c39de6301eba83ffa8d5bd4 + docs/models/tagoperationtype.md: + id: b23c9b9d2e88 + last_write_checksum: sha1:48e33663b53ccca442c7874e20c06317adb16403 + pristine_git_object: ea2d3fef6a1db4d3fd38d5ba1e6688b2a0e977e7 docs/models/tagprivacy.md: id: c8937ed2f137 last_write_checksum: sha1:42dbb2650b060247e041f32cd8117316d9d94749 @@ -2684,6 +2816,10 @@ trackedFiles: id: 5b5c1e2b5480 last_write_checksum: sha1:9be9b4b02e58bad5f5faee649edd1482ea26e0e9 pristine_git_object: 2f8c4442e493101d51e56f36f9b278a444342c0a + docs/models/thirdparty.md: + id: cc133818907a + last_write_checksum: sha1:65197437b1459093c4b6996e611e3e00dac8b51a + pristine_git_object: e005a995bd8a0100e163ea4945b615604e71ab34 docs/models/threat.md: id: 7fe91844e634 last_write_checksum: sha1:4fc05a1d268a80b5a832804169b9291ab62ff5fe @@ -3116,6 +3252,18 @@ trackedFiles: id: 05a955c20203 last_write_checksum: sha1:87c461d8b8e8ded06b7d40352e927b40f3ef2957 pristine_git_object: ca5ed383bba1a0205f9ab79dba6ab792e7793c4c + docs/models/v3globaldataassethostenrichmentglobals.md: + id: ca54cf1dd0e5 + last_write_checksum: sha1:f2fd38bdf475fce77afd53b48882731690429aa9 + pristine_git_object: 693fc687726e56fb1b60c31a56f64eb5681cffc4 + docs/models/v3globaldataassethostenrichmentrequest.md: + id: f729fb528f42 + last_write_checksum: sha1:71ebf61d2e352692c75956a66ac08a11554c1da4 + pristine_git_object: 20cfbafef2a99a190510c0a3f8fc1584ce737962 + docs/models/v3globaldataassethostenrichmentresponse.md: + id: 92d2b56c5416 + last_write_checksum: sha1:a7fd09c686e49ab51fc4ee35ead56158e2698496 + pristine_git_object: 03983d518a2483e74693f8bea0d29240d3f8eb1a docs/models/v3globaldataassethostglobals.md: id: 4e68df65e9ed last_write_checksum: sha1:20f1e2ef95c15fa3d2ecbd3d463b962c9c761bff @@ -3304,6 +3452,42 @@ trackedFiles: id: b6a5eb7e226c last_write_checksum: sha1:72a5654034175d50addaf67a7c1d163d13f589a1 pristine_git_object: 394f17d16cd229998c3a31c32ea319dc8896b3d8 + docs/models/v3tagsbulkcreateassignmentsglobals.md: + id: b3e5343c77cb + last_write_checksum: sha1:397f974ae730723f1dc0075e2157ceeb73cfb266 + pristine_git_object: 35e6d49a44ef0ab00d2fac62362c0b8a5a7b23e3 + docs/models/v3tagsbulkcreateassignmentsrequest.md: + id: be6540ca04f3 + last_write_checksum: sha1:478ea94189bb5a1d8f2c9c012bd8d4e87e01992b + pristine_git_object: 7004fdd5bf27d0c60db92e025c351f832ddfdc3d + docs/models/v3tagsbulkcreateassignmentsresponse.md: + id: 991862d2bc2f + last_write_checksum: sha1:31356eb4140caeaf674f1ce3198b7e21a46c18a3 + pristine_git_object: 9eee055840beaa379e8a334a5628d1f520f0116e + docs/models/v3tagsbulkdeleteassignmentsglobals.md: + id: 74720bd37878 + last_write_checksum: sha1:6c5d0d07ad6397a1397d0af2a023bd9cf1e8fa26 + pristine_git_object: d060e9da64bee344d320cb7d89abc1e985367d05 + docs/models/v3tagsbulkdeleteassignmentsrequest.md: + id: ad91a7c84946 + last_write_checksum: sha1:51689db5fccffb9dcf540e52ce3034082c607a34 + pristine_git_object: c2b9128be58a7ddc07519e0443a51d259f4e0ea5 + docs/models/v3tagsbulkdeleteassignmentsresponse.md: + id: 2ed80c7caa8b + last_write_checksum: sha1:da0ea43201e87e854a2bafe1df13fa134b487645 + pristine_git_object: 15a94be9e86032ef82cb02f52fb76ab0b06fa737 + docs/models/v3tagscanceloperationglobals.md: + id: 6515d814a4f1 + last_write_checksum: sha1:4f241db69b24da418d4bf2bc044e8128951c0e1f + pristine_git_object: e7f7a796f1b7239aa0d30559f748f95d1856cc28 + docs/models/v3tagscanceloperationrequest.md: + id: 6e685bf3609e + last_write_checksum: sha1:9bdadec17f1d488e9abf398a45acea47d0df7637 + pristine_git_object: bd09043e90ae5b62fad07edd47ef31c246db8ca1 + docs/models/v3tagscanceloperationresponse.md: + id: 4ae392a91c18 + last_write_checksum: sha1:e5812a2c57b5fcc63ad71df86c91a577fca9a945 + pristine_git_object: b8209ecea5678a0d959837f2bc0b633b491089e3 docs/models/v3tagscreateassignmentglobals.md: id: 45b592545e07 last_write_checksum: sha1:0f1da52632760e9344b89ed1637971f023167184 @@ -3380,6 +3564,22 @@ trackedFiles: id: 6417f922f7cf last_write_checksum: sha1:6fab3208776c5674fcb5501898fa93f867f4312a pristine_git_object: 100505f51499ce1cae9109fbfd407b12f0737dc5 + docs/models/v3tagslistoperationsglobals.md: + id: b13bed2a8873 + last_write_checksum: sha1:92734e4669847a73f47e29cbd2ac2fdf57b6bcc0 + pristine_git_object: 7146b18a09383566a94caf011aa5bd339ced3dd4 + docs/models/v3tagslistoperationsqueryparamorderby.md: + id: 5f2bd9ba479c + last_write_checksum: sha1:b70ddb3f00ff3f2495f9cb7e3ce1e4eb2209410f + pristine_git_object: b033fadf04cabfce13e7faad2729b7b87a0a5e47 + docs/models/v3tagslistoperationsrequest.md: + id: ecc046bb9dea + last_write_checksum: sha1:7006560e5d3b8b64cfc2e11ec20a319470add70b + pristine_git_object: 7686683c93d4cd5a9bbff771c6334d16a38573be + docs/models/v3tagslistoperationsresponse.md: + id: dd963a98d337 + last_write_checksum: sha1:acbf8b58d613bcf3d4f32c6f11f5d6c3d32c7103 + pristine_git_object: 1faf2bee3f3b92d369369ba984a6a4e4979fadd9 docs/models/v3tagslisttagsglobals.md: id: 68ec6f8348f4 last_write_checksum: sha1:87b4b57fa1d8a045bdedb2ca8de08c282d75abc8 @@ -3608,10 +3808,18 @@ trackedFiles: id: 0b52220600aa last_write_checksum: sha1:6db90fa2eccf0c7416c50d6bae36067f71f2293c pristine_git_object: 5af83cad3ea51fb5c90f0787fa3ffe95f1eded31 + docs/models/wincecerdisp.md: + id: e24169a49678 + last_write_checksum: sha1:7c7793fdc55482f654c7d083fdd8c983256d0457 + pristine_git_object: ae284facf410aff118d4b097285b68fa4001a5aa docs/models/winrm.md: id: 65d1bf097000 last_write_checksum: sha1:bc6408384348efbea3a57ac915fc72c3b4f000fc pristine_git_object: a281c103e41277b7dee5d321ef61680622863f71 + docs/models/wordpress.md: + id: dc7054c45fea + last_write_checksum: sha1:f39bdae258f5e3c3de8ec889d9ffe3c948af251d + pristine_git_object: f3477c247253fd31f98da1af5a3928b2c717dda5 docs/models/worker.md: id: 159a9ce13573 last_write_checksum: sha1:f844ac637835a4b029281f62d2500b7f54053fa8 @@ -3654,12 +3862,12 @@ trackedFiles: pristine_git_object: 7c00028bb7ac927b2a2a51c23903759c44d6207c docs/sdks/globaldata/README.md: id: 0c68886632e6 - last_write_checksum: sha1:689acccd3ce95031c529fae5f56634888e3ecc39 - pristine_git_object: b1095525259e7d09028dea2fa0069efaeb069689 + last_write_checksum: sha1:f33437f41944923bef3eb2f3303d27807d8c61cb + pristine_git_object: 4412fe377b910b71bcfe8d0eb8d0fd0cd7e4a709 docs/sdks/tagsandcomments/README.md: id: 092d693513d0 - last_write_checksum: sha1:b55277bc96e17b34da0b308dd923aadb9f69b7db - pristine_git_object: c142ec3029d477a2ad94a0cc586ad7c991addf70 + last_write_checksum: sha1:c1622953e204c9899be112c839bfdd950d78bd46 + pristine_git_object: fe1141a78957148263bcddf7e4f57e8e0475346c docs/sdks/threathunting/README.md: id: 9d697938ee45 last_write_checksum: sha1:1dd7920214af9a4123554aadab51f42c5cb9f60d @@ -3678,8 +3886,8 @@ trackedFiles: pristine_git_object: bfd8691be4b4b5ee9f2c4baf849970d807ade207 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:4e03642cdc2b00b7537d46ccafc0dcc6dcb6ad2c - pristine_git_object: a928e4354af32d65249d49226295b1beb199374e + last_write_checksum: sha1:711de8d0515952109196dd47d7e7ab56ba5c98ef + pristine_git_object: 242c34a5746d3a59adb998b87859237496b60812 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:10d6ae008b24c68e99d7e8ba9c2e747070685ead @@ -3706,8 +3914,8 @@ trackedFiles: pristine_git_object: 352d3691d91c2d0ba0f05b48b56d4df5ce520098 src/censys_platform/_version.py: id: d2dc39704c23 - last_write_checksum: sha1:0ff3fa3cccc9afe833a990881c701e5f7bf3d47e - pristine_git_object: 22057bc0aea611a0710c991f4a28647c0891e16e + last_write_checksum: sha1:cfef66bbd6df16c54a8cc89ac757636473192a3f + pristine_git_object: e354b14ecec5f9a3f28763869b32018ab2ed701b src/censys_platform/account_management.py: id: 09993862b047 last_write_checksum: sha1:09f4a14d8ae7684622d2d8633656f043c3ae9bef @@ -3726,16 +3934,16 @@ trackedFiles: pristine_git_object: b4c0522c33e5d68f3335930c11d21ec93fbf2c56 src/censys_platform/global_data.py: id: 0eedbf9a2038 - last_write_checksum: sha1:9041016f3cafc9826264accf81dc9c84b808ebef - pristine_git_object: 2bee92e444caa9292d36277e66d654950bd9c0f0 + last_write_checksum: sha1:59441e31a5cea38f7ab939d7bce41dc8a950a535 + pristine_git_object: ca06df28512eebf9cabbe5a0b9eb0a0333fc8768 src/censys_platform/httpclient.py: id: 9378a19c2de6 last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/censys_platform/models/__init__.py: id: 4c65ae1e4fed - last_write_checksum: sha1:3fdb7fc4ee23012df8a8a8c547af98fda6c99e32 - pristine_git_object: 7815035bf29a8f8b2d509b712cdb54ed527682a1 + last_write_checksum: sha1:63bc9824569febfab929b397e4982bcffa4b93da + pristine_git_object: fc8f903b46e5980bec40df0ad1327eef366068c2 src/censys_platform/models/activemq.py: id: c852b87bc559 last_write_checksum: sha1:a754dc1ce0647be6304994e4c598c533e0db974e @@ -3820,6 +4028,14 @@ trackedFiles: id: aafbc2e6c45b last_write_checksum: sha1:9e6f46c592bd4183f88d8d2a3b83e3cbb3dbd46a pristine_git_object: 0161f46757699ace3bb88a0e3a05ac7c913696cf + src/censys_platform/models/bulkcreatetagassignmentsinputbody.py: + id: 2e3cdf22a54b + last_write_checksum: sha1:fc942ae10a5f02b2fc933cddbfd13388c46531f0 + pristine_git_object: 6e3c8d24e2b781ff731ed0aeac611587c6b2dd33 + src/censys_platform/models/bulkdeletetagassignmentsinputbody.py: + id: 40c6f8ff8cb0 + last_write_checksum: sha1:12d61b6ce2472766e7938da67e9337d8f4b8195b + pristine_git_object: 5179029ec816ea7ecb44dc39cf01dbe27a56dcf4 src/censys_platform/models/cabforganizationid.py: id: 20317e7fed90 last_write_checksum: sha1:566d309edea3b9b343ef89b12faaff7d821abe75 @@ -3924,6 +4140,22 @@ trackedFiles: id: 2171ffb94e91 last_write_checksum: sha1:e59c0bc73a16af719e2f82962f57176d13d52411 pristine_git_object: da9e8d75c2b65f0a8d5ddc6864707c61c8e87d64 + src/censys_platform/models/clickhousehttp.py: + id: 7cbbc9eeb0b4 + last_write_checksum: sha1:df39af59cbca3c6851585db95b90554cc22fcb26 + pristine_git_object: 2a50f16c5f8b36363d5d2e9c9d9ac6bfa130a9fc + src/censys_platform/models/clickhousehttp_error.py: + id: 1832723e6c5f + last_write_checksum: sha1:59612f8102a9ee0567407a34a5cab551f37dd7e3 + pristine_git_object: 0d89d6d155dfc22f93634a5c64456e4f10b6f618 + src/censys_platform/models/clickhousenative.py: + id: 209344b0696a + last_write_checksum: sha1:78f5f83386775d8b4bad8390152ba606985ac7a9 + pristine_git_object: 07b77b286f86edfab11a374cede5a042dc6399e1 + src/censys_platform/models/clickhousenative_error.py: + id: 4b6f01caac75 + last_write_checksum: sha1:b0d2d8c28e603d7cf342fa083c99bd733aa2f674 + pristine_git_object: 940ce3cc2dc5a1560485a6905138ac9aceccb614 src/censys_platform/models/cmore.py: id: e2a00b9c7132 last_write_checksum: sha1:95f23da7a621b81c2dc081f10cbb7ea162ecff15 @@ -4334,16 +4566,16 @@ trackedFiles: pristine_git_object: d3af93915b99c62422a93dbc7f9dae79417c546b src/censys_platform/models/endpointscan.py: id: e9034f3e14f9 - last_write_checksum: sha1:7f5a5fe76f98990be54ec528bc7be3c2dd0c93e9 - pristine_git_object: 8f71d8713e263f957c020701693840e12c9afb1c + last_write_checksum: sha1:f1283d08dbca3ebd2a47f94e2fff864fb9f678eb + pristine_git_object: e05a0c4b388eebd07d6e756d038e4a4f29f818c2 src/censys_platform/models/endpointscanned.py: id: 62ea4d26c40d last_write_checksum: sha1:2afb8006679248fb848b4d2ef87caa4e143f892b pristine_git_object: a9984383bd95fc929bbf9ae60a98068b10155e5f src/censys_platform/models/endpointscanstate.py: id: 7b8f1fb78573 - last_write_checksum: sha1:ef9973765713cf28ac37311a9ae4004452be5089 - pristine_git_object: d6125241c7a4a9f1a76d0b1a240fc22bbf19fba2 + last_write_checksum: sha1:a39bc1f522f35a7f6d391b39cbd3806d9da544c6 + pristine_git_object: 56cb6e257f9741859f67e70c2ceaced727c97daf src/censys_platform/models/epmd.py: id: 8088ccd12b02 last_write_checksum: sha1:418687e71656a7120501c2af1043db1dfc0b7109 @@ -4484,6 +4716,14 @@ trackedFiles: id: 3d859a5f9356 last_write_checksum: sha1:7dfdaa94ebb883829258583b23ca38957b739049 pristine_git_object: 6dd8dd9150459ab60f80ea9b50e88d0cddb80dbf + src/censys_platform/models/gopher.py: + id: 82b5287122c4 + last_write_checksum: sha1:34d549e139068eb39cbfcfc26c25bdcd71f94e14 + pristine_git_object: 1e402a6478331f8bc90eaf89f8ba309db41d374b + src/censys_platform/models/gopher_item.py: + id: b977924a396c + last_write_checksum: sha1:6badcb284b4b172186200280cddce3ed00ff0a21 + pristine_git_object: 9b018afa8362f25d9a2306f2136f8772c4226372 src/censys_platform/models/graphql.py: id: e91c41786b5a last_write_checksum: sha1:ce8b36dad7f7437001421d38692de5769d02c554 @@ -4540,6 +4780,18 @@ trackedFiles: id: a0b22d1e690d last_write_checksum: sha1:d8f57f12f63ed46560cdc6ab0f26e3701f5c563b pristine_git_object: d1b774ea75d32c613bad1e6fe147ae5ebe5f1dbe + src/censys_platform/models/hostenrichment.py: + id: 500665f5218c + last_write_checksum: sha1:dcd95c2077223e2a40d4f9c00386443d547d5ad2 + pristine_git_object: ece96502db5c2df38d86539febd756c6924a9894 + src/censys_platform/models/hostenrichmentasset.py: + id: 6845bb7ae3e6 + last_write_checksum: sha1:af72a4225014d12c0db1226283f7d1f83bdb2a5c + pristine_git_object: 7e923cc948db006d5908532a296ebbaef76af330 + src/censys_platform/models/hostenrichmentservice.py: + id: aba13ecfb790 + last_write_checksum: sha1:a5ced1f7e35881119c56f2791792d85c53460c26 + pristine_git_object: baee49c87826dfc7b9351ab22bedc6d16d1faab4 src/censys_platform/models/hostobservationrange.py: id: aa288339619a last_write_checksum: sha1:110ea596733baefa3cc3b0330ad98b043ea18a0c @@ -4570,8 +4822,12 @@ trackedFiles: pristine_git_object: 1b3de5a4ed850d61148a5149f8adcd218d4cf292 src/censys_platform/models/http_redirectchainlink.py: id: f3cdca0b5525 - last_write_checksum: sha1:cb6e0f91f83ec7ef7fd65ebf02ce71032e664e7e - pristine_git_object: df965ef80a79ca909c407a2f111ff496c0724f50 + last_write_checksum: sha1:08129eb1dc515a2fd62522a416a5653774366d51 + pristine_git_object: 4f996111cfff7d262d5c5633be1548c31a180341 + src/censys_platform/models/http_redirectchainlink_httpstatus.py: + id: b227ca8764bf + last_write_checksum: sha1:d6378d91dc88dca29b061f8d66d5d4fa869b539f + pristine_git_object: f1e92f3e10794d3499078089a6baaa13f8a0cc35 src/censys_platform/models/http_repeatedheaders.py: id: ab701e3cdc54 last_write_checksum: sha1:a4c24de73a9f1e6a1989e2c11f39358bd923395e @@ -4832,6 +5088,26 @@ trackedFiles: id: e755afe2e4ac last_write_checksum: sha1:059d451235f2d4180e97da989b04ed356a5e8bda pristine_git_object: ef096ed69a7a6117f76be63bf7c3a872228ccd45 + src/censys_platform/models/malloryai.py: + id: 31dde0200321 + last_write_checksum: sha1:e3dff96f8eb819f98b274d3a211a729be1a216d1 + pristine_git_object: c0dc1cb088ef11e3fb463b9a793ed0be81990bc8 + src/censys_platform/models/malloryai_observable.py: + id: 0abd0b360653 + last_write_checksum: sha1:bc0398df013e38a323e63a847c44f34c15aa7d51 + pristine_git_object: 7df26a9eed21f60a093e45d523efe61214a978bd + src/censys_platform/models/malloryai_opinion.py: + id: 6b9e2d83f6ce + last_write_checksum: sha1:0465a5d5b6c1170ff65e7fa184d6481be7d858d1 + pristine_git_object: 20c6727dbf3bb7dcd14117c89f79ef547327b1d1 + src/censys_platform/models/malloryai_opinion_attributes.py: + id: a02cdd4c6e20 + last_write_checksum: sha1:2dcb2a500108223fa0506d2427f30ca99cad1f2d + pristine_git_object: c11c39ed7f7182aaf12602341bb295f3db4210ed + src/censys_platform/models/malloryai_verdictsummary.py: + id: 4b1a23274962 + last_write_checksum: sha1:13b29425e7176cb41f5f721910243e7b990f4871 + pristine_git_object: 4b9b0a689d88d08fde1e8d23595b66ff8a4e97fc src/censys_platform/models/matchedservice.py: id: 8ac9ef9d68c0 last_write_checksum: sha1:3a505cae85add02756dc3c5a6c6b6a0fc83a963b @@ -5152,6 +5428,14 @@ trackedFiles: id: eb8ac3ebfa26 last_write_checksum: sha1:669f523b10892bf600e5e888832393f0bb91f49e pristine_git_object: d989e6423e7629424eb507b6ca38ba2af8144c96 + src/censys_platform/models/openflow.py: + id: 43ec8eb33192 + last_write_checksum: sha1:8cc0b55fec15bf4812f12220f23b590f9b9a532f + pristine_git_object: 55ce93ce53c12bd69942d3df55384e0a266e08ae + src/censys_platform/models/openflow_helloelement.py: + id: 53f629e8c60d + last_write_checksum: sha1:0633d54666f630a73ff65aa81d0f4c3664a02c54 + pristine_git_object: 4fb67492153350e46e36af58cfbadba0a31de065 src/censys_platform/models/openvpn.py: id: fd2d4424ef7c last_write_checksum: sha1:d95119c5303fb25a5e6fdc836f987fd866d7badc @@ -5424,6 +5708,14 @@ trackedFiles: id: e3227f28ecbd last_write_checksum: sha1:a00d65885b5d1794a03dc5a31370470472f2d3e6 pristine_git_object: 9273280a5e8d7e081e866a0eb5ac47c77ecdfa42 + src/censys_platform/models/reolinkbaichuan.py: + id: 44cfe24b7245 + last_write_checksum: sha1:26c7c508f1344b9f55b472c959cfbdada0bdc6e0 + pristine_git_object: bf8723177288443e6ea4c68b68e52a794e60d1b3 + src/censys_platform/models/reolinkbaichuan_alarmchannel.py: + id: c8de56d49165 + last_write_checksum: sha1:021b7cf7f8f480c78a55ee1cf61d3d43cd168d61 + pristine_git_object: ec75b48bb140fbf12421151d8485c1de016015f4 src/censys_platform/models/replaycapabilities.py: id: 2dec08a9f8c4 last_write_checksum: sha1:37f93199ee069f471c0dd81e61aba2dbc32c5f47 @@ -5508,6 +5800,10 @@ trackedFiles: id: 992a65c9b63c last_write_checksum: sha1:7f7b5f3d77e1c82ff8941d689cd89f01677f7acb pristine_git_object: 83cc56c96ec66998fda26307e8c3629242ece2e1 + src/censys_platform/models/responseenvelopehostenrichmentasset.py: + id: 0dd1a1b7a431 + last_write_checksum: sha1:f09c058419a08010fd096293deac3813877393d9 + pristine_git_object: 93594e7368e73b90551a8f29cca275003d331fbb src/censys_platform/models/responseenvelopehostobservationresponse.py: id: 05554f165d80 last_write_checksum: sha1:2ee8e4f4dda279b8b74da3501d80c8ff30cc00a3 @@ -5576,6 +5872,14 @@ trackedFiles: id: 6a7810be5c94 last_write_checksum: sha1:c7188b1ffb12e82ae3753b110d45411d7d9234a8 pristine_git_object: 33bfbb012e216048c099f615106a4c4d3bf2475e + src/censys_platform/models/responseenvelopetagoperation.py: + id: 2e305d1d29da + last_write_checksum: sha1:48f1eda90df95e11ba2185cc60eee759deb58db3 + pristine_git_object: 43a1fae09a5ff646695536dedc82900df132405e + src/censys_platform/models/responseenvelopetagoperationslist.py: + id: 12c3ae1eebb7 + last_write_checksum: sha1:0f47de974e248ecd58b2b966961e8002e4a0780b + pristine_git_object: bd4b7b98f467cb7db071d658b27ebfa6c0874bbf src/censys_platform/models/responseenvelopetagslist.py: id: 927cf86ef732 last_write_checksum: sha1:4fe7bedeba47288b624d988139941a4bfed30a79 @@ -5680,6 +5984,14 @@ trackedFiles: id: c622437705b4 last_write_checksum: sha1:400a370f9e841439ee71d3e2400e72486c5cb344 pristine_git_object: b407a246fa3d8c088ac7189df519da6b179a8c37 + src/censys_platform/models/rtmp.py: + id: 441382f9be57 + last_write_checksum: sha1:cc3ab7a083349761c927c4c7718c9df91e6d124d + pristine_git_object: a85b7a5ac888b8b21affa995e019b80ae5d28fa6 + src/censys_platform/models/rtmp_connectstatus.py: + id: cfdc8987f1f0 + last_write_checksum: sha1:a347d9ee22090bd19f89c0ca1b6588920a498f71 + pristine_git_object: 7da64d20538666727d2c6cee1131804e0bcb89c3 src/censys_platform/models/rtsp.py: id: ef3576bdc22f last_write_checksum: sha1:ca153a17d2a12840afbc502a3f2abf64bcf5eddd @@ -5842,8 +6154,8 @@ trackedFiles: pristine_git_object: 88a109718356961a048e8c8c432885e6191e5292 src/censys_platform/models/service.py: id: 25dc1044897b - last_write_checksum: sha1:89f1540d752c39ea6b77d7a0470b68ac7c340132 - pristine_git_object: f780a8789b1cfb55b46fdae5d196dd62ac939f6b + last_write_checksum: sha1:1c3b99c28f55e91f66f7637a1748c6ebf64dbe16 + pristine_git_object: dbb27b28399b4e5728cb61a97e856a51fef8eb85 src/censys_platform/models/serviceid.py: id: 52a5b098ac72 last_write_checksum: sha1:a179ab2be8d3b5670d9f0e2174c807f96d3560cb @@ -5854,8 +6166,8 @@ trackedFiles: pristine_git_object: ee6e0658c1552e310381fdcdb70cbcc974189e85 src/censys_platform/models/servicescan.py: id: 24c47a42f886 - last_write_checksum: sha1:36324e720caeb1f70067864eab6a7f4b9dfcfe5e - pristine_git_object: eafa8512f384a5f6f37d639775c4a63b546086d8 + last_write_checksum: sha1:dc96e3d6bc1613dcec746c0a38b273682ba2e432 + pristine_git_object: 5ec09810d527174db74a4dd04c80f957076770c9 src/censys_platform/models/servicescanned.py: id: 7a118692950e last_write_checksum: sha1:a59c5fead929828e5130c6ee43818cb9d0db9f9d @@ -6020,6 +6332,10 @@ trackedFiles: id: 228de191a4ee last_write_checksum: sha1:f1a94b0abc98bee681e95a69ecf766f354fc4f23 pristine_git_object: 13da387d173067a261008076642ea37886a4a922 + src/censys_platform/models/synergy.py: + id: 093cb88ca4b7 + last_write_checksum: sha1:ab6565238a184d4809c1866500960004f353302f + pristine_git_object: 70442f85fc680ce37456fe6365533ac32f2ecc26 src/censys_platform/models/systemcapabilities.py: id: f5e6cedda63f last_write_checksum: sha1:5b51a77b0b5750cd892582a34416c3b35514f833 @@ -6040,6 +6356,14 @@ trackedFiles: id: 7c8a86702e82 last_write_checksum: sha1:ecd3aa5d60eca41231bf929b73df6690d39e3b54 pristine_git_object: a7e19fdfb35fc605139ce419a23ebda7ba0c0289 + src/censys_platform/models/tagoperation.py: + id: 02fc0325ab48 + last_write_checksum: sha1:a39b439a10f053f4155a776df8ac9fe0cccbb473 + pristine_git_object: 54d3a793ba313a3f77970cd197e2d010ae90366c + src/censys_platform/models/tagoperationslist.py: + id: a0fa41e4b4c4 + last_write_checksum: sha1:e9e9a6c2c4dd5e092056a28d6c1412e39b2b9665 + pristine_git_object: 0cac015a6743be817d9dbaca846bd1b945e46666 src/censys_platform/models/tagslist.py: id: 588a61a798c7 last_write_checksum: sha1:e08bd88acd694564805ad32ca0a07a2de17d956b @@ -6060,6 +6384,10 @@ trackedFiles: id: 7047642afcc7 last_write_checksum: sha1:361a09b2e7257704fe6b91f53ce101320b88008a pristine_git_object: f9bd53751d12fc5958eab6a962113ecb29602a3b + src/censys_platform/models/thirdparty.py: + id: 3dc02257dbf6 + last_write_checksum: sha1:888fac849ce93048dcf1020b3277a146ac1b3761 + pristine_git_object: 4a5aa7969740c1d08fcd8ca3650ce65993df506c src/censys_platform/models/threat.py: id: 6e8ab6e20796 last_write_checksum: sha1:ed20a50b6b3c5bc167983cb95a76b075693c6b81 @@ -6284,6 +6612,10 @@ trackedFiles: id: 5ba0c7970383 last_write_checksum: sha1:a94680dfff2f6db79a6f5531809165ce298c7241 pristine_git_object: 96d29986b479a9b37eb132456a48a8fd9313477c + src/censys_platform/models/v3_globaldata_asset_host_enrichmentop.py: + id: 8287b8608cd9 + last_write_checksum: sha1:f496f84e6121a05b483ee9559fc3cdf641b75043 + pristine_git_object: 370a30149f776b1d112a4433806cd589ba1fdd6f src/censys_platform/models/v3_globaldata_asset_host_list_postop.py: id: 642c2e63ff60 last_write_checksum: sha1:ba3b995db93a6b56d4735e373030a7312ba4a6c3 @@ -6344,6 +6676,18 @@ trackedFiles: id: 6455783cd2a8 last_write_checksum: sha1:bee3cce219b7a743b68e1ff56872e6fa6cb30fbe pristine_git_object: fcf1deb9245314fcb1b1fc7faa8e79e6f2ead59f + src/censys_platform/models/v3_tags_bulk_create_assignmentsop.py: + id: 21853c7325ff + last_write_checksum: sha1:5a0ee0e346ee7ab990074e121aa23e9a8d65f4e8 + pristine_git_object: b558272e8001915c10b6435461cffbdeed2132a2 + src/censys_platform/models/v3_tags_bulk_delete_assignmentsop.py: + id: 416ff3b0a922 + last_write_checksum: sha1:7f7ab5bd81143b0802d38632a4bc7435c6267c68 + pristine_git_object: c8b674a0ab0d9c0e0fd9429c7971e2bc983bda05 + src/censys_platform/models/v3_tags_cancel_operationop.py: + id: c9ea2540ff23 + last_write_checksum: sha1:bde43d480058e3be00102be8333256a4e9756b54 + pristine_git_object: b3eccdaa419bc1ba2c5eeb27bb404fd44f7e0249 src/censys_platform/models/v3_tags_create_assignmentop.py: id: fa8a6435565e last_write_checksum: sha1:a2ff23e0951d9e73a7e3a776bd577c06930a9169 @@ -6368,6 +6712,10 @@ trackedFiles: id: 9091a5881c41 last_write_checksum: sha1:8b17d3dbaa07a4b7a078b60fb44085387f06b965 pristine_git_object: e711947faee0a7403d5353ca6f8040aace4c78a2 + src/censys_platform/models/v3_tags_list_operationsop.py: + id: df1df95d0d60 + last_write_checksum: sha1:6f104f1d19b895ac361d4398883af603df0894b5 + pristine_git_object: f26c7f6941ea16c98a5bc8fac782451efef65d7f src/censys_platform/models/v3_tags_list_tagsop.py: id: 0120b0bc7188 last_write_checksum: sha1:dd5d1d63c6b0a8580071915f6b14d670dd40d46e @@ -6472,10 +6820,18 @@ trackedFiles: id: b32a21ffa7f6 last_write_checksum: sha1:10176f6cb141341c2a58bd5abf0b8bcb7cb973e6 pristine_git_object: 7e3df7b17c7916ead098a21b968ff82f61a7826a + src/censys_platform/models/wincecerdisp.py: + id: 0b0fad576baf + last_write_checksum: sha1:7c416453592d47933e7df025a2b8c0bc00e22faa + pristine_git_object: c17379dbec5b9956722a2bdc140527a34c091aa3 src/censys_platform/models/winrm.py: id: aad01f19c66b last_write_checksum: sha1:c2d77e908ac194556f6e428fbf2cd8319fa7b5ff pristine_git_object: 7e62192db12366a389823ead8486a163eb40f385 + src/censys_platform/models/wordpress.py: + id: e6e816c0f619 + last_write_checksum: sha1:422a0c3c1597592ade2f7f822fbdac08e4cece1a + pristine_git_object: 3a4f3f0a3b496b7485d33b9c998ffcffeb4a3a1a src/censys_platform/models/worker.py: id: 04e55a63084e last_write_checksum: sha1:ca5859b6484c11b4cf71c45f6f4ebf1603dc0234 @@ -6518,8 +6874,8 @@ trackedFiles: pristine_git_object: 5db48844a430af6402eb7ffaba0d9fcd30cf0724 src/censys_platform/tags_and_comments.py: id: e32563b3c7a7 - last_write_checksum: sha1:2e6226b0aa0128b1389e0e12f8f120590e3d0d29 - pristine_git_object: 04a46c719dbd23a9806872ebb5fd0197f3eb5f5b + last_write_checksum: sha1:5c7ce1d7448ad793a86d490a4a8b7b2b7af194ab + pristine_git_object: 4052a9c039a1602671d4fb117762a96364432420 src/censys_platform/threat_hunting.py: id: 970de984d111 last_write_checksum: sha1:3a8a8ea41f635cd66413b9437ab4f5a8d1029623 @@ -6530,8 +6886,8 @@ trackedFiles: pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 src/censys_platform/types/base64fileinput.py: id: ccba2556f533 - last_write_checksum: sha1:4780e893d3853b5a6e28d9a6ca3ee102ce0f502d - pristine_git_object: 25fc53989ed497649363f983219fc58705c8bf87 + last_write_checksum: sha1:1522687ae3398374c35710cad993a6e82b5ab99d + pristine_git_object: 862566fe2b1db830276b390e136e65090e5963d2 src/censys_platform/types/basemodel.py: id: 0cf83f7ce28c last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 @@ -6558,12 +6914,12 @@ trackedFiles: pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 src/censys_platform/utils/eventstreaming.py: id: 79888c9b9f71 - last_write_checksum: sha1:cad7e4feff4f1b2824afd0d30f2b1964a604f4dd - pristine_git_object: 1c189bf6fcad7ba90e0ec6d2f36ca7329d33bb99 + last_write_checksum: sha1:7d1dc68f8b48486ab646653aa05cc38752e1f912 + pristine_git_object: a8d4fe5cc88d3c7337339e1b36a61bbf7ca8c4eb src/censys_platform/utils/forms.py: id: e6173af8260d - last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295 - pristine_git_object: f961e76beaf0a8b1fe0dda44754a74eebd3608e7 + last_write_checksum: sha1:a971cdb120ad3d416d296d5d0ad89e4808350a7f + pristine_git_object: fdf0dc9b2a67bca773eefe6b471498cccaa83424 src/censys_platform/utils/headers.py: id: 8b7139bcc5c1 last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935 @@ -6586,8 +6942,8 @@ trackedFiles: pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 src/censys_platform/utils/retries.py: id: d5aceef1f0a1 - last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87 - pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e + last_write_checksum: sha1:3585b891142f30a597fbf7a2f0340700babef8e4 + pristine_git_object: ca7b59efebbbd9545744d0207ef42725c4cc5143 src/censys_platform/utils/security.py: id: 1559cefe0793 last_write_checksum: sha1:c11eef495b6aaa249178c24c796940cc540b7a00 @@ -7712,6 +8068,93 @@ examples: application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} "500": application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + v3-tags-bulk-create-assignments: + speakeasy-default-v3-tags-bulk-create-assignments: + parameters: + path: + tag_id: "1de943e6-02d8-47bb-8655-559621fc968c" + query: + organization_id: "" + requestBody: + application/json: {"query": ""} + responses: + "202": + application/json: {} + "401": + application/json: {"error": {"code": 401, "message": "Access credentials are invalid", "reason": "Access token is not active", "status": "Unauthorized"}} + "403": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + "500": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + v3-tags-bulk-delete-assignments: + speakeasy-default-v3-tags-bulk-delete-assignments: + parameters: + path: + tag_id: "4fb0c28f-5f77-4d94-8d15-c0c621009061" + query: + organization_id: "" + requestBody: + application/json: {} + responses: + "202": + application/json: {} + "401": + application/json: {"error": {"code": 401, "message": "Access credentials are invalid", "reason": "Access token is not active", "status": "Unauthorized"}} + "403": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + "500": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + v3-tags-list-operations: + speakeasy-default-v3-tags-list-operations: + parameters: + path: + tag_id: "123e4567-e89b-12d3-a456-426614174000" + query: + organization_id: "" + page_size: 100 + order_by: "create_time_desc" + responses: + "200": + application/json: {} + "401": + application/json: {"error": {"code": 401, "message": "Access credentials are invalid", "reason": "Access token is not active", "status": "Unauthorized"}} + "403": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + "500": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + v3-tags-cancel-operation: + speakeasy-default-v3-tags-cancel-operation: + parameters: + path: + tag_id: "59da45bf-13dd-4601-8b86-c3af7e33fd9a" + operation_id: "174d4e39-b9c5-4b3f-aa69-5937abd03e40" + query: + organization_id: "" + responses: + "200": + application/json: {} + "401": + application/json: {"error": {"code": 401, "message": "Access credentials are invalid", "reason": "Access token is not active", "status": "Unauthorized"}} + "403": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + "500": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + v3-globaldata-asset-host-enrichment: + speakeasy-default-v3-globaldata-asset-host-enrichment: + parameters: + path: + host_ip: "8.8.8.8" + query: + organization_id: "" + responses: + "200": + application/vnd.censys.api.v3.host-enrichment.v1+json: {} + "401": + application/json: {"error": {"code": 401, "message": "Access credentials are invalid", "reason": "Access token is not active", "status": "Unauthorized"}} + "400": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} + "500": + application/problem+json: {"detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"} examplesVersion: 1.0.2 generatedTests: {} generatedFiles: diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index d088ba41..00692fde 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -29,7 +29,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 0.14.3 + version: 0.14.4 additionalDependencies: dev: {} main: {} @@ -47,6 +47,7 @@ python: description: Python Client SDK Generated by Speakeasy. enableCustomCodeRegions: false enumFormat: enum + errorSchemaValidation: true eventStreamClassNames: async: EventStreamAsync sync: EventStream @@ -87,6 +88,7 @@ python: pytestTimeout: 0 rawResponseHelpers: false responseFormat: flat + responseSchemaValidation: true sseFlatResponse: false templateVersion: v2 useAsyncHooks: false diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 2f4e053e..4d6249a8 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,20 +1,20 @@ -speakeasyVersion: 1.777.1 +speakeasyVersion: 1.785.0 sources: converge-source: sourceNamespace: converge-source - sourceRevisionDigest: sha256:5db2b1f0584d9707b7d1e63346dfa16dc264cbd6c19da9d610538e10b5817ba1 - sourceBlobDigest: sha256:e17252e4a3992c9b8d88e29dd91e829d55d25dfe01cb509155adcb81b2c32ce5 + sourceRevisionDigest: sha256:c0299597218385547460d54eb90b7f13edbd2da8ac2cfab4306f6507faea4c70 + sourceBlobDigest: sha256:69ebf24e1c62904310c52e3378b106fac26cc4ec3559ad3977a04842eb3b7266 tags: - latest - - 1.0.107 + - 1.0.111 targets: censys-sdk-python: source: converge-source sourceNamespace: converge-source - sourceRevisionDigest: sha256:5db2b1f0584d9707b7d1e63346dfa16dc264cbd6c19da9d610538e10b5817ba1 - sourceBlobDigest: sha256:e17252e4a3992c9b8d88e29dd91e829d55d25dfe01cb509155adcb81b2c32ce5 + sourceRevisionDigest: sha256:c0299597218385547460d54eb90b7f13edbd2da8ac2cfab4306f6507faea4c70 + sourceBlobDigest: sha256:69ebf24e1c62904310c52e3378b106fac26cc4ec3559ad3977a04842eb3b7266 codeSamplesNamespace: converge-source-python-code-samples - codeSamplesRevisionDigest: sha256:33499d9fb0def70474649974ed631c43cc7a6d82954bf243aa4fb99b5e9e8914 + codeSamplesRevisionDigest: sha256:10361a9fca5659cd968c3e012040a74b87b0a84537edcd8e157320643a6b793b workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README-PYPI.md b/README-PYPI.md index 3238a087..70d160e6 100644 --- a/README-PYPI.md +++ b/README-PYPI.md @@ -218,6 +218,7 @@ asyncio.run(main()) * [get_certificates_raw](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_certificates_raw) - Retrieve multiple certificates in PEM format * [get_certificate](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_certificate) - Get a certificate * [get_certificate_raw](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_certificate_raw) - Get a certificate in PEM format +* [get_host_enrichment](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_host_enrichment) - Get host enrichment * [get_hosts](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_hosts) - Retrieve multiple hosts * [get_host](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#get_host) - Get a host * [list_services_on_host](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/globaldata/README.md#list_services_on_host) - Get service history for a host @@ -247,7 +248,11 @@ asyncio.run(main()) * [update_tag](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#update_tag) - Update a tag * [list_tag_assignments](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#list_tag_assignments) - List tag assignments * [create_tag_assignment](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#create_tag_assignment) - Create a tag assignment +* [bulk_create_tag_assignments](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#bulk_create_tag_assignments) - Bulk create tag assignments +* [bulk_delete_tag_assignments](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#bulk_delete_tag_assignments) - Bulk delete tag assignments * [delete_tag_assignment](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#delete_tag_assignment) - Delete a tag assignment +* [list_tag_operations](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#list_tag_operations) - List tag operations +* [cancel_tag_operation](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/tagsandcomments/README.md#cancel_tag_operation) - Cancel a tag operation ### [ThreatHunting](https://github.com/censys/censys-sdk-python/blob/master/docs/sdks/threathunting/README.md) diff --git a/README.md b/README.md index 3bbb6fb0..eade3692 100644 --- a/README.md +++ b/README.md @@ -218,6 +218,7 @@ asyncio.run(main()) * [get_certificates_raw](docs/sdks/globaldata/README.md#get_certificates_raw) - Retrieve multiple certificates in PEM format * [get_certificate](docs/sdks/globaldata/README.md#get_certificate) - Get a certificate * [get_certificate_raw](docs/sdks/globaldata/README.md#get_certificate_raw) - Get a certificate in PEM format +* [get_host_enrichment](docs/sdks/globaldata/README.md#get_host_enrichment) - Get host enrichment * [get_hosts](docs/sdks/globaldata/README.md#get_hosts) - Retrieve multiple hosts * [get_host](docs/sdks/globaldata/README.md#get_host) - Get a host * [list_services_on_host](docs/sdks/globaldata/README.md#list_services_on_host) - Get service history for a host @@ -247,7 +248,11 @@ asyncio.run(main()) * [update_tag](docs/sdks/tagsandcomments/README.md#update_tag) - Update a tag * [list_tag_assignments](docs/sdks/tagsandcomments/README.md#list_tag_assignments) - List tag assignments * [create_tag_assignment](docs/sdks/tagsandcomments/README.md#create_tag_assignment) - Create a tag assignment +* [bulk_create_tag_assignments](docs/sdks/tagsandcomments/README.md#bulk_create_tag_assignments) - Bulk create tag assignments +* [bulk_delete_tag_assignments](docs/sdks/tagsandcomments/README.md#bulk_delete_tag_assignments) - Bulk delete tag assignments * [delete_tag_assignment](docs/sdks/tagsandcomments/README.md#delete_tag_assignment) - Delete a tag assignment +* [list_tag_operations](docs/sdks/tagsandcomments/README.md#list_tag_operations) - List tag operations +* [cancel_tag_operation](docs/sdks/tagsandcomments/README.md#cancel_tag_operation) - Cancel a tag operation ### [ThreatHunting](docs/sdks/threathunting/README.md) diff --git a/RELEASES.md b/RELEASES.md index 2a19e0e2..4b81e776 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -316,4 +316,14 @@ Based on: ### Generated - [python v0.14.3] . ### Releases -- [PyPI v0.14.3] https://pypi.org/project/censys-platform/0.14.3 - . \ No newline at end of file +- [PyPI v0.14.3] https://pypi.org/project/censys-platform/0.14.3 - . + +## 2026-06-25 00:59:48 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.785.0 (2.912.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.14.4] . +### Releases +- [PyPI v0.14.4] https://pypi.org/project/censys-platform/0.14.4 - . \ No newline at end of file diff --git a/docs/models/bulkcreatetagassignmentsinputbody.md b/docs/models/bulkcreatetagassignmentsinputbody.md new file mode 100644 index 00000000..a9ea33b7 --- /dev/null +++ b/docs/models/bulkcreatetagassignmentsinputbody.md @@ -0,0 +1,9 @@ +# BulkCreateTagAssignmentsInputBody + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `max_assets` | *Optional[int]* | :heavy_minus_sign: | Optional upper bound on the number of assets to tag in this operation. This is your own limit for this request, separate from your plan's tag asset limit: the effective cap is the smaller of this value, your plan's tag asset limit, and the number of matching results. Omit or set to 0 for no explicit cap. | +| `query` | *str* | :heavy_check_mark: | A CenQL query identifying the assets to tag. | \ No newline at end of file diff --git a/docs/models/bulkdeletetagassignmentsinputbody.md b/docs/models/bulkdeletetagassignmentsinputbody.md new file mode 100644 index 00000000..542a2112 --- /dev/null +++ b/docs/models/bulkdeletetagassignmentsinputbody.md @@ -0,0 +1,9 @@ +# BulkDeleteTagAssignmentsInputBody + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `created_after` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | RFC3339 timestamp. Only delete assignments created after this time. | +| `created_before` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | RFC3339 timestamp. Only delete assignments created before this time. | \ No newline at end of file diff --git a/docs/models/clickhousehttp.md b/docs/models/clickhousehttp.md new file mode 100644 index 00000000..89382b53 --- /dev/null +++ b/docs/models/clickhousehttp.md @@ -0,0 +1,13 @@ +# ClickHouseHTTP + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `databases` | List[*str*] | :heavy_minus_sign: | N/A | +| `databases_exposed` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `error` | [Optional[models.ClickHouseHTTPError]](../models/clickhousehttperror.md) | :heavy_minus_sign: | N/A | +| `timezone` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/clickhousehttperror.md b/docs/models/clickhousehttperror.md new file mode 100644 index 00000000..23227072 --- /dev/null +++ b/docs/models/clickhousehttperror.md @@ -0,0 +1,9 @@ +# ClickHouseHTTPError + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `code` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/clickhousenative.md b/docs/models/clickhousenative.md new file mode 100644 index 00000000..ca519292 --- /dev/null +++ b/docs/models/clickhousenative.md @@ -0,0 +1,16 @@ +# ClickHouseNative + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `error` | [Optional[models.ClickHouseNativeError]](../models/clickhousenativeerror.md) | :heavy_minus_sign: | N/A | +| `revision` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `server_name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `version_major` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `version_minor` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `version_patch` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/clickhousenativeerror.md b/docs/models/clickhousenativeerror.md new file mode 100644 index 00000000..d9c291b5 --- /dev/null +++ b/docs/models/clickhousenativeerror.md @@ -0,0 +1,10 @@ +# ClickHouseNativeError + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/endpointscan.md b/docs/models/endpointscan.md index fd99838b..86448e77 100644 --- a/docs/models/endpointscan.md +++ b/docs/models/endpointscan.md @@ -8,6 +8,7 @@ | `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | | `banner_hash_sha256` | *Optional[str]* | :heavy_minus_sign: | N/A | | `chrome_devtools` | [Optional[models.ChromeDevtools]](../models/chromedevtools.md) | :heavy_minus_sign: | N/A | +| `clickhouse_http` | [Optional[models.ClickHouseHTTP]](../models/clickhousehttp.md) | :heavy_minus_sign: | N/A | | `cobalt_strike` | [Optional[models.CobaltStrike]](../models/cobaltstrike.md) | :heavy_minus_sign: | N/A | | `elasticsearch` | [Optional[models.ElasticSearch]](../models/elasticsearch.md) | :heavy_minus_sign: | N/A | | `endpoint_type` | *Optional[str]* | :heavy_minus_sign: | N/A | @@ -34,4 +35,5 @@ | `scan_time` | *Optional[str]* | :heavy_minus_sign: | N/A | | `screenshots` | List[[models.Screenshot](../models/screenshot.md)] | :heavy_minus_sign: | N/A | | `tls` | [Optional[models.TLS]](../models/tls.md) | :heavy_minus_sign: | N/A | -| `transport_protocol` | [Optional[models.EndpointScanTransportProtocol]](../models/endpointscantransportprotocol.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| `transport_protocol` | [Optional[models.EndpointScanTransportProtocol]](../models/endpointscantransportprotocol.md) | :heavy_minus_sign: | N/A | +| `wordpress` | [Optional[models.Wordpress]](../models/wordpress.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/endpointscanstate.md b/docs/models/endpointscanstate.md index 434ea07b..465932b9 100644 --- a/docs/models/endpointscanstate.md +++ b/docs/models/endpointscanstate.md @@ -8,6 +8,7 @@ | `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | | `banner_hash_sha256` | *Optional[str]* | :heavy_minus_sign: | N/A | | `chrome_devtools` | [Optional[models.ChromeDevtools]](../models/chromedevtools.md) | :heavy_minus_sign: | N/A | +| `clickhouse_http` | [Optional[models.ClickHouseHTTP]](../models/clickhousehttp.md) | :heavy_minus_sign: | N/A | | `cobalt_strike` | [Optional[models.CobaltStrike]](../models/cobaltstrike.md) | :heavy_minus_sign: | N/A | | `elasticsearch` | [Optional[models.ElasticSearch]](../models/elasticsearch.md) | :heavy_minus_sign: | N/A | | `endpoint_type` | *Optional[str]* | :heavy_minus_sign: | N/A | @@ -33,4 +34,5 @@ | `scada_view` | [Optional[models.ScadaView]](../models/scadaview.md) | :heavy_minus_sign: | N/A | | `scan_time` | *Optional[str]* | :heavy_minus_sign: | N/A | | `screenshots` | List[[models.Screenshot](../models/screenshot.md)] | :heavy_minus_sign: | N/A | -| `transport_protocol` | [Optional[models.EndpointScanStateTransportProtocol]](../models/endpointscanstatetransportprotocol.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| `transport_protocol` | [Optional[models.EndpointScanStateTransportProtocol]](../models/endpointscanstatetransportprotocol.md) | :heavy_minus_sign: | N/A | +| `wordpress` | [Optional[models.Wordpress]](../models/wordpress.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/gopher.md b/docs/models/gopher.md new file mode 100644 index 00000000..30748625 --- /dev/null +++ b/docs/models/gopher.md @@ -0,0 +1,10 @@ +# Gopher + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `body` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `items` | List[[models.GopherItem](../models/gopheritem.md)] | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/gopheritem.md b/docs/models/gopheritem.md new file mode 100644 index 00000000..a4581b87 --- /dev/null +++ b/docs/models/gopheritem.md @@ -0,0 +1,12 @@ +# GopherItem + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `display_string` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `hostname` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `item_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `port` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `selector` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/hostenrichment.md b/docs/models/hostenrichment.md new file mode 100644 index 00000000..c36f53d5 --- /dev/null +++ b/docs/models/hostenrichment.md @@ -0,0 +1,20 @@ +# HostEnrichment + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `autonomous_system` | [Optional[models.Routing]](../models/routing.md) | :heavy_minus_sign: | N/A | +| `dns` | [Optional[models.HostDNS]](../models/hostdns.md) | :heavy_minus_sign: | N/A | +| `greynoise` | [Optional[models.Greynoise]](../models/greynoise.md) | :heavy_minus_sign: | N/A | +| `ip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `labels` | List[[models.Label](../models/label.md)] | :heavy_minus_sign: | N/A | +| `location` | [Optional[models.Location]](../models/location.md) | :heavy_minus_sign: | N/A | +| `network` | List[[models.NetworkClassification](../models/networkclassification.md)] | :heavy_minus_sign: | Information about what type of network the host belongs to. | +| `privacy` | List[[models.Privacy](../models/privacy.md)] | :heavy_minus_sign: | Information about privacy services used by the IP, such as VPNs, Proxies, or Tor. | +| `reputation` | [Optional[models.Reputation]](../models/reputation.md) | :heavy_minus_sign: | N/A | +| `service_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `services` | List[[models.HostEnrichmentService](../models/hostenrichmentservice.md)] | :heavy_minus_sign: | N/A | +| `third_party` | [Optional[models.ThirdParty]](../models/thirdparty.md) | :heavy_minus_sign: | N/A | +| `whois` | [Optional[models.Whois]](../models/whois.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/hostenrichmentasset.md b/docs/models/hostenrichmentasset.md new file mode 100644 index 00000000..a5e325ad --- /dev/null +++ b/docs/models/hostenrichmentasset.md @@ -0,0 +1,9 @@ +# HostEnrichmentAsset + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `extensions` | Dict[str, *Any*] | :heavy_check_mark: | N/A | +| `resource` | [models.HostEnrichment](../models/hostenrichment.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/hostenrichmentservice.md b/docs/models/hostenrichmentservice.md new file mode 100644 index 00000000..123892be --- /dev/null +++ b/docs/models/hostenrichmentservice.md @@ -0,0 +1,11 @@ +# HostEnrichmentService + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| `labels` | List[[models.Label](../models/label.md)] | :heavy_minus_sign: | N/A | +| `port` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `threats` | List[[models.Threat](../models/threat.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/httpredirectchainlink.md b/docs/models/httpredirectchainlink.md index a4f6ac2e..89bce4b0 100644 --- a/docs/models/httpredirectchainlink.md +++ b/docs/models/httpredirectchainlink.md @@ -6,6 +6,7 @@ | Field | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | `hostname` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `http_status` | [Optional[models.HTTPRedirectChainLinkHTTPStatus]](../models/httpredirectchainlinkhttpstatus.md) | :heavy_minus_sign: | N/A | | `path` | *Optional[str]* | :heavy_minus_sign: | N/A | | `port` | *Optional[int]* | :heavy_minus_sign: | N/A | | `reason` | *Optional[str]* | :heavy_minus_sign: | N/A | diff --git a/docs/models/httpredirectchainlinkhttpstatus.md b/docs/models/httpredirectchainlinkhttpstatus.md new file mode 100644 index 00000000..34400b2e --- /dev/null +++ b/docs/models/httpredirectchainlinkhttpstatus.md @@ -0,0 +1,9 @@ +# HTTPRedirectChainLinkHTTPStatus + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `code` | *Optional[int]* | :heavy_minus_sign: | A 3-digit integer result code indicating the result of the redirecting response. | +| `reason` | *Optional[str]* | :heavy_minus_sign: | A human-readable phrase describing the status code. | \ No newline at end of file diff --git a/docs/models/malloryai.md b/docs/models/malloryai.md new file mode 100644 index 00000000..07fe8cf7 --- /dev/null +++ b/docs/models/malloryai.md @@ -0,0 +1,16 @@ +# MalloryAI + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `first_seen_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `last_seen_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `observable` | [Optional[models.MalloryAIObservable]](../models/malloryaiobservable.md) | :heavy_minus_sign: | N/A | +| `opinions` | List[[models.MalloryAIOpinion](../models/malloryaiopinion.md)] | :heavy_minus_sign: | N/A | +| `source_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `updated_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `verdict_summary` | [Optional[models.MalloryAIVerdictSummary]](../models/malloryaiverdictsummary.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/malloryaiobservable.md b/docs/models/malloryaiobservable.md new file mode 100644 index 00000000..a6e99a97 --- /dev/null +++ b/docs/models/malloryaiobservable.md @@ -0,0 +1,14 @@ +# MalloryAIObservable + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `attributes` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `updated_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/malloryaiopinion.md b/docs/models/malloryaiopinion.md new file mode 100644 index 00000000..390ecc88 --- /dev/null +++ b/docs/models/malloryaiopinion.md @@ -0,0 +1,19 @@ +# MalloryAIOpinion + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `attributes` | [Optional[models.MalloryAIOpinionAttributes]](../models/malloryaiopinionattributes.md) | :heavy_minus_sign: | N/A | +| `confidence` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `published_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `reference_source_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `reference_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `reference_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `source` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `updated_at` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `verdict` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/malloryaiopinionattributes.md b/docs/models/malloryaiopinionattributes.md new file mode 100644 index 00000000..afc7d03b --- /dev/null +++ b/docs/models/malloryaiopinionattributes.md @@ -0,0 +1,11 @@ +# MalloryAIOpinionAttributes + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `associated_malware` | List[*str*] | :heavy_minus_sign: | N/A | +| `associated_threat_actors` | List[*str*] | :heavy_minus_sign: | N/A | +| `associated_vulnerabilities` | List[*str*] | :heavy_minus_sign: | N/A | +| `tags` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/malloryaiverdictsummary.md b/docs/models/malloryaiverdictsummary.md new file mode 100644 index 00000000..e943926f --- /dev/null +++ b/docs/models/malloryaiverdictsummary.md @@ -0,0 +1,9 @@ +# MalloryAIVerdictSummary + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `malicious` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `suspicious` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/openflow.md b/docs/models/openflow.md new file mode 100644 index 00000000..a4e26eed --- /dev/null +++ b/docs/models/openflow.md @@ -0,0 +1,24 @@ +# Openflow + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `auxiliary_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `bare_hello` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `capabilities` | List[*str*] | :heavy_minus_sign: | N/A | +| `datapath_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `datapath_mac` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `dp_desc` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `hello_elements` | List[[models.OpenflowHelloElement](../models/openflowhelloelement.md)] | :heavy_minus_sign: | N/A | +| `hw_desc` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `mfr_desc` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `n_buffers` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `n_tables` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `peer_role` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `protocol_version` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `protocol_version_raw` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `serial_num` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `sw_desc` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `xid` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/openflowhelloelement.md b/docs/models/openflowhelloelement.md new file mode 100644 index 00000000..ef75d8ab --- /dev/null +++ b/docs/models/openflowhelloelement.md @@ -0,0 +1,9 @@ +# OpenflowHelloElement + + +## Fields + +| Field | Type | Required | Description | +| -------------------- | -------------------- | -------------------- | -------------------- | +| `element_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `supported_versions` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/queryparamstatus.md b/docs/models/queryparamstatus.md new file mode 100644 index 00000000..f080d4f0 --- /dev/null +++ b/docs/models/queryparamstatus.md @@ -0,0 +1,23 @@ +# QueryParamStatus + +Filter by operation status. + +## Example Usage + +```python +from censys_platform.models import QueryParamStatus + +value = QueryParamStatus.PENDING +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `PENDING` | pending | +| `RUNNING` | running | +| `SUCCEEDED` | succeeded | +| `LIMIT_REACHED` | limit_reached | +| `FAILED` | failed | +| `CANCELLED` | cancelled | \ No newline at end of file diff --git a/docs/models/queryparamtype.md b/docs/models/queryparamtype.md new file mode 100644 index 00000000..dff4942a --- /dev/null +++ b/docs/models/queryparamtype.md @@ -0,0 +1,19 @@ +# QueryParamType + +Filter by operation type. + +## Example Usage + +```python +from censys_platform.models import QueryParamType + +value = QueryParamType.BULK_CREATE +``` + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `BULK_CREATE` | bulk_create | +| `BULK_DELETE` | bulk_delete | \ No newline at end of file diff --git a/docs/models/reolinkbaichuan.md b/docs/models/reolinkbaichuan.md new file mode 100644 index 00000000..49fee3b2 --- /dev/null +++ b/docs/models/reolinkbaichuan.md @@ -0,0 +1,14 @@ +# ReolinkBaichuan + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `ai_types_observed` | List[*str*] | :heavy_minus_sign: | N/A | +| `body_length` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `channel_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `channels` | List[[models.ReolinkBaichuanAlarmChannel](../models/reolinkbaichuanalarmchannel.md)] | :heavy_minus_sign: | N/A | +| `command_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `raw_xml` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status_code` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/reolinkbaichuanalarmchannel.md b/docs/models/reolinkbaichuanalarmchannel.md new file mode 100644 index 00000000..4f87702d --- /dev/null +++ b/docs/models/reolinkbaichuanalarmchannel.md @@ -0,0 +1,12 @@ +# ReolinkBaichuanAlarmChannel + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `ai_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `channel_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `recording` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `status` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `timestamp` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/responseenvelopehostenrichmentasset.md b/docs/models/responseenvelopehostenrichmentasset.md new file mode 100644 index 00000000..104bc24b --- /dev/null +++ b/docs/models/responseenvelopehostenrichmentasset.md @@ -0,0 +1,8 @@ +# ResponseEnvelopeHostEnrichmentAsset + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `result` | [Optional[models.HostEnrichmentAsset]](../models/hostenrichmentasset.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/responseenvelopetagoperation.md b/docs/models/responseenvelopetagoperation.md new file mode 100644 index 00000000..7f506835 --- /dev/null +++ b/docs/models/responseenvelopetagoperation.md @@ -0,0 +1,8 @@ +# ResponseEnvelopeTagOperation + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `result` | [Optional[models.TagOperation]](../models/tagoperation.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/responseenvelopetagoperationslist.md b/docs/models/responseenvelopetagoperationslist.md new file mode 100644 index 00000000..0cf8b2b0 --- /dev/null +++ b/docs/models/responseenvelopetagoperationslist.md @@ -0,0 +1,8 @@ +# ResponseEnvelopeTagOperationsList + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `result` | [Optional[models.TagOperationsList]](../models/tagoperationslist.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/rtmp.md b/docs/models/rtmp.md new file mode 100644 index 00000000..d57a5d9f --- /dev/null +++ b/docs/models/rtmp.md @@ -0,0 +1,14 @@ +# Rtmp + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `capabilities` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `mode` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `peer_bandwidth` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `protocol_version` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `server_software` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[models.RtmpConnectStatus]](../models/rtmpconnectstatus.md) | :heavy_minus_sign: | N/A | +| `window_acknowledgement_size` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/rtmpconnectstatus.md b/docs/models/rtmpconnectstatus.md new file mode 100644 index 00000000..1daf9cba --- /dev/null +++ b/docs/models/rtmpconnectstatus.md @@ -0,0 +1,11 @@ +# RtmpConnectStatus + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `code` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `level` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `object_encoding` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/service.md b/docs/models/service.md index 72d9a2d3..7b9e416b 100644 --- a/docs/models/service.md +++ b/docs/models/service.md @@ -18,6 +18,7 @@ | `checkpoint_topology` | [Optional[models.CheckpointTopology]](../models/checkpointtopology.md) | :heavy_minus_sign: | N/A | | `chromecast` | [Optional[models.Chromecast]](../models/chromecast.md) | :heavy_minus_sign: | N/A | | `cisco_ipsla` | [Optional[models.CiscoIpsla]](../models/ciscoipsla.md) | :heavy_minus_sign: | N/A | +| `clickhouse_native` | [Optional[models.ClickHouseNative]](../models/clickhousenative.md) | :heavy_minus_sign: | N/A | | `cmore` | [Optional[models.Cmore]](../models/cmore.md) | :heavy_minus_sign: | N/A | | `coap` | [Optional[models.Coap]](../models/coap.md) | :heavy_minus_sign: | N/A | | `compromises` | List[[models.Risk](../models/risk.md)] | :heavy_minus_sign: | N/A | @@ -46,6 +47,7 @@ | `ftp` | [Optional[models.Ftp]](../models/ftp.md) | :heavy_minus_sign: | N/A | | `gearman` | [Optional[models.Gearman]](../models/gearman.md) | :heavy_minus_sign: | N/A | | `gemini` | [Optional[models.Gemini]](../models/gemini.md) | :heavy_minus_sign: | N/A | +| `gopher` | [Optional[models.Gopher]](../models/gopher.md) | :heavy_minus_sign: | N/A | | `hajime` | [Optional[models.Hajime]](../models/hajime.md) | :heavy_minus_sign: | N/A | | `hardware` | List[[models.Attribute](../models/attribute.md)] | :heavy_minus_sign: | N/A | | `hid_vertx` | [Optional[models.HidVertx]](../models/hidvertx.md) | :heavy_minus_sign: | N/A | @@ -91,6 +93,7 @@ | `onc` | [Optional[models.Onc]](../models/onc.md) | :heavy_minus_sign: | N/A | | `onvif` | [Optional[models.Onvif]](../models/onvif.md) | :heavy_minus_sign: | N/A | | `opc_ua` | [Optional[models.OpcUa]](../models/opcua.md) | :heavy_minus_sign: | N/A | +| `openflow` | [Optional[models.Openflow]](../models/openflow.md) | :heavy_minus_sign: | N/A | | `openvpn` | [Optional[models.Openvpn]](../models/openvpn.md) | :heavy_minus_sign: | N/A | | `openvpn_mgmt` | [Optional[models.OpenvpnMgmt]](../models/openvpnmgmt.md) | :heavy_minus_sign: | N/A | | `operating_systems` | List[[models.Attribute](../models/attribute.md)] | :heavy_minus_sign: | N/A | @@ -110,12 +113,14 @@ | `redis` | [Optional[models.Redis]](../models/redis.md) | :heavy_minus_sign: | N/A | | `redline` | [Optional[models.Redline]](../models/redline.md) | :heavy_minus_sign: | N/A | | `redlion_crimson` | [Optional[models.RedlionCrimson]](../models/redlioncrimson.md) | :heavy_minus_sign: | N/A | +| `reolink_baichuan` | [Optional[models.ReolinkBaichuan]](../models/reolinkbaichuan.md) | :heavy_minus_sign: | N/A | | `representative_info` | [Optional[models.RepresentativeInfo]](../models/representativeinfo.md) | :heavy_minus_sign: | N/A | | `rifatron` | [Optional[models.Rifatron]](../models/rifatron.md) | :heavy_minus_sign: | N/A | | `ripple` | [Optional[models.Ripple]](../models/ripple.md) | :heavy_minus_sign: | N/A | | `rlogin` | [Optional[models.Rlogin]](../models/rlogin.md) | :heavy_minus_sign: | N/A | | `rocketmq` | [Optional[models.Rocketmq]](../models/rocketmq.md) | :heavy_minus_sign: | N/A | | `routeros_api` | [Optional[models.RouterosAPI]](../models/routerosapi.md) | :heavy_minus_sign: | N/A | +| `rtmp` | [Optional[models.Rtmp]](../models/rtmp.md) | :heavy_minus_sign: | N/A | | `rtsp` | [Optional[models.Rtsp]](../models/rtsp.md) | :heavy_minus_sign: | N/A | | `rustdesk_heartbeat` | [Optional[models.RustdeskHeartbeat]](../models/rustdeskheartbeat.md) | :heavy_minus_sign: | N/A | | `rustdesk_relay` | [Optional[models.RustdeskRelay]](../models/rustdeskrelay.md) | :heavy_minus_sign: | N/A | @@ -140,6 +145,7 @@ | `ssh` | [Optional[models.SSH]](../models/ssh.md) | :heavy_minus_sign: | N/A | | `steam` | [Optional[models.Steam]](../models/steam.md) | :heavy_minus_sign: | N/A | | `stun` | [Optional[models.Stun]](../models/stun.md) | :heavy_minus_sign: | N/A | +| `synergy` | [Optional[models.Synergy]](../models/synergy.md) | :heavy_minus_sign: | N/A | | `tacacs_plus` | [Optional[models.TacacsPlus]](../models/tacacsplus.md) | :heavy_minus_sign: | N/A | | `team_viewer` | [Optional[models.TeamViewer]](../models/teamviewer.md) | :heavy_minus_sign: | N/A | | `telnet` | [Optional[models.Telnet]](../models/telnet.md) | :heavy_minus_sign: | N/A | @@ -154,6 +160,7 @@ | `vnc` | [Optional[models.Vnc]](../models/vnc.md) | :heavy_minus_sign: | N/A | | `vulns` | List[[models.Vuln](../models/vuln.md)] | :heavy_minus_sign: | N/A | | `weblogic_t3` | [Optional[models.WeblogicT3]](../models/weblogict3.md) | :heavy_minus_sign: | N/A | +| `wince_cerdisp` | [Optional[models.WinceCerdisp]](../models/wincecerdisp.md) | :heavy_minus_sign: | N/A | | `winrm` | [Optional[models.Winrm]](../models/winrm.md) | :heavy_minus_sign: | N/A | | `ws_discovery` | [Optional[models.WsDiscovery]](../models/wsdiscovery.md) | :heavy_minus_sign: | N/A | | `x11` | [Optional[models.X11]](../models/x11.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/servicescan.md b/docs/models/servicescan.md index cc450cfd..11fe5874 100644 --- a/docs/models/servicescan.md +++ b/docs/models/servicescan.md @@ -16,6 +16,7 @@ | `checkpoint_topology` | [Optional[models.CheckpointTopology]](../models/checkpointtopology.md) | :heavy_minus_sign: | N/A | | `chromecast` | [Optional[models.Chromecast]](../models/chromecast.md) | :heavy_minus_sign: | N/A | | `cisco_ipsla` | [Optional[models.CiscoIpsla]](../models/ciscoipsla.md) | :heavy_minus_sign: | N/A | +| `clickhouse_native` | [Optional[models.ClickHouseNative]](../models/clickhousenative.md) | :heavy_minus_sign: | N/A | | `cmore` | [Optional[models.Cmore]](../models/cmore.md) | :heavy_minus_sign: | N/A | | `coap` | [Optional[models.Coap]](../models/coap.md) | :heavy_minus_sign: | N/A | | `crestron_cp3` | [Optional[models.CrestronCp3]](../models/crestroncp3.md) | :heavy_minus_sign: | N/A | @@ -41,6 +42,7 @@ | `ftp` | [Optional[models.Ftp]](../models/ftp.md) | :heavy_minus_sign: | N/A | | `gearman` | [Optional[models.Gearman]](../models/gearman.md) | :heavy_minus_sign: | N/A | | `gemini` | [Optional[models.Gemini]](../models/gemini.md) | :heavy_minus_sign: | N/A | +| `gopher` | [Optional[models.Gopher]](../models/gopher.md) | :heavy_minus_sign: | N/A | | `hajime` | [Optional[models.Hajime]](../models/hajime.md) | :heavy_minus_sign: | N/A | | `hid_vertx` | [Optional[models.HidVertx]](../models/hidvertx.md) | :heavy_minus_sign: | N/A | | `hikvision` | [Optional[models.Hikvision]](../models/hikvision.md) | :heavy_minus_sign: | N/A | @@ -82,6 +84,7 @@ | `onc` | [Optional[models.Onc]](../models/onc.md) | :heavy_minus_sign: | N/A | | `onvif` | [Optional[models.Onvif]](../models/onvif.md) | :heavy_minus_sign: | N/A | | `opc_ua` | [Optional[models.OpcUa]](../models/opcua.md) | :heavy_minus_sign: | N/A | +| `openflow` | [Optional[models.Openflow]](../models/openflow.md) | :heavy_minus_sign: | N/A | | `openvpn` | [Optional[models.Openvpn]](../models/openvpn.md) | :heavy_minus_sign: | N/A | | `openvpn_mgmt` | [Optional[models.OpenvpnMgmt]](../models/openvpnmgmt.md) | :heavy_minus_sign: | N/A | | `oracle` | [Optional[models.Oracle]](../models/oracle.md) | :heavy_minus_sign: | N/A | @@ -100,12 +103,14 @@ | `redis` | [Optional[models.Redis]](../models/redis.md) | :heavy_minus_sign: | N/A | | `redline` | [Optional[models.Redline]](../models/redline.md) | :heavy_minus_sign: | N/A | | `redlion_crimson` | [Optional[models.RedlionCrimson]](../models/redlioncrimson.md) | :heavy_minus_sign: | N/A | +| `reolink_baichuan` | [Optional[models.ReolinkBaichuan]](../models/reolinkbaichuan.md) | :heavy_minus_sign: | N/A | | `representative_info` | [Optional[models.RepresentativeInfo]](../models/representativeinfo.md) | :heavy_minus_sign: | N/A | | `rifatron` | [Optional[models.Rifatron]](../models/rifatron.md) | :heavy_minus_sign: | N/A | | `ripple` | [Optional[models.Ripple]](../models/ripple.md) | :heavy_minus_sign: | N/A | | `rlogin` | [Optional[models.Rlogin]](../models/rlogin.md) | :heavy_minus_sign: | N/A | | `rocketmq` | [Optional[models.Rocketmq]](../models/rocketmq.md) | :heavy_minus_sign: | N/A | | `routeros_api` | [Optional[models.RouterosAPI]](../models/routerosapi.md) | :heavy_minus_sign: | N/A | +| `rtmp` | [Optional[models.Rtmp]](../models/rtmp.md) | :heavy_minus_sign: | N/A | | `rtsp` | [Optional[models.Rtsp]](../models/rtsp.md) | :heavy_minus_sign: | N/A | | `rustdesk_heartbeat` | [Optional[models.RustdeskHeartbeat]](../models/rustdeskheartbeat.md) | :heavy_minus_sign: | N/A | | `rustdesk_relay` | [Optional[models.RustdeskRelay]](../models/rustdeskrelay.md) | :heavy_minus_sign: | N/A | @@ -129,6 +134,7 @@ | `ssh` | [Optional[models.SSH]](../models/ssh.md) | :heavy_minus_sign: | N/A | | `steam` | [Optional[models.Steam]](../models/steam.md) | :heavy_minus_sign: | N/A | | `stun` | [Optional[models.Stun]](../models/stun.md) | :heavy_minus_sign: | N/A | +| `synergy` | [Optional[models.Synergy]](../models/synergy.md) | :heavy_minus_sign: | N/A | | `tacacs_plus` | [Optional[models.TacacsPlus]](../models/tacacsplus.md) | :heavy_minus_sign: | N/A | | `team_viewer` | [Optional[models.TeamViewer]](../models/teamviewer.md) | :heavy_minus_sign: | N/A | | `telnet` | [Optional[models.Telnet]](../models/telnet.md) | :heavy_minus_sign: | N/A | @@ -141,6 +147,7 @@ | `ventrilo` | [Optional[models.Ventrilo]](../models/ventrilo.md) | :heavy_minus_sign: | N/A | | `vnc` | [Optional[models.Vnc]](../models/vnc.md) | :heavy_minus_sign: | N/A | | `weblogic_t3` | [Optional[models.WeblogicT3]](../models/weblogict3.md) | :heavy_minus_sign: | N/A | +| `wince_cerdisp` | [Optional[models.WinceCerdisp]](../models/wincecerdisp.md) | :heavy_minus_sign: | N/A | | `winrm` | [Optional[models.Winrm]](../models/winrm.md) | :heavy_minus_sign: | N/A | | `ws_discovery` | [Optional[models.WsDiscovery]](../models/wsdiscovery.md) | :heavy_minus_sign: | N/A | | `x11` | [Optional[models.X11]](../models/x11.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/synergy.md b/docs/models/synergy.md new file mode 100644 index 00000000..43f2b996 --- /dev/null +++ b/docs/models/synergy.md @@ -0,0 +1,10 @@ +# Synergy + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `protocol_major` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `protocol_minor` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `protocol_version` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/tagoperation.md b/docs/models/tagoperation.md new file mode 100644 index 00000000..4254effa --- /dev/null +++ b/docs/models/tagoperation.md @@ -0,0 +1,20 @@ +# TagOperation + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | RFC3339 timestamp when the operation was created. | +| `ended_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | RFC3339 timestamp when the operation completed. Omitted while the operation is still in progress. | +| `error_message` | *Optional[str]* | :heavy_minus_sign: | Failure detail. Only set when the operation failed. | +| `id` | *str* | :heavy_check_mark: | The unique ID of the operation. | +| `processed_count` | *int* | :heavy_check_mark: | The number of assets that have been processed so far. | +| `query` | *Optional[str]* | :heavy_minus_sign: | The CenQL query used to identify the assets to tag. Only set for bulk create operations. | +| `status` | [models.TagOperationStatus](../models/tagoperationstatus.md) | :heavy_check_mark: | The current status of the operation. | +| `status_message` | *Optional[str]* | :heavy_minus_sign: | A human-readable explanation of the operation's outcome, set once the operation finishes — for example, how many assets were assigned, or that the tag's plan asset limit was reached. For failed operations it mirrors error_message. | +| `successful_count` | *int* | :heavy_check_mark: | The number of assets that have been successfully processed so far. | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag the operation applies to. | +| `tag_name` | *str* | :heavy_check_mark: | Snapshot of the tag's display name at the time the operation was created. | +| `total_count` | *int* | :heavy_check_mark: | The total number of assets the operation will process. For bulk create operations this is an approximate value set at the start; for bulk delete operations it is set at completion. | +| `type` | [models.TagOperationType](../models/tagoperationtype.md) | :heavy_check_mark: | Whether the operation creates or deletes tag assignments. | \ No newline at end of file diff --git a/docs/models/tagoperationslist.md b/docs/models/tagoperationslist.md new file mode 100644 index 00000000..c0178c33 --- /dev/null +++ b/docs/models/tagoperationslist.md @@ -0,0 +1,10 @@ +# TagOperationsList + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `next_page_token` | *Optional[str]* | :heavy_minus_sign: | Token to retrieve the next page of results. Omitted when there are no more results. | +| `operations` | List[[models.TagOperation](../models/tagoperation.md)] | :heavy_check_mark: | The list of tag operations. | +| `total_size` | *int* | :heavy_check_mark: | Total number of operations matching the filters. | \ No newline at end of file diff --git a/docs/models/tagoperationstatus.md b/docs/models/tagoperationstatus.md new file mode 100644 index 00000000..9f46718f --- /dev/null +++ b/docs/models/tagoperationstatus.md @@ -0,0 +1,25 @@ +# TagOperationStatus + +The current status of the operation. + +## Example Usage + +```python +from censys_platform.models import TagOperationStatus + +value = TagOperationStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `PENDING` | pending | +| `RUNNING` | running | +| `SUCCEEDED` | succeeded | +| `LIMIT_REACHED` | limit_reached | +| `FAILED` | failed | +| `CANCELLED` | cancelled | \ No newline at end of file diff --git a/docs/models/tagoperationtype.md b/docs/models/tagoperationtype.md new file mode 100644 index 00000000..ea2d3fef --- /dev/null +++ b/docs/models/tagoperationtype.md @@ -0,0 +1,21 @@ +# TagOperationType + +Whether the operation creates or deletes tag assignments. + +## Example Usage + +```python +from censys_platform.models import TagOperationType + +value = TagOperationType.BULK_CREATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `BULK_CREATE` | bulk_create | +| `BULK_DELETE` | bulk_delete | \ No newline at end of file diff --git a/docs/models/thirdparty.md b/docs/models/thirdparty.md new file mode 100644 index 00000000..e005a995 --- /dev/null +++ b/docs/models/thirdparty.md @@ -0,0 +1,8 @@ +# ThirdParty + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `mallory` | List[[models.MalloryAI](../models/malloryai.md)] | :heavy_minus_sign: | Threat intelligence records from MalloryAI. | \ No newline at end of file diff --git a/docs/models/v3globaldataassethostenrichmentglobals.md b/docs/models/v3globaldataassethostenrichmentglobals.md new file mode 100644 index 00000000..693fc687 --- /dev/null +++ b/docs/models/v3globaldataassethostenrichmentglobals.md @@ -0,0 +1,8 @@ +# V3GlobaldataAssetHostEnrichmentGlobals + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/v3globaldataassethostenrichmentrequest.md b/docs/models/v3globaldataassethostenrichmentrequest.md new file mode 100644 index 00000000..20cfbafe --- /dev/null +++ b/docs/models/v3globaldataassethostenrichmentrequest.md @@ -0,0 +1,9 @@ +# V3GlobaldataAssetHostEnrichmentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | | +| `host_ip` | *str* | :heavy_check_mark: | The IP address of a host. | 8.8.8.8 | \ No newline at end of file diff --git a/docs/models/v3globaldataassethostenrichmentresponse.md b/docs/models/v3globaldataassethostenrichmentresponse.md new file mode 100644 index 00000000..03983d51 --- /dev/null +++ b/docs/models/v3globaldataassethostenrichmentresponse.md @@ -0,0 +1,9 @@ +# V3GlobaldataAssetHostEnrichmentResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.ResponseEnvelopeHostEnrichmentAsset](../models/responseenvelopehostenrichmentasset.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkcreateassignmentsglobals.md b/docs/models/v3tagsbulkcreateassignmentsglobals.md new file mode 100644 index 00000000..35e6d49a --- /dev/null +++ b/docs/models/v3tagsbulkcreateassignmentsglobals.md @@ -0,0 +1,8 @@ +# V3TagsBulkCreateAssignmentsGlobals + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkcreateassignmentsrequest.md b/docs/models/v3tagsbulkcreateassignmentsrequest.md new file mode 100644 index 00000000..7004fdd5 --- /dev/null +++ b/docs/models/v3tagsbulkcreateassignmentsrequest.md @@ -0,0 +1,10 @@ +# V3TagsBulkCreateAssignmentsRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag to assign. | +| `bulk_create_tag_assignments_input_body` | [models.BulkCreateTagAssignmentsInputBody](../models/bulkcreatetagassignmentsinputbody.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkcreateassignmentsresponse.md b/docs/models/v3tagsbulkcreateassignmentsresponse.md new file mode 100644 index 00000000..9eee0558 --- /dev/null +++ b/docs/models/v3tagsbulkcreateassignmentsresponse.md @@ -0,0 +1,9 @@ +# V3TagsBulkCreateAssignmentsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.ResponseEnvelopeTagOperation](../models/responseenvelopetagoperation.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkdeleteassignmentsglobals.md b/docs/models/v3tagsbulkdeleteassignmentsglobals.md new file mode 100644 index 00000000..d060e9da --- /dev/null +++ b/docs/models/v3tagsbulkdeleteassignmentsglobals.md @@ -0,0 +1,8 @@ +# V3TagsBulkDeleteAssignmentsGlobals + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkdeleteassignmentsrequest.md b/docs/models/v3tagsbulkdeleteassignmentsrequest.md new file mode 100644 index 00000000..c2b9128b --- /dev/null +++ b/docs/models/v3tagsbulkdeleteassignmentsrequest.md @@ -0,0 +1,10 @@ +# V3TagsBulkDeleteAssignmentsRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag whose assignments to delete. | +| `bulk_delete_tag_assignments_input_body` | [models.BulkDeleteTagAssignmentsInputBody](../models/bulkdeletetagassignmentsinputbody.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagsbulkdeleteassignmentsresponse.md b/docs/models/v3tagsbulkdeleteassignmentsresponse.md new file mode 100644 index 00000000..15a94be9 --- /dev/null +++ b/docs/models/v3tagsbulkdeleteassignmentsresponse.md @@ -0,0 +1,9 @@ +# V3TagsBulkDeleteAssignmentsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.ResponseEnvelopeTagOperation](../models/responseenvelopetagoperation.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagscanceloperationglobals.md b/docs/models/v3tagscanceloperationglobals.md new file mode 100644 index 00000000..e7f7a796 --- /dev/null +++ b/docs/models/v3tagscanceloperationglobals.md @@ -0,0 +1,8 @@ +# V3TagsCancelOperationGlobals + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagscanceloperationrequest.md b/docs/models/v3tagscanceloperationrequest.md new file mode 100644 index 00000000..bd09043e --- /dev/null +++ b/docs/models/v3tagscanceloperationrequest.md @@ -0,0 +1,10 @@ +# V3TagsCancelOperationRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag the operation belongs to. | +| `operation_id` | *str* | :heavy_check_mark: | The ID of the operation to cancel. | \ No newline at end of file diff --git a/docs/models/v3tagscanceloperationresponse.md b/docs/models/v3tagscanceloperationresponse.md new file mode 100644 index 00000000..b8209ece --- /dev/null +++ b/docs/models/v3tagscanceloperationresponse.md @@ -0,0 +1,9 @@ +# V3TagsCancelOperationResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.ResponseEnvelopeTagOperation](../models/responseenvelopetagoperation.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagslistoperationsglobals.md b/docs/models/v3tagslistoperationsglobals.md new file mode 100644 index 00000000..7146b18a --- /dev/null +++ b/docs/models/v3tagslistoperationsglobals.md @@ -0,0 +1,8 @@ +# V3TagsListOperationsGlobals + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/v3tagslistoperationsqueryparamorderby.md b/docs/models/v3tagslistoperationsqueryparamorderby.md new file mode 100644 index 00000000..b033fadf --- /dev/null +++ b/docs/models/v3tagslistoperationsqueryparamorderby.md @@ -0,0 +1,19 @@ +# V3TagsListOperationsQueryParamOrderBy + +Sort order. Supported values: create_time_asc, create_time_desc. + +## Example Usage + +```python +from censys_platform.models import V3TagsListOperationsQueryParamOrderBy + +value = V3TagsListOperationsQueryParamOrderBy.CREATE_TIME_ASC +``` + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `CREATE_TIME_ASC` | create_time_asc | +| `CREATE_TIME_DESC` | create_time_desc | \ No newline at end of file diff --git a/docs/models/v3tagslistoperationsrequest.md b/docs/models/v3tagslistoperationsrequest.md new file mode 100644 index 00000000..7686683c --- /dev/null +++ b/docs/models/v3tagslistoperationsrequest.md @@ -0,0 +1,14 @@ +# V3TagsListOperationsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag whose operations to list, or `-` to list operations across all tags in your organization. | **Example 1:** 123e4567-e89b-12d3-a456-426614174000
**Example 2:** - | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Number of operations to return per page. | | +| `page_token` | *Optional[str]* | :heavy_minus_sign: | Pagination token from a previous response to retrieve the next page of results. | | +| `order_by` | [Optional[models.V3TagsListOperationsQueryParamOrderBy]](../models/v3tagslistoperationsqueryparamorderby.md) | :heavy_minus_sign: | Sort order. Supported values: create_time_asc, create_time_desc. | | +| `type` | [Optional[models.QueryParamType]](../models/queryparamtype.md) | :heavy_minus_sign: | Filter by operation type. | | +| `status` | [Optional[models.QueryParamStatus]](../models/queryparamstatus.md) | :heavy_minus_sign: | Filter by operation status. | | \ No newline at end of file diff --git a/docs/models/v3tagslistoperationsresponse.md b/docs/models/v3tagslistoperationsresponse.md new file mode 100644 index 00000000..1faf2bee --- /dev/null +++ b/docs/models/v3tagslistoperationsresponse.md @@ -0,0 +1,9 @@ +# V3TagsListOperationsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.ResponseEnvelopeTagOperationsList](../models/responseenvelopetagoperationslist.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/wincecerdisp.md b/docs/models/wincecerdisp.md new file mode 100644 index 00000000..ae284fac --- /dev/null +++ b/docs/models/wincecerdisp.md @@ -0,0 +1,15 @@ +# WinceCerdisp + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `color_depth_bpp` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `device_family` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `device_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `flags` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `manufacturer` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `screen_height` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `screen_width` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `selector` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/wordpress.md b/docs/models/wordpress.md new file mode 100644 index 00000000..f3477c24 --- /dev/null +++ b/docs/models/wordpress.md @@ -0,0 +1,13 @@ +# Wordpress + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `gmt_offset` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `home` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `namespaces` | List[*str*] | :heavy_minus_sign: | N/A | +| `timezone_string` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdks/globaldata/README.md b/docs/sdks/globaldata/README.md index b1095525..4412fe37 100644 --- a/docs/sdks/globaldata/README.md +++ b/docs/sdks/globaldata/README.md @@ -10,6 +10,7 @@ Endpoints related to the Global Data product * [get_certificates_raw](#get_certificates_raw) - Retrieve multiple certificates in PEM format * [get_certificate](#get_certificate) - Get a certificate * [get_certificate_raw](#get_certificate_raw) - Get a certificate in PEM format +* [get_host_enrichment](#get_host_enrichment) - Get host enrichment * [get_hosts](#get_hosts) - Retrieve multiple hosts * [get_host](#get_host) - Get a host * [list_services_on_host](#list_services_on_host) - Get service history for a host @@ -210,6 +211,50 @@ with SDK( | models.ErrorModel | 500 | application/problem+json | | models.SDKError | 4XX, 5XX | \*/\* | +## get_host_enrichment + +Retrieve enrichment data for a single host, optimized for high-volume SOC enrichment use cases. A host IP is its IP address. + +### Example Usage + + +```python +from censys_platform import SDK + + +with SDK( + organization_id="11111111-2222-3333-4444-555555555555", + personal_access_token="", +) as sdk: + + res = sdk.global_data.get_host_enrichment(host_ip="8.8.8.8") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host_ip` | *str* | :heavy_check_mark: | The IP address of a host. | 8.8.8.8 | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.V3GlobaldataAssetHostEnrichmentResponse](../../models/v3globaldataassethostenrichmentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| models.AuthenticationError | 401 | application/json | +| models.ErrorModel | 400, 403, 404, 409, 429 | application/problem+json | +| models.ErrorModel | 500 | application/problem+json | +| models.SDKError | 4XX, 5XX | \*/\* | + ## get_hosts Retrieve information about multiple hosts. You can retrieve up to 100 hosts per call. A host ID is its IP address. diff --git a/docs/sdks/tagsandcomments/README.md b/docs/sdks/tagsandcomments/README.md index c142ec30..fe1141a7 100644 --- a/docs/sdks/tagsandcomments/README.md +++ b/docs/sdks/tagsandcomments/README.md @@ -17,7 +17,11 @@ Endpoints related to asset tagging and commenting * [update_tag](#update_tag) - Update a tag * [list_tag_assignments](#list_tag_assignments) - List tag assignments * [create_tag_assignment](#create_tag_assignment) - Create a tag assignment +* [bulk_create_tag_assignments](#bulk_create_tag_assignments) - Bulk create tag assignments +* [bulk_delete_tag_assignments](#bulk_delete_tag_assignments) - Bulk delete tag assignments * [delete_tag_assignment](#delete_tag_assignment) - Delete a tag assignment +* [list_tag_operations](#list_tag_operations) - List tag operations +* [cancel_tag_operation](#cancel_tag_operation) - Cancel a tag operation ## list_comments @@ -517,6 +521,98 @@ with SDK( | models.ErrorModel | 500 | application/problem+json | | models.SDKError | 4XX, 5XX | \*/\* | +## bulk_create_tag_assignments + +Start a long-running operation that assigns a tag to every asset matching a CenQL query. The operation runs asynchronously; use the returned operation to track its progress.

A tag can hold a limited number of asset assignments, and the limit depends on your plan. If the operation reaches that limit before every matching asset is tagged, it finishes with status `limit_reached`.

This endpoint does not cost any credits to execute. + +### Example Usage + + +```python +from censys_platform import SDK + + +with SDK( + organization_id="11111111-2222-3333-4444-555555555555", + personal_access_token="", +) as sdk: + + res = sdk.tags_and_comments.bulk_create_tag_assignments(tag_id="1de943e6-02d8-47bb-8655-559621fc968c", bulk_create_tag_assignments_input_body={ + "query": "", + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag to assign. | +| `bulk_create_tag_assignments_input_body` | [models.BulkCreateTagAssignmentsInputBody](../../models/bulkcreatetagassignmentsinputbody.md) | :heavy_check_mark: | N/A | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.V3TagsBulkCreateAssignmentsResponse](../../models/v3tagsbulkcreateassignmentsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| models.AuthenticationError | 401 | application/json | +| models.ErrorModel | 403, 404, 409, 422 | application/problem+json | +| models.ErrorModel | 500 | application/problem+json | +| models.SDKError | 4XX, 5XX | \*/\* | + +## bulk_delete_tag_assignments + +Start a long-running operation that removes a tag from its assigned assets, optionally restricted to a creation-time window. The operation runs asynchronously; use the returned operation to track its progress.

This endpoint does not cost any credits to execute. + +### Example Usage + + +```python +from censys_platform import SDK + + +with SDK( + organization_id="11111111-2222-3333-4444-555555555555", + personal_access_token="", +) as sdk: + + res = sdk.tags_and_comments.bulk_delete_tag_assignments(tag_id="4fb0c28f-5f77-4d94-8d15-c0c621009061", bulk_delete_tag_assignments_input_body={}) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag whose assignments to delete. | +| `bulk_delete_tag_assignments_input_body` | [models.BulkDeleteTagAssignmentsInputBody](../../models/bulkdeletetagassignmentsinputbody.md) | :heavy_check_mark: | N/A | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.V3TagsBulkDeleteAssignmentsResponse](../../models/v3tagsbulkdeleteassignmentsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| models.AuthenticationError | 401 | application/json | +| models.ErrorModel | 403, 404, 409, 422 | application/problem+json | +| models.ErrorModel | 500 | application/problem+json | +| models.SDKError | 4XX, 5XX | \*/\* | + ## delete_tag_assignment Remove a tag assignment from an asset. This action is permanent and cannot be undone. Removing an assignment only detaches the tag from the specified asset; the tag itself is not deleted. Only the tag's creator or an organization admin can delete an assignment for a `private` tag. Assignments for `shared` tags can be deleted by any organization member.

This endpoint does not cost any credits to execute. @@ -560,4 +656,94 @@ with SDK( | models.AuthenticationError | 401 | application/json | | models.ErrorModel | 403, 404, 422 | application/problem+json | | models.ErrorModel | 500 | application/problem+json | +| models.SDKError | 4XX, 5XX | \*/\* | + +## list_tag_operations + +Retrieve a paginated list of bulk tag operations. Provide a tag ID in the path to scope the listing to a single tag, or `-` to list operations across all tags in your organization. Use query parameters to filter by type or status.

This endpoint does not cost any credits to execute. + +### Example Usage + + +```python +from censys_platform import SDK + + +with SDK( + organization_id="11111111-2222-3333-4444-555555555555", + personal_access_token="", +) as sdk: + + res = sdk.tags_and_comments.list_tag_operations(request={ + "tag_id": "123e4567-e89b-12d3-a456-426614174000", + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [models.V3TagsListOperationsRequest](../../models/v3tagslistoperationsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.V3TagsListOperationsResponse](../../models/v3tagslistoperationsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| models.AuthenticationError | 401 | application/json | +| models.ErrorModel | 403, 409, 422 | application/problem+json | +| models.ErrorModel | 500 | application/problem+json | +| models.SDKError | 4XX, 5XX | \*/\* | + +## cancel_tag_operation + +Request cancellation of an in-progress bulk tag operation. Cancellation is cooperative: the operation finishes the page it is currently processing, then stops. Work already committed before cancellation is preserved.

Cancellation is not a rollback — it stops further work but does not remove assignments the operation already created. To remove assignments, use the bulk-delete endpoint. An operation that has already finished cannot be cancelled.

This endpoint does not cost any credits to execute. + +### Example Usage + + +```python +from censys_platform import SDK + + +with SDK( + organization_id="11111111-2222-3333-4444-555555555555", + personal_access_token="", +) as sdk: + + res = sdk.tags_and_comments.cancel_tag_operation(tag_id="59da45bf-13dd-4601-8b86-c3af7e33fd9a", operation_id="174d4e39-b9c5-4b3f-aa69-5937abd03e40") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tag_id` | *str* | :heavy_check_mark: | The ID of the tag the operation belongs to. | +| `operation_id` | *str* | :heavy_check_mark: | The ID of the operation to cancel. | +| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.V3TagsCancelOperationResponse](../../models/v3tagscanceloperationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------- | -------------------------- | -------------------------- | +| models.AuthenticationError | 401 | application/json | +| models.ErrorModel | 403, 404, 409, 422 | application/problem+json | +| models.ErrorModel | 500 | application/problem+json | | models.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index a928e435..242c34a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "censys-platform" -version = "0.14.3" +version = "0.14.4" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" diff --git a/src/censys_platform/_version.py b/src/censys_platform/_version.py index 22057bc0..e354b14e 100644 --- a/src/censys_platform/_version.py +++ b/src/censys_platform/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "censys-platform" -__version__: str = "0.14.3" -__openapi_doc_version__: str = "1.0.107" -__gen_version__: str = "2.903.2" -__user_agent__: str = "speakeasy-sdk/python 0.14.3 2.903.2 1.0.107 censys-platform" +__version__: str = "0.14.4" +__openapi_doc_version__: str = "1.0.111" +__gen_version__: str = "2.912.1" +__user_agent__: str = "speakeasy-sdk/python 0.14.4 2.912.1 1.0.111 censys-platform" try: if __package__ is not None: diff --git a/src/censys_platform/global_data.py b/src/censys_platform/global_data.py index 2bee92e4..ca06df28 100644 --- a/src/censys_platform/global_data.py +++ b/src/censys_platform/global_data.py @@ -936,6 +936,224 @@ async def get_certificate_raw_async( http_res_text = await utils.stream_to_text_async(http_res) raise models.SDKError("Unexpected response received", http_res, http_res_text) + def get_host_enrichment( + self, + *, + host_ip: str, + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3GlobaldataAssetHostEnrichmentResponse: + r"""Get host enrichment + + Retrieve enrichment data for a single host, optimized for high-volume SOC enrichment use cases. A host IP is its IP address. + + :param host_ip: The IP address of a host. + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3GlobaldataAssetHostEnrichmentRequest( + organization_id=organization_id, + host_ip=host_ip, + ) + + req = self._build_request( + method="GET", + path="/v3/global/asset/enrichment/host/{host_ip}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/vnd.censys.api.v3.host-enrichment.v1+json", + http_headers=http_headers, + _globals=models.V3GlobaldataAssetHostEnrichmentGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-globaldata-asset-host-enrichment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response( + http_res, "200", "application/vnd.censys.api.v3.host-enrichment.v1+json" + ): + return models.V3GlobaldataAssetHostEnrichmentResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeHostEnrichmentAsset, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["400", "403", "404", "409", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + async def get_host_enrichment_async( + self, + *, + host_ip: str, + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3GlobaldataAssetHostEnrichmentResponse: + r"""Get host enrichment + + Retrieve enrichment data for a single host, optimized for high-volume SOC enrichment use cases. A host IP is its IP address. + + :param host_ip: The IP address of a host. + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3GlobaldataAssetHostEnrichmentRequest( + organization_id=organization_id, + host_ip=host_ip, + ) + + req = self._build_request_async( + method="GET", + path="/v3/global/asset/enrichment/host/{host_ip}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/vnd.censys.api.v3.host-enrichment.v1+json", + http_headers=http_headers, + _globals=models.V3GlobaldataAssetHostEnrichmentGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-globaldata-asset-host-enrichment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response( + http_res, "200", "application/vnd.censys.api.v3.host-enrichment.v1+json" + ): + return models.V3GlobaldataAssetHostEnrichmentResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeHostEnrichmentAsset, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["400", "403", "404", "409", "429"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + def get_hosts( self, *, diff --git a/src/censys_platform/models/__init__.py b/src/censys_platform/models/__init__.py index 7815035b..fc8f903b 100644 --- a/src/censys_platform/models/__init__.py +++ b/src/censys_platform/models/__init__.py @@ -45,6 +45,14 @@ from .autoreplenishconfig import AutoReplenishConfig, AutoReplenishConfigTypedDict from .bacnet import Bacnet, BacnetTypedDict from .basicconstraints import BasicConstraints, BasicConstraintsTypedDict + from .bulkcreatetagassignmentsinputbody import ( + BulkCreateTagAssignmentsInputBody, + BulkCreateTagAssignmentsInputBodyTypedDict, + ) + from .bulkdeletetagassignmentsinputbody import ( + BulkDeleteTagAssignmentsInputBody, + BulkDeleteTagAssignmentsInputBodyTypedDict, + ) from .cabforganizationid import CabfOrganizationID, CabfOrganizationIDTypedDict from .capabilities import Capabilities, CapabilitiesTypedDict from .censeyejob import CenseyeJob, CenseyeJobTypedDict, State @@ -107,6 +115,13 @@ CiscoIpslaMeasureResponse, CiscoIpslaMeasureResponseTypedDict, ) + from .clickhousehttp import ClickHouseHTTP, ClickHouseHTTPTypedDict + from .clickhousehttp_error import ClickHouseHTTPError, ClickHouseHTTPErrorTypedDict + from .clickhousenative import ClickHouseNative, ClickHouseNativeTypedDict + from .clickhousenative_error import ( + ClickHouseNativeError, + ClickHouseNativeErrorTypedDict, + ) from .cmore import Cmore, CmoreTypedDict from .coap import Coap, CoapTypedDict from .cobaltstrike import CobaltStrike, CobaltStrikeTypedDict @@ -448,6 +463,8 @@ from .gemini import Gemini, GeminiTypedDict from .generalnames import GeneralNames, GeneralNamesTypedDict from .generalsubtreeip import GeneralSubtreeIP, GeneralSubtreeIPTypedDict + from .gopher import Gopher, GopherTypedDict + from .gopher_item import GopherItem, GopherItemTypedDict from .graphql import Graphql, GraphqlTypedDict from .greynoise import Greynoise, GreynoiseTypedDict from .greynoise_tag import GreynoiseTag, GreynoiseTagTypedDict @@ -475,6 +492,12 @@ HostDNSReverseResolution, HostDNSReverseResolutionTypedDict, ) + from .hostenrichment import HostEnrichment, HostEnrichmentTypedDict + from .hostenrichmentasset import HostEnrichmentAsset, HostEnrichmentAssetTypedDict + from .hostenrichmentservice import ( + HostEnrichmentService, + HostEnrichmentServiceTypedDict, + ) from .hostobservationrange import ( HostObservationRange, HostObservationRangeTypedDict, @@ -496,6 +519,10 @@ HTTPRedirectChainLinkTransportProtocol, HTTPRedirectChainLinkTypedDict, ) + from .http_redirectchainlink_httpstatus import ( + HTTPRedirectChainLinkHTTPStatus, + HTTPRedirectChainLinkHTTPStatusTypedDict, + ) from .http_repeatedheaders import HTTPRepeatedHeaders, HTTPRepeatedHeadersTypedDict from .ibmnje import Ibmnje, IbmnjeTypedDict from .icap import Icap, IcapTypedDict @@ -610,6 +637,17 @@ from .locationupdated import LocationUpdated, LocationUpdatedTypedDict from .lpd import Lpd, LpdTypedDict from .lpdmessage import LpdMessage, LpdMessageTypedDict + from .malloryai import MalloryAI, MalloryAITypedDict + from .malloryai_observable import MalloryAIObservable, MalloryAIObservableTypedDict + from .malloryai_opinion import MalloryAIOpinion, MalloryAIOpinionTypedDict + from .malloryai_opinion_attributes import ( + MalloryAIOpinionAttributes, + MalloryAIOpinionAttributesTypedDict, + ) + from .malloryai_verdictsummary import ( + MalloryAIVerdictSummary, + MalloryAIVerdictSummaryTypedDict, + ) from .matchedservice import ( MatchedService, MatchedServiceTypedDict, @@ -735,6 +773,11 @@ ) from .opendirectory import OpenDirectory, OpenDirectoryTypedDict from .opendirectory_file import OpenDirectoryFile, OpenDirectoryFileTypedDict + from .openflow import Openflow, OpenflowTypedDict + from .openflow_helloelement import ( + OpenflowHelloElement, + OpenflowHelloElementTypedDict, + ) from .openvpn import Openvpn, OpenvpnTypedDict from .openvpnmgmt import OpenvpnMgmt, OpenvpnMgmtTypedDict from .oracle import Oracle, OracleTypedDict @@ -854,6 +897,11 @@ from .redlioncrimson import RedlionCrimson, RedlionCrimsonTypedDict from .redlionweb import RedlionWeb, RedlionWebTypedDict from .reject import Reject, RejectType, RejectTypedDict + from .reolinkbaichuan import ReolinkBaichuan, ReolinkBaichuanTypedDict + from .reolinkbaichuan_alarmchannel import ( + ReolinkBaichuanAlarmChannel, + ReolinkBaichuanAlarmChannelTypedDict, + ) from .replaycapabilities import ReplayCapabilities, ReplayCapabilitiesTypedDict from .representativeinfo import ( RepresentativeInfo, @@ -931,6 +979,10 @@ ResponseEnvelopeHostAsset, ResponseEnvelopeHostAssetTypedDict, ) + from .responseenvelopehostenrichmentasset import ( + ResponseEnvelopeHostEnrichmentAsset, + ResponseEnvelopeHostEnrichmentAssetTypedDict, + ) from .responseenvelopehostobservationresponse import ( ResponseEnvelopeHostObservationResponse, ResponseEnvelopeHostObservationResponseTypedDict, @@ -996,6 +1048,14 @@ ResponseEnvelopeTagAssignmentsList, ResponseEnvelopeTagAssignmentsListTypedDict, ) + from .responseenvelopetagoperation import ( + ResponseEnvelopeTagOperation, + ResponseEnvelopeTagOperationTypedDict, + ) + from .responseenvelopetagoperationslist import ( + ResponseEnvelopeTagOperationsList, + ResponseEnvelopeTagOperationsListTypedDict, + ) from .responseenvelopetagslist import ( ResponseEnvelopeTagsList, ResponseEnvelopeTagsListTypedDict, @@ -1046,6 +1106,8 @@ from .routing import Routing, RoutingTypedDict from .rsacryptographickey import RSACryptographicKey, RSACryptographicKeyTypedDict from .rsapublickey import RsaPublicKey, RsaPublicKeyTypedDict + from .rtmp import Rtmp, RtmpTypedDict + from .rtmp_connectstatus import RtmpConnectStatus, RtmpConnectStatusTypedDict from .rtsp import Rtsp, RtspTypedDict from .rustdeskheartbeat import RustdeskHeartbeat, RustdeskHeartbeatTypedDict from .rustdeskheartbeat_registerpeerresponse import ( @@ -1237,6 +1299,7 @@ StunTurnAllocateSuccessResponseTypedDict, ) from .subjectkeyinfo import SubjectKeyInfo, SubjectKeyInfoTypedDict + from .synergy import Synergy, SynergyTypedDict from .systemcapabilities import SystemCapabilities, SystemCapabilitiesTypedDict from .tacacsplus import TacacsPlus, TacacsPlusTypedDict from .tag import Tag, TagPrivacy, TagTypedDict @@ -1246,11 +1309,19 @@ TagAssignmentTypedDict, ) from .tagassignmentslist import TagAssignmentsList, TagAssignmentsListTypedDict + from .tagoperation import ( + TagOperation, + TagOperationStatus, + TagOperationType, + TagOperationTypedDict, + ) + from .tagoperationslist import TagOperationsList, TagOperationsListTypedDict from .tagslist import TagsList, TagsListTypedDict from .target import Target, TargetTypedDict from .teamviewer import TeamViewer, TeamViewerTypedDict from .telnet import Telnet, TelnetTypedDict from .textmessage import TextMessage, TextMessageTypedDict + from .thirdparty import ThirdParty, ThirdPartyTypedDict from .threat import Threat, ThreatSource, ThreatTypedDict from .threat_actor import ThreatActor, ThreatActorTypedDict from .threat_details import ThreatDetails, ThreatDetailsTypedDict @@ -1505,6 +1576,14 @@ V3GlobaldataAssetCertificateResponse, V3GlobaldataAssetCertificateResponseTypedDict, ) + from .v3_globaldata_asset_host_enrichmentop import ( + V3GlobaldataAssetHostEnrichmentGlobals, + V3GlobaldataAssetHostEnrichmentGlobalsTypedDict, + V3GlobaldataAssetHostEnrichmentRequest, + V3GlobaldataAssetHostEnrichmentRequestTypedDict, + V3GlobaldataAssetHostEnrichmentResponse, + V3GlobaldataAssetHostEnrichmentResponseTypedDict, + ) from .v3_globaldata_asset_host_list_postop import ( V3GlobaldataAssetHostListPostGlobals, V3GlobaldataAssetHostListPostGlobalsTypedDict, @@ -1631,6 +1710,30 @@ V3GlobaldataServiceOnHostResponse, V3GlobaldataServiceOnHostResponseTypedDict, ) + from .v3_tags_bulk_create_assignmentsop import ( + V3TagsBulkCreateAssignmentsGlobals, + V3TagsBulkCreateAssignmentsGlobalsTypedDict, + V3TagsBulkCreateAssignmentsRequest, + V3TagsBulkCreateAssignmentsRequestTypedDict, + V3TagsBulkCreateAssignmentsResponse, + V3TagsBulkCreateAssignmentsResponseTypedDict, + ) + from .v3_tags_bulk_delete_assignmentsop import ( + V3TagsBulkDeleteAssignmentsGlobals, + V3TagsBulkDeleteAssignmentsGlobalsTypedDict, + V3TagsBulkDeleteAssignmentsRequest, + V3TagsBulkDeleteAssignmentsRequestTypedDict, + V3TagsBulkDeleteAssignmentsResponse, + V3TagsBulkDeleteAssignmentsResponseTypedDict, + ) + from .v3_tags_cancel_operationop import ( + V3TagsCancelOperationGlobals, + V3TagsCancelOperationGlobalsTypedDict, + V3TagsCancelOperationRequest, + V3TagsCancelOperationRequestTypedDict, + V3TagsCancelOperationResponse, + V3TagsCancelOperationResponseTypedDict, + ) from .v3_tags_create_assignmentop import ( V3TagsCreateAssignmentGlobals, V3TagsCreateAssignmentGlobalsTypedDict, @@ -1681,6 +1784,17 @@ V3TagsListAssignmentsResponse, V3TagsListAssignmentsResponseTypedDict, ) + from .v3_tags_list_operationsop import ( + QueryParamStatus, + QueryParamType, + V3TagsListOperationsGlobals, + V3TagsListOperationsGlobalsTypedDict, + V3TagsListOperationsQueryParamOrderBy, + V3TagsListOperationsRequest, + V3TagsListOperationsRequestTypedDict, + V3TagsListOperationsResponse, + V3TagsListOperationsResponseTypedDict, + ) from .v3_tags_list_tagsop import ( QueryParamPrivacy, V3TagsListTagsGlobals, @@ -1786,7 +1900,9 @@ from .webpropertyasset import WebpropertyAsset, WebpropertyAssetTypedDict from .whois import Whois, WhoisTypedDict from .whoisupdated import WhoisUpdated, WhoisUpdatedTypedDict + from .wincecerdisp import WinceCerdisp, WinceCerdispTypedDict from .winrm import Winrm, WinrmTypedDict + from .wordpress import Wordpress, WordpressTypedDict from .worker import Worker, WorkerTypedDict from .wsdiscovery import WsDiscovery, WsDiscoveryTypedDict from .x11 import X11, X11TypedDict @@ -1846,6 +1962,10 @@ "BacnetTypedDict", "BasicConstraints", "BasicConstraintsTypedDict", + "BulkCreateTagAssignmentsInputBody", + "BulkCreateTagAssignmentsInputBodyTypedDict", + "BulkDeleteTagAssignmentsInputBody", + "BulkDeleteTagAssignmentsInputBodyTypedDict", "ByRole", "ByRoleTypedDict", "CPELifeCycle", @@ -1917,6 +2037,14 @@ "CiscoIpslaMeasureResponse", "CiscoIpslaMeasureResponseTypedDict", "CiscoIpslaTypedDict", + "ClickHouseHTTP", + "ClickHouseHTTPError", + "ClickHouseHTTPErrorTypedDict", + "ClickHouseHTTPTypedDict", + "ClickHouseNative", + "ClickHouseNativeError", + "ClickHouseNativeErrorTypedDict", + "ClickHouseNativeTypedDict", "Cmore", "CmoreTypedDict", "Coap", @@ -2200,6 +2328,10 @@ "GeneralNamesTypedDict", "GeneralSubtreeIP", "GeneralSubtreeIPTypedDict", + "Gopher", + "GopherItem", + "GopherItemTypedDict", + "GopherTypedDict", "Granularity", "Graphql", "GraphqlTypedDict", @@ -2211,6 +2343,8 @@ "HTTPFavicon", "HTTPFaviconTypedDict", "HTTPRedirectChainLink", + "HTTPRedirectChainLinkHTTPStatus", + "HTTPRedirectChainLinkHTTPStatusTypedDict", "HTTPRedirectChainLinkTransportProtocol", "HTTPRedirectChainLinkTypedDict", "HTTPRepeatedHeaders", @@ -2237,6 +2371,12 @@ "HostDNSReverseResolution", "HostDNSReverseResolutionTypedDict", "HostDNSTypedDict", + "HostEnrichment", + "HostEnrichmentAsset", + "HostEnrichmentAssetTypedDict", + "HostEnrichmentService", + "HostEnrichmentServiceTypedDict", + "HostEnrichmentTypedDict", "HostObservationRange", "HostObservationRangeTypedDict", "HostObservationResponse", @@ -2380,6 +2520,16 @@ "LpdMessage", "LpdMessageTypedDict", "LpdTypedDict", + "MalloryAI", + "MalloryAIObservable", + "MalloryAIObservableTypedDict", + "MalloryAIOpinion", + "MalloryAIOpinionAttributes", + "MalloryAIOpinionAttributesTypedDict", + "MalloryAIOpinionTypedDict", + "MalloryAITypedDict", + "MalloryAIVerdictSummary", + "MalloryAIVerdictSummaryTypedDict", "MatchedService", "MatchedServiceTypedDict", "Mavlink", @@ -2543,6 +2693,10 @@ "OpenDirectoryFile", "OpenDirectoryFileTypedDict", "OpenDirectoryTypedDict", + "Openflow", + "OpenflowHelloElement", + "OpenflowHelloElementTypedDict", + "OpenflowTypedDict", "Openvpn", "OpenvpnMgmt", "OpenvpnMgmtTypedDict", @@ -2652,7 +2806,9 @@ "QueryParamOrderBy", "QueryParamPrivacy", "QueryParamRecordTypes", + "QueryParamStatus", "QueryParamTransportProtocol", + "QueryParamType", "RCode", "RSACryptographicKey", "RSACryptographicKeyTypedDict", @@ -2697,6 +2853,10 @@ "Reject", "RejectType", "RejectTypedDict", + "ReolinkBaichuan", + "ReolinkBaichuanAlarmChannel", + "ReolinkBaichuanAlarmChannelTypedDict", + "ReolinkBaichuanTypedDict", "ReplayCapabilities", "ReplayCapabilitiesTypedDict", "RepresentativeInfo", @@ -2740,6 +2900,8 @@ "ResponseEnvelopeDNSNameResolutionRangeResponseTypedDict", "ResponseEnvelopeHostAsset", "ResponseEnvelopeHostAssetTypedDict", + "ResponseEnvelopeHostEnrichmentAsset", + "ResponseEnvelopeHostEnrichmentAssetTypedDict", "ResponseEnvelopeHostObservationResponse", "ResponseEnvelopeHostObservationResponseTypedDict", "ResponseEnvelopeHostTimeline", @@ -2773,6 +2935,10 @@ "ResponseEnvelopeTagAssignmentTypedDict", "ResponseEnvelopeTagAssignmentsList", "ResponseEnvelopeTagAssignmentsListTypedDict", + "ResponseEnvelopeTagOperation", + "ResponseEnvelopeTagOperationTypedDict", + "ResponseEnvelopeTagOperationsList", + "ResponseEnvelopeTagOperationsListTypedDict", "ResponseEnvelopeTagTypedDict", "ResponseEnvelopeTagsList", "ResponseEnvelopeTagsListTypedDict", @@ -2826,6 +2992,10 @@ "RoutingTypedDict", "RsaPublicKey", "RsaPublicKeyTypedDict", + "Rtmp", + "RtmpConnectStatus", + "RtmpConnectStatusTypedDict", + "RtmpTypedDict", "Rtsp", "RtspTypedDict", "RustdeskHeartbeat", @@ -3011,6 +3181,8 @@ "StunTypedDict", "SubjectKeyInfo", "SubjectKeyInfoTypedDict", + "Synergy", + "SynergyTypedDict", "SystemCapabilities", "SystemCapabilitiesTypedDict", "TLS", @@ -3027,6 +3199,12 @@ "TagAssignmentTypedDict", "TagAssignmentsList", "TagAssignmentsListTypedDict", + "TagOperation", + "TagOperationStatus", + "TagOperationType", + "TagOperationTypedDict", + "TagOperationsList", + "TagOperationsListTypedDict", "TagPrivacy", "TagTypedDict", "TagsList", @@ -3049,6 +3227,8 @@ "TelnetTypedDict", "TextMessage", "TextMessageTypedDict", + "ThirdParty", + "ThirdPartyTypedDict", "Threat", "ThreatActor", "ThreatActorTypedDict", @@ -3248,6 +3428,12 @@ "V3GlobaldataAssetCertificateRequestTypedDict", "V3GlobaldataAssetCertificateResponse", "V3GlobaldataAssetCertificateResponseTypedDict", + "V3GlobaldataAssetHostEnrichmentGlobals", + "V3GlobaldataAssetHostEnrichmentGlobalsTypedDict", + "V3GlobaldataAssetHostEnrichmentRequest", + "V3GlobaldataAssetHostEnrichmentRequestTypedDict", + "V3GlobaldataAssetHostEnrichmentResponse", + "V3GlobaldataAssetHostEnrichmentResponseTypedDict", "V3GlobaldataAssetHostGlobals", "V3GlobaldataAssetHostGlobalsTypedDict", "V3GlobaldataAssetHostListPostGlobals", @@ -3340,6 +3526,24 @@ "V3GlobaldataServiceOnHostRequestTypedDict", "V3GlobaldataServiceOnHostResponse", "V3GlobaldataServiceOnHostResponseTypedDict", + "V3TagsBulkCreateAssignmentsGlobals", + "V3TagsBulkCreateAssignmentsGlobalsTypedDict", + "V3TagsBulkCreateAssignmentsRequest", + "V3TagsBulkCreateAssignmentsRequestTypedDict", + "V3TagsBulkCreateAssignmentsResponse", + "V3TagsBulkCreateAssignmentsResponseTypedDict", + "V3TagsBulkDeleteAssignmentsGlobals", + "V3TagsBulkDeleteAssignmentsGlobalsTypedDict", + "V3TagsBulkDeleteAssignmentsRequest", + "V3TagsBulkDeleteAssignmentsRequestTypedDict", + "V3TagsBulkDeleteAssignmentsResponse", + "V3TagsBulkDeleteAssignmentsResponseTypedDict", + "V3TagsCancelOperationGlobals", + "V3TagsCancelOperationGlobalsTypedDict", + "V3TagsCancelOperationRequest", + "V3TagsCancelOperationRequestTypedDict", + "V3TagsCancelOperationResponse", + "V3TagsCancelOperationResponseTypedDict", "V3TagsCreateAssignmentGlobals", "V3TagsCreateAssignmentGlobalsTypedDict", "V3TagsCreateAssignmentRequest", @@ -3377,6 +3581,13 @@ "V3TagsListAssignmentsRequestTypedDict", "V3TagsListAssignmentsResponse", "V3TagsListAssignmentsResponseTypedDict", + "V3TagsListOperationsGlobals", + "V3TagsListOperationsGlobalsTypedDict", + "V3TagsListOperationsQueryParamOrderBy", + "V3TagsListOperationsRequest", + "V3TagsListOperationsRequestTypedDict", + "V3TagsListOperationsResponse", + "V3TagsListOperationsResponseTypedDict", "V3TagsListTagsGlobals", "V3TagsListTagsGlobalsTypedDict", "V3TagsListTagsQueryParamOrderBy", @@ -3482,8 +3693,12 @@ "WhoisTypedDict", "WhoisUpdated", "WhoisUpdatedTypedDict", + "WinceCerdisp", + "WinceCerdispTypedDict", "Winrm", "WinrmTypedDict", + "Wordpress", + "WordpressTypedDict", "Worker", "WorkerTypedDict", "WsDiscovery", @@ -3545,6 +3760,10 @@ "BacnetTypedDict": ".bacnet", "BasicConstraints": ".basicconstraints", "BasicConstraintsTypedDict": ".basicconstraints", + "BulkCreateTagAssignmentsInputBody": ".bulkcreatetagassignmentsinputbody", + "BulkCreateTagAssignmentsInputBodyTypedDict": ".bulkcreatetagassignmentsinputbody", + "BulkDeleteTagAssignmentsInputBody": ".bulkdeletetagassignmentsinputbody", + "BulkDeleteTagAssignmentsInputBodyTypedDict": ".bulkdeletetagassignmentsinputbody", "CabfOrganizationID": ".cabforganizationid", "CabfOrganizationIDTypedDict": ".cabforganizationid", "Capabilities": ".capabilities", @@ -3601,6 +3820,14 @@ "CiscoIpslaHandshakeMessageTypedDict": ".ciscoipsla_handshake_message", "CiscoIpslaMeasureResponse": ".ciscoipsla_measureresponse", "CiscoIpslaMeasureResponseTypedDict": ".ciscoipsla_measureresponse", + "ClickHouseHTTP": ".clickhousehttp", + "ClickHouseHTTPTypedDict": ".clickhousehttp", + "ClickHouseHTTPError": ".clickhousehttp_error", + "ClickHouseHTTPErrorTypedDict": ".clickhousehttp_error", + "ClickHouseNative": ".clickhousenative", + "ClickHouseNativeTypedDict": ".clickhousenative", + "ClickHouseNativeError": ".clickhousenative_error", + "ClickHouseNativeErrorTypedDict": ".clickhousenative_error", "Cmore": ".cmore", "CmoreTypedDict": ".cmore", "Coap": ".coap", @@ -3920,6 +4147,10 @@ "GeneralNamesTypedDict": ".generalnames", "GeneralSubtreeIP": ".generalsubtreeip", "GeneralSubtreeIPTypedDict": ".generalsubtreeip", + "Gopher": ".gopher", + "GopherTypedDict": ".gopher", + "GopherItem": ".gopher_item", + "GopherItemTypedDict": ".gopher_item", "Graphql": ".graphql", "GraphqlTypedDict": ".graphql", "Greynoise": ".greynoise", @@ -3949,6 +4180,12 @@ "RecordType": ".hostdns_forwardresolution", "HostDNSReverseResolution": ".hostdns_reverseresolution", "HostDNSReverseResolutionTypedDict": ".hostdns_reverseresolution", + "HostEnrichment": ".hostenrichment", + "HostEnrichmentTypedDict": ".hostenrichment", + "HostEnrichmentAsset": ".hostenrichmentasset", + "HostEnrichmentAssetTypedDict": ".hostenrichmentasset", + "HostEnrichmentService": ".hostenrichmentservice", + "HostEnrichmentServiceTypedDict": ".hostenrichmentservice", "HostObservationRange": ".hostobservationrange", "HostObservationRangeTypedDict": ".hostobservationrange", "HostObservationResponse": ".hostobservationresponse", @@ -3966,6 +4203,8 @@ "HTTPRedirectChainLink": ".http_redirectchainlink", "HTTPRedirectChainLinkTransportProtocol": ".http_redirectchainlink", "HTTPRedirectChainLinkTypedDict": ".http_redirectchainlink", + "HTTPRedirectChainLinkHTTPStatus": ".http_redirectchainlink_httpstatus", + "HTTPRedirectChainLinkHTTPStatusTypedDict": ".http_redirectchainlink_httpstatus", "HTTPRepeatedHeaders": ".http_repeatedheaders", "HTTPRepeatedHeadersTypedDict": ".http_repeatedheaders", "Ibmnje": ".ibmnje", @@ -4095,6 +4334,16 @@ "LpdTypedDict": ".lpd", "LpdMessage": ".lpdmessage", "LpdMessageTypedDict": ".lpdmessage", + "MalloryAI": ".malloryai", + "MalloryAITypedDict": ".malloryai", + "MalloryAIObservable": ".malloryai_observable", + "MalloryAIObservableTypedDict": ".malloryai_observable", + "MalloryAIOpinion": ".malloryai_opinion", + "MalloryAIOpinionTypedDict": ".malloryai_opinion", + "MalloryAIOpinionAttributes": ".malloryai_opinion_attributes", + "MalloryAIOpinionAttributesTypedDict": ".malloryai_opinion_attributes", + "MalloryAIVerdictSummary": ".malloryai_verdictsummary", + "MalloryAIVerdictSummaryTypedDict": ".malloryai_verdictsummary", "MatchedService": ".matchedservice", "MatchedServiceTypedDict": ".matchedservice", "TransportProtocol": ".matchedservice", @@ -4257,6 +4506,10 @@ "OpenDirectoryTypedDict": ".opendirectory", "OpenDirectoryFile": ".opendirectory_file", "OpenDirectoryFileTypedDict": ".opendirectory_file", + "Openflow": ".openflow", + "OpenflowTypedDict": ".openflow", + "OpenflowHelloElement": ".openflow_helloelement", + "OpenflowHelloElementTypedDict": ".openflow_helloelement", "Openvpn": ".openvpn", "OpenvpnTypedDict": ".openvpn", "OpenvpnMgmt": ".openvpnmgmt", @@ -4394,6 +4647,10 @@ "Reject": ".reject", "RejectType": ".reject", "RejectTypedDict": ".reject", + "ReolinkBaichuan": ".reolinkbaichuan", + "ReolinkBaichuanTypedDict": ".reolinkbaichuan", + "ReolinkBaichuanAlarmChannel": ".reolinkbaichuan_alarmchannel", + "ReolinkBaichuanAlarmChannelTypedDict": ".reolinkbaichuan_alarmchannel", "ReplayCapabilities": ".replaycapabilities", "ReplayCapabilitiesTypedDict": ".replaycapabilities", "RepresentativeInfo": ".representativeinfo", @@ -4439,6 +4696,8 @@ "ResponseEnvelopeDNSNameResolutionRangeResponseTypedDict": ".responseenvelopednsnameresolutionrangeresponse", "ResponseEnvelopeHostAsset": ".responseenvelopehostasset", "ResponseEnvelopeHostAssetTypedDict": ".responseenvelopehostasset", + "ResponseEnvelopeHostEnrichmentAsset": ".responseenvelopehostenrichmentasset", + "ResponseEnvelopeHostEnrichmentAssetTypedDict": ".responseenvelopehostenrichmentasset", "ResponseEnvelopeHostObservationResponse": ".responseenvelopehostobservationresponse", "ResponseEnvelopeHostObservationResponseTypedDict": ".responseenvelopehostobservationresponse", "ResponseEnvelopeHostTimeline": ".responseenvelopehosttimeline", @@ -4473,6 +4732,10 @@ "ResponseEnvelopeTagAssignmentTypedDict": ".responseenvelopetagassignment", "ResponseEnvelopeTagAssignmentsList": ".responseenvelopetagassignmentslist", "ResponseEnvelopeTagAssignmentsListTypedDict": ".responseenvelopetagassignmentslist", + "ResponseEnvelopeTagOperation": ".responseenvelopetagoperation", + "ResponseEnvelopeTagOperationTypedDict": ".responseenvelopetagoperation", + "ResponseEnvelopeTagOperationsList": ".responseenvelopetagoperationslist", + "ResponseEnvelopeTagOperationsListTypedDict": ".responseenvelopetagoperationslist", "ResponseEnvelopeTagsList": ".responseenvelopetagslist", "ResponseEnvelopeTagsListTypedDict": ".responseenvelopetagslist", "ResponseEnvelopeThreatsListResponse": ".responseenvelopethreatslistresponse", @@ -4528,6 +4791,10 @@ "RSACryptographicKeyTypedDict": ".rsacryptographickey", "RsaPublicKey": ".rsapublickey", "RsaPublicKeyTypedDict": ".rsapublickey", + "Rtmp": ".rtmp", + "RtmpTypedDict": ".rtmp", + "RtmpConnectStatus": ".rtmp_connectstatus", + "RtmpConnectStatusTypedDict": ".rtmp_connectstatus", "Rtsp": ".rtsp", "RtspTypedDict": ".rtsp", "RustdeskHeartbeat": ".rustdeskheartbeat", @@ -4720,6 +4987,8 @@ "StunTurnAllocateSuccessResponseTypedDict": ".stun_turn_allocatesuccessresponse", "SubjectKeyInfo": ".subjectkeyinfo", "SubjectKeyInfoTypedDict": ".subjectkeyinfo", + "Synergy": ".synergy", + "SynergyTypedDict": ".synergy", "SystemCapabilities": ".systemcapabilities", "SystemCapabilitiesTypedDict": ".systemcapabilities", "TacacsPlus": ".tacacsplus", @@ -4732,6 +5001,12 @@ "TagAssignmentTypedDict": ".tagassignment", "TagAssignmentsList": ".tagassignmentslist", "TagAssignmentsListTypedDict": ".tagassignmentslist", + "TagOperation": ".tagoperation", + "TagOperationStatus": ".tagoperation", + "TagOperationType": ".tagoperation", + "TagOperationTypedDict": ".tagoperation", + "TagOperationsList": ".tagoperationslist", + "TagOperationsListTypedDict": ".tagoperationslist", "TagsList": ".tagslist", "TagsListTypedDict": ".tagslist", "Target": ".target", @@ -4742,6 +5017,8 @@ "TelnetTypedDict": ".telnet", "TextMessage": ".textmessage", "TextMessageTypedDict": ".textmessage", + "ThirdParty": ".thirdparty", + "ThirdPartyTypedDict": ".thirdparty", "Threat": ".threat", "ThreatSource": ".threat", "ThreatTypedDict": ".threat", @@ -4950,6 +5227,12 @@ "V3GlobaldataAssetCertificateRequestTypedDict": ".v3_globaldata_asset_certificateop", "V3GlobaldataAssetCertificateResponse": ".v3_globaldata_asset_certificateop", "V3GlobaldataAssetCertificateResponseTypedDict": ".v3_globaldata_asset_certificateop", + "V3GlobaldataAssetHostEnrichmentGlobals": ".v3_globaldata_asset_host_enrichmentop", + "V3GlobaldataAssetHostEnrichmentGlobalsTypedDict": ".v3_globaldata_asset_host_enrichmentop", + "V3GlobaldataAssetHostEnrichmentRequest": ".v3_globaldata_asset_host_enrichmentop", + "V3GlobaldataAssetHostEnrichmentRequestTypedDict": ".v3_globaldata_asset_host_enrichmentop", + "V3GlobaldataAssetHostEnrichmentResponse": ".v3_globaldata_asset_host_enrichmentop", + "V3GlobaldataAssetHostEnrichmentResponseTypedDict": ".v3_globaldata_asset_host_enrichmentop", "V3GlobaldataAssetHostListPostGlobals": ".v3_globaldata_asset_host_list_postop", "V3GlobaldataAssetHostListPostGlobalsTypedDict": ".v3_globaldata_asset_host_list_postop", "V3GlobaldataAssetHostListPostRequest": ".v3_globaldata_asset_host_list_postop", @@ -5046,6 +5329,24 @@ "V3GlobaldataServiceOnHostRequestTypedDict": ".v3_globaldata_service_on_hostop", "V3GlobaldataServiceOnHostResponse": ".v3_globaldata_service_on_hostop", "V3GlobaldataServiceOnHostResponseTypedDict": ".v3_globaldata_service_on_hostop", + "V3TagsBulkCreateAssignmentsGlobals": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkCreateAssignmentsGlobalsTypedDict": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkCreateAssignmentsRequest": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkCreateAssignmentsRequestTypedDict": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkCreateAssignmentsResponse": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkCreateAssignmentsResponseTypedDict": ".v3_tags_bulk_create_assignmentsop", + "V3TagsBulkDeleteAssignmentsGlobals": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsBulkDeleteAssignmentsGlobalsTypedDict": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsBulkDeleteAssignmentsRequest": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsBulkDeleteAssignmentsRequestTypedDict": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsBulkDeleteAssignmentsResponse": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsBulkDeleteAssignmentsResponseTypedDict": ".v3_tags_bulk_delete_assignmentsop", + "V3TagsCancelOperationGlobals": ".v3_tags_cancel_operationop", + "V3TagsCancelOperationGlobalsTypedDict": ".v3_tags_cancel_operationop", + "V3TagsCancelOperationRequest": ".v3_tags_cancel_operationop", + "V3TagsCancelOperationRequestTypedDict": ".v3_tags_cancel_operationop", + "V3TagsCancelOperationResponse": ".v3_tags_cancel_operationop", + "V3TagsCancelOperationResponseTypedDict": ".v3_tags_cancel_operationop", "V3TagsCreateAssignmentGlobals": ".v3_tags_create_assignmentop", "V3TagsCreateAssignmentGlobalsTypedDict": ".v3_tags_create_assignmentop", "V3TagsCreateAssignmentRequest": ".v3_tags_create_assignmentop", @@ -5084,6 +5385,15 @@ "V3TagsListAssignmentsRequestTypedDict": ".v3_tags_list_assignmentsop", "V3TagsListAssignmentsResponse": ".v3_tags_list_assignmentsop", "V3TagsListAssignmentsResponseTypedDict": ".v3_tags_list_assignmentsop", + "QueryParamStatus": ".v3_tags_list_operationsop", + "QueryParamType": ".v3_tags_list_operationsop", + "V3TagsListOperationsGlobals": ".v3_tags_list_operationsop", + "V3TagsListOperationsGlobalsTypedDict": ".v3_tags_list_operationsop", + "V3TagsListOperationsQueryParamOrderBy": ".v3_tags_list_operationsop", + "V3TagsListOperationsRequest": ".v3_tags_list_operationsop", + "V3TagsListOperationsRequestTypedDict": ".v3_tags_list_operationsop", + "V3TagsListOperationsResponse": ".v3_tags_list_operationsop", + "V3TagsListOperationsResponseTypedDict": ".v3_tags_list_operationsop", "QueryParamPrivacy": ".v3_tags_list_tagsop", "V3TagsListTagsGlobals": ".v3_tags_list_tagsop", "V3TagsListTagsGlobalsTypedDict": ".v3_tags_list_tagsop", @@ -5185,8 +5495,12 @@ "WhoisTypedDict": ".whois", "WhoisUpdated": ".whoisupdated", "WhoisUpdatedTypedDict": ".whoisupdated", + "WinceCerdisp": ".wincecerdisp", + "WinceCerdispTypedDict": ".wincecerdisp", "Winrm": ".winrm", "WinrmTypedDict": ".winrm", + "Wordpress": ".wordpress", + "WordpressTypedDict": ".wordpress", "Worker": ".worker", "WorkerTypedDict": ".worker", "WsDiscovery": ".wsdiscovery", diff --git a/src/censys_platform/models/bulkcreatetagassignmentsinputbody.py b/src/censys_platform/models/bulkcreatetagassignmentsinputbody.py new file mode 100644 index 00000000..6e3c8d24 --- /dev/null +++ b/src/censys_platform/models/bulkcreatetagassignmentsinputbody.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class BulkCreateTagAssignmentsInputBodyTypedDict(TypedDict): + query: str + r"""A CenQL query identifying the assets to tag.""" + max_assets: NotRequired[int] + r"""Optional upper bound on the number of assets to tag in this operation. This is your own limit for this request, separate from your plan's tag asset limit: the effective cap is the smaller of this value, your plan's tag asset limit, and the number of matching results. Omit or set to 0 for no explicit cap.""" + + +class BulkCreateTagAssignmentsInputBody(BaseModel): + query: str + r"""A CenQL query identifying the assets to tag.""" + + max_assets: Optional[int] = None + r"""Optional upper bound on the number of assets to tag in this operation. This is your own limit for this request, separate from your plan's tag asset limit: the effective cap is the smaller of this value, your plan's tag asset limit, and the number of matching results. Omit or set to 0 for no explicit cap.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["max_assets"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/bulkdeletetagassignmentsinputbody.py b/src/censys_platform/models/bulkdeletetagassignmentsinputbody.py new file mode 100644 index 00000000..5179029e --- /dev/null +++ b/src/censys_platform/models/bulkdeletetagassignmentsinputbody.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from datetime import datetime +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class BulkDeleteTagAssignmentsInputBodyTypedDict(TypedDict): + created_after: NotRequired[datetime] + r"""RFC3339 timestamp. Only delete assignments created after this time.""" + created_before: NotRequired[datetime] + r"""RFC3339 timestamp. Only delete assignments created before this time.""" + + +class BulkDeleteTagAssignmentsInputBody(BaseModel): + created_after: Optional[datetime] = None + r"""RFC3339 timestamp. Only delete assignments created after this time.""" + + created_before: Optional[datetime] = None + r"""RFC3339 timestamp. Only delete assignments created before this time.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["created_after", "created_before"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/clickhousehttp.py b/src/censys_platform/models/clickhousehttp.py new file mode 100644 index 00000000..2a50f16c --- /dev/null +++ b/src/censys_platform/models/clickhousehttp.py @@ -0,0 +1,71 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .clickhousehttp_error import ClickHouseHTTPError, ClickHouseHTTPErrorTypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ClickHouseHTTPTypedDict(TypedDict): + databases: NotRequired[Nullable[List[str]]] + databases_exposed: NotRequired[bool] + display_name: NotRequired[str] + error: NotRequired[ClickHouseHTTPErrorTypedDict] + timezone: NotRequired[str] + version: NotRequired[str] + + +class ClickHouseHTTP(BaseModel): + databases: OptionalNullable[List[str]] = UNSET + + databases_exposed: Optional[bool] = None + + display_name: Optional[str] = None + + error: Optional[ClickHouseHTTPError] = None + + timezone: Optional[str] = None + + version: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "databases", + "databases_exposed", + "display_name", + "error", + "timezone", + "version", + ] + ) + nullable_fields = set(["databases"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/clickhousehttp_error.py b/src/censys_platform/models/clickhousehttp_error.py new file mode 100644 index 00000000..0d89d6d1 --- /dev/null +++ b/src/censys_platform/models/clickhousehttp_error.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ClickHouseHTTPErrorTypedDict(TypedDict): + code: NotRequired[str] + message: NotRequired[str] + + +class ClickHouseHTTPError(BaseModel): + code: Optional[str] = None + + message: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["code", "message"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/clickhousenative.py b/src/censys_platform/models/clickhousenative.py new file mode 100644 index 00000000..07b77b28 --- /dev/null +++ b/src/censys_platform/models/clickhousenative.py @@ -0,0 +1,71 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .clickhousenative_error import ( + ClickHouseNativeError, + ClickHouseNativeErrorTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ClickHouseNativeTypedDict(TypedDict): + display_name: NotRequired[str] + error: NotRequired[ClickHouseNativeErrorTypedDict] + revision: NotRequired[int] + server_name: NotRequired[str] + timezone: NotRequired[str] + version: NotRequired[str] + version_major: NotRequired[int] + version_minor: NotRequired[int] + version_patch: NotRequired[int] + + +class ClickHouseNative(BaseModel): + display_name: Optional[str] = None + + error: Optional[ClickHouseNativeError] = None + + revision: Optional[int] = None + + server_name: Optional[str] = None + + timezone: Optional[str] = None + + version: Optional[str] = None + + version_major: Optional[int] = None + + version_minor: Optional[int] = None + + version_patch: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "display_name", + "error", + "revision", + "server_name", + "timezone", + "version", + "version_major", + "version_minor", + "version_patch", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/clickhousenative_error.py b/src/censys_platform/models/clickhousenative_error.py new file mode 100644 index 00000000..940ce3cc --- /dev/null +++ b/src/censys_platform/models/clickhousenative_error.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ClickHouseNativeErrorTypedDict(TypedDict): + code: NotRequired[int] + message: NotRequired[str] + name: NotRequired[str] + + +class ClickHouseNativeError(BaseModel): + code: Optional[int] = None + + message: Optional[str] = None + + name: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["code", "message", "name"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/endpointscan.py b/src/censys_platform/models/endpointscan.py index 8f71d871..e05a0c4b 100644 --- a/src/censys_platform/models/endpointscan.py +++ b/src/censys_platform/models/endpointscan.py @@ -2,6 +2,7 @@ from __future__ import annotations from .chromedevtools import ChromeDevtools, ChromeDevtoolsTypedDict +from .clickhousehttp import ClickHouseHTTP, ClickHouseHTTPTypedDict from .cobaltstrike import CobaltStrike, CobaltStrikeTypedDict from .elasticsearch import ElasticSearch, ElasticSearchTypedDict from .fortigate import Fortigate, FortigateTypedDict @@ -21,6 +22,7 @@ from .scadaview import ScadaView, ScadaViewTypedDict from .screenshot import Screenshot, ScreenshotTypedDict from .tls import TLS, TLSTypedDict +from .wordpress import Wordpress, WordpressTypedDict from censys_platform import models, utils from censys_platform.types import ( BaseModel, @@ -47,6 +49,7 @@ class EndpointScanTypedDict(TypedDict): banner: NotRequired[str] banner_hash_sha256: NotRequired[str] chrome_devtools: NotRequired[ChromeDevtoolsTypedDict] + clickhouse_http: NotRequired[ClickHouseHTTPTypedDict] cobalt_strike: NotRequired[CobaltStrikeTypedDict] elasticsearch: NotRequired[ElasticSearchTypedDict] endpoint_type: NotRequired[str] @@ -74,6 +77,7 @@ class EndpointScanTypedDict(TypedDict): screenshots: NotRequired[Nullable[List[ScreenshotTypedDict]]] tls: NotRequired[TLSTypedDict] transport_protocol: NotRequired[EndpointScanTransportProtocol] + wordpress: NotRequired[WordpressTypedDict] class EndpointScan(BaseModel): @@ -83,6 +87,8 @@ class EndpointScan(BaseModel): chrome_devtools: Optional[ChromeDevtools] = None + clickhouse_http: Optional[ClickHouseHTTP] = None + cobalt_strike: Optional[CobaltStrike] = None elasticsearch: Optional[ElasticSearch] = None @@ -137,6 +143,8 @@ class EndpointScan(BaseModel): transport_protocol: Optional[EndpointScanTransportProtocol] = None + wordpress: Optional[Wordpress] = None + @field_serializer("transport_protocol") def serialize_transport_protocol(self, value): if isinstance(value, str): @@ -153,6 +161,7 @@ def serialize_model(self, handler): "banner", "banner_hash_sha256", "chrome_devtools", + "clickhouse_http", "cobalt_strike", "elasticsearch", "endpoint_type", @@ -180,6 +189,7 @@ def serialize_model(self, handler): "screenshots", "tls", "transport_protocol", + "wordpress", ] ) nullable_fields = set(["screenshots"]) diff --git a/src/censys_platform/models/endpointscanstate.py b/src/censys_platform/models/endpointscanstate.py index d6125241..56cb6e25 100644 --- a/src/censys_platform/models/endpointscanstate.py +++ b/src/censys_platform/models/endpointscanstate.py @@ -2,6 +2,7 @@ from __future__ import annotations from .chromedevtools import ChromeDevtools, ChromeDevtoolsTypedDict +from .clickhousehttp import ClickHouseHTTP, ClickHouseHTTPTypedDict from .cobaltstrike import CobaltStrike, CobaltStrikeTypedDict from .elasticsearch import ElasticSearch, ElasticSearchTypedDict from .extractedendpointdata import ExtractedEndpointData, ExtractedEndpointDataTypedDict @@ -21,6 +22,7 @@ from .redlionweb import RedlionWeb, RedlionWebTypedDict from .scadaview import ScadaView, ScadaViewTypedDict from .screenshot import Screenshot, ScreenshotTypedDict +from .wordpress import Wordpress, WordpressTypedDict from censys_platform import models, utils from censys_platform.types import ( BaseModel, @@ -47,6 +49,7 @@ class EndpointScanStateTypedDict(TypedDict): banner: NotRequired[str] banner_hash_sha256: NotRequired[str] chrome_devtools: NotRequired[ChromeDevtoolsTypedDict] + clickhouse_http: NotRequired[ClickHouseHTTPTypedDict] cobalt_strike: NotRequired[CobaltStrikeTypedDict] elasticsearch: NotRequired[ElasticSearchTypedDict] endpoint_type: NotRequired[str] @@ -73,6 +76,7 @@ class EndpointScanStateTypedDict(TypedDict): scan_time: NotRequired[str] screenshots: NotRequired[Nullable[List[ScreenshotTypedDict]]] transport_protocol: NotRequired[EndpointScanStateTransportProtocol] + wordpress: NotRequired[WordpressTypedDict] class EndpointScanState(BaseModel): @@ -82,6 +86,8 @@ class EndpointScanState(BaseModel): chrome_devtools: Optional[ChromeDevtools] = None + clickhouse_http: Optional[ClickHouseHTTP] = None + cobalt_strike: Optional[CobaltStrike] = None elasticsearch: Optional[ElasticSearch] = None @@ -134,6 +140,8 @@ class EndpointScanState(BaseModel): transport_protocol: Optional[EndpointScanStateTransportProtocol] = None + wordpress: Optional[Wordpress] = None + @field_serializer("transport_protocol") def serialize_transport_protocol(self, value): if isinstance(value, str): @@ -150,6 +158,7 @@ def serialize_model(self, handler): "banner", "banner_hash_sha256", "chrome_devtools", + "clickhouse_http", "cobalt_strike", "elasticsearch", "endpoint_type", @@ -176,6 +185,7 @@ def serialize_model(self, handler): "scan_time", "screenshots", "transport_protocol", + "wordpress", ] ) nullable_fields = set(["screenshots"]) diff --git a/src/censys_platform/models/gopher.py b/src/censys_platform/models/gopher.py new file mode 100644 index 00000000..1e402a64 --- /dev/null +++ b/src/censys_platform/models/gopher.py @@ -0,0 +1,53 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .gopher_item import GopherItem, GopherItemTypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class GopherTypedDict(TypedDict): + body: NotRequired[str] + items: NotRequired[Nullable[List[GopherItemTypedDict]]] + title: NotRequired[str] + + +class Gopher(BaseModel): + body: Optional[str] = None + + items: OptionalNullable[List[GopherItem]] = UNSET + + title: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["body", "items", "title"]) + nullable_fields = set(["items"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/gopher_item.py b/src/censys_platform/models/gopher_item.py new file mode 100644 index 00000000..9b018afa --- /dev/null +++ b/src/censys_platform/models/gopher_item.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class GopherItemTypedDict(TypedDict): + display_string: NotRequired[str] + hostname: NotRequired[str] + item_type: NotRequired[str] + port: NotRequired[int] + selector: NotRequired[str] + + +class GopherItem(BaseModel): + display_string: Optional[str] = None + + hostname: Optional[str] = None + + item_type: Optional[str] = None + + port: Optional[int] = None + + selector: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["display_string", "hostname", "item_type", "port", "selector"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/hostenrichment.py b/src/censys_platform/models/hostenrichment.py new file mode 100644 index 00000000..ece96502 --- /dev/null +++ b/src/censys_platform/models/hostenrichment.py @@ -0,0 +1,113 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .greynoise import Greynoise, GreynoiseTypedDict +from .hostdns import HostDNS, HostDNSTypedDict +from .hostenrichmentservice import HostEnrichmentService, HostEnrichmentServiceTypedDict +from .label import Label, LabelTypedDict +from .location import Location, LocationTypedDict +from .networkclassification import NetworkClassification, NetworkClassificationTypedDict +from .privacy import Privacy, PrivacyTypedDict +from .reputation import Reputation, ReputationTypedDict +from .routing import Routing, RoutingTypedDict +from .thirdparty import ThirdParty, ThirdPartyTypedDict +from .whois import Whois, WhoisTypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class HostEnrichmentTypedDict(TypedDict): + autonomous_system: NotRequired[RoutingTypedDict] + dns: NotRequired[HostDNSTypedDict] + greynoise: NotRequired[GreynoiseTypedDict] + ip: NotRequired[str] + labels: NotRequired[Nullable[List[LabelTypedDict]]] + location: NotRequired[LocationTypedDict] + network: NotRequired[Nullable[List[NetworkClassificationTypedDict]]] + r"""Information about what type of network the host belongs to.""" + privacy: NotRequired[Nullable[List[PrivacyTypedDict]]] + r"""Information about privacy services used by the IP, such as VPNs, Proxies, or Tor.""" + reputation: NotRequired[ReputationTypedDict] + service_count: NotRequired[int] + services: NotRequired[Nullable[List[HostEnrichmentServiceTypedDict]]] + third_party: NotRequired[ThirdPartyTypedDict] + whois: NotRequired[WhoisTypedDict] + + +class HostEnrichment(BaseModel): + autonomous_system: Optional[Routing] = None + + dns: Optional[HostDNS] = None + + greynoise: Optional[Greynoise] = None + + ip: Optional[str] = None + + labels: OptionalNullable[List[Label]] = UNSET + + location: Optional[Location] = None + + network: OptionalNullable[List[NetworkClassification]] = UNSET + r"""Information about what type of network the host belongs to.""" + + privacy: OptionalNullable[List[Privacy]] = UNSET + r"""Information about privacy services used by the IP, such as VPNs, Proxies, or Tor.""" + + reputation: Optional[Reputation] = None + + service_count: Optional[int] = None + + services: OptionalNullable[List[HostEnrichmentService]] = UNSET + + third_party: Optional[ThirdParty] = None + + whois: Optional[Whois] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "autonomous_system", + "dns", + "greynoise", + "ip", + "labels", + "location", + "network", + "privacy", + "reputation", + "service_count", + "services", + "third_party", + "whois", + ] + ) + nullable_fields = set(["labels", "network", "privacy", "services"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/hostenrichmentasset.py b/src/censys_platform/models/hostenrichmentasset.py new file mode 100644 index 00000000..7e923cc9 --- /dev/null +++ b/src/censys_platform/models/hostenrichmentasset.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .hostenrichment import HostEnrichment, HostEnrichmentTypedDict +from censys_platform.types import BaseModel +from typing import Any, Dict +from typing_extensions import TypedDict + + +class HostEnrichmentAssetTypedDict(TypedDict): + extensions: Dict[str, Any] + resource: HostEnrichmentTypedDict + + +class HostEnrichmentAsset(BaseModel): + extensions: Dict[str, Any] + + resource: HostEnrichment diff --git a/src/censys_platform/models/hostenrichmentservice.py b/src/censys_platform/models/hostenrichmentservice.py new file mode 100644 index 00000000..baee49c8 --- /dev/null +++ b/src/censys_platform/models/hostenrichmentservice.py @@ -0,0 +1,57 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .label import Label, LabelTypedDict +from .threat import Threat, ThreatTypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class HostEnrichmentServiceTypedDict(TypedDict): + labels: NotRequired[Nullable[List[LabelTypedDict]]] + port: NotRequired[int] + protocol: NotRequired[str] + threats: NotRequired[Nullable[List[ThreatTypedDict]]] + + +class HostEnrichmentService(BaseModel): + labels: OptionalNullable[List[Label]] = UNSET + + port: Optional[int] = None + + protocol: Optional[str] = None + + threats: OptionalNullable[List[Threat]] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["labels", "port", "protocol", "threats"]) + nullable_fields = set(["labels", "threats"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/http_redirectchainlink.py b/src/censys_platform/models/http_redirectchainlink.py index df965ef8..4f996111 100644 --- a/src/censys_platform/models/http_redirectchainlink.py +++ b/src/censys_platform/models/http_redirectchainlink.py @@ -1,6 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .http_redirectchainlink_httpstatus import ( + HTTPRedirectChainLinkHTTPStatus, + HTTPRedirectChainLinkHTTPStatusTypedDict, +) from censys_platform import models, utils from censys_platform.types import BaseModel, UNSET_SENTINEL from enum import Enum @@ -19,6 +23,7 @@ class HTTPRedirectChainLinkTransportProtocol(str, Enum, metaclass=utils.OpenEnum class HTTPRedirectChainLinkTypedDict(TypedDict): hostname: NotRequired[str] + http_status: NotRequired[HTTPRedirectChainLinkHTTPStatusTypedDict] path: NotRequired[str] port: NotRequired[int] reason: NotRequired[str] @@ -29,6 +34,8 @@ class HTTPRedirectChainLinkTypedDict(TypedDict): class HTTPRedirectChainLink(BaseModel): hostname: Optional[str] = None + http_status: Optional[HTTPRedirectChainLinkHTTPStatus] = None + path: Optional[str] = None port: Optional[int] = None @@ -51,7 +58,15 @@ def serialize_transport_protocol(self, value): @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["hostname", "path", "port", "reason", "scheme", "transport_protocol"] + [ + "hostname", + "http_status", + "path", + "port", + "reason", + "scheme", + "transport_protocol", + ] ) serialized = handler(self) m = {} diff --git a/src/censys_platform/models/http_redirectchainlink_httpstatus.py b/src/censys_platform/models/http_redirectchainlink_httpstatus.py new file mode 100644 index 00000000..f1e92f3e --- /dev/null +++ b/src/censys_platform/models/http_redirectchainlink_httpstatus.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class HTTPRedirectChainLinkHTTPStatusTypedDict(TypedDict): + code: NotRequired[int] + r"""A 3-digit integer result code indicating the result of the redirecting response.""" + reason: NotRequired[str] + r"""A human-readable phrase describing the status code.""" + + +class HTTPRedirectChainLinkHTTPStatus(BaseModel): + code: Optional[int] = None + r"""A 3-digit integer result code indicating the result of the redirecting response.""" + + reason: Optional[str] = None + r"""A human-readable phrase describing the status code.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["code", "reason"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/malloryai.py b/src/censys_platform/models/malloryai.py new file mode 100644 index 00000000..c0dc1cb0 --- /dev/null +++ b/src/censys_platform/models/malloryai.py @@ -0,0 +1,88 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .malloryai_observable import MalloryAIObservable, MalloryAIObservableTypedDict +from .malloryai_opinion import MalloryAIOpinion, MalloryAIOpinionTypedDict +from .malloryai_verdictsummary import ( + MalloryAIVerdictSummary, + MalloryAIVerdictSummaryTypedDict, +) +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class MalloryAITypedDict(TypedDict): + created_at: NotRequired[str] + first_seen_at: NotRequired[str] + last_seen_at: NotRequired[str] + observable: NotRequired[MalloryAIObservableTypedDict] + opinions: NotRequired[Nullable[List[MalloryAIOpinionTypedDict]]] + source_count: NotRequired[int] + updated_at: NotRequired[str] + uuid: NotRequired[str] + verdict_summary: NotRequired[MalloryAIVerdictSummaryTypedDict] + + +class MalloryAI(BaseModel): + created_at: Optional[str] = None + + first_seen_at: Optional[str] = None + + last_seen_at: Optional[str] = None + + observable: Optional[MalloryAIObservable] = None + + opinions: OptionalNullable[List[MalloryAIOpinion]] = UNSET + + source_count: Optional[int] = None + + updated_at: Optional[str] = None + + uuid: Optional[str] = None + + verdict_summary: Optional[MalloryAIVerdictSummary] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "created_at", + "first_seen_at", + "last_seen_at", + "observable", + "opinions", + "source_count", + "updated_at", + "uuid", + "verdict_summary", + ] + ) + nullable_fields = set(["opinions"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/malloryai_observable.py b/src/censys_platform/models/malloryai_observable.py new file mode 100644 index 00000000..7df26a9e --- /dev/null +++ b/src/censys_platform/models/malloryai_observable.py @@ -0,0 +1,59 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class MalloryAIObservableTypedDict(TypedDict): + attributes: NotRequired[str] + created_at: NotRequired[str] + description: NotRequired[str] + name: NotRequired[str] + type: NotRequired[str] + updated_at: NotRequired[str] + uuid: NotRequired[str] + + +class MalloryAIObservable(BaseModel): + attributes: Optional[str] = None + + created_at: Optional[str] = None + + description: Optional[str] = None + + name: Optional[str] = None + + type: Optional[str] = None + + updated_at: Optional[str] = None + + uuid: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "attributes", + "created_at", + "description", + "name", + "type", + "updated_at", + "uuid", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/malloryai_opinion.py b/src/censys_platform/models/malloryai_opinion.py new file mode 100644 index 00000000..20c6727d --- /dev/null +++ b/src/censys_platform/models/malloryai_opinion.py @@ -0,0 +1,83 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .malloryai_opinion_attributes import ( + MalloryAIOpinionAttributes, + MalloryAIOpinionAttributesTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class MalloryAIOpinionTypedDict(TypedDict): + attributes: NotRequired[MalloryAIOpinionAttributesTypedDict] + confidence: NotRequired[str] + created_at: NotRequired[str] + description: NotRequired[str] + published_at: NotRequired[str] + reference_source_slug: NotRequired[str] + reference_url: NotRequired[str] + reference_uuid: NotRequired[str] + source: NotRequired[str] + updated_at: NotRequired[str] + uuid: NotRequired[str] + verdict: NotRequired[str] + + +class MalloryAIOpinion(BaseModel): + attributes: Optional[MalloryAIOpinionAttributes] = None + + confidence: Optional[str] = None + + created_at: Optional[str] = None + + description: Optional[str] = None + + published_at: Optional[str] = None + + reference_source_slug: Optional[str] = None + + reference_url: Optional[str] = None + + reference_uuid: Optional[str] = None + + source: Optional[str] = None + + updated_at: Optional[str] = None + + uuid: Optional[str] = None + + verdict: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "attributes", + "confidence", + "created_at", + "description", + "published_at", + "reference_source_slug", + "reference_url", + "reference_uuid", + "source", + "updated_at", + "uuid", + "verdict", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/malloryai_opinion_attributes.py b/src/censys_platform/models/malloryai_opinion_attributes.py new file mode 100644 index 00000000..c11c39ed --- /dev/null +++ b/src/censys_platform/models/malloryai_opinion_attributes.py @@ -0,0 +1,69 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List +from typing_extensions import NotRequired, TypedDict + + +class MalloryAIOpinionAttributesTypedDict(TypedDict): + associated_malware: NotRequired[Nullable[List[str]]] + associated_threat_actors: NotRequired[Nullable[List[str]]] + associated_vulnerabilities: NotRequired[Nullable[List[str]]] + tags: NotRequired[Nullable[List[str]]] + + +class MalloryAIOpinionAttributes(BaseModel): + associated_malware: OptionalNullable[List[str]] = UNSET + + associated_threat_actors: OptionalNullable[List[str]] = UNSET + + associated_vulnerabilities: OptionalNullable[List[str]] = UNSET + + tags: OptionalNullable[List[str]] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "associated_malware", + "associated_threat_actors", + "associated_vulnerabilities", + "tags", + ] + ) + nullable_fields = set( + [ + "associated_malware", + "associated_threat_actors", + "associated_vulnerabilities", + "tags", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/malloryai_verdictsummary.py b/src/censys_platform/models/malloryai_verdictsummary.py new file mode 100644 index 00000000..4b9b0a68 --- /dev/null +++ b/src/censys_platform/models/malloryai_verdictsummary.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class MalloryAIVerdictSummaryTypedDict(TypedDict): + malicious: NotRequired[int] + suspicious: NotRequired[int] + + +class MalloryAIVerdictSummary(BaseModel): + malicious: Optional[int] = None + + suspicious: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["malicious", "suspicious"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/openflow.py b/src/censys_platform/models/openflow.py new file mode 100644 index 00000000..55ce93ce --- /dev/null +++ b/src/censys_platform/models/openflow.py @@ -0,0 +1,115 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .openflow_helloelement import OpenflowHelloElement, OpenflowHelloElementTypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class OpenflowTypedDict(TypedDict): + auxiliary_id: NotRequired[int] + bare_hello: NotRequired[bool] + capabilities: NotRequired[Nullable[List[str]]] + datapath_id: NotRequired[int] + datapath_mac: NotRequired[str] + dp_desc: NotRequired[str] + hello_elements: NotRequired[Nullable[List[OpenflowHelloElementTypedDict]]] + hw_desc: NotRequired[str] + mfr_desc: NotRequired[str] + n_buffers: NotRequired[int] + n_tables: NotRequired[int] + peer_role: NotRequired[str] + protocol_version: NotRequired[str] + protocol_version_raw: NotRequired[str] + serial_num: NotRequired[str] + sw_desc: NotRequired[str] + xid: NotRequired[int] + + +class Openflow(BaseModel): + auxiliary_id: Optional[int] = None + + bare_hello: Optional[bool] = None + + capabilities: OptionalNullable[List[str]] = UNSET + + datapath_id: Optional[int] = None + + datapath_mac: Optional[str] = None + + dp_desc: Optional[str] = None + + hello_elements: OptionalNullable[List[OpenflowHelloElement]] = UNSET + + hw_desc: Optional[str] = None + + mfr_desc: Optional[str] = None + + n_buffers: Optional[int] = None + + n_tables: Optional[int] = None + + peer_role: Optional[str] = None + + protocol_version: Optional[str] = None + + protocol_version_raw: Optional[str] = None + + serial_num: Optional[str] = None + + sw_desc: Optional[str] = None + + xid: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "auxiliary_id", + "bare_hello", + "capabilities", + "datapath_id", + "datapath_mac", + "dp_desc", + "hello_elements", + "hw_desc", + "mfr_desc", + "n_buffers", + "n_tables", + "peer_role", + "protocol_version", + "protocol_version_raw", + "serial_num", + "sw_desc", + "xid", + ] + ) + nullable_fields = set(["capabilities", "hello_elements"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/openflow_helloelement.py b/src/censys_platform/models/openflow_helloelement.py new file mode 100644 index 00000000..4fb67492 --- /dev/null +++ b/src/censys_platform/models/openflow_helloelement.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class OpenflowHelloElementTypedDict(TypedDict): + element_type: NotRequired[str] + supported_versions: NotRequired[Nullable[List[str]]] + + +class OpenflowHelloElement(BaseModel): + element_type: Optional[str] = None + + supported_versions: OptionalNullable[List[str]] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["element_type", "supported_versions"]) + nullable_fields = set(["supported_versions"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/reolinkbaichuan.py b/src/censys_platform/models/reolinkbaichuan.py new file mode 100644 index 00000000..bf872317 --- /dev/null +++ b/src/censys_platform/models/reolinkbaichuan.py @@ -0,0 +1,78 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .reolinkbaichuan_alarmchannel import ( + ReolinkBaichuanAlarmChannel, + ReolinkBaichuanAlarmChannelTypedDict, +) +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ReolinkBaichuanTypedDict(TypedDict): + ai_types_observed: NotRequired[Nullable[List[str]]] + body_length: NotRequired[int] + channel_count: NotRequired[int] + channels: NotRequired[Nullable[List[ReolinkBaichuanAlarmChannelTypedDict]]] + command_id: NotRequired[int] + raw_xml: NotRequired[str] + status_code: NotRequired[int] + + +class ReolinkBaichuan(BaseModel): + ai_types_observed: OptionalNullable[List[str]] = UNSET + + body_length: Optional[int] = None + + channel_count: Optional[int] = None + + channels: OptionalNullable[List[ReolinkBaichuanAlarmChannel]] = UNSET + + command_id: Optional[int] = None + + raw_xml: Optional[str] = None + + status_code: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "ai_types_observed", + "body_length", + "channel_count", + "channels", + "command_id", + "raw_xml", + "status_code", + ] + ) + nullable_fields = set(["ai_types_observed", "channels"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/reolinkbaichuan_alarmchannel.py b/src/censys_platform/models/reolinkbaichuan_alarmchannel.py new file mode 100644 index 00000000..ec75b48b --- /dev/null +++ b/src/censys_platform/models/reolinkbaichuan_alarmchannel.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ReolinkBaichuanAlarmChannelTypedDict(TypedDict): + ai_type: NotRequired[str] + channel_id: NotRequired[int] + recording: NotRequired[int] + status: NotRequired[str] + timestamp: NotRequired[int] + + +class ReolinkBaichuanAlarmChannel(BaseModel): + ai_type: Optional[str] = None + + channel_id: Optional[int] = None + + recording: Optional[int] = None + + status: Optional[str] = None + + timestamp: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["ai_type", "channel_id", "recording", "status", "timestamp"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/responseenvelopehostenrichmentasset.py b/src/censys_platform/models/responseenvelopehostenrichmentasset.py new file mode 100644 index 00000000..93594e73 --- /dev/null +++ b/src/censys_platform/models/responseenvelopehostenrichmentasset.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .hostenrichmentasset import HostEnrichmentAsset, HostEnrichmentAssetTypedDict +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ResponseEnvelopeHostEnrichmentAssetTypedDict(TypedDict): + result: NotRequired[HostEnrichmentAssetTypedDict] + + +class ResponseEnvelopeHostEnrichmentAsset(BaseModel): + result: Optional[HostEnrichmentAsset] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["result"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/responseenvelopetagoperation.py b/src/censys_platform/models/responseenvelopetagoperation.py new file mode 100644 index 00000000..43a1fae0 --- /dev/null +++ b/src/censys_platform/models/responseenvelopetagoperation.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .tagoperation import TagOperation, TagOperationTypedDict +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ResponseEnvelopeTagOperationTypedDict(TypedDict): + result: NotRequired[TagOperationTypedDict] + + +class ResponseEnvelopeTagOperation(BaseModel): + result: Optional[TagOperation] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["result"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/responseenvelopetagoperationslist.py b/src/censys_platform/models/responseenvelopetagoperationslist.py new file mode 100644 index 00000000..bd4b7b98 --- /dev/null +++ b/src/censys_platform/models/responseenvelopetagoperationslist.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .tagoperationslist import TagOperationsList, TagOperationsListTypedDict +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ResponseEnvelopeTagOperationsListTypedDict(TypedDict): + result: NotRequired[TagOperationsListTypedDict] + + +class ResponseEnvelopeTagOperationsList(BaseModel): + result: Optional[TagOperationsList] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["result"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/rtmp.py b/src/censys_platform/models/rtmp.py new file mode 100644 index 00000000..a85b7a5a --- /dev/null +++ b/src/censys_platform/models/rtmp.py @@ -0,0 +1,60 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rtmp_connectstatus import RtmpConnectStatus, RtmpConnectStatusTypedDict +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class RtmpTypedDict(TypedDict): + capabilities: NotRequired[int] + mode: NotRequired[int] + peer_bandwidth: NotRequired[int] + protocol_version: NotRequired[int] + server_software: NotRequired[str] + status: NotRequired[RtmpConnectStatusTypedDict] + window_acknowledgement_size: NotRequired[int] + + +class Rtmp(BaseModel): + capabilities: Optional[int] = None + + mode: Optional[int] = None + + peer_bandwidth: Optional[int] = None + + protocol_version: Optional[int] = None + + server_software: Optional[str] = None + + status: Optional[RtmpConnectStatus] = None + + window_acknowledgement_size: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "capabilities", + "mode", + "peer_bandwidth", + "protocol_version", + "server_software", + "status", + "window_acknowledgement_size", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/rtmp_connectstatus.py b/src/censys_platform/models/rtmp_connectstatus.py new file mode 100644 index 00000000..7da64d20 --- /dev/null +++ b/src/censys_platform/models/rtmp_connectstatus.py @@ -0,0 +1,40 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class RtmpConnectStatusTypedDict(TypedDict): + code: NotRequired[str] + description: NotRequired[str] + level: NotRequired[str] + object_encoding: NotRequired[int] + + +class RtmpConnectStatus(BaseModel): + code: Optional[str] = None + + description: Optional[str] = None + + level: Optional[str] = None + + object_encoding: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["code", "description", "level", "object_encoding"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/service.py b/src/censys_platform/models/service.py index f780a878..dbb27b28 100644 --- a/src/censys_platform/models/service.py +++ b/src/censys_platform/models/service.py @@ -15,6 +15,7 @@ from .checkpointtopology import CheckpointTopology, CheckpointTopologyTypedDict from .chromecast import Chromecast, ChromecastTypedDict from .ciscoipsla import CiscoIpsla, CiscoIpslaTypedDict +from .clickhousenative import ClickHouseNative, ClickHouseNativeTypedDict from .cmore import Cmore, CmoreTypedDict from .coap import Coap, CoapTypedDict from .crestroncp3 import CrestronCp3, CrestronCp3TypedDict @@ -41,6 +42,7 @@ from .ftp import Ftp, FtpTypedDict from .gearman import Gearman, GearmanTypedDict from .gemini import Gemini, GeminiTypedDict +from .gopher import Gopher, GopherTypedDict from .hajime import Hajime, HajimeTypedDict from .hidvertx import HidVertx, HidVertxTypedDict from .hikvision import Hikvision, HikvisionTypedDict @@ -83,6 +85,7 @@ from .onc import Onc, OncTypedDict from .onvif import Onvif, OnvifTypedDict from .opcua import OpcUa, OpcUaTypedDict +from .openflow import Openflow, OpenflowTypedDict from .openvpn import Openvpn, OpenvpnTypedDict from .openvpnmgmt import OpenvpnMgmt, OpenvpnMgmtTypedDict from .oracle import Oracle, OracleTypedDict @@ -99,6 +102,7 @@ from .redis import Redis, RedisTypedDict from .redline import Redline, RedlineTypedDict from .redlioncrimson import RedlionCrimson, RedlionCrimsonTypedDict +from .reolinkbaichuan import ReolinkBaichuan, ReolinkBaichuanTypedDict from .representativeinfo import RepresentativeInfo, RepresentativeInfoTypedDict from .rifatron import Rifatron, RifatronTypedDict from .ripple import Ripple, RippleTypedDict @@ -106,6 +110,7 @@ from .rlogin import Rlogin, RloginTypedDict from .rocketmq import Rocketmq, RocketmqTypedDict from .routerosapi import RouterosAPI, RouterosAPITypedDict +from .rtmp import Rtmp, RtmpTypedDict from .rtsp import Rtsp, RtspTypedDict from .rustdeskheartbeat import RustdeskHeartbeat, RustdeskHeartbeatTypedDict from .rustdeskrelay import RustdeskRelay, RustdeskRelayTypedDict @@ -128,6 +133,7 @@ from .ssh import SSH, SSHTypedDict from .steam import Steam, SteamTypedDict from .stun import Stun, StunTypedDict +from .synergy import Synergy, SynergyTypedDict from .tacacsplus import TacacsPlus, TacacsPlusTypedDict from .teamviewer import TeamViewer, TeamViewerTypedDict from .telnet import Telnet, TelnetTypedDict @@ -141,6 +147,7 @@ from .vnc import Vnc, VncTypedDict from .vuln import Vuln, VulnTypedDict from .weblogict3 import WeblogicT3, WeblogicT3TypedDict +from .wincecerdisp import WinceCerdisp, WinceCerdispTypedDict from .winrm import Winrm, WinrmTypedDict from .wsdiscovery import WsDiscovery, WsDiscoveryTypedDict from .x11 import X11, X11TypedDict @@ -181,6 +188,7 @@ class ServiceTypedDict(TypedDict): checkpoint_topology: NotRequired[CheckpointTopologyTypedDict] chromecast: NotRequired[ChromecastTypedDict] cisco_ipsla: NotRequired[CiscoIpslaTypedDict] + clickhouse_native: NotRequired[ClickHouseNativeTypedDict] cmore: NotRequired[CmoreTypedDict] coap: NotRequired[CoapTypedDict] compromises: NotRequired[Nullable[List[RiskTypedDict]]] @@ -209,6 +217,7 @@ class ServiceTypedDict(TypedDict): ftp: NotRequired[FtpTypedDict] gearman: NotRequired[GearmanTypedDict] gemini: NotRequired[GeminiTypedDict] + gopher: NotRequired[GopherTypedDict] hajime: NotRequired[HajimeTypedDict] hardware: NotRequired[Nullable[List[AttributeTypedDict]]] hid_vertx: NotRequired[HidVertxTypedDict] @@ -254,6 +263,7 @@ class ServiceTypedDict(TypedDict): onc: NotRequired[OncTypedDict] onvif: NotRequired[OnvifTypedDict] opc_ua: NotRequired[OpcUaTypedDict] + openflow: NotRequired[OpenflowTypedDict] openvpn: NotRequired[OpenvpnTypedDict] openvpn_mgmt: NotRequired[OpenvpnMgmtTypedDict] operating_systems: NotRequired[Nullable[List[AttributeTypedDict]]] @@ -273,12 +283,14 @@ class ServiceTypedDict(TypedDict): redis: NotRequired[RedisTypedDict] redline: NotRequired[RedlineTypedDict] redlion_crimson: NotRequired[RedlionCrimsonTypedDict] + reolink_baichuan: NotRequired[ReolinkBaichuanTypedDict] representative_info: NotRequired[RepresentativeInfoTypedDict] rifatron: NotRequired[RifatronTypedDict] ripple: NotRequired[RippleTypedDict] rlogin: NotRequired[RloginTypedDict] rocketmq: NotRequired[RocketmqTypedDict] routeros_api: NotRequired[RouterosAPITypedDict] + rtmp: NotRequired[RtmpTypedDict] rtsp: NotRequired[RtspTypedDict] rustdesk_heartbeat: NotRequired[RustdeskHeartbeatTypedDict] rustdesk_relay: NotRequired[RustdeskRelayTypedDict] @@ -303,6 +315,7 @@ class ServiceTypedDict(TypedDict): ssh: NotRequired[SSHTypedDict] steam: NotRequired[SteamTypedDict] stun: NotRequired[StunTypedDict] + synergy: NotRequired[SynergyTypedDict] tacacs_plus: NotRequired[TacacsPlusTypedDict] team_viewer: NotRequired[TeamViewerTypedDict] telnet: NotRequired[TelnetTypedDict] @@ -317,6 +330,7 @@ class ServiceTypedDict(TypedDict): vnc: NotRequired[VncTypedDict] vulns: NotRequired[Nullable[List[VulnTypedDict]]] weblogic_t3: NotRequired[WeblogicT3TypedDict] + wince_cerdisp: NotRequired[WinceCerdispTypedDict] winrm: NotRequired[WinrmTypedDict] ws_discovery: NotRequired[WsDiscoveryTypedDict] x11: NotRequired[X11TypedDict] @@ -350,6 +364,8 @@ class Service(BaseModel): cisco_ipsla: Optional[CiscoIpsla] = None + clickhouse_native: Optional[ClickHouseNative] = None + cmore: Optional[Cmore] = None coap: Optional[Coap] = None @@ -406,6 +422,8 @@ class Service(BaseModel): gemini: Optional[Gemini] = None + gopher: Optional[Gopher] = None + hajime: Optional[Hajime] = None hardware: OptionalNullable[List[Attribute]] = UNSET @@ -496,6 +514,8 @@ class Service(BaseModel): opc_ua: Optional[OpcUa] = None + openflow: Optional[Openflow] = None + openvpn: Optional[Openvpn] = None openvpn_mgmt: Optional[OpenvpnMgmt] = None @@ -534,6 +554,8 @@ class Service(BaseModel): redlion_crimson: Optional[RedlionCrimson] = None + reolink_baichuan: Optional[ReolinkBaichuan] = None + representative_info: Optional[RepresentativeInfo] = None rifatron: Optional[Rifatron] = None @@ -546,6 +568,8 @@ class Service(BaseModel): routeros_api: Optional[RouterosAPI] = None + rtmp: Optional[Rtmp] = None + rtsp: Optional[Rtsp] = None rustdesk_heartbeat: Optional[RustdeskHeartbeat] = None @@ -594,6 +618,8 @@ class Service(BaseModel): stun: Optional[Stun] = None + synergy: Optional[Synergy] = None + tacacs_plus: Optional[TacacsPlus] = None team_viewer: Optional[TeamViewer] = None @@ -622,6 +648,8 @@ class Service(BaseModel): weblogic_t3: Optional[WeblogicT3] = None + wince_cerdisp: Optional[WinceCerdisp] = None + winrm: Optional[Winrm] = None ws_discovery: Optional[WsDiscovery] = None @@ -656,6 +684,7 @@ def serialize_model(self, handler): "checkpoint_topology", "chromecast", "cisco_ipsla", + "clickhouse_native", "cmore", "coap", "compromises", @@ -684,6 +713,7 @@ def serialize_model(self, handler): "ftp", "gearman", "gemini", + "gopher", "hajime", "hardware", "hid_vertx", @@ -729,6 +759,7 @@ def serialize_model(self, handler): "onc", "onvif", "opc_ua", + "openflow", "openvpn", "openvpn_mgmt", "operating_systems", @@ -748,12 +779,14 @@ def serialize_model(self, handler): "redis", "redline", "redlion_crimson", + "reolink_baichuan", "representative_info", "rifatron", "ripple", "rlogin", "rocketmq", "routeros_api", + "rtmp", "rtsp", "rustdesk_heartbeat", "rustdesk_relay", @@ -778,6 +811,7 @@ def serialize_model(self, handler): "ssh", "steam", "stun", + "synergy", "tacacs_plus", "team_viewer", "telnet", @@ -792,6 +826,7 @@ def serialize_model(self, handler): "vnc", "vulns", "weblogic_t3", + "wince_cerdisp", "winrm", "ws_discovery", "x11", diff --git a/src/censys_platform/models/servicescan.py b/src/censys_platform/models/servicescan.py index eafa8512..5ec09810 100644 --- a/src/censys_platform/models/servicescan.py +++ b/src/censys_platform/models/servicescan.py @@ -13,6 +13,7 @@ from .checkpointtopology import CheckpointTopology, CheckpointTopologyTypedDict from .chromecast import Chromecast, ChromecastTypedDict from .ciscoipsla import CiscoIpsla, CiscoIpslaTypedDict +from .clickhousenative import ClickHouseNative, ClickHouseNativeTypedDict from .cmore import Cmore, CmoreTypedDict from .coap import Coap, CoapTypedDict from .crestroncp3 import CrestronCp3, CrestronCp3TypedDict @@ -38,6 +39,7 @@ from .ftp import Ftp, FtpTypedDict from .gearman import Gearman, GearmanTypedDict from .gemini import Gemini, GeminiTypedDict +from .gopher import Gopher, GopherTypedDict from .hajime import Hajime, HajimeTypedDict from .hidvertx import HidVertx, HidVertxTypedDict from .hikvision import Hikvision, HikvisionTypedDict @@ -77,6 +79,7 @@ from .onc import Onc, OncTypedDict from .onvif import Onvif, OnvifTypedDict from .opcua import OpcUa, OpcUaTypedDict +from .openflow import Openflow, OpenflowTypedDict from .openvpn import Openvpn, OpenvpnTypedDict from .openvpnmgmt import OpenvpnMgmt, OpenvpnMgmtTypedDict from .oracle import Oracle, OracleTypedDict @@ -93,12 +96,14 @@ from .redis import Redis, RedisTypedDict from .redline import Redline, RedlineTypedDict from .redlioncrimson import RedlionCrimson, RedlionCrimsonTypedDict +from .reolinkbaichuan import ReolinkBaichuan, ReolinkBaichuanTypedDict from .representativeinfo import RepresentativeInfo, RepresentativeInfoTypedDict from .rifatron import Rifatron, RifatronTypedDict from .ripple import Ripple, RippleTypedDict from .rlogin import Rlogin, RloginTypedDict from .rocketmq import Rocketmq, RocketmqTypedDict from .routerosapi import RouterosAPI, RouterosAPITypedDict +from .rtmp import Rtmp, RtmpTypedDict from .rtsp import Rtsp, RtspTypedDict from .rustdeskheartbeat import RustdeskHeartbeat, RustdeskHeartbeatTypedDict from .rustdeskrelay import RustdeskRelay, RustdeskRelayTypedDict @@ -121,6 +126,7 @@ from .ssh import SSH, SSHTypedDict from .steam import Steam, SteamTypedDict from .stun import Stun, StunTypedDict +from .synergy import Synergy, SynergyTypedDict from .tacacsplus import TacacsPlus, TacacsPlusTypedDict from .teamviewer import TeamViewer, TeamViewerTypedDict from .telnet import Telnet, TelnetTypedDict @@ -132,6 +138,7 @@ from .ventrilo import Ventrilo, VentriloTypedDict from .vnc import Vnc, VncTypedDict from .weblogict3 import WeblogicT3, WeblogicT3TypedDict +from .wincecerdisp import WinceCerdisp, WinceCerdispTypedDict from .winrm import Winrm, WinrmTypedDict from .wsdiscovery import WsDiscovery, WsDiscoveryTypedDict from .x11 import X11, X11TypedDict @@ -170,6 +177,7 @@ class ServiceScanTypedDict(TypedDict): checkpoint_topology: NotRequired[CheckpointTopologyTypedDict] chromecast: NotRequired[ChromecastTypedDict] cisco_ipsla: NotRequired[CiscoIpslaTypedDict] + clickhouse_native: NotRequired[ClickHouseNativeTypedDict] cmore: NotRequired[CmoreTypedDict] coap: NotRequired[CoapTypedDict] crestron_cp3: NotRequired[CrestronCp3TypedDict] @@ -195,6 +203,7 @@ class ServiceScanTypedDict(TypedDict): ftp: NotRequired[FtpTypedDict] gearman: NotRequired[GearmanTypedDict] gemini: NotRequired[GeminiTypedDict] + gopher: NotRequired[GopherTypedDict] hajime: NotRequired[HajimeTypedDict] hid_vertx: NotRequired[HidVertxTypedDict] hikvision: NotRequired[HikvisionTypedDict] @@ -236,6 +245,7 @@ class ServiceScanTypedDict(TypedDict): onc: NotRequired[OncTypedDict] onvif: NotRequired[OnvifTypedDict] opc_ua: NotRequired[OpcUaTypedDict] + openflow: NotRequired[OpenflowTypedDict] openvpn: NotRequired[OpenvpnTypedDict] openvpn_mgmt: NotRequired[OpenvpnMgmtTypedDict] oracle: NotRequired[OracleTypedDict] @@ -254,12 +264,14 @@ class ServiceScanTypedDict(TypedDict): redis: NotRequired[RedisTypedDict] redline: NotRequired[RedlineTypedDict] redlion_crimson: NotRequired[RedlionCrimsonTypedDict] + reolink_baichuan: NotRequired[ReolinkBaichuanTypedDict] representative_info: NotRequired[RepresentativeInfoTypedDict] rifatron: NotRequired[RifatronTypedDict] ripple: NotRequired[RippleTypedDict] rlogin: NotRequired[RloginTypedDict] rocketmq: NotRequired[RocketmqTypedDict] routeros_api: NotRequired[RouterosAPITypedDict] + rtmp: NotRequired[RtmpTypedDict] rtsp: NotRequired[RtspTypedDict] rustdesk_heartbeat: NotRequired[RustdeskHeartbeatTypedDict] rustdesk_relay: NotRequired[RustdeskRelayTypedDict] @@ -283,6 +295,7 @@ class ServiceScanTypedDict(TypedDict): ssh: NotRequired[SSHTypedDict] steam: NotRequired[SteamTypedDict] stun: NotRequired[StunTypedDict] + synergy: NotRequired[SynergyTypedDict] tacacs_plus: NotRequired[TacacsPlusTypedDict] team_viewer: NotRequired[TeamViewerTypedDict] telnet: NotRequired[TelnetTypedDict] @@ -295,6 +308,7 @@ class ServiceScanTypedDict(TypedDict): ventrilo: NotRequired[VentriloTypedDict] vnc: NotRequired[VncTypedDict] weblogic_t3: NotRequired[WeblogicT3TypedDict] + wince_cerdisp: NotRequired[WinceCerdispTypedDict] winrm: NotRequired[WinrmTypedDict] ws_discovery: NotRequired[WsDiscoveryTypedDict] x11: NotRequired[X11TypedDict] @@ -324,6 +338,8 @@ class ServiceScan(BaseModel): cisco_ipsla: Optional[CiscoIpsla] = None + clickhouse_native: Optional[ClickHouseNative] = None + cmore: Optional[Cmore] = None coap: Optional[Coap] = None @@ -374,6 +390,8 @@ class ServiceScan(BaseModel): gemini: Optional[Gemini] = None + gopher: Optional[Gopher] = None + hajime: Optional[Hajime] = None hid_vertx: Optional[HidVertx] = None @@ -456,6 +474,8 @@ class ServiceScan(BaseModel): opc_ua: Optional[OpcUa] = None + openflow: Optional[Openflow] = None + openvpn: Optional[Openvpn] = None openvpn_mgmt: Optional[OpenvpnMgmt] = None @@ -492,6 +512,8 @@ class ServiceScan(BaseModel): redlion_crimson: Optional[RedlionCrimson] = None + reolink_baichuan: Optional[ReolinkBaichuan] = None + representative_info: Optional[RepresentativeInfo] = None rifatron: Optional[Rifatron] = None @@ -504,6 +526,8 @@ class ServiceScan(BaseModel): routeros_api: Optional[RouterosAPI] = None + rtmp: Optional[Rtmp] = None + rtsp: Optional[Rtsp] = None rustdesk_heartbeat: Optional[RustdeskHeartbeat] = None @@ -550,6 +574,8 @@ class ServiceScan(BaseModel): stun: Optional[Stun] = None + synergy: Optional[Synergy] = None + tacacs_plus: Optional[TacacsPlus] = None team_viewer: Optional[TeamViewer] = None @@ -574,6 +600,8 @@ class ServiceScan(BaseModel): weblogic_t3: Optional[WeblogicT3] = None + wince_cerdisp: Optional[WinceCerdisp] = None + winrm: Optional[Winrm] = None ws_discovery: Optional[WsDiscovery] = None @@ -606,6 +634,7 @@ def serialize_model(self, handler): "checkpoint_topology", "chromecast", "cisco_ipsla", + "clickhouse_native", "cmore", "coap", "crestron_cp3", @@ -631,6 +660,7 @@ def serialize_model(self, handler): "ftp", "gearman", "gemini", + "gopher", "hajime", "hid_vertx", "hikvision", @@ -672,6 +702,7 @@ def serialize_model(self, handler): "onc", "onvif", "opc_ua", + "openflow", "openvpn", "openvpn_mgmt", "oracle", @@ -690,12 +721,14 @@ def serialize_model(self, handler): "redis", "redline", "redlion_crimson", + "reolink_baichuan", "representative_info", "rifatron", "ripple", "rlogin", "rocketmq", "routeros_api", + "rtmp", "rtsp", "rustdesk_heartbeat", "rustdesk_relay", @@ -719,6 +752,7 @@ def serialize_model(self, handler): "ssh", "steam", "stun", + "synergy", "tacacs_plus", "team_viewer", "telnet", @@ -731,6 +765,7 @@ def serialize_model(self, handler): "ventrilo", "vnc", "weblogic_t3", + "wince_cerdisp", "winrm", "ws_discovery", "x11", diff --git a/src/censys_platform/models/synergy.py b/src/censys_platform/models/synergy.py new file mode 100644 index 00000000..70442f85 --- /dev/null +++ b/src/censys_platform/models/synergy.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class SynergyTypedDict(TypedDict): + protocol_major: NotRequired[int] + protocol_minor: NotRequired[int] + protocol_version: NotRequired[str] + + +class Synergy(BaseModel): + protocol_major: Optional[int] = None + + protocol_minor: Optional[int] = None + + protocol_version: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["protocol_major", "protocol_minor", "protocol_version"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/tagoperation.py b/src/censys_platform/models/tagoperation.py new file mode 100644 index 00000000..54d3a793 --- /dev/null +++ b/src/censys_platform/models/tagoperation.py @@ -0,0 +1,132 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform import models, utils +from censys_platform.types import BaseModel, UNSET_SENTINEL +from datetime import datetime +from enum import Enum +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class TagOperationStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The current status of the operation.""" + + PENDING = "pending" + RUNNING = "running" + SUCCEEDED = "succeeded" + LIMIT_REACHED = "limit_reached" + FAILED = "failed" + CANCELLED = "cancelled" + + +class TagOperationType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Whether the operation creates or deletes tag assignments.""" + + BULK_CREATE = "bulk_create" + BULK_DELETE = "bulk_delete" + + +class TagOperationTypedDict(TypedDict): + created_at: datetime + r"""RFC3339 timestamp when the operation was created.""" + id: str + r"""The unique ID of the operation.""" + processed_count: int + r"""The number of assets that have been processed so far.""" + status: TagOperationStatus + r"""The current status of the operation.""" + successful_count: int + r"""The number of assets that have been successfully processed so far.""" + tag_id: str + r"""The ID of the tag the operation applies to.""" + tag_name: str + r"""Snapshot of the tag's display name at the time the operation was created.""" + total_count: int + r"""The total number of assets the operation will process. For bulk create operations this is an approximate value set at the start; for bulk delete operations it is set at completion.""" + type: TagOperationType + r"""Whether the operation creates or deletes tag assignments.""" + ended_at: NotRequired[datetime] + r"""RFC3339 timestamp when the operation completed. Omitted while the operation is still in progress.""" + error_message: NotRequired[str] + r"""Failure detail. Only set when the operation failed.""" + query: NotRequired[str] + r"""The CenQL query used to identify the assets to tag. Only set for bulk create operations.""" + status_message: NotRequired[str] + r"""A human-readable explanation of the operation's outcome, set once the operation finishes — for example, how many assets were assigned, or that the tag's plan asset limit was reached. For failed operations it mirrors error_message.""" + + +class TagOperation(BaseModel): + created_at: datetime + r"""RFC3339 timestamp when the operation was created.""" + + id: str + r"""The unique ID of the operation.""" + + processed_count: int + r"""The number of assets that have been processed so far.""" + + status: TagOperationStatus + r"""The current status of the operation.""" + + successful_count: int + r"""The number of assets that have been successfully processed so far.""" + + tag_id: str + r"""The ID of the tag the operation applies to.""" + + tag_name: str + r"""Snapshot of the tag's display name at the time the operation was created.""" + + total_count: int + r"""The total number of assets the operation will process. For bulk create operations this is an approximate value set at the start; for bulk delete operations it is set at completion.""" + + type: TagOperationType + r"""Whether the operation creates or deletes tag assignments.""" + + ended_at: Optional[datetime] = None + r"""RFC3339 timestamp when the operation completed. Omitted while the operation is still in progress.""" + + error_message: Optional[str] = None + r"""Failure detail. Only set when the operation failed.""" + + query: Optional[str] = None + r"""The CenQL query used to identify the assets to tag. Only set for bulk create operations.""" + + status_message: Optional[str] = None + r"""A human-readable explanation of the operation's outcome, set once the operation finishes — for example, how many assets were assigned, or that the tag's plan asset limit was reached. For failed operations it mirrors error_message.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.TagOperationStatus(value) + except ValueError: + return value + return value + + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.TagOperationType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ended_at", "error_message", "query", "status_message"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/tagoperationslist.py b/src/censys_platform/models/tagoperationslist.py new file mode 100644 index 00000000..0cac015a --- /dev/null +++ b/src/censys_platform/models/tagoperationslist.py @@ -0,0 +1,53 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .tagoperation import TagOperation, TagOperationTypedDict +from censys_platform.types import BaseModel, Nullable, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class TagOperationsListTypedDict(TypedDict): + operations: Nullable[List[TagOperationTypedDict]] + r"""The list of tag operations.""" + total_size: int + r"""Total number of operations matching the filters.""" + next_page_token: NotRequired[str] + r"""Token to retrieve the next page of results. Omitted when there are no more results.""" + + +class TagOperationsList(BaseModel): + operations: Nullable[List[TagOperation]] + r"""The list of tag operations.""" + + total_size: int + r"""Total number of operations matching the filters.""" + + next_page_token: Optional[str] = None + r"""Token to retrieve the next page of results. Omitted when there are no more results.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["next_page_token"]) + nullable_fields = set(["operations"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/thirdparty.py b/src/censys_platform/models/thirdparty.py new file mode 100644 index 00000000..4a5aa796 --- /dev/null +++ b/src/censys_platform/models/thirdparty.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .malloryai import MalloryAI, MalloryAITypedDict +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List +from typing_extensions import NotRequired, TypedDict + + +class ThirdPartyTypedDict(TypedDict): + mallory: NotRequired[Nullable[List[MalloryAITypedDict]]] + r"""Threat intelligence records from MalloryAI.""" + + +class ThirdParty(BaseModel): + mallory: OptionalNullable[List[MalloryAI]] = UNSET + r"""Threat intelligence records from MalloryAI.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["mallory"]) + nullable_fields = set(["mallory"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/models/v3_globaldata_asset_host_enrichmentop.py b/src/censys_platform/models/v3_globaldata_asset_host_enrichmentop.py new file mode 100644 index 00000000..370a3014 --- /dev/null +++ b/src/censys_platform/models/v3_globaldata_asset_host_enrichmentop.py @@ -0,0 +1,86 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .responseenvelopehostenrichmentasset import ( + ResponseEnvelopeHostEnrichmentAsset, + ResponseEnvelopeHostEnrichmentAssetTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from censys_platform.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class V3GlobaldataAssetHostEnrichmentGlobalsTypedDict(TypedDict): + organization_id: NotRequired[str] + + +class V3GlobaldataAssetHostEnrichmentGlobals(BaseModel): + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3GlobaldataAssetHostEnrichmentRequestTypedDict(TypedDict): + host_ip: str + r"""The IP address of a host.""" + organization_id: NotRequired[str] + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + +class V3GlobaldataAssetHostEnrichmentRequest(BaseModel): + host_ip: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The IP address of a host.""" + + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3GlobaldataAssetHostEnrichmentResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: ResponseEnvelopeHostEnrichmentAssetTypedDict + + +class V3GlobaldataAssetHostEnrichmentResponse(BaseModel): + headers: Dict[str, List[str]] + + result: ResponseEnvelopeHostEnrichmentAsset diff --git a/src/censys_platform/models/v3_tags_bulk_create_assignmentsop.py b/src/censys_platform/models/v3_tags_bulk_create_assignmentsop.py new file mode 100644 index 00000000..b558272e --- /dev/null +++ b/src/censys_platform/models/v3_tags_bulk_create_assignmentsop.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .bulkcreatetagassignmentsinputbody import ( + BulkCreateTagAssignmentsInputBody, + BulkCreateTagAssignmentsInputBodyTypedDict, +) +from .responseenvelopetagoperation import ( + ResponseEnvelopeTagOperation, + ResponseEnvelopeTagOperationTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from censys_platform.utils import ( + FieldMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class V3TagsBulkCreateAssignmentsGlobalsTypedDict(TypedDict): + organization_id: NotRequired[str] + + +class V3TagsBulkCreateAssignmentsGlobals(BaseModel): + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsBulkCreateAssignmentsRequestTypedDict(TypedDict): + tag_id: str + r"""The ID of the tag to assign.""" + bulk_create_tag_assignments_input_body: BulkCreateTagAssignmentsInputBodyTypedDict + organization_id: NotRequired[str] + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + +class V3TagsBulkCreateAssignmentsRequest(BaseModel): + tag_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the tag to assign.""" + + bulk_create_tag_assignments_input_body: Annotated[ + BulkCreateTagAssignmentsInputBody, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsBulkCreateAssignmentsResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: ResponseEnvelopeTagOperationTypedDict + + +class V3TagsBulkCreateAssignmentsResponse(BaseModel): + headers: Dict[str, List[str]] + + result: ResponseEnvelopeTagOperation diff --git a/src/censys_platform/models/v3_tags_bulk_delete_assignmentsop.py b/src/censys_platform/models/v3_tags_bulk_delete_assignmentsop.py new file mode 100644 index 00000000..c8b674a0 --- /dev/null +++ b/src/censys_platform/models/v3_tags_bulk_delete_assignmentsop.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .bulkdeletetagassignmentsinputbody import ( + BulkDeleteTagAssignmentsInputBody, + BulkDeleteTagAssignmentsInputBodyTypedDict, +) +from .responseenvelopetagoperation import ( + ResponseEnvelopeTagOperation, + ResponseEnvelopeTagOperationTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from censys_platform.utils import ( + FieldMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class V3TagsBulkDeleteAssignmentsGlobalsTypedDict(TypedDict): + organization_id: NotRequired[str] + + +class V3TagsBulkDeleteAssignmentsGlobals(BaseModel): + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsBulkDeleteAssignmentsRequestTypedDict(TypedDict): + tag_id: str + r"""The ID of the tag whose assignments to delete.""" + bulk_delete_tag_assignments_input_body: BulkDeleteTagAssignmentsInputBodyTypedDict + organization_id: NotRequired[str] + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + +class V3TagsBulkDeleteAssignmentsRequest(BaseModel): + tag_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the tag whose assignments to delete.""" + + bulk_delete_tag_assignments_input_body: Annotated[ + BulkDeleteTagAssignmentsInputBody, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsBulkDeleteAssignmentsResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: ResponseEnvelopeTagOperationTypedDict + + +class V3TagsBulkDeleteAssignmentsResponse(BaseModel): + headers: Dict[str, List[str]] + + result: ResponseEnvelopeTagOperation diff --git a/src/censys_platform/models/v3_tags_cancel_operationop.py b/src/censys_platform/models/v3_tags_cancel_operationop.py new file mode 100644 index 00000000..b3eccdaa --- /dev/null +++ b/src/censys_platform/models/v3_tags_cancel_operationop.py @@ -0,0 +1,93 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .responseenvelopetagoperation import ( + ResponseEnvelopeTagOperation, + ResponseEnvelopeTagOperationTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from censys_platform.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class V3TagsCancelOperationGlobalsTypedDict(TypedDict): + organization_id: NotRequired[str] + + +class V3TagsCancelOperationGlobals(BaseModel): + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsCancelOperationRequestTypedDict(TypedDict): + tag_id: str + r"""The ID of the tag the operation belongs to.""" + operation_id: str + r"""The ID of the operation to cancel.""" + organization_id: NotRequired[str] + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + +class V3TagsCancelOperationRequest(BaseModel): + tag_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the tag the operation belongs to.""" + + operation_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the operation to cancel.""" + + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsCancelOperationResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: ResponseEnvelopeTagOperationTypedDict + + +class V3TagsCancelOperationResponse(BaseModel): + headers: Dict[str, List[str]] + + result: ResponseEnvelopeTagOperation diff --git a/src/censys_platform/models/v3_tags_list_operationsop.py b/src/censys_platform/models/v3_tags_list_operationsop.py new file mode 100644 index 00000000..f26c7f69 --- /dev/null +++ b/src/censys_platform/models/v3_tags_list_operationsop.py @@ -0,0 +1,154 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .responseenvelopetagoperationslist import ( + ResponseEnvelopeTagOperationsList, + ResponseEnvelopeTagOperationsListTypedDict, +) +from censys_platform.types import BaseModel, UNSET_SENTINEL +from censys_platform.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from enum import Enum +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class V3TagsListOperationsGlobalsTypedDict(TypedDict): + organization_id: NotRequired[str] + + +class V3TagsListOperationsGlobals(BaseModel): + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["organization_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsListOperationsQueryParamOrderBy(str, Enum): + r"""Sort order. Supported values: create_time_asc, create_time_desc.""" + + CREATE_TIME_ASC = "create_time_asc" + CREATE_TIME_DESC = "create_time_desc" + + +class QueryParamType(str, Enum): + r"""Filter by operation type.""" + + BULK_CREATE = "bulk_create" + BULK_DELETE = "bulk_delete" + + +class QueryParamStatus(str, Enum): + r"""Filter by operation status.""" + + PENDING = "pending" + RUNNING = "running" + SUCCEEDED = "succeeded" + LIMIT_REACHED = "limit_reached" + FAILED = "failed" + CANCELLED = "cancelled" + + +class V3TagsListOperationsRequestTypedDict(TypedDict): + tag_id: str + r"""The ID of the tag whose operations to list, or `-` to list operations across all tags in your organization.""" + organization_id: NotRequired[str] + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + page_size: NotRequired[int] + r"""Number of operations to return per page.""" + page_token: NotRequired[str] + r"""Pagination token from a previous response to retrieve the next page of results.""" + order_by: NotRequired[V3TagsListOperationsQueryParamOrderBy] + r"""Sort order. Supported values: create_time_asc, create_time_desc.""" + type: NotRequired[QueryParamType] + r"""Filter by operation type.""" + status: NotRequired[QueryParamStatus] + r"""Filter by operation status.""" + + +class V3TagsListOperationsRequest(BaseModel): + tag_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the tag whose operations to list, or `-` to list operations across all tags in your organization.""" + + organization_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.""" + + page_size: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = 100 + r"""Number of operations to return per page.""" + + page_token: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""Pagination token from a previous response to retrieve the next page of results.""" + + order_by: Annotated[ + Optional[V3TagsListOperationsQueryParamOrderBy], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = V3TagsListOperationsQueryParamOrderBy.CREATE_TIME_DESC + r"""Sort order. Supported values: create_time_asc, create_time_desc.""" + + type: Annotated[ + Optional[QueryParamType], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""Filter by operation type.""" + + status: Annotated[ + Optional[QueryParamStatus], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""Filter by operation status.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["organization_id", "page_size", "page_token", "order_by", "type", "status"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class V3TagsListOperationsResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: ResponseEnvelopeTagOperationsListTypedDict + + +class V3TagsListOperationsResponse(BaseModel): + headers: Dict[str, List[str]] + + result: ResponseEnvelopeTagOperationsList diff --git a/src/censys_platform/models/wincecerdisp.py b/src/censys_platform/models/wincecerdisp.py new file mode 100644 index 00000000..c17379db --- /dev/null +++ b/src/censys_platform/models/wincecerdisp.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class WinceCerdispTypedDict(TypedDict): + color_depth_bpp: NotRequired[int] + device_family: NotRequired[str] + device_id: NotRequired[str] + flags: NotRequired[int] + manufacturer: NotRequired[str] + screen_height: NotRequired[int] + screen_width: NotRequired[int] + selector: NotRequired[int] + + +class WinceCerdisp(BaseModel): + color_depth_bpp: Optional[int] = None + + device_family: Optional[str] = None + + device_id: Optional[str] = None + + flags: Optional[int] = None + + manufacturer: Optional[str] = None + + screen_height: Optional[int] = None + + screen_width: Optional[int] = None + + selector: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "color_depth_bpp", + "device_family", + "device_id", + "flags", + "manufacturer", + "screen_height", + "screen_width", + "selector", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/censys_platform/models/wordpress.py b/src/censys_platform/models/wordpress.py new file mode 100644 index 00000000..3a4f3f0a --- /dev/null +++ b/src/censys_platform/models/wordpress.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from censys_platform.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class WordpressTypedDict(TypedDict): + description: NotRequired[str] + gmt_offset: NotRequired[str] + home: NotRequired[str] + name: NotRequired[str] + namespaces: NotRequired[Nullable[List[str]]] + timezone_string: NotRequired[str] + + +class Wordpress(BaseModel): + description: Optional[str] = None + + gmt_offset: Optional[str] = None + + home: Optional[str] = None + + name: Optional[str] = None + + namespaces: OptionalNullable[List[str]] = UNSET + + timezone_string: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "gmt_offset", + "home", + "name", + "namespaces", + "timezone_string", + ] + ) + nullable_fields = set(["namespaces"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/src/censys_platform/tags_and_comments.py b/src/censys_platform/tags_and_comments.py index 04a46c71..4052a9c0 100644 --- a/src/censys_platform/tags_and_comments.py +++ b/src/censys_platform/tags_and_comments.py @@ -2489,29 +2489,955 @@ async def create_tag_assignment_async( raise models.SDKError("Unexpected response received", http_res) + def bulk_create_tag_assignments( + self, + *, + tag_id: str, + bulk_create_tag_assignments_input_body: Union[ + models.BulkCreateTagAssignmentsInputBody, + models.BulkCreateTagAssignmentsInputBodyTypedDict, + ], + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsBulkCreateAssignmentsResponse: + r"""Bulk create tag assignments + + Start a long-running operation that assigns a tag to every asset matching a CenQL query. The operation runs asynchronously; use the returned operation to track its progress.

A tag can hold a limited number of asset assignments, and the limit depends on your plan. If the operation reaches that limit before every matching asset is tagged, it finishes with status `limit_reached`.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag to assign. + :param bulk_create_tag_assignments_input_body: + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsBulkCreateAssignmentsRequest( + organization_id=organization_id, + tag_id=tag_id, + bulk_create_tag_assignments_input_body=utils.get_pydantic_model( + bulk_create_tag_assignments_input_body, + models.BulkCreateTagAssignmentsInputBody, + ), + ) + + req = self._build_request( + method="POST", + path="/v3/tags/{tag_id}/assignments/bulk-create", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsBulkCreateAssignmentsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.bulk_create_tag_assignments_input_body, + False, + False, + "json", + models.BulkCreateTagAssignmentsInputBody, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-bulk-create-assignments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return models.V3TagsBulkCreateAssignmentsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + async def bulk_create_tag_assignments_async( + self, + *, + tag_id: str, + bulk_create_tag_assignments_input_body: Union[ + models.BulkCreateTagAssignmentsInputBody, + models.BulkCreateTagAssignmentsInputBodyTypedDict, + ], + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsBulkCreateAssignmentsResponse: + r"""Bulk create tag assignments + + Start a long-running operation that assigns a tag to every asset matching a CenQL query. The operation runs asynchronously; use the returned operation to track its progress.

A tag can hold a limited number of asset assignments, and the limit depends on your plan. If the operation reaches that limit before every matching asset is tagged, it finishes with status `limit_reached`.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag to assign. + :param bulk_create_tag_assignments_input_body: + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsBulkCreateAssignmentsRequest( + organization_id=organization_id, + tag_id=tag_id, + bulk_create_tag_assignments_input_body=utils.get_pydantic_model( + bulk_create_tag_assignments_input_body, + models.BulkCreateTagAssignmentsInputBody, + ), + ) + + req = self._build_request_async( + method="POST", + path="/v3/tags/{tag_id}/assignments/bulk-create", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsBulkCreateAssignmentsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.bulk_create_tag_assignments_input_body, + False, + False, + "json", + models.BulkCreateTagAssignmentsInputBody, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-bulk-create-assignments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return models.V3TagsBulkCreateAssignmentsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + def bulk_delete_tag_assignments( + self, + *, + tag_id: str, + bulk_delete_tag_assignments_input_body: Union[ + models.BulkDeleteTagAssignmentsInputBody, + models.BulkDeleteTagAssignmentsInputBodyTypedDict, + ], + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsBulkDeleteAssignmentsResponse: + r"""Bulk delete tag assignments + + Start a long-running operation that removes a tag from its assigned assets, optionally restricted to a creation-time window. The operation runs asynchronously; use the returned operation to track its progress.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag whose assignments to delete. + :param bulk_delete_tag_assignments_input_body: + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsBulkDeleteAssignmentsRequest( + organization_id=organization_id, + tag_id=tag_id, + bulk_delete_tag_assignments_input_body=utils.get_pydantic_model( + bulk_delete_tag_assignments_input_body, + models.BulkDeleteTagAssignmentsInputBody, + ), + ) + + req = self._build_request( + method="POST", + path="/v3/tags/{tag_id}/assignments/bulk-delete", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsBulkDeleteAssignmentsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.bulk_delete_tag_assignments_input_body, + False, + False, + "json", + models.BulkDeleteTagAssignmentsInputBody, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-bulk-delete-assignments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return models.V3TagsBulkDeleteAssignmentsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + async def bulk_delete_tag_assignments_async( + self, + *, + tag_id: str, + bulk_delete_tag_assignments_input_body: Union[ + models.BulkDeleteTagAssignmentsInputBody, + models.BulkDeleteTagAssignmentsInputBodyTypedDict, + ], + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsBulkDeleteAssignmentsResponse: + r"""Bulk delete tag assignments + + Start a long-running operation that removes a tag from its assigned assets, optionally restricted to a creation-time window. The operation runs asynchronously; use the returned operation to track its progress.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag whose assignments to delete. + :param bulk_delete_tag_assignments_input_body: + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsBulkDeleteAssignmentsRequest( + organization_id=organization_id, + tag_id=tag_id, + bulk_delete_tag_assignments_input_body=utils.get_pydantic_model( + bulk_delete_tag_assignments_input_body, + models.BulkDeleteTagAssignmentsInputBody, + ), + ) + + req = self._build_request_async( + method="POST", + path="/v3/tags/{tag_id}/assignments/bulk-delete", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsBulkDeleteAssignmentsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.bulk_delete_tag_assignments_input_body, + False, + False, + "json", + models.BulkDeleteTagAssignmentsInputBody, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-bulk-delete-assignments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "202", "application/json"): + return models.V3TagsBulkDeleteAssignmentsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + def delete_tag_assignment( self, *, tag_id: str, - assignment_id: str, + assignment_id: str, + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[DeleteTagAssignmentAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsDeleteAssignmentResponse: + r"""Delete a tag assignment + + Remove a tag assignment from an asset. This action is permanent and cannot be undone. Removing an assignment only detaches the tag from the specified asset; the tag itself is not deleted. Only the tag's creator or an organization admin can delete an assignment for a `private` tag. Assignments for `shared` tags can be deleted by any organization member.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag. + :param assignment_id: The ID of the assignment to delete. + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsDeleteAssignmentRequest( + organization_id=organization_id, + tag_id=tag_id, + assignment_id=assignment_id, + ) + + req = self._build_request( + method="DELETE", + path="/v3/tags/{tag_id}/assignments/{assignment_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, application/problem+json;q=0", + http_headers=http_headers, + _globals=models.V3TagsDeleteAssignmentGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-delete-assignment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return models.V3TagsDeleteAssignmentResponse( + headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + async def delete_tag_assignment_async( + self, + *, + tag_id: str, + assignment_id: str, + organization_id: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + accept_header_override: Optional[DeleteTagAssignmentAcceptEnum] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsDeleteAssignmentResponse: + r"""Delete a tag assignment + + Remove a tag assignment from an asset. This action is permanent and cannot be undone. Removing an assignment only detaches the tag from the specified asset; the tag itself is not deleted. Only the tag's creator or an organization admin can delete an assignment for a `private` tag. Assignments for `shared` tags can be deleted by any organization member.

This endpoint does not cost any credits to execute. + + :param tag_id: The ID of the tag. + :param assignment_id: The ID of the assignment to delete. + :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.V3TagsDeleteAssignmentRequest( + organization_id=organization_id, + tag_id=tag_id, + assignment_id=assignment_id, + ) + + req = self._build_request_async( + method="DELETE", + path="/v3/tags/{tag_id}/assignments/{assignment_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "application/json;q=1, application/problem+json;q=0", + http_headers=http_headers, + _globals=models.V3TagsDeleteAssignmentGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-delete-assignment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return models.V3TagsDeleteAssignmentResponse( + headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "404", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + def list_tag_operations( + self, + *, + request: Union[ + models.V3TagsListOperationsRequest, + models.V3TagsListOperationsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsListOperationsResponse: + r"""List tag operations + + Retrieve a paginated list of bulk tag operations. Provide a tag ID in the path to scope the listing to a single tag, or `-` to list operations across all tags in your organization. Use query parameters to filter by type or status.

This endpoint does not cost any credits to execute. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, models.V3TagsListOperationsRequest) + request = cast(models.V3TagsListOperationsRequest, request) + + req = self._build_request( + method="GET", + path="/v3/tags/{tag_id}/operations", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsListOperationsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-list-operations", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.V3TagsListOperationsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperationsList, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + async def list_tag_operations_async( + self, + *, + request: Union[ + models.V3TagsListOperationsRequest, + models.V3TagsListOperationsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.V3TagsListOperationsResponse: + r"""List tag operations + + Retrieve a paginated list of bulk tag operations. Provide a tag ID in the path to scope the listing to a single tag, or `-` to list operations across all tags in your organization. Use query parameters to filter by type or status.

This endpoint does not cost any credits to execute. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, models.V3TagsListOperationsRequest) + request = cast(models.V3TagsListOperationsRequest, request) + + req = self._build_request_async( + method="GET", + path="/v3/tags/{tag_id}/operations", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.V3TagsListOperationsGlobals( + organization_id=self.sdk_configuration.globals.organization_id, + ), + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="v3-tags-list-operations", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.V3TagsListOperationsResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperationsList, http_res + ), + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.AuthenticationErrorData, http_res + ) + raise models.AuthenticationError(response_data, http_res) + if utils.match_response( + http_res, ["403", "409", "422"], "application/problem+json" + ): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "500", "application/problem+json"): + response_data = unmarshal_json_response(models.ErrorModelData, http_res) + raise models.ErrorModel(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.SDKError("API error occurred", http_res, http_res_text) + + raise models.SDKError("Unexpected response received", http_res) + + def cancel_tag_operation( + self, + *, + tag_id: str, + operation_id: str, organization_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[DeleteTagAssignmentAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.V3TagsDeleteAssignmentResponse: - r"""Delete a tag assignment + ) -> models.V3TagsCancelOperationResponse: + r"""Cancel a tag operation - Remove a tag assignment from an asset. This action is permanent and cannot be undone. Removing an assignment only detaches the tag from the specified asset; the tag itself is not deleted. Only the tag's creator or an organization admin can delete an assignment for a `private` tag. Assignments for `shared` tags can be deleted by any organization member.

This endpoint does not cost any credits to execute. + Request cancellation of an in-progress bulk tag operation. Cancellation is cooperative: the operation finishes the page it is currently processing, then stops. Work already committed before cancellation is preserved.

Cancellation is not a rollback — it stops further work but does not remove assignments the operation already created. To remove assignments, use the bulk-delete endpoint. An operation that has already finished cannot be cancelled.

This endpoint does not cost any credits to execute. - :param tag_id: The ID of the tag. - :param assignment_id: The ID of the assignment to delete. + :param tag_id: The ID of the tag the operation belongs to. + :param operation_id: The ID of the operation to cancel. :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -2524,15 +3450,15 @@ def delete_tag_assignment( else: base_url = self._get_url(base_url, url_variables) - request = models.V3TagsDeleteAssignmentRequest( + request = models.V3TagsCancelOperationRequest( organization_id=organization_id, tag_id=tag_id, - assignment_id=assignment_id, + operation_id=operation_id, ) req = self._build_request( - method="DELETE", - path="/v3/tags/{tag_id}/assignments/{assignment_id}", + method="POST", + path="/v3/tags/{tag_id}/operations/{operation_id}/cancel", base_url=base_url, url_variables=url_variables, request=request, @@ -2540,11 +3466,9 @@ def delete_tag_assignment( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, application/problem+json;q=0", + accept_header_value="application/json", http_headers=http_headers, - _globals=models.V3TagsDeleteAssignmentGlobals( + _globals=models.V3TagsCancelOperationGlobals( organization_id=self.sdk_configuration.globals.organization_id, ), security=self.sdk_configuration.security, @@ -2564,7 +3488,7 @@ def delete_tag_assignment( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="v3-tags-delete-assignment", + operation_id="v3-tags-cancel-operation", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), @@ -2574,9 +3498,12 @@ def delete_tag_assignment( ) response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return models.V3TagsDeleteAssignmentResponse( - headers=utils.get_response_headers(http_res.headers) + if utils.match_response(http_res, "200", "application/json"): + return models.V3TagsCancelOperationResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), ) if utils.match_response(http_res, "401", "application/json"): response_data = unmarshal_json_response( @@ -2584,7 +3511,7 @@ def delete_tag_assignment( ) raise models.AuthenticationError(response_data, http_res) if utils.match_response( - http_res, ["403", "404", "422"], "application/problem+json" + http_res, ["403", "404", "409", "422"], "application/problem+json" ): response_data = unmarshal_json_response(models.ErrorModelData, http_res) raise models.ErrorModel(response_data, http_res) @@ -2600,29 +3527,27 @@ def delete_tag_assignment( raise models.SDKError("Unexpected response received", http_res) - async def delete_tag_assignment_async( + async def cancel_tag_operation_async( self, *, tag_id: str, - assignment_id: str, + operation_id: str, organization_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[DeleteTagAssignmentAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.V3TagsDeleteAssignmentResponse: - r"""Delete a tag assignment + ) -> models.V3TagsCancelOperationResponse: + r"""Cancel a tag operation - Remove a tag assignment from an asset. This action is permanent and cannot be undone. Removing an assignment only detaches the tag from the specified asset; the tag itself is not deleted. Only the tag's creator or an organization admin can delete an assignment for a `private` tag. Assignments for `shared` tags can be deleted by any organization member.

This endpoint does not cost any credits to execute. + Request cancellation of an in-progress bulk tag operation. Cancellation is cooperative: the operation finishes the page it is currently processing, then stops. Work already committed before cancellation is preserved.

Cancellation is not a rollback — it stops further work but does not remove assignments the operation already created. To remove assignments, use the bulk-delete endpoint. An operation that has already finished cannot be cancelled.

This endpoint does not cost any credits to execute. - :param tag_id: The ID of the tag. - :param assignment_id: The ID of the assignment to delete. + :param tag_id: The ID of the tag the operation belongs to. + :param operation_id: The ID of the operation to cancel. :param organization_id: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -2635,15 +3560,15 @@ async def delete_tag_assignment_async( else: base_url = self._get_url(base_url, url_variables) - request = models.V3TagsDeleteAssignmentRequest( + request = models.V3TagsCancelOperationRequest( organization_id=organization_id, tag_id=tag_id, - assignment_id=assignment_id, + operation_id=operation_id, ) req = self._build_request_async( - method="DELETE", - path="/v3/tags/{tag_id}/assignments/{assignment_id}", + method="POST", + path="/v3/tags/{tag_id}/operations/{operation_id}/cancel", base_url=base_url, url_variables=url_variables, request=request, @@ -2651,11 +3576,9 @@ async def delete_tag_assignment_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, application/problem+json;q=0", + accept_header_value="application/json", http_headers=http_headers, - _globals=models.V3TagsDeleteAssignmentGlobals( + _globals=models.V3TagsCancelOperationGlobals( organization_id=self.sdk_configuration.globals.organization_id, ), security=self.sdk_configuration.security, @@ -2675,7 +3598,7 @@ async def delete_tag_assignment_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="v3-tags-delete-assignment", + operation_id="v3-tags-cancel-operation", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), @@ -2685,9 +3608,12 @@ async def delete_tag_assignment_async( ) response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return models.V3TagsDeleteAssignmentResponse( - headers=utils.get_response_headers(http_res.headers) + if utils.match_response(http_res, "200", "application/json"): + return models.V3TagsCancelOperationResponse( + result=unmarshal_json_response( + models.ResponseEnvelopeTagOperation, http_res + ), + headers=utils.get_response_headers(http_res.headers), ) if utils.match_response(http_res, "401", "application/json"): response_data = unmarshal_json_response( @@ -2695,7 +3621,7 @@ async def delete_tag_assignment_async( ) raise models.AuthenticationError(response_data, http_res) if utils.match_response( - http_res, ["403", "404", "422"], "application/problem+json" + http_res, ["403", "404", "409", "422"], "application/problem+json" ): response_data = unmarshal_json_response(models.ErrorModelData, http_res) raise models.ErrorModel(response_data, http_res) diff --git a/src/censys_platform/types/base64fileinput.py b/src/censys_platform/types/base64fileinput.py index 25fc5398..862566fe 100644 --- a/src/censys_platform/types/base64fileinput.py +++ b/src/censys_platform/types/base64fileinput.py @@ -23,7 +23,11 @@ def encode_base64_file_input(value: Any) -> Any: with open(value, "rb") as fh: binary = fh.read() else: + # Restore position after reading: pydantic may validate the same stream more than once. + position = value.tell() if value.seekable() else None binary = value.read() + if position is not None: + value.seek(position) if isinstance(binary, str): binary = binary.encode() if not isinstance(binary, (bytes, bytearray)): diff --git a/src/censys_platform/utils/eventstreaming.py b/src/censys_platform/utils/eventstreaming.py index 1c189bf6..a8d4fe5c 100644 --- a/src/censys_platform/utils/eventstreaming.py +++ b/src/censys_platform/utils/eventstreaming.py @@ -7,6 +7,7 @@ Any, Callable, Generic, + List, TypeVar, Optional, Generator, @@ -120,6 +121,7 @@ class ServerEvent: b"\n\r", b"\n\n", ] +MAX_BOUNDARY_LEN = max(len(b) for b in MESSAGE_BOUNDARIES) UTF8_BOM = b"\xef\xbb\xbf" @@ -137,8 +139,10 @@ async def stream_events_async( async for chunk in response.aiter_bytes(): if len(buffer) == 0 and chunk.startswith(UTF8_BOM): chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) buffer += chunk - for i in range(position, len(buffer)): + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): char = buffer[i : i + 1] seq: Optional[bytes] = None if char in [b"\r", b"\n"]: @@ -193,8 +197,10 @@ def stream_events( for chunk in response.iter_bytes(): if len(buffer) == 0 and chunk.startswith(UTF8_BOM): chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) buffer += chunk - for i in range(position, len(buffer)): + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): char = buffer[i : i + 1] seq: Optional[bytes] = None if char in [b"\r", b"\n"]: @@ -248,7 +254,7 @@ def _parse_event( lines = re.split(r"\r?\n|\r", block) publish = False event = ServerEvent() - data = "" + data_parts: List[str] = [] for line in lines: if not line: continue @@ -269,7 +275,7 @@ def _parse_event( event.event = value publish = True elif field == "data": - data += value + "\n" + data_parts.append(value) publish = True elif field == "id": publish = True @@ -281,16 +287,17 @@ def _parse_event( publish = True event.id = event_id + has_data = bool(data_parts) + data = "\n".join(data_parts) - if sentinel and data == f"{sentinel}\n": + if sentinel and has_data and data == sentinel: return None, True, event_id # Skip data-less events when data is required - if not data and publish and data_required: + if not has_data and publish and data_required: return None, False, event_id - if data: - data = data[:-1] + if has_data: try: event.data = json.loads(data) except json.JSONDecodeError: @@ -301,7 +308,7 @@ def _parse_event( out_dict = { k: v for k, v in asdict(event).items() - if v is not None or (k == "data" and data) + if v is not None or (k == "data" and has_data) } out = decoder(json.dumps(out_dict)) diff --git a/src/censys_platform/utils/forms.py b/src/censys_platform/utils/forms.py index f961e76b..fdf0dc9b 100644 --- a/src/censys_platform/utils/forms.py +++ b/src/censys_platform/utils/forms.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +import io from typing import ( Any, Dict, @@ -103,6 +104,10 @@ def _extract_file_properties(file_obj: Any) -> Tuple[str, Any, Any]: if file_metadata.content: content = getattr(file_obj, file_field_name, None) + if isinstance(content, io.TextIOBase): + content = content.read().encode( + getattr(content, "encoding", None) or "utf-8" + ) elif file_field_name == "content_type": content_type = getattr(file_obj, file_field_name, None) else: diff --git a/src/censys_platform/utils/retries.py b/src/censys_platform/utils/retries.py index af07d4e9..ca7b59ef 100644 --- a/src/censys_platform/utils/retries.py +++ b/src/censys_platform/utils/retries.py @@ -11,10 +11,13 @@ class BackoffStrategy: + """Exponential backoff strategy configuration.""" + initial_interval: int max_interval: int exponent: float max_elapsed_time: int + jitter_ms: Optional[int] def __init__( self, @@ -22,24 +25,63 @@ def __init__( max_interval: int, exponent: float, max_elapsed_time: int, + jitter_ms: Optional[int] = None, ): + """Initialize a backoff strategy. + + Args: + initial_interval: Initial retry interval in milliseconds. + max_interval: Maximum retry interval in milliseconds. + exponent: Base of the exponential backoff; the interval grows as + ``initial_interval * exponent ** retries``. + max_elapsed_time: Maximum total elapsed time in milliseconds. + jitter_ms: Additive jitter bound in milliseconds. When set, adds a random + value in ``[0, jitter_ms]`` to each computed backoff interval (default + ``+[0, 1s]``). + + Note: + When a response carries a ``Retry-After`` or ``retry-after-ms`` header, + that delay is used as-is and the sleep-shaping parameters + (``initial_interval``, ``max_interval``, ``exponent``, ``jitter_ms``) are + ignored for that attempt. + """ + if jitter_ms is not None and jitter_ms < 0: + raise ValueError("jitter_ms must be >= 0") self.initial_interval = initial_interval self.max_interval = max_interval self.exponent = exponent self.max_elapsed_time = max_elapsed_time + self.jitter_ms = jitter_ms class RetryConfig: + """Runtime retry configuration.""" + strategy: str backoff: BackoffStrategy retry_connection_errors: bool + status_codes_override: Optional[List[str]] def __init__( - self, strategy: str, backoff: BackoffStrategy, retry_connection_errors: bool + self, + strategy: str, + backoff: BackoffStrategy, + retry_connection_errors: bool, + status_codes_override: Optional[List[str]] = None, ): + """Initialize a retry configuration. + + Args: + strategy: Retry strategy: ``"none"`` or ``"backoff"``. + backoff: Backoff parameters. + retry_connection_errors: Whether to also retry transport-level connection errors. + status_codes_override: Retryable HTTP status codes that take precedence over the + per-operation defaults when non-empty. + """ self.strategy = strategy self.backoff = backoff self.retry_connection_errors = retry_connection_errors + self.status_codes_override = status_codes_override class Retries: @@ -48,7 +90,7 @@ class Retries: def __init__(self, config: RetryConfig, status_codes: List[str]): self.config = config - self.status_codes = status_codes + self.status_codes = config.status_codes_override or status_codes class TemporaryError(Exception): @@ -93,12 +135,28 @@ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: return None +def _parse_retry_after_ms_header(response: httpx.Response) -> Optional[int]: + retry_after_ms_header = response.headers.get("retry-after-ms") + if not retry_after_ms_header: + return None + + try: + milliseconds = float(retry_after_ms_header) + if milliseconds >= 0: + return round(milliseconds) + except (OverflowError, ValueError): + pass + + return None + + def _get_sleep_interval( exception: Exception, initial_interval: int, max_interval: int, exponent: float, retries: int, + jitter_ms: Optional[int] = None, ) -> float: """Get sleep interval for retry with exponential backoff. @@ -108,6 +166,7 @@ def _get_sleep_interval( max_interval: Maximum retry interval in milliseconds. exponent: Base for exponential backoff calculation. retries: Current retry attempt count. + jitter_ms: Additive jitter bound in ms; see ``BackoffStrategy.jitter_ms``. Returns: Sleep interval in seconds. @@ -119,7 +178,11 @@ def _get_sleep_interval( ): return exception.retry_after / 1000 - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) + sleep = (initial_interval / 1000) * exponent**retries + if jitter_ms is not None: + sleep += random.uniform(0, jitter_ms / 1000) + else: + sleep += random.uniform(0, 1) return min(sleep, max_interval / 1000) @@ -162,6 +225,7 @@ def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return func() @@ -206,6 +270,7 @@ async def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return await func() @@ -217,6 +282,7 @@ def retry_with_backoff( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -234,8 +300,17 @@ def retry_with_backoff( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) time.sleep(sleep) retries += 1 @@ -247,6 +322,7 @@ async def retry_with_backoff_async( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -264,8 +340,17 @@ async def retry_with_backoff_async( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) await asyncio.sleep(sleep) retries += 1 From ac79e854c7e1f5d0a4d259b995fcc38e0b2218f1 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 01:01:31 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow