{"id":27308570,"url":"https://github.com/plants-soil/lettuce-webhook-hub","last_synced_at":"2026-02-12T12:45:11.978Z","repository":{"id":270691858,"uuid":"863291393","full_name":"plants-soil/lettuce-webhook-hub","owner":"plants-soil","description":"The open source enterprise ready Webhook Framework (server) base on Java architecture, embedded or standalone. Could trigger (publish) or subscribe Restful events / messages in JSON format.","archived":false,"fork":false,"pushed_at":"2025-03-09T09:17:56.000Z","size":2925,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-13T20:04:29.815Z","etag":null,"topics":["api","api-rest","event","event-driven","events","framework","hub","integration","java","server","tomcat","webhook","webhook-api","webhook-events","webhook-framework","webhook-hub","webhook-server","webhooks","wildfly"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plants-soil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-26T03:40:52.000Z","updated_at":"2025-05-13T05:54:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"3b72176c-9476-4957-b924-e86b12d98f74","html_url":"https://github.com/plants-soil/lettuce-webhook-hub","commit_stats":null,"previous_names":["plants-soil/lettuce-webhook-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/plants-soil/lettuce-webhook-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plants-soil%2Flettuce-webhook-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plants-soil%2Flettuce-webhook-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plants-soil%2Flettuce-webhook-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plants-soil%2Flettuce-webhook-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plants-soil","download_url":"https://codeload.github.com/plants-soil/lettuce-webhook-hub/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plants-soil%2Flettuce-webhook-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271749118,"owners_count":24814128,"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-08-23T02:00:09.327Z","response_time":69,"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":["api","api-rest","event","event-driven","events","framework","hub","integration","java","server","tomcat","webhook","webhook-api","webhook-events","webhook-framework","webhook-hub","webhook-server","webhooks","wildfly"],"created_at":"2025-04-12T05:00:23.654Z","updated_at":"2026-02-12T12:45:06.961Z","avatar_url":"https://github.com/plants-soil.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Plants Soil - Lettuce\r\n\r\nMost technical teams may always struggle in publishing API (data in) and subscribing external API (data out) for application integration, and spent lots of time and money on the communication \u0026 data transformation for both side.\r\n\r\nLet's consider what should do for the application integration (A and B):\r\n\r\n1. A meet B to communicate use cases, integration specification, agreement, etc.\r\n2. Design API (endpoints, payloads / body, parameter, repsonse, error handling, security, etc.)\r\n3. Develop API (architecture, programing language, web server, availability, scalability, etc)\r\n4. Publish API (authentication, authorization, rate limit, whitelist, etc.)\r\n5. Prepare and release API documentation\r\n6. A meet B for tehnical clarification\r\n7. A try to subscribe API from B, and B try to subscribe API from A\r\n8. Go back to step 6 if any trouble, till anything goes well\r\n\r\nThis is just the beginning, more applications will make things mess.\r\n\r\n**Plants Soil** is an Application Integration Solution, includes: API designer, Webhooks engine, API Gateway, Documentation publishing, Testing, etc.). **Plants Soil** try to make Application Integration from bi-direction to one-direction (Publisher and Subscriber), Publisher produces APIs and event-driven webhoohks, Subscriber consumes API and webhooks event. By this, it's also quite easy for Publisher to provide SDK (Partners could take this responsibility as well).\r\n\r\n**Plants Soil** is construted on J2EE architecture and compliance to popular standards. In order to meet different requirements, decoupled into different parts. As the key of application integration, event-driven webhooks engine could be embedded or standalone, which named **Lettuce**.\r\n\r\n---\r\n## Use Cases\r\n\u003cimg src=\"docs/images/webhook-model.png\" width=\"860\" height=\"640\" /\u003e\r\n\r\n## Key Features\r\n\r\n- Multi - Oganization (or Tenant)\r\n- Multi - Data Group (or Merchant)\r\n- Versioning\r\n- Event Type Register\r\n- Webhook Register\r\n- Webhook Event Trigger\r\n- Fail retry\r\n- Logging\r\n- Client App Register\r\n- Client App Event Listener\r\n- Access Token, Refresh Token\r\n\r\n## Roadmap \u0026 Progress\r\n\u003cimg src=\"docs/images/roadmap.png\" width=\"860\" height=\"640\" /\u003e\r\n\r\n## Contribute to Plants Soil\r\n**Plants Soil** is open source, and we welcome anybody who wants to participate and contribute!\r\n\r\nIf you want to fix a bug or make any changes, please log an issue in [GitHub Issues](https://github.com/plants-soil/lettuce/issues) describing the bug or new feature.\r\n\r\nYou can \u003ca href=\"mailto:danialdy@gmail.com?subject=Help Plants Soil\u0026body=I%20need%20assistance with Lettuce.\"\u003eemail us\u003c/a\u003e, if you want help, or to discuss a more complex issue.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplants-soil%2Flettuce-webhook-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplants-soil%2Flettuce-webhook-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplants-soil%2Flettuce-webhook-hub/lists"}