{"id":37074357,"url":"https://github.com/prodaft/python-catalyst","last_synced_at":"2026-01-14T08:46:00.551Z","repository":{"id":285354929,"uuid":"957410099","full_name":"prodaft/python-catalyst","owner":"prodaft","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-16T15:51:35.000Z","size":110,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-27T18:38:10.039Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prodaft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-30T09:54:53.000Z","updated_at":"2025-10-16T15:51:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"58afd1eb-92af-4295-a1ba-3490204af01e","html_url":"https://github.com/prodaft/python-catalyst","commit_stats":null,"previous_names":["prodaft/python-catalyst"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/prodaft/python-catalyst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodaft%2Fpython-catalyst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodaft%2Fpython-catalyst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodaft%2Fpython-catalyst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodaft%2Fpython-catalyst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prodaft","download_url":"https://codeload.github.com/prodaft/python-catalyst/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prodaft%2Fpython-catalyst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T08:45:59.964Z","updated_at":"2026-01-14T08:46:00.538Z","avatar_url":"https://github.com/prodaft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PRODAFT CATALYST API Client\n\n[![PyPI version](https://badge.fury.io/py/python-catalyst.svg)](https://badge.fury.io/py/python-catalyst)\n[![Python Versions](https://img.shields.io/pypi/pyversions/python-catalyst.svg)](https://pypi.org/project/python-catalyst/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://github.com/prodaft/python-catalyst/actions/workflows/python-test.yml/badge.svg)](https://github.com/prodaft/python-catalyst/actions/workflows/python-test.yml)\n\nA Python client for the PRODAFT CATALYST API, enabling seamless integration with OpenCTI by converting threat intelligence data into STIX 2.1 format.\n\n## Overview\n\nThis library provides a simple interface to retrieve threat intelligence from the PRODAFT CATALYST platform and convert it into STIX 2.1 format for ingestion into OpenCTI or other threat intelligence platforms.\n\n## Key Features\n\n- Retrieve threat intelligence from CATALYST API\n- Extract entities (malware, threat actors, tools, etc.)\n- Convert to STIX 2.1 format for OpenCTI integration\n- Support for all CATALYST observable types\n- TLP classification support (CLEAR, GREEN, AMBER, AMBER+STRICT, RED)\n- Automatic pagination for large result sets\n- Proxy and custom logging support\n\n## Installation\n\n```bash\npip install python-catalyst\n```\n\n## Requirements\n\n- Python 3.8+\n- requests\n- stix2\n- python-dateutil\n- pycti\n\n## Basic Usage\n\n```python\nfrom python_catalyst import CatalystClient, PostCategory, TLPLevel\nfrom datetime import datetime\n\n# Initialize client\nclient = CatalystClient(api_key=\"your_api_key\")\n\n# Get threat intelligence data\ncontent = client.get_member_content(\"content_id\")\n\n# Extract entities\nentities = client.extract_entities_from_member_content(\"content_id\")\n\n# Convert to STIX format for OpenCTI\nreport, stix_objects = client.create_report_from_member_content(content)\n```\n\n## Documentation\n\n### Authentication\n\n```python\nclient = CatalystClient(\n    api_key=\"your_api_key\",\n    base_url=\"https://prod.blindspot.prodaft.com/api\"\n)\n```\n\n### Content Retrieval\n\nThe client supports various methods to retrieve threat intelligence:\n\n- `get_member_content(content_id)`: Get a specific content by ID\n- `get_member_contents(category, tlp, page, page_size)`: Get paginated content\n- `get_all_member_contents(category, published_on_after, search)`: Get all content with automatic pagination\n- `get_updated_member_contents(since, max_results)`: Get content updated since a specific date\n\n### Entity Extraction\n\n```python\nentities = client.extract_entities_from_member_content(\"content_id\")\n```\n\n### STIX Conversion\n\nConvert CATALYST content to STIX 2.1 objects for OpenCTI integration:\n\n```python\n# Convert to STIX format\nreport, stix_objects = client.create_report_from_member_content(content)\n```\n\n## Development\n\n### Setting up the development environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/prodaft/python-catalyst.git\ncd python-catalyst\n\n# Install development dependencies\npip install -r requirements-dev.txt\n```\n\n### Running tests\n\n```bash\n# Run unit tests\npytest -xvs tests/ -k \"not test_integration\"\n\n# Run integration tests (requires API key)\nexport CATALYST_API_KEY=your_api_key\npytest -xvs tests/ --run-integration\n\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Support\n\nFor support or feature requests, please create an issue on the GitHub repository or contact PRODAFT.\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprodaft%2Fpython-catalyst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprodaft%2Fpython-catalyst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprodaft%2Fpython-catalyst/lists"}