Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions aa-fip-workflow/acc-discover-api-workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Account Discover API Request - Workflow
on:
workflow_dispatch:
inputs:
txnId:
description: "Transaction ID"
required: true
privateKeyPEM:
description: "FIP private key for signing the request"
required: true
fipToken:
description: "FIP Token"
required: true
recipientId:
description: "Account Aggregator recipient ID"
default: "AA-SIMULATOR"
required: true
otpToken:
description: "otp token for signing the request"
required: true
router_url:
description: "Router URL (optional)"
default: "https://api.sandbox.sahamati.org.in/router/v2"
required: false

jobs:
consent_workflow:
runs-on: ubuntu-latest
env:
PRIVATE_KEY: "${{ github.event.inputs.private_key }}"
FIP_TOKEN: "${{ github.event.inputs.fip_token }}"
AA_RECIPIENT_ID: "${{ github.event.inputs.aa_recipient_id }}"
OTP_TOKEN: "${{ github.event.inputs.otp_token }}"


steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "19"

- name: Install Dependencies
run: npm install axios jose uuid
- name: Sign JWS and Send Request
run: node ./aa-fip-workflow/acc-discover.js
env:
PRIVATE_KEY: "${{ github.event.inputs.privateKeyPEM }}"
FIP_TOKEN: "${{ github.event.inputs.fipToken }}"
AA_RECIPIENT_ID: "${{ github.event.inputs.recipientId }}"
LINK_OTP: "${{ github.event.inputs.otpToken }}"
ROUTER_URL: "${{ github.event.inputs.router_url }}"
TXN_ID: "${{ github.event.inputs.txnId }}"
- name: Upload Consent Data Artifact
uses: actions/upload-artifact@v4
with:
name: consent_data
path: consent.json
136 changes: 136 additions & 0 deletions aa-fip-workflow/acc-discover.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import * as jose from 'jose';
import axios from 'axios';

