[ {kernel, [ {logger_level, info}, {logger, [ {handler, default, logger_std_h, #{ level => debug, config => #{ type => standard_io, sync_mode_qlen => 500, drop_mode_qlen => 500, flush_qlen => 2000 }, filters => [{access_log, {fun logger_filters:domain/2, {stop, equal, [cowboy_access_log]}}}], formatter => {logger_logstash_formatter, #{}} }}, {handler, access_logger, logger_std_h, #{ level => info, config => #{ type => standard_io, sync_mode_qlen => 20, burst_limit_enable => true, burst_limit_max_count => 600, burst_limit_window_time => 1000 }, filters => [{access_log, {fun logger_filters:domain/2, {stop, not_equal, [cowboy_access_log]}}}], formatter => {logger_logstash_formatter, #{}} }} ]} ]}, {scoper, [ {storage, scoper_storage_logger} ]}, {dmt_client, [ {max_cache_size, #{ elements => 80, memory => 209715200 % 200Mb }}, {cache_update_interval, 5000}, % milliseconds {cache_server_call_timeout, 30000}, % milliseconds {woody_event_handlers, [ {scoper_woody_event_handler, #{ event_handler_opts => #{ formatter_opts => #{ max_length => 1000, max_printable_string_length => 80 } } }} ]}, {service_urls, #{ 'Repository' => <<"http://dominant:8022/v1/domain/repository">>, 'RepositoryClient' => <<"http://dominant:8022/v1/domain/repository_client">> }} ]}, {party_client, [ {services, #{ party_management => "http://party-management:8022/v1/processing/partymgmt" }}, {woody, #{ cache_mode => safe, % disabled | safe | aggressive options => #{ woody_client => #{ event_handler => { scoper_woody_event_handler, {scoper_event_handler_options, #{ event_handler_opts => #{ formatter_opts => #{ max_length => 1000, max_printable_string_length => 80 } } } } } } } }} ]}, {fistful, [ {providers, #{ <<"test">> => #{ routes => [<<"mocketbank">>], payment_institution_id => 1, identity_classes => #{ <<"person">> => #{ name => <<"Person">>, contract_template_id => 1, initial_level => <<"anonymous">>, levels => #{ <<"anonymous">> => #{ name => <<"Anonymous">>, contractor_level => none }, <<"partly-identified">> => #{ name => <<"Partially identified">>, contractor_level => partial }, <<"identified">> => #{ name => <<"Fully identified">>, contractor_level => full } }, challenges => #{ <<"esia">> => #{ name => <<"Routine checkup">>, base => <<"anonymous">>, target => <<"partly-identified">> } } }, <<"company">> => #{ name => <<"Legal Entity">>, contract_template_id => 1, initial_level => <<"identified">>, levels => #{ <<"identified">> => #{ name => <<"Fully identified">>, contractor_level => full } } } } }, <<"dpl">> => #{ payment_institution_id => 1, routes => [<<"accentpay">>], identity_classes => #{ <<"company">> => #{ name => <<"Legal Entity">>, contract_template_id => 1, initial_level => <<"identified">>, levels => #{ <<"identified">> => #{ name => <<"Fully identified">>, contractor_level => full } } } } } }}, {services, #{ 'accounter' => "http://shumway:8022/shumpune", 'identification' => "http://identification:8022/v1/identification", 'binbase' => "http://binbase:8022/v1/binbase", 'eventsink' => "http://machinegun:8022/v1/event_sink", 'automaton' => "http://machinegun:8022/v1/automaton" }} ]}, {ff_server, [ {ip, "::"}, {port, 8022}, {woody_opts, #{ net_opts => [ % Bump keepalive timeout up to a minute {timeout, 60000} ] }}, {net_opts, [ % Bump keepalive timeout up to a minute {timeout, 60000} ]}, {health_check, #{ disk => {erl_health, disk , ["/", 99]}, memory => {erl_health, cg_memory, [99]}, service => {erl_health, service , [<<"wapi">>]} }}, {eventsink, #{ identity => #{ namespace => 'ff/identity' }, wallet => #{ namespace => 'ff/wallet_v2' }, withdrawal => #{ namespace => 'ff/withdrawal_v2' }, deposit => #{ namespace => 'ff/deposit_v1' }, destination => #{ namespace => 'ff/destination_v2' }, source => #{ namespace => 'ff/source_v1' }, withdrawal_session => #{ namespace => 'ff/withdrawal/session_v2' }, p2p_transfer => #{ namespace => 'ff/p2p_transfer_v1' }, p2p_session => #{ namespace => 'ff/p2p_transfer/session_v1' }, w2w_transfer => #{ namespace => 'ff/w2w_transfer_v1' }, p2p_template => #{ namespace => 'ff/p2p_template_v1' } }} ]}, {ff_transfer, [ {max_session_poll_timeout, 14400}, % 4h {withdrawal, #{ provider => #{ <<"mocketbank">> => #{ adapter => #{ event_handler => scoper_woody_event_handler, url => <<"http://adapter_mocketbank:8022/proxy/mocketbank/p2p-credit">> }, fee => #{<<"RUB">> => #{postings => []}}, accounts => #{} }, <<"royalpay-payout">> => #{ adapter => #{ event_handler => scoper_woody_event_handler, url => <<"http://adapter_royalpay_payout:8022/adapter/royalpay-payout/oct">> }, adapter_opts => #{ <<"timer_timeout">> => <<"10">> }, accounts => #{ <<"RUB">> => #{ id => <<"royalpay_rub_account_14998">>, identity => <<"555">>, currency => <<"RUB">>, accounter_account_id => 14998 }, <<"UAH">> => #{ id => <<"royalpay_uah_account_18842">>, identity => <<"555">>, currency => <<"UAH">>, accounter_account_id => 18842 } }, fee => #{ <<"RUB">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {product, {max_of, [ {fixed, {3500, <<"RUB">>} }, {share, { {13, 1000}, operation_amount, round_half_away_from_zero} } ]}} } ] }, <<"UAH">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {product, {max_of, [ {share, { {2, 100}, operation_amount, round_half_away_from_zero} } ]}} } ] } } }, <<"accentpay">> => #{ adapter => #{ event_handler => scoper_woody_event_handler, url => <<"http://adapter_accentpay:8022/adapter/accentpay/oct">> }, adapter_opts => #{ <<"project_id">> => <<"470">>, <<"customer_id">> => <<"rbk.money">>, <<"polling_delay">> => <<"10">>, <<"max_time_polling">> => <<"120">> }, accounts => #{ <<"RUB">> => #{ id => <<"accentpay_rub_account_48370">>, identity => <<"555">>, currency => <<"RUB">>, accounter_account_id => 48370 }, <<"USD">> => #{ id => <<"accentpay_usd_account_48371">>, identity => <<"555">>, currency => <<"USD">>, accounter_account_id => 48371 }, <<"EUR">> => #{ id => <<"accentpay_eur_account_48372">>, identity => <<"555">>, currency => <<"EUR">>, accounter_account_id => 48372 }, <<"KZT">> => #{ id => <<"accentpay_kzt_account_48373">>, identity => <<"555">>, currency => <<"KZT">>, accounter_account_id => 48373 }, <<"UAH">> => #{ id => <<"accentpay_uah_account_88463">>, identity => <<"555">>, currency => <<"UAH">>, accounter_account_id => 88463 } }, fee => #{ <<"RUB">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {share, { {6, 1000}, operation_amount, round_half_away_from_zero} } }, #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {fixed, {4000, <<"RUB">>} } } ] }, <<"USD">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {share, { {5, 1000}, operation_amount, round_half_away_from_zero} } }, #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {fixed, {200, <<"USD">>} } } ] }, <<"EUR">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {share, { {5, 1000}, operation_amount, round_half_away_from_zero} } }, #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {fixed, {250, <<"EUR">>} } } ] }, <<"KZT">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {share, { {6, 1000}, operation_amount, round_half_away_from_zero} } }, #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {fixed, {30000, <<"KZT">>} } } ] }, <<"UAH">> => #{ postings => [ #{ sender => {system, settlement}, receiver => {provider, settlement}, volume => {product, {max_of, [ {share, { {17, 1000}, operation_amount, round_half_away_from_zero} } ]}} } ] } } } }, system => #{ accounts => #{ settlement => #{ <<"RUB">> => #{ id => <<"system_rub_account_14997">>, identity => <<"519">>, currency => <<"RUB">>, accounter_account_id => 14997 }, <<"USD">> => #{ id => <<"system_usd_account_48383">>, identity => <<"519">>, currency => <<"USD">>, accounter_account_id => 48383 }, <<"EUR">> => #{ id => <<"system_eur_account_48382">>, identity => <<"519">>, currency => <<"EUR">>, accounter_account_id => 48382 }, <<"UAH">> => #{ id => <<"system_uah_account_18841">>, identity => <<"519">>, currency => <<"UAH">>, accounter_account_id => 18841 }, <<"KZT">> => #{ id => <<"system_kzt_account_48381">>, identity => <<"519">>, currency => <<"KZT">>, accounter_account_id => 48381 } } } }, default_transient_errors => [ <<"authorization_failed">> ], party_transient_errors => #{} } } ]}, {bender_client, [ {service_url, <<"http://bender:8022/v1/bender">>}, {deadline, 30000} ]}, {os_mon, [ {disksup_posix_only, true} ]}, %% TODO {snowflake, [{machine_id, 1}]}, {p2p, [ {score_id, <<"fraud">>} ]}, {prometheus, [ {collectors, [default]} ]} ].