Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import requests | |
| import base64 | |
| # Title of the app | |
| st.title("Modern Treasury API Integration") | |
| st.subheader("Made by Citibank Demo Business Inc.") | |
| # Sidebar for API key and Organization ID input | |
| st.sidebar.header("API Configuration") | |
| api_key = st.sidebar.text_input("Enter your Modern Treasury API Key", type="password") | |
| organization_id = st.sidebar.text_input("Enter your Organization ID") | |
| # Select the API endpoint the user wants to interact with | |
| endpoint_choice = st.selectbox("Choose API Endpoint", [ | |
| "Payment Orders", | |
| "Expected Payments", | |
| "Returns", | |
| "Incoming Payment Details", | |
| "Counterparties", | |
| "Internal Accounts", | |
| "Ledgers", | |
| "Ledger Accounts" | |
| ]) | |
| # Base URL for Modern Treasury API | |
| base_url = "https://app.moderntreasury.com/api/" | |
| # Define API endpoints including Ledgers and Ledger Accounts | |
| MODERN_TREASURY_ENDPOINTS = { | |
| "Payment Orders": "payment_orders", | |
| "Expected Payments": "expected_payments", | |
| "Returns": "returns", | |
| "Incoming Payment Details": "incoming_payment_details", | |
| "Counterparties": "counterparties", | |
| "Internal Accounts": "internal_accounts", | |
| "Ledgers": "ledgers", | |
| "Ledger Accounts": "ledger_accounts" | |
| } | |
| # Function to create the Basic Auth header by encoding the Organization ID and API Key | |
| def create_basic_auth_header(org_id, api_key): | |
| # Combine Organization ID and API Key, separated by a colon | |
| credentials = f"{org_id}:{api_key}" | |
| # Encode the credentials in base64 | |
| base64_credentials = base64.b64encode(credentials.encode()).decode('utf-8') | |
| # Return the full Authorization header | |
| return f"Basic {base64_credentials}" | |
| # Function to fetch data from the selected Modern Treasury API endpoint | |
| def fetch_data(api_key, org_id, endpoint): | |
| url = base_url + MODERN_TREASURY_ENDPOINTS[endpoint] | |
| # Create the Basic Auth header | |
| headers = { | |
| "Authorization": create_basic_auth_header(org_id, api_key) | |
| } | |
| response = requests.get(url, headers=headers) | |
| if response.status_code == 200: | |
| return response.json() | |
| else: | |
| st.error(f"Error: {response.status_code} - {response.text}") | |
| return None | |
| # Main logic to fetch and display data | |
| if st.button("Fetch Data"): | |
| if api_key and organization_id: | |
| data = fetch_data(api_key, organization_id, endpoint_choice) | |
| if data: | |
| st.json(data) | |
| else: | |
| st.error("Please provide both a valid API key and Organization ID.") | |
| # Display footer | |
| st.sidebar.markdown("Powered by Streamlit and Modern Treasury API") | |
| st.sidebar.markdown("Made by Citibank Demo Business Inc.") | |