Help
RSS
API
Feed
Maltego
Contact
Domain > api.kompar.se
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2020-11-21
54.171.222.126
(
ClassC
)
2024-07-18
52.212.52.84
(
ClassC
)
Port 443
HTTP/1.1 200 OKServer: CowboyReport-To: {group:heroku-nel,max_age:3600,endpoints:{url:https://nel.heroku.com/reports?ts1721300611&sidc4c9725f-1ab0-44d8-820f-430df2718e11&s%2FwBoPrYt20tC2NL%2FSn8ELJ6ZcxJHV5tnnniBCirmNq8%3D}}Reporting-Endpoints: heroku-nelhttps://nel.heroku.com/reports?ts1721300611&sidc4c9725f-1ab0-44d8-820f-430df2718e11&s%2FwBoPrYt20tC2NL%2FSn8ELJ6ZcxJHV5tnnniBCirmNq8%3DNel: {report_to:heroku-nel,max_age:3600,success_fraction:0.005,failure_fraction:0.05,response_headers:Via}Connection: keep-aliveAccept-Ranges: bytesCache-Control: public, max-age0Last-Modified: Tue, 25 Jun 2024 09:10:21 GMTEtag: W/1b0db-1904ea91048Content-Type: text/html; charsetUTF-8Content-Length: 110811Vary: Accept-EncodingDate: Thu, 18 Jul 2024 11:03:31 GMTVia: 1.1 vegur !DOCTYPE html>html langen> head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> link relstylesheet href./css/index/style.css> title>Kompar API/title> script srchttps://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js>/script> /head> body> div classbase_container> div classleft_menu> a href#>img classimgLogo srchttps://uploads-ssl.webflow.com/5e066b03be0f82573b6e8b54/5e28d6321a254c015bb8a7e9_kompar.png>/a> div classsidenav idsidenav> hr>a href#Introduction idIntroduction_>Introduction/a>hr> a href#Get_started idGet_started_>Get started/a>hr> a href#Authorization classdropdown-btn idAuthorization_>Authorizationi classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop1> a href#Token classsub idToken_>Token/a> a href#Receiving_access_token classsub idReceiving_access_token_>Receiving access token/a> a href#The_token_is_returned classsub idThe_token_is_returned_>The token is returned/a> a href#Sample_request classsub idSample_request_>Sample request/a> /div>hr> a href#Authentication classdropdown-btn idAuthentication_>Authenticationi classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop2> a href#Header classsub idHeader_>Header/a> a href#Sample_request2 classsub idSample_request2_>Sample request/a> /div>hr> a href#Webhooks classdropdown-btn idWebhooks_>Webhooksi classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop3> a href#About_webhooks classsub idAbout_webhooks_>About webhooks/a> a href#Applications_webhook classsub idApplications_webhook_>Applications webhook/a> a href#Client_webhook classsub idClient_webhook_>Clients decision webhook/a> a href#Remove_webhook classsub idRemove_webhook_>Remove webhook/a> a href#Webhook_security classsub idWebhook_security_>Webhook security/a> a href#Application_details classsub idApplication_details_>Application details/a> a href#Client_details classsub idClient_details_>Clients decision details/a> a href#Confirmation_receiving classsub idConfirmation_receiving_>Confirmation of receiving/a> /div>hr> a href#Offer classdropdown-btn idOffer_>Offeri classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop4> a href#Send_offer classsub idSend_offer_>Send offer/a> /div>hr> a href#Methods_related_to_application classdropdown-btn idMethods_related_to_application_>Methods related to applicationi classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop5> a href#Close_application classsub idClose_application_>Close application/a> a href#Application_is_signed classsub idApplication_is_signed_>Application is signed/a> /div>hr> a href#Option_lists classdropdown-btn idOption_lists_>Option listsi classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop6> a href#Loan_purpose classsub idLoan_purpose_>Loan purpose/a> /div>hr> a href#How_to_test_Api classdropdown-btn idHow_to_test_Api_>How to test API?i classfa fa-caret-down>/i>/a> div classdropdown-container idMenuDrop7> a href#Get_random_application classsub idGet_random_application_>Get random application/a> a href#Get_random_decision classsub idGet_random_decision_>Get random decision/a> a href#Testing_the_entire_flow classsub idTesting_the_entire_flow_>Testing the entire flow/a> /div>hr> a classsub idend_>/a> /div> div classleft_menu_fotter> a hrefhttps://www.kompar.se/>img srchttps://uploads-ssl.webflow.com/5e066b03be0f82573b6e8b54/5e2ad79d941c939418b5fd94_kompar2.png styledisplay: table-row>/a> div styledisplay: table-row>it@kompar.se/div> hr> h1>138an Group AB ©2020/h1> /div> /div> div classbase> div classsection2> h1 idIntroduction>Introduction/h1> div classtitle> Our Web API provides users with fast and reliable access to data about clients loan applications.br>br> The Kompar API is based on REST principles. It uses standard HTTP response codes and verbs, and token-based authentication.br>br> You must make all your requests to the API over HTTPS. Any requests made over HTTP will fail.br>br> For both environments (test, production), there is currently a rate limit of 30 requests per minute.br> When you hit the limit, you’ll receive a 429 TOO MANY REQUESTS ERROR. /div> div stylewidth: 100%; text-align: center;> img src./images/flow.jpg altflow> /div> /div> div classsection2> h1 idGet_started>Get started/h1> div classtitle> If you are interested in connecting to our API write an e-mail to info@kompar.se or it@kompar.sebr> div classsub_message> h3>Test url:/h3> div classendpoint> https://api.kompar.se/test /div> /div> div classsub_message> h3>Production url:/h3> div classendpoint> https://api.kompar.se/ /div> /div> /div> /div> div classsection2> h1 idAuthorization>Authorization/h1> div classtitle> This guide shows how to get a user’s authorization to access methods of the API. /div> div classmessage> h1 idToken>Token/h1> Requests to the Kompar API require authentication. The user must have granted permission to access the requested data. To prove that the user has granted permission, the request header must include a valid access token. This is achieved by using the Login and Password received from the developer site and calling the token request. br>br>You may have just one valid access token. div classsub_message> h1 idReceiving_access_token>Receiving access token/h1> Using your unique Login and Password you call the token request to retrieve an access token. The call is made towards the endpoint: div classendpoint> GET url/token /div> The header of this GET request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Authorization /div> div classright> div classtitle> Value /div> hr> Required. Base 64 encoded string that contains the login and password. The field must have the format:br>Authorization: Basic <login:password> /div> /div> /div> /div> div classsub_message> h1 idThe_token_is_returned>The token is returned/h1> On success, the response has the status code 200 OK and the following JSON data in the response body: div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>true/h2> /div> /div> div classrows> div classleft> h2>token/h2> string /div> div classright> An access token to be used in subsequent calls to the Kompar API. /div> /div> div classrows> div classleft> h2>token_type/h2> string /div> div classright> How the token may be used, always Bearer. /div> /div> div classrows> div classleft> h2>expires_in/h2> int /div> div classright> The time period (in seconds) for which the token is valid. /div> /div> /div> div stylemargin-top: 30px;>On error, the response has the status code 400 NOT FOUND and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>false/h2> /div> /div> div classrows> div classleft> h2>message/h2> string /div> div classright> Message about error. /div> /div> /div> div stylemargin-top: 30px;>For INTERNAL SERVER ERROR the response has status 500 and returns no data./div> /div> div classsub_message> h1 idSample_request>Sample request/h1> An example request to the token endpoint will look something like this: ul classul_code> li>button onclickauthorizationBash(true)>Bash/button>/li> li>button onclickauthorizationNode(true)>Node.js/button>/li> li>button onclickauthorizationPython(true)>Python/button>/li> /ul> div idauthorizationContent>/div> div stylemargin-top: 30px;>Response to the request will look like this:/div> pre stylemargin-top: 20px;> { br> span stylecolor: #E5DA73>success/span>: span stylecolor: #90ee90>true/span> br> span stylecolor: #E5DA73>token/span>: span stylecolor: #E5DA73>xxxxx...yyyyy...zzzzz/span> br> span stylecolor: #E5DA73>token_type/span>: span stylecolor: #E5DA73>Bearer/span> br> span stylecolor: #E5DA73>expires_in/span>: 3600 br>} /pre> /div> /div> /div> div classsection2> h1 idAuthentication>Authentication/h1> div classtitle> All requests towards the APIs require authentication. /div> div classmessage> h1 idHeader>Header/h1> The token received from token request must then be used when calling the API by sending it in the requests authorization header. div classsub_message> div classendpoint> Authorization : Bearer xxxxx...yyyyy...zzzzz /div> /div> div classsub_message> h1 idSample_request2>Sample request/h1> An example request which includes authentication token will look something like this: ul classul_code> li>button onclickauthenticationBash(true)>Bash/button>/li> li>button onclickauthenticationNode(true)>Node.js/button>/li> /ul> div idauthenticationContent>/div> /div> /div> /div> div classsection2> h1 idWebhooks>Webhooks/h1> div classtitle> This section includes all webhooks available through API. br>br>All requests require authentication. /div> div classmessage> h1 idAbout_webhooks>About webhooks/h1> Kompar provides webhooks to alert of changes regarding clients applications. These are POST requests to your server that are sent as soon as an event occurs. The body of the request contains details of the event. div classsub_message> h1 idApplications_webhook>Applications webhook/h1> To register applications webhook you have to make call towards the endpoint: div classendpoint> POST url/webhooks/applications /div> The header of this POST request in addition to the required authorization header must contains the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Content-Type /div> div classright> div classtitle> Value /div> hr> application/json /div> /div> /div>br> The body of this POST request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Body /div> hr> h2>url/h2> string /div> div classright> div classtitle> Value /div> hr> The url that will listen to notifications (must be HTTPS). /div> /div> /div> div stylemargin-top: 30px;>On success, the response has the status code 200 OK and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>true/h2> /div> /div> /div> div stylemargin-top: 30px;>On error, the response has the status code 400 NOT FOUND and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>false/h2> /div> /div> div classrows> div classleft> h2>message/h2> string /div> div classright> Message about error. /div> /div> /div> div stylemargin-top: 30px;>For INTERNAL SERVER ERROR the response has status 500 and returns no data./div> div stylemargin-top: 40px;>An example request to the applications webhook endpoint will look something like this:/div> ul classul_code> li>button onclickapplicationWebhookBash(true)>Bash/button>/li> li>button onclickapplicationWebhookNode(true)>Node.js/button>/li> li>button onclickapplicationWebhookPython(true)>Python/button>/li> /ul> div idapplicationWebhookContent>/div> div stylemargin-top: 30px;>Response to the applications webhook endpoint will look like this:/div> pre stylemargin-top: 20px;> {br> span stylecolor: #E5DA73>success/span>: span stylecolor: #90ee90>true/span>br> } /pre> /div> div classsub_message> h1 idClient_webhook stylemargin-top: 30px;>Clients decision webhook/h1> To register decisions webhook you have to make call towards the endpoint: div classendpoint> POST url/webhooks/decisions /div> The header of this POST request in addition to the required authorization header must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Content-Type /div> div classright> div classtitle> Value /div> hr> application/json /div> /div> /div>br> The body of this POST request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Body /div> hr> h2>url/h2> string /div> div classright> div classtitle> Value /div> hr> The url that will listen to notifications (must be HTTPS). /div> /div> /div> div stylemargin-top: 30px;>On success, the response has the status code 200 OK and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>true/h2> /div> /div> /div> div stylemargin-top: 30px;>On error, the response has the status code 400 NOT FOUND and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>false/h2> /div> /div> div classrows> div classleft> h2>message/h2> string /div> div classright> Message about error. /div> /div> /div> div stylemargin-top: 30px;>For INTERNAL SERVER ERROR the response has status 500 and returns no data./div> div stylemargin-top: 40px;>An example request to the decisions webhook endpoint will look something like this:/div> ul classul_code> li>button onclickdecisionsWebhookBash(true)>Bash/button>/li> li>button onclickdecisionsWebhookNode(true)>Node.js/button>/li> li>button onclickdecisionsWebhookPython(true)>Python/button>/li> /ul> div iddecisionsWebhookContent>/div> div stylemargin-top: 30px;>Response to the decisions webhook endpoint will look like this:/div> pre stylemargin-top: 20px;> {br> span stylecolor: #E5DA73>success/span>: span stylecolor: #90ee90>true/span>br> } /pre> /div> div classsub_message stylemargin-top: 30px;> h1 idRemove_webhook>Remove webhook/h1> To remove application webhook you have to make call towards the endpoint: div classendpoint> DELETE url/webhooks/applications /div> To remove decisions webhook you have to make call towards the endpoint: div classendpoint> DELETE url/webhooks/decisions /div> div stylemargin-top: 30px;>On success, the response has the status code 200 OK and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>true/h2> /div> /div> /div> div stylemargin-top: 30px;>On error, the response has the status code 400 NOT FOUND and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>false/h2> /div> /div> div classrows> div classleft> h2>message/h2> string /div> div classright> Message about error. /div> /div> /div> div stylemargin-top: 30px;>For INTERNAL SERVER ERROR the response has status 500 and returns no data./div> div stylemargin-top: 40px;>An example request to the delete webhook endpoint will look something like this:/div> ul classul_code> li>button onclickdeleteWebhookBash(true)>Bash/button>/li> li>button onclickdeleteWebhookNode(true)>Node.js/button>/li> li>button onclickdeleteWebhookPython(true)>Python/button>/li> /ul> div iddeleteWebhookContent>/div> div stylemargin-top: 30px;>Response to the delete webhook endpoint will look like this:/div> pre stylemargin-top: 20px;> {br> span stylecolor: #E5DA73>success/span>: span stylecolor: #90ee90>true/span>br> } /pre> /div> div classsub_message> h1 idWebhook_security>Webhook security/h1> After registering webhook you will receive event as soon as it occurs. The request authorization header will have a token. You should verify the token on your server to prevent attackers from imitating valid webhooks. br>br> The header of our requests will have the following parameters: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Authorization /div> div classright> div classtitle> Value /div> hr> token xxxxx-yyyyy-zzzzzbr>(this token was provided for you during registration) /div> /div> br> div classrows> div classleft> Content-Type /div> div classright> application/json /div> /div> /div> div stylemargin-top: 40px;>An example cheking of token will look something like this:/div> ul classul_code> li>button onclickcheckTokenNode(true)>Node.js/button>/li> li>button onclickcheckTokenPython(true)>Python/button>/li> /ul> div idcheckTokenContent>/div> /div> div classsub_message> h1 idApplication_details>Application details/h1> Application sent to you via webhook will always have the same structure. The body JSON will has the following fields: div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>data/h2> string /div> div classright> div classtitle> Description /div> hr> h2>Base64 string which includes ecrypted application/h2> /div> /div> div classrows> div classleft> h2>iv/h2> string /div> div classright> Base64 string which includes initialization vector /div> /div> /div> br> You will have to decrypt data using provided key. div stylemargin-top: 20px;>Sample code may look something like this: /div> ul classul_code> li>button onclickapplicationWebhookDetailsNode(true)>Node.js/button>/li> li>button onclickapplicationWebhookDetailsPython(true)>Python/button>/li> /ul> div idapplicationWebhookDetailsContent>/div> br> The decrypted JSON will have the following fields: div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>application_id/h2> string /div> div classright> div classtitle> Description /div> hr> h2>Id of application in Kompars system./h2> /div> /div> div classrows> div classleft> h2>name/h2> string /div> div classright> The full name of the client. /div> /div> div classrows> div classleft> h2>company_id/h2> string /div> div classright> The Swedish Business Registration Number (Organisationsnummer). /div> /div> div classrows> div classleft> h2>company_name/h2> string /div> div classright> The name of clients company. /div> /div> div classrows> div classleft> h2>company_type/h2> string /div> div classright> The type of clients company. /div> /div> div classrows> div classleft> h2>company_revenue/h2> float /div> div classright> Monthly revenue of clients company. /div> /div> div classrows> div classleft> h2>company_age/h2> float /div> div classright> The age of clients company. /div> /div> div classrows> div classleft> h2>amount/h2> int /div> div classright> The amount requested by the client. /div> /div> div classrows> div classleft> h2>duration/h2> int /div> div classright> The desired repayment term requested by the client (in months). /div> /div> div classrows> div classleft> h2>purpose/h2> string /div> div classright> The purpose of the application. Available options you may find in the option lists section. /div> /div> div classrows> div classleft> h2>ssn/h2> string /div> div classright> Personal id of applicant /div> /div> div classrows> div classleft> h2>guarantors/h2> array of { ssn: string } /div> div classright> Guarantors /div> /div> Additional fields will be determined with lender: div classrows> div classleft> h2>company_last_year_revenue/h2> float /div> div classright> /div> /div> div classrows> div classleft> h2>company_description/h2> string /div> div classright> /div> /div> div classrows> div classleft> h2>attachments/h2> array of strings /div> div classright> /div> /div> div classrows> div classleft> h2>mortgage_amount/h2> float /div> div classright> /div> /div> div classrows> div classleft> h2>property_existens/h2> /div> div classright> /div> /div> div classrows> div classleft> h2>description_of_property/h2> text /div> div classright> /div> /div> /div> /div> div classsub_message> h1 idClient_details>Clients decision details/h1> Client details sended to you via webhook will always have the same structure. The body JSON will have the following fields: div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>application_id/h2> string /div> div classright> div classtitle> Description /div> hr> h2>/h2> /div> /div> div classrows> div classleft> h2>accepted/h2> boolean /div> div classright> /div> /div> /div>br> If offer is accepted you will receive as well: div classparameter> Fields and actions will be determined with lender. /div> /div> div classsub_message> h1 idConfirmation_receiving>Confirmation of receiving/h1> Upon receiving a webhook notification, you should acknowledge success by responding with an HTTP 200 response within 10 seconds. Otherwise, we will attempt to resend the notification 4 times according to the following schedule: ul classul_schedule> li>30 seconds after the first attempt/li>br> li>2 minutes after the second attempt/li>br> li>15 minutes after the third attempt/li>br> li>1 hour after the fourth attempt/li> /ul> /div> /div> /div> div classsection2> h1 idOffer>Offer/h1> div classtitle> This section shows how to send offer for specific application after receiving it from webhook. br>br>All requests require authentication. /div> div classmessage> h1 idSend_offer>Send offer/h1> To send an offer for application you have to make call towards the endpoint: div classsub_message> div classendpoint> POST url/offer /div> The header of this POST request in addition to the required authorization header must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Content-Type /div> div classright> div classtitle> Value /div> hr> application/json /div> /div> /div>br> The body of this POST request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Body /div> hr> h2>application_id/h2> string /div> div classright> div classtitle> Value /div> hr> The id of application existed in our system. /div> /div> div classrows> div classleft> h2>is_offer_available/h2> boolean /div> div classright> Do you have offer for this application? True means you have prepared an offer. False means that application is rejected. /div> /div> div classleft styletext-align: justify; margin-bottom: 10px; margin-top: 10px> If you prepared offer for application you have to additionally provide following mandatory fields: /div> div classrows> div classleft> h2>granted_amount/h2> int /div> div classright> The amount you have granted for client. /div> /div> div classrows> div classleft> h2>duration/h2> int /div> div classright> The duration of loan you have granted. /div> /div> div classrows> div classleft> h2>guarantors/h2> int /div> div classright> Amount of guarantors 0-2 (if partial guarantee, enter 0.2 for 20% of loan amount, 0.3 for 30% and so on). /div> /div> div classrows> div classleft> h2>interest_rate/h2> float /div> div classright> Yearly interest rate of loan. /div> /div> div classrows> div classleft> h2>initial_amount/h2> float /div> div classright> Initial fee for loan. /div> /div> div classrows> div classleft> h2>total_cost/h2> float /div> div classright> The total cost to pay by client. /div> /div> div classrows> div classleft> h2>monthly_cost/h2> float /div> div classright> The monthly cost to pay by client. /div> /div> div classleft styletext-align: justify; margin-bottom: 10px; margin-top: 10px> The optional fields: /div> div classrows> div classleft> h2>early_repayment/h2> boolean /div> div classright> Is there the opportunity to early repayment. /div> /div> div classrows> div classleft> h2>is_final_offer/h2> boolean /div> div classright> True means that the offer is final otherwise the offer is preliminary. If you dont provide this field we assume the offer is preliminary. /div> /div> div classrows> div classleft> h2>requirements/h2> array of strings /div> div classright> Available options: Prel. RR & BR, Kontohistorik - Prel. RR & BR is a shortcut of Preliminary Profit & Loss Statement and Balance Sheet /div> /div> div classrows> div classleft> h2>other_info/h2> string /div> div classright> Other information about requirements or relevant information about the offer /div> /div> /div> div stylemargin-top: 30px;>On success, the response has the status code 200 OK and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>true/h2> /div> /div> /div> div stylemargin-top: 30px;>On error, the response has the status code 400 NOT FOUND and the following JSON data in the response body:/div> div classparameter> div classrows> div classleft> div classtitle> Key /div> hr> h2>success/h2> boolean /div> div classright> div classtitle> Description /div> hr> h2>false/h2> /div> /div> div classrows> div classleft> h2>message/h2> string /div> div classright> Message about error. /div> /div> /div> div stylemargin-top: 30px;>For INTERNAL SERVER ERROR the response has status 500 and returns no data./div> div stylemargin-top: 40px;>An example request to the offer endpoint will look something like this:/div> ul classul_code> li>button onclickofferBashContent(true)>Bash/button>/li> li>button onclickofferNodeContent(true)>Node.js/button>/li> li>button onclickofferPythonContent(true)>Python/button>/li> /ul> div idofferContent>/div> div stylemargin-top: 30px;>Response to the offer endpoint will look like this:/div> pre stylemargin-top: 20px;> {br> span stylecolor: #E5DA73>success/span>: span stylecolor: #90ee90>true/span>br> } /pre> /div> /div> /div> div classsection2> h1 idMethods_related_to_application>Methods related to application/h1> div classtitle> All requests require authentication. /div> div classmessage> h1 idClose_application>Close application/h1> If you want to withdraw an offer for a given application or you didnt sign a contract with client use that method to notify us. div classsub_message> div classendpoint> POST url/applications/close /div> The header of this POST request in addition to the required authorization header must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Content-Type /div> div classright> div classtitle> Value /div> hr> application/json /div> /div> /div>br> The body of this POST request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Body /div> hr> h2>application_id/h2> string /div> div classright> div classtitle> Value /div> hr> The id of application existed in our system. /div> /div> div classleft styletext-align: justify; margin-bottom: 10px; margin-top: 10px> The optional field: /div> div classrows> div classleft> h2>reason/h2> string /div> div classright> Reason of canceling. /div> /div> /div> /div> div classsub_message> h1 idApplication_is_signed>Application is signed/h1> After signing contract with the client use that method to notify us. div classendpoint> POST url/applications/signed /div> The header of this POST request in addition to the required authorization header must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Header /div> hr> Content-Type /div> div classright> div classtitle> Value /div> hr> application/json /div> /div> /div>br> The body of this POST request must contain the following parameter: div classparameter> div classrows> div classleft> div classtitle> Body /div> hr> h2>application_id/h2> string /div> div classright> div classtitle> Value /div> hr> The id of application existed in our system. /div> /div> /div> /div> /div> /div> div classsection2> h1 idOption_lists>Option lists/h1> div classtitle> This section includes all option lists available through API. /div> div classmessage> h1 idLoan_purpose>Loan purpose/h1> Available loan purposes: ul> li>Anledning till lån/li> li>Anställa personal/li> li>Betala leverantörer/li> li>Betala löner/li> li>Förvärv/li> li>Generell likviditet / kassaflöde/li> li>Hemsida / marknadsföring/li> li>Inköp av lager/li> li>Inköp av maskiner/li> li>Oväntade utgifter/li> li>Renovering/li> li>Säsongsinvestering/li> li>Omfinansiering av lån / samla lån/li> li>Övrigt/li> /ul> /div> /div> div classsection2> h1 idHow_to_test_Api>How to test API?/h1> div classtitle> Test environment which is available after /test path, provides some additional methods to make testing easier. These methods try to simulate the real system. We highly recommend to use them before changing your system to production environment. br>br> All requests require test authentication. /div> div classmessage> h1 idGet_random_application>Get random application/h1> Lets assume you have correctly registered to the application webhook but how to check if application comes correctly to your provided url. This method will send a random fake application to the url you have provided during registering application webhook. You will be able to check if your system correctly receive the application and correctly decrypted it. div classsub_message> div classendpoint> GET url/random/application /div> div stylemargin-top: 20px;>On success, we will send a random application to your url. The application will look exactly the same as described under paragraph Webhooks -> Application details. You dont have to confirm receiving like in webhook./div> /div> /div> div classmessage> h1 idGet_random_decision>Get random decision/h1> Lets assume you have correctly registered to the decision webhook but how to check if clients decison comes correctly to your provided url. This method will send a random fake decision to the url you have provided during registering decision webhook. br> div classsub_message> div classendpoint> GET url/random/decision /div> div stylemargin-top: 20px;>On success, we will send a random decision to your url. The decision will look exactly the same as described under paragraph Webhooks -> Clients decision details. The decision will be always accepted. You dont have to confirm receiving like in webhook./div> /div> /div> div classmessage> h1 idTesting_the_entire_flow>Testing the entire flow/h1> After configuring method for receiving applications and decision you will be able to test the entire flow I.e. ol> li>Receive test application/li> li>Make offer or reject application/li> li>Receive decision of client/li> /ol> div classsub_message> I. To start the flow make a call to the endpoint: div classendpoint> GET url/flow/start /div> /div> div classsub_message stylemargin-top: 20px;> II. To receive test application to the url you have provided during registering application webhook you have to call the endpoint: div classendpoint> GET url/flow/application /div> div stylemargin-top: 10px;>Remember to save application id. You will need that id in the next step - creating offer./div> /div> div classsub_message stylemargin-top: 20px;> III. After receiving application you are able to create an offer. To send the offer you should use method from paragraph Offer -> Send offer. Remember to provide all mandatory fields. You can also reject the application. In that case there wont be next steps. /div> div classsub_message stylemargin-top: 20px;> IV. From now you can close application using method from paragraph Methods related to application -> Close application. /div> div classsub_message stylemargin-top: 20px;> V. To receive decision to the url you have provided during registering decision webhook you have to call the endpoint: div classendpoint> GET url/flow/decision /div> div stylemargin-top: 10px;>The decision may be accepted or unaccepted./div> /div> div classsub_message stylemargin-top: 20px;> VI. If decision is accepted from now you can sign application using method from paragraph Methods related to application -> Application is signed. You can still close application using point IV. If decision is unaccepted the flow is finished. /div> div classsub_message stylemargin-top: 20px;> VII. If you want to start from the beginning you just have to perform instruction from point I. /div> /div> br>br>br>br>br>br>br>br>br>br>br>br>br>br> /div> div idend classsection2> br> /div> /div> /div> script> var elements ; var lastElem null; var last; window.addEventListener(load, (event) > { last window.location.hash.substr(1); if (last ) { document.getElementById(Introduction_).style.backgroundrgb(194, 193, 193); lastIntroduction; } else { document.getElementById(`${last}_`).style.backgroundrgb(194, 193, 193); } authorizationBash(false); authenticationBash(false); applicationWebhookBash(false); decisionsWebhookBash(false); deleteWebhookBash(false); checkTokenNode(false); applicationWebhookDetailsNode(false); offerBashContent(false); addEvent(); calculate(); }); function addEvent() { var dropdown document.getElementsByClassName(dropdown-btn); var i; for (i 0; i dropdown.length; i++) { dropdowni.addEventListener(click, function() { this.classList.toggle(active); var dropdownContent this.nextElementSibling; if (dropdownContent.style.display block) { dropdownContent.style.display none; } else { dropdownContent.style.display block; } }); } } function calculate() { $(#sidenav).children().each(function () { const elem this; if (elem.nodeName ! HR && elem.nodeName ! BR) { if (elem.nodeName DIV) { $(`#${elem.id}`).children().each(function () { const elemInDiv this; const realElementId elemInDiv.id.substring(0, elemInDiv.id.length-1); const realElementOffsetTop document.getElementById(`${realElementId}`).offsetTop; elements.push({ id: realElementId, offsetTop: realElementOffsetTop, dropdown: false, dropdownChild: true, parentId: lastElem.id.substring(0, lastElem.id.length-1) }); }); } else { const realElementId elem.id.substring(0, elem.id.length-1); const realElementOffsetTop document.getElementById(`${realElementId}`).offsetTop; if (elem.className dropdown-btn) { elements.push({ id: realElementId, offsetTop: realElementOffsetTop, dropdown: true, dropdownChild: false }); } else { elements.push({ id: realElementId, offsetTop: realElementOffsetTop, dropdown: false, dropdownChild: false }); } } } lastElem elem; }); } window.addEventListener(scroll, function(event) { var currentScrollPos window.scrollY; for (var i 0; i elements.length; i++) { const elem elementsi; const nextElem elementsi+1; if (currentScrollPos > elem.offsetTop && nextElem ! null && nextElem ! undefined && currentScrollPos nextElem.offsetTop && elem.id ! last) { document.getElementById(`${elem.id}_`).style.backgroundrgb(194, 193, 193); document.getElementById(`${last}_`).style.background#509fd3; last elem.id; if (elem.dropdown) { closeAllDropdown(); openCurrentDropdown(elem.id, true); } else { if (!elem.dropdownChild) { closeAllDropdown(); } else { closeAllDropdown(); openCurrentDropdown(elem.parentId, false); } } } } }); function openCurrentDropdown(id, active) { var dropdown document.getElementsByClassName(dropdown-btn); var i; for (i 0; i dropdown.length; i++) { if (dropdowni.id `${id}_`) { if (active) dropdowni.classList.toggle(active); var dropdownContent dropdowni.nextElementSibling; dropdownContent.style.display block; } } } function closeAllDropdown() { var dropdown document.getElementsByClassName(dropdown-btn); var i; for (i 0; i dropdown.length; i++) { dropdowni.classList.toggle(active); var dropdownContent dropdowni.nextElementSibling; if (dropdownContent.style.display block) { dropdownContent.style.display none; } } } function authorizationBash(c) { const div document.getElementById(authorizationContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X GET \ br> url/token \br>  -H span stylecolor: #E5DA73>Authorization: Basic xxx...yyy...zzz/span> /pre>`; if (c) calculate(); } function authorizationNode(c) { const div document.getElementById(authorizationContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> token span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/token/span>, { br> method: span stylecolor: #E5DA73>GET/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Basic xxx...yyy...zzz/span> br> }, br> })span stylecolor: #509fd3>.then/span>(res > res.json());br> })(); /pre>`; if (c) calculate(); } function authorizationPython(c) { const div document.getElementById(authorizationContent); div.innerHTML `pre> span stylecolor: orange>import/span> requestsbr> token requests.get(br>  span stylecolor: #E5DA73>url/token/span>,br>  headers{ span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Basic xxx...yyy...zzz/span> }br> ).json() /pre>`; if (c) calculate(); } function authenticationBash(c) { const div document.getElementById(authenticationContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X TYPE \ br> url/some/request \br>  -H span stylecolor: #E5DA73>Authorization: Bearer xxxxx...yyyyy...zzzzz/span> /pre>`; if (c) calculate(); } function authenticationNode(c) { const div document.getElementById(authenticationContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> token span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/some/request/span>, { br> method: span stylecolor: #E5DA73>TYPE/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span> br> }, br> }); br> })(); /pre>`; if (c) calculate(); } function applicationWebhookBash(c) { const div document.getElementById(applicationWebhookContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X POST \ br> url/webhooks/applications \ br> -H span stylecolor: #E5DA73>Content-Type: application/json/span> \ br> -H span stylecolor: #E5DA73>Authorization: Bearer xxxxx...yyyyy...zzzzz/span> \ br> -d { span stylecolor: #E5DA73>url/span>:span stylecolor: #E5DA73>https://some.url/span> } /pre>`; if (c) calculate(); } function applicationWebhookNode(c) { const div document.getElementById(applicationWebhookContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> webhook span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/webhooks/applications/span>, {br> method: span stylecolor: #E5DA73>POST/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span> br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span> br> }, br> body: { br> span stylecolor: #E5DA73>url/span>: span stylecolor: #E5DA73>https://some.url/span> br> }br> })span stylecolor: #509fd3>.then/span>(res > res.json());br> })(); /pre>`; if (c) calculate(); } function applicationWebhookPython(c) { const div document.getElementById(applicationWebhookContent); div.innerHTML `pre> span stylecolor: orange>import/span> requestsbr> webhook requests.post(br> span stylecolor: #E5DA73>url/webhooks/applications/span>,br> headers{br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span>,br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span>br> },br> json{br> span stylecolor: #E5DA73>url/span>: span stylecolor: #E5DA73>https://some.url/span>br> }br> ).json() /pre>`; if (c) calculate(); } function decisionsWebhookBash(c) { const div document.getElementById(decisionsWebhookContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X POST \ br> url/webhooks/decisions \ br> -H span stylecolor: #E5DA73>Content-Type: application/json/span> \ br> -H span stylecolor: #E5DA73>Authorization: Bearer xxxxx...yyyyy...zzzzz/span> \ br> -d { span stylecolor: #E5DA73>url/span>:span stylecolor: #E5DA73>https://some.url/span> } /pre>`; if (c) calculate(); } function decisionsWebhookNode(c) { const div document.getElementById(decisionsWebhookContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> webhook span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/webhooks/decisions/span>, {br> method: span stylecolor: #E5DA73>POST/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span> br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span> br> }, br> body: { br> span stylecolor: #E5DA73>url/span>: span stylecolor: #E5DA73>https://some.url/span> br> }br> })span stylecolor: #509fd3>.then/span>(res > res.json()); br> })(); /pre>`; if (c) calculate(); } function decisionsWebhookPython(c) { const div document.getElementById(decisionsWebhookContent); div.innerHTML `pre> span stylecolor: orange>import/span> requestsbr> webhook requests.post(br> span stylecolor: #E5DA73>url/webhooks/decisions/span>,br> headers{br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span>,br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span>br> },br> json{br> span stylecolor: #E5DA73>url/span>: span stylecolor: #E5DA73>https://some.url/span>br> }br> ).json() /pre>`; if (c) calculate(); } function deleteWebhookBash(c) { const div document.getElementById(deleteWebhookContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X DELETE \br> url/webhooks/applications \br> -H span stylecolor: #E5DA73>Authorization: Bearer xxxxx...yyyyy...zzzzz/span>;br> /pre>`; if (c) calculate(); } function deleteWebhookNode(c) { const div document.getElementById(deleteWebhookContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> response span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/webhooks/applications/span>, {br> method: span stylecolor: #E5DA73>DELETE/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span> br> }br> })span stylecolor: #509fd3>.then/span>(res > res.json()); br> })(); /pre>`; if (c) calculate(); } function deleteWebhookPython(c) { const div document.getElementById(deleteWebhookContent); div.innerHTML `pre> span stylecolor: orange>import/span> requestsbr> response requests.delete(br> span stylecolor: #E5DA73>url/webhooks/applications/span>,br> headers{br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span>br> },br> ).json() /pre>`; if (c) calculate(); } function checkTokenNode(c) { const div document.getElementById(checkTokenContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> TOKEN YOUR SECRET TOKEN;br> span stylecolor: #509fd3>const/span> headers HEADERS OF THE REQUEST;br> span stylecolor: #509fd3>const/span> authorization headers.authorization;br> span stylecolor: #509fd3>if/span> (!authorization || authorization.indexOf(span stylecolor: #E5DA73>token /span>) -1) {br> span stylecolor: #509fd3>return/span>;br> }br> span stylecolor: #509fd3>const/span> token authorization.split(span stylecolor: #E5DA73> /span>)1;br> span stylecolor: #509fd3>if/span> (token ! TOKEN) {br> span stylecolor: #509fd3>return/span>;br> }br> /pre>`; if (c) calculate(); } function checkTokenPython(c) { const div document.getElementById(checkTokenContent); div.innerHTML `pre> headers HEADERS OF THE REQUESTbr> authorization headers.get(span stylecolor: #E5DA73>Authorization/span>)br> span stylecolor: #509fd3>if/span> authorization span stylecolor: #509fd3>is None or not/span> span stylecolor: #E5DA73>token/span> span stylecolor: #509fd3>in/span> authorization:br> span stylecolor: #509fd3>return/span>br> token authorization.split(span stylecolor: #E5DA73> /span>)1br> span stylecolor: #509fd3>if/span> token ! YOUR TOKEN:br> span stylecolor: #509fd3>return/span> /pre>`; if (c) calculate(); } function applicationWebhookDetailsNode(c) { const div document.getElementById(applicationWebhookDetailsContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> crypto span stylecolor: orange>require/span>(span stylecolor: #E5DA73>crypto/span>); br> br> span stylecolor: #509fd3>const/span> body BODY OF THE REQUEST; br> span stylecolor: #509fd3>const/span> key YOUR KEY; br> span stylecolor: #509fd3>const/span> iv span stylecolor: orange>Buffer/span>.from(body.iv, span stylecolor: #E5DA73>base64/span>).toString(span stylecolor: #E5DA73>hex/span>);br> span stylecolor: #509fd3>const/span> encryptedData span stylecolor: orange>Buffer/span>.from(body.data, span stylecolor: #E5DA73>base64/span>).toString(span stylecolor: #E5DA73>hex/span>);br> span stylecolor: #509fd3>const/span> decipher crypto.createDecipheriv(span stylecolor: #E5DA73>AES-256-CBC/span>, key, iv);br> span stylecolor: #509fd3>const/span> decrypted decipher.update(encryptedData, span stylecolor: #E5DA73>hex/span>, span stylecolor: #E5DA73>utf8/span>) + decipher.final(span stylecolor: #E5DA73>utf8/span>);br> /pre>`; if (c) calculate(); } function applicationWebhookDetailsPython(c) { const div document.getElementById(applicationWebhookDetailsContent); div.innerHTML `pre> span stylecolor: orange>from/span> base64 span stylecolor: orange>import/span> b64decodebr> span stylecolor: orange>from/span> Crypto.Cipher span stylecolor: orange>import/span> AESbr> br> body BODY OF THE REQUESTbr> key YOUR KEYbr> iv b64decode(bodyspan stylecolor: #E5DA73>iv/span>).hex()br> encryptedData b64decode(bodyspan stylecolor: #E5DA73>data/span>).hex()br> decryptedData AES.new(key, AES.MODE_CBC, iv).decrypt(span stylecolor: orange>bytes/span>.fromhex(encryptedData))br> decodedData decryptedData.decode(span stylecolor: #E5DA73>utf-8/span>) /pre>`; if (c) calculate(); } function offerBashContent(c) { const div document.getElementById(offerContent); div.innerHTML `pre> span stylecolor: orange>curl/span> -X POST \br> url/offer \br> -H span stylecolor: #E5DA73>Content-Type: application/json/span> \br> -H span stylecolor: #E5DA73>Authorization: Bearer xxxxx...yyyyy...zzzzz/span> \br> -d {br> span stylecolor: #E5DA73>application_id/span>:span stylecolor: #E5DA73>1581933624854x717991094173476900/span>,br> span stylecolor: #E5DA73>is_offer_available/span>:span stylecolor: #90ee90>true/span>,br> span stylecolor: #E5DA73>granted_amount/span>:10000,br> span stylecolor: #E5DA73>duration/span>:12,br> span stylecolor: #E5DA73>guarantors/span>:1,br> span stylecolor: #E5DA73>interest_rate/span>:0.1029,br> span stylecolor: #E5DA73>early_repayment/span>:span stylecolor: #90ee90>false/span>,br> span stylecolor: #E5DA73>initial_amount/span>:200br>  } /pre>`; if (c) calculate(); } function offerNodeContent(c) { const div document.getElementById(offerContent); div.innerHTML `pre> span stylecolor: #509fd3>const/span> fetch span stylecolor: orange>require/span>(span stylecolor: #E5DA73>node-fetch/span>); br> (span stylecolor: #509fd3>async/span> () > { br> span stylecolor: #509fd3>const/span> response span stylecolor: #509fd3>await/span> fetch(span stylecolor: #E5DA73>url/offer/span>, {br> method: span stylecolor: #E5DA73>POST/span>, br> headers: { br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span> br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span> br> }, br> body: { br> span stylecolor: #E5DA73>application_id/span>: span stylecolor: #E5DA73>1581933624854x717991094173476900/span>br> span stylecolor: #E5DA73>is_offer_available/span>: span stylecolor: #90ee90>true/span>,br> span stylecolor: #E5DA73>granted_amount/span>: 10000,br> span stylecolor: #E5DA73>duration/span>: 12,br> span stylecolor: #E5DA73>guarantors/span>: 1,br> span stylecolor: #E5DA73>interest_rate/span>: 0.1029,br> span stylecolor: #E5DA73>early_repayment/span>: span stylecolor: #90ee90>false/span>,br> span stylecolor: #E5DA73>initial_amount/span>: 200br> }br> })span stylecolor: #509fd3>.then/span>(res > res.json()); br> })(); /pre>`; if (c) calculate(); } function offerPythonContent(c) { const div document.getElementById(offerContent); div.innerHTML `pre> span stylecolor: orange>import/span> requestsbr> response requests.post(br> span stylecolor: #E5DA73>url/offer/span>,br> headers{br> span stylecolor: #E5DA73>Authorization/span>: span stylecolor: #E5DA73>Bearer xxxxx...yyyyy...zzzzz/span>,br> span stylecolor: #E5DA73>Content-Type/span>: span stylecolor: #E5DA73>application/json/span>br> },br> json{br> span stylecolor: #E5DA73>application_id/span>: span stylecolor: #E5DA73>1581933624854x717991094173476900/span>,br> span stylecolor: #E5DA73>is_offer_available/span>: span stylecolor: #90ee90>true/span>,br> span stylecolor: #E5DA73>granted_amount/span>: 10000,br> span stylecolor: #E5DA73>duration/span>: 12,br> span stylecolor: #E5DA73>guarantors/span>: 1,br> span stylecolor: #E5DA73>interest_rate/span>: 0.1029,br> span stylecolor: #E5DA73>early_repayment/span>: span stylecolor: #90ee90>false/span>,br> span stylecolor: #E5DA73>initial_amount/span>: 200br> }br> ).json() /pre>`; if (c) calculate(); } /script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]