BIG API jest oparte o technologię Web Service i wykorzystuje protokół SOAP oraz format XML. BIG API zostało skonstruowane w sposób umożliwiający wykorzystywanie wielu protokołów definiujących struktury komunikatów wykorzystywanych w ramach komunikacji między BIG IM a klientami.
Każda operacja BIG API zawiera w komunikacie wejściowym i wyjściowym element "data" typu znakowego (xs:string).
W komunikacie wejściowym system subskrybenta powinien w elemencie data przekazać komunikat w formacie xml zgodny z definicją odpowiedniego elementu w specyfikacji XSD wybranego protokołu. Dla operacji [nazwaOperacji], należy przekazać komunikat zgodny z definicją elementu [nazwaOperacji]Request.
Na przykad dla operacji updateEconomicInformation w elemencie data żądania przekazywany jest komunikat zgodny z definicją updateEconomicInformationRequest (w tagu <![CDATA[ (...) ]]>).
Dla protokołu bimo element updateEconomicInformationRequest jest zdefiniowany w pliku bimoL.v1.xsd.
Defnicja komunikatu wejściowego
<xs:complexType name="RequestMessage"> <xs:sequence> <xs:element name="requestId" type="tns:messageId"> <xs:element name="requestDateTime" type="xs:dateTime"> <xs:choice> <xs:element name="protocol" type="tns:protocolEnum"> <xs:element name="customProtocol" type="xs:string"> </xs:choice> <xs:element name="testDataMarker" type="xs:boolean"> <xs:element name="data" type="xs:string"> </xs:sequence> </xs:complexType>
Przykład komunikatu wejściowego
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ba="http://api.big.pl/bigApi/v1/types"> <soapenv:Header> <ba:credentials> <user>USERTEST</user> <password>Test</password> </ba:credentials> </soapenv:Header> <soapenv:Body> <ba:updateEconomicInformationRequest> <requestId>reqid1001</requestId> <requestDateTime>2018-03-15T10:00:00</requestDateTime> <protocol>bimo v1</protocol> <testDataMarker>false</testDataMarker> <data> <![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <bl:updateEconomicInformationRequest xmlns:bc="http://api.big.pl/bimo/v1" xmlns:bl="http://api.big.pl/bimoL/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.big.pl/bimoL/v1 bimoL.v1.xsd "> <client> <clientId>TEST</clientId> <unitId>TEST</unitId> </client> <repeatedRequestMarker>true</repeatedRequestMarker> <validityDateTime>2018-03-15T10:00:00</validityDateTime> <addInformation xsi:bae="bc:NegativeEconomicInformation"> <id>TESTIG1001</id> <blockade status="false" /> <providerRestrictedMarker>false</providerRestrictedMarker> <debtor xsi:type="bc:NaturalPerson"> <concatenatedName>Adam Test</concatenatedName> <identity> <pesel>43071554915</pesel> <document> <id>AUH810628</id> <type>idCard</type> </document> </identity> <residenceAddress xsi:type="bc:SplitAddress"> <country>POL</country> <postcode>01-230</postcode> <city>Warszawa</city> <street>Skierniewicka</street> <houselocalNumber>11</houselocalNumber> </residenceAddress> </debtor> <liability xsi:type="bc:OverdueFinancialLiability"> <id>ZOBOWIAZANIE1001</id> <currency>PLN</currency> <amount>900</amount> <overdueAmount>600</overdueAmount> <dueDate>2017-06-01</dueDate> <paymentCallDate>2017-05-01</paymentCallDate> <type>bill</type> <contractType>bank</contractType> </liability> </addInformation> </bl:updateEconomicInformationRequest> ]]> </data> </ba:updateEconomicInformationRequest> </soapenv:Body> </soapenv:Envelope>
W komunikacie wyjściowym SIBIG w elemencie data przekazuje komunikat xml zgodny z definicją odpowiedniego elementu w specyfikacji XSD protokołu wybranego przez subskrybenta w żądaniu. Dla operacji [nazwaOperacji], należy przekazać komunikat zgodny z definicją elementu [nazwaOperacji]Response.
Na przykad dla operacji getReport w elemencie data odpowiedzi przekazywany jest komunikat zgodny z definicją getReportResponse (w tagu <![CDATA[ (...) ]]>).
Dla protokołu bimo element getReportResponse jest zdefiniowany w pliku bimoR.v1.xsd.
Defnicja komunikatu wyjściowego
<xs:complexType name="ResponseMessage"> <xs:sequence> <xs:element name="responseId" type="tns:messageId"/> <xs:element name="responseDateTime" type="xs:dateTime"/> <xs:element name="requestId" type="tns:messageId"/> <xs:element name="requestDateTime" type="xs:dateTime"/> <xs:element name="user" type="xs:string"/> <xs:choice> <xs:element name="protocol" type="tns:protocolEnum"/> <xs:element name="customProtocol" type="xs:string"/> </xs:choice> <xs:element name="data" type="xs:string"/> </xs:sequence> </xs:complexType>
Przykład komunikatu wyjściowego
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ba:updateEconomicInformationResponse xmlns:ba="http://api.big.pl/bigApi/v1/types"> <responseId>01ae5e806e1c498582a321444b1e91fe</responseId> <responseDateTime>2018-03-15T12:56:37.525+01:00</responseDateTime> <requestId>reqid1001</requestId> <requestDateTime>2018-03-15T10:00:00</requestDateTime> <user>TEST</user> <protocol>bimo v1</protocol> <data> <![CDATA[ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <bl:updateResponse xsi:type="bl:UpdateEconomicInformationResponse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bl="http://api.big.pl/bimoL/v1" xmlns:bc="http://api.big.pl/bimo/v1"> <success> <operationType>addInformation</operationType> <result>ok</result> <updatedInformation> <economicInformation xsi:type="bc:NegativeEconomicInformation"> <id idType="internalId">7352312424558197065636</id> <id idType="externalId">TESTIG1001</id> <blockade status="false"/> <providerRestrictedMarker>false</providerRestrictedMarker> <debtor xsi:type="bc:NaturalPerson"> <splitName> <forename>ADAM</forename> <surname>TEST</surname> </splitName> <identity> <pesel>43071554915</pesel> <document> <id>AUH810628</id> <type>idCard</type> </document> </identity> <residenceAddress xsi:type="bc:SplitAddress"> <country>POL</country> <postcode>01-230</postcode> <city>Warszawa</city> <street>Skierniewicka</street> <houselocalNumber>11</houselocalNumber> </residenceAddress> </debtor> <liability xsi:type="bc:OverdueFinancialLiability"> <id idType="internalId">4273537</id> <id idType="externalId">ZOBOWIAZANIE1001</id> <currency>PLN</currency> <amount>900.00</amount> <overdueAmount>600.00</overdueAmount> <objections status="notDisputed"/> <limitation status="notExpired"/> <dueDate>2017-06-01</dueDate> <paymentCallDate>2017-05-01</paymentCallDate> <type>bill</type> <contractType>bank</contractType> </liability> </economicInformation> <validityDateTime>2018-03-15T10:00:00</validityDateTime> <peselBlockade status="false"/> <transferedMarker>false</transferedMarker> <takedOverMarker>false</takedOverMarker> </updatedInformation> </success> </bl:updateResponse> ]]> </data> </ba:updateEconomicInformationResponse> </soapenv:Body> </soapenv:Envelope>