const sessionId = process.env.SESSION_ID || "";
const txnId = process.env.TXN_ID || "fa9d82a7-df8f-409f-bb0d-73dd7cb3f569";
const privateKeyPEM = process.env.PRIVATE_KEY || "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCNWpAqPZxyeSsg\ns0PkTpJzQNn4AehJFeZniCVtZ+A/IU3PgnDZJh0rZQJYMvECSty/lNLlSmXMgK3g\n4S7fPHKJv/ruXYizmyeirIGyyMVbMBsLB0te7+T4g1aJXSyGCARznRQjZF1KW6Di\nNrfCdDrvxkARDrr/FjeNqBGrwOsH5IXvuJHgCvfiDBtjyiP7HNHkcBjPQQ1BOYzi\nqRQlqEeQTmMFN/D24uAdr+zKOUsPUO7kcR8FrP7oCMntgpIqs0ckwHFojKSyzVsZ\nessOQ1sZGy+MhTB0nqhvGgjYkb+zEcX5tOE33voWKrXLBJ1TB9y8LbVuUTrqsPIK\na4TqgHA1AgMBAAECggEAf4jobdQs5XPBn71eUg06QVaP0x4VcGub+Gl0K2P/hbYM\nuF8eZi3nP5HhLaa4oLLevNQP++TGOF8Zgr5pRe0KApL+WjZ18mbYugMe+in/NqkO\nnUK1lDCpzDbjywgP9dYh/hYJZ21UZpSJcdCgt4ea7V9XyowZ17E56ktrtiVXaUQ6\nU8OeyuMHjXRUn+Ql4L2JgIHz43DXWfohGI7SHxTXKBsMVIxV6rLSYH0L8ePfNWJ0\nM12NnkxfNOud6mV9U66P8UbFgb6tKOxR4MF8DJIkig7Ji0h4HSpcKh55YBaNSDeC\nmnS9x2f5ljr6+mXS/9Dn0JW2PvOGa632H1jrNYdbOQKBgQDz2p2stORqzOHDGh38\nCEwsaU08BSUPY0+SCCMte245lBjkwinNHMVyV0LTmaRNHsJrHb2wQydDVpXvZ06K\ngjK6/kSAmytn6DkscbNJdQ56Wb5hnikateSsXfjpY0AlZ5ptbfgtsl7/ZWRBqOE6\nt+CKbRjYymfoGkMGlSfz/jt6ZwKBgQCUZPdZGabZEiuBPBVWKDm/NwuIoLMK4uLt\nSnK8aPXofPUCMvtAxKnn65wj58mbdOr8HAkJ77jJoh0KWOKckZUhmnm6rpaJpAOw\nHBjPSSeA+H8sWx+5+Jd/yuCHn0wf1mUFJvn6q8GF0hVfyaQTgAImiCMPEReiSfSI\nG+ZTJgNXAwKBgQCZLTckOJDO4Zni4zH4kgG/V/oS/KxV6S0fbwsh08neUz/72ldF\np5ADjfrFTlqdsvevL4RrBxPPwcD3HC6C5NwXCAdhvZbbc00OtPFI8EXC50KmsSHi\nzGUzPOhROm4d0OF5Yb2mfsgbp8X9VKb+Kmjaq0MTUrlIW87EgMcTBhy4ewKBgHxJ\nXEmKDI5+g2WIVy6EHmmixsw2G/8gLIQl+JcJKf0Au4yN+pYyoUOXuHzyI49Ki42A\nRanG1/Q5DS2faJ1N6aPtZ8sNcxPxBQ25WqYyVR3WA125LIdsSCdGWmv85Zs8y/tW\nu8RRmpJkdHZ3wi565lIzb3mtDShl3KMrCuvVSLLVAoGBAPBHHTjWdAC7JTeUfKN3\nfzY+xakS9DLPlirYazloGPmCN51Vc7hvq5m8vs/C05eV6tdRIuyNIfKcBxFAHOAj\n4yNfS3KfNACYFGZY6lDRD5U8T5zd4esImNfoEH2W18+9g62lw5pGxgXAl0WWbjz1\ndiz2UTRYU/DC3Ht2/VMSI2cM";
const fipToken = process.env.FIP_TOKEN || "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhbUpiWmduWDBkd0d6bS1TbE1mbWt1MTNHdjRwSkc2cGxwSmx2MXFqLXpNIn0.eyJleHAiOjE3NDQ4NzA3NTYsImlhdCI6MTc0NDc4NDM1NiwianRpIjoiODZhOTg0MjQtMTBkNy00YmQ1LThlNDItZGRkMjk3MzgxOGNhIiwiaXNzIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5zYWhhbWF0aS5vcmcuaW4vYXV0aC9yZWFsbXMvc2FoYW1hdGkiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYzFhZjY2NDMtNmZhNi00M2E0LWIyZTItZDVmMTJjYTUwMGE3IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiQUEtU0lNVUxBVE9SIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJkZWZhdWx0LXJvbGVzLXNhaGFtYXRpIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgbWljcm9wcm9maWxlLWp3dCBwcm9maWxlIGFkZHJlc3MgcGhvbmUgb2ZmbGluZV9hY2Nlc3MiLCJ1cG4iOiJzZXJ2aWNlLWFjY291bnQtYWEtc2ltdWxhdG9yIiwiY2xpZW50SG9zdCI6IjEwLjIyNC4wLjE4IiwiY2xpZW50SWQiOiJBQS1TSU1VTEFUT1IiLCJhZGRyZXNzIjp7fSwicm9sZXMiOiJBQSIsImdyb3VwcyI6WyJkZWZhdWx0LXJvbGVzLXNhaGFtYXRpIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdLCJzZWNyZXQtZXhwaXJ5LXRzIjoiMjAyNS0xMi0yNVQxNjoyNTozMC45MjUzMjYzMDQiLCJjbGllbnRBZGRyZXNzIjoiMTAuMjI0LjAuMTgifQ.e_zPrTGQEPgZlGPBWVuj-WILVJc_VJHmdoExjZQyDGz1OgPp299wDHl0iDujV45599uOWSm82pdo-o-deDtpfgk_xeUBMJK2wnBCUrVX6_szcBnfdkvAC-oWgI7guf6uPpy57KnVsrfRL3zAvp0CnI5yLWODL9xUxhDOjz26iBVbsqFeT2tcACnLfQ_b4wpKztgocfOTXMNk10m--tifWoABQJVdPJIhgoleRmU38c2EFeW_QqqGKtw84qmUy7POC85-Y08gX_I2pbSf5n-fpv8yHyAyJd3v7hnPOhBL2_D_Ib6ahoM2-pFCjMrtlazkOqovKaxO8jFXsAOMvtT3qA";
const recipientId = process.env.AA_RECIPIENT_ID || "FIP-SIMULATOR";
const routerUrl = process.env.ROUTER_URL || "https://api.sandbox.sahamati.org.in/router/v2";
const otpToken = process.env.LINK_OTP || "999999";

if (!privateKeyPEM || !fipToken) {
console.error("Missing required environment variables!");
process.exit(1);
}

const metaInfo = { "recipient-id": recipientId };
const base64MetaInfo = Buffer.from(JSON.stringify(metaInfo)).toString('base64');
const privateKey = `-----BEGIN PRIVATE KEY-----\n${privateKeyPEM}\n-----END PRIVATE KEY-----`;

