{"id":46975570,"url":"https://github.com/spoonboy-io/dozer","last_synced_at":"2026-03-11T12:37:55.782Z","repository":{"id":53251758,"uuid":"495784688","full_name":"spoonboy-io/dozer","owner":"spoonboy-io","description":"Morpheus Processes with Webhooks","archived":false,"fork":false,"pushed_at":"2024-02-13T18:29:09.000Z","size":5758,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-20T00:28:00.446Z","etag":null,"topics":["events","golang","morpheus","processes","webhooks"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spoonboy-io.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}},"created_at":"2022-05-24T11:00:38.000Z","updated_at":"2023-02-03T15:38:34.000Z","dependencies_parsed_at":"2024-06-20T00:05:01.000Z","dependency_job_id":"7cda3fea-a8d1-431c-b167-998002439d08","html_url":"https://github.com/spoonboy-io/dozer","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/spoonboy-io/dozer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoonboy-io%2Fdozer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoonboy-io%2Fdozer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoonboy-io%2Fdozer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoonboy-io%2Fdozer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spoonboy-io","download_url":"https://codeload.github.com/spoonboy-io/dozer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoonboy-io%2Fdozer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30381024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: 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":["events","golang","morpheus","processes","webhooks"],"created_at":"2026-03-11T12:37:55.354Z","updated_at":"2026-03-11T12:37:55.773Z","avatar_url":"https://github.com/spoonboy-io.png","language":"Go","readme":"# Dozer\n\n## Morpheus Processes with Webhooks\n\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/spoonboy-io/dozer?style=flat-square)](https://go.dev/)\n[![Go Report Card](https://goreportcard.com/badge/github.com/spoonboy-io/dozer?style=flat-square)](https://goreportcard.com/report/github.com/spoonboy-io/dozer)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/spoonboy-io/dozer/build.yml?branch=master\u0026style=flat-square)](https://github.com/spoonboy-io/dozer/actions/workflows/build.yml)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/spoonboy-io/dozer/unit_test.yml?branch=master\u0026label=tests\u0026style=flat-square)](https://github.com/spoonboy-io/dozer/actions/workflows/unit_test.yml)\n[![GitHub Release Date](https://img.shields.io/github/release-date/spoonboy-io/dozer?style=flat-square)](https://github.com/spoonboy-io/dozer/releases)\n[![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/spoonboy-io/dozer/latest?style=flat-square)](https://github.com/spoonboy-io/dozer/commits)\n[![GitHub](https://img.shields.io/github/license/spoonboy-io/dozer?label=license\u0026style=flat-square)](LICENSE)\n\n## About\n\nDozer watches [Morpheus CMP](https://morpheusdata.com) processes/events. \nIt will notify external applications of Morpheus events\nvia HTTP request (webhook) based on YAML configuration you specify.\n\n## Releases\n\nYou can find the [latest software here](https://github.com/spoonboy-io/dozer/releases/latest).\n\n### Get Started\n\nDozer polls the Morpheus database so needs credentials. The `morpheus` user can be used, but it is preferable to \ncreate an additional user with SELECT privileges on the `process` and `process_type` tables.\n\nA `mysql.env` file should be created in the same directory as the application from which the database user configuration\nwill be read. The following example shows the environment variables used by Dozer which should be included in `mysql.env`:\n\n```bash\n## MySQL Config\nMYSQL_SERVER=127.0.0.1\nMYSQL_USER=dozer\nMYSQL_PASSWORD=xxxxa8aca0de5dab5fa1bxxxxx\n\n## Optional to override defaults\nMYSQL_DATABASE=morpheus\nPOLL_INTERVAL_SECONDS=3\n```\n\n### Webhook Configuration\n\nWebhooks and their triggers are configured in a YAML file `webhook.yaml` which should reside in the same directory\nas the Dozer application. An example configuration, showing a single Webhook is shown below:\n\n```YAML\n---\n- webhook:\n    description: Hook example with trigger that runs when status is `complete`\n    url: https://webhook-endpoint.com\n    method: POST\n    requestBody: |\n        {\n            \"id\": {{.Id}},\n            \"updatedBy\": \"{{.UpdatedBy}}\",\n            \"status\": \"{{.Status}}\"\n        }\n    token: BEARER xxxxxxxxxxxxxx\n    triggers:\n      status: complete\n```\nGET and POST methods are supported. If POST method Dozer will look for `requestBody`.\n\nIf `token` is supplied it will be sent in the AUTHORIZATION header.\n\nVariables which contain information about the Morpheus process can be interpolated in the `requestBody` using the standard Golang\ntemplating format. A complete list can be found [here](https://github.com/spoonboy-io/dozer/blob/master/internal/hook/send.go#L15).\n\n### Triggers\n\nCurrently, Webhook triggers can be specified on `status`, `processType`, `taskName`, `accountId` and `createdBy`. They are \nevaluated on processes which have finished running, not in-progress processes. Triggers are additive - all conditions must \nbe satisfied for the Webhook to fire.\n\n| Trigger \t        | Description \t                                            | YAML Example                  |\n|---------\t        |-------------\t                                            | ---------\t                    |\n| `status`          | Runs when the process is complete or failed       \t    | `status: failed`              |\n| `processType`     | Runs for a specific process type ([see list here](https://github.com/spoonboy-io/dozer/blob/master/internal/morpheus/processType.go#L11))       | `processType: localWorkflow`  |\n| `taskName`        | Runs for a given task name            \t                | `taskName: Hello World`       |\n| `accountId`       | Runs for specific tenant id           \t                | `accountId: 2`        \t    |\n| `createdBy`       | Runs for processes created by a specific user            \t| `createdBy: admin`        \t|\n\n\n### Installation\nGrab the tar.gz or zip archive for your OS from the [releases page](https://github.com/spoonboy-io/dozer/releases/latest).\n\nUnpack it to the target host, and then start the server.\n\n```\n./dozer\n```\n\nOr with nohup..\n\n```\nnohup ./dozer \u0026\n```\n\n### Development Opportunities\n\n- Add more triggers such as `zoneId`, `instanceName`, `appName`, `containerName`\n- Retry and blacklisting for webhooks that fail\n- Other notification mechanisms such as email or messaging protocol\n- Run as a service\n\n### License\nLicensed under [Mozilla Public License 2.0](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoonboy-io%2Fdozer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspoonboy-io%2Fdozer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoonboy-io%2Fdozer/lists"}