{"id":16077793,"url":"https://github.com/moov-io/wire","last_synced_at":"2025-04-05T09:09:27.019Z","repository":{"id":37251686,"uuid":"174186064","full_name":"moov-io/wire","owner":"moov-io","description":"FedWire funds service file parser and writer. The HTTP server is available in a Docker image and the Go package is available.","archived":false,"fork":false,"pushed_at":"2024-10-15T15:55:08.000Z","size":4227,"stargazers_count":83,"open_issues_count":13,"forks_count":39,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-10-16T20:19:17.040Z","etag":null,"topics":["banking","fed-wire","federal-reserve","fintech","hacktoberfest","money","money-transfer","wire"],"latest_commit_sha":null,"homepage":"https://moov-io.github.io/wire/","language":"Go","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/moov-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-06T17:01:11.000Z","updated_at":"2024-10-09T14:45:57.000Z","dependencies_parsed_at":"2023-12-19T01:34:29.691Z","dependency_job_id":"6a72b66b-abd8-4c51-a9ae-640f1da493f2","html_url":"https://github.com/moov-io/wire","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moov-io","download_url":"https://codeload.github.com/moov-io/wire/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312082,"owners_count":20918344,"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","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":["banking","fed-wire","federal-reserve","fintech","hacktoberfest","money","money-transfer","wire"],"created_at":"2024-10-09T10:03:30.077Z","updated_at":"2025-04-05T09:09:26.981Z","avatar_url":"https://github.com/moov-io.png","language":"Go","funding_links":[],"categories":["hacktoberfest","Banking Infrastructure"],"sub_categories":[],"readme":"[![Moov Banner Logo](https://user-images.githubusercontent.com/20115216/104214617-885b3c80-53ec-11eb-8ce0-9fc745fb5bfc.png)](https://github.com/moov-io)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://moov-io.github.io/wire/\"\u003eProject Documentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov-io.github.io/wire/api/#overview\"\u003eAPI Endpoints\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/education/wire-api-guide/\"\u003eAPI Guide\u003c/a\u003e\n  ·\n  \u003ca href=\"https://slack.moov.io/\"\u003eCommunity\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/\"\u003eBlog\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n[![GoDoc](https://godoc.org/github.com/moov-io/wire?status.svg)](https://godoc.org/github.com/moov-io/wire)\n[![Build Status](https://github.com/moov-io/wire/workflows/Go/badge.svg)](https://github.com/moov-io/wire/actions)\n[![Go Report Card](https://goreportcard.com/badge/github.com/moov-io/wire)](https://goreportcard.com/report/github.com/moov-io/wire)\n[![Repo Size](https://img.shields.io/github/languages/code-size/moov-io/wire?label=project%20size)](https://github.com/moov-io/wire)\n[![Apache 2 License](https://img.shields.io/badge/license-Apache2-blue.svg)](https://raw.githubusercontent.com/moov-io/wire/master/LICENSE)\n[![Slack Channel](https://slack.moov.io/badge.svg?bg=e01563\u0026fgColor=fffff)](https://slack.moov.io/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/moov/wire)](https://hub.docker.com/r/moov/wire)\n[![GitHub Stars](https://img.shields.io/github/stars/moov-io/wire)](https://github.com/moov-io/wire)\n[![Twitter](https://img.shields.io/twitter/follow/moov?style=social)](https://twitter.com/moov?lang=en)\n\n# moov-io/wire\n\nMoov's mission is to give developers an easy way to create and integrate bank processing into their own software products. Our open source projects are each focused on solving a single responsibility in financial services and designed around performance, scalability, and ease of use.\n\nWire implements a reader, writer, and validator for FED Wire Messages ([FEDWire](https://en.wikipedia.org/wiki/Fedwire)) in an HTTP server and Go library. The HTTP server is available in a [Docker image](#docker) and the Go package `github.com/moov-io/wire` is available.\n\n## Table of contents\n\n- [Project Status](#project-status)\n- [Usage](#usage)\n  - As an API\n    - [Docker](#docker) ([Config](#configuration-settings))\n    - [Google Cloud](#google-cloud-run) ([Config](#configuration-settings))\n    - [Data Persistence](#data-persistence)\n  - [As a Go Module](#go-library)\n  - [As an In-Browser Parser](#in-browser-wire-file-parser)\n- [Learn About Wire](#learn-about-wire)\n- [FAQ](#faq)\n- [Getting Help](#getting-help)\n- [Supported and Tested Platforms](#supported-and-tested-platforms)\n- [Contributing](#contributing)\n- [Related Projects](#related-projects)\n\n## Project status\n\nMoov Wire is actively used in multiple production environments. Please star the project if you are interested in its progress. If you have layers above Wire to simplify tasks, perform business operations, or found bugs we would appreciate an issue or pull request. Thanks!\n\n## Usage\nThe Wire project implements an HTTP server and [Go library](https://pkg.go.dev/github.com/moov-io/wire) for creating and modifying Wire files. We also have some [examples](https://pkg.go.dev/github.com/moov-io/wire/examples) of the reader and writer.\n\n### Docker\n\nWe publish a [public Docker image `moov/wire`](https://hub.docker.com/r/moov/wire/tags) on Docker Hub with every tagged release of Wire. No configuration is required to serve on `:8088` and metrics at `:9098/metrics` in Prometheus format. We also have Docker images for [OpenShift](https://quay.io/repository/moov/wire?tab=tags) published as `quay.io/moov/wire`.\n\nPull \u0026 start the Docker image:\n```\ndocker pull moov/wire:latest\ndocker run -p 8088:8088 -p 9098:9098 moov/wire:latest\n```\n\nList files stored in-memory:\n```\ncurl localhost:8088/files\n```\n```\nnull\n```\n\nCreate a file on the HTTP server:\n```\ncurl -X POST --data-binary \"@./test/testdata/fedWireMessage-CustomerTransfer.txt\" http://localhost:8088/files/create\n```\n```\n{\"id\":\"\u003cYOUR-UNIQUE-FILE-ID\u003e\",\"fedWireMessage\":{\"id\":\"\",\"senderSupplied\":{\"formatVersion\":\"30\", .....\n```\n\nGet the file in its original format:\n```\ncurl http://localhost:8088/files/\u003cYOUR-UNIQUE-FILE-ID\u003e/contents\n```\n```\n{1500}30User ReqT\n{1510}1000\n{1520}20190410Source08000001\n...\n```\n\n### Google Cloud Run\n\nTo get started in a hosted environment you can deploy this project to the Google Cloud Platform.\n\nFrom your [Google Cloud dashboard](https://console.cloud.google.com/home/dashboard) create a new project and call it:\n```\nmoov-wire-demo\n```\n\nEnable the [Container Registry](https://cloud.google.com/container-registry) API for your project and associate a [billing account](https://cloud.google.com/billing/docs/how-to/manage-billing-account) if needed. Then, open the Cloud Shell terminal and run the following Docker commands, substituting your unique project ID:\n\n```\ndocker pull moov/wire\ndocker tag moov/wire gcr.io/\u003cPROJECT-ID\u003e/wire\ndocker push gcr.io/\u003cPROJECT-ID\u003e/wire\n```\n\nDeploy the container to Cloud Run:\n```\ngcloud run deploy --image gcr.io/\u003cPROJECT-ID\u003e/wire --port 8088\n```\n\nSelect your target platform to `1`, service name to `wire`, and region to the one closest to you (enable Google API service if a prompt appears). Upon a successful build you will be given a URL where the API has been deployed:\n\n```\nhttps://YOUR-WIRE-APP-URL.a.run.app\n```\n\nNow you can list files stored in-memory:\n```\ncurl https://YOUR-WIRE-APP-URL.a.run.app/files\n```\nYou should get this response:\n```\nnull\n```\n\n### Configuration settings\n\nThe following environmental variables can be set to configure behavior in Wire.\n\n| Environmental Variable | Description | Default |\n|-----|-----|-----|\n| `HTTPS_CERT_FILE` | Filepath containing a certificate (or intermediate chain) to be served by the HTTP server. Requires all traffic be over secure HTTP. | Empty |\n| `HTTPS_KEY_FILE`  | Filepath of a private key matching the leaf certificate from `HTTPS_CERT_FILE`. | Empty |\n| `WIRE_FILE_TTL` | Time to live (TTL) for `*wire.File` objects stored in the in-memory repository. | 0 = No TTL / Never delete files (Example: `240m`) |\n\n### Data persistence\n\nBy design, Wire  **does not persist** (save) any data about the files or entry details created. The only storage occurs in memory of the process and upon restart Wire will have no files or data saved. Also, no in-memory encryption of the data is performed.\n\n### Go library\n\nThis project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.18 or newer. See [Golang's install instructions](https://golang.org/doc/install) for help setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/wire/releases/latest) as well. We highly recommend you use a tagged release for production.\n\n```\n$ git@github.com:moov-io/wire.git\n\n$ go get -u github.com/moov-io/wire\n\n$ go doc github.com/moov-io/wire fedWireMessage\n```\n\nThe package [`github.com/moov-io/wire`](https://pkg.go.dev/github.com/moov-io/wire) offers a Go-based Wire file reader and writer. To get started, check out a specific example:\n\n\u003cdetails\u003e\n\u003csummary\u003eSupported Business Function Codes\u003c/summary\u003e\n\n| Business Function Code | Name               | Example | Read | Write |\n|----------|----------------------------------|---------|------|-------|\n| DRB      | BankDrawDownRequest            | [Link](examples/bankDrawDownRequest-read/bankDrawDownRequest.txt) | [Link](examples/bankDrawDownRequest-read/main.go) | [Link](examples/bankDrawDownRequest-write/main.go) |\n| BTR      | BankTransfer                     | [Link](examples/bankTransfer-read/bankTransfer.txt) | [Link](examples/bankTransfer-read/main.go) | [Link](examples/bankTransfer-write/main.go) |\n| CKS      | CheckSameDaySettlement           | [Link](examples/checkSameDaySettlement-read/checkSameDaySettlement.txt) | [Link](examples/checkSameDaySettlement-read/main.go) | [Link](examples/checkSameDaySettlement-write/main.go) |\n| DRC      | CustomerCorporateDrawDownRequest | [Link](examples/customerCorporateDrawDownRequest-read/customerCorporateDrawDownRequest.txt) | [Link](examples/customerCorporateDrawDownRequest-read/main.go) | [Link](examples/customerCorporateDrawDownRequest-write/main.go) |\n| CTR      | CustomerTransfer                 | [Link](examples/customerTransfer-read/customerTransfer.txt) | [Link](examples/customerTransfer-read/main.go) | [Link](examples/customerTransfer-write/main.go) |\n| CTP      | CustomerTransferPlus             | [Link](examples/customerTransferPlus-read/customerTransferPlus.txt) | [Link](examples/customerTransferPlus-read/main.go) | [Link](examples/customerTransferPlus-write/main.go) |\n| CTP      | CustomerTransferPlusCOVS         | [Link](examples/customerTransferPlusCOVS-read/customerTransferPlusCOVS.txt) | [Link](examples/customerTransferPlusCOVS-read/main.go) | [Link](examples/customerTransferPlusCOVS-write/main.go) |\n| DEP      | DepositSendersAccount            | [Link](examples/depositSendersAccount-read/depositSendersAccount.txt) | [Link](examples/depositSendersAccount-read/main.go) | [Link](examples/depositSendersAccount-write/main.go) |\n| FFR      | FEDFundsReturned                 | [Link](examples/fedFundsReturned-read/fedFundsReturned.txt) | [Link](examples/fedFundsReturned-read/main.go) | [Link](examples/fedFundsReturned-write/main.go) |\n| FFS      | FEDFundsSold                     | [Link](examples/fedFundsSold-read/fedFundsSold.txt) | [Link](examples/fedFundsSold-read/main.go) | [Link](examples/fedFundsSold-write/main.go) |\n| SVC      | ServiceMessage                   | [Link](examples/serviceMessage-read/serviceMessage.txt) | [Link](examples/serviceMessage-read/main.go) | [Link](examples/serviceMessage-write/main.go) |\n\u003c/details\u003e\n\n### In-browser Wire file parser\nUsing our [in-browser utility](http://oss.moov.io/wire/), you can instantly convert Wire files into JSON. Either paste in Wire file content directly or choose a file from your local machine. This tool is particulary useful if you're handling sensitive PII or want perform some quick tests, as operations are fully client-side with nothing stored in memory. We plan to support bidirectional conversion in the future.\n\n## Learn about Fedwire\n- [Intro to Fedwire](https://www.americanexpress.com/us/foreign-exchange/articles/fedwire-transfers/)\n- [FedWire Message Structure](./docs/message-structure.md)\n- [Sending or Receiving International Wires via the Fedwire Funds Service](https://www.youtube.com/watch?v=GSd2gZ8-bzQ)\n\n## FAQ\n\u003cdetails open=\"true\"\u003e\n\u003csummary \u003e\u003cb\u003eIs there an in-browser tool for converting Wire files into JSON?\u003c/b\u003e\u003c/summary\u003e\nYes! You can find our browser utility at http://oss.moov.io/wire/.\n\u003c/details\u003e\n\u003cdetails open=\"true\"\u003e\n\u003csummary\u003e\u003cb\u003eIs my data being saved somewhere?\u003c/b\u003e\u003c/summary\u003e\nNo, we do not save any data related to files or message details. All processing is done in-memory.\n\u003c/details\u003e\n\u003cdetails open=\"true\"\u003e\n\u003csummary\u003e\u003cb\u003eWhat Fedwire message types are supported?\u003c/b\u003e\u003c/summary\u003e\nWe support generating and parsing all Business Function codes.\n\u003c/details\u003e\n\n## Getting help\n\n channel | info\n ------- | -------\n[Project Documentation](https://moov-io.github.io/wire/) | Our project documentation available online.\nTwitter [@moov](https://twitter.com/moov)\t| You can follow Moov.io's Twitter feed to get updates on our project(s). You can also tweet us questions or just share blogs or stories.\n[GitHub Issue](https://github.com/moov-io/wire/issues) | If you are able to reproduce a problem please open a GitHub Issue under the specific project that caused the error.\n[moov-io slack](https://slack.moov.io/) | Join our slack channel to have an interactive discussion about the development of the project.\n\n## Supported and tested platforms\n\n- 64-bit Linux (Ubuntu, Debian), macOS, and Windows\n\nNote: 32-bit platforms have known issues and are not supported.\n\n## Contributing\n\nYes please! Please review our [Contributing guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) to get started!\n\nThis project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.18 or newer. See [Golang's install instructions](https://golang.org/doc/install) for help setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/wire/releases/latest) as well. We highly recommend you use a tagged release for production.\n\n### Releasing\n\nTo make a release of wire simply open a pull request with `CHANGELOG.md` and `version.go` updated with the next version number and details. You'll also need to push the tag (i.e. `git push origin v1.0.0`) to origin in order for CI to make the release.\n\n### Testing\n\nWe maintain a comprehensive suite of unit tests and recommend table-driven testing when a particular function warrants several very similar test cases. To run all test files in the current directory, use `go test`.\n\n### Fuzzing\n\nWe currently run fuzzing over Wire in the form of a [Github Action](https://github.com/moov-io/wire/actions/workflows/fuzz.yml). Please report crashes examples to [`oss@moov.io`](mailto:oss@moov.io). Thanks!\n\n## Related projects\n\nAs part of Moov's initiative to offer open source fintech infrastructure, we have a large collection of active projects you may find useful:\n\n- [Moov Watchman](https://github.com/moov-io/watchman) offers search functions over numerous trade sanction lists from the United States and European Union.\n\n- [Moov Fed](https://github.com/moov-io/fed) implements utility services for searching the United States Federal Reserve System such as ABA routing numbers, financial institution name lookup, and FedACH and Fedwire routing information.\n\n- [Moov Image Cash Letter](https://github.com/moov-io/imagecashletter) implements Image Cash Letter (ICL) files used for Check21, X.9 or check truncation files for exchange and remote deposit in the U.S.\n\n- [Moov ACH](https://github.com/moov-io/ach) provides ACH file generation and parsing, supporting all Standard Entry Codes for the primary method of money movement throughout the United States.\n\n- [Moov Metro 2](https://github.com/moov-io/metro2) provides a way to easily read, create, and validate Metro 2 format, which is used for consumer credit history reporting by the United States credit bureaus.\n\n## License\n\nApache License 2.0 - See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fwire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoov-io%2Fwire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fwire/lists"}