async function importKey() {
try {
return await jose.importPKCS8(privateKey, 'RS256');
} catch (error) {
console.error('Error importing private key:', error);
process.exit(1);
}
}

async function signData(data) {
try {
const key = await importKey();
return await new jose.CompactSign(new TextEncoder().encode(data))
.setProtectedHeader({ alg: 'RS256', b64: false, crit: ['b64'] })
.sign(key);
} catch (error) {
console.error('Error signing data:', error);
process.exit(1);
}
}

(async () => {
try {
// Step 1: Discover
const discoverPayload = {
ver: "2.0.0",
timestamp: new Date().toISOString(),
txnid: txnId,
sessionId: sessionId,
Customer: {
id: "customer_identifier@AA_identifier",
Identifiers: [
{
category: "STRONG",
type: "AADHAAR",
value: "XXXXXXXXXXXX"
}
]
},
FITypes: ["DEPOSIT"]
};

const signedDiscover = await signData(JSON.stringify(discoverPayload));
const discoverRes = await axios.post(`${routerUrl}/Accounts/discover`, discoverPayload, {
headers: {
"Content-Type": "application/json",
"client_api_key": `Bearer ${fipToken}`,
"x-jws-signature": signedDiscover,
"x-request-meta": base64MetaInfo
}
});

console.log("Discover Response:", JSON.stringify(discoverRes.data, null, 2));

const accounts = discoverRes.data.Customer?.accounts || [];
if (accounts.length === 0) {
console.error("No accounts discovered.");
return;
}

// Step 2: Link
const linkPayload = {
ver: "2.0.0",
timestamp: new Date().toISOString(),
txnid: txnId,
Customer: {
id: "customer_identifier@AA_identifier",
Accounts: accounts.map(acc => ({
FIType: acc.FIType || "DEPOSIT",
accType: acc.accType || "SAVINGS",
accRefNumber: acc.accRefNumber,
maskedAccNumber: acc.maskedAccNumber
}))
}
};

const signedLink = await signData(JSON.stringify(linkPayload));
const linkRes = await axios.post(`${routerUrl}/Accounts/link`, linkPayload, {
headers: {
"Content-Type": "application/json",
"client_api_key": `Bearer ${fipToken}`,
"x-jws-signature": signedLink,
"x-request-meta": base64MetaInfo
}
});

console.log("Link Response:", JSON.stringify(linkRes.data, null, 2));

const refNumber = linkRes.data.refNumber;

// Step 3: Verify Link (OTP/token based)
const verifyPayload = {
ver: "2.0.0",
timestamp: new Date().toISOString(),
txnid: txnId,
refNumber: refNumber,
token: otpToken
};

const signedVerify = await signData(JSON.stringify(verifyPayload));
const verifyRes = await axios.post(`${routerUrl}/Accounts/link/verify`, verifyPayload, {
headers: {
"Content-Type": "application/json",
"client_api_key": `Bearer ${fipToken}`,
"x-jws-signature": signedVerify,
"x-request-meta": base64MetaInfo
}
});

console.log("Link Verification Response:", JSON.stringify(verifyRes.data, null, 2));

} catch (error) {
console.error("Error:", error.response ? error.response.data : error.message);
process.exit(1);
}
})();
63 changes: 63 additions & 0 deletions aa-fip-workflow/consent-AA-FIP.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import * as jose from 'jose';
import axios from 'axios';

