# ISO 20022 Software Development Kit (SDK)
The `iso-20022-sdk` is a Rust library for working with ISO 20022 messages.
```toml
# Cargo.toml
[dependencies]
iso-20022-sdk = { version = "0.1.0" }
```
> #
> WARNING: This repository is actively under development. While we will do our best to maintain consistency and adequate deprecation notices, it is wise to expect breaking changes and use a static version in your dependencies.
> #
> #
> Read the [ISO 20022 SDK User Guide](https://emergentfinancial.github.io/iso-20022/) for usage examples and more information.
> #
> #
> Need ISO 20022 Integrations? [Contact us](mailto:ryan.tate@emergent.financial) to learn about our services.
> #
## Features
By default, `iso-20022-sdk` includes `nvlp`, `head` and `dsig` features, which imports `iso-20022-nvlp`, `iso-20022-head` and `iso-20022-dsig` respectively.
Documents, e.g. `remt.001.001.01`, are conditionally compiled and need to be added individually, either as a business domain or message set feature, e.g.
```toml
# Cargo.toml
[dependencies]
iso-20022-sdk = { version = "0.1.0", features = ["remt"] }
```
Now you can create a `Document` from the `remt.001.001.01` namespace:
```rust
use iso_20022_sdk::Document;
let mut doc = Document::from_namespace("remt.001.001.01")?;
```
### Business Domains
To include messages relevant only to the `payments` business domain, add the `payments` feature to your `Cargo.toml`:
```toml
# Cargo.toml
[dependencies]
iso-20022-sdk = { version = "0.1.0", features = ["payments"] }
```
Using the `payments` features will include all message sets in the `payments` business domain:
```toml
payments = ["acmt", "auth", "acmt", "admi", "camt", "pacs", "pain", "reda", "remt"]
```
> Available business domain `features`
>
> - `payments`
> - `securities`
> - `trade`
> - `cards`
> - `fx`
### Message Sets
Each message set, e.g. `acmt`, has its own Rust library, e.g. `iso-20022-acmt`, which can be conditionally compiled using the `Cargo.toml` **features** flag corresponding to the message set.
```toml
# Cargo.toml
[dependencies]
iso-20022-sdk = { version = "0.1.0", features = ["acmt", "admi"] }
```
> Available message set `features`
>
> - `acmt`
> - `admi`
> - `auth`
> - `caaa`
> - `caad`
> - `caam`
> - `cafc`
> - `cafm`
> - `cafr`
> - `cain`
> - `camt`
> - `canm`
> - `casp`
> - `casr`
> - `catm`
> - `catp`
> - `colr`
> - `fxtr`
> - `pacs`
> - `pain`
> - `reda`
> - `remt`
> - `secl`
> - `seev`
> - `semt`
> - `sese`
> - `setr`
> - `tsin`
> - `tsmt`
> - `tsrv`
---
### DISCLAIMER
Emergent Financial, LLC and iso-20022-sdk are separate entities from the ISO® 20022 Registration Authority. The ISO 20022 Registration Authority is responsible for managing and maintaining the ISO 20022 standard, whereas Emergent Financial, LLC and iso-20022-sdk are not affiliated with this organization and do not represent it in any way.
Furthermore, please note that iso-20022-sdk is provided as-is without any warranty of any kind, either express or implied. Emergent Financial, LLC and iso-20022-sdk do not make any guarantees regarding the accuracy, completeness, or reliability of the information contained in iso-20022-sdk, nor do they assume any liability for any damages or losses that may arise from the use of this software.
It is recommended that users exercise caution when using iso-20022-sdk and conduct their own independent research to assess its suitability for their particular purposes. Emergent Financial, LLC and iso-20022-sdk shall not be held liable for any direct, indirect, incidental, consequential, or other damages arising from the use of iso-20022-sdk or any other software provided by Emergent Financial, LLC.
---
Copyright 2023 Emergent Financial, LLC - All Rights Reserved