{ "info": { "author": "Cisco Security", "author_email": "", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![Gitter Chat](https://img.shields.io/badge/gitter-join%20chat-brightgreen.svg)](https://gitter.im/CiscoSecurity/Threat-Response \"Gitter Chat\")\n[![Travis CI Build Status](https://travis-ci.com/CiscoSecurity/tr-05-api-module.svg?branch=develop)](https://travis-ci.com/CiscoSecurity/tr-05-api-module)\n[![PyPi Version](https://img.shields.io/pypi/v/threatresponse.svg)](https://pypi.python.org/pypi/threatresponse)\n[![Python Versions](https://img.shields.io/pypi/pyversions/threatresponse.svg)](https://pypi.python.org/pypi/threatresponse)\n\n# Threat Response API Module\n\nPython API Module for Threat Response APIs.\n\n## Installation\n\n* Local\n\n```bash\npip install --upgrade .\npip show threatresponse\n```\n\n* GitHub\n\n```bash\npip install --upgrade git+https://github.com/CiscoSecurity/tr-05-api-module.git[@branch_name_or_release_version]\npip show threatresponse\n```\n\n* PyPi\n\n```bash\npip install --upgrade threatresponse[==release_version]\npip show threatresponse\n```\n\n## Usage\n\n```python\nfrom threatresponse import ThreatResponse\n\nclient = ThreatResponse(\n client_id='', # required\n client_password='', # required\n region='', # optional\n logger=, # optional\n proxy='', # optional\n environment='' # optional\n)\n```\n\n- `client_id` and `client_password` credentials must be taken from an existing\nAPI client for accessing the Cisco Threat Response APIs.\nThe official documentation on how to create such a client can be found\n[here](https://visibility.amp.cisco.com/#/help/integration).\nMake sure to properly set some scopes which will grant the client\ndifferent (ideally minimum) privileges.\n- `region` must be one of: `''` or `'us'` (default), `'eu'`, `'apjc'`.\nOther regions are not supported yet.\n- `logger` must be an (already configured) instance of the built-in\n`logging.Logger` class (or one of its descendants).\n- `timeout` must be a number (`int` or `float`) meaning the default amount of\ntime (in seconds) to wait for the server to send data before giving up and\nraising an exception. Can be overwritten by explicitly specifying `timeout` on\neach call to any endpoint.\n- `proxy` must be a URL in the format: `http[s]://[username[:password]@]host[:port]`.\n- `environment` must be a dict in the format:\n {\n 'visibility': 'https://www.example.com',\n 'private_intel': 'https://www.example.come',\n 'global_intel': 'https://www.example.com',\n }\nBy default will be used: \n {\n 'visibility': 'https://visibility{region}.amp.cisco.com',\n 'private_intel': 'https://private.intel{region}.amp.cisco.com',\n 'global_intel': 'https://intel{region}.amp.cisco.com',\n }\n \n### Concrete Usage\n\n- Inspect\n\nInspect allows to find an observable in a concrete string.\n```python\nresponse = client.inspect.inspect({'content': 'example.com'})\n```\n\n- Observe\n\nObserve returns summary for an observable.\n```python\nresponse = client.enrich.observe.observables(\n [{'type': 'sha256', 'value': '8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9'}]\n)\n```\n\n- Deliberate\n\nDeliberate returns judgments based on added modules.\n```python\nresponse = client.enrich.deliberate.observables(\n [{'type': 'sha256', 'value': '8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9'}]\n)\n```\n\n### Commands\n\nFor your convenience, we have made some predefined commands that you can use.\n\n- Verdicts\n\nVerdicts returns verdicts from all modules if the modules are configured. Accepts multiple observables.\n```python\nresponse = client.commands.verdict(\n 'string with observables (\"8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9, cisco.com\")'\n)\n```\n \n- Targets\n\nTargets returns all available targets if the modules are configured. Accepts multiple observables.\n```python\nresponse = client.commands.targets(\n 'string with observables (\"8A32950CD96C5EF88F9DCBB66A08F59A7E8D8E5FECCDE9E115FBAA46D9AF88F9, cisco.com\")'\n)\n```\n\n### Available Endpoints\n\nSwitch between `.private_intel` and `.global_intel` if necessary.\n\n# Actor\n actor = client.private_intel.actor\nAvailable methods:\n - actor.post()\n - actor.get()\n - actor.put()\n - actor.delete()\n - actor.external_id()\n - actor.search.get()\n - actor.search.delete()\n - actor.search.count()\n - actor.metric.histogram()\n - actor.metric.topn()\n - actor.metric.cardinality()\n\n# Asset\n asset = client.private_intel.asset\nAvailable methods:\n - asset.post()\n - asset.get()\n - asset.put()\n - asset.delete()\n - asset.external_id()\n - asset.search.get()\n - asset.search.delete()\n - asset.search.count()\n - asset.metric.histogram()\n - asset.metric.topn()\n - asset.metric.cardinality()\n\n# Asset mapping\n asset_mapping = client.private_intel.asset_mapping\nAvailable methods:\n - asset_mapping.post()\n - asset_mapping.get()\n - asset_mapping.put()\n - asset_mapping.delete()\n - asset_mapping.expire() \n - asset_mapping.external_id()\n - asset_mapping.search.get()\n - asset_mapping.search.delete()\n - asset_mapping.search.count()\n - asset_mapping.metric.histogram()\n - asset_mapping.metric.topn()\n - asset_mapping.metric.cardinality()\n\n# Asset properties\n asset_properties = client.private_intel.asset_properties\nAvailable methods:\n - asset_properties.post()\n - asset_properties.get()\n - asset_properties.put()\n - asset_properties.delete()\n - asset_properties.expire() \n - asset_properties.external_id()\n - asset_properties.search.get()\n - asset_properties.search.delete()\n - asset_properties.search.count()\n - asset_properties.metric.histogram()\n - asset_properties.metric.topn()\n - asset_properties.metric.cardinality()\n\n# Attack Pattern\n attack_pattern = client.private_intel.attack_pattern\nAvailable methods:\n - attack_pattern.post()\n - attack_pattern.get()\n - attack_pattern.put()\n - attack_pattern.delete()\n - attack_pattern.external_id()\n - attack_pattern.search.get()\n - attack_pattern.search.delete()\n - attack_pattern.search.count()\n - attack_pattern.metric.histogram()\n - attack_pattern.metric.topn()\n - attack_pattern.metric.cardinality()\n\n# Bulk \n bulk = client.private_intel.bulk\nAvailable methods:\n - bulk.post()\n - bulk.get()\n\n# Bundle \n bundle = client.private_intel.bundle\nAvailable methods:\n - bundle.export.post()\n - bundle.export.get()\n - bundle.import_.post()\n\n# Campaign\n campaign = client.private_intel.campaign\nAvailable methods:\n - campaign.post()\n - campaign.get()\n - campaign.put()\n - campaign.delete()\n - campaign.external_id()\n - campaign.search.get()\n - campaign.search.delete()\n - campaign.search.count()\n - campaign.metric.histogram()\n - campaign.metric.topn()\n - campaign.metric.cardinality()\n\n# Casebook\n casebook = client.private_intel.casebook\nAvailable methods:\n - casebook.post()\n - casebook.get()\n - casebook.put()\n - casebook.delete()\n - casebook.external_id()\n - casebook.observables()\n - casebook.texts()\n - casebook.bundle()\n - casebook.patch()\n - casebook.search.get()\n - casebook.search.delete()\n - casebook.search.count()\n - casebook.metric.histogram()\n - casebook.metric.topn()\n - casebook.metric.cardinality()\n\n# COA\n coa = client.private_intel.coa\nAvailable methods:\n - coa.post()\n - coa.get()\n - coa.put()\n - coa.delete()\n - coa.external_id()\n - coa.search.get()\n - coa.search.delete()\n - coa.search.count()\n - coa.metric.histogram()\n - coa.metric.topn()\n - coa.metric.cardinality()\n\n# DataTable\n data_table = client.private_intel.data_table\nAvailable methods:\n - data_table.post()\n - data_table.get()\n - data_table.delete()\n - data_table.external_id()\n \n# Enrich\n enrich = client.enrich\nAvailable methods:\n - enrich.health()\n - enrich.health(_id)\n - enrich.deliberate.observables()\n - enrich.deliberate.sighting()\n - enrich.deliberate.sighting_ref()\n - enrich.observe.observables()\n - enrich.observe.sighting()\n - enrich.observe.sighting_ref()\n - enrich.refer.observables()\n - enrich.refer.sighting()\n - enrich.refer.sighting_ref()\n\n# Event\n event = client.private_intel.event\nAvailable methods:\n - event.history()\n - event.get()\n - event.delete()\n - event.search.get()\n - event.search.delete()\n - event.search.count()\n\n# Feed\n feed = client.private_intel.feed\nAvailable methods:\n - feed.view.txt()\n - feed.view()\n - feed.post()\n - feed.put()\n - feed.get()\n - feed.delete()\n - feed.external_id()\n - feed.search.get()\n - feed.search.delete()\n - feed.search.count()\n \n# Feedback\n feedback = client.private_intel.feedback\nAvailable methods:\n - feedback.post()\n - feedback.get()\n - feedback.delete()\n - feedback.external_id()\n - feedback.get(_id)\n\n# GraphQL\n graph = client.private_intel.graphql\nAvailable methods:\n - graphql.post()\n\n# Identity Assertion\n identity_assertion = client.private_intel.identity_assertion\nAvailable methods:\n - identity_assertion.post()\n - identity_assertion.get()\n - identity_assertion.put()\n - identity_assertion.delete()\n - identity_assertion.external_id()\n - identity_assertion.search.get()\n - identity_assertion.search.delete()\n - identity_assertion.search.count()\n - identity_assertion.metric.histogram()\n - identity_assertion.metric.topn()\n - identity_assertion.metric.cardinality()\n\n# Incident\n incident = client.private_intel.incident\nAvailable methods:\n - incident.post()\n - incident.get()\n - incident.put()\n - incident.delete()\n - incident.external_id()\n - incident.link()\n - incident.status()\n - incident.sightings.incidents()\n - incident.patch()\n - incident.search.get()\n - incident.search.delete()\n - incident.search.count()\n - incident.metric.histogram()\n - incident.metric.topn()\n - incident.metric.cardinality()\n\n# Indicator\n indicator = client.private_intel.indicator\nAvailable methods:\n - indicator.post()\n - indicator.get()\n - indicator.put()\n - indicator.delete()\n - indicator.external_id()\n - indicator.judgements.indicators()\n - indicator.sightings.indicators()\n - indicator.search.get()\n - indicator.search.delete()\n - indicator.search.count()\n - indicator.metric.histogram()\n - indicator.metric.topn()\n - indicator.metric.cardinality()\n \n# Inspect\n inspect = client.inspect\nAvailable methods:\n - inspect.inspect()\n\n# Int\n int = client.int\nAvailable methods:\n - int.integration.get(_id)\n - int.integration.patch(_id)\n - int.integration.delete(_id)\n - int.integration.get()\n - int.integration.post()\n - int.module_instance.get(_id)\n - int.module_instance.patch(_id)\n - int.module_instance.delete(_id)\n - int.module_instance.get()\n - int.module_instance.post()\n - int.module_type.get(_id)\n - int.module_type.patch(_id)\n - int.module_type.delete(_id)\n - int.module_type.get()\n - int.module_type.post()\n - int.module_type_patch.get()\n - int.module_type_patch.post()\n - int.module_type_patch.get(_id)\n - int.module_type_patch.put(_id)\n - int.module_type_patch.delete(_id)\n - int.module_type_patch.action_preview(_id)\n \n# Investigation\n investigation = client.private_intel.investigation\nAvailable methods:\n - investigation.post()\n - investigation.get()\n - investigation.put()\n - investigation.delete()\n - investigation.external_id()\n - investigation.search.get()\n - investigation.search.delete()\n - investigation.search.count()\n - investigation.metric.histogram()\n - investigation.metric.topn()\n - investigation.metric.cardinality()\n\n# Judgment\n judgment = client.private_intel.judgment\nAvailable methods:\n - judgment.post()\n - judgment.get()\n - judgment.put()\n - judgment.delete()\n - judgment.expire()\n - judgment.external_id()\n - judgment.judgments()\n - judgment.search.get()\n - judgment.search.delete()\n - judgment.search.count()\n - judgment.metric.histogram()\n - judgment.metric.topn()\n - judgment.metric.cardinality()\n\n# Malware\n malware = client.private_intel.malware\nAvailable methods:\n - malware.post()\n - malware.get()\n - malware.put()\n - malware.delete()\n - malware.external_id()\n - malware.search.get()\n - malware.search.delete()\n - malware.search.count()\n - malware.metric.histogram()\n - malware.metric.topn()\n - malware.metric.cardinality()\n\n# Metrics\n metrics = client.private_intel.metrics\nAvailable methods:\n - metrics.get()\n\n# Profile\n profile = client.profile\nAvailable methods:\n - profile.whoami()\n - profile.org.get()\n - profile.org.post()\n\n# Properties\n properties = client.private_intel.properties\nAvailable methods:\n - properties.get()\n\n# Relationship\n relationship = client.private_intel.relationship\nAvailable methods:\n - relationship.post()\n - relationship.get()\n - relationship.put()\n - relationship.delete()\n - relationship.external_id()\n - relationship.search.get()\n - relationship.search.delete()\n - relationship.search.count()\n - relationship.metric.histogram()\n - relationship.metric.topn()\n - relationship.metric.cardinality()\n \n# Response\n response = client.response\nAvailable methods:\n - response.respond.observables()\n - response.respond.sighting()\n - response.respond.trigger()\n\n# Sighting\n sighting = client.private_intel.sighting\nAvailable methods:\n - sighting.post()\n - sighting.get()\n - sighting.put()\n - sighting.delete()\n - sighting.external_id()\n - sighting.sightings()\n - sighting.search.get()\n - sighting.search.delete()\n - sighting.search.count()\n - sighting.metric.histogram()\n - sighting.metric.topn()\n - sighting.metric.cardinality()\n\n# SSE Device\n sse_device = client.sse_device\nAvailable methods:\n- sse_device.get_all()\n- sse_device.get_by_id()\n- sse_device.post()\n- sse_device.patch()\n- sse_device.token()\n- sse_device.re_token()\n- sse_device.api_proxy()\n- sse_device.delete()\n\n# SSE Tenant\n sse_tenant = client.sse_tenant\nAvailable methods:\n- sse_tenant.get_token()\n\n# Target record\n target_record = client.private_intel.target_record\nAvailable methods:\n - target_record.post()\n - target_record.get()\n - target_record.put()\n - target_record.delete()\n - target_record.external_id()\n - target_record.search.get()\n - target_record.search.delete()\n - target_record.search.count()\n - target_record.metric.histogram()\n - target_record.metric.topn()\n - target_record.metric.cardinality()\n\n# Status\n status = client.private_intel.status\nAvailable methods:\n - status.get()\n\n# Tool\n tool = client.private_intel.tool\nAvailable methods:\n - tool.post()\n - tool.get()\n - tool.put()\n - tool.delete()\n - tool.external_id()\n - tool.search.get()\n - tool.search.delete()\n - tool.search.count()\n - tool.metric.histogram()\n - tool.metric.topn()\n - tool.metric.cardinality()\n\n# User Management\n user_mgmt = client.user_mgmt\nAvailable methods:\n - user_mgmt.users.get()\n - user_mgmt.users.post()\n - user_mgmt.batch.users()\n - user_mgmt.search.users()\n\n# Verdict\n verdict = client.private_intel.verdict\nAvailable methods:\n - verdict.get()\n\n# Version\n version = client.private_intel.version\nAvailable methods:\n - version.get()\n\n# Vulnerability\n vulnerability = client.private_intel.vulnerability\nAvailable methods:\n - vulnerability.cpe_match_strings()\n - vulnerability.post()\n - vulnerability.get()\n - vulnerability.put()\n - vulnerability.delete()\n - vulnerability.external_id()\n - vulnerability.search.get()\n - vulnerability.search.delete()\n - vulnerability.search.count()\n - vulnerability.metric.histogram()\n - vulnerability.metric.topn()\n - vulnerability.metric.cardinality()\n\n# Weakness\n weakness = client.private_intel.weakness\nAvailable methods:\n - weakness.post()\n - weakness.get()\n - weakness.put()\n - weakness.delete()\n - weakness.external_id()\n - weakness.search.get()\n - weakness.search.delete()\n - weakness.search.count()\n - weakness.metric.histogram()\n - weakness.metric.topn()\n - weakness.metric.cardinality()\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CiscoSecurity/tr-05-api-module", "keywords": "cisco,security,threat,response,api,module,python", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "threatresponse", "package_url": "https://pypi.org/project/threatresponse/", "platform": "", "project_url": "https://pypi.org/project/threatresponse/", "project_urls": { "Homepage": "https://github.com/CiscoSecurity/tr-05-api-module" }, "release_url": "https://pypi.org/project/threatresponse/0.15.0/", "requires_dist": null, "requires_python": ">=2.6", "summary": "Threat Response API Module", "version": "0.15.0", "yanked": false, "yanked_reason": null }, "last_serial": 12092497, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "6ee8e3fa9d08c16db597abc022452923", "sha256": "7ef0e7fe9afd608a37428558cd92bcdcb85629d607557c96ce1190c833d50773" }, "downloads": -1, "filename": "threatresponse-0.10.0.tar.gz", "has_sig": false, "md5_digest": "6ee8e3fa9d08c16db597abc022452923", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 18256, "upload_time": "2020-10-26T08:35:54", "upload_time_iso_8601": "2020-10-26T08:35:54.032699Z", "url": "https://files.pythonhosted.org/packages/cd/ec/975bd72fbc68239a704a869f30e41b7cdbac0baaba26208776997fc83937/threatresponse-0.10.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "2bd2fc98c699533080352389ee8ccc69", "sha256": "ed99d52e24afcdc0f4b7effabaaf793acd550f22f01ff087f2cdf6dd8a487749" }, "downloads": -1, "filename": "threatresponse-0.11.0.tar.gz", "has_sig": false, "md5_digest": "2bd2fc98c699533080352389ee8ccc69", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21364, "upload_time": "2021-07-02T07:06:19", "upload_time_iso_8601": "2021-07-02T07:06:19.532399Z", "url": "https://files.pythonhosted.org/packages/6b/82/95c2c21d2f565767fb30f0e3a1e02fb6038be30b9702b1f66bbcf4015417/threatresponse-0.11.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "c6cd7a13fac056cf259cd2bde74b172b", "sha256": "3e9764ea307a4fc7314ef83c925c5f7aea37ed2456da74afc8bd96ad4cc2b8e2" }, "downloads": -1, "filename": "threatresponse-0.12.0.tar.gz", "has_sig": false, "md5_digest": "c6cd7a13fac056cf259cd2bde74b172b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21586, "upload_time": "2021-07-20T06:53:23", "upload_time_iso_8601": "2021-07-20T06:53:23.612646Z", "url": "https://files.pythonhosted.org/packages/70/51/ccf236191245e0f69a859da752e078b09dd30b7989f14ce8c52207d17dc0/threatresponse-0.12.0.tar.gz", "yanked": true, "yanked_reason": null } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "0ead9dc0ac2382845569e654de213c4a", "sha256": "a75c77a03e006c077dde2061ebe291c11f34c714cae39a2356af08617ef5a62e" }, "downloads": -1, "filename": "threatresponse-0.13.0.tar.gz", "has_sig": false, "md5_digest": "0ead9dc0ac2382845569e654de213c4a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21261, "upload_time": "2021-10-25T10:18:09", "upload_time_iso_8601": "2021-10-25T10:18:09.842873Z", "url": "https://files.pythonhosted.org/packages/b8/13/65c69a8de6fa128b1d1590c02d3f3e69bcb4a0044e7d3827c5c875ddea85/threatresponse-0.13.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "cb807fd958798b2af39390cb24e5dc48", "sha256": "b9412545713aa66aa862771b9840cd4207f2217b37d2ac160119ba7aeafcb46c" }, "downloads": -1, "filename": "threatresponse-0.14.0.tar.gz", "has_sig": false, "md5_digest": "cb807fd958798b2af39390cb24e5dc48", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21453, "upload_time": "2021-10-26T13:53:00", "upload_time_iso_8601": "2021-10-26T13:53:00.569318Z", "url": "https://files.pythonhosted.org/packages/4a/87/cfe2c83ee03f0f2080b322e20340a9dd9b708f1dc296fca8ce405b4d947b/threatresponse-0.14.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "33699232fc8c7f4403fc35844c5fd3ca", "sha256": "f5ebb8ffb7d9a482a7a67d40131090bc9f76f952b95d0074231ca3485287bd45" }, "downloads": -1, "filename": "threatresponse-0.15.0.tar.gz", "has_sig": false, "md5_digest": "33699232fc8c7f4403fc35844c5fd3ca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21755, "upload_time": "2021-11-22T14:44:39", "upload_time_iso_8601": "2021-11-22T14:44:39.078016Z", "url": "https://files.pythonhosted.org/packages/bf/20/b61aa46121882efba03a979c7ffc6c88996c32523c9c0f712f1ce659d359/threatresponse-0.15.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "53f69466f1daa915be9780d0ca8b8ba2", "sha256": "0118de6f54a104a2506c6e27926294a8a89e65919c34d6f67c97a9e99cae2370" }, "downloads": -1, "filename": "threatresponse-0.3.1.tar.gz", "has_sig": false, "md5_digest": "53f69466f1daa915be9780d0ca8b8ba2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9546, "upload_time": "2019-10-03T10:45:24", "upload_time_iso_8601": "2019-10-03T10:45:24.472012Z", "url": "https://files.pythonhosted.org/packages/fa/30/8667745564835cf96749fd3b6f16b5743114d3d0f7e79e5ed557093288b1/threatresponse-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "77eaab3521aeb7e1780d3af2fc71adc6", "sha256": "a66459776b97b3151e4f5707ff2815477fa0e7880306ba1af874dab2913c27b2" }, "downloads": -1, "filename": "threatresponse-0.4.0.tar.gz", "has_sig": false, "md5_digest": "77eaab3521aeb7e1780d3af2fc71adc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9911, "upload_time": "2019-10-18T17:01:23", "upload_time_iso_8601": "2019-10-18T17:01:23.252503Z", "url": "https://files.pythonhosted.org/packages/75/b6/d75697dbc75ef37d0b15bd7549c3e0982bdb502efcda0df2fabb52f3deef/threatresponse-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "dc8b7dc416bc00c5c6da9c44548be6ec", "sha256": "4d9f1d64be6ba1fc7a6a81b0e00d12d5fd9e904eb0de93a0d60ac090efd0028c" }, "downloads": -1, "filename": "threatresponse-0.5.0.tar.gz", "has_sig": false, "md5_digest": "dc8b7dc416bc00c5c6da9c44548be6ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10215, "upload_time": "2019-10-29T12:01:50", "upload_time_iso_8601": "2019-10-29T12:01:50.505577Z", "url": "https://files.pythonhosted.org/packages/f5/b3/7c8ba1492ce33b93bf9c3e104b4e84c03c257f3841ac8814e1f13d39f822/threatresponse-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "317facd4d70f3d7b6520c30d1b1d3f46", "sha256": "aab57abec941dda14d5843484b2caaa6adfc984e65961e38011e3cd1af63564d" }, "downloads": -1, "filename": "threatresponse-0.6.0.tar.gz", "has_sig": false, "md5_digest": "317facd4d70f3d7b6520c30d1b1d3f46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12206, "upload_time": "2019-12-23T16:42:46", "upload_time_iso_8601": "2019-12-23T16:42:46.171332Z", "url": "https://files.pythonhosted.org/packages/f8/9f/4fd651d283179a39252a8d90f743f955f5cf36ebdbfd0bcdde275cfb3283/threatresponse-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "f04ae16a5b9ec7ecc4d3a5fa1f029db8", "sha256": "7c83520e4e95eac6015091a93768e5e3b39635c479cd6bdc450b24f9a7409930" }, "downloads": -1, "filename": "threatresponse-0.7.0.tar.gz", "has_sig": false, "md5_digest": "f04ae16a5b9ec7ecc4d3a5fa1f029db8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 16127, "upload_time": "2020-02-20T14:24:01", "upload_time_iso_8601": "2020-02-20T14:24:01.328577Z", "url": "https://files.pythonhosted.org/packages/25/80/2f9768e3c087323a84127e2176bf4521186a9f4791e25743cc8900e061ee/threatresponse-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "405935af8047ba3e45500d4894de791c", "sha256": "7c36ba85d1f2920d55f4cffd94c8c3c178987d86977e21e2bcb8bf6bb1b706be" }, "downloads": -1, "filename": "threatresponse-0.7.1.tar.gz", "has_sig": false, "md5_digest": "405935af8047ba3e45500d4894de791c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 15963, "upload_time": "2020-02-20T15:09:11", "upload_time_iso_8601": "2020-02-20T15:09:11.958282Z", "url": "https://files.pythonhosted.org/packages/dc/22/40a1a304f3b8873ff155ad61d3226bacb7066efb0bd17323660ccd2ec0fc/threatresponse-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "9b2a6ac9cd49a1a387b49c33611ed217", "sha256": "2e51bac996ec15cf0c18d0eb60ffd70bb126be2984dc157f98db82f5bbdcc043" }, "downloads": -1, "filename": "threatresponse-0.7.2.tar.gz", "has_sig": false, "md5_digest": "9b2a6ac9cd49a1a387b49c33611ed217", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 15971, "upload_time": "2020-02-20T15:26:31", "upload_time_iso_8601": "2020-02-20T15:26:31.832824Z", "url": "https://files.pythonhosted.org/packages/d5/9e/1464b82b75fe4207307e40693110940a136be3786072b425b112c84383de/threatresponse-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "995cae8541f714978f0f05ef36194824", "sha256": "1a42cf2c656181e761f80873fcba21623338d37c8d5dbc723c4493c4d8abeb5b" }, "downloads": -1, "filename": "threatresponse-0.7.3.tar.gz", "has_sig": false, "md5_digest": "995cae8541f714978f0f05ef36194824", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 16117, "upload_time": "2020-03-18T17:04:44", "upload_time_iso_8601": "2020-03-18T17:04:44.972736Z", "url": "https://files.pythonhosted.org/packages/7d/b0/70be07268d652ed2ea39f58c75981101fea6be5de2db73ef7bfee7a926d3/threatresponse-0.7.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "86f9efaefa5c791959863e79521f8a58", "sha256": "8bae74ed3c01e475d259014d031b9de354872d67d2b1a6e0022ae90246e574c4" }, "downloads": -1, "filename": "threatresponse-0.8.0.tar.gz", "has_sig": false, "md5_digest": "86f9efaefa5c791959863e79521f8a58", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 16599, "upload_time": "2020-06-04T11:34:30", "upload_time_iso_8601": "2020-06-04T11:34:30.423373Z", "url": "https://files.pythonhosted.org/packages/b2/56/bdb7309b9c9b44fb764d145ef92a8a97b0270bc0144094d3e0ab15383f70/threatresponse-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "cda4e9c3f436d06e692611a40140518d", "sha256": "3669f2cdd67c2893d9aa953d232643fbee612cf6e085bb92430eb3bbb6bf5fb3" }, "downloads": -1, "filename": "threatresponse-0.9.0.tar.gz", "has_sig": false, "md5_digest": "cda4e9c3f436d06e692611a40140518d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 16646, "upload_time": "2020-08-06T15:21:40", "upload_time_iso_8601": "2020-08-06T15:21:40.060910Z", "url": "https://files.pythonhosted.org/packages/40/ea/d1bdd59b3d5e5bc818de09d672090f46da5cd9dd84657a8ff391365a1a22/threatresponse-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "0d2093ffa9fc74b55b7af5556ad11c00", "sha256": "a02c9b66e937d764f5a6fed667e7e8b3f6920e49e6aa460754d44fee3c28aad9" }, "downloads": -1, "filename": "threatresponse-0.9.1.tar.gz", "has_sig": false, "md5_digest": "0d2093ffa9fc74b55b7af5556ad11c00", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 16658, "upload_time": "2020-08-27T16:34:44", "upload_time_iso_8601": "2020-08-27T16:34:44.185828Z", "url": "https://files.pythonhosted.org/packages/05/9f/9623326c71b374c9660f9c9b4c3f9cd049ea4e768b4d044f3591572534a5/threatresponse-0.9.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "33699232fc8c7f4403fc35844c5fd3ca", "sha256": "f5ebb8ffb7d9a482a7a67d40131090bc9f76f952b95d0074231ca3485287bd45" }, "downloads": -1, "filename": "threatresponse-0.15.0.tar.gz", "has_sig": false, "md5_digest": "33699232fc8c7f4403fc35844c5fd3ca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6", "size": 21755, "upload_time": "2021-11-22T14:44:39", "upload_time_iso_8601": "2021-11-22T14:44:39.078016Z", "url": "https://files.pythonhosted.org/packages/bf/20/b61aa46121882efba03a979c7ffc6c88996c32523c9c0f712f1ce659d359/threatresponse-0.15.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }