Dokumentace API

BillApp.cz můžete využít ve svých vlastních aplikacích!


Obsah

  1. Faktury
  2. Výdaje
  3. Účty
  4. Kontakty
  5. Položky
  6. Měny
  7. ActiveResource

Úvod

BillApp.cz Vám umožňuje přistupovat k datům uvnitř Vašeho účtu pomocí API. Naše API následuje REST konvenci a provádí přenos dat pomocí HTTP protokolu. Všechna komunikace probíha pouze přes SSL (tedy HTTPS), pokud se pokusíte připojit bez SSL budete přesměrováni.

Autorizace

Autorizace probíha přes HTTP Basic Authentication skrze standardní účet ve Vaší agendě, k použití API není potřeba vytvářet žádné další uživatele.

Formáty

BillApp.cz API dokáže pracovat jak s XML formátem, tak s JSON formátem. Ve zbytku této dokumentace se bude pracovat s XML formátem.

HTTP návratové kódy

BillApp.cz používá návratové kódy HTTP protokolu k informování o výsledku požadované akce. Stavové kódy jsou následující:

200OK Požadavek byl úspěšný.
201Created Objekt byl vytvořen.
404Not Found Objekt nebyl nalezen.
422Unprocessable entity Objekt nebyl vytvořen kvůli chybnému vstupu. Chyba nebo chyby jsou vráceny v XML výstupu.
500Internal Server Error Vnitřní chyba při zpracování požadavku.

Příklad

Funkčnost API si můžete ověrit například pomocí nástroje curl:

curl -H 'Accept: application/xml' \
     -H 'Content-Type: application/xml' \
     -u vas_email:vase_heslo  https://vaseagenda.billapp.cz/invoices.xml

1. Faktury

Detail faktury

Požadavek: GET /invoices/ID.xml

Odpověd:

<invoice>
  <id type="integer">ID</id>
  <number>Číslo faktury</number>
  <account-id type="integer">ID účtu</account-id>
  <client-id type="integer">ID klienta</client-id>
  <due-date type="date">Datum splatnosti</due-date>
  <issue-date type="date">Datum vystavení</issue-date>
  <paid-on type="date">Datum uzavření (zaplacení) faktury</paid-on>
  <notes>Poznámky</notes>
  <status>Stav faktury</status>
  <tax-amount type="decimal">Celková částka DPH</tax-amount>
  <total-amount type="decimal">Celková částka faktury</total-amount>
  <created-at type="datetime">Datum vytvoření</created-at>
  <updated-at type="datetime">Datum poslední úpravy faktury</updated-at>
  <currency>
    <code>Kód měny</code>
    <name>Název měny</name>
  </currency>
  <lines type="array">
    <line type="InvoiceLine">
      <description>Popis polozky</description>
      <quantity type="integer">Počet</quantity>
      <unit-price type="decimal">Cena za jednotku</unit-price>
      <vat type="decimal">DPH</vat>
      <unit-type>Typ položky</unit-type>
    </line>
  </lines>
</invoice>

Odeslání faktury emailem

Požadavek: POST /invoices/ID/emails.xml

Data požadavku:

<invoice-email>
  <to>Příjemce</to>
  <attach-pdf>Připojit PDF soubor (true|false)</attach-pdf>
  <cc-to-me>Poslat kopii uživateli</cc-to-me>
  <reply-to></reply-to>
  <subject>Předmět emailu</subject>
  <body>Tělo emailu</body>
</invoice-email>

Platba faktury

Požadavek: POST /transactions.xml

Data požadavku:

<transaction>
  <bill-type>Invoice</bill-type>
  <bill-id>ID faktury</bill-id>
  <to-account-id>ID účtu, na kterém proběhla platba</to-account-id>
  <date>Datum platby</date>
  <amount>Zaplacená částka</amount>
  <notes>Poznámky</notes>
</transaction>

Historie faktury

Požadavek: GET /invoices/ID/history.xml

Odpověd:

