README.md in papierkram_api_client-0.1.1 vs README.md in papierkram_api_client-0.1.2

- old
+ new

@@ -1,14 +1,16 @@ # Papierkram API Client<!-- omit in toc --> +[![Ruby](https://github.com/simonneutert/papierkram_api_client/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/simonneutert/papierkram_api_client/actions/workflows/main.yml) + Der erste ~~illegale~~ inoffizielle API Client in [Ruby](https://www.ruby-lang.org/de/) für [Papierkram.de](https://www.papierkram.de)! -<img src="pac.svg" alt="PAC Logo, Zunge leckt an Karl Klammer und zieht Daten aus dem Papierkram-Account wie Frosch die Fliege vom Teich" width="250"> +<img src="pac.svg" alt="PAC Logo, Zunge leckt an Karl Klammer und zieht Daten aus dem Papierkram-Account wie Frosch die Fliege vom Teich" width="300"> **WICHTIG** Dieses Projekt befindet sich im Entwicklungsstatus bis V1.0.0! Ich werde versuchen, die Änderungen so gut wie möglich zu dokumentieren. Wenn du einen Fehler findest, kannst du gerne einen Issue erstellen oder einen Pull Request mit einer Verbesserung erstellen. Ich freue mich über jede Hilfe! -> 🚨 **Bitte beachte**, dass DU UNBEDINGT die Requests/Responses (VCR Cassettes) von privaten Daten befreien musst, bevor du einen Pull Request erstellst oder einen Commit ins Web lädst! Ich werde die Cassettes auch nochmal durchgehen, bevor ich die Version 1.0.0 veröffentliche. ABER BITTE, BITTE, BITTE, mach das selbst auch! Ich habe keine Lust, dass irgendwelche Daten von dir oder deinen Kunden auf Github landen. Danke! 🙏 +> 🚨 **Bitte beachte**, dass DU UNBEDINGT die Requests/Responses der VCR Cassettes (die ausschliesslich bei Nutzung der Testsuite angelegt werden) von privaten Daten befreien musst, bevor du einen Pull Request erstellst oder einen Commit ins Web lädst! Ich werde die Cassettes auch nochmal durchgehen, bevor ich die Version 1.0.0 veröffentliche. ABER BITTE, BITTE, BITTE, mach das selbst auch! Ich habe keine Lust, dass irgendwelche Daten von dir oder deinen Kunden auf Github landen. Danke! 🙏 Check das [CHANGELOG.md](CHANGELOG.md), Baby! Hier geht es zu den offiziellen API Docs https://DEINE-SUBDOMAIN.papierkram.de/api/v1/api-docs/index.html @@ -45,10 +47,11 @@ - Einfach zu testen und zu erweitern. --- - [Installation](#installation) +- [Schnellstart](#schnellstart) - [API Client](#api-client) - [Initialisierung](#initialisierung) - [Banking::BankConnection (Bankverbindung)](#bankingbankconnection-bankverbindung) - [alle Bankverbindungen](#alle-bankverbindungen) - [eine Bankverbindung](#eine-bankverbindung) @@ -78,10 +81,11 @@ - [Project::Project (Projekt)](#projectproject-projekt) - [alle Projekte](#alle-projekte) - [ein Projekt](#ein-projekt) - [Tracker::Task (Aufgabe)](#trackertask-aufgabe) - [alle Aufgaben](#alle-aufgaben) + - [eine Aufgabe](#eine-aufgabe) - [Tracker::TimeEntry (Zeiteintrag)](#trackertimeentry-zeiteintrag) - [alle Zeiteinträge](#alle-zeiteinträge) - [einen Zeiteintrag](#einen-zeiteintrag) - [Verbleibendes Quota](#verbleibendes-quota) - [Helpers](#helpers) @@ -90,20 +94,44 @@ - [Contributing](#contributing) - [License](#license) ## Installation -TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org. - Install the gem and add to the application's Gemfile by executing: $ bundle add papierkram_api_client If bundler is not being used to manage dependencies, install the gem by executing: $ gem install papierkram_api_client +## Schnellstart + +1. Repository klonen +2. `bundle install` +3. `bin/console` + +```ruby +# client instanziieren + +# wenn ENV gesetzt sind (siehe Readme) +client = PapierkramApiClient::Client.new + +# ODER per Variablen +client = PapierkramApiClient::Client.new('subdomain', "YOUR-API-KEY"); + +# info Endpunkt abfragen +info_details = client.info.details +puts info_details.headers +puts info_details.body + +# erste Seite von "allen Rechnungen" abfragen +invoices = client.income_invoices.all(page: 1, page_size: 5) +puts invoices.headers +puts invoices.body +``` + ## API Client Der API Client ist die Hauptklasse für die Kommunikation mit der Papierkram API. Er wird mit den Zugangsdaten initialisiert. [Client](/lib/papierkram_api_client.rb) @@ -129,11 +157,11 @@ ### Banking::BankConnection (Bankverbindung) Der Endpunkt `/api/v1/banking/bank_connections` liefert Informationen über die Bankverbindungen. Die Informationen werden als `Faraday::Response` zurückgegeben. -[BankConnections](/lib/api/v1/banking/bank_connections.rb) +Siehe [BankConnections](/lib/api/v1/banking/bank_connections.rb) für mögliche Parameter. #### alle Bankverbindungen ```ruby bank_connections = client.banking.bank_connections.all @@ -198,11 +226,11 @@ ### Contact::Company (Unternehmen) Der Endpunkt `/api/v1/contact/companies` liefert Informationen über die Unternehmen. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Companies](/lib/api/v1/contact/companies.rb) +Siehe [Companies](/lib/api/v1/contact/companies.rb) für mögliche Parameter. #### alle Unternehmen ```ruby companies = client.contact.companies.all @@ -220,10 +248,12 @@ ### Contact::Company (Kontaktperson eines Unternehmens) Der Endpunkt `/api/v1/contact/companies/{company_id}` liefert Informationen über die Kontaktpersonen. Die Informationen werden als `Faraday::Response` zurückgegeben. +Siehe [CompaniesPersons](/lib/api/v1/contact/companies_persons.rb) für mögliche Parameter. + #### alle Kontaktpersonen (eines Unternehmens) ```ruby companies = client.contact.companies_persons.all(company_id: 1) puts companies.headers @@ -240,11 +270,11 @@ ### Expense::Voucher (Ausgabe Beleg) Der Endpunkt `/api/v1/expense/vouchers` liefert Informationen über die Ausgabe Belege. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Vouchers](/lib/api/v1/expense/vouchers.rb) +Siehe [Vouchers](/lib/api/v1/expense/vouchers.rb) für mögliche Parameter. #### alle Ausgabe Belege ```ruby vouchers = client.expense.vouchers.all @@ -261,19 +291,20 @@ ``` #### einen Ausgabe Beleg als PDF ```ruby -voucher = client.expense.vouchers.pdf(id: 1, pdf: true) -puts Api::V1::Helpers::PdfFromResponse.new(voucher).to_pdf # => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} +voucher = client.expense.vouchers.by(id: 1, pdf: true) +puts Api::V1::Helpers::PdfFromResponse.new(voucher).to_pdf +# => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} ``` ### Income::Estimate (Angebot) Der Endpunkt `/api/v1/income/estimates` liefert Informationen über die Angebote. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Estimates](/lib/api/v1/income/estimates.rb) +Siehe [Estimates](/lib/api/v1/income/estimates.rb) für mögliche Parameter. #### alle Angebote ```ruby estimates = client.income.estimates.all @@ -290,19 +321,20 @@ ``` #### ein Angebot als PDF ```ruby -estimate = client.income.estimates.pdf(id: 1, pdf: true) -puts Api::V1::Helpers::PdfFromResponse.new(estimate).to_pdf # => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} +estimate = client.income.estimates.by(id: 1, pdf: true) +puts Api::V1::Helpers::PdfFromResponse.new(estimate).to_pdf +# => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} ``` ### Income::Invoice (Rechnung) Der Endpunkt `/api/v1/income/invoices` liefert Informationen über die Rechnungen. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Invoices](/lib/api/v1/income/invoices.rb) +Siehe [Invoices](/lib/api/v1/income/invoices.rb) für mögliche Parameter. #### alle Rechnungen ```ruby invoices = client.income.invoices.all @@ -319,19 +351,20 @@ ``` #### eine Rechnung als PDF ```ruby -invoice = client.income.invoices.pdf(id: 1, pdf: true) -puts Api::V1::Helpers::PdfFromResponse.new(invoice).to_pdf # => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} +invoice = client.income.invoices.by(id: 1, pdf: true) +puts Api::V1::Helpers::PdfFromResponse.new(invoice).to_pdf +# => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'} ``` ### Income::Proposition (Waren / Dienstleistungen) Der Endpunkt `/api/v1/income/propositions` liefert Informationen über die Waren / Dienstleistungen. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Propositions](/lib/api/v1/income/propositions.rb) +Siehe [Propositions](/lib/api/v1/income/propositions.rb) für mögliche Parameter. #### alle Waren / Dienstleistungen ```ruby propositions = client.income.propositions.all @@ -349,11 +382,11 @@ ### Info Der Endpunkt `/api/v1/info` liefert Informationen über die API. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Info](/lib/api/v1/info.rb) +Siehe [Info](/lib/api/v1/info.rb). ```ruby info = client.info.details puts info.headers puts info.body @@ -361,11 +394,11 @@ ### Project::Project (Projekt) Der Endpunkt `/api/v1/projects` liefert Informationen über die Projekte. Die Informationen werden als `Faraday::Response` zurückgegeben. -[Projects](/lib/api/v1/projects.rb) +Siehe [Projects](/lib/api/v1/projects.rb) für mögliche Parameter. #### alle Projekte ```ruby projects = client.projects.all @@ -383,36 +416,46 @@ ### Tracker::Task (Aufgabe) Der Endpunkt `/api/v1/tracker/tasks` liefert Informationen über die Aufgaben. Die Informationen werden als `Faraday::Response` zurückgegeben. +Siehe [Tasks](/lib/api/v1/tracker/tasks.rb) für mögliche Parameter. + #### alle Aufgaben ```ruby -tasks = client.tracker.tasks.all +tasks = client.tracker_tasks.all puts tasks.headers puts tasks.body ``` +#### eine Aufgabe + +```ruby +task = client.tracker_tasks.by(id: 1) +puts task.headers +puts task.body +``` + ### Tracker::TimeEntry (Zeiteintrag) Der Endpunkt `/api/v1/tracker/time_entries` liefert Informationen über die Zeiteinträge. Die Informationen werden als `Faraday::Response` zurückgegeben. [TimeEntries](/lib/api/v1/tracker/time_entries.rb) #### alle Zeiteinträge ```ruby -time_entries = client.tracker.time_entries.all +time_entries = client.tracker_time_entries.all puts time_entries.headers puts time_entries.body ``` #### einen Zeiteintrag ```ruby -time_entry = client.tracker.time_entries.by(id: 1) +time_entry = client.tracker_time_entries.by(id: 1) puts time_entry.headers puts time_entry.body ``` ### Verbleibendes Quota @@ -442,10 +485,10 @@ Unterstützte Endpunkte sind beispielsweise: `Income::Estimate`, `Income::Invoice`, `Expense::Voucher`. [Api::V1::Helpers::PdfFromResponse](/lib/api/v1/helpers/pdf_from_response.rb) ```ruby -response = client.income.invoices.by(id: 1, pdf: true) +response = client.income_invoices.by(id: 1, pdf: true) pdf = Api::V1::Helpers::PdfFromResponse.new(response).to_pdf("Rechnung Nummer XXX") puts pdf ``` ```ruby