Build log
host
juspay_api_library 0.1.0 · fail · run juspay_api_library-0.1.0-1790964985536
680 of 680 lines
1Resolving Hex dependencies...2Resolution completed in 0.278s3Unchanged:4 certifi 1.0.05 circular_buffer 1.1.06 elixir_make 0.10.07 hackney 1.6.6 RETIRED! VULNERABLE!8 (invalid)910 EEF-CVE-2026-47075 (MEDIUM)11 aka: CVE-2026-47075, GHSA-j9wq-vxxc-94wf12 CR/LF injection in query parameter in hackney13 https://osv.dev/vulnerability/EEF-CVE-2026-470751415 GHSA-vq52-99r9-h5pw (LOW)16 aka: CVE-2025-121117 Server-side Request Forgery (SSRF) in hackney18 https://osv.dev/vulnerability/GHSA-vq52-99r9-h5pw1920 EEF-CVE-2026-47071 (HIGH)21 aka: CVE-2026-47071, GHSA-gp9c-pm5m-5cxr22 SOCKS5 TLS upgrade ignores caller timeout in hackney23 https://osv.dev/vulnerability/EEF-CVE-2026-470712425 GHSA-9fm9-hp7p-53mf (LOW)26 aka: CVE-2025-386427 Hackney fails to properly release HTTP connections to the pool28 https://osv.dev/vulnerability/GHSA-9fm9-hp7p-53mf2930 EEF-CVE-2026-47069 (LOW)31 aka: CVE-2026-47069, GHSA-mp55-p8c9-rfw232 CRLF injection in cookie domain/path options in hackney33 https://osv.dev/vulnerability/EEF-CVE-2026-470693435 EEF-CVE-2026-47076 (MEDIUM)36 aka: CVE-2026-47076, GHSA-pj7v-xfvx-wmjq37 SSRF allowlist bypass via percent-encoded host in hackney38 https://osv.dev/vulnerability/EEF-CVE-2026-4707639 httpoison 0.9.240 idna 4.0.041 interactive_cmd 0.1.442 juspay_api_library 0.1.043 metrics 1.0.144 mimerl 1.0.245 nerves 2.0.0-pre.246 nerves_discovery 0.1.547 nerves_logging 0.2.448 nerves_runtime 0.13.1349 nerves_system_bbb 2.30.250 nerves_system_br 1.34.451 nerves_system_mangopi_mq_pro 0.17.252 nerves_system_qemu_aarch64 0.4.253 nerves_system_rpi0 2.1.254 nerves_system_rpi4 2.1.255 nerves_system_rpi5 2.1.256 nerves_system_trellis 0.5.057 nerves_system_x86_64 1.34.258 nerves_toolchain_aarch64_nerves_linux_gnu 15.3.159 nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.160 nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.161 nerves_toolchain_riscv64_nerves_linux_gnu 15.3.162 nerves_toolchain_x86_64_nerves_linux_musl 15.3.163 nerves_uevent 0.1.764 poison 2.2.065 property_table 0.3.466 ring_logger 0.11.767 ssl_verify_fun 1.1.168 tablet 0.3.369 toolshed 0.5.070 uboot_env 1.0.271Found retired packages, see above for details72Found packages with security advisories, see above for details73All dependencies have been fetched74 warning: String.strip/1 is deprecated. Use String.trim/1 instead75 │76 4 │ @version File.read!("VERSION") |> String.strip77 │ ~78 │79 └─ /work/proj/deps/poison/mix.exs:4:44: Poison.Mixfile (module)8081==> poison82Compiling 4 files (.ex)83 warning: using single-quoted strings to represent charlists is deprecated.84 Use ~c"" if you indeed want a charlist or use "" instead.85 You may run "mix format --migrate" to change all single-quoted86 strings to use the ~c sigil and fix this warning.87 │88 89 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do89 │ ~90 │91 └─ lib/poison/encoder.ex:89:319293 warning: using single-quoted strings to represent charlists is deprecated.94 Use ~c"" if you indeed want a charlist or use "" instead.95 You may run "mix format --migrate" to change all single-quoted96 strings to use the ~c sigil and fix this warning.97 │98 89 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do99 │ ~100 │101 └─ lib/poison/encoder.ex:89:48102103 warning: using single-quoted strings to represent charlists is deprecated.104 Use ~c"" if you indeed want a charlist or use "" instead.105 You may run "mix format --migrate" to change all single-quoted106 strings to use the ~c sigil and fix this warning.107 │108 127 │ defp chunk_size(<<char>> <> _, _mode, acc) when char <= 0x1F or char in '"\\' do109 │ ~110 │111 └─ lib/poison/encoder.ex:127:75112113 warning: using single-quoted strings to represent charlists is deprecated.114 Use ~c"" if you indeed want a charlist or use "" instead.115 You may run "mix format --migrate" to change all single-quoted116 strings to use the ~c sigil and fix this warning.117 │118 67 │ defp value(<<char, _ :: binary>> = string, _keys) when char in '-0123456789' do119 │ ~120 │121 └─ lib/poison/parser.ex:67:66122123 warning: using single-quoted strings to represent charlists is deprecated.124 Use ~c"" if you indeed want a charlist or use "" instead.125 You may run "mix format --migrate" to change all single-quoted126 strings to use the ~c sigil and fix this warning.127 │128 134 │ defp number_int(<<char, _ :: binary>> = string, acc) when char in '123456789' do129 │ ~130 │131 └─ lib/poison/parser.ex:134:69132133 warning: using single-quoted strings to represent charlists is deprecated.134 Use ~c"" if you indeed want a charlist or use "" instead.135 You may run "mix format --migrate" to change all single-quoted136 strings to use the ~c sigil and fix this warning.137 │138 150 │ defp number_exp(<<e>> <> rest, frac, acc) when e in 'eE' do139 │ ~140 │141 └─ lib/poison/parser.ex:150:55142143 warning: using single-quoted strings to represent charlists is deprecated.144 Use ~c"" if you indeed want a charlist or use "" instead.145 You may run "mix format --migrate" to change all single-quoted146 strings to use the ~c sigil and fix this warning.147 │148 176 │ defp number_digits(<<char>> <> rest = string) when char in '0123456789' do149 │ ~150 │151 └─ lib/poison/parser.ex:176:62152153 warning: using single-quoted strings to represent charlists is deprecated.154 Use ~c"" if you indeed want a charlist or use "" instead.155 You may run "mix format --migrate" to change all single-quoted156 strings to use the ~c sigil and fix this warning.157 │158 184 │ defp number_digits_count(<<char>> <> rest, acc) when char in '0123456789' do159 │ ~160 │161 └─ lib/poison/parser.ex:184:64162163 warning: using single-quoted strings to represent charlists is deprecated.164 Use ~c"" if you indeed want a charlist or use "" instead.165 You may run "mix format --migrate" to change all single-quoted166 strings to use the ~c sigil and fix this warning.167 │168 208 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do169 │ ~170 │171 └─ lib/poison/parser.ex:208:31172173 warning: using single-quoted strings to represent charlists is deprecated.174 Use ~c"" if you indeed want a charlist or use "" instead.175 You may run "mix format --migrate" to change all single-quoted176 strings to use the ~c sigil and fix this warning.177 │178 208 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do179 │ ~180 │181 └─ lib/poison/parser.ex:208:44182183 warning: using single-quoted strings to represent charlists is deprecated.184 Use ~c"" if you indeed want a charlist or use "" instead.185 You may run "mix format --migrate" to change all single-quoted186 strings to use the ~c sigil and fix this warning.187 │188 218 │ when a1 in 'dD' and a2 in 'dD'189 │ ~190 │191 └─ lib/poison/parser.ex:218:16192193 warning: using single-quoted strings to represent charlists is deprecated.194 Use ~c"" if you indeed want a charlist or use "" instead.195 You may run "mix format --migrate" to change all single-quoted196 strings to use the ~c sigil and fix this warning.197 │198 218 │ when a1 in 'dD' and a2 in 'dD'199 │ ~200 │201 └─ lib/poison/parser.ex:218:31202203 warning: using single-quoted strings to represent charlists is deprecated.204 Use ~c"" if you indeed want a charlist or use "" instead.205 You may run "mix format --migrate" to change all single-quoted206 strings to use the ~c sigil and fix this warning.207 │208 219 │ and (b1 in '89abAB')209 │ ~210 │211 └─ lib/poison/parser.ex:219:16212213 warning: using single-quoted strings to represent charlists is deprecated.214 Use ~c"" if you indeed want a charlist or use "" instead.215 You may run "mix format --migrate" to change all single-quoted216 strings to use the ~c sigil and fix this warning.217 │218 253 │ defp skip_whitespace(<<char>> <> rest) when char in '\s\n\t\r' do219 │ ~220 │221 └─ lib/poison/parser.ex:253:55222223 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead224 │225 22 │ if Application.get_env(:poison, :native) do226 │ ~227 │228 └─ lib/poison/parser.ex:22:18: Poison.Parser (module)229230 warning: use Bitwise is deprecated. import Bitwise instead231 │232 26 │ use Bitwise233 │ ~~~~~~~~~~~234 │235 └─ lib/poison/parser.ex:26: Poison.Parser (module)236237 warning: use Bitwise is deprecated. import Bitwise instead238 │239 79 │ use Bitwise240 │ ~~~~~~~~~~~241 │242 └─ lib/poison/encoder.ex:79: Poison.Encoder.BitString (module)243244 warning: the variable "count" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator245 │246 178 │ <<digits :: binary-size(count), rest :: binary>> = string247 │ ~248 │249 └─ lib/poison/parser.ex:178:29: Poison.Parser.number_digits/1250251 warning: the variable "n" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator252 │253 204 │ <<chunk :: binary-size(n), rest :: binary>> = string254 │ ~255 │256 └─ lib/poison/parser.ex:204:28: Poison.Parser.string_continue/2257258 warning: the variable "size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator259 │260 123 │ <<chunk :: binary-size(size), rest :: binary>> = string261 │ ~262 │263 └─ lib/poison/encoder.ex:123:28: Poison.Encoder.BitString.escape/2264265 warning: HashDict.size/1 is deprecated. Use maps and the Map module instead266 │267 283 │ if HashDict.size(dict) < 1 do268 │ ~269 │270 └─ lib/poison/encoder.ex:283:17: Poison.Encoder.HashDict.encode/2271272 warning: Integer.to_char_list/2 is deprecated. Use Integer.to_charlist/2 instead273 │274 161 │ case Integer.to_char_list(char, 16) do275 │ ~276 │277 └─ lib/poison/encoder.ex:161:18: Poison.Encoder.BitString.seq/1278279Generated poison app280==> nerves_compatibility_test281===> Analyzing applications...282===> Compiling certifi283===> Analyzing applications...284===> Compiling hackney285 ┌─ src/hackney_ssl.erl:286 │287 65 │ case lists:keymember(ecdh_rsa, 1, ssl:cipher_suites()) of288 │ ╰── Warning: ssl:cipher_suites/0 is removed; use ssl:cipher_suites/2,3 instead289290291 ┌─ src/hackney_pool.erl:292 │293 90 │ catch Transport:close(Socket),294 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.295Compile directive 'nowarn_deprecated_catch' can be used to suppress296warnings in selected modules.297298 ┌─ src/hackney_pool.erl:299 │300 94 │ catch Transport:close(Socket),301 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.302Compile directive 'nowarn_deprecated_catch' can be used to suppress303warnings in selected modules.304305 ┌─ src/hackney_pool.erl:306 │307 285 │ catch Transport:close(Socket),308 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.309Compile directive 'nowarn_deprecated_catch' can be used to suppress310warnings in selected modules.311312 ┌─ src/hackney_pool.erl:313 │314 381 │ catch Transport:controlling_process(S, self()),315 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.316Compile directive 'nowarn_deprecated_catch' can be used to suppress317warnings in selected modules.318319 ┌─ src/hackney_pool.erl:320 │321 403 │ catch Transport:close(Socket),322 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.323Compile directive 'nowarn_deprecated_catch' can be used to suppress324warnings in selected modules.325326 ┌─ src/hackney_pool.erl:327 │328 493 │ catch Transport:close(Socket),329 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.330Compile directive 'nowarn_deprecated_catch' can be used to suppress331warnings in selected modules.332333334 ┌─ src/hackney_stream.erl:335 │336 35 │ erlang:get_stacktrace()},337 │ ╰── Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace338339340 ┌─ src/hackney_manager.erl:341 │342 122 │ catch Transport:controlling_process(Socket, self()),343 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.344Compile directive 'nowarn_deprecated_catch' can be used to suppress345warnings in selected modules.346347 ┌─ src/hackney_manager.erl:348 │349 123 │ catch Transport:close(Socket),350 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.351Compile directive 'nowarn_deprecated_catch' can be used to suppress352warnings in selected modules.353354 ┌─ src/hackney_manager.erl:355 │356 255 │ catch Transport:controlling_process(Socket, self()),357 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.358Compile directive 'nowarn_deprecated_catch' can be used to suppress359warnings in selected modules.360361 ┌─ src/hackney_manager.erl:362 │363 256 │ catch Transport:close(Socket),364 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.365Compile directive 'nowarn_deprecated_catch' can be used to suppress366warnings in selected modules.367368 ┌─ src/hackney_manager.erl:369 │370 456 │ case catch hackney_stream:start_link(StreamTo2, Ref, Client) of371 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.372Compile directive 'nowarn_deprecated_catch' can be used to suppress373warnings in selected modules.374375376 ┌─ src/hackney_trace.erl:377 │378 130 │ (catch io:format(standard_io, "stop trace at ~s~n", [format_timestamp(Timestamp)])),379 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.380Compile directive 'nowarn_deprecated_catch' can be used to suppress381warnings in selected modules.382383 ┌─ src/hackney_trace.erl:384 │385 137 │ (catch io:format(Fd, "stop trace at ~s~n", [format_timestamp(Timestamp)])),386 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.387Compile directive 'nowarn_deprecated_catch' can be used to suppress388warnings in selected modules.389390 ┌─ src/hackney_trace.erl:391 │392 144 │ (catch io:format(Fd, "stop trace at ~s~n", [format_timestamp(Timestamp)])),393 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.394Compile directive 'nowarn_deprecated_catch' can be used to suppress395warnings in selected modules.396397 ┌─ src/hackney_trace.erl:398 │399 145 │ (catch file:close(Fd)),400 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.401Compile directive 'nowarn_deprecated_catch' can be used to suppress402warnings in selected modules.403404 ┌─ src/hackney_trace.erl:405 │406 152 │ (catch io:format(Fd, "stop trace at ~s~n", [format_timestamp(Timestamp)])),407 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.408Compile directive 'nowarn_deprecated_catch' can be used to suppress409warnings in selected modules.410411 ┌─ src/hackney_trace.erl:412 │413 153 │ (catch file:close(Fd)),414 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.415Compile directive 'nowarn_deprecated_catch' can be used to suppress416warnings in selected modules.417418 ┌─ src/hackney_trace.erl:419 │420 159 │ (catch print_hackney_trace(Fd, Sev, Timestamp, Who,421 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.422Compile directive 'nowarn_deprecated_catch' can be used to suppress423warnings in selected modules.424425 ┌─ src/hackney_trace.erl:426 │427 163 │ (catch print_trace(Fd, Event)),428 │ ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.429Compile directive 'nowarn_deprecated_catch' can be used to suppress430warnings in selected modules.431432433==> httpoison434Compiling 2 files (.ex)435Generated httpoison app436==> juspay_api_library437Compiling 8 files (.ex)438 warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:439440 def text do441 """442 contents443 """444 end445446 Instead make sure the contents are indented as much as the heredoc closing:447448 def text do449 """450 contents451 """452 end453454 The current heredoc line is indented too little455 │456 50 │ ## Examples457 │ ~458 │459 └─ lib/elixir_lib/Cards.ex:50:7460461 warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:462463 def text do464 """465 contents466 """467 end468469 Instead make sure the contents are indented as much as the heredoc closing:470471 def text do472 """473 contents474 """475 end476477 The current heredoc line is indented too little478 │479 96 │ Delet a credit card or debit card of a customer from JusPay Locker. card_token parameter identifies the card to be deleted.480 │ ~481 │482 └─ lib/elixir_lib/Cards.ex:96:7483484 warning: variable "response" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used)485 │486 15 │ response = response <> "\nMessage : " <> msg487 │ ~~~~~~~~488 │489 └─ lib/elixir_lib/JuspayException.ex:15:5: Juspay.Exception.juspay_error/3490491 warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:492493 def text do494 """495 contents496 """497 end498499 Instead make sure the contents are indented as much as the heredoc closing:500501 def text do502 """503 contents504 """505 end506507 The current heredoc line is indented too little508 │509 13 │ Create a payment transaction for Credit or Debit card.510 │ ~511 │512 └─ lib/elixir_lib/Payments.ex:13:8513514 warning: using single-quoted strings to represent charlists is deprecated.515 Use ~c"" if you indeed want a charlist or use "" instead.516 You may run "mix format --migrate" to change all single-quoted517 strings to use the ~c sigil and fix this warning.518 │519 69 │ method = 'POST'520 │ ~521 │522 └─ lib/elixir_lib/Payments.ex:69:14523524 warning: using single-quoted strings to represent charlists is deprecated.525 Use ~c"" if you indeed want a charlist or use "" instead.526 You may run "mix format --migrate" to change all single-quoted527 strings to use the ~c sigil and fix this warning.528 │529 70 │ url = '/txns'530 │ ~531 │532 └─ lib/elixir_lib/Payments.ex:70:11533534 warning: using single-quoted strings to represent charlists is deprecated.535 Use ~c"" if you indeed want a charlist or use "" instead.536 You may run "mix format --migrate" to change all single-quoted537 strings to use the ~c sigil and fix this warning.538 │539 71 │ parameters =parameters++ [ payment_method_type: "CARD", format: 'json' ]540 │ ~541 │542 └─ lib/elixir_lib/Payments.ex:71:68543544 warning: using single-quoted strings to represent charlists is deprecated.545 Use ~c"" if you indeed want a charlist or use "" instead.546 You may run "mix format --migrate" to change all single-quoted547 strings to use the ~c sigil and fix this warning.548 │549 159 │ method = 'POST'550 │ ~551 │552 └─ lib/elixir_lib/Payments.ex:159:14553554 warning: using single-quoted strings to represent charlists is deprecated.555 Use ~c"" if you indeed want a charlist or use "" instead.556 You may run "mix format --migrate" to change all single-quoted557 strings to use the ~c sigil and fix this warning.558 │559 160 │ url = '/txns'560 │ ~561 │562 └─ lib/elixir_lib/Payments.ex:160:11563564 warning: using single-quoted strings to represent charlists is deprecated.565 Use ~c"" if you indeed want a charlist or use "" instead.566 You may run "mix format --migrate" to change all single-quoted567 strings to use the ~c sigil and fix this warning.568 │569 161 │ parameters =parameters++ [ payment_method_type: "CARD", format: 'json' ]570 │ ~571 │572 └─ lib/elixir_lib/Payments.ex:161:68573574 warning: using single-quoted strings to represent charlists is deprecated.575 Use ~c"" if you indeed want a charlist or use "" instead.576 You may run "mix format --migrate" to change all single-quoted577 strings to use the ~c sigil and fix this warning.578 │579 292 │ method = 'POST'580 │ ~581 │582 └─ lib/elixir_lib/Payments.ex:292:14583584 warning: using single-quoted strings to represent charlists is deprecated.585 Use ~c"" if you indeed want a charlist or use "" instead.586 You may run "mix format --migrate" to change all single-quoted587 strings to use the ~c sigil and fix this warning.588 │589 293 │ url = '/txns'590 │ ~591 │592 └─ lib/elixir_lib/Payments.ex:293:11593594 warning: using single-quoted strings to represent charlists is deprecated.595 Use ~c"" if you indeed want a charlist or use "" instead.596 You may run "mix format --migrate" to change all single-quoted597 strings to use the ~c sigil and fix this warning.598 │599 294 │ parameters =parameters++ [ payment_method_type: "WALLET", format: 'json' ]600 │ ~601 │602 └─ lib/elixir_lib/Payments.ex:294:70603604 warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:605606 def text do607 """608 contents609 """610 end611612 Instead make sure the contents are indented as much as the heredoc closing:613614 def text do615 """616 contents617 """618 end619620 The current heredoc line is indented too little621 │622 28 │ Wallets can be listed only in the context of a Customer. This API will return list of linked wallets for a given customer.623 │ ~624 │625 └─ lib/elixir_lib/Wallets.ex:28:7626627 warning: found quoted keyword "merchant_id" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of ASCII letters, numbers, and underscores and not beginning with a number do not require quotes628 │629 8 │ options = Juspay.Cards.create(["merchant_id": "vasu2795", customer_id: "user_108", name_on_card: "Sindbad", card_exp_year: 2015, card_exp_month: 7, customer_email: "customer@mail.com",nickname: "Visa card", card_number: "4123567890123456"])630 │ ~631 │632 └─ lib/elixir_test.ex:8:37633634 warning: found quoted keyword "customer_id" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of ASCII letters, numbers, and underscores and not beginning with a number do not require quotes635 │636 15 │ options =Juspay.Cards.create([merchant_id: "vasu2795", "customer_id": "user_108", name_on_card: "Sindbad", card_exp_year: 2015, card_exp_month: 7, customer_email: "customer@mail.com",nickname: "Visa card", card_number: "4123567970123456"])637 │ ~638 │639 └─ lib/elixir_test.ex:15:60640641 warning: found quoted keyword "customer_id" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of ASCII letters, numbers, and underscores and not beginning with a number do not require quotes642 │643 20 │ cards_list = Juspay.Cards.list( %{"customer_id": "guest_user"})644 │ ~645 │646 └─ lib/elixir_test.ex:20:39647648 warning: variable "version" is unused (if the variable is not meant to be used, prefix it with an underscore)649 │650 15 │ {:ok,version} = Application.fetch_env(:juspay_api_library,:version)651 │ ~~~~~~~652 │653 └─ lib/elixir_lib/Juspay.ex:15:10: Juspay.request/3654655 warning: variable "parameters" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used)656 │657 49 │ parameters = Enum.into(parameters,[])658 │ ~~~~~~~~~~659 │660 └─ lib/elixir_lib/Juspay.ex:49:4: Juspay.check_params/1661662 warning: variable "fingerprint" is unused (if the variable is not meant to be used, prefix it with an underscore)663 │664 11 │ fingerprint = options["card_fingerprint"]665 │ ~~~~~~~~~~~666 │667 └─ lib/elixir_test.ex:11:5: ElixirTest.test_cards/0668669 error: undefined variable "invalidArgumentError"670 │671 47 │ raise invalidArgumentError672 │ ^^^^^^^^^^^^^^^^^^^^673 │674 └─ lib/elixir_lib/Juspay.ex:47:13: Juspay.check_params/1675676677== Compilation error in file lib/elixir_lib/Juspay.ex ==678** (CompileError) lib/elixir_lib/Juspay.ex: cannot compile module Juspay (errors have been logged)679680could not compile dependency :juspay_api_library, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile juspay_api_library --force", update it with "mix deps.update juspay_api_library" or clean it with "mix deps.clean juspay_api_library"