<events type="array">
  <event>
    <created-at type="datetime">Čas</created-at>
    <description>Událost</description>
  </event>
  ...
</events>

Seznam všech faktur

Požadavek: GET /invoices.xml

Odpověd:

<invoices>
  <invoice>
    ...
  </invoice>
  ...
</invoices>

Vytvoření nové faktury

Požadavek: POST /invoices.xml

Data požadavku:

<invoice>
  <number>Číslo faktury</number> Povinné
  <account-id>ID účtu</account-id> Povinné
  <client-id>ID klienta</client-id>
  <due-date>Datum splatnosti</due-date> Povinné
  <issue-date>Datum vystavení</issue-date> Povinné
  <notes>Poznámky</notes>
  <show-logo>Zobrazit logo na faktuře?</show-logo>
  <lines-attributes>
    <line>
      <description>Popis položky</description> Povinné
      <quantity>Počet</quantity> Povinné
      <unit-price>Cena za jednotku</unit-price> Povinné
      <vat>DPH</vat>
      <unit-type>Typ položky</unit-type> Povinné
    </line>
  </lines-attributes>
</invoice>

Úprava existující faktury

Požadavek: PUT /invoices/ID.xml

2. Výdaje

Detail výdaje

Požadavek: GET /expenses/ID.xml

Odpověd:

<expense>
  <id type="integer">ID</id>
  <number>Číslo výdaje</number>
  <account-id type="integer">ID účtu</account-id>
  <due-date type="date">Datum splatnosti</due-date>
  <issue-date type="date">Datum vystavení</issue-date>
  <notes>Poznámky</notes>
  <paid-on type="date">Datum uzavření (zaplacení) výdaje</paid-on>
  <status>Stav</status>
  <total-amount type="decimal">Celková částka</total-amount>
  <vendor-id type="integer">ID dodavatele</vendor-id>
  <created-at type="datetime">Datum vytvoření</created-at>
  <updated-at type="datetime">Datum poslední úpravy</updated-at>
  <currency>
    <code>Kód měny</code>
    <name>Název měny</name>
  </currency>
</expense>

Historie výdaje

Požadavek: GET /expenses/ID/history.xml

Odpověd:

<events type="array">
  <event>
    <created-at type="datetime">Čas</created-at>
    <description>Událost</description>
  </event>
  ...
</events>

Seznam všech výdajů

Požadavek: GET /expenses.xml

Odpověd:

<expenses type="array">
  <expense>
    ...
    <currency>
    ...
    </currency>
  </expense>
  ...
</expenses>

Vytvoření nového výdaje

Požadavek: POST /expenses.xml

Data požadavku:

<expense>
  <number>Číslo výdaje</number> Povinné
  <issue-date>Datum vystavení</issue-date> Povinné
  <due-date>Datum splatnosti</due-date> Povinné
  <total-amount>Celková částka</total-amount> Povinné
  <tax-amount>Částka DPH</tax-amount>
  <notes>Poznámky</notes>
  <account-id>ID účtu</account-id>
  <vendor-id>ID dodavatele</vendor-id>
</expense>

Úprava existujícího výdaje

Požadavek: PUT /expenses/ID.xml

3. Účty

Detail účtu

Požadavek: GET /accounts/ID.xml

Odpověd:

<account>
  <balance type="decimal">Bilance</balance>
  <id type="integer">ID</id>
  <kind>Typ účtu</kind>
  <name>Název účtu</name>
  <created-at type="datetime">Datum vytvoření</created-at>
  <updated-at type="datetime">Datum poslední úpravy</updated-at>
  <currency>
    <code>Kód měny</code>
    <name>Název měny</name>
  </currency>
  <bank-account>
    <bank-name>Název banky</bank-name>
    <iban>IBAN účtu</iban>
    <number>Číslo účtu</number>
  </bank-account>
</account>

Seznam všech účtů

Požadavek: GET /accounts.xml

Odpověd:

<accounts type="array">
  <account>
    ...
  </account>
  ...
