{"id":24583,"library":"shuffle-sdk","title":"Shuffle SDK","description":"The Python SDK for Shuffle, an open-source SOAR (Security Orchestration, Automation, and Response) platform. Current version 0.0.38, updated irregularly. This SDK allows programmatic interaction with the Shuffle API, including actions like creating workflows, executing rules, and managing apps.","status":"active","version":"0.0.38","language":"python","source_language":"en","source_url":"https://github.com/shuffle/shuffle","tags":["SOAR","security","automation","workflow","shuffle"],"install":[{"cmd":"pip install shuffle-sdk","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"HTTP client for API calls","package":"requests","optional":false}],"imports":[{"note":"Main class for interacting with the Shuffle API.","wrong":"","symbol":"Shuffle","correct":"from shuffle import Shuffle"}],"quickstart":{"code":"from shuffle import Shuffle\nimport os\n\napi_key = os.environ.get('SHUFFLE_API_KEY', '')\nshuffle = Shuffle(api_key=api_key, base_url='https://shuffle-api.example.com')\n# Example: list workflows\nworkflows = shuffle.get_workflows()\nprint(workflows)","lang":"python","description":"Initialize the Shuffle client with your API key and base URL."},"warnings":[{"fix":"Pass api_key as the only credential; do not set Authorization header manually.","message":"The Shuffle SDK uses HTTP Basic Auth with the API key, not Bearer tokens. Setting the wrong auth header will cause 401 errors.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Update calls to use keyword arguments: create_workflow(name='test', description='...')","message":"The method 'create_workflow' in versions <0.0.30 accepted a single dict argument. In 0.0.38, it expects keyword arguments for 'name', 'description', etc.","severity":"deprecated","affected_versions":">=0.0.1, <0.0.38"},{"fix":"Install with 'pip install shuffle-sdk' but import as 'from shuffle import Shuffle'.","message":"The PyPI package name is 'shuffle-sdk', but the import package is 'shuffle'. This mismatch often causes confusion and ImportError.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Implement exponential backoff retry logic for API calls.","message":"API rate limits are not documented by the Shuffle server. Users have reported sudden 429 errors, especially when polling workflows quickly.","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run: pip install shuffle-sdk. Then import with: from shuffle import Shuffle","cause":"The package is installed as 'shuffle-sdk' but import uses 'shuffle'. The package name differs from the import name.","error":"ModuleNotFoundError: No module named 'shuffle'"},{"fix":"Use: from shuffle import Shuffle","cause":"Wrong import pattern: 'import shuffle' only imports the module, not the class.","error":"AttributeError: module 'shuffle' has no attribute 'Shuffle'"},{"fix":"Ensure the api_key is set correctly and the base URL points to the correct Shuffle instance.","cause":"API key is invalid or missing. The SDK uses HTTP Basic Auth with the key as username and empty password.","error":"requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://example.com/api/v1/workflows"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}