diff --git a/Makefile b/Makefile
index 483df09..53da4f7 100644
--- a/Makefile
+++ b/Makefile
@@ -101,7 +101,7 @@ build-all:
version:
@go version
-generate: generate-messages generate-mocks lint
+generate: generate-messages generate-mocks generate-swagger-doc lint
generate-mocks:
which mockgen || go install go.uber.org/mock/mockgen@v0.4.0
@@ -153,6 +153,10 @@ generate-messages:
--xmlns-override="urn:iso:std:iso:20022:tech:xsd:pacs.029.001.02=pacs_029_001_02"
@find ./iso20022-messages/gen -name '*.go' -exec gofmt -w {} \; -exec goimports -w {} \;
+generate-swagger-doc:
+ @go install github.com/swaggo/swag/cmd/swag@v1.16.3
+ @cd iso20022 && swag init -g ./cmd/main.go -o ./docs/swagger -p pascalcase --parseVendor --parseInternal
+
lint:
@if test ! -e ./bin/golangci-lint; then \
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./bin v1.59.1; \
diff --git a/go.work.sum b/go.work.sum
index 3aad918..e70e410 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -784,6 +784,8 @@ github.com/dave/astrid v0.0.0-20170323122508-8c2895878b14/go.mod h1:Sth2QfxfATb/
github.com/dave/brenda v1.1.0/go.mod h1:4wCUr6gSlu5/1Tk7akE5X7UorwiQ8Rij0SKH3/BGMOM=
github.com/dave/courtney v0.3.0/go.mod h1:BAv3hA06AYfNUjfjQr+5gc6vxeBVOupLqrColj+QSD8=
github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ=
+github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI=
+github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk=
github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8=
github.com/dave/patsy v0.0.0-20210517141501-957256f50cba/go.mod h1:qfR88CgEGLoiqDaE+xxDCi5QA5v4vUoW0UCX2Nd5Tlc=
github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA=
@@ -1159,11 +1161,11 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
+github.com/jmattheis/goverter v1.5.0 h1:3ANt/y+OzmB63Kw55ejYPv0J44RqNY781zNETVgi8WQ=
+github.com/jmattheis/goverter v1.5.0/go.mod h1:iVIl/4qItWjWj2g3vjouGoYensJbRqDHpzlEVMHHFeY=
github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE=
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
@@ -1258,8 +1260,6 @@ github.com/madflojo/testcerts v1.2.0/go.mod h1:MW8sh39gLnkKh4K0Nc55AyHEDl9l/FBLD
github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw=
github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q=
@@ -1511,6 +1511,7 @@ github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXY
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
+github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI=
github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw=
@@ -1600,6 +1601,8 @@ github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lP
github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI=
github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
+github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
+github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y=
diff --git a/iso20022/cmd/main.go b/iso20022/cmd/main.go
index ddd8d46..61733fe 100644
--- a/iso20022/cmd/main.go
+++ b/iso20022/cmd/main.go
@@ -14,6 +14,10 @@ import (
"github.com/CoreumFoundation/iso20022-client/iso20022/cmd/cli"
)
+// @title ISO20022 Client
+// @version 0.0.1
+
+// @BasePath /v1
func main() {
run.Tool("iso20022", func(ctx context.Context) error {
rootCmd, err := RootCmd(ctx)
diff --git a/iso20022/docs/docs.go b/iso20022/docs/docs.go
new file mode 100644
index 0000000..a6c2ca2
--- /dev/null
+++ b/iso20022/docs/docs.go
@@ -0,0 +1,9 @@
+package docs
+
+import _ "embed"
+
+//go:embed templates/swagger/swagger.html
+var SwaggerTemplate []byte
+
+//go:embed swagger/swagger.json
+var SwaggerJson []byte
diff --git a/iso20022/docs/swagger/docs.go b/iso20022/docs/swagger/docs.go
new file mode 100644
index 0000000..469e2e3
--- /dev/null
+++ b/iso20022/docs/swagger/docs.go
@@ -0,0 +1,164 @@
+// Package swagger Code generated by swaggo/swag. DO NOT EDIT
+package swagger
+
+import "github.com/swaggo/swag"
+
+const docTemplate = `{
+ "schemes": {{ marshal .Schemes }},
+ "swagger": "2.0",
+ "info": {
+ "description": "{{escape .Description}}",
+ "title": "{{.Title}}",
+ "contact": {},
+ "version": "{{.Version}}"
+ },
+ "host": "{{.Host}}",
+ "basePath": "{{.BasePath}}",
+ "paths": {
+ "/receive": {
+ "get": {
+ "description": "Tries to receive an ISO20022 message if there is any",
+ "produces": [
+ "application/xml"
+ ],
+ "tags": [
+ "Messaging"
+ ],
+ "summary": "Receive a message",
+ "responses": {
+ "200": {
+ "description": "OK"
+ },
+ "204": {
+ "description": "No Content"
+ }
+ },
+ "x-code-samples": [
+ {
+ "lang": "xml",
+ "source": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cFIToFICstmrCdtTrf\u003e\r\n\t\u003cGrpHdr\u003e\r\n\t\t\u003cMsgId\u003eBBBB/150928-CT/EUR/912\u003c/MsgId\u003e\r\n\t\t\u003cCreDtTm\u003e2015-09-28T16:01:00\u003c/CreDtTm\u003e\r\n\t\t\u003cNbOfTxs\u003e2\u003c/NbOfTxs\u003e\r\n\t\t\u003cTtlIntrBkSttlmAmt Ccy=\"EUR\"\u003e504500\u003c/TtlIntrBkSttlmAmt\u003e\r\n\t\t\u003cIntrBkSttlmDt\u003e2015-09-29\u003c/IntrBkSttlmDt\u003e\r\n\t\t\u003cSttlmInf\u003e\r\n\t\t\t\u003cSttlmMtd\u003eINDA\u003c/SttlmMtd\u003e\r\n\t\t\t\u003cSttlmAcct\u003e\r\n\t\t\t\t\u003cId\u003e\r\n\t\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\t\u003cId\u003e29314569847\u003c/Id\u003e\r\n\t\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\t\u003c/Id\u003e\r\n\t\t\t\u003c/SttlmAcct\u003e\r\n\t\t\u003c/SttlmInf\u003e\r\n\t\t\u003cInstgAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstgAgt\u003e\r\n\t\t\u003cInstdAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstdAgt\u003e\r\n\t\u003c/GrpHdr\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/1\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eABC/ABC-13679/2015-09-15\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/1\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e499500\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cInstdAmt Ccy=\"EUR\"\u003e500000\u003c/InstdAmt\u003e\r\n\t\t\u003cChrgBr\u003eCRED\u003c/ChrgBr\u003e\r\n\t\t\u003cChrgsInf\u003e\r\n\t\t\t\u003cAmt Ccy=\"EUR\"\u003e500\u003c/Amt\u003e\r\n\t\t\t\u003cAgt\u003e\r\n\t\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\t\u003c/Agt\u003e\r\n\t\t\u003c/ChrgsInf\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eABC Corporation\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eTimes Square\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e7\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY 10036\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125574999\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eDDDDBEBB\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eGHI Semiconductors\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eAvenue Brugmann\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e415\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003e1180\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eBrussels\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eBE\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eBE30001216371411\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cPurp\u003e\r\n\t\t\t\u003cCd\u003eGDDS\u003c/Cd\u003e\r\n\t\t\u003c/Purp\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cStrd\u003e\r\n\t\t\t\t\u003cRfrdDocInf\u003e\r\n\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\u003cCdOrPrtry\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eCINV\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/CdOrPrtry\u003e\r\n\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\u003cNb\u003eABC-13679\u003c/Nb\u003e\r\n\t\t\t\t\t\u003cRltdDt\u003e\r\n\t\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eINDA\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\t\u003cDt\u003e2015-09-08\u003c/Dt\u003e\r\n\t\t\t\t\t\u003c/RltdDt\u003e\r\n\t\t\t\t\u003c/RfrdDocInf\u003e\r\n\t\t\t\u003c/Strd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/2\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eBBBB/150928-ZZ/JO/164794\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/2\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e5000\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cChrgBr\u003eSHAR\u003c/ChrgBr\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eMr. Jones\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003e16th Street\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e30\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY10023\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125583145\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eZZ Insurances\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eFriedrich-Ebert-Anlage\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e2-14\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eD-60 325\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eFrankfurt am Main\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eDE\u003c/Ctry\u003e\r\n\t\t\t\t\u003cAdrLine\u003eCity Haus 1 10th Floor\u003c/AdrLine\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eDE89370400440532014000\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cUstrd\u003eContract ZZ/JO/164794\u003c/Ustrd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\u003c/FIToFICstmrCdtTrf\u003e\r\n"
+ }
+ ]
+ }
+ },
+ "/send": {
+ "post": {
+ "description": "Send an ISO20022 message",
+ "consumes": [
+ "application/xml"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "Messaging"
+ ],
+ "summary": "Send a message",
+ "parameters": [
+ {
+ "description": "ISO20022 message in xml format",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "example": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cFIToFICstmrCdtTrf\u003e\r\n\t\u003cGrpHdr\u003e\r\n\t\t\u003cMsgId\u003eBBBB/150928-CT/EUR/912\u003c/MsgId\u003e\r\n\t\t\u003cCreDtTm\u003e2015-09-28T16:01:00\u003c/CreDtTm\u003e\r\n\t\t\u003cNbOfTxs\u003e2\u003c/NbOfTxs\u003e\r\n\t\t\u003cTtlIntrBkSttlmAmt Ccy=\"EUR\"\u003e504500\u003c/TtlIntrBkSttlmAmt\u003e\r\n\t\t\u003cIntrBkSttlmDt\u003e2015-09-29\u003c/IntrBkSttlmDt\u003e\r\n\t\t\u003cSttlmInf\u003e\r\n\t\t\t\u003cSttlmMtd\u003eINDA\u003c/SttlmMtd\u003e\r\n\t\t\t\u003cSttlmAcct\u003e\r\n\t\t\t\t\u003cId\u003e\r\n\t\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\t\u003cId\u003e29314569847\u003c/Id\u003e\r\n\t\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\t\u003c/Id\u003e\r\n\t\t\t\u003c/SttlmAcct\u003e\r\n\t\t\u003c/SttlmInf\u003e\r\n\t\t\u003cInstgAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstgAgt\u003e\r\n\t\t\u003cInstdAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstdAgt\u003e\r\n\t\u003c/GrpHdr\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/1\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eABC/ABC-13679/2015-09-15\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/1\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e499500\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cInstdAmt Ccy=\"EUR\"\u003e500000\u003c/InstdAmt\u003e\r\n\t\t\u003cChrgBr\u003eCRED\u003c/ChrgBr\u003e\r\n\t\t\u003cChrgsInf\u003e\r\n\t\t\t\u003cAmt Ccy=\"EUR\"\u003e500\u003c/Amt\u003e\r\n\t\t\t\u003cAgt\u003e\r\n\t\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\t\u003c/Agt\u003e\r\n\t\t\u003c/ChrgsInf\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eABC Corporation\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eTimes Square\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e7\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY 10036\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125574999\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eDDDDBEBB\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eGHI Semiconductors\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eAvenue Brugmann\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e415\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003e1180\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eBrussels\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eBE\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eBE30001216371411\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cPurp\u003e\r\n\t\t\t\u003cCd\u003eGDDS\u003c/Cd\u003e\r\n\t\t\u003c/Purp\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cStrd\u003e\r\n\t\t\t\t\u003cRfrdDocInf\u003e\r\n\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\u003cCdOrPrtry\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eCINV\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/CdOrPrtry\u003e\r\n\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\u003cNb\u003eABC-13679\u003c/Nb\u003e\r\n\t\t\t\t\t\u003cRltdDt\u003e\r\n\t\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eINDA\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\t\u003cDt\u003e2015-09-08\u003c/Dt\u003e\r\n\t\t\t\t\t\u003c/RltdDt\u003e\r\n\t\t\t\t\u003c/RfrdDocInf\u003e\r\n\t\t\t\u003c/Strd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/2\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eBBBB/150928-ZZ/JO/164794\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/2\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e5000\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cChrgBr\u003eSHAR\u003c/ChrgBr\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eMr. Jones\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003e16th Street\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e30\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY10023\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125583145\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eZZ Insurances\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eFriedrich-Ebert-Anlage\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e2-14\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eD-60 325\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eFrankfurt am Main\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eDE\u003c/Ctry\u003e\r\n\t\t\t\t\u003cAdrLine\u003eCity Haus 1 10th Floor\u003c/AdrLine\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eDE89370400440532014000\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cUstrd\u003eContract ZZ/JO/164794\u003c/Ustrd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\u003c/FIToFICstmrCdtTrf\u003e\r\n"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/server.StandardResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/server.MessageSendResponse"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/server.StandardResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "500": {
+ "description": "Something bad happened"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "server.MessageSendResponse": {
+ "type": "object",
+ "properties": {
+ "message_id": {
+ "type": "string"
+ }
+ }
+ },
+ "server.ResponseStatus": {
+ "type": "string",
+ "enum": [
+ "Ok",
+ "Fail"
+ ],
+ "x-enum-varnames": [
+ "OK",
+ "Fail"
+ ]
+ },
+ "server.StandardResponse": {
+ "type": "object",
+ "properties": {
+ "data": {},
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/server.ResponseStatus"
+ }
+ }
+ }
+ }
+}`
+
+// SwaggerInfo holds exported Swagger Info so clients can modify it
+var SwaggerInfo = &swag.Spec{
+ Version: "0.0.1",
+ Host: "",
+ BasePath: "/v1",
+ Schemes: []string{},
+ Title: "ISO20022 Client",
+ Description: "",
+ InfoInstanceName: "swagger",
+ SwaggerTemplate: docTemplate,
+ LeftDelim: "{{",
+ RightDelim: "}}",
+}
+
+func init() {
+ swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
+}
diff --git a/iso20022/docs/swagger/swagger.json b/iso20022/docs/swagger/swagger.json
new file mode 100644
index 0000000..bda4d36
--- /dev/null
+++ b/iso20022/docs/swagger/swagger.json
@@ -0,0 +1,138 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "ISO20022 Client",
+ "contact": {},
+ "version": "0.0.1"
+ },
+ "basePath": "/v1",
+ "paths": {
+ "/receive": {
+ "get": {
+ "description": "Tries to receive an ISO20022 message if there is any",
+ "produces": [
+ "application/xml"
+ ],
+ "tags": [
+ "Messaging"
+ ],
+ "summary": "Receive a message",
+ "responses": {
+ "200": {
+ "description": "OK"
+ },
+ "204": {
+ "description": "No Content"
+ }
+ },
+ "x-code-samples": [
+ {
+ "lang": "xml",
+ "source": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cFIToFICstmrCdtTrf\u003e\r\n\t\u003cGrpHdr\u003e\r\n\t\t\u003cMsgId\u003eBBBB/150928-CT/EUR/912\u003c/MsgId\u003e\r\n\t\t\u003cCreDtTm\u003e2015-09-28T16:01:00\u003c/CreDtTm\u003e\r\n\t\t\u003cNbOfTxs\u003e2\u003c/NbOfTxs\u003e\r\n\t\t\u003cTtlIntrBkSttlmAmt Ccy=\"EUR\"\u003e504500\u003c/TtlIntrBkSttlmAmt\u003e\r\n\t\t\u003cIntrBkSttlmDt\u003e2015-09-29\u003c/IntrBkSttlmDt\u003e\r\n\t\t\u003cSttlmInf\u003e\r\n\t\t\t\u003cSttlmMtd\u003eINDA\u003c/SttlmMtd\u003e\r\n\t\t\t\u003cSttlmAcct\u003e\r\n\t\t\t\t\u003cId\u003e\r\n\t\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\t\u003cId\u003e29314569847\u003c/Id\u003e\r\n\t\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\t\u003c/Id\u003e\r\n\t\t\t\u003c/SttlmAcct\u003e\r\n\t\t\u003c/SttlmInf\u003e\r\n\t\t\u003cInstgAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstgAgt\u003e\r\n\t\t\u003cInstdAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstdAgt\u003e\r\n\t\u003c/GrpHdr\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/1\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eABC/ABC-13679/2015-09-15\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/1\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e499500\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cInstdAmt Ccy=\"EUR\"\u003e500000\u003c/InstdAmt\u003e\r\n\t\t\u003cChrgBr\u003eCRED\u003c/ChrgBr\u003e\r\n\t\t\u003cChrgsInf\u003e\r\n\t\t\t\u003cAmt Ccy=\"EUR\"\u003e500\u003c/Amt\u003e\r\n\t\t\t\u003cAgt\u003e\r\n\t\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\t\u003c/Agt\u003e\r\n\t\t\u003c/ChrgsInf\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eABC Corporation\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eTimes Square\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e7\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY 10036\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125574999\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eDDDDBEBB\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eGHI Semiconductors\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eAvenue Brugmann\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e415\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003e1180\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eBrussels\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eBE\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eBE30001216371411\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cPurp\u003e\r\n\t\t\t\u003cCd\u003eGDDS\u003c/Cd\u003e\r\n\t\t\u003c/Purp\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cStrd\u003e\r\n\t\t\t\t\u003cRfrdDocInf\u003e\r\n\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\u003cCdOrPrtry\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eCINV\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/CdOrPrtry\u003e\r\n\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\u003cNb\u003eABC-13679\u003c/Nb\u003e\r\n\t\t\t\t\t\u003cRltdDt\u003e\r\n\t\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eINDA\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\t\u003cDt\u003e2015-09-08\u003c/Dt\u003e\r\n\t\t\t\t\t\u003c/RltdDt\u003e\r\n\t\t\t\t\u003c/RfrdDocInf\u003e\r\n\t\t\t\u003c/Strd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/2\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eBBBB/150928-ZZ/JO/164794\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/2\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e5000\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cChrgBr\u003eSHAR\u003c/ChrgBr\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eMr. Jones\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003e16th Street\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e30\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY10023\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125583145\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eZZ Insurances\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eFriedrich-Ebert-Anlage\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e2-14\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eD-60 325\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eFrankfurt am Main\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eDE\u003c/Ctry\u003e\r\n\t\t\t\t\u003cAdrLine\u003eCity Haus 1 10th Floor\u003c/AdrLine\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eDE89370400440532014000\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cUstrd\u003eContract ZZ/JO/164794\u003c/Ustrd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\u003c/FIToFICstmrCdtTrf\u003e\r\n"
+ }
+ ]
+ }
+ },
+ "/send": {
+ "post": {
+ "description": "Send an ISO20022 message",
+ "consumes": [
+ "application/xml"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "Messaging"
+ ],
+ "summary": "Send a message",
+ "parameters": [
+ {
+ "description": "ISO20022 message in xml format",
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "example": "\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cFIToFICstmrCdtTrf\u003e\r\n\t\u003cGrpHdr\u003e\r\n\t\t\u003cMsgId\u003eBBBB/150928-CT/EUR/912\u003c/MsgId\u003e\r\n\t\t\u003cCreDtTm\u003e2015-09-28T16:01:00\u003c/CreDtTm\u003e\r\n\t\t\u003cNbOfTxs\u003e2\u003c/NbOfTxs\u003e\r\n\t\t\u003cTtlIntrBkSttlmAmt Ccy=\"EUR\"\u003e504500\u003c/TtlIntrBkSttlmAmt\u003e\r\n\t\t\u003cIntrBkSttlmDt\u003e2015-09-29\u003c/IntrBkSttlmDt\u003e\r\n\t\t\u003cSttlmInf\u003e\r\n\t\t\t\u003cSttlmMtd\u003eINDA\u003c/SttlmMtd\u003e\r\n\t\t\t\u003cSttlmAcct\u003e\r\n\t\t\t\t\u003cId\u003e\r\n\t\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\t\u003cId\u003e29314569847\u003c/Id\u003e\r\n\t\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\t\u003c/Id\u003e\r\n\t\t\t\u003c/SttlmAcct\u003e\r\n\t\t\u003c/SttlmInf\u003e\r\n\t\t\u003cInstgAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstgAgt\u003e\r\n\t\t\u003cInstdAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/InstdAgt\u003e\r\n\t\u003c/GrpHdr\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/1\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eABC/ABC-13679/2015-09-15\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/1\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e499500\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cInstdAmt Ccy=\"EUR\"\u003e500000\u003c/InstdAmt\u003e\r\n\t\t\u003cChrgBr\u003eCRED\u003c/ChrgBr\u003e\r\n\t\t\u003cChrgsInf\u003e\r\n\t\t\t\u003cAmt Ccy=\"EUR\"\u003e500\u003c/Amt\u003e\r\n\t\t\t\u003cAgt\u003e\r\n\t\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\t\u003c/Agt\u003e\r\n\t\t\u003c/ChrgsInf\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eABC Corporation\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eTimes Square\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e7\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY 10036\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125574999\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eDDDDBEBB\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eGHI Semiconductors\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eAvenue Brugmann\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e415\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003e1180\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eBrussels\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eBE\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eBE30001216371411\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cPurp\u003e\r\n\t\t\t\u003cCd\u003eGDDS\u003c/Cd\u003e\r\n\t\t\u003c/Purp\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cStrd\u003e\r\n\t\t\t\t\u003cRfrdDocInf\u003e\r\n\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\u003cCdOrPrtry\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eCINV\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/CdOrPrtry\u003e\r\n\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\u003cNb\u003eABC-13679\u003c/Nb\u003e\r\n\t\t\t\t\t\u003cRltdDt\u003e\r\n\t\t\t\t\t\t\u003cTp\u003e\r\n\t\t\t\t\t\t\t\u003cCd\u003eINDA\u003c/Cd\u003e\r\n\t\t\t\t\t\t\u003c/Tp\u003e\r\n\t\t\t\t\t\t\u003cDt\u003e2015-09-08\u003c/Dt\u003e\r\n\t\t\t\t\t\u003c/RltdDt\u003e\r\n\t\t\t\t\u003c/RfrdDocInf\u003e\r\n\t\t\t\u003c/Strd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\t\u003cCdtTrfTxInf\u003e\r\n\t\t\u003cPmtId\u003e\r\n\t\t\t\u003cInstrId\u003eBBBB/150928-CCT/EUR/912/2\u003c/InstrId\u003e\r\n\t\t\t\u003cEndToEndId\u003eBBBB/150928-ZZ/JO/164794\u003c/EndToEndId\u003e\r\n\t\t\t\u003cTxId\u003eBBBB/150928-CCT/EUR/912/2\u003c/TxId\u003e\r\n\t\t\u003c/PmtId\u003e\r\n\t\t\u003cPmtTpInf\u003e\r\n\t\t\t\u003cInstrPrty\u003eNORM\u003c/InstrPrty\u003e\r\n\t\t\u003c/PmtTpInf\u003e\r\n\t\t\u003cIntrBkSttlmAmt Ccy=\"EUR\"\u003e5000\u003c/IntrBkSttlmAmt\u003e\r\n\t\t\u003cChrgBr\u003eSHAR\u003c/ChrgBr\u003e\r\n\t\t\u003cDbtr\u003e\r\n\t\t\t\u003cNm\u003eMr. Jones\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003e16th Street\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e30\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eNY10023\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eNew York\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eUS\u003c/Ctry\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Dbtr\u003e\r\n\t\t\u003cDbtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cOthr\u003e\r\n\t\t\t\t\t\u003cId\u003e00125583145\u003c/Id\u003e\r\n\t\t\t\t\u003c/Othr\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/DbtrAcct\u003e\r\n\t\t\u003cDbtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eBBBBUS33\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/DbtrAgt\u003e\r\n\t\t\u003cCdtrAgt\u003e\r\n\t\t\t\u003cFinInstnId\u003e\r\n\t\t\t\t\u003cBICFI\u003eEEEEDEFF\u003c/BICFI\u003e\r\n\t\t\t\u003c/FinInstnId\u003e\r\n\t\t\u003c/CdtrAgt\u003e\r\n\t\t\u003cCdtr\u003e\r\n\t\t\t\u003cNm\u003eZZ Insurances\u003c/Nm\u003e\r\n\t\t\t\u003cPstlAdr\u003e\r\n\t\t\t\t\u003cStrtNm\u003eFriedrich-Ebert-Anlage\u003c/StrtNm\u003e\r\n\t\t\t\t\u003cBldgNb\u003e2-14\u003c/BldgNb\u003e\r\n\t\t\t\t\u003cPstCd\u003eD-60 325\u003c/PstCd\u003e\r\n\t\t\t\t\u003cTwnNm\u003eFrankfurt am Main\u003c/TwnNm\u003e\r\n\t\t\t\t\u003cCtry\u003eDE\u003c/Ctry\u003e\r\n\t\t\t\t\u003cAdrLine\u003eCity Haus 1 10th Floor\u003c/AdrLine\u003e\r\n\t\t\t\u003c/PstlAdr\u003e\r\n\t\t\u003c/Cdtr\u003e\r\n\t\t\u003cCdtrAcct\u003e\r\n\t\t\t\u003cId\u003e\r\n\t\t\t\t\u003cIBAN\u003eDE89370400440532014000\u003c/IBAN\u003e\r\n\t\t\t\u003c/Id\u003e\r\n\t\t\u003c/CdtrAcct\u003e\r\n\t\t\u003cRmtInf\u003e\r\n\t\t\t\u003cUstrd\u003eContract ZZ/JO/164794\u003c/Ustrd\u003e\r\n\t\t\u003c/RmtInf\u003e\r\n\t\u003c/CdtTrfTxInf\u003e\r\n\u003c/FIToFICstmrCdtTrf\u003e\r\n"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/server.StandardResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/server.MessageSendResponse"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/server.StandardResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "500": {
+ "description": "Something bad happened"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "server.MessageSendResponse": {
+ "type": "object",
+ "properties": {
+ "message_id": {
+ "type": "string"
+ }
+ }
+ },
+ "server.ResponseStatus": {
+ "type": "string",
+ "enum": [
+ "Ok",
+ "Fail"
+ ],
+ "x-enum-varnames": [
+ "OK",
+ "Fail"
+ ]
+ },
+ "server.StandardResponse": {
+ "type": "object",
+ "properties": {
+ "data": {},
+ "message": {
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/definitions/server.ResponseStatus"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iso20022/docs/swagger/swagger.yaml b/iso20022/docs/swagger/swagger.yaml
new file mode 100644
index 0000000..0b9e2db
--- /dev/null
+++ b/iso20022/docs/swagger/swagger.yaml
@@ -0,0 +1,110 @@
+basePath: /v1
+definitions:
+ server.MessageSendResponse:
+ properties:
+ message_id:
+ type: string
+ type: object
+ server.ResponseStatus:
+ enum:
+ - Ok
+ - Fail
+ type: string
+ x-enum-varnames:
+ - OK
+ - Fail
+ server.StandardResponse:
+ properties:
+ data: {}
+ message:
+ type: string
+ status:
+ $ref: '#/definitions/server.ResponseStatus'
+ type: object
+info:
+ contact: {}
+ title: ISO20022 Client
+ version: 0.0.1
+paths:
+ /receive:
+ get:
+ description: Tries to receive an ISO20022 message if there is any
+ produces:
+ - application/xml
+ responses:
+ "200":
+ description: OK
+ "204":
+ description: No Content
+ summary: Receive a message
+ tags:
+ - Messaging
+ x-code-samples:
+ - lang: xml
+ source: "\r\n