{"id":23226147,"url":"https://github.com/shuffle/shufflepy","last_synced_at":"2025-10-15T12:06:46.998Z","repository":{"id":239343721,"uuid":"799245161","full_name":"Shuffle/shufflepy","owner":"Shuffle","description":"Connect to your favorite services with a single line of code","archived":false,"fork":false,"pushed_at":"2025-07-18T12:51:19.000Z","size":339,"stargazers_count":2,"open_issues_count":8,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-06T17:54:54.638Z","etag":null,"topics":["ai","api","automate","lam","llm","ml","shuffle","singul","soar"],"latest_commit_sha":null,"homepage":"https://shuffler.io/docs/API#integration-layer","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/Shuffle.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":"2024-05-11T15:04:36.000Z","updated_at":"2025-07-18T12:51:22.000Z","dependencies_parsed_at":"2024-05-11T17:46:42.801Z","dependency_job_id":"619f721b-2d52-4000-a8a6-a7069aa3b195","html_url":"https://github.com/Shuffle/shufflepy","commit_stats":null,"previous_names":["shuffle/shufflepy"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/Shuffle/shufflepy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuffle%2Fshufflepy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuffle%2Fshufflepy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuffle%2Fshufflepy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuffle%2Fshufflepy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shuffle","download_url":"https://codeload.github.com/Shuffle/shufflepy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuffle%2Fshufflepy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279077248,"owners_count":26098234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai","api","automate","lam","llm","ml","shuffle","singul","soar"],"created_at":"2024-12-19T00:16:17.836Z","updated_at":"2025-10-15T12:06:46.964Z","avatar_url":"https://github.com/Shuffle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shufflepy (and Singul for Python)\nConnect to your favorite services with a Singul line of code. \n\nThis documentation will help you get started with Singul, understand its capabilities, and integrate it into your workflows easily. Whether you're a developer, a security analyst, or an automation engineer — **Singul is built for you.**\n\n**Singul** is an API handler that allows you to get or update data in tools like Jira, Outlook, Gmail, Service Now, and more - with a single line of code.\n\n## Usage\nSample functions below. If none of these match, try to use the shuffle.connect() function to run ANYTHING. By default returns the [matching translation standard](https://github.com/Shuffle/standards/tree/main/translation_standards) if available, otherwise the raw output.\n```python\nfrom shufflepy import Singul \n\n# If you want to use REMOTE singul (shuffler.io / open source Shuffle)\nsingul = Singul(\n\t\"APIKEY\",\n\turl='https://shuffler.io',\n)\n\nsingul.cases.create_ticket(\"jira\", title=\"Title\")\nsingul.communication.send_message(\"slack\", message=\"Test\")\nsingul.communication.send_message(\"teams\", message=\"Test\")\ntickets = singul.cases.list_tickets(\"jira\")\n\n\n# If you want to run it 100% locally\nresp = singul.run(\"jira\", action=\"list_tickets\")\n```\n\n**Normal App run control:**\n```python\nsingul.run_app(app_id=\"bc78f35c6c6351b07a09b7aed5d29652\", action=\"repeat_back_to_me\", params={\"call\": \"The value to repeat\"})\n```\n\n## Manual:\n```python\n# General connect\nresp = singul.cases.list_tickets(\n\tapp=\"jira\",\n\torg_id=os.environ.get(\"SHUFFLE_ORG_ID\"),\n\tfields=[{\n\t\t\"key\": \"max-amount\",\n\t\t\"value\": \"10\"\n\t}]\n)\n\n### Common Use Cases\n\n# General transformer - Transforms from any data into a standard, e.g. \"list_tickets\"\nsourcedata = [{\"title\": \"Tickettitle\", \"id\": \"hiya\"}]\ntickets = singul.transform(sourcedata, \"list_tickets\") # (coming soon)\n\n* Send emails using **Outlook or Gmail**\n* Fetch and manage tickets from **Jira, GitHub, or TheHive**\n* Pull alerts from **SIEM or SOAR platforms**\n* Automate security investigations\n* Trigger workflow actions across tools\n* Build lightweight automation using simple APIs\n\nBasic output for `list_tickets`: \n```json\n[{\n  \"id\": \"P-123\",\n  \"title\": \"Ticket 1\"\n},\n{\n  \"id\": \"P-124\",\n  \"title\": \"Ticket 2\"\n}]\n```\n\n[See default standards](https://github.com/Shuffle/standards/blob/main/translation_standards) - Standards are modifiable, and you will see your own standards on the [File page in Shuffle](https://shuffler.io/admin?tab=files).\n\n## Exploring usage\nTo look through past executions, see the execution debugger available on [/workflows/debug](https://shuffler.io/workflows/debug)\n\u003cimg width=\"1150\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c0b3d28f-897e-47d1-9f79-d195e5682824\"\u003e\n\n\n## Available Apps \u0026 categories\n- [\u003e2500 APIs: Search in Shuffle](https://shuffler.io/search?tab=apps)\n\n## Local testing\n```bash\ncd build_singul\ncp -r ../shufflepy singul\npython3 -m pip install -e . --break-system-packages\n\n# You can now import the library locally :)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuffle%2Fshufflepy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshuffle%2Fshufflepy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuffle%2Fshufflepy/lists"}