// Load from environment variables
const txnId = process.env.TXN_ID || "fa9d82a7-df8f-409f-bb0d-73dd7cb3f569";
const privateKeyPEM = process.env.PRIVATE_KEY || "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCNWpAqPZxyeSsg\ns0PkTpJzQNn4AehJFeZniCVtZ+A/IU3PgnDZJh0rZQJYMvECSty/lNLlSmXMgK3g\n4S7fPHKJv/ruXYizmyeirIGyyMVbMBsLB0te7+T4g1aJXSyGCARznRQjZF1KW6Di\nNrfCdDrvxkARDrr/FjeNqBGrwOsH5IXvuJHgCvfiDBtjyiP7HNHkcBjPQQ1BOYzi\nqRQlqEeQTmMFN/D24uAdr+zKOUsPUO7kcR8FrP7oCMntgpIqs0ckwHFojKSyzVsZ\nessOQ1sZGy+MhTB0nqhvGgjYkb+zEcX5tOE33voWKrXLBJ1TB9y8LbVuUTrqsPIK\na4TqgHA1AgMBAAECggEAf4jobdQs5XPBn71eUg06QVaP0x4VcGub+Gl0K2P/hbYM\nuF8eZi3nP5HhLaa4oLLevNQP++TGOF8Zgr5pRe0KApL+WjZ18mbYugMe+in/NqkO\nnUK1lDCpzDbjywgP9dYh/hYJZ21UZpSJcdCgt4ea7V9XyowZ17E56ktrtiVXaUQ6\nU8OeyuMHjXRUn+Ql4L2JgIHz43DXWfohGI7SHxTXKBsMVIxV6rLSYH0L8ePfNWJ0\nM12NnkxfNOud6mV9U66P8UbFgb6tKOxR4MF8DJIkig7Ji0h4HSpcKh55YBaNSDeC\nmnS9x2f5ljr6+mXS/9Dn0JW2PvOGa632H1jrNYdbOQKBgQDz2p2stORqzOHDGh38\nCEwsaU08BSUPY0+SCCMte245lBjkwinNHMVyV0LTmaRNHsJrHb2wQydDVpXvZ06K\ngjK6/kSAmytn6DkscbNJdQ56Wb5hnikateSsXfjpY0AlZ5ptbfgtsl7/ZWRBqOE6\nt+CKbRjYymfoGkMGlSfz/jt6ZwKBgQCUZPdZGabZEiuBPBVWKDm/NwuIoLMK4uLt\nSnK8aPXofPUCMvtAxKnn65wj58mbdOr8HAkJ77jJoh0KWOKckZUhmnm6rpaJpAOw\nHBjPSSeA+H8sWx+5+Jd/yuCHn0wf1mUFJvn6q8GF0hVfyaQTgAImiCMPEReiSfSI\nG+ZTJgNXAwKBgQCZLTckOJDO4Zni4zH4kgG/V/oS/KxV6S0fbwsh08neUz/72ldF\np5ADjfrFTlqdsvevL4RrBxPPwcD3HC6C5NwXCAdhvZbbc00OtPFI8EXC50KmsSHi\nzGUzPOhROm4d0OF5Yb2mfsgbp8X9VKb+Kmjaq0MTUrlIW87EgMcTBhy4ewKBgHxJ\nXEmKDI5+g2WIVy6EHmmixsw2G/8gLIQl+JcJKf0Au4yN+pYyoUOXuHzyI49Ki42A\nRanG1/Q5DS2faJ1N6aPtZ8sNcxPxBQ25WqYyVR3WA125LIdsSCdGWmv85Zs8y/tW\nu8RRmpJkdHZ3wi565lIzb3mtDShl3KMrCuvVSLLVAoGBAPBHHTjWdAC7JTeUfKN3\nfzY+xakS9DLPlirYazloGPmCN51Vc7hvq5m8vs/C05eV6tdRIuyNIfKcBxFAHOAj\n4yNfS3KfNACYFGZY6lDRD5U8T5zd4esImNfoEH2W18+9g62lw5pGxgXAl0WWbjz1\ndiz2UTRYU/DC3Ht2/VMSI2cM";
const fipToken = process.env.FIP_TOKEN || "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhbUpiWmduWDBkd0d6bS1TbE1mbWt1MTNHdjRwSkc2cGxwSmx2MXFqLXpNIn0.eyJleHAiOjE3NDQ4NzA3NTYsImlhdCI6MTc0NDc4NDM1NiwianRpIjoiODZhOTg0MjQtMTBkNy00YmQ1LThlNDItZGRkMjk3MzgxOGNhIiwiaXNzIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5zYWhhbWF0aS5vcmcuaW4vYXV0aC9yZWFsbXMvc2FoYW1hdGkiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYzFhZjY2NDMtNmZhNi00M2E0LWIyZTItZDVmMTJjYTUwMGE3IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiQUEtU0lNVUxBVE9SIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJkZWZhdWx0LXJvbGVzLXNhaGFtYXRpIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgbWljcm9wcm9maWxlLWp3dCBwcm9maWxlIGFkZHJlc3MgcGhvbmUgb2ZmbGluZV9hY2Nlc3MiLCJ1cG4iOiJzZXJ2aWNlLWFjY291bnQtYWEtc2ltdWxhdG9yIiwiY2xpZW50SG9zdCI6IjEwLjIyNC4wLjE4IiwiY2xpZW50SWQiOiJBQS1TSU1VTEFUT1IiLCJhZGRyZXNzIjp7fSwicm9sZXMiOiJBQSIsImdyb3VwcyI6WyJkZWZhdWx0LXJvbGVzLXNhaGFtYXRpIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdLCJzZWNyZXQtZXhwaXJ5LXRzIjoiMjAyNS0xMi0yNVQxNjoyNTozMC45MjUzMjYzMDQiLCJjbGllbnRBZGRyZXNzIjoiMTAuMjI0LjAuMTgifQ.e_zPrTGQEPgZlGPBWVuj-WILVJc_VJHmdoExjZQyDGz1OgPp299wDHl0iDujV45599uOWSm82pdo-o-deDtpfgk_xeUBMJK2wnBCUrVX6_szcBnfdkvAC-oWgI7guf6uPpy57KnVsrfRL3zAvp0CnI5yLWODL9xUxhDOjz26iBVbsqFeT2tcACnLfQ_b4wpKztgocfOTXMNk10m--tifWoABQJVdPJIhgoleRmU38c2EFeW_QqqGKtw84qmUy7POC85-Y08gX_I2pbSf5n-fpv8yHyAyJd3v7hnPOhBL2_D_Ib6ahoM2-pFCjMrtlazkOqovKaxO8jFXsAOMvtT3qA";
const recipientId = process.env.AA_RECIPIENT_ID || "FIP-SIMULATOR";
const routerUrl = process.env.ROUTER_URL || "https://api.sandbox.sahamati.org.in/router/v2";
const consentId = process.env.CONSENT_ID || "fa9d82a7-df8f-409f-bb0d-73dd7cb3f569";
const signedConsent = process.env.SIGNED_CONSENT || "your_signed_consent_here";

