# AA API v2.0.0

Please refer the FIU API Spec (2.0.0) <https://api.rebit.org.in/spec/aa> in the ReBIT to implement the responses for different cases. The APIs below only has success response.

### Create JWS and Sign API Request

The API calls to AA ReBIT api's should have **x-jws-signature** in the header which is a detached JWS of the body.

[Here ](https://docs.saafe.in/fiu-module/jws-signature)you can find how to create JWS keys for creating the **x-jws-signature** and refer [AA Commons Documentation](https://sahamati.gitbook.io/aa-common-service/token-service/access-token-logistics) for how to sign the request that you send to AA and verify the request that you receive from AA.

### Consent Creation

You need to raise a consent to Saafe using /Consent API

<mark style="color:green;">`POST`</mark> `https://sandbox.saafe.in/api/v2/Consent`

#### Request

Header

<table><thead><tr><th width="193">Key</th><th width="556.3333333333333">Value</th></tr></thead><tbody><tr><td>x-jws-signature</td><td>string</td></tr><tr><td>client_api_key</td><td>string</td></tr></tbody></table>

Body

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:23:55.384Z",
    "txnid": "644d2aff-e43b-4bb9-9047-498cbb9896d2",
    "ConsentDetail": {
        "consentStart": "2024-05-09T15:23:55.384Z",
        "consentExpiry": "2025-01-01T00:00:00.000Z",
        "consentMode": "STORE",
        "fetchType": "PERIODIC",
        "consentTypes": [
            "PROFILE",
            "TRANSACTIONS",
            "SUMMARY"
        ],
        "fiTypes": [
            "DEPOSIT"
        ],
        "DataConsumer": {
            "id": "central-trust-uat", // Your FIU Entity ID
            "type": "FIU"
        },
        "Customer": {
            "Identifiers": [
                {
                    "type": "MOBILE",
                    "value": "9944612241" //Customer Phone Number
                }
            ]
        },
        "Purpose": {
            "code": "101",
            "refUri": "https://api.rebit.org.in/aa/purpose/101.xml",
            "text": "To provide your asset insights",
            "Category": {
                "type": "Personal Finance"
            }
        },
        "FIDataRange": {
            "from": "2023-01-01T00:00:00.000Z",
            "to": "2025-01-01T00:00:00.000Z"
        },
        "DataLife": {
            "unit": "YEAR",
            "value": 3
        },
        "Frequency": {
            "unit": "DAY",
            "value": 10
        }
    }
}
```

#### Response 200

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:40:00.669Z",
    "txnid": "019fe3f7-edd6-45ac-9f29-24fad3e504ca",
    "Customer": {
        "id": "9944612241@dashboard-aa-preprod"
    },
    "ConsentHandle": "465d1f35-f716-484f-a38e-30797d97b525"
}
```

### Consent Handle Status

<mark style="color:green;">`POST`</mark> `https://sandbox.saafe.in/api/v2/Consent/handle`

#### Request

Header

<table><thead><tr><th width="193">Key</th><th width="556.3333333333333">Value</th></tr></thead><tbody><tr><td>x-jws-signature</td><td>string</td></tr><tr><td>client_api_key</td><td>string</td></tr></tbody></table>

Body

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:41:49.974Z",
    "txnid": "e188d16d-cbb9-4898-ab3b-ab6b57195e8b",
    "ConsentHandle": "465d1f35-f716-484f-a38e-30797d97b525"
}
```

#### Response 200

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:41:53.171Z",
    "txnid": "e188d16d-cbb9-4898-ab3b-ab6b57195e8b",
    "ConsentHandle": "465d1f35-f716-484f-a38e-30797d97b525",
    "ConsentStatus": {
        "id": "5278f924-2d15-4726-a974-2465cbf48d5c",
        "status": "APPROVED"
    }
}
```

### Consent Fetch

<mark style="color:green;">`POST`</mark> `https://sandbox.saafe.in/api/v2/Consent/fetch`

signedConsent is the Consent artefact signed using JWS which contains the list of Accounts that the user have approved the consent for.

#### Request

Header

<table><thead><tr><th width="193">Key</th><th width="556.3333333333333">Value</th></tr></thead><tbody><tr><td>x-jws-signature</td><td>string</td></tr><tr><td>client_api_key</td><td>string</td></tr></tbody></table>

