package Ġbr . com . z up . integration . bcb Ċ Ċ import Ġbr . com . z up . pix .* Ċ import Ġbr . com . z up . pix . car rega . Ch ave Pix Info Ċ import Ġio . mic ronaut . http . HttpResponse Ċ import Ġio . mic ronaut . http . MediaType Ċ import Ġio . mic ronaut . http . annotation .* Ċ import Ġio . mic ronaut . http . client . annotation . Client Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ Client ("\ ${ bcb . pix . keys }") Ċ interface ĠB anco Central Client Pix Ġ{ ĊĊĠĠĠ Ġ@ Post ĊĠĠĠ Ġ@ Cons umes ( MediaType . APPLICATION _ XML ) ĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ XML ) ĊĠĠĠ Ġfun Ġregist rar (@ Body Ġch ave Pix Request : ĠCreate Pix Key Request ): ĠHttpResponse < Create Pix Key Response > ĊĊĠĠĠ Ġ@ Delete ("/ { key }") ĊĠĠĠ Ġ@ Cons umes ( MediaType . APPLICATION _ XML ) ĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ XML ) ĊĠĠĠ Ġfun Ġremo ver (@ PathVariable Ġkey : ĠString , Ġ@ Body Ġrequest : ĠDelete Pix Key Request ): ĠHttpResponse < Delete Pix Key Response > ĊĊĠĠĠ Ġ@ Get ("/ { key }", Ġconsume s Ġ= Ġ[ MediaType . APPLICATION _ XML ], Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ XML ]) ĊĠĠĠ Ġfun Ġfind ByKey (@ PathVariable Ġkey : ĠString ): ĠHttpResponse < Pix Key Details Response > ĊĊ Ċ } Ċ Ċ data Ġclass ĠDelete Pix Key Response ( ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġparticipant : ĠString , ĊĠĠĠ Ġval Ġdelete At : ĠLocalDateTime ? Ċ ) Ċ Ċ data Ġclass ĠDelete Pix Key Request ( ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġparticipant : ĠString Ġ= ĠCont a Associ ada . IT AU _ UN IB AN CO _ IS PB Ċ ) Ċ Ċ data Ġclass ĠCreate Pix Key Response ( ĊĠĠĠ Ġval Ġkey Type : ĠP ix KeyType , ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġbank Account : ĠBank Account , ĊĠĠĠ Ġval Ġowner : ĠOwner , ĊĠĠĠ Ġval ĠcreatedAt : ĠLocalDateTime ? Ċ ) Ċ Ċ data Ġclass ĠCreate Pix Key Request ( ĊĠĠĠ Ġval Ġkey Type : ĠP ix KeyType , ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġbank Account : ĠBank Account , ĊĠĠĠ Ġval Ġowner : ĠOwner Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( ch ave : ĠCh ave Pix ): ĠCreate Pix Key Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCreate Pix Key Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Type Ġ= ĠP ix KeyType . by ( ch ave . tipo ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġch ave . ch ave Ġ!! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbank Account Ġ= ĠBank Account ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= ĠCont a Associ ada . IT AU _ UN IB AN CO _ IS PB , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġch ave . cont a . ag encia , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Number Ġ= Ġch ave . cont a . numero Cont a , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type Ġ= ĠBank Account . Account Type . by ( ch ave . tipo Cont a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Ġ= ĠOwner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠOwner . Owner Type . NAT UR AL _ PERSON , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġch ave . cont a . nome T it ular , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtax Id Number Ġ= Ġch ave . cont a . cpf T it ular ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠP ix Key Details Response ( ĊĠĠĠ Ġval Ġkey Type : ĠP ix KeyType , ĊĠĠĠ Ġval Ġkey : ĠString , ĊĠĠĠ Ġval Ġbank Account : ĠBank Account , ĊĠĠĠ Ġval Ġowner : ĠOwner , ĊĠĠĠ Ġval ĠcreatedAt : ĠLocalDateTime Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Model (): ĠCh ave Pix Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCh ave Pix Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ġ= Ġkey Type . domain Type !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= Ġwhen Ġ( bank Account . account Type ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBank Account . Account Type . C ACC Ġ-> ĠTipo De Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBank Account . Account Type . SV GS Ġ-> ĠTipo De Cont a . CONT A _ PO UP AN CA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconta Ġ= ĠCont a Associ ada ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinst itu icao Ġ= ĠInst itu ico es . nome ( bank Account . participant ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnome T it ular Ġ= Ġowner . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc pf T it ular Ġ= Ġowner . tax Id Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġag encia Ġ= Ġbank Account . branch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnumero Cont a Ġ= Ġbank Account . account Number ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ enum Ġclass ĠP ix KeyType ( val Ġdomain Type : ĠTipo De Ch ave ?) Ġ{ ĊĠĠĠ ĠC PF ( Tipo De Ch ave . CP F ), ĊĠĠĠ ĠCN PJ ( null ), ĊĠĠĠ ĠPH ONE ( Tipo De Ch ave . CEL ULAR ), ĊĠĠĠ ĠE MAIL ( Tipo De Ch ave . EMAIL ), ĊĠĠĠ ĠR AN DOM ( Tipo De Ch ave . ALE ATOR IA ); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapping Ġ= ĠP ix KeyType . values (). associate By ( Pix KeyType :: domain Type ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġby ( domain Type : ĠTipo De Ch ave ): ĠP ix KeyType Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmapping [ domain Type ] Ġ?: Ġthrow ĠIllegalArgumentException (" Pix KeyType Ġinvalid ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ data Ġclass ĠBank Account ( ĊĠĠĠ Ġval Ġparticipant : ĠString , ĊĠĠĠ Ġval Ġbranch : ĠString , ĊĠĠĠ Ġval Ġaccount Number : ĠString , ĊĠĠĠ Ġval Ġaccount Type : ĠAccount Type Ċ Ċ ) Ġ{ ĊĠĠĠ Ġenum Ġclass ĠAccount Type Ġ{ ĊĠĠĠĠĠĠĠ ĠC ACC , ĊĠĠĠĠĠĠĠ ĠSV GS ; ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġby ( domain Type : ĠTipo De Cont a ): ĠAccount Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( domain Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTipo De Cont a . CONT A _ COR REN TE Ġ-> ĠC ACC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTipo De Cont a . CONT A _ PO UP AN CA Ġ-> ĠSV GS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠOwner ( ĊĠĠĠ Ġval Ġtype : ĠOwner Type , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġtax Id Number : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġenum Ġclass ĠOwner Type Ġ{ ĊĠĠĠĠĠĠĠ ĠN ATUR AL _ PERSON , ĊĠĠĠĠĠĠĠ ĠLE G AL _ PERSON ĊĠĠĠ Ġ} Ċ }