// Required for x-request-meta header
const metaInfo = { "recipient-id": recipientId };
const base64MetaInfo = Buffer.from(JSON.stringify(metaInfo)).toString("base64");

// Wrap the key in PEM format
const privateKey = `-----BEGIN PRIVATE KEY-----\n${privateKeyPEM}\n-----END PRIVATE KEY-----`;

async function importKey() {
return await jose.importPKCS8(privateKey, 'RS256');
}

async function signData(data) {
const key = await importKey();
return await new jose.CompactSign(new TextEncoder().encode(data))
.setProtectedHeader({ alg: 'RS256', b64: false, crit: ['b64'] })
.sign(key);
}

(async () => {
const consentPayload = {
ver: "2.0.0",
txnid: txnId,
consentId: consentId,
status: "ACTIVE",
createTimestamp: new Date().toISOString(),
signedConsent: signedConsent,
ConsentUse: {
logUri: "https://log.endpoint.example",
count: 1,
lastUseDateTime: new Date().toISOString()
}
};

try {
const signedJWS = await signData(JSON.stringify(consentPayload));

const response = await axios.post(`${routerUrl}/Consent`, consentPayload, {
headers: {
"Content-Type": "application/json",
"client_api_key": `Bearer ${fipToken}`,
"x-jws-signature": signedJWS,
"x-request-meta": base64MetaInfo
}
});

console.log("Consent Response:", JSON.stringify(response.data, null, 2));
} catch (err) {
console.error("Consent API Error:", err.response?.data || err.message);
process.exit(1);
}
})();
59 changes: 59 additions & 0 deletions aa-fip-workflow/consent-api-workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name : Consent API workflow
on:
workflow_dispatch:
inputs:
txnId:
description: "Transaction ID"
required: true
privateKeyPEM:
description: "FIP private key for signing the request"
required: true
fipToken:
description: "FIP Token"
required: true
recipientId:
description: "Account Aggregator recipient ID"
default: "AA-SIMULATOR"
required: true
consentId:
description: "Consent ID"
required: true
router_url:
description: "Router URL (optional)"
default: "https://api.sandbox.sahamati.org.in/router/v2"
required: false

jobs:
consent_workflow:
runs-on: ubuntu-latest
env:
PRIVATE_KEY: "${{ github.event.inputs.private_key }}"
FIP_TOKEN: "${{ github.event.inputs.fip_token }}"
AA_RECIPIENT_ID: "${{ github.event.inputs.aa_recipient_id }}"

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "19"

- name: Install Dependencies
run: npm install axios jose uuid
- name: Sign JWS and Send Request
run: node ./aa-fip-workflow/consent-AA-FIP.js
env:
PRIVATE_KEY: "${{ github.event.inputs.privateKeyPEM }}"
FIP_TOKEN: "${{ github.event.inputs.fipToken }}"
AA_RECIPIENT_ID: "${{ github.event.inputs.recipientId }}"
ROUTER_URL: "${{ github.event.inputs.router_url }}"
TXN_ID: "${{ github.event.inputs.txnId }}"
CONSENT_ID: "${{ github.event.inputs.consentId }}"
- name: Upload Consent Data Artifact
uses: actions/upload-artifact@v4
with:
name: consent_data
path: consent.json

Loading