"""Blueprint for LedgerAccountContract API.""" from flask import Blueprint, request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify from ledger.constants.error import ERROR_CODE_AUTHORIZATION from ledger.logic import ledger_account_contract as logic from ledger.utils.authorization import pdp_authorize_resource ledger_account_contract_api = Blueprint('ledger_account_contract_api', __name__) @ledger_account_contract_api.route( '/ledger-account-contract/account//payable-balance', methods=['GET'] ) def get_payable_balance_by_account(account_id): """Endpoint to GET an account's 'payable balance'.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: authorized = pdp_authorize_resource(account_id) if not authorized: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=403, ) ) return flaskify(logic.get_payable_balance_by_account(account_id)) @ledger_account_contract_api.route( '/ledger-account-contracts/account/', methods=['GET'] ) def get_ledger_list_by_account_id(account_id): """GET a list of ledgers for a specified account.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: authorized = pdp_authorize_resource(account_id) if not authorized: return flaskify( response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=403, ) ) return flaskify(logic.get_ledger_list_by_account_id(account_id, request.args))