</accounts>

Vytvoření nového účtu

Požadavek: POST /accounts.xml

Data požadavku:

<account>
  <kind>Typ účtu (bank|cash)</kind> Povinné
  <name>Název účtu</name> Povinné
  <currency-id>ID měny</currency-id>
  <bank-account-attributes>
    <bank-name>Název banky</bank-name>
    <iban>IBAN účtu</iban>
    <number>Číslo účtu</number>
  </bank-account-attributes>
</account>

Úprava existujícího účtu

Požadavek: PUT /accounts/ID.xml

4. Kontakty

Detail kontaktu

Požadavek: GET /contact/ID.xml

Odpověd:

<contact>
  <id type="integer">ID</id>
  <full-name>Jméno</full-name>
  <company>Název společnosti</company>
  <email>Email</email>
  <web>Web</web>
  <phone-number>Telefonní číslo</phone-number>
  <id-number></id-number>
  <vat-number>DIČ</vat-number>
  <notes>Poznámky</notes>
  <street>Ulice</street>
  <city>Město</city>
  <postcode>PSČ</postcode>
  <country>Země</country>
  <created-at type="datetime">Datum vytvoření</created-at>
  <updated-at type="datetime">Datum poslední úpravy</updated-at>
</contact>

Seznam všech kontaktů

Požadavek: GET /contacts.xml

Odpověd:

<contacts type="array">
  <contact>
    ...
  </contact>
  ...
</contacts>

Vytvoření nového kontaktu

Požadavek: POST /contacts.xml

Data požadavku:

<contact>
  <company>Název společnosti</company>
  <full-name>Jméno</full-name>
  <email>Email</email>
  <web>Web</web>
  <phone-number>Telefonní číslo</phone-number>
  <id-number></id-number>
  <vat-number>DIČ</vat-number>
  <notes>Poznámky</notes>
  <city>Město</city>
  <street>Ulice</street>
  <postcode>PSČ</postcode>
  <country>Země</country>
</contact>

Úprava existujícího kontaktu

Požadavek: PUT /contacts/ID.xml

5. Položky

Detail položky

Požadavek: GET /items/ID.xml

Odpověd:

<item>
  <id type="integer">ID</id>
  <name>Název</name>
  <description>Popis</description>
  <price type="decimal">400.0</price>
  <unit-type>Typ položky</unit-type>
  <vat type="decimal">Sazba DPH</vat>
  <created-at type="datetime">Datum vytvoření</created-at>
  <updated-at type="datetime">Datum poslední úpravy</updated-at>
  <category>
    <name>Název kategorie</name>
  </category>
</item>

Seznam všech položek

Požadavek: GET /items.xml

Odpověd:

<items type="array">
  <item>
    ...
  </item>
  ...
</items>

Vytvoření nové položky

Požadavek: POST /items.xml

Data požadavku:

<item>
  <name>Název</name>  Povinné
  <description>Popis</description>
  <price>Cena</price>  Povinné
  <unit-type>Typ položky</unit-type> Povinné
  <vat>Sazba DPH</vat>
  <category-id>ID kategorie</category-id>
</item>

Úprava existující položky

Požadavek: PUT /items/ID.xml

7. Měny

Seznam všech měn

Požadavek: GET /currencies.xml

Odpověd:

<currencies type="array">
  <currency>
    ...
  </currency>
  ...
</currencies>

8. ActiveResource

Pokud používáte Ruby On Rails, doporučujeme Vám použít knihovnu ActiveResource. Příklad použití:

class BillApp::Resource < ActiveResource::Base
  self.site     ="https://vaseagenda.billapp.cz"
  self.user     = "vasejmeno@email.cz"
  self.password = "vaseheslo"
end

class BillApp::Account < BillApp::Resource
  self.element_name = "account"
end

class BillApp::Contact < BillApp::Resource
  self.element_name = "contact"
end

class BillApp::Invoice < BillApp::Resource
  self.element_name = "invoice"
end