Body

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:44:59.012Z",
    "txnid": "fdc66dda-03e3-4df1-b8a2-22744a21180f",
    "consentId": "5278f924-2d15-4726-a974-2465cbf48d5c"
}
```

#### Response 200

{% code overflow="wrap" %}

```json
{
    "ver": "2.0.0",
    "txnid": "fdc66dda-03e3-4df1-b8a2-22744a21180f",
    "consentId": "5278f924-2d15-4726-a974-2465cbf48d5c",
    "status": "ACTIVE",
    "createTimestamp": "2024-05-09T15:45:02.284Z",
    "signedConsent": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1YTE0NjhiLTFiZDQtNGJlNi1iNTA1LWJmMmM4ZDRkZjA1NiIsImI2NCI6dHJ1ZSwiY3JpdCI6WyJiNjQiXX0.eyJjb25zZW50U3RhcnQiOiIyMDI0LTA1LTA5VDE1OjM5OjU2Ljk4M1oiLCJjb25zZW50RXhwaXJ5IjoiMjAyNS0wMS0wMVQwMDowMDowMC4wMDBaIiwiY29uc2VudE1vZGUiOiJTVE9SRSIsImZldGNoVHlwZSI6IlBFUklPRElDIiwiY29uc2VudFR5cGVzIjpbIlBST0ZJTEUiLCJUUkFOU0FDVElPTlMiLCJTVU1NQVJZIl0sImZpVHlwZXMiOlsiREVQT1NJVCJdLCJEYXRhQ29uc3VtZXIiOnsiaWQiOiJjZW50cmFsLXRydXN0LXVhdCIsInR5cGUiOiJGSVUifSwiQ3VzdG9tZXIiOnsiaWQiOiI5OTQ0NjEyMjQxQGRhc2hib2FyZC1hYS1wcmVwcm9kIn0sIlB1cnBvc2UiOnsiY29kZSI6IjEwMSIsInJlZlVyaSI6Imh0dHBzOi8vYXBpLnJlYml0Lm9yZy5pbi9hYS9wdXJwb3NlLzEwMS54bWwiLCJ0ZXh0IjoiVG8gcHJvdmlkZSB5b3VyIGFzc2V0IGluc2lnaHRzIiwiQ2F0ZWdvcnkiOnsidHlwZSI6IlBlcnNvbmFsIEZpbmFuY2UifX0sIkZJRGF0YVJhbmdlIjp7ImZyb20iOiIyMDIzLTAxLTAxVDAwOjAwOjAwLjAwMFoiLCJ0byI6IjIwMjUtMDEtMDFUMDA6MDA6MDAuMDAwWiJ9LCJEYXRhTGlmZSI6eyJ1bml0IjoiWUVBUiIsInZhbHVlIjozfSwiRnJlcXVlbmN5Ijp7InVuaXQiOiJEQVkiLCJ2YWx1ZSI6MTB9LCJEYXRhRmlsdGVyIjpudWxsLCJEYXRhUHJvdmlkZXIiOnsiaWQiOiJkYXNoYm9hcmQtYWEtcHJlcHJvZCIsInR5cGUiOiJBQSJ9LCJBY2NvdW50cyI6W3siZmlUeXBlIjoiREVQT1NJVCIsImZpcElkIjoiZGhhbmFnYXJiYW5rIiwiYWNjVHlwZSI6IlNBVklOR1MiLCJsaW5rUmVmTnVtYmVyIjoiODI2OTc1YWEtZWJkMS00OTk0LWE3MDAtYTYyNTM1Mjk3NzBmIiwibWFza2VkQWNjTnVtYmVyIjoiWFhYWFgwMTQyIn1dfQ.GTx9lqyavTIDSUVWcua_37D7SxTEASa688YnQYcg61bWSIc_teQGw-Te9APy63EtvA7Hc27B-gtTWIN2zFfexAKVNoF7tKL7E118IScc6F7ToPlPxNFALliRCxnAKKljYhYoIuAYuUcZDiER3okssjk4S_YMVjuLIeexzy84pVH2Y_OZwCJVXiE-mK87lcnv1M5Q1S3WCX1OxU_M5QsfKVnPmjTg9JfvIHO8rLSYS7zRXy-A5fiOEdQKAhM1KOhnMF653fWuMTqL2FoAgenUdnodZgNyFkwcuuCv--7e6tghFUEK2G1tbVHKxJK_X1aIJ2STGXIgS9oLpvOyuFxgNw",
    "ConsentUse": {
        "logUri": "https://uat.saafe.in/",
        "count": 0,
        "lastUseDateTime": "2024-05-09T15:40:45.707Z"
    }
}
```

{% endcode %}

### Data Request

<mark style="color:green;">`POST`</mark> `https://sandbox.saafe.in/api/v2/FI/request`

**digitalSignature** is the signature part of the **signedConsent** which needs to sent to the AA to make the FI Request.

