= [wiki:DeployerGuide Przewodnik wdrożeniowca] > eDokumentyApi = System eDokumenty udostępnia API (Application Programming Interface) dzięki któremu jesteśmy w stanie przeprowadzać podstawowe czynności bez konieczności logowania do systemu. Usługa jest zabezpieczona rozszerzeniem WSSecurity protokołu SOAP i wymaga podania w nagłówkach wywołania XML nazwy użytkownika i hasła. Hasło i użytkownik to specjalne dane, które należy wprowadzić do pliku config.inc pod kluczami: {{{ #!php }}} Wartości stałych w powyższym przykładzie konfiguracji są tylko danymi prezentacyjnymi i nie powinno się ich używać na produkcyjnej bazie. Stałe te mogą mieć dowolne wartości ważne jednak aby te same wartości podać przy wywołaniu usługi SOAP w kliencie. Usługa jest dostępna pod adresem: {{{ http://{host}:{port}/apps/edokumenty/classes/eDokumentyApi/EDokApiServer.php }}} Opcjonalnie od wersji 0.9.8 usługa jest dostępna pod skróconym adresem: {{{ http://{host}:{port}/eDokumentyApi.php }}} Wartość {host} oraz {port} należy zamienić odpowiednimi wartościami zgodnymi z konfiguracją serwera instalacyjnego systemu eDokumenty. Dodatkowo od wersji systemu 3.3 autentykacja nie wymaga nadpisania klienta Soap. Wystarczy do url z adresem serwisu dodać parametry GET w postaci {{{ #!php 'http://{host}:{port}eDokumentyApi.php?a1='.EDOK_API_LOGIN.'&a2='.md5(md5(EDOK_API_PASSWORD).'_SOAP_eDok_api').'&a3='.DEFAULT_ENTITY_SYMBOL.'', "uri" => "eDokumentyAPI", 'encoding'=>'UTF-8' ); ?> }}} Przykład wywołania serwisu oraz funkcji dodającej kontrahenta: {{{ #!php // Plik MyService.php umieszczony w apps/edokumenty. // MyService.php 'http://{host}:{port}eDokumentyApi.php', "uri" => "eDokumentyAPI", 'encoding'=>'UTF-8' ); // Dodatkowo od wersji 3.3 autentykacja nie wymaga nadpisania klienta Soap. Wystarczy do url z adresem serwisu dodać parametry GET w postaci // a1 - login, // a2 - hasło, // a3 - symbol jednostki /* $ops = array( 'location' => 'http://{host}:{port}eDokumentyApi.php?a1='.EDOK_API_LOGIN.'&a2='.md5(md5(EDOK_API_PASSWORD).'_SOAP_eDok_api').'&a3='.DEFAULT_ENTITY_SYMBOL.'', "uri" => "eDokumentyAPI", 'encoding'=>'UTF-8' ); // bezpośrednie wywołanie klienta Soap $client = new SoapClient(NULL, $ops); */ $client = new EDokApiClient(null, $ops); $client->setUser(EDOK_API_LOGIN); // ten sam co w config.inc $client->setPass(md5(EDOK_API_PASSWORD)); // to samo co w config.inc $header = new SoapHeader('eDokumentyAPI', 'entity_symbol', DEFAULT_ENTITY_SYMBOL); $client->__setSoapHeaders($header); // Tworzy kontakt $contid = NULL; try { $data = array( 'name_1' => 'SOAP TEST'.date('d H:m:s'), 'name_2' => 'SOAPTEST', 'nip___' => 1111111111, 'street' => 'Główna', 'symbol' => 'FGH99' ); $contid = $client->createContact($data); var_dump($contid); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } ?> }}} '''WAŻNE Hasło powinno być zakodowane przy użyciu funkcji md5'''. Dokumentacja poszczególnych funkcji, parametrów oraz przykłady wywołań dostępne są poniżej: {{{ http://{host}:{port}/apps/edokumenty/classes/eDokumentyApi/DokumentacjaAPI.txt }}} == Dokumentacja API == ''' Dokumenty ''' * [wiki:DeployerGuide/Others/eDokumentyApi/CreateDocument Utwórz nowy dokument] * [wiki:DeployerGuide/Others/eDokumentyApi/GrantUserAccessToDocument Dodaj pracownika do uprawnionych w dokumencie] * [wiki:DeployerGuide/Others/eDokumentyApi/GrantGroupAccessToDocument Dodaj grupę do uprawnionych w dokumencie] * [wiki:DeployerGuide/Others/eDokumentyApi/AddAttachmentToDocument Dodaj załącznik do dokumentu] * [wiki:DeployerGuide/Others/eDokumentyApi/SetFileMetaText Ustawia meta text załącznika (używany przy wyszukiwaniu)] * [wiki:DeployerGuide/Others/eDokumentyApi/CreateFKDayReport Tworzy nowy dokument typu raport dobowy z kasy] * [wiki:DeployerGuide/Others/eDokumentyApi/GetDocumentTypeData Pobierz dane dotyczące typu dokumentu na podstawie jednego z poniższych parametrów] ''' Produkty ''' * [wiki:DeployerGuide/Others/eDokumentyApi/CreateProduct Dodanie nowego produktu] * [wiki:DeployerGuide/Others/eDokumentyApi/UpdateProduct Aktualizacja produktu] * [wiki:DeployerGuide/Others/eDokumentyApi/DeleteProduct Usuwanie produktu] ''' Sprawy ''' * [wiki:DeployerGuide/Others/eDokumentyApi/CreateProcess Dodanie nowej sprawy] * [wiki:DeployerGuide/Others/eDokumentyApi/GetProcess Pobierz dane o sprawie] ''' Kontakty ''' * [wiki:DeployerGuide/Others/eDokumentyApi/CreateContact Dodanie nowego kontrahenta] * [wiki:DeployerGuide/Others/eDokumentyApi/GetContact Pobierz dane o kontrahencie] * [wiki:DeployerGuide/Others/eDokumentyApi/SearchContacts Wyszukanie kontrahentów w bazie] * [wiki:DeployerGuide/Others/eDokumentyApi/CreateContactPerson Dodanie nowej osoby kontaktowej] * [wiki:DeployerGuide/Others/eDokumentyApi/UpdateContactPerson Aktualizuj dane osoby kontaktowej] * [wiki:DeployerGuide/Others/eDokumentyApi/GetContactPersons Pobierz dane wszystkich osób kontaktowych wskazanego kontrahenta] ''' Zdarzenia ''' * [wiki:DeployerGuide/Others/eDokumentyApi/CreateEvent Dodaj nowe zdarzenie] * [wiki:DeployerGuide/Others/eDokumentyApi/GetEvent Pobierz dane o zdarzeniu] * [wiki:DeployerGuide/Others/eDokumentyApi/GetEvents Zwraca listę zdarzeń według zadanych parametrów] ''' Procedury ''' * [wiki:DeployerGuide/Others/eDokumentyApi/GetProceduresStages Zwraca dane etapów danej procedury] * [wiki:DeployerGuide/Others/eDokumentyApi/CompleteStage Wykonj dany etap procedury oraz aktywuj następny] ''' Inne ''' * [wiki:DeployerGuide/Others/eDokumentyApi/GetOrganizationUnit Pobierz dane dotyczące jednostki organizacyjnej na podstawie jednego z poniższych parametrów] * [wiki:DeployerGuide/Others/eDokumentyApi/SetFeatureValue Ustawienie cechy] {{{ #!php // Plik MyService.php umieszczony w apps/edokumenty. // MyService.php 'http://{host}:{port}eDokumentyApi.php', "uri" => "eDokumentyAPI", 'encoding'=>'UTF-8' ); // Dodatkowo od wersji 3.3 autentykacja nie wymaga nadpisania klienta Soap. Wystarczy do url z adresem serwisu dodać parametry GET w postaci // a1 - login, // a2 - hasło, // a3 - symbol jednostki /* $ops = array( 'location' => 'http://{host}:{port}eDokumentyApi.php?a1='.EDOK_API_LOGIN.'&a2='.md5(md5(EDOK_API_PASSWORD).'_SOAP_eDok_api').'&a3='.DEFAULT_ENTITY_SYMBOL.'', "uri" => "eDokumentyAPI", 'encoding'=>'UTF-8' ); // bezpośrednie wywołanie klienta Soap $client = new SoapClient(NULL, $ops); */ $client = new EDokApiClient(null, $ops); $client->setUser(EDOK_API_LOGIN); // ten sam co w config.inc $client->setPass(md5(EDOK_API_PASSWORD)); // to samo co w config.inc $header = new SoapHeader('eDokumentyAPI', 'entity_symbol', DEFAULT_ENTITY_SYMBOL); $client->__setSoapHeaders($header); // Tworzy kontakt $contid = NULL; try { $data = array( 'name_1' => 'SOAP TEST'.date('d H:m:s'), 'name_2' => 'SOAPTEST', 'nip___' => 1111111111, 'street' => 'Główna', 'symbol' => 'FGH99' ); $contid = $client->createContact($data); var_dump($contid); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } // Tworzy sprawę $prc_id = NULL; try { $data = array( 'dscrpt' => 'SOAP TEST '.date('d H:m:s'), 'briefcase_symbol' => 'DK.023', 'orunid' => 49, 'rspoid' => 54, 'fxtrid' => 60, 'prtpid' => 1, ); $prc_id = $client->createProcess($data); var_dump($prc_id); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } // tworzy dokument w sprawie if ($prc_id) { $doc_id = NULL; try { $data = array( 'dscrpt' => 'SOAP TEST '.date('d H:m:s'), 'prc_id' => $prc_id, 'dctpid' => 1, 'target' => 54, 'from_contact_symbol' => '12345', 'to_contact_symbol' => '54321', ); $doc_id = $client->createDocument($data); var_dump($doc_id); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } // dodaje załącznik do utworzonego dokumentu // o treści Testowy plik i nazwie dokument.txt if ($doc_id) { try { $filePath = './test.pdf'; $content = base64_encode(file_get_contents(filePath)); $dd = $client->addAttachmentToDocument($content, basename(filePath), $doc_id); var_dump($dd); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } } } // zwraca dane (tablica) o sprawie wszystko z tabeli processes gdzie prc_id = $prc_id try { $data = $client->getProcess($prc_id); var_dump($data); } catch(SoapFault $fault) { var_dump($fault); if ($fault->faultcode < 100) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } } ?> }}} W przypadku jeśli chcemy utworzyć własnego klienta SOAP dla innego języka programowania np. JAVA należy skontaktować się z działem oprogramowania celem wyszczególnienia specyfikacji takiego klienta.