**KeyMaterial** Contains the cryptographic parameters that are required to perform End-to-End encryption for sharing the financial information between the producer and the consumer in a secure manner. Ref [end-to-end-encryption](https://docs.saafe.in/fiu-module/end-to-end-encryption "mention") on implementing the ECDH

#### Request

Header

<table><thead><tr><th width="193">Key</th><th width="556.3333333333333">Value</th></tr></thead><tbody><tr><td>x-jws-signature</td><td>string</td></tr><tr><td>client_api_key</td><td>string</td></tr></tbody></table>

Body

{% code overflow="wrap" %}

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T18:29:21.158Z",
    "txnid": "c5e74a42-36c4-4f7b-b85d-4e59871a3f5e",
    "FIDataRange": {
        "from": "2024-05-05T00:00:00.000Z",
        "to": "2024-05-07T00:00:00.000Z"
    },
    "Consent": {
        "id": "5278f924-2d15-4726-a974-2465cbf48d5c",
        "digitalSignature": "GTx9lqyavTIDSUVWcua_37D7SxTEASa688YnQYcg61bWSIc_teQGw-Te9APy63EtvA7Hc27B-gtTWIN2zFfexAKVNoF7tKL7E118IScc6F7ToPlPxNFALliRCxnAKKljYhYoIuAYuUcZDiER3okssjk4S_YMVjuLIeexzy84pVH2Y_OZwCJVXiE-mK87lcnv1M5Q1S3WCX1OxU_M5QsfKVnPmjTg9JfvIHO8rLSYS7zRXy-A5fiOEdQKAhM1KOhnMF653fWuMTqL2FoAgenUdnodZgNyFkwcuuCv--7e6tghFUEK2G1tbVHKxJK_X1aIJ2STGXIgS9oLpvOyuFxgNw"
    },
    "KeyMaterial": {
        "cryptoAlg": "ECDH",
        "curve": "Curve25519",
        "params": "",
        "DHPublicKey": {
            "expiry": "2024-05-10T18:26:49.031Z",
            "Parameters": "",
            "KeyValue": "-----BEGIN PUBLIC KEY-----MIIBMTCB6gYHKoZIzj0CATCB3gIBATArBgcqhkjOPQEBAiB/////////////////////////////////////////7TBEBCAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqYSRShRAQge0Je0Je0Je0Je0Je0Je0Je0Je0Je0Je0JgtenHcQyGQEQQQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq0kWiCuGaG4oIa04B7dLHdI0UySPU1+bXxhsinpxaJ+ztPZAiAQAAAAAAAAAAAAAAAAAAAAFN753qL3nNZYEmMaXPXT7QIBCANCAARrS/CNE3TmgabxB9KupD1FN4L4weI7cqx+zjkqZcJEfDY22ar/e8t9tYWKcH1T0Q23h0adHoiIKipIZr2O5j3r-----END PUBLIC KEY-----"
        },
        "Nonce": "JRsHMYjdy8qENzydIf3iYFks+XgaZeckzsVjl9n1Xxs="
    }
}
```

{% endcode %}

#### Response 200

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T18:29:24.478Z",
    "txnid": "c5e74a42-36c4-4f7b-b85d-4e59871a3f5e",
    "consentId": "5278f924-2d15-4726-a974-2465cbf48d5c",
    "sessionId": "8c582ed7-b114-4b66-adb3-81e6bd430708"
}
```

### Data Fetch

<mark style="color:green;">`POST`</mark> `https://sandbox.saafe.in/api/v2/FI/fetch`

#### Request

Header

<table><thead><tr><th width="193">Key</th><th width="556.3333333333333">Value</th></tr></thead><tbody><tr><td>x-jws-signature</td><td>string</td></tr><tr><td>client_api_key</td><td>string</td></tr></tbody></table>

Body

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T15:44:59.012Z",
    "txnid": "3dd436f8-0747-4a8f-9001-375e419430be",
    "sessionId": "8c582ed7-b114-4b66-adb3-81e6bd430708",
    "fipId": "FIP-1",
    "linkRefNumber": [
        {
            "id": "XXXX-XXXX-XXXX"
        }
    ]
}
```

#### Response 200

{% code overflow="wrap" %}

```json
{
    "ver": "2.0.0",
    "timestamp": "2024-05-09T20:13:05.687Z",
    "txnid": "c5e74a42-36c4-4f7b-b85d-4e59871a3f5e",
    "FI": [
        {
            "fipID": "dhanagarbank",
            "data": [
                {
                    "linkRefNumber": "826975aa-ebd1-4994-a700-a6253529770f",
                    "maskedAccNumber": "XXXXX0142",
                    "encryptedFI": "tb5RzcVSgfJHEEv5MKEknFG676iQJq9k4EchUhdu4/WM2K1C5S68KmPVz3lR3NaqwWGdZfJ5HcHVZARW/apOeyTEbVE+KKC1XVmjLZlwAOVE7bHizF77kiGj7T/mL4nSgWZIHSYEVnDNru7wd2Tk0xCQtmKEqLq2yNhAV6fT06YO8DOqwxcE96bEQDqHxeqGtkXSTOUQbXgWGMWxds/Pc4+wsRzhw7Qb7/wI7oEtMY1ccvGrMTUQy1ufjdsIN+iY+oi63QWr/wKY5hOzA7PJmEaULLM7HGeKa2rUhP8zH9Xge7QpiOF09AJm+cVgyLwb443bxSln+eu1gIWvEHkGb1Sx4kKrB1LxEc+Lr3IUANZMLSFGz/rL8a6vTjVQBKrIN9O/wmPb0wKYMQzdl+pPYNxtVtYVG0tT+FpgN8ktGRxxn69vRHTDG8biQjtKb6ZH00R+z4WLMdFKVcd8YAIRELy1JbgXHP7TaNYfTI0YDeh6vajBMgvgsegmOMi/iU+a5KsNOR+TZLpvl5UGAQaZt5aiSYkvMziWj57ziRx8EBLgM4QymT9bLTSSJ29S/hqTjueeiTrT3jV3jmgqhA6tnuQbHZBPyWWyK59A45jB926pE8WU8VYqotpq3B3QVCU6dFA7kWofCyoeIEm16Ez2QpPwfZkuR+9DLFLytYj8RUAw3PH5nhVqXXymAJoQ6WxbksofQXQbbFP81JIDDGc0u6jBU9LrsUwLexZvaZ7A9TGLdoMY42cjupATeN3aPygqOeXl1i1PxJ5RO/ar9DiPXirZoseztwgEJyZY02yO+k6EDhx+Wsc49HgOw5xY/SEW0dt4UrBecQkZO/0pBbhonQT07p4XUVbIGCM7unbOh8OQatBgcwxpTpN7sDsVTq9/nXH2YuGL94D4NvqS9eZHZKQ9fr92P+QVCecgS4a1sKVsHo2wqNs70D0am00tCmtvM4v1zcvVPGPVM5rXXulhT49XlOZJ9cPLfOpiuwasix2OBCduABy19D/VoftsJpZkWjbxl1/rIHisLNMbD7ZUfO/Sm79g0txx4MqS+GQDnQNlzEJjUL9tGiZEQFyGX190ZGi+JQXWDx1HYc4I2Q6MS3ULDU5B5n2QDNXydhNXugx6xebZLhUBMQky87CyUe5LYZDSZZr56t3UdYfoVih0OaJvK/p1XnVz5qkvlXIRJdEJYc8/Cd2Na9rXg8mAeQbBa1q9o1lvR3VoWQPfIuFf9WRIq7as68E6RVbIvE3KYnJGZYDigkpAbmPNxRaH4svX48HYKYWZpRAXg6i/00MDCZlGstlspWCSkUPiEhw+RHCHG5cMHrDxGzAlBBav4eiVcTJB0HPskmuhI208E3q9PG45iLu9exaoyiOtEfsrkMjOlkJtFyOPnRIFJIUAIuRD7s9fDrLA4z5QosBD+8R3++XO1Cvb0MmjYy6Muhkj794tVoOGoh3MGGTcyHh+WJUWlwBdyRPRFfIY"
                }
            ],
            "KeyMaterial": {
                "cryptoAlg": "ECDH",
                "curve": "Curve25519",
                "params": "None",
                "DHPublicKey": {
                    "expiry": "2024-05-10T18:29:24.838Z",
                    "Parameters": "None",
                    "KeyValue": "-----BEGIN PUBLIC KEY-----MIIBMTCB6gYHKoZIzj0CATCB3gIBATArBgcqhkjOPQEBAiB/////////////////////////////////////////7TBEBCAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqYSRShRAQge0Je0Je0Je0Je0Je0Je0Je0Je0Je0Je0JgtenHcQyGQEQQQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq0kWiCuGaG4oIa04B7dLHdI0UySPU1+bXxhsinpxaJ+ztPZAiAQAAAAAAAAAAAAAAAAAAAAFN753qL3nNZYEmMaXPXT7QIBCANCAAQhZyUnHx0W3GtbtP0j+c9vVr5+LJIqm7usd8eS8COqm2hd/PSnqe0kqKrXOY3UrfaGgBfgpK6CW/TwrtFODV7R-----END PUBLIC KEY-----"
                },
                "Nonce": "fQOZ2qAptqq8kR0AVQ2d31PCs80V5JXxiHztW9UjBV0="
            }
        }
    ]
}
```

{% endcode %}
