"Aanbetaling voor :QUARTER+1" >> "Aanbetaling voor Q2"
',
- 'recurring_quotes' => 'Herhalende offertes',
+ 'recurring_quotes' => 'Terugkerende offertes',
'in_total_revenue' => 'totale inkomsten',
- 'billed_client' => 'Gefactureerde klant',
- 'billed_clients' => 'Gefactureerde klanten',
+ 'billed_client' => 'gefactureerde klant',
+ 'billed_clients' => 'gefactureerde klanten',
'active_client' => 'Actieve klant',
'active_clients' => 'Actieve klanten',
'invoices_past_due' => 'Vervallen facturen',
@@ -159,7 +159,7 @@ $lang = array(
'date' => 'Datum',
'message' => 'Bericht',
'adjustment' => 'Aanpassing',
- 'are_you_sure' => 'Weet je het zeker?',
+ 'are_you_sure' => 'Weet u het zeker?',
'payment_type_id' => 'Betalingswijze',
'amount' => 'Bedrag',
'work_email' => 'E-mailadres',
@@ -171,8 +171,8 @@ $lang = array(
'localization' => 'Lokalisatie',
'remove_logo' => 'Logo verwijderen',
'logo_help' => 'Ondersteund: JPEG, GIF en PNG',
- 'payment_gateway' => 'Betalingsgateway',
- 'gateway_id' => 'Gateway',
+ 'payment_gateway' => 'Betaalprovider',
+ 'gateway_id' => 'Betaalprovider',
'email_notifications' => 'E-mailmeldingen',
'email_viewed' => 'E-mail mij wanneer een factuur is bekeken',
'email_paid' => 'E-mail mij wanneer een factuur is betaald',
@@ -199,7 +199,7 @@ $lang = array(
'removed_logo' => 'Het logo is verwijderd',
'sent_message' => 'Het bericht is verzonden',
'invoice_error' => 'Selecteer een klant en verbeter eventuele fouten',
- 'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!',
+ 'limit_clients' => 'U heeft de klantlimiet van :count voor gratis accounts bereikt. Gefeliciteerd met uw succes!',
'payment_error' => 'Er was een fout bij het verwerken van de betaling. Probeer het later opnieuw.',
'registration_required' => 'Registratie verplicht',
'confirmation_required' => 'Bevestig het e-mailadres, :link om de bevestigingsmail opnieuw te ontvangen.',
@@ -224,11 +224,11 @@ $lang = array(
'deleted_payment' => 'De betaling is verwijderd',
'deleted_payments' => 'Succesvol :count betalingen verwijderd',
'applied_payment' => 'De betaling is toegepast',
- 'created_credit' => 'De creditnota is aangemaakt',
- 'archived_credit' => 'De creditnota is gearchiveerd',
- 'archived_credits' => 'Succesvol :count creditnota\'s gearchiveerd',
- 'deleted_credit' => 'De creditnota is verwijderd',
- 'deleted_credits' => 'Succesvol :count creditnota\'s verwijderd',
+ 'created_credit' => 'De creditfactuur is aangemaakt',
+ 'archived_credit' => 'De creditfactuur is gearchiveerd',
+ 'archived_credits' => 'Succesvol :count creditfacturen gearchiveerd',
+ 'deleted_credit' => 'De creditfactuur is verwijderd',
+ 'deleted_credits' => 'Succesvol :count creditfacturen verwijderd',
'imported_file' => 'Het bestand is geïmporteerd',
'updated_vendor' => 'De leverancier is gewijzigd',
'created_vendor' => 'De leverancier is aangemaakt',
@@ -268,10 +268,10 @@ $lang = array(
'email_taken' => 'Dit e-mailadres is al geregistreerd',
'working' => 'Werkend',
'success' => 'Succes',
- 'success_message' => 'Je bent nu geregistreerd! Klik op de link in de zojuist ontvangen bevestigingsmail om je e-mailadres te bevestigen.',
+ 'success_message' => 'U bent nu geregistreerd! Klik op de link in de zojuist ontvangen bevestigingsmail om uw e-mailadres te bevestigen.',
'erase_data' => 'Dit account is niet geregistreerd, de opgegeven data zal permanent worden verwijderd.',
'password' => 'Wachtwoord',
- 'pro_plan_product' => 'Pro Plan',
+ 'pro_plan_product' => 'Pro-abonnement',
'unsaved_changes' => 'Er zijn wijzigingen aangebracht die nog niet zijn opgeslagen',
'custom_fields' => 'Aangepaste velden',
'company_fields' => 'Bedrijfsvelden',
@@ -294,15 +294,15 @@ $lang = array(
'updated_product' => 'Het product is gewijzigd',
'created_product' => 'Het product is aangemaakt',
'archived_product' => 'Het product is gearchiveerd',
- 'pro_plan_custom_fields' => ':link om aangepaste velden in te schakelen door het Pro Plan te nemen',
+ 'pro_plan_custom_fields' => ':link om aangepaste velden in te schakelen door het Pro-abonnement te nemen',
'advanced_settings' => 'Geavanceerde instellingen',
- 'pro_plan_advanced_settings' => ':link om de geavanceerde instellingen te activeren door het Pro Plan te nemen',
+ 'pro_plan_advanced_settings' => ':link om de geavanceerde instellingen te activeren door het Pro-abonnement te nemen',
'invoice_design' => 'Factuurontwerp',
'specify_colors' => 'Kies kleuren',
'specify_colors_label' => 'Kies de kleuren die in de factuur gebruikt worden',
'chart_builder' => 'Grafiekbouwer',
'ninja_email_footer' => 'Gemaakt door :site | Aanmaken. Verzenden. Betaald krijgen.',
- 'go_pro' => 'Go Pro',
+ 'go_pro' => 'Ga voor het Pro-abonnement',
'quote' => 'Offerte',
'quotes' => 'Offertes',
'quote_number' => 'Offertenummer',
@@ -344,7 +344,7 @@ $lang = array(
'invoice_fields' => 'Factuurvelden',
'invoice_options' => 'Factuuropties',
'hide_paid_to_date' => 'Verberg "Reeds betaald"',
- 'hide_paid_to_date_help' => 'Toon alleen het "Reeds betaald" gebied op je facturen als er een betaling gemaakt is.',
+ 'hide_paid_to_date_help' => 'Toon alleen het "Reeds betaald" gebied op uw facturen als er een betaling gemaakt is.',
'charge_taxes' => 'BTW berekenen',
'user_management' => 'Gebruikersbeheer',
'add_user' => 'Nieuwe gebruiker',
@@ -381,33 +381,33 @@ $lang = array(
'mark_sent' => 'Markeer als verzonden',
'more_designs' => 'Meer ontwerpen',
'more_designs_title' => 'Aanvullende factuurontwerpen',
- 'more_designs_cloud_header' => 'Neem Pro Plan voor meer factuurontwerpen',
+ 'more_designs_cloud_header' => 'Neem het Pro-abonnement voor meer factuurontwerpen',
'more_designs_cloud_text' => '',
'more_designs_self_host_text' => '',
'buy' => 'Kopen',
'bought_designs' => 'Aanvullende factuurontwerpen zijn toegevoegd',
'sent' => 'Verzonden',
'vat_number' => 'BTW-nummer',
- 'payment_title' => 'Geef het betalingsadres en de creditcardgegevens op',
+ 'payment_title' => 'Geef het factuuradres en de creditcardgegevens op',
'payment_cvv' => '*Dit is het cijfer van 3-4 tekens op de achterkant van de creditcard',
- 'payment_footer1' => '*Betalingsadres moet overeenkomen met het adres dat aan uw kaart gekoppeld is.',
- 'payment_footer2' => '*Klik alsjeblieft slechts één keer op "PAY NOW" - deze verwerking kan tot 1 minuut duren.',
+ 'payment_footer1' => '*Factuuradres moet overeenkomen met het adres dat aan uw kaart gekoppeld is.',
+ 'payment_footer2' => '*Klik alstublieft slechts één keer op "PAY NOW" - deze verwerking kan tot 1 minuut duren.',
'id_number' => 'KVK-nummer',
'white_label_link' => 'Whitelabel',
'white_label_header' => 'Whitelabel',
- 'bought_white_label' => 'Whitelabel licentie is geactiveerd',
- 'white_labeled' => 'White labeled',
+ 'bought_white_label' => 'Whitelabel-licentie is geactiveerd',
+ 'white_labeled' => 'White-labeled',
'restore' => 'Herstel',
'restore_invoice' => 'Herstel factuur',
'restore_quote' => 'Herstel offerte',
'restore_client' => 'Herstel klant',
- 'restore_credit' => 'Herstel creditnota',
+ 'restore_credit' => 'Herstel creditfactuur',
'restore_payment' => 'Herstel betaling',
'restored_invoice' => 'De factuur is hersteld',
'restored_quote' => 'De offerte is hersteld',
'restored_client' => 'De klant is hersteld',
'restored_payment' => 'De betaling is hersteld',
- 'restored_credit' => 'De creditnota is hersteld',
+ 'restored_credit' => 'De creditfactuur is hersteld',
'reason_for_canceling' => 'Help ons om onze site te verbeteren door ons te vertellen waarom u weggaat.',
'discount_percent' => 'Percentage',
'discount_amount' => 'Bedrag',
@@ -436,7 +436,7 @@ $lang = array(
'token_billing_checkbox' => 'Sla creditcardgegevens op',
'view_in_gateway' => 'In :gateway bekijken',
'use_card_on_file' => 'Gebruik opgeslagen kaart',
- 'edit_payment_details' => 'Wijzig betalingsgegevens',
+ 'edit_payment_details' => 'Wijzig betaalgegevens',
'token_billing' => 'Kaartgegevens opslaan',
'token_billing_secure' => 'Kaartgegevens worden veilig opgeslagen door :link',
'support' => 'Ondersteuning',
@@ -447,7 +447,7 @@ $lang = array(
'billing_method' => 'Betaalmethode',
'order_overview' => 'Besteloverzicht',
'match_address' => '*Adres moet overeenkomen met adres van creditcard.',
- 'click_once' => '*Klik alstublieft maar één keer; het kan een minuut duren om de betaling te verwerken.',
+ 'click_once' => '*Klik alstublieft slechts één keer; het kan 1 minuut duren om de betaling te verwerken.',
'invoice_footer' => 'Factuurvoettekst',
'save_as_default_footer' => 'Bewaar als standaard voettekst',
'token_management' => 'Tokenbeheer',
@@ -460,12 +460,12 @@ $lang = array(
'edit_token' => 'Wijzig token',
'delete_token' => 'Verwijder token',
'token' => 'Token',
- 'add_gateway' => 'Betalingsgateway toevoegen',
- 'delete_gateway' => 'Betalingsgateway verwijderen',
- 'edit_gateway' => 'Betalingsgateway bewerken',
- 'updated_gateway' => 'De gateway is gewijzigd',
- 'created_gateway' => 'De gateway is aangemaakt',
- 'deleted_gateway' => 'De gateway is verwijderd',
+ 'add_gateway' => 'Betaalprovider toevoegen',
+ 'delete_gateway' => 'Betaalprovider verwijderen',
+ 'edit_gateway' => 'Betaalprovider bewerken',
+ 'updated_gateway' => 'De betaalprovider is gewijzigd',
+ 'created_gateway' => 'De betaalprovider is aangemaakt',
+ 'deleted_gateway' => 'De betaalprovider is verwijderd',
'pay_with_paypal' => 'PayPal',
'pay_with_card' => 'Creditcard',
'change_password' => 'Verander wachtwoord',
@@ -544,7 +544,7 @@ $lang = array(
'stop' => 'Stop',
'now' => 'Nu',
'timer' => 'Timer',
- 'manual' => 'Manueel',
+ 'manual' => 'Handmatig',
'date_and_time' => 'Datum en tijd',
'second' => 'Seconde',
'seconds' => 'Seconden',
@@ -586,7 +586,7 @@ $lang = array(
'pro_plan_feature5' => 'Multi-user toegang & activeit tracking',
'pro_plan_feature6' => 'Maak offertes & Pro-forma facturen aan',
'pro_plan_feature7' => 'Pas factuur veldtitels & nummering aan',
- 'pro_plan_feature8' => 'Optie om PDFs toe te voegen aan de emails naar klanten',
+ 'pro_plan_feature8' => 'Optie om PDFs toe te voegen aan de e-mails naar klanten',
'resume' => 'Doorgaan',
'break_duration' => 'Pauze',
'edit_details' => 'Wijzig details',
@@ -663,7 +663,7 @@ $lang = array(
'status_unpaid' => 'Onbetaald',
'status_all' => 'Alles',
'show_line_item_tax' => 'BTW-tarieven per regel tonen',
- 'auto_bill' => 'Automatische incasso',
+ 'auto_bill' => 'Automatische betaling',
'military_time' => '24-uurs klok',
'last_sent' => 'Laatst verstuurd',
'reminder_emails' => 'Herinneringsmails',
@@ -702,7 +702,7 @@ $lang = array(
'verify_email' => 'Klik alstublieft op de link in de accountbevestigings-e-mail om uw e-mailadres te bevestigen.',
'basic_settings' => 'Basisinstellingen',
'pro' => 'Pro',
- 'gateways' => 'Betalingsverwerkers',
+ 'gateways' => 'Betaalproviders',
'next_send_on' => 'Verstuur volgende: :date',
'no_longer_running' => 'Deze factuur is niet ingepland',
'general_settings' => 'Algemene instellingen',
@@ -738,7 +738,7 @@ $lang = array(
'activity_7' => ':contact heeft factuur :invoice voor :client bekeken',
'activity_8' => ':user heeft factuur :invoice gearchiveerd',
'activity_9' => ':user heeft factuur :invoice verwijderd',
- 'activity_10' => ':user ingevoerde betaling :payment voor :payment _bedrag op factuur :invoice voor :client',
+ 'activity_10' => ':user heeft betaling :payment ingevoerd voor een bedrag van:payment_amount voor factuur :invoice voor :client',
'activity_11' => ':user heeft betaling :payment bijgewerkt',
'activity_12' => ':user heeft betaling :payment gearchiveerd',
'activity_13' => ':user heeft betaling :payment verwijderd',
@@ -772,11 +772,11 @@ $lang = array(
'activity_45' => ':user heeft taak :task verwijderd',
'activity_46' => ':user heeft taak :task hersteld',
'activity_47' => ':user heeft uitgave :expense bijgewerkt',
- 'activity_48' => ':user heeft de gebruiker: :user aangemaakt',
- 'activity_49' => ':user heeft de gebruiker: :user aangepast',
- 'activity_50' => ':user heeft de gebruiker: :user gearchiveerd',
- 'activity_51' => ':user heeft de gebruiker: :user verwijderd',
- 'activity_52' => ':user heeft de gebruiker: :user hersteld',
+ 'activity_48' => ':user heeft de gebruiker :user aangemaakt',
+ 'activity_49' => ':user heeft de gebruiker :user aangepast',
+ 'activity_50' => ':user heeft de gebruiker :user gearchiveerd',
+ 'activity_51' => ':user heeft de gebruiker :user verwijderd',
+ 'activity_52' => ':user heeft de gebruiker :user hersteld',
'activity_53' => ':user heeft factuur :invoice als verstuurd gemarkeerd',
'activity_54' => ':user betaalde factuur :invoice',
'activity_55' => ':contact heeft op ticket :ticket gereageerd',
@@ -788,8 +788,8 @@ $lang = array(
'default_messages' => 'Standaardberichten',
'quote_terms' => 'Offertevoorwaarden',
'default_quote_terms' => 'Standaard offertevoorwaarden',
- 'default_invoice_terms' => 'Stel standaard factuurvoorwaarden in',
- 'default_invoice_footer' => 'Stel standaard factuurfvoettekst in',
+ 'default_invoice_terms' => 'Stel standaardvoorwaarden voor factuur in',
+ 'default_invoice_footer' => 'Stel standaardvoettekst voor factuur in',
'quote_footer' => 'Offertevoettekst',
'free' => 'Gratis',
'quote_is_approved' => 'Akkoord',
@@ -799,8 +799,8 @@ $lang = array(
'archived_token' => 'Het token is gearchiveerd',
'archive_user' => 'Archiveer gebruiker',
'archived_user' => 'De gebruiker is gearchiveerd',
- 'archive_account_gateway' => 'Gateway verwijderen',
- 'archived_account_gateway' => 'De betalingsverwerker is gearchiveerd',
+ 'archive_account_gateway' => 'Betaalprovider verwijderen',
+ 'archived_account_gateway' => 'De betaalprovider is gearchiveerd',
'archive_recurring_invoice' => 'Archiveer terugkerende factuur',
'archived_recurring_invoice' => 'De terugkerende factuur is gearchiveerd',
'delete_recurring_invoice' => 'Verwijder terugkerende factuur',
@@ -823,7 +823,7 @@ $lang = array(
'user' => 'Gebruiker',
'country' => 'Land',
'include' => 'Voeg in',
- 'logo_too_large' => 'Je logo is :size groot, voor betere PDF prestaties raden we je aan om een afbeelding kleiner dan 200KB te uploaden.',
+ 'logo_too_large' => 'Uw logo is :size groot, voor betere PDF-prestaties raden we u aan om een afbeelding kleiner dan 200KB te uploaden.',
'import_freshbooks' => 'Importeren van FreshBooks',
'import_data' => 'Importeer data',
'source' => 'Bron',
@@ -839,12 +839,12 @@ $lang = array(
'show_archived_users' => 'Toon gearchiveerde gebruikers',
'notes' => 'Notities',
'invoice_will_create' => 'Factuur zal worden aangemaakt',
- 'invoices_will_create' => 'factuur zal worden aangemaakt',
- 'failed_to_import' => 'De volgende regels konden niet worden geïmporteerd, ze bestaan al of missen verplichte velden.',
+ 'invoices_will_create' => 'facturen zullen worden aangemaakt',
+ 'failed_to_import' => 'De volgende regels konden niet worden geïmporteerd, ze bestaan al of missen verplichte velden.',
'publishable_key' => 'Publishable Key',
'secret_key' => 'Secret Key',
'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process',
- 'email_design' => 'E-mail Ontwerp',
+ 'email_design' => 'E-mailontwerp',
'due_by' => 'Vervaldatum :date',
'enable_email_markup' => 'Opmaak inschakelen',
'enable_email_markup_help' => 'Maak het gemakkelijker voor uw klanten om te betalen door schema.org opmaak toe te voegen aan uw e-mails.',
@@ -857,7 +857,7 @@ $lang = array(
'dark' => 'Donker',
'industry_help' => 'Wordt gebruikt om een vergelijking te kunnen maken met de gemiddelden van andere bedrijven uit dezelfde sector en van dezelfde grootte.',
'subdomain_help' => 'Stel het subdomein in of toon de factuur op uw eigen website.',
- 'website_help' => 'Toon de factuur in een iFrame op uw eigen website',
+ 'website_help' => 'Toon de factuur in een iframe op uw eigen website',
'invoice_number_help' => 'Kies een voorvoegsel of gebruik een patroon om het factuurnummer dynamisch te genereren.',
'quote_number_help' => 'Kies een voorvoegsel of gebruik een patroon om het offertenummer dynamisch te genereren.',
'custom_client_fields_helps' => 'Voeg een veld toe bij het creëren van een klant en toon het label en de waarde op de PDF.',
@@ -865,13 +865,13 @@ $lang = array(
'custom_invoice_fields_helps' => 'Voeg een veld toe bij het creëren van een factuur en toon het label en de waarde op de PDF.',
'custom_invoice_charges_helps' => 'Plaatst een tekstveld op de factuur aanmaak-/bewerkpagina en verwerkt de facturatiekosten in het subtotaal.',
'token_expired' => 'De validatie token is verlopen. Probeer het opnieuw.',
- 'invoice_link' => 'Factuur Link',
- 'button_confirmation_message' => 'Bevestig uw email.',
+ 'invoice_link' => 'Factuurlink',
+ 'button_confirmation_message' => 'Bevestig uw e-mailadres.',
'confirm' => 'Bevestigen',
'email_preferences' => 'E-mailvoorkeuren',
'created_invoices' => 'Succesvol :count factuur(en) aangemaakt',
- 'next_invoice_number' => 'Het volgende factuurnummer is :number.',
- 'next_quote_number' => 'Het volgende offertenummer is :number.',
+ 'next_invoice_number' => 'Het eerstvolgende factuurnummer is :number.',
+ 'next_quote_number' => 'Het eerstvolgende offertenummer is :number.',
'days_before' => 'dagen voor de',
'days_after' => 'dagen na de',
'field_due_date' => 'vervaldatum',
@@ -879,7 +879,7 @@ $lang = array(
'schedule' => 'Schema',
'email_designs' => 'E-mailontwerpen',
'assigned_when_sent' => 'Toegewezen zodra verzonden',
- 'white_label_purchase_link' => 'Koop een whitelabel licentie',
+ 'white_label_purchase_link' => 'Koop een whitelabel-licentie',
'expense' => 'Uitgave',
'expenses' => 'Uitgaven',
'new_expense' => 'Nieuwe uitgave',
@@ -935,7 +935,7 @@ $lang = array(
Vandaag is het vrijdag, de vervaldatum is ingesteld op de 1e vrijdag erna. De vervaldatum zal volgende week vrijdag zijn, niet vandaag.
',
'due' => 'Vervaldatum',
- 'next_due_on' => 'Vervaldatum volgende: :date',
+ 'next_due_on' => 'Eerstvolgende vervaldatum: :date',
'use_client_terms' => 'Gebruik betalingsvoorwaarden klant',
'day_of_month' => ':ordinal dag van de maand',
'last_day_of_month' => 'Laatste dag van de maand',
@@ -955,7 +955,7 @@ $lang = array(
'invoice_message_button' => 'Klik op de onderstaande link om uw factuur van :amount te bekijken.',
'quote_message_button' => 'Klik op de onderstaande link om uw offerte van :amount te bekijken.',
'payment_message_button' => 'Bedankt voor uw betaling van :amount.',
- 'payment_type_direct_debit' => 'Automatisch incasso',
+ 'payment_type_direct_debit' => 'Automatische incasso',
'bank_accounts' => 'Bankrekeningen',
'add_bank_account' => 'Bankrekening toevoegen',
'setup_account' => 'Rekening instellen',
@@ -991,16 +991,16 @@ $lang = array(
'last_page' => 'laatste pagina',
'all_pages_header' => 'Toon koptekst op',
'all_pages_footer' => 'Toon footer op',
- 'invoice_currency' => 'Factuur valuta',
+ 'invoice_currency' => 'Factuurvaluta',
'enable_https' => 'We raden u dringend aan om HTTPS te gebruiken om creditcard informatie digitaal te accepteren.',
'quote_issued_to' => 'Offerte uitgeschreven voor',
'show_currency_code' => 'Valutacode',
- 'free_year_message' => 'Uw account is gratis geüpgraded naar een pro account voor één jaar.',
- 'trial_message' => 'Uw account zal een gratis twee weken durende probeerversie van ons pro plan krijgen.',
- 'trial_footer' => 'Uw gratis probeerversie duurt nog :count dagen, :link om direct te upgraden.',
- 'trial_footer_last_day' => 'Dit is de laatste dag van uw gratis probeerversie, :link om direct te upgraden.',
+ 'free_year_message' => 'Uw account is gratis geüpgraded naar een Pro-abonnement voor één jaar.',
+ 'trial_message' => 'Uw account zal een gratis twee weken durende probeerversie van ons Pro-abonnement krijgen.',
+ 'trial_footer' => 'Uw gratis probeerversie duurt nog :count dagen, navigeer naar :link om direct te upgraden.',
+ 'trial_footer_last_day' => 'Dit is de laatste dag van uw gratis probeerversie, navigeer naar :link om direct te upgraden.',
'trial_call_to_action' => 'Start gratis probeerversie',
- 'trial_success' => 'De gratis twee weken durende probeerversie van het pro plan is geactiveerd.',
+ 'trial_success' => 'De gratis, twee weken durende, proefperiode van het Pro-abonnement is gestart.',
'overdue' => 'Verlopen',
'white_label_text' => 'Koop een white label licentie voor één jaar voor $:price om de Invoice Ninja reclame te verwijderen van facturen en het klantenportaal.',
'user_email_footer' => 'Ga alstublieft naar :link om uw e-mail notificatie instellingen aan te passen',
@@ -1010,7 +1010,7 @@ $lang = array(
'old_browser' => 'Gelieve een :link te gebruiken',
'newer_browser' => 'nieuwere browser',
'white_label_custom_css' => ':link voor $:price om eigen opmaak te gebruiken en ons project te ondersteunen.',
- 'pro_plan_remove_logo' => ':link om het Invoice Ninja logo te verwijderen door het pro plan te nemen',
+ 'pro_plan_remove_logo' => ':link om het Invoice Ninja logo te verwijderen door het Pro-abonnement te nemen',
'pro_plan_remove_logo_link' => 'Klik hier',
'invitation_status_sent' => 'Verzonden',
'invitation_status_opened' => 'Geopend',
@@ -1018,22 +1018,22 @@ $lang = array(
'email_error_inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten',
'email_error_inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen',
'email_error_inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen',
- 'email_error_inactive_proposal' => 'Emails kunnen niet verzonden worden naar inactieve voorstellen',
+ 'email_error_inactive_proposal' => 'E-mails kunnen niet verzonden worden naar inactieve voorstellen',
'email_error_user_unregistered' => 'Registreer een account om e-mails te kunnen versturen',
'email_error_user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen',
'email_error_invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon',
'navigation' => 'Navigatie',
- 'list_invoices' => 'Toon Facturen',
- 'list_clients' => 'Toon Klanten',
- 'list_quotes' => 'Toon Offertes',
- 'list_tasks' => 'Toon Taken',
- 'list_expenses' => 'Toon Uitgaven',
- 'list_recurring_invoices' => 'Toon Terugkerende Facturen',
- 'list_payments' => 'Toon Betalingen',
- 'list_credits' => 'Toon Kredieten',
+ 'list_invoices' => 'Toon facturen',
+ 'list_clients' => 'Toon klanten',
+ 'list_quotes' => 'Toon offertes',
+ 'list_tasks' => 'Toon taken',
+ 'list_expenses' => 'Toon uitgaven',
+ 'list_recurring_invoices' => 'Toon terugkerende facturen',
+ 'list_payments' => 'Toon betalingen',
+ 'list_credits' => 'Toon kredieten',
'tax_name' => 'Belasting naam',
'report_settings' => 'Rapport instellingen',
- 'new_user' => 'Nieuwe Gebruiker',
+ 'new_user' => 'Nieuwe gebruiker',
'new_product' => 'Nieuw product',
'new_tax_rate' => 'Nieuw BTW-tarief',
'invoiced_amount' => 'Gefactureerd bedrag',
@@ -1096,18 +1096,18 @@ $lang = array(
'invoice_embed_documents' => 'Documenten invoegen',
'invoice_embed_documents_help' => 'Bijgevoegde afbeeldingen weergeven in de factuur.',
'document_email_attachment' => 'Documenten bijvoegen',
- 'ubl_email_attachment' => 'Attach UBL/E-Invoice',
+ 'ubl_email_attachment' => 'UBL en/of e-factuur bijvoegen',
'download_documents' => 'Documenten downloaden (:size)',
'documents_from_expenses' => 'Van uitgaven:',
'dropzone_default_message' => 'Sleep bestanden hierheen of klik om te uploaden',
'dropzone_default_message_disabled' => 'Uploads uitgeschakeld',
- 'dropzone_fallback_message' => 'Je browser ondersteunt het slepen van bestanden niet.',
- 'dropzone_fallback_text' => 'Gebruik de onderstaande optie om je bestanden te uploaden.',
+ 'dropzone_fallback_message' => 'Uw browser ondersteunt het slepen van bestanden niet.',
+ 'dropzone_fallback_text' => 'Gebruik de onderstaande optie om uw bestanden te uploaden.',
'dropzone_file_too_big' => 'Het bestand is te groot ({{filesize}}MiB). Maximale grootte: {{maxFilesize}}MiB.',
- 'dropzone_invalid_file_type' => 'Je kan geen bestanden van dit type uploaden.',
+ 'dropzone_invalid_file_type' => 'U kunt geen bestanden van dit type uploaden.',
'dropzone_response_error' => 'De server gaf foutcode {{statusCode}} terug.',
'dropzone_cancel_upload' => 'Upload annuleren',
- 'dropzone_cancel_upload_confirmation' => 'Weet je zeker dat je deze upload wilt annuleren?',
+ 'dropzone_cancel_upload_confirmation' => 'Weet u zeker dat u deze upload wilt annuleren?',
'dropzone_remove_file' => 'Bestand verwijderen',
'documents' => 'Documenten',
'document_date' => 'Documentdatum',
@@ -1123,7 +1123,7 @@ $lang = array(
'plan_status' => 'Status abonnement',
'plan_upgrade' => 'Upgraden',
- 'plan_change' => 'Plan beheren',
+ 'plan_change' => 'Abonnement beheren',
'pending_change_to' => 'Veranderd naar',
'plan_changes_to' => ':plan op :date',
'plan_term_changes_to' => ':plan (:term) op :date',
@@ -1137,7 +1137,7 @@ $lang = array(
'plan_free' => 'Gratis',
'plan_pro' => 'Pro',
'plan_enterprise' => 'Zakelijk',
- 'plan_white_label' => 'Zelf gehost (White label)',
+ 'plan_white_label' => 'Zelf gehost (white-label)',
'plan_free_self_hosted' => 'Zelf gehost (Gratis)',
'plan_trial' => 'Proefabonnement',
'plan_term' => 'Duur',
@@ -1152,13 +1152,13 @@ $lang = array(
'plan_started' => 'Abonnement gestart',
'plan_expires' => 'Abonnement verloopt',
- 'white_label_button' => 'Whitelabel kopen',
+ 'white_label_button' => 'Whitelabel-licentie kopen',
'pro_plan_year_description' => 'Jaarabonnement op Invoice Ninja Pro.',
'pro_plan_month_description' => 'Maandabonnement op Invoice Ninja Pro.',
- 'enterprise_plan_product' => 'Zakelijk abonnement',
- 'enterprise_plan_year_description' => 'Jaarabonnement op Invoice Ninja zakelijk.',
- 'enterprise_plan_month_description' => 'Maandabonnement op Invoice Ninja zakelijk.',
+ 'enterprise_plan_product' => 'Enterprise-abonnement',
+ 'enterprise_plan_year_description' => 'Jaarabonnement op Invoice Ninja Enterprise.',
+ 'enterprise_plan_month_description' => 'Maandabonnement op Invoice Ninja Enterprise.',
'plan_credit_product' => 'Krediet',
'plan_credit_description' => 'Krediet voor ongebruikte tijd',
'plan_pending_monthly' => 'Zal omgezet wordt in maandelijks op :date',
@@ -1169,7 +1169,7 @@ $lang = array(
'invoice_number_padding' => 'Marge',
'preview' => 'Voorbeeld',
'list_vendors' => 'Toon leveranciers',
- 'add_users_not_supported' => 'Upgrade naar het Enterprise Plan om extra gebruikers aan uw account toe te voegen.',
+ 'add_users_not_supported' => 'Upgrade naar het Enterprise-abonnement om extra gebruikers aan uw account toe te voegen.',
'enterprise_plan_features' => 'Het Enterprise Plan voegt ondersteuning toe voor meerdere gebruikers en bestandsbijlagen, :link om de volledige lijst met functies te zien.',
'return_to_app' => 'Terug naar de app',
@@ -1210,7 +1210,7 @@ $lang = array(
'ach' => 'ACH',
'enable_ach' => 'Accepteer US bank transacties',
'stripe_ach_help' => 'ACH ondersteuning moet ook ingeschakeld zijn in :link.',
- 'ach_disabled' => 'Er is al een andere gateway geconfigureerd voor directe afschrijving.',
+ 'ach_disabled' => 'Er is al een andere betaalprovider geconfigureerd voor directe afschrijvingen.',
'plaid' => 'Plaid',
'client_id' => 'Klantnummer',
@@ -1231,58 +1231,58 @@ $lang = array(
'company_account' => 'Bedrijfsrekening',
'account_holder_name' => 'Rekeninghouder',
'add_account' => 'Rekening toevoegen',
- 'payment_methods' => 'Betalingsmethode',
+ 'payment_methods' => 'Betaalmethode',
'complete_verification' => 'Verificatie voltooien',
'verification_amount1' => 'Bedrag 1',
'verification_amount2' => 'Bedrag 2',
'payment_method_verified' => 'Verificatie voltooid',
'verification_failed' => 'Verificatie mislukt',
- 'remove_payment_method' => 'Betalingsmethode verwijderen',
- 'confirm_remove_payment_method' => 'Weet u zeker dat u deze betalingsmethode wilt verwijderen?',
+ 'remove_payment_method' => 'Betaalmethode verwijderen',
+ 'confirm_remove_payment_method' => 'Weet u zeker dat u deze betaalmethode wilt verwijderen?',
'remove' => 'Verwijderen',
- 'payment_method_removed' => 'Betalingsmethode verwijderd.',
+ 'payment_method_removed' => 'Betaalmethode verwijderd.',
'bank_account_verification_help' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften. Voer de bedragen hieronder in.',
'bank_account_verification_next_steps' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften.
-Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen en klik op "Verificatie voltooien" direct naast de rekening.',
+Kom terug naar deze betaalmethode pagina zodra u de bedragen heeft ontvangen en klik op "Verificatie voltooien" direct naast de rekening.',
'unknown_bank' => 'Onbekende bank',
'ach_verification_delay_help' => 'U kunt de rekening gebruiken na het voltooien van de verificatie. Verificatie duurt doorgaans 1 à 2 werkdagen.',
'add_credit_card' => 'Creditcard toevoegen',
- 'payment_method_added' => 'Betalingsmethode toegevoegd.',
- 'use_for_auto_bill' => 'Gebruiken voor Autobill',
- 'used_for_auto_bill' => 'Autobill betalingsmethode',
- 'payment_method_set_as_default' => 'Autobill betalingsmethode instellen.',
+ 'payment_method_added' => 'Betaalmethode toegevoegd.',
+ 'use_for_auto_bill' => 'Gebruiken voor automatische betaling',
+ 'used_for_auto_bill' => 'Betaalmethode voor automatische betalingen',
+ 'payment_method_set_as_default' => 'Betaalmethode voor automatische betalingen instellen.',
'activity_41' => 'Betaling van :payment_amount mislukt (:payment)',
'webhook_url' => 'Webhook URL',
'stripe_webhook_help' => 'U moet :link.',
'stripe_webhook_help_link_text' => 'deze URL toevoegen als een endpoint in Stripe',
'gocardless_webhook_help_link_text' => 'deze URL toevoegen als een endpoint in GoCardless',
- 'payment_method_error' => 'Er is een fout opgetreden bij het toevoegen van de betalingsmethode. Probeer het later opnieuw.',
+ 'payment_method_error' => 'Er is een fout opgetreden bij het toevoegen van de betaalmethode. Probeer het later opnieuw.',
'notification_invoice_payment_failed_subject' => 'Betaling mislukt voor factuur :invoice',
'notification_invoice_payment_failed' => 'Een betaling van :client voor factuur :invoice is mislukt. De betaling is gemarkeerd als mislukt en het :amount is toegevoegd aan het krediet van de klant.',
'link_with_plaid' => 'Rekening direct koppelen met Plaid',
'link_manually' => 'Handmatig koppelen',
'secured_by_plaid' => 'Beveiligd met Plaid',
'plaid_linked_status' => 'Uw bankrekening bij :bank',
- 'add_payment_method' => 'Betalingsmethode toevoegen',
+ 'add_payment_method' => 'Betaalmethode toevoegen',
'account_holder_type' => 'Type rekeninghouder',
- 'ach_authorization' => 'Ik geef :company toestemming om mijn bankrekening te gebruiken voor toekomstige betalingen en, indien nodig, te crediteren op mijn rekening om foutieve afschrijvingen te corrigeren. I begrijp dat ik deze toestemming te allen tijde mag annuleren door de betalingsmethode te verwijderen of door contact op te nemen via :email.',
- 'ach_authorization_required' => 'U moet toestemming geven voor ACH overschrijvingen.',
+ 'ach_authorization' => 'Ik geef :company toestemming om mijn bankrekening te gebruiken voor toekomstige betalingen en, indien nodig, te crediteren op mijn rekening om foutieve afschrijvingen te corrigeren. Ik begrijp dat ik deze toestemming te allen tijde mag intrekken door de betaalmethode te verwijderen of door contact op te nemen via :email.',
+ 'ach_authorization_required' => 'U moet toestemming geven voor ACH-overschrijvingen.',
'off' => 'Uit',
- 'opt_in' => 'Meedoen',
+ 'opt_in' => 'Inschrijven',
'opt_out' => 'Terugtrekken',
'always' => 'Altijd',
'opted_out' => 'Teruggetrokken',
'opted_in' => 'Meegedaan',
- 'manage_auto_bill' => 'Beheer Autobill',
+ 'manage_auto_bill' => 'Beheer automatische betalingen',
'enabled' => 'Ingeschakeld',
'paypal' => 'PayPal',
'braintree_enable_paypal' => 'PayPal betalingen via BrainTree inschakelen',
- 'braintree_paypal_disabled_help' => 'De PayPal gateway verwerkt PayPal betalingen',
+ 'braintree_paypal_disabled_help' => 'De PayPal-gateway verwerkt PayPal-betalingen',
'braintree_paypal_help' => 'U moet ook :link.',
'braintree_paypal_help_link_text' => 'PayPal koppelen aan uw BrainTree account',
- 'token_billing_braintree_paypal' => 'Betalingsgegevens opslaan',
+ 'token_billing_braintree_paypal' => 'Betaalgegevens opslaan',
'add_paypal_account' => 'PayPal rekening toevoegen',
- 'no_payment_method_specified' => 'Geen betalingsmethode gespecificeerd',
+ 'no_payment_method_specified' => 'Geen betaalmethode gespecificeerd',
'chart_type' => 'Grafiektype',
'format' => 'Formaat',
'import_ofx' => 'OFX importeren',
@@ -1305,21 +1305,21 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'created_wepay_confirmation_required' => 'Controleer uw e-mail en bevestig uw e-mailadres met WePay.',
'switch_to_wepay' => 'Overschakelen naar WePay',
'switch' => 'Overschakelen',
- 'restore_account_gateway' => 'Herstel gateway',
- 'restored_account_gateway' => 'De gateway is hersteld',
+ 'restore_account_gateway' => 'Herstel betaalprovider',
+ 'restored_account_gateway' => 'De betaalprovider is hersteld',
'united_states' => 'Verenigde Staten',
'canada' => 'Canada',
'accept_debit_cards' => 'Accepteer betaalkaart',
'debit_cards' => 'Betaalkaarten',
- 'warn_start_date_changed' => 'Het volgende factuur zal verzonden worden op de nieuwe startdatum.',
- 'warn_start_date_changed_not_sent' => 'Het volgende factuur zal aangemaakt worden op de nieuwe startdatum.',
+ 'warn_start_date_changed' => 'De volgende factuur zal verzonden worden op de nieuwe startdatum.',
+ 'warn_start_date_changed_not_sent' => 'De volgende factuur zal aangemaakt worden op de nieuwe startdatum.',
'original_start_date' => 'Oorspronkelijke startdatum',
'new_start_date' => 'Nieuwe startdatum',
'security' => 'Beveiliging',
'see_whats_new' => 'Bekijk wat veranderde in v:version',
'wait_for_upload' => 'Gelieve te wachten tot de upload van het document compleet is.',
- 'upgrade_for_permissions' => 'Upgrade naar ons Enterprise Plan om machtigingen in te schakelen.',
+ 'upgrade_for_permissions' => 'Upgrade naar ons Enterprise-abonnement om machtigingen in te schakelen.',
'enable_second_tax_rate' => 'Het opgeven van een tweede extra belastingregel aanzetten',
'payment_file' => 'Betalingsbestand',
'expense_file' => 'Uitgavenbestand',
@@ -1330,43 +1330,43 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'created_products' => 'Succesvol :count product(en) aangemaakt/bijgewerkt',
'export_help' => 'Gebruik JSON als u van plan bent om de gegevens te importeren in Invoice Ninja. Het bestand omvat klanten, producten, facturen, offertes en betalingen.',
'selfhost_export_help' => ' We raden mysqldump aan om een volledige backup te maken.',
- 'JSON_file' => 'JSON bestand',
+ 'JSON_file' => 'JSON-bestand',
'view_dashboard' => 'Bekijk dashboard',
'client_session_expired' => 'Sessie verlopen',
'client_session_expired_message' => 'Uw sessie is verlopen. Gelieve de link in de e-mail opnieuw te openen.',
- 'auto_bill_notification' => 'Deze factuur zal automatisch worden gefactureerd aan uw opgeslagen betalingsmethode op de vervaldag.',
+ 'auto_bill_notification' => 'Deze factuur zal op :due_date automatisch worden voldaan via :payment_method.',
'auto_bill_payment_method_bank_transfer' => 'Bankrekening',
'auto_bill_payment_method_credit_card' => 'creditcard',
- 'auto_bill_payment_method_paypal' => 'PayPal account',
- 'auto_bill_notification_placeholder' => 'Deze factuur zal automatisch worden gefactureerd aan uw creditcard op de vervaldag.',
+ 'auto_bill_payment_method_paypal' => 'PayPal-account',
+ 'auto_bill_notification_placeholder' => 'Voor deze factuur zal uw opgeslagen creditcard automatisch worden belast op de vervaldag.',
'payment_settings' => 'Betalingsinstellingen',
'on_send_date' => 'Op verzendingsdatum',
'on_due_date' => 'Op vervaldatum',
- 'auto_bill_ach_date_help' => 'ACH automatische facturatie zal atijd uitgevoerd worden op de vervaldag',
- 'warn_change_auto_bill' => 'Vanwege NACHA regels kunnen aanpassingen aan dit factuur ACH automatische facturatie voorkomen.',
+ 'auto_bill_ach_date_help' => 'De ACH-incasso zal altijd worden uitgevoerd op de vervaldag.',
+ 'warn_change_auto_bill' => 'Vanwege NACHA-regelgeving kunnen aanpassingen aan deze factuur voorkomen dat ACH-incasso\'s uitgevoerd kunnen worden.',
'bank_account' => 'Bankrekening',
- 'payment_processed_through_wepay' => 'ACH betalingen zullen verwerkt worden met WePay.',
+ 'payment_processed_through_wepay' => 'ACH-betalingen zullen verwerkt worden met WePay.',
'privacy_policy' => 'Privacybeleid',
- 'ach_email_prompt' => 'Gelieve uw e-maildres in te vullen:',
+ 'ach_email_prompt' => 'Gelieve uw e-mailadres in te vullen:',
'verification_pending' => 'Verificatie in afwachting',
'update_font_cache' => 'Forceer het vernieuwen van de pagina om de font cache bij te werken.',
'more_options' => 'Meer opties',
'credit_card' => 'Creditcard',
'bank_transfer' => 'Overschrijving',
- 'no_transaction_reference' => 'We ontvingen geen betalingstransactie referentie van de gateway.',
+ 'no_transaction_reference' => 'We hebben geen betalingsreferentie ontvangen van de betaalprovider.',
'use_bank_on_file' => 'Gebruik opgeslagen bank',
- 'auto_bill_email_message' => 'Deze factuur zal automatisch worden gefactureerd aan uw opgeslagen betalingsmethode op de vervaldag.',
+ 'auto_bill_email_message' => 'Deze factuur zal, op de vervaldag, automatisch worden betaald met de door u gekozen voorkeursbetaalmethode.',
'bitcoin' => 'Bitcoin',
'gocardless' => 'GoCardless',
'added_on' => 'Toegevoegd op :date',
- 'failed_remove_payment_method' => 'Verwijderen van betalingsmethode mislukt',
- 'gateway_exists' => 'Deze gateway bestaat reeds',
- 'manual_entry' => 'Manuele invoer',
+ 'failed_remove_payment_method' => 'Verwijderen van betaalmethode mislukt',
+ 'gateway_exists' => 'Deze betaalprovider bestaat reeds',
+ 'manual_entry' => 'Handmatige invoer',
'start_of_week' => 'Eerste dag van de week',
// Frequencies
@@ -1384,7 +1384,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'freq_two_years' => 'Twee jaar',
// Payment types
- 'payment_type_Apply Credit' => 'Krediet toepassen',
+ 'payment_type_Apply Credit' => 'Krediet gebruiken',
'payment_type_Bank Transfer' => 'Overschrijving',
'payment_type_Cash' => 'Contant',
'payment_type_Debit' => 'Debet',
@@ -1571,7 +1571,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'country_Curaçao' => 'Curaçao',
'country_Aruba' => 'Aruba',
'country_Sint Maarten (Dutch part)' => 'Sint Maarten',
- 'country_Bonaire, Sint Eustatius and Saba' => 'Caribisch Nederland',
+ 'country_Bonaire, Sint Eustatius and Saba' => 'Bonaire, Sint Eustatius en Saba',
'country_New Caledonia' => 'Nieuw-Caledonië',
'country_Vanuatu' => 'Vanuatu',
'country_New Zealand' => 'Nieuw-Zeeland',
@@ -1701,7 +1701,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'lang_Chinese - Taiwan' => 'Chinees - Taiwan',
'lang_Serbian' => 'Servisch',
'lang_Bulgarian' => 'Bulgaars',
- 'lang_Russian (Russia)' => 'Russisch',
+ 'lang_Russian (Russia)' => 'Russisch (Rusland)',
// Industries
@@ -1749,12 +1749,12 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'archive_expense_category' => 'Archiveer categorie',
'expense_categories' => 'Uitgavecategorie',
'list_expense_categories' => 'Toon uitgavecategorieën',
- 'updated_expense_category' => 'De uitgaven categorie is gewijzigd',
- 'created_expense_category' => 'De uitgaven categorie is aangemaakt',
- 'archived_expense_category' => 'De uitgaven categorie is gearchiveerd',
- 'archived_expense_categories' => ':count uitgave-categorieën gearchiveerd',
+ 'updated_expense_category' => 'De uitgavencategorie is gewijzigd',
+ 'created_expense_category' => 'De uitgavencategorie is aangemaakt',
+ 'archived_expense_category' => 'De uitgavencategorie is gearchiveerd',
+ 'archived_expense_categories' => ':count uitgavecategorieën gearchiveerd',
'restore_expense_category' => 'Herstel uitgavecategorie',
- 'restored_expense_category' => 'De uitgaven categorie hersteld',
+ 'restored_expense_category' => 'De uitgavecategorie is hersteld',
'apply_taxes' => 'Pas belasting toe',
'min_to_max_users' => ':min tot :max gebruikers',
'max_users_reached' => 'Het maximale aantal gebruikers is bereikt.',
@@ -1766,17 +1766,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'fields' => 'Velden',
'dwolla' => 'Dwolla',
'buy_now_buttons_warning' => 'Opmerking: de klant en factuur worden aangemaakt ook al is de transactie niet afgerond.',
- 'buy_now_buttons_disabled' => 'Deze functie vereist dat een product is aangemaakt en een betalingsgateway is geconfigureerd.',
+ 'buy_now_buttons_disabled' => 'Deze functie vereist dat een product is aangemaakt en een betaalprovider is geconfigureerd.',
'enable_buy_now_buttons_help' => 'Ondersteuning inschakelen voor koop nu knoppen',
'changes_take_effect_immediately' => 'Opmerking: wijzigingen zijn onmiddelijk van kracht',
- 'wepay_account_description' => 'Betalingsgateway voor Invoice Ninja',
+ 'wepay_account_description' => 'Betaalprovider voor Invoice Ninja',
'payment_error_code' => 'Er trad een fout op tijdens het verwerken van uw betaling [:code]. Gelieve het later opnieuw te proberen.',
- 'standard_fees_apply' => 'Toeslag: 2.9%/1.2% [kredietkaart/overschijving] + $0.30 per succesvolle aanrekening.',
+ 'standard_fees_apply' => 'Toeslag: 2.9%/1.2% [creditcard/bankoverschijving] + $0.30 per succesvolle transactie.',
'limit_import_rows' => 'Data dient geïmporteerd te worden in delen van :count rijen of minder',
'error_title' => 'Er ging iets mis',
'error_contact_text' => 'Indien u hulp wenst gelieve ons te contacteren op :mailaddress',
'no_undo' => 'Waarschuwing: dit kan niet ongedaan gemaakt worden.',
- 'no_contact_selected' => 'Gelieve een contact te selecteren',
+ 'no_contact_selected' => 'Gelieve een contactpersoon te selecteren',
'no_client_selected' => 'Gelieve een klant te selecteren',
'gateway_config_error' => 'Het kan helpen om nieuwe wachtwoorden in te stellen of nieuwe API sleutels te genereren.',
@@ -1787,8 +1787,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'client_not_found' => 'Ik was niet in staat om de klant te vinden',
'not_allowed' => 'Sorry, u heeft niet de benodigde machtigingen',
'bot_emailed_invoice' => 'Uw factuur is verzonden.',
- 'bot_emailed_notify_viewed' => 'Ik e-mail u als het bekeken is.',
- 'bot_emailed_notify_paid' => 'Ik e-mail u als het betaald is.',
+ 'bot_emailed_notify_viewed' => 'Ik e-mail u zodra het bekeken is.',
+ 'bot_emailed_notify_paid' => 'Ik e-mail u zodra het betaald is.',
'add_product_to_invoice' => 'Voeg 1 :product toe',
'not_authorized' => 'U bent niet gemachtigd',
'email_not_found' => 'Ik was niet in staat om een beschikbaar account te vinden voor :email',
@@ -1812,13 +1812,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'unassigned' => 'Niet toegewezen',
'task' => 'Taak',
'contact_name' => 'Contactnaam',
- 'city_state_postal' => 'Stad/Provincie/Postcode',
- 'postal_city' => 'Postcode/Stad',
+ 'city_state_postal' => 'Stad/provincie/postcode',
+ 'postal_city' => 'Postcode/stad',
'custom_field' => 'Aangepast veld',
'account_fields' => 'Velden bedrijf',
'facebook_and_twitter' => 'Facebook en Twitter',
'facebook_and_twitter_help' => 'Volg onze feeds om ons te helpen met het project',
- 'reseller_text' => 'Opmerking: de white-label licentie is bedoeld voor persoonlijk gebruik, gelieve ons te contacteren op :email indien u de app door wilt verkopen.',
+ 'reseller_text' => 'Let op: de white-label licentie is bedoeld voor persoonlijk gebruik, gelieve ons te contacteren op :email indien u de app door wilt verkopen.',
'unnamed_client' => 'Onbenoemde klant',
'day' => 'Dag',
@@ -1840,7 +1840,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'enable_max' => 'Max inschakelen',
'min' => 'Min',
'max' => 'Max',
- 'limits_not_met' => 'Dit factuur voldoet niet aan de limieten voor die betalingsmethode.',
+ 'limits_not_met' => 'Deze factuur voldoet niet aan de limieten voor die betaalmethode.',
'date_range' => 'Datumbereik',
'raw' => 'Onbewerkt',
@@ -1861,8 +1861,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'translate_app' => 'Help onze vertalingen te verbeteren met :link',
'expense_category' => 'Uitgavecategorie',
- 'go_ninja_pro' => 'Ga Ninja Pro!',
- 'go_enterprise' => 'Ga zakelijk!',
+ 'go_ninja_pro' => 'Ga voor Ninja Pro!',
+ 'go_enterprise' => 'Ga voor Enterprise!',
'upgrade_for_features' => 'Upgrade voor meer mogelijkheden',
'pay_annually_discount' => 'Betaal jaarlijks voor 10 maanden en krijg er 2 gratis!',
'pro_upgrade_title' => 'Ninja Pro',
@@ -1871,7 +1871,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'enterprise_upgrade_feature1' => 'Stel machtigingen in voor meerdere gebruikers',
'enterprise_upgrade_feature2' => 'Voeg externe documenten toe aan facturen & uitgaven',
'much_more' => 'Veel meer!',
- 'all_pro_fetaures' => 'Plus alle pro functies!',
+ 'all_pro_fetaures' => 'Plus alle pro-functionaliteit!',
'currency_symbol' => 'Symbool',
'currency_code' => 'Code',
@@ -1887,17 +1887,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'authentication' => 'Authenticatie',
'checkbox' => 'Checkbox',
'invoice_signature' => 'Handtekening',
- 'show_accept_invoice_terms' => 'Factuurvoorwaarden checkbox',
+ 'show_accept_invoice_terms' => 'Checkbox factuurvoorwaarden',
'show_accept_invoice_terms_help' => 'Verplicht de klant om akkoord te gaan met de factuurvoorwaarden.',
- 'show_accept_quote_terms' => 'Offertevoorwaarden checkbox',
+ 'show_accept_quote_terms' => 'Checkbox offertevoorwaarden',
'show_accept_quote_terms_help' => 'Verplicht de klant om akkoord te gaan met de offertevoorwaarden.',
- 'require_invoice_signature' => 'Factuur handtekening',
+ 'require_invoice_signature' => 'Handtekening op factuur',
'require_invoice_signature_help' => 'Verplicht de klant om zijn handtekening te zetten.',
- 'require_quote_signature' => 'Offerte handtekening',
+ 'require_quote_signature' => 'Handtekening op offerte',
'require_quote_signature_help' => 'Verplicht de klant zijn handtekening te zetten.',
'i_agree' => 'Ik ga akkoord met de voorwaarden',
'sign_here' => 'Gelieve hier te tekenen:',
- 'sign_here_ux_tip' => 'Gebruik de muis of uw touchpad om uw handtekening te traceren.',
+ 'sign_here_ux_tip' => 'Gebruik uw muis of touchpad om uw handtekening te zetten.',
'authorization' => 'Autorisatie',
'signed' => 'Getekend',
@@ -1920,7 +1920,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'delete_project' => 'Verwijder project',
'deleted_project' => 'Het project is verwijderd',
'deleted_projects' => 'Succesvol :count projecten verwijderd',
- 'delete_expense_category' => 'Verwijderen categorie',
+ 'delete_expense_category' => 'Verwijder categorie',
'deleted_expense_category' => 'De categorie is verwijderd',
'delete_product' => 'Verwijder product',
'deleted_product' => 'Het product is verwijderd',
@@ -1929,23 +1929,23 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'update_credit' => 'Krediet bijwerken',
'updated_credit' => 'Het krediet is gewijzigd',
'edit_credit' => 'Wijzig krediet',
- 'realtime_preview' => 'Realtime Voorbeeld',
- 'realtime_preview_help' => 'Toon een realtime PDF voorbeeld op de factuur pagina bij het bewerken van facturen. Schakel dit uit om de prestaties te verbeteren tijdens het bewerken van facturen.',
- 'live_preview_help' => 'Toon een live PDF voorbeeld op de factuur pagina.',
- 'force_pdfjs_help' => 'Vervang de ingebouwde PDF viewer in :chrome_link en :firefox_link. Schakel dit in als je browser de PDF automatisch download.',
+ 'realtime_preview' => 'Realtime voorbeeld',
+ 'realtime_preview_help' => 'Toon een realtime PDF-voorbeeld op de factuurpagina bij het bewerken van facturen. Schakel dit uit om de prestaties te verbeteren tijdens het bewerken van facturen.',
+ 'live_preview_help' => 'Toon een live PDF-voorbeeld op de factuurpagina.',
+ 'force_pdfjs_help' => 'Vervang de ingebouwde PDF-viewer in :chrome_link en :firefox_link. Schakel dit in als uw browser de PDF automatisch download.',
'force_pdfjs' => 'Download voorkomen',
- 'redirect_url' => 'Redirect URL',
+ 'redirect_url' => 'Redirect-URL',
'redirect_url_help' => 'Optioneel kan een URL opgegeven worden om naar door te verwijzen nadat een betaling is ingevoerd.',
'save_draft' => 'Concept opslaan',
- 'refunded_credit_payment' => 'Gecrediteerde krediet betaling',
+ 'refunded_credit_payment' => 'Krediet is terugbetaald',
'keyboard_shortcuts' => 'Toetsenbord sneltoetsen',
- 'toggle_menu' => 'Toggle menu',
+ 'toggle_menu' => 'Menu in-/uitklappen',
'new_...' => 'Nieuw...',
'list_...' => 'Lijst...',
'created_at' => 'Aanmaakdatum',
'contact_us' => 'Contacteer ons',
'user_guide' => 'Gebruikershandleiding',
- 'promo_message' => 'Upgrade voor :expires en krijg :amount korting op je eerste jaar met onze Pro en Enterprise pakketten.',
+ 'promo_message' => 'Upgrade voor :expires en krijg :amount korting op uw eerste jaar met onze Pro- en Enterprise-abonnementen.',
'discount_message' => ':amount korting vervalt :expires',
'mark_paid' => 'Markeer als betaald',
'marked_sent_invoice' => 'De factuur is gemarkeerd als verzonden',
@@ -1966,34 +1966,34 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'debug' => 'Debug',
'https' => 'HTTPS',
'require' => 'Vereis',
- 'license_expiring' => 'Opmerking: uw licentie zal vervallen in :count dagen, :link om het te verlengen.',
+ 'license_expiring' => 'Opmerking: uw licentie komt te vervallen in :count dagen, navigeer naar :link om uw licentie te verlengen.',
'security_confirmation' => 'Uw e-mailadres is bevestigd.',
- 'white_label_expired' => 'Uw white label licentie is verlopen, gelieve te overwegen om dit te vernieuwen om zo ons project mee te helpen ondersteunen.',
+ 'white_label_expired' => 'Uw whitelabel-licentie is verlopen, gelieve te overwegen om dit te vernieuwen om zo ons project mee te helpen ondersteunen.',
'renew_license' => 'Licentie vernieuwen',
'iphone_app_message' => 'Overweeg onze :link te downloaden',
'iphone_app' => 'iPhone app',
'android_app' => 'Android app',
'logged_in' => 'Aangemeld',
- 'switch_to_primary' => 'Schakel over naar uw primair bedrijf (:name) om uw abonnement te beheren.',
+ 'switch_to_primary' => 'Schakel over naar uw primaire bedrijf (:name) om uw abonnement te beheren.',
'inclusive' => 'Inclusief',
'exclusive' => 'Exclusief',
- 'postal_city_state' => 'Postcode/Stad/Provincie',
+ 'postal_city_state' => 'Postcode/stad/provincie',
'phantomjs_help' => 'In sommige gevallen gebruikt de app :link_phantom om het PDF-bestand te genereren, installeer :link_docs om het lokaal te genereren.',
'phantomjs_local' => 'Lokaal PhantomJS gebruiken',
'client_number' => 'Klantnummer',
'client_number_help' => 'Geef een voorvoegsel of een aangepast patroon om klantnummers dynamisch te genereren.',
- 'next_client_number' => 'Het volgende klantnummer is :number.',
+ 'next_client_number' => 'Het eerstvolgende klantnummer is :number.',
'generated_numbers' => 'Gegenereerde nummers',
'notes_reminder1' => 'Eerste herinnering',
'notes_reminder2' => 'Tweede herinnering',
'notes_reminder3' => 'Derde herinnering',
'notes_reminder4' => 'Herinnering',
- 'bcc_email' => 'BCC Email',
+ 'bcc_email' => 'BCC e-mail',
'tax_quote' => 'BTW offerte',
'tax_invoice' => 'BTW factuur',
'emailed_invoices' => 'De facturen zijn gemaild',
'emailed_quotes' => 'De offertes zijn gemaild',
- 'website_url' => 'Website URL',
+ 'website_url' => 'Website-URL',
'domain' => 'Domein',
'domain_help' => 'Wordt gebruikt in het klantenportaal en bij het versturen van e-mails.',
'domain_help_website' => 'Wordt gebruikt bij het versturen van e-mails.',
@@ -2070,7 +2070,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'create_project' => 'Project aanmaken',
'create_vendor' => 'Leverancier aanmaken',
'create_expense_category' => 'Categorie aanmaken',
- 'pro_plan_reports' => ':link om rapporten te activeren door te abonneren op het Pro Plan',
+ 'pro_plan_reports' => ':link om rapporten te activeren door te abonneren op het Pro-abonnement',
'mark_ready' => 'Markeer als gereed',
'limits' => 'Limieten',
@@ -2081,7 +2081,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'fees_sample' => 'De toeslag voor een :amount factuur is :total.',
'discount_sample' => 'De korting voor een :amount factuur is :total.',
'no_fees' => 'Geen transactiekosten',
- 'gateway_fees_disclaimer' => 'Waarschuwing: niet alle staten/betalingsgateways laten het toe om kosten toe te voegen, gelieve lokale wetten/servicevoorwaarden te raadplegen.',
+ 'gateway_fees_disclaimer' => 'Waarschuwing: niet alle jurisdicties/betaalproviders staan het toe om kosten toe te voegen. Gelieve lokale wetgeving en/of servicevoorwaarden te raadplegen.',
'percent' => 'Procent',
'location' => 'Locatie',
'line_item' => 'Regelitem',
@@ -2090,10 +2090,10 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'location_second_surcharge' => 'Ingeschakeld - Tweede toeslag',
'location_line_item' => 'Ingeschakeld - Regelitem',
'online_payment_surcharge' => 'Online betalingstoeslag',
- 'gateway_fees' => 'Transactiekosten Gateway',
+ 'gateway_fees' => 'Transactiekosten betaalprovider',
'fees_disabled' => 'Transactiekosten zijn uitgeschakeld',
'gateway_fees_help' => 'Online betalingstoeslag/korting automatisch toevoegen.',
- 'gateway' => 'Gateway',
+ 'gateway' => 'Betaalprovider',
'gateway_fee_change_warning' => 'Als er onbetaalde facturen met transactiekosten zijn, moeten die handmatig bijgewerkt worden.',
'fees_surcharge_help' => 'Toeslag aanpassen :link.',
'label_and_taxes' => 'label en belastingen',
@@ -2109,18 +2109,18 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'reset_counter_help' => 'De factuur en offerte tellers automatisch resetten.',
'auto_bill_failed' => 'Autofacturatie voor factuur :invoice_number mislukt',
'online_payment_discount' => 'Online betalingskorting',
- 'created_new_company' => 'Nieuw bedrijf succesfol aangemaakt',
- 'fees_disabled_for_gateway' => 'Transactiekosten zijn uitgeschakeld voor deze gateway.',
+ 'created_new_company' => 'Nieuw bedrijf succesvol aangemaakt',
+ 'fees_disabled_for_gateway' => 'Transactiekosten zijn uitgeschakeld voor deze betaalprovider.',
'logout_and_delete' => 'Uitloggen/account opzeggen',
'tax_rate_type_help' => 'Inbegrepen belastingstarieven passen de kosten van het regelitem aan wanneer deze worden geselecteerd. Alleen de niet inbegrepen belastingtarieven kunnen als standaard worden gebruikt.',
- 'credit_note' => 'Creditnota',
+ 'credit_note' => 'Creditfactuur',
'credit_issued_to' => 'Krediet afgegeven aan',
'credit_to' => 'Krediet aan',
'your_credit' => 'Uw krediet',
'credit_number' => 'Creditnummer',
- 'create_credit_note' => 'Creditnota aanmaken',
+ 'create_credit_note' => 'Creditfactuur aanmaken',
'menu' => 'Menu',
- 'error_incorrect_gateway_ids' => 'Fout: De gateway tabel heeft foutieve id\'s.',
+ 'error_incorrect_gateway_ids' => 'Fout: de betaalprovider-tabel bevat foutieve id\'s.',
'purge_data' => 'Wis gegevens',
'delete_data' => 'Verwijder gegevens',
'purge_data_help' => 'Alle gegevens permanent verwijderen, maar behoud het account en instellingen.',
@@ -2128,11 +2128,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'purge_successful' => 'De bedrijfsgegevens zijn gewist',
'forbidden' => 'Verboden',
'purge_data_message' => 'Waarschuwing: Dit zal uw gegevens verwijderen. Er is geen manier om dit ongedaan te maken.',
- 'contact_phone' => 'Contact telefoon',
- 'contact_email' => 'Contact e-mail',
- 'reply_to_email' => 'Antwoord naar e-mail',
- 'reply_to_email_help' => 'Geef het antwoord-aan adres voor klant e-mails.',
- 'bcc_email_help' => 'Dit adres heimelijk gebruiken met klant e-mails.',
+ 'contact_phone' => 'Telefoon contactpersoon',
+ 'contact_email' => 'E-mailadres contactpersoon',
+ 'reply_to_email' => 'Reply-To e-mailadres',
+ 'reply_to_email_help' => 'Specificeer het antwoordadres voor e-mails van klanten.',
+ 'bcc_email_help' => 'Gebruik dit adres als BCC-adres voor e-mails naar klanten.',
'import_complete' => 'Het importeren is uitgevoerd.',
'confirm_account_to_import' => 'Gelieve uw account te bevestigen om de gegevens te importeren.',
'import_started' => 'Het importeren is gestart, we sturen u een e-mail van zodra het proces afgerond is.',
@@ -2146,9 +2146,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'contact_fields' => 'Contact velden',
'custom_contact_fields_help' => 'Voeg een veld toe bij het creëren van een contact en toon het label en de waarde op de PDF.',
'datatable_info' => ':start tot :end van :total items worden getoond',
- 'credit_total' => 'Totaal Credit',
- 'mark_billable' => 'Markeer als factureerbaar',
- 'billed' => 'Gefactureerd',
+ 'credit_total' => 'Totaal krediet',
+ 'mark_billable' => 'Markeer als inbaar',
+ 'billed' => 'Geïnd',
'company_variables' => 'Bedrijfsvariabelen',
'client_variables' => 'Klant variabelen',
'invoice_variables' => 'Factuur variabelen',
@@ -2157,13 +2157,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'invalid_file' => 'Ongeldig bestandstype',
'add_documents_to_invoice' => 'Voeg documenten toe aan uw factuur',
'mark_expense_paid' => 'Markeer als betaald',
- 'white_label_license_error' => 'De licentie validatie is mislukt. De licentie is verlopen of te vaak geactiveerd. Email contact@invoiceninja.com voor meer informatie.',
- 'plan_price' => 'Plan prijs',
+ 'white_label_license_error' => 'De licentie validatie is mislukt. De licentie is verlopen of te vaak geactiveerd. E-mail contact@invoiceninja.com voor meer informatie.',
+ 'plan_price' => 'Abonnementsprijs',
'wrong_confirmation' => 'Incorrecte bevestigingscode',
'oauth_taken' => 'Het account is al geregistreerd',
'emailed_payment' => 'De betaling is per mail verstuurd',
'email_payment' => 'E-mail betaling',
- 'invoiceplane_import' => 'Gebruik :link om uw data te migreren van InvoicePlane.',
+ 'invoiceplane_import' => 'Gebruik :link om uw data te migreren vanuit InvoicePlane.',
'duplicate_expense_warning' => 'Waarschuwing: Deze :link kan een duplicaat zijn',
'expense_link' => 'uitgave',
'resume_task' => 'Hervat taak',
@@ -2194,12 +2194,12 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'mailgun_private_key' => 'Mailgun privésleutel',
'brevo_domain' => 'Brevo-domein',
'brevo_private_key' => 'Brevo-privésleutel',
- 'send_test_email' => 'Send Test Email',
+ 'send_test_email' => 'Verstuur teste-mail',
'select_label' => 'Selecteer label',
'label' => 'Label',
'service' => 'Service',
- 'update_payment_details' => 'Betalingsdetails bijwerken',
- 'updated_payment_details' => 'De betalingsdetails zijn gewijzigd',
+ 'update_payment_details' => 'Betaalgegevens bijwerken',
+ 'updated_payment_details' => 'De betaalgegevens zijn gewijzigd',
'update_credit_card' => 'Krediet kaart bijwerken',
'recurring_expenses' => 'Terugkerende uitgaven',
'recurring_expense' => 'Terugkerende uitgave',
@@ -2220,7 +2220,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'recurring_prefix' => 'Terugkerend voorvoegsel',
'options' => 'Opties',
'credit_number_help' => 'Geef een voorvoegsel of een aangepast patroon om kredietnummers dynamisch te genereren.',
- 'next_credit_number' => 'Het volgende kredietnummer is :number.',
+ 'next_credit_number' => 'Het eerstvolgende kredietnummer is :number.',
'padding_help' => 'Het aantal nullen om het nummer op te vullen.',
'import_warning_invalid_date' => 'Waarschuwing: het datumformaat lijkt ongeldig te zijn.',
'product_notes' => 'Productopmerkingen',
@@ -2361,14 +2361,14 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'currency_gold_troy_ounce' => 'Gouden Troy Ounce',
'currency_nicaraguan_córdoba' => 'Nicaraguaans Córdoba',
'currency_malagasy_ariary' => 'Malagassische ariarium',
- "currency_tongan_paanga" => "Tongan Pa'anga",
+ "currency_tongan_paanga" => "Tongaanse pa'anga",
- 'review_app_help' => 'We hopen dat je het leuk vindt om de app te gebruiken. Als je zou overwegen :link, zouden we dat zeer op prijs stellen!',
+ 'review_app_help' => 'We hopen dat u veel gemak heeft aan het gebruik van deze app. Als u :link zou overwegen, stellen wij dat zeer op prijs!',
'writing_a_review' => 'een recensie schrijven',
'tax1' => 'Eerste belasting',
'tax2' => 'Tweede belasting',
- 'fee_help' => 'Gateway vergoedingen zijn de kosten die gelden voor toegang tot de financiële netwerken die de verwerking van online betalingen behandelen.',
+ 'fee_help' => 'Transactiekosten omvatten de kosten die gelden voor toegang tot de financiële netwerken die de verwerking van online betalingen behandelen.',
'format_export' => 'Uitvoerformaat',
'custom1' => 'Eerste aangepaste',
'custom2' => 'Tweede aangepaste',
@@ -2390,8 +2390,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'item_tax2' => 'Artikel belasting 2',
'delete_company' => 'Verwijder bedrijf',
- 'delete_company_help' => 'Permanent je bedrijf verwijderen inclusief alle gegevens en instellingen.',
- 'delete_company_message' => 'Waarschuwing: Hiermee verwijder je permanent je bedrijf, dit kan niet worden ontdaan.',
+ 'delete_company_help' => 'Permanent uw bedrijf verwijderen, inclusief alle gegevens en instellingen.',
+ 'delete_company_message' => 'Waarschuwing: Hiermee verwijdert u permanent uw bedrijf, dit kan niet ongedaan worden gemaakt.',
'applied_discount' => 'De kortingscode is toegevoegd, de prijs van het gekozen plan is verlaagd met :discount%.',
'applied_free_year' => 'De kortingsbon is toegepast, uw account is gedurende een jaar geüpgraded naar pro.',
@@ -2408,8 +2408,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'purge_details' => 'De gegevens in het account (:account) zijn gewist',
'deleted_company' => 'Het bedrijf is verwijderd',
'deleted_account' => 'Account geannuleerd',
- 'deleted_company_details' => 'Je bedrijf (:account) is verwijderd',
- 'deleted_account_details' => 'Je account (:account) is verwijderd',
+ 'deleted_company_details' => 'Uw bedrijf (:account) is verwijderd',
+ 'deleted_account_details' => 'Uw account (:account) is verwijderd',
'alipay' => 'Alipay',
'sofort' => 'Sofort',
@@ -2417,11 +2417,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'name_without_special_characters' => 'Geef een naam op met enkel letters van a-z en spaties',
'enable_alipay' => 'Accepteer Alipay',
'enable_sofort' => 'Accepteer Europese banktransacties',
- 'stripe_alipay_help' => 'Deze gateways moeten ook worden geactiveerd in :link.',
+ 'stripe_alipay_help' => 'Deze betaalprovider moeten ook worden geactiveerd in :link.',
'calendar' => 'Kalender',
- 'pro_plan_calendar' => ':link om de kalender in te schakelen door lid te worden van het Pro Plan',
+ 'pro_plan_calendar' => ':link om de kalender in te schakelen door te abonneren op het Pro-abonnement',
- 'what_are_you_working_on' => 'Waar werk je aan?',
+ 'what_are_you_working_on' => 'Waar werkt u aan?',
'time_tracker' => 'Tijdregistratie',
'refresh' => 'Verversen',
'filter_sort' => 'Filter/Sorteer',
@@ -2449,7 +2449,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'time_hr' => 'uur',
'time_hrs' => 'uren',
'clear' => 'Wis',
- 'warn_payment_gateway' => 'Opmerking: voor het accepteren van online betalingen is een betalingsgateway vereist. :link om er een toe te voegen.',
+ 'warn_payment_gateway' => 'Opmerking: voor het accepteren van online betalingen is een betaalprovider vereist. :link om er een toe te voegen.',
'task_rate' => 'Taak tarief',
'task_rate_help' => 'Stel het standaardtarief in voor gefactureerde taken.',
'past_due' => 'Verlopen',
@@ -2465,7 +2465,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'recover' => 'Herstel',
'apply' => 'Toepassen',
'recover_white_label_header' => 'Herstel whitelabel-licentie',
- 'apply_white_label_header' => 'Whitelabel licentie toepassen',
+ 'apply_white_label_header' => 'Whitelabel-licentie toepassen',
'videos' => 'Video\'s',
'video' => 'Video',
'return_to_invoice' => 'Terug naar factuur',
@@ -2475,7 +2475,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'custom_value1' => 'Aangepaste waarde 1',
'custom_value2' => 'Aangepaste waarde 2',
'enable_two_factor' => 'Tweestaps-authenticatie',
- 'enable_two_factor_help' => 'Gebruik je telefoon om je identiteit te bevestigen bij het inloggen',
+ 'enable_two_factor_help' => 'Gebruik uw telefoon om uw identiteit te bevestigen bij het inloggen',
'two_factor_setup' => 'Tweestaps-authenticatie instellen',
'two_factor_setup_help' => 'Scan de streepjescode met een :link compatibele app.',
'one_time_password' => 'Eenmalig wachtwoord',
@@ -2494,18 +2494,18 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'default' => 'Standaard',
'shipping_address' => 'Leveringsadres',
'bllling_address' => 'Factuuradres',
- 'billing_address1' => 'Facturatie straat',
- 'billing_address2' => 'Facturatie Apt/Suite',
- 'billing_city' => 'Facturatiestad',
- 'billing_state' => 'Facturatie Staat/Provincie',
- 'billing_postal_code' => 'Facturatie Postcode',
- 'billing_country' => 'Facturatieland',
- 'shipping_address1' => 'Leveringsstraat',
- 'shipping_address2' => 'Leverings Apt/Suite',
- 'shipping_city' => 'Leveringsstad',
- 'shipping_state' => 'Leverings Staat/Provincie',
- 'shipping_postal_code' => 'Leverings Postcode',
- 'shipping_country' => 'Leveringsland',
+ 'billing_address1' => 'Straat factuuradres',
+ 'billing_address2' => 'Appartement/busnr. factuuradres',
+ 'billing_city' => 'Stad factuuradres',
+ 'billing_state' => 'Staat/provincie factuuradres',
+ 'billing_postal_code' => 'Postcode factuuradres',
+ 'billing_country' => 'Land factuuradres',
+ 'shipping_address1' => 'Straat leveringsadres',
+ 'shipping_address2' => 'Appartement/busnr. leveringsadres',
+ 'shipping_city' => 'Stad leveringsadres',
+ 'shipping_state' => 'Staat/provincie leveringsadres',
+ 'shipping_postal_code' => 'Postcode leveringsadres',
+ 'shipping_country' => 'Land leveringsadres',
'classify' => 'Classificeren',
'show_shipping_address_help' => 'Vereisen dat de klant zijn leveringsadres opgeeft',
'ship_to_billing_address' => 'Verzend naar factuuradres',
@@ -2521,13 +2521,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'invalid_one_time_password' => 'Eenmalig wachtwoord ongeldig',
'apple_pay' => 'Apple/Google Pay',
'enable_apple_pay' => 'Accepteer Apple Pay en Pay met Google',
- 'requires_subdomain' => 'Deze betalingsmethode vereist dat een :link.',
+ 'requires_subdomain' => 'Deze betaalmethode vereist dat een :link.',
'subdomain_is_set' => 'subdomein is ingesteld',
'verification_file' => 'Verificatiebestand',
'verification_file_missing' => 'Het verificatiebestand is nodig om betalingen te accepteren.',
'apple_pay_domain' => 'Gebruik :domain als het domein in :link.',
'apple_pay_not_supported' => 'Sorry, Apple/Google Pay wordt niet ondersteund door uw browser',
- 'optional_payment_methods' => 'Optionele betalingsmethodes',
+ 'optional_payment_methods' => 'Optionele betaalmethoden',
'add_subscription' => 'Abonnement toevoegen',
'target_url' => 'Doel',
'target_url_help' => 'Wanneer de geselecteerde gebeurtenis plaatsvindt, zal de app de entiteit op de doel-URL posten.',
@@ -2562,7 +2562,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'project_error_multiple_clients' => 'De projecten kunnen niet tot meerdere klanten behoren',
'invoice_project' => 'Factureer project',
'module_recurring_invoice' => 'Terugkerende facturen',
- 'module_credit' => 'Creditnota\'s',
+ 'module_credit' => 'Creditfacturen',
'module_quote' => 'Offertes & voorstellen',
'module_task' => 'Taken & projecten',
'module_expense' => 'Uitgaven & leveranciers',
@@ -2571,7 +2571,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'send_client_reminders' => 'Verzend e-mailherinneringen',
'can_view_tasks' => 'Taken zijn zichtbaar in de portaal',
'is_not_sent_reminders' => 'Herinneringen worden niet verzonden',
- 'promotion_footer' => 'Uw promotie verloopt binnenkort, :link om nu te upgraden.',
+ 'promotion_footer' => 'Uw korting verloopt binnenkort, :link om nu te upgraden.',
'unable_to_delete_primary' => 'Opmerking: om dit bedrijf te verwijderen, verwijdert u eerst alle gekoppelde bedrijven.',
'please_register' => 'Gelieve uw account te registreren',
'processing_request' => 'Aanvraag wordt verwerkt',
@@ -2580,8 +2580,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'inclusive_taxes_help' => 'Neem belastingen op in de uitgave',
'inclusive_taxes_notice' => 'Deze instelling kan niet worden gewijzigd nadat een factuur is aangemaakt.',
'inclusive_taxes_warning' => 'Waarschuwing: bestaande facturen moeten opnieuw worden opgeslagen',
- 'copy_shipping' => 'Levering kopiëren',
- 'copy_billing' => 'Facturatie kopiëren',
+ 'copy_shipping' => 'Leveringsadres kopiëren',
+ 'copy_billing' => 'Factuuradres kopiëren',
'quote_has_expired' => 'De offerte is verlopen, neem contact op met de verkoper.',
'empty_table_footer' => '0 tot 0 van 0 vermeldingen tonen',
'do_not_trust' => 'Dit apparaat niet onthouden',
@@ -2605,7 +2605,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'signature_on_invoice_help' => 'Voeg de volgende code toe om de handtekening van de klant op de PDF weer te geven.',
'signature_on_pdf' => 'Weergeven op PDF',
'signature_on_pdf_help' => 'Toon de handtekening van de klant op de factuur/offerte PDF.',
- 'expired_white_label' => 'De whitelabel licentie is verlopen',
+ 'expired_white_label' => 'De whitelabel-licentie is verlopen',
'return_to_login' => 'Terug naar login',
'convert_products_tip' => 'Opmerking: voeg een :link met de naam ":name" toe om de wisselkoers te zien.',
'amount_greater_than_balance' => 'Het bedrag is groter dan het factuursaldo, er wordt een creditfactuur aangemaakt met het resterende bedrag.',
@@ -2692,15 +2692,15 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'no_assets' => 'Geen afbeeldingen, slepen om te uploaden',
'add_image' => 'Afbeelding toevoegen',
'select_image' => 'Afbeelding selecteren',
- 'upgrade_to_upload_images' => 'Upgrade to the Enterprise Plan to upload files & images',
+ 'upgrade_to_upload_images' => 'Upgrade naar het Enterprise-abonnement om bestanden en afbeeldingen te uploaden',
'delete_image' => 'Afbeelding verwijderen',
- 'delete_image_help' => 'Waarschuwing: als je de afbeelding verwijdert, wordt deze uit alle voorstellen verwijderd.',
+ 'delete_image_help' => 'Waarschuwing: als u de afbeelding verwijdert, dan wordt deze uit alle voorstellen verwijderd.',
'amount_variable_help' => 'Opmerking: Het veld $amount op de factuur wordt gebruikt als gedeeltelijke betaling als dit is ingesteld, anders wordt het factuur saldo gebruikt.',
'taxes_are_included_help' => 'Opmerking: inbegrepen heffingen/belastingen zijn ingeschakeld.',
'taxes_are_not_included_help' => 'Opmerking: inbegrepen heffingen/belastingen zijn niet ingeschakeld.',
'change_requires_purge' => 'Het aanzetten van deze instelling vereist :link van de accountgegevens.',
'purging' => 'opschonen',
- 'warning_local_refund' => 'De terugbetaling zal worden geregistreerd in de app, maar zal NIET worden verwerkt door de betalingsgateway.',
+ 'warning_local_refund' => 'De terugbetaling zal worden geregistreerd in de app, maar zal NIET worden verwerkt door de betaalprovider.',
'email_address_changed' => 'E-mailadres is gewijzigd',
'email_address_changed_message' => 'Het e-mailadres voor uw account is gewijzigd van :old_email in :new_email.',
'test' => 'Test',
@@ -2726,17 +2726,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'group' => 'Groep',
'subgroup' => 'Subgroep',
'unset' => 'Unset',
- 'received_new_payment' => 'Je hebt een nieuwe betaling ontvangen!',
+ 'received_new_payment' => 'U hebt een nieuwe betaling ontvangen!',
'slack_webhook_help' => 'Ontvang betalingsmeldingen via :link.',
'slack_incoming_webhooks' => 'Slack incoming webhooks',
'accept' => 'Accepteer',
'accepted_terms' => 'Nieuwe servicevoorwaarden geaccepteerd',
'invalid_url' => 'Ongeldige URL',
- 'workflow_settings' => 'Workflow instellingen',
+ 'workflow_settings' => 'Workflowinstellingen',
'auto_email_invoice' => 'Automatisch e-mailen',
'auto_email_invoice_help' => 'Converteer een offerte automatisch naar een factuur wanneer deze goedgekeurd is.',
'auto_archive_invoice' => 'Automatisch archiveren',
- 'auto_archive_invoice_help' => 'Archiveer facturen automatisch indien betaald',
+ 'auto_archive_invoice_help' => 'Facturen automatisch archiveren bij betaling',
'auto_archive_quote' => 'Automatisch archiveren',
'auto_archive_quote_help' => 'Archiveer offertes automatisch indien omgezet naar factuur',
'require_approve_quote' => 'Verplicht goedkeuring offerte',
@@ -2751,7 +2751,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'purge_client_warning' => 'Alle gerelateerde gegevens (facturen, taken, uitgaven, documenten, enz.) worden ook gewist.',
'clone_product' => 'Dupliceer product',
'item_details' => 'Onderdeel details',
- 'send_item_details_help' => 'Verzend regelitemdetails naar de betalingsgateway.',
+ 'send_item_details_help' => 'Deel factuurregels met de betaalprovider.',
'view_proposal' => 'Toon voorstel',
'view_in_portal' => 'Toon in portaal',
'cookie_message' => 'Deze website maakt gebruik van cookies om ervoor te zorgen dat u de beste ervaring op onze website krijgt.',
@@ -2768,7 +2768,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'project_field' => 'Project veld',
'expense_field' => 'Uitgave veld',
'vendor_field' => 'Leverancier veld',
- 'company_field' => 'Bedrijf veld',
+ 'company_field' => 'Bedrijfsveld',
'invoice_field' => 'Factuur veld',
'invoice_surcharge' => 'Factuurkost',
'custom_task_fields_help' => 'Voeg een veld toe bij het maken van een taak.',
@@ -2793,9 +2793,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'proposal_editor' => 'voorstel editor',
'background' => 'Achtergrond',
'guide' => 'Gids',
- 'gateway_fee_item' => 'Heffingsitem Gateway',
- 'gateway_fee_description' => 'Heffingstoeslag Gateway',
- 'gateway_fee_discount_description' => 'Heffingskorting Gateway',
+ 'gateway_fee_item' => 'Toeslagdetails betaalprovider',
+ 'gateway_fee_description' => 'Toeslag betaalprovider',
+ 'gateway_fee_discount_description' => 'Heffingskorting betaalprovider',
'show_payments' => 'Toon betalingen',
'show_aging' => 'Toon toekomstige',
'reference' => 'Referentie',
@@ -2849,7 +2849,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'refresh_data' => 'Gegevens verversen',
'blank_contact' => 'Leeg contact',
'no_records_found' => 'Geen gegevens gevonden',
- 'industry' => 'Industrie',
+ 'industry' => 'Sector',
'size' => 'Grootte',
'net' => 'Betaaltermijn',
'show_tasks' => 'Toon taken',
@@ -2898,25 +2898,25 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'local_part_unavailable' => 'Naam reeds in gebruik',
'local_part_available' => 'Naam beschikbaar',
'local_part_invalid' => 'Ongeldige naam (alleen alfanumeriek, geen spaties',
- 'local_part_help' => 'Personaliseer het eerste deel van het inkomende e-mailadres, vb. YOUR_NAME@support.invoiceninja',
+ 'local_part_help' => 'Personaliseer het eerste deel van het inkomende e-mailadres, bijv. YOUR_NAME@support.invoiceninja',
'from_name_help' => 'De \'van\'-naam is de herkenbare afzender die wordt getoond in plaats van het e-mailadres, zoals Helpdesk',
- 'local_part_placeholder' => 'JOUW_NAAM',
+ 'local_part_placeholder' => 'UW_NAAM',
'from_name_placeholder' => 'Support centrum',
'attachments' => 'Bijlagen',
'client_upload' => 'Klant uploads',
'enable_client_upload_help' => 'Laat klanten documenten/bijlagen uploaden',
- 'max_file_size_help' => 'Maximale bestandsgrootte (KB) wordt beperkt door de post_max_size en upload_max_filesize variabelen zoals ingesteld in uw PHP.INI',
+ 'max_file_size_help' => 'De maximale bestandsgrootte (KB) wordt beperkt door de post_max_size en upload_max_filesize variabelen zoals ingesteld in uw PHP.INI',
'max_file_size' => 'Maximale bestandsgrootte',
'mime_types' => 'MIME-types',
'mime_types_placeholder' => '.pdf, .docx, .jpg',
'mime_types_help' => 'Komma-gescheiden lijst met toegestane MIME-types, laat leeg voor alle',
- 'ticket_number_start_help' => 'Ticket number must be greater than the current ticket number',
- 'new_ticket_template_id' => 'New ticket',
- 'new_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a new ticket is created',
- 'update_ticket_template_id' => 'Updated ticket',
- 'update_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a ticket is updated',
- 'close_ticket_template_id' => 'Closed ticket',
- 'close_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a ticket is closed',
+ 'ticket_number_start_help' => 'Ticketnummer moet hoger of gelijk zijn aan het huidige ticketnummer',
+ 'new_ticket_template_id' => 'Nieuw ticket',
+ 'new_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een nieuw ticket is aangemaakt, een automatische respons gestuurd naar de klant of contactpersoon',
+ 'update_ticket_template_id' => 'Bijgewerkt ticket',
+ 'update_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een ticket is bijgewerkt, een automatische respons gestuurd naar de klant of contactpersoon',
+ 'close_ticket_template_id' => 'Gesloten ticket',
+ 'close_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een ticket is gesloten, een automatische respons gestuurd naar de klant of contactpersoon',
'default_priority' => 'Prioriteit',
'alert_new_comment_id' => 'Nieuwe opmerking',
'update_ticket_notification_list' => 'Additionele notificaties bij nieuwe opmerkingen',
@@ -2945,7 +2945,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'hosted_login' => 'Hosted login',
'selfhost_login' => 'Self-Host login',
'google_login' => 'Google Login',
- 'thanks_for_patience' => 'Bedankt voor uw geduld terwijl we werken aan de implementatie van deze functies.
We hopen ze in de komende maanden af te ronden.
Tot die tijd blijven wij de stichting steunen',
+ 'thanks_for_patience' => 'Bedankt voor uw geduld terwijl we werken aan het implementeren van deze functies.
We hopen de functionaliteit in de komende maanden toe te kunnen voegen.
-IP: :ip
-Tijd: :time
-Email: :email ',
+ 'new_login_description' => 'U bent recent ingelogd geweest in uw Invoice Ninja account van een nieuwe locatie of toestel:
+IP-adres: :ip
+Tijdstip: :time
+E-mail: :email ',
'contact_details' => 'Contactgegevens',
'download_backup_subject' => 'De backup van uw bedrijf is beschikbaar om te downloaden.',
'account_passwordless_login' => 'Toegang zonder wachtwoord',
'user_duplicate_error' => 'Kan dezelfde gebruiker niet aan hetzelfde bedrijf toevoegen',
'user_cross_linked_error' => 'Gebruiker bestaat reeds maar kan niet gekoppeld worden aan meerdere accounts',
- 'ach_verification_notification_label' => 'ACH verificatie',
- 'ach_verification_notification' => 'Voor het koppelen van bankrekeningen is verificatie vereist. De betalingsgateway stuurt hiervoor automatisch twee kleine stortingen. Het duurt 1-2 werkdagen voordat deze stortingen op het online afschrift van de klant verschijnen.',
+ 'ach_verification_notification_label' => 'ACH-verificatie',
+ 'ach_verification_notification' => 'Voor het koppelen van bankrekeningen is verificatie vereist. De betaalprovider stuurt hiervoor automatisch twee kleine stortingen. Het duurt 1-2 werkdagen voordat deze stortingen op het online-afschrift van de klant verschijnen.',
'login_link_requested_label' => 'Inloglink opgevraagd',
'login_link_requested' => 'Er was een aanvraag om in te loggen door middel van een link. Als u dit niet bent geweest kunt u dit negeren.',
'invoices_backup_subject' => 'Uw facturen zijn klaar om te downloaden',
'migration_failed_label' => 'Integratie mislukt',
'migration_failed' => 'Er is iets fout gegaan tijdens de migratie van het volgende bedrijf:',
'client_email_company_contact_label' => 'Als u vragen heeft kunt u contact met ons opnemen, wij zijn hier om te helpen!',
- 'quote_was_approved_label' => 'Offerde werd goedgekeurd',
+ 'quote_was_approved_label' => 'Offerte is goedgekeurd',
'quote_was_approved' => 'We willen u laten weten dat de offerte is goedgekeurd.',
'company_import_failure_subject' => 'Fout bij het importeren van :company',
'company_import_failure_body' => 'Er was een probleem bij het importeren van de bedrijfsdata, de foutmelding was:',
'recurring_invoice_due_date' => 'Vervaldatum',
- 'amount_cents' => 'Bedrag in pennies, pence of centen. Voorbeeld: voor €0.10 voer 10 in',
- 'default_payment_method_label' => 'Standaard betalingsmethode',
- 'default_payment_method' => 'Maak dit uw favoriete manier van betalen.',
- 'already_default_payment_method' => 'Dit is jouw voorkeurs manier van betalen.',
- 'auto_bill_disabled' => 'Automatisch Betalen Uitgeschakeld',
- 'select_payment_method' => 'Selecteer een betalingsmethode:',
+ 'amount_cents' => 'Bedrag in centen, pennies of pence. Voorbeeld: voor €0,10 voer 10 in',
+ 'default_payment_method_label' => 'Standaard betaalmethode',
+ 'default_payment_method' => 'Maak dit uw voorkeursbetaalmethode.',
+ 'already_default_payment_method' => 'Dit is uw voorkeursbetaalmethode.',
+ 'auto_bill_disabled' => 'Automatisch betalen uitgeschakeld',
+ 'select_payment_method' => 'Selecteer een betaalmethode:',
'login_without_password' => 'Inloggen zonder wachtwoord',
'email_sent' => 'E-mail mij wanneer een factuur is verzonden',
'one_time_purchases' => 'Eenmalige aankopen',
'recurring_purchases' => 'Terugkerende aankopen',
- 'you_might_be_interested_in_following' => 'Misschien bent u geïnteresseerd in het volgende',
- 'quotes_with_status_sent_can_be_approved' => 'Only quotes with "Sent" status can be approved. Expired quotes cannot be approved.',
+ 'you_might_be_interested_in_following' => 'Wellicht bent u geïnteresseerd in het volgende',
+ 'quotes_with_status_sent_can_be_approved' => 'Alleen offertes met de status "Verzonden" kunnen worden goedgekeurd. Verlopen offertes kunnen niet worden goedgekeurd.',
'no_quotes_available_for_download' => 'Geen offertes beschikbaar om te downloaden.',
'copyright' => 'Copyright',
'user_created_user' => ':user heeft :created_user aangemaakt om :time',
'company_deleted' => 'Bedrijf verwijderd',
- 'company_deleted_body' => 'Bedrijf [ :company ] werd verwijderd door :user',
+ 'company_deleted_body' => 'Bedrijf [ :company ] is verwijderd door :user',
'back_to' => 'Terug naar :url',
- 'stripe_connect_migration_title' => 'Verbind uw Stripe account',
- 'stripe_connect_migration_desc' => 'Invoice Ninja v5 maakt gebruik van Stripe Connect om uw Stripe account te koppelen aan Invoice Ninja. Dit zorgt voor een extra beveiligingslaag voor uw account. Nu je gegevens zijn gemigreerd, dien je Stripe te autoriseren om betalingen te accepteren in v5.
Om dit te doen gaat u naar Instellingen > Online Betalingen > Gateways configureren. Klik op Stripe Connect en vervolgens onder Settings op Setup Gateway. Dit brengt u naar Stripe om Invoice Ninja te autoriseren en bij terugkomst zal uw account succesvol gekoppeld zijn!',
+ 'stripe_connect_migration_title' => 'Verbind met uw Stripe-account',
+ 'stripe_connect_migration_desc' => 'Invoice Ninja v5 maakt gebruik van Stripe Connect om uw Stripe-account te koppelen aan Invoice Ninja. Dit zorgt voor een extra beveiligingslaag voor uw account. Nu uw gegevens zijn gemigreerd, dient u Stripe te autoriseren om betalingen te accepteren in v5.
Om dit te doen gaat u naar Instellingen > Online Betalingen > Betaalproviders configureren. Klik op Stripe Connect en vervolgens onder Settings op Setup Gateway. Dit brengt u naar Stripe om Invoice Ninja te autoriseren en bij terugkomst zal uw account succesvol gekoppeld zijn!',
'email_quota_exceeded_subject' => 'Account e-mail quota overschreden.',
- 'email_quota_exceeded_body' => 'U heeft in een periode van 24 uur :quota emails verstuurd. Uw uitgaande emails zijn hierbij gepauzeerd.
Uw email quotum zal resetten om 23:00 UTC.',
- 'auto_bill_option' => 'Kies ervoor om deze factuur automatisch te laten aanrekenen of niet.',
+ 'email_quota_exceeded_body' => 'U heeft in een periode van 24 uur :quota e-mails verstuurd. Uw uitgaande e-mails zijn hierbij gepauzeerd.
Uw email quotum zal resetten om 23:00 UTC.',
+ 'auto_bill_option' => 'Kies ervoor om deze factuur al dan niet automatisch te laten verrekenen.',
'lang_Arabic' => 'Arabisch',
'lang_Persian' => 'Perzisch',
'lang_Latvian' => 'Lets',
@@ -4130,13 +4130,13 @@ Email: :email ',
'locality' => 'Lokatie',
'checking' => 'Betaalrekening',
'savings' => 'Spaarrekening',
- 'unable_to_verify_payment_method' => 'Kan de betalingsmethode niet verifiëren.',
- 'generic_gateway_error' => 'Gateway-configuratiefout. Controleer uw inloggegevens.',
+ 'unable_to_verify_payment_method' => 'Kan de betaalmethode niet verifiëren.',
+ 'generic_gateway_error' => 'Configuratiefout betaalprovider. Controleer uw inloggegevens.',
'my_documents' => 'Mijn documenten',
'payment_method_cannot_be_preauthorized' => 'Deze betaalmethode kan niet vooraf worden geautoriseerd.',
'kbc_cbc' => 'KBC/CBC',
'bancontact' => 'Bancontact',
- 'sepa_mandat' => 'Door uw IBAN op te geven en deze betaling te bevestigen, machtigt u :company en Stripe, onze betalingsdienstaanbieder, om instructies naar uw bank te sturen om uw rekening te debiteren en uw bank om uw rekening te debiteren in overeenstemming met die instructies. U heeft recht op terugbetaling door uw bank volgens de voorwaarden van uw overeenkomst met uw bank. Een terugbetaling moet worden aangevraagd binnen 8 weken vanaf de datum waarop uw rekening is afgeschreven.',
+ 'sepa_mandat' => 'Door uw IBAN op te geven en deze betaling te bevestigen, machtigt u :company en Stripe, onze betaalprovider, om instructies naar uw bank te sturen om uw bankrekening te debiteren in overeenstemming met voornoemde voorwaarden. U heeft recht op terugbetaling door uw bank volgens de voorwaarden van uw overeenkomst met uw bank. Een terugbetaling moet worden aangevraagd binnen 8 weken vanaf de datum waarop het bedrag van uw rekening is afgeschreven.',
'ideal' => 'iDEAL',
'bank_account_holder' => 'Rekeninghouder',
'aio_checkout' => 'Klik en betaal',
@@ -4149,8 +4149,8 @@ Email: :email ',
'becs' => 'BECS Direct Debit',
'bacs' => 'BACS-incasso',
'payment_type_BACS' => 'BACS-incasso',
- 'missing_payment_method' => 'Voeg eerst een betaalmethode toe voordat je probeert te betalen.',
- 'becs_mandate' => 'Door uw bankrekeninggegevens op te geven, gaat u akkoord met dit automatische incasso-verzoek en de automatische incasso-serviceovereenkomst , en autoriseert u Stripe Payments Australia Pty Ltd ACN 160 180 343 automatische incasso gebruikers-ID-nummer 507156 ("Stripe") om uw rekening te debiteren via het Bulk Electronic Clearing System (BECS) namens :company (de "Handelaar") voor alle bedragen die afzonderlijk door de Handelaar aan u zijn meegedeeld. U verklaart dat u ofwel een rekeninghouder ofwel een tekenbevoegde bent op de hierboven vermelde rekening.',
+ 'missing_payment_method' => 'Voeg eerst een betaalmethode toe voordat u probeert te betalen.',
+ 'becs_mandate' => 'Door uw bankrekeninggegevens te delen, gaat u akkoord met dit verzoek tot automatische incasso en serviceovereenkomst betreffende de automatische incasso, en autoriseert u Stripe Payments Australia Pty Ltd ACN 160 180 343 automatische incasso gebruikers-ID-nummer 507156 ("Stripe") om uw rekening te debiteren via het Bulk Electronic Clearing System (BECS) namens :company (de "Handelaar") voor alle bedragen die afzonderlijk door de Handelaar aan u zijn meegedeeld. U verklaart dat u ofwel een rekeninghouder ofwel een tekenbevoegde bent op de hierboven vermelde rekening.',
'you_need_to_accept_the_terms_before_proceeding' => 'U moet de voorwaarden accepteren voordat u verder gaat.',
'direct_debit' => 'Automatische Incasso',
'clone_to_expense' => 'Dupliceer naar uitgave',
@@ -4159,7 +4159,7 @@ Email: :email ',
'invalid_amount' => 'Ongeldige hoeveelheid. Alleen getallen/decimale waarden.',
'client_payment_failure_body' => 'Betaling voor factuur :invoice voor een bedrag van :amount is mislukt.',
'browser_pay' => 'Google Pay, Apple Pay, Microsoft Pay',
- 'no_available_methods' => 'Er kan geen credit card worden gevonden op uw apparaat. Lees hier meer over. ',
+ 'no_available_methods' => 'Er kan geen creditcard worden gevonden op uw apparaat. Lees hier meer over. ',
'gocardless_mandate_not_ready' => 'Betalingsopdracht nog niet gereed. Probeer het later nog eens.',
'payment_type_instant_bank_pay' => 'Instant Bank Pay',
'payment_type_iDEAL' => 'iDEAL',
@@ -4191,20 +4191,20 @@ Email: :email ',
'please_set_a_password' => 'Voer een account wachtwoord in',
'recommend_desktop' => 'Wij raden de desktop app aan voor de beste werking.',
'recommend_mobile' => 'Wij raden de mobiele app aan voor de beste werking.',
- 'disconnected_gateway' => 'Gateway succesvol ontkoppeld',
+ 'disconnected_gateway' => 'Betaalprovider succesvol ontkoppeld',
'disconnect' => 'Verbreek verbinding',
'add_to_invoices' => 'Voeg toe aan facturen',
'bulk_download' => 'Download',
'persist_data_help' => 'Sla gegevens lokaal op om de app sneller te laten starten. Uitschakelen kan de prestaties in grote accounts verbeteren',
'persist_ui' => 'Interface voorkeuren opslaan',
'persist_ui_help' => 'Sla de UI-status lokaal op om de app op de laatste locatie te laten starten. Uitschakelen kan de prestaties verbeteren',
- 'client_postal_code' => 'Klant postcode',
- 'client_vat_number' => 'Klant BTW-nummer',
+ 'client_postal_code' => 'Postcode klant',
+ 'client_vat_number' => 'BTW-nummer klant',
'has_tasks' => 'Heeft taken',
'registration' => 'Registratie',
'unauthorized_stripe_warning' => 'Autoriseer Stripe om online betalingen te accepteren.',
'update_all_records' => 'Alle records bijwerken',
- 'set_default_company' => 'Stel in als standaard bedrijf',
+ 'set_default_company' => 'Stel in als standaardbedrijf',
'updated_company' => 'Bedrijf succesvol geüpdatet',
'kbc' => 'KBC',
'why_are_you_leaving' => 'Help ons door aan te geven waarom (optioneel)',
@@ -4213,23 +4213,23 @@ Email: :email ',
'error_cross_client_expenses' => 'Kosten moeten allemaal behoren tot dezelfde klant',
'app' => 'App',
'for_best_performance' => 'Download voor de beste prestaties de :app-app',
- 'bulk_email_invoice' => 'Email factuur',
- 'bulk_email_quote' => 'Email offerte',
- 'bulk_email_credit' => 'Email krediet',
- 'removed_recurring_expense' => 'Terugkerende onkosten zijn verwijderd',
+ 'bulk_email_invoice' => 'E-mail factuur',
+ 'bulk_email_quote' => 'E-mail offerte',
+ 'bulk_email_credit' => 'E-mail creditfactuur',
+ 'removed_recurring_expense' => 'Terugkerende uitgaven zijn verwijderd',
'search_recurring_expense' => 'Zoek terugkerende uitgave',
'search_recurring_expenses' => 'Zoek terugkerende uitgaven',
'last_sent_date' => 'Recentste verzenddatum',
'include_drafts' => 'Voeg concepten toe',
'include_drafts_help' => 'Neem conceptrecords op in rapporten',
'is_invoiced' => 'Is gefactureerd',
- 'change_plan' => 'Beheer Plan',
+ 'change_plan' => 'Beheer abonnement',
'persist_data' => 'Gegevens behouden',
'customer_count' => 'Klantenteller',
'verify_customers' => 'Klanten verifiëren',
'google_analytics_tracking_id' => 'Google Analytics Tracking ID',
- 'decimal_comma' => 'Decimaal komma',
- 'use_comma_as_decimal_place' => 'Gebruik een komma als decimaal in formulieren',
+ 'decimal_comma' => 'Komma als decimaalteken',
+ 'use_comma_as_decimal_place' => 'Gebruik een komma als decimaalteken in formulieren',
'select_method' => 'Selecteer methode',
'select_platform' => 'Selecteer platform',
'use_web_app_to_connect_gmail' => 'Gebruik de web-app om verbinding te maken met Gmail',
@@ -4256,19 +4256,19 @@ Email: :email ',
'check_status' => 'Check Status',
'free_trial' => 'Gratis proefversie',
'free_trial_help' => 'Alle accounts krijgen een proefperiode van twee weken van het Pro-abonnement. Zodra de proefperiode is afgelopen, gaat uw account automatisch over naar het gratis abonnement.',
- 'free_trial_ends_in_days' => 'De proefperiode van het Pro-plan eindigt over :count dagen, klik om te upgraden.',
- 'free_trial_ends_today' => 'Vandaag is de laatste dag van de Pro-proefperiode, klik om te upgraden.',
- 'change_email' => 'Wijzig email',
- 'client_portal_domain_hint' => 'Optioneel: Configureer een afzonderlijke domein voor de klantenportaal',
+ 'free_trial_ends_in_days' => 'De proefperiode van het Pro-abonnement eindigt over :count dagen, klik om te upgraden.',
+ 'free_trial_ends_today' => 'Vandaag is de laatste dag van de proefperiode van het Pro-abonnement, klik om te upgraden.',
+ 'change_email' => 'Wijzig e-mail',
+ 'client_portal_domain_hint' => 'Optioneel: configureer een afzonderlijke domein voor de klantenportaal',
'tasks_shown_in_portal' => 'Taken weergegeven in portaal',
'uninvoiced' => 'Gefactureerd',
- 'subdomain_guide' => 'De subdomein wordt gebruikt voor het klantenportaal om links aan te passen op jouw merk m.a.w. https://your-brand.invoicing.co',
- 'send_time' => 'Verzend uur',
- 'import_settings' => 'Importeer settings',
- 'json_file_missing' => 'Geef een JSON bestand op',
+ 'subdomain_guide' => 'De subdomein wordt gebruikt voor het klantenportaal om links aan te passen op uw merk m.a.w. https://your-brand.invoicing.co',
+ 'send_time' => 'Tijdstip verzending',
+ 'import_settings' => 'Importeer instellingen',
+ 'json_file_missing' => 'Geef een JSON-bestand op',
'json_option_missing' => 'Selecteer om instellingen en/of data te importeren',
'json' => 'JSON',
- 'no_payment_types_enabled' => 'Geen betalingsmodalititeiten geactiveerd',
+ 'no_payment_types_enabled' => 'Geen betaalmethoden geactiveerd',
'wait_for_data' => 'Wacht tot de gegevens volledig zijn geladen',
'net_total' => 'Totaal',
'has_taxes' => 'Bevat belastingen',
@@ -4276,7 +4276,7 @@ Email: :email ',
'imported_customers' => 'Succesvol begonnen met het importeren van klanten',
'login_success' => 'Login succesvol',
'login_failure' => 'Inloggen mislukt',
- 'exported_data' => 'Zodra het bestand klaar is, ontvang je een e-mail met een downloadlink',
+ 'exported_data' => 'Zodra het bestand klaar is, ontvangt u een e-mail met een downloadlink',
'include_deleted_clients' => 'Inclusief verwijderde klanten',
'include_deleted_clients_help' => 'Laad records van verwijderde clients',
'step_1_sign_in' => 'Stap 1: Inloggen',
@@ -4294,7 +4294,7 @@ Email: :email ',
'count_sessions' => ':count Sessies',
'invoice_created' => 'Factuur aangemaakt',
'quote_created' => 'Offerte aangemaakt',
- 'credit_created' => 'Creditnota aangemaakt',
+ 'credit_created' => 'Creditfactuur aangemaakt',
'enterprise' => 'Onderneming',
'invoice_item' => 'Factuur item',
'quote_item' => 'Offerte item',
@@ -4305,12 +4305,12 @@ Email: :email ',
'move_up' => 'Verplaats omhoog',
'move_down' => 'Verplaats omlaag',
'move_bottom' => 'Verplaatsknop',
- 'body_variable_missing' => 'Fout: de aangepaste email moet een :body variabele bevatten',
- 'add_body_variable_message' => 'Zorg ervoor dat je een :body variabele gebruikt',
+ 'body_variable_missing' => 'Fout: de aangepaste e-mail moet een :body variabele bevatten',
+ 'add_body_variable_message' => 'Zorg ervoor dat u een :body variabele gebruikt',
'view_date_formats' => 'Bijkijk datumformaten',
'is_viewed' => 'Bekeken',
'letter' => 'Brief',
- 'legal' => 'Legaal',
+ 'legal' => 'Juridisch',
'page_layout' => 'Verticaal',
'portrait' => 'Portrait',
'landscape' => 'Horizontaal',
@@ -4333,14 +4333,14 @@ Email: :email ',
'trial_enabled' => 'Proefperiode ingeschakeld',
'trial_duration' => 'Proefperiode duratie',
'allow_query_overrides' => 'Sta query overrides toe',
- 'allow_plan_changes' => 'Sta planswijzigingen toe',
- 'plan_map' => 'Plan map',
+ 'allow_plan_changes' => 'Sta abonnementswijzigingen toe',
+ 'plan_map' => 'Overzicht abonnement',
'refund_period' => 'Terugbetalingsperiode',
'webhook_configuration' => 'Webhook Configuratie',
'purchase_page' => 'Aankoop pagina',
- 'email_bounced' => 'Email gebounced',
+ 'email_bounced' => 'E-mail gebounced',
'email_spam_complaint' => 'Spam klacht',
- 'email_delivery' => 'Email bezorging',
+ 'email_delivery' => 'E-mail bezorgd',
'webhook_response' => 'Webhook Response',
'pdf_response' => 'PDF Response',
'authentication_failure' => 'Authenticatie Mislukt',
@@ -4352,8 +4352,8 @@ Email: :email ',
'status_color_theme' => 'Status Kleurenthema',
'load_color_theme' => 'Kleurthema laden',
'lang_Estonian' => 'Estland',
- 'marked_credit_as_paid' => 'Creditnota gemarkeerd als betaald',
- 'marked_credits_as_paid' => 'Creditnota\'s gemarkeerd als betaald',
+ 'marked_credit_as_paid' => 'Creditfactuur gemarkeerd als betaald',
+ 'marked_credits_as_paid' => 'Creditfacturen gemarkeerd als betaald',
'wait_for_loading' => 'Data is aan het laden - een moment geduld',
'wait_for_saving' => 'Data is aan het opslaan - een moment geduld',
'html_preview_warning' => 'Opmerking: veranderingen die hier worden gemaakt zijn voorvertoningen, ze moeten hierboven worden toegepast',
@@ -4368,28 +4368,28 @@ Email: :email ',
'to_view_entity_set_password' => 'Om de :entity te bekijken, moet u een wachtwoord instellen.',
'unsubscribe' => 'Afmelden',
'unsubscribed' => 'Afgemeld',
- 'unsubscribed_text' => 'Je bent verwijderd uit meldingen voor dit document',
- 'client_shipping_state' => 'Verzendstaat klant',
- 'client_shipping_city' => 'Opdrachtgever Scheepvaartstad',
- 'client_shipping_postal_code' => 'Postcode verzending klant',
- 'client_shipping_country' => 'Land van verzending van de klant',
+ 'unsubscribed_text' => 'U bent verwijderd uit meldingen voor dit document',
+ 'client_shipping_state' => 'Staat/provincie leveringsadres klant',
+ 'client_shipping_city' => 'Stad leveringsadres klant',
+ 'client_shipping_postal_code' => 'Postcode leveringsadres klant',
+ 'client_shipping_country' => 'Land leveringsadres klant',
'load_pdf' => 'Laad PDF',
'start_free_trial' => 'Start gratis proefperiode',
- 'start_free_trial_message' => 'Start your FREE 14 day trial of the Pro Plan',
+ 'start_free_trial_message' => 'Start uw GRATIS proefperiode van 14 dagen voor het Pro-abonnement',
'due_on_receipt' => 'Verschuldigd bij ontvangst',
'is_paid' => 'Is betaald',
'age_group_paid' => 'Betaald',
'id' => 'ID kaart',
'convert_to' => 'Reken om naar',
'client_currency' => 'Klant valuta',
- 'company_currency' => 'Bedrijf valuta',
- 'custom_emails_disabled_help' => 'Om spam te voorkomen moet je een betaald account hebben om emails aan te passen',
+ 'company_currency' => 'Bedrijfsvaluta',
+ 'custom_emails_disabled_help' => 'Om spam te voorkomen moet u een betaald account hebben om e-mails aan te passen',
'upgrade_to_add_company' => 'Upgrade uw abonnement om meer bedrijven toe te voegen',
'file_saved_in_downloads_folder' => 'Het bestand is opgeslagen in de downloadmap',
'small' => 'Klein',
'quotes_backup_subject' => 'Uw offertes zijn klaar om te downloaden.',
- 'credits_backup_subject' => 'Je creditnota\'s zijn klaar om te downloaden',
- 'document_download_subject' => 'Je documenten zijn klaar om te downloaden',
+ 'credits_backup_subject' => 'Uw creditfacturen zijn klaar om te downloaden',
+ 'document_download_subject' => 'Uw documenten zijn klaar om te downloaden',
'reminder_message' => 'Herinnering voor factuur :number voor :balance',
'gmail_credentials_invalid_subject' => 'Verzenden met GMail ongeldige inloggegevens',
'gmail_credentials_invalid_body' => 'Uw GMail-referenties zijn niet correct. Meld u aan bij de beheerdersportal en navigeer naar Instellingen > Gebruikersgegevens en koppel uw Gmail-account los en maak opnieuw verbinding. We sturen u deze melding dagelijks totdat dit probleem is opgelost',
@@ -4417,8 +4417,8 @@ Email: :email ',
'signed_in_as' => 'Ingelogd als',
'total_results' => 'Totaal resultaat',
'restore_company_gateway' => 'Poort herstellen',
- 'archive_company_gateway' => 'Archief gateway',
- 'delete_company_gateway' => 'Gateway verwijderen',
+ 'archive_company_gateway' => 'Archiveer betaalprovider',
+ 'delete_company_gateway' => 'Betaalprovider verwijderen',
'exchange_currency' => 'Wisselkoers',
'tax_amount1' => 'Belastingbedrag 1',
'tax_amount2' => 'Belastingbedrag 2',
@@ -4451,7 +4451,7 @@ Email: :email ',
'export_format' => 'Export Formaat',
'export_type' => 'Export Type',
'stop_on_unpaid' => 'Stop bij onbetaald',
- 'stop_on_unpaid_help' => 'Stop met het maken van terugkerende facturen als de laatste factuur onbetaald is.',
+ 'stop_on_unpaid_help' => 'Stop met het aanmaken van terugkerende facturen wanneer de laatste factuur onbetaald is.',
'use_quote_terms' => 'Gebruik offertevoorwaarden',
'use_quote_terms_help' => 'Bij het omzetten van een offerte naar een factuur',
'add_country' => 'Voeg land toe',
@@ -4459,26 +4459,26 @@ Email: :email ',
'enable_tooltips_help' => 'Toon tooltips wanneer u met de muis beweegt',
'multiple_client_error' => 'Fout: records behoren tot meer dan één klant',
'login_label' => 'Login met een bestaand account',
- 'purchase_order' => 'Aankooporder',
+ 'purchase_order' => 'Inkooporder',
'purchase_order_number' => 'Aankoop ordernummer',
- 'purchase_order_number_short' => 'Aankooporder #',
+ 'purchase_order_number_short' => 'Inkooporder #',
'inventory_notification_subject' => 'Melding van voorraaddrempel voor product: :product',
'inventory_notification_body' => 'Drempel van :amount is bereikt voor product: :product',
- 'activity_130' => ':user heeft aankooporder :purchase_order aangemaakt',
- 'activity_131' => ':user heeft aankooporder :purchase_order aangepast',
- 'activity_132' => ':user heeft aankooporder :purchase_order gearchiveerd',
- 'activity_133' => ':user heeft aankooporder :purchase_order verwijderd',
- 'activity_134' => ':user heeft aankooporder :purchase_order hersteld',
- 'activity_135' => ': user gebruiker gemailde inkooporder :purchase_order',
+ 'activity_130' => ':user heeft inkooporder :purchase_order aangemaakt',
+ 'activity_131' => ':user heeft inkooporder :purchase_order aangepast',
+ 'activity_132' => ':user heeft inkooporder :purchase_order gearchiveerd',
+ 'activity_133' => ':user heeft inkooporder :purchase_order verwijderd',
+ 'activity_134' => ':user heeft inkooporder :purchase_order hersteld',
+ 'activity_135' => ':user gebruiker gemailde inkooporder :purchase_order',
'activity_136' => ':contact bekeken inkooporder :purchase_order',
'purchase_order_subject' => 'Nieuwe inkooporder :number van :account',
'purchase_order_message' => 'Klik op de onderstaande link om uw bestelling voor :amount te bekijken.',
- 'view_purchase_order' => 'Bekijk aankooporder',
- 'purchase_orders_backup_subject' => 'Uw inkooporders zijn klaar om te downloaden',
- 'notification_purchase_order_viewed_subject' => 'Inkooporder :invoice werd bekeken door :client',
+ 'view_purchase_order' => 'Bekijk inkooporder',
+ 'purchase_orders_backup_subject' => 'Uw inkooporders zijn gereed om te downloaden',
+ 'notification_purchase_order_viewed_subject' => 'Inkooporder :invoice is bekeken door :client',
'notification_purchase_order_viewed' => 'De volgende leverancier :client heeft inkooporder :invoice voor :amount bekeken.',
- 'purchase_order_date' => 'Datum aankooporder',
- 'purchase_orders' => 'Aankooporders',
+ 'purchase_order_date' => 'Datum inkooporder',
+ 'purchase_orders' => 'Inkooporders',
'purchase_order_number_placeholder' => 'Inkooporder #:purchase_order',
'accepted' => 'Geaccepteerd',
'activity_137' => ':contact geaccepteerde bestelling :purchase_order',
@@ -4492,13 +4492,13 @@ Email: :email ',
'added_purchase_order_to_inventory' => 'Inkooporder met succes aan voorraad toegevoegd',
'added_purchase_orders_to_inventory' => 'Inkooporder met succes aan voorraad toegevoegd',
'client_document_upload' => 'Uploaden klantdocument',
- 'vendor_document_upload' => 'Uploaden verkoperdocument',
+ 'vendor_document_upload' => 'Verkoopdocument uploaden',
'vendor_document_upload_help' => 'Leveranciers in staat stellen documenten te uploaden',
- 'are_you_enjoying_the_app' => 'Geniet je van de app?',
+ 'are_you_enjoying_the_app' => 'Bevalt de app?',
'yes_its_great' => 'Ja, het is geweldig!',
'not_so_much' => 'Niet zo veel',
- 'would_you_rate_it' => 'Goed om te horen! Zou je het willen beoordelen?',
- 'would_you_tell_us_more' => 'Dat is jammer om te horen! Wil je ons meer vertellen?',
+ 'would_you_rate_it' => 'Goed om te horen! Zou u het willen beoordelen?',
+ 'would_you_tell_us_more' => 'Dat is jammer om te horen! Wilt u ons meer vertellen?',
'sure_happy_to' => 'Zeker, graag',
'no_not_now' => 'Nee, nu niet',
'add' => 'Toevoegen',
@@ -4506,7 +4506,7 @@ Email: :email ',
'enable_flexible_search' => 'Flexibel zoeken inschakelen',
'enable_flexible_search_help' => 'Overeenkomen met niet-aangrenzende tekens, dwz. "ct" komt overeen met "kat"',
'vendor_details' => 'Details verkoper',
- 'purchase_order_details' => 'Details aankooporder',
+ 'purchase_order_details' => 'Details inkooporder',
'qr_iban' => 'QR IBAN',
'besr_id' => 'BESR-ID',
'clone_to_purchase_order' => 'Kloon naar PO',
@@ -4519,17 +4519,17 @@ Email: :email ',
'cancelled_purchase_order' => 'Inkooporder succesvol geannuleerd',
'cancelled_purchase_orders' => 'Inkooporders succesvol geannuleerd',
'please_select_a_vendor' => 'Gelieve een verkoper te selecteren',
- 'purchase_order_total' => 'Inkooporder Totaal',
+ 'purchase_order_total' => 'Totaal inkooporder',
'email_purchase_order' => 'E-mail inkooporder',
'bulk_email_purchase_order' => 'E-mail inkooporder',
'disconnected_email' => 'E-mail is losgekoppeld',
'connect_email' => 'E-mail koppelen',
'disconnect_email' => 'Koppel e-mail los',
'use_web_app_to_connect_microsoft' => 'Gebruik de web-app om verbinding te maken met Microsoft',
- 'email_provider' => 'E-mail provider',
- 'connect_microsoft' => 'Verbind Microsoft',
+ 'email_provider' => 'E-mailprovider',
+ 'connect_microsoft' => 'Verbind met Microsoft',
'disconnect_microsoft' => 'Koppel Microsoft los',
- 'connected_microsoft' => 'Microsoft succesvol verbonden',
+ 'connected_microsoft' => 'Succesvol verbonden met Microsoft',
'disconnected_microsoft' => 'Losgekoppeld van Microsoft',
'microsoft_sign_in' => 'Inloggen met Microsoft',
'microsoft_sign_up' => 'Meld u aan bij Microsoft',
@@ -4544,15 +4544,15 @@ Email: :email ',
'new_purchase_order' => 'Nieuwe inkooporder',
'edit_purchase_order' => 'Inkooporder bewerken',
'created_purchase_order' => 'Inkooporder succesvol aangemaakt',
- 'updated_purchase_order' => 'Aankooporder succesvol geupdate',
- 'archived_purchase_order' => 'Aankooporder succesvol gearchiveerd',
- 'deleted_purchase_order' => 'Aankooporder succesvol verwijderd',
+ 'updated_purchase_order' => 'Inkooporder succesvol geupdate',
+ 'archived_purchase_order' => 'Inkooporder succesvol gearchiveerd',
+ 'deleted_purchase_order' => 'Inkooporder succesvol verwijderd',
'removed_purchase_order' => 'Bestelling verwijderd',
'restored_purchase_order' => 'Bestelling hersteld',
'search_purchase_order' => 'Zoek verkoop order',
'search_purchase_orders' => 'Zoek verkoop orders',
'login_url' => 'Inlog-URL',
- 'enable_applying_payments' => 'Handmatige teveelbetalingen',
+ 'enable_applying_payments' => 'Handmatige overbetalingen',
'enable_applying_payments_help' => 'Ondersteuning voor het handmatig toevoegen van een te veel betaald bedrag aan een betaling',
'stock_quantity' => 'Voorraad hoeveelheid',
'notification_threshold' => 'Meldingsdrempel',
@@ -4597,12 +4597,12 @@ Email: :email ',
'total_logged_expenses' => 'Vastgelegde kosten',
'total_pending_expenses' => 'Lopende kosten',
'total_invoiced_expenses' => 'Gefactureerde kosten',
- 'total_invoice_paid_expenses' => 'Factuureer gemaakte kosten',
+ 'total_invoice_paid_expenses' => 'Factureer gemaakte kosten',
'vendor_portal' => 'Leveranciersportaal',
'send_code' => 'Verstuur code',
'save_to_upload_documents' => 'Sla op om documenten te kunnen uploaden',
'expense_tax_rates' => 'Belastingtarief uitgaven',
- 'invoice_item_tax_rates' => 'Belastingtarief factuurregel',
+ 'invoice_item_tax_rates' => 'Belastingtarief factuurregels',
'verified_phone_number' => 'Telefoonnummer is geverifiëerd',
'code_was_sent' => 'Er is een code via SMS verstuurd',
'resend' => 'Verstuur opnieuw',
@@ -4617,13 +4617,13 @@ Email: :email ',
'bulk_email_purchase_orders' => 'E-mail inkooporders',
'bulk_email_invoices' => 'E-mail facturen',
'bulk_email_quotes' => 'E-mail offertes',
- 'bulk_email_credits' => 'E-mail creditzijde',
+ 'bulk_email_credits' => 'E-mail creditfacturen',
'archive_purchase_order' => 'Archiveer inkooporder',
'restore_purchase_order' => 'Herstel inkooporder',
'delete_purchase_order' => 'Verwijder inkooporder',
'connect' => 'Koppel',
'mark_paid_payment_email' => 'Betaling betaald gemarkeerd e-mail',
- 'convert_to_project' => 'Naar project omzetten',
+ 'convert_to_project' => 'Omzetten naar project',
'client_email' => 'Klant e-mail',
'invoice_task_project' => 'Factuur taak project',
'invoice_task_project_help' => 'Voeg project toe als factuurregel',
@@ -4638,35 +4638,35 @@ Email: :email ',
'bank_transaction' => 'Transactie',
'bulk_print' => 'Druk PDF af',
'vendor_postal_code' => 'Postcode leverancier',
- 'preview_location' => 'Voorbeeld locatie',
+ 'preview_location' => 'Voorbeeldlocatie',
'bottom' => 'Onderkant',
'side' => 'Kant',
'pdf_preview' => 'PDF-voorbeeld',
'long_press_to_select' => 'Lang indrukken om te selecteren',
'purchase_order_item' => 'Artikel inkooporder',
- 'would_you_rate_the_app' => 'Wil je de app beoordelen?',
+ 'would_you_rate_the_app' => 'Wilt u de app beoordelen?',
'include_deleted' => 'Inclusief verwijderd',
'include_deleted_help' => 'Neem verwijderde records op in rapporten',
'due_on' => 'Verschuldigd op',
'browser_pdf_viewer' => 'Gebruik Browser PDF-viewer',
'browser_pdf_viewer_help' => 'Waarschuwing: voorkomt interactie met de app via de pdf',
- 'converted_transactions' => 'Succesvol geconverteerde transacties',
+ 'converted_transactions' => 'Transacties succesvol geconverteerd',
'default_category' => 'Standaard categorie',
'connect_accounts' => 'Accounts koppelen',
'manage_rules' => 'Regels beheren',
'search_category' => 'Zoek 1 categorie',
'search_categories' => 'Zoek :count Categorieën',
'min_amount' => 'Min. bedrag',
- 'max_amount' => 'Maximaal bedrag',
+ 'max_amount' => 'Maximumbedrag',
'converted_transaction' => 'Transactie succesvol geconverteerd',
'convert_to_payment' => 'Converteren naar betaling',
'deposit' => 'Borg',
'withdrawal' => 'Opname',
'deposits' => 'stortingen',
'withdrawals' => 'Opnames',
- 'matched' => 'Op elkaar afgestemd',
- 'unmatched' => 'Ongeëvenaard',
- 'create_credit' => 'Maak creditnota',
+ 'matched' => 'Match',
+ 'unmatched' => 'Geen match',
+ 'create_credit' => 'Maak creditfactuur',
'transactions' => 'Transacties',
'new_transaction' => 'Nieuwe transactie',
'edit_transaction' => 'Transactie bewerken',
@@ -4677,7 +4677,7 @@ Email: :email ',
'removed_transaction' => 'Transactie succesvol verwijderd',
'restored_transaction' => 'Transactie succesvol hersteld',
'search_transaction' => 'Zoek transactie',
- 'search_transactions' => 'Zoek :count Transacties',
+ 'search_transactions' => 'Zoek :count transacties',
'deleted_bank_account' => 'Succesvol verwijderde bankrekening',
'removed_bank_account' => 'Bankrekening succesvol verwijderd',
'restored_bank_account' => 'Bankrekening succesvol hersteld',
@@ -4685,21 +4685,21 @@ Email: :email ',
'search_bank_accounts' => 'Zoek :count bankrekeningen',
'code_was_sent_to' => 'Er is een code verzonden via sms naar :number',
'verify_phone_number_2fa_help' => 'Verifieer uw telefoonnummer voor 2FA-back-up',
- 'enable_applying_payments_later' => 'Schakel Betalingen later toepassen in',
- 'line_item_tax_rates' => 'Lijn item BTW-Tarief',
- 'show_tasks_in_client_portal' => 'Toon Taken in Klantenportaal',
+ 'enable_applying_payments_later' => 'Schakel het later toepassen van betalingen in',
+ 'line_item_tax_rates' => 'Belastingtarief factuurregels',
+ 'show_tasks_in_client_portal' => 'Toon taken in klantenportaal',
'notification_quote_expired_subject' => 'Offerte :invoice is verlopen voor :client',
'notification_quote_expired' => 'De volgende Offerte :invoice voor klant :client en :amount is nu verlopen.',
'auto_sync' => 'Automatisch synchroniseren',
'refresh_accounts' => 'Ververs accounts',
'upgrade_to_connect_bank_account' => 'Upgrade naar Enterprise om uw bankrekening te koppelen',
'click_here_to_connect_bank_account' => 'Klik hier om uw bankrekening te koppelen',
- 'include_tax' => 'BTW inclusief',
+ 'include_tax' => 'Inclusief BTW',
'email_template_change' => 'De hoofdtekst van het e-mailsjabloon kan worden gewijzigd',
'task_update_authorization_error' => 'Onvoldoende machtigingen of taak is mogelijk vergrendeld',
'cash_vs_accrual' => 'Boekhouding op transactiebasis',
'cash_vs_accrual_help' => 'Inschakelen voor rapportage op transactiebasis, uitschakelen voor rapportage op kasbasis.',
- 'expense_paid_report' => 'Onkosten rapportage',
+ 'expense_paid_report' => 'Onkostenrapportage',
'expense_paid_report_help' => 'Schakel in voor het rapporteren van alle onkosten, schakel uit voor het rapporteren van alleen betaalde onkosten',
'online_payment_email_help' => 'Stuur een e-mail wanneer een online betaling is gedaan',
'manual_payment_email_help' => 'Stuur een e-mail bij het handmatig invoeren van een betaling',
@@ -4728,8 +4728,8 @@ Email: :email ',
'match_all_rules_help' => 'Alle criteria moeten overeenkomen om de regel toe te passen',
'auto_convert_help' => 'Zet gekoppelde transacties automatisch om in onkosten',
'rules' => 'Reglement',
- 'transaction_rule' => 'Transactie Regel',
- 'transaction_rules' => 'Transactie regels',
+ 'transaction_rule' => 'Transactieregel',
+ 'transaction_rules' => 'Transactieregels',
'new_transaction_rule' => 'Nieuwe transactieregel',
'edit_transaction_rule' => 'Transactieregel bewerken',
'created_transaction_rule' => 'Regel gemaakt',
@@ -4764,7 +4764,7 @@ Email: :email ',
'purchase_order_sent' => 'Inkooporder verzonden',
'purchase_order_viewed' => 'Inkooporder bekeken',
'purchase_order_accepted' => 'Inkooporder geaccepteerd',
- 'credit_payment_error' => 'Het kredietbedrag kan niet groter zijn dan het betalingsbedrag',
+ 'credit_payment_error' => 'Het kredietbedrag mag niet hoger zijn dan de betaling',
'convert_payment_currency_help' => 'Stel een wisselkoers in bij het invoeren van een handmatige betaling',
'convert_expense_currency_help' => 'Stel een wisselkoers in bij het aanmaken van een uitgave',
'matomo_url' => 'Matomo-URL',
@@ -4778,18 +4778,18 @@ Email: :email ',
'inventory_threshold' => 'Voorraaddrempel',
'emailed_statement' => 'Verklaring in wachtrij geplaatst om te worden verzonden',
'show_email_footer' => 'Toon e-mailvoettekst',
- 'invoice_task_hours' => 'Werkuren factureren',
+ 'invoice_task_hours' => 'Gewerkte uren factureren',
'invoice_task_hours_help' => 'Voeg de uren toe aan de factuurregelitems',
- 'auto_bill_standard_invoices' => 'Auto Bill Standaard Facturen',
- 'auto_bill_recurring_invoices' => 'Terugkerende facturen automatisch factureren',
+ 'auto_bill_standard_invoices' => 'Standaardfacturen automatisch incasseren',
+ 'auto_bill_recurring_invoices' => 'Terugkerende facturen automatisch incasseren',
'email_alignment' => 'E-mailuitlijning',
'pdf_preview_location' => 'Pdf-voorbeeldlocatie',
- 'mailgun' => 'Postpistool',
+ 'mailgun' => 'Mailgun',
'brevo' => 'Brevo',
- 'postmark' => 'Poststempel',
+ 'postmark' => 'Postmark',
'microsoft' => 'Microsoft',
'click_plus_to_create_record' => 'Klik op + om een record te maken',
- 'last365_days' => 'Laatste 365 dagen',
+ 'last365_days' => 'Afgelopen 365 dagen',
'import_design' => 'Ontwerp importeren',
'imported_design' => 'Ontwerp geïmporteerd',
'invalid_design' => 'Het ontwerp is ongeldig, de :value sectie ontbreekt',
@@ -4799,7 +4799,7 @@ Email: :email ',
'notify_vendor_when_paid_help' => 'Stuur een e-mail naar de leverancier wanneer de onkosten zijn gemarkeerd als betaald',
'update_payment' => 'Betaling bijwerken',
'markup' => 'Opmaak',
- 'unlock_pro' => 'Ontgrendel Pro',
+ 'unlock_pro' => 'Ontgrendel Pro-abbo',
'upgrade_to_paid_plan_to_schedule' => 'Upgrade naar een betaald abonnement om schema\'s te maken',
'next_run' => 'Volgende run',
'all_clients' => 'Alle klanten',
@@ -4807,16 +4807,16 @@ Email: :email ',
'show_payments_table' => 'Toon betalingstabel',
'only_clients_with_invoices' => 'Alleen klanten met facturen',
'email_statement' => 'E-mail verklaring',
- 'once' => 'Eenmaal',
+ 'once' => 'Eenmalig',
'schedules' => 'Schema\'s',
'new_schedule' => 'Nieuw schema',
'edit_schedule' => 'Schema bewerken',
- 'created_schedule' => 'Planning gemaakt',
- 'updated_schedule' => 'Planning bijgewerkt',
- 'archived_schedule' => 'Planning is gearchiveerd',
- 'deleted_schedule' => 'Planning succesvol verwijderd',
- 'removed_schedule' => 'Planning is succesvol verwijderd',
- 'restored_schedule' => 'Planning is hersteld',
+ 'created_schedule' => 'Schema gemaakt',
+ 'updated_schedule' => 'Schema is bijgewerkt',
+ 'archived_schedule' => 'Schema is gearchiveerd',
+ 'deleted_schedule' => 'Schema is succesvol verwijderd',
+ 'removed_schedule' => 'Schema is succesvol verwijderd',
+ 'restored_schedule' => 'Schema is hersteld',
'search_schedule' => 'Zoek schema',
'search_schedules' => 'Zoek schema\'s',
'update_product' => 'Product bijwerken',
@@ -4826,7 +4826,7 @@ Email: :email ',
'sent_quote' => 'Verzonden offerte',
'sent_credit' => 'Verzonden tegoed',
'sent_purchase_order' => 'Inkooporder verzonden',
- 'image_url' => 'afbeelding URL',
+ 'image_url' => 'Afbeeldings-URL',
'max_quantity' => 'Maximale hoeveelheid',
'test_url' => 'Test-URL',
'auto_bill_help_off' => 'Optie wordt niet getoond',
@@ -4837,10 +4837,10 @@ Email: :email ',
'edit_all' => 'Alles bewerken',
'accept_purchase_order_number' => 'Accepteer inkoopordernummer',
'accept_purchase_order_number_help' => 'Stel klanten in staat om een PO-nummer op te geven bij het goedkeuren van een offerte',
- 'from_email' => 'Van email',
+ 'from_email' => 'Van e-mail',
'show_preview' => 'Toon voorbeeld',
'show_paid_stamp' => 'Betaalde zegel tonen',
- 'show_shipping_address' => 'Verzendadres weergeven',
+ 'show_shipping_address' => 'Leveringsadres weergeven',
'no_documents_to_download' => 'Er zijn geen documenten in de geselecteerde records om te downloaden',
'pixels' => 'Pixels',
'logo_size' => 'Logo-formaat',
@@ -4864,7 +4864,7 @@ Email: :email ',
'no_assigned_tasks' => 'Geen factureerbare taken voor dit project',
'authorization_failure' => 'Onvoldoende machtigingen om deze actie uit te voeren',
'authorization_sms_failure' => 'Verifieer uw account om e-mails te verzenden.',
- 'white_label_body' => 'Bedankt voor het aanschaffen van een white label-licentie.
Uw licentiesleutel is:
:license_key
U kunt uw licentie hier beheren: https://invoiceninja.invoicing.co/client/login',
+ 'white_label_body' => 'Bedankt voor het aanschaffen van een whitelabel-licentie.
Uw licentiesleutel is:
:license_key
U kunt uw licentie hier beheren: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E-overdracht',
'xinvoice_payable' => 'Te betalen binnen :payeddue vervaldagen netto tot :paydate',
@@ -4889,18 +4889,18 @@ Email: :email ',
'optional_one_time_products' => 'Optionele eenmalige producten',
'required' => 'Vereist',
'hidden' => 'Verborgen',
- 'payment_links' => 'Betalingslinks',
- 'payment_link' => 'Betalingslink',
+ 'payment_links' => 'Betaallinks',
+ 'payment_link' => 'Betaallink',
'new_payment_link' => 'Nieuwe betaallink',
- 'edit_payment_link' => 'Betalingslink bewerken',
+ 'edit_payment_link' => 'Betaallink bewerken',
'created_payment_link' => 'Betaallink aangemaakt',
'updated_payment_link' => 'Betaallink succesvol geüpdatet',
- 'archived_payment_link' => 'Succesvol gearchiveerde betalingslink',
- 'deleted_payment_link' => 'Betalingslink succesvol verwijderd',
+ 'archived_payment_link' => 'Succesvol gearchiveerde betaallink',
+ 'deleted_payment_link' => 'Betaallink succesvol verwijderd',
'removed_payment_link' => 'Betaallink succesvol verwijderd',
'restored_payment_link' => 'Betaallink succesvol hersteld',
- 'search_payment_link' => 'Zoek 1 Betaallink',
- 'search_payment_links' => 'Zoek :count Betalingslinks',
+ 'search_payment_link' => 'Zoek 1 betaallink',
+ 'search_payment_links' => 'Zoek :count betaallinks',
'increase_prices' => 'Verhoog de prijzen',
'update_prices' => 'Prijzen bijwerken',
'incresed_prices' => 'Met succes in de wachtrij geplaatste prijzen worden verhoogd',
@@ -4922,8 +4922,8 @@ Email: :email ',
'client_balance_report' => 'Klant saldo rapport',
'client_sales_report' => 'Klant verkoop rapport',
'user_sales_report' => 'Verkooprapport van de gebruiker',
- 'aged_receivable_detailed_report' => 'Gedetailleerd rapport ouderdomsvorderingen',
- 'aged_receivable_summary_report' => 'Samenvattend rapport ouderdomsvorderingen',
+ 'aged_receivable_detailed_report' => 'Gedetailleerd rapport verouderde vorderingen',
+ 'aged_receivable_summary_report' => 'Samenvattend rapport verouderde vorderingen',
'taxable_amount' => 'Belastbaar bedrag',
'tax_summary' => 'Belastingoverzicht',
'oauth_mail' => 'OAuth/Mail',
@@ -4936,7 +4936,7 @@ Email: :email ',
'seller_subregion' => 'Verkoper Subregio',
'calculate_taxes' => 'Belastingen berekenen',
'calculate_taxes_help' => 'Bereken automatisch belastingen bij het opslaan van facturen',
- 'link_expenses' => 'Link kosten',
+ 'link_expenses' => 'Kosten koppelen',
'converted_client_balance' => 'Geconverteerd klantensaldo',
'converted_payment_balance' => 'Geconverteerd betalingssaldo',
'total_hours' => 'Totaal aantal uren',
@@ -4951,13 +4951,13 @@ Email: :email ',
'physical_goods' => 'Fysieke goederen',
'digital_products' => 'Digitale producten',
'services' => 'Diensten',
- 'shipping' => 'Verzenden',
+ 'shipping' => 'Verzending',
'tax_exempt' => 'Vrijgesteld van belasting',
'late_fee_added_locked_invoice' => 'Late vergoeding voor factuur :invoice toegevoegd op :date',
'lang_Khmer' => 'Khmer',
'routing_id' => 'Routerings-ID',
- 'enable_e_invoice' => 'E-Factuur activeren',
- 'e_invoice_type' => 'E-Factuur type',
+ 'enable_e_invoice' => 'E-factuur activeren',
+ 'e_invoice_type' => 'E-factuur type',
'reduced_tax' => 'Verlaagde belasting',
'override_tax' => 'Belasting overschrijven',
'zero_rated' => 'Nul nominaal',
@@ -4971,9 +4971,9 @@ Email: :email ',
'rename' => 'Hernoem',
'renamed_document' => 'Document succesvol hernoemd',
'e_invoice' => 'E-factuur',
- 'light_dark_mode' => 'Licht/Donkere modus',
+ 'light_dark_mode' => 'Lichte-/donkere modus',
'activities' => 'Activiteiten',
- 'recent_transactions' => "Hier zijn het bedrijfs meest recente transacties:",
+ 'recent_transactions' => "Hier zijn de meest recente transacties van uw bedrijf:",
'country_Palestine' => "Palestina",
'country_Taiwan' => 'Taiwan',
'duties' => 'Taken',
@@ -4984,7 +4984,7 @@ Email: :email ',
'enable_auto_bill' => 'Schakel automatische facturering in',
'email_count_invoices' => 'E-mail :count -facturen',
'invoice_task_item_description' => 'Factuurtaak Itembeschrijving',
- 'invoice_task_item_description_help' => 'Voeg de artikelbeschrijving toe aan de factuurregelitems',
+ 'invoice_task_item_description_help' => 'Voeg de artikelbeschrijving toe aan de factuurregels',
'next_send_time' => 'Volgende verzendtijd',
'uploaded_certificate' => 'Certificaat succesvol geüpload',
'certificate_set' => 'Certificaat ingesteld',
@@ -4996,14 +4996,14 @@ Email: :email ',
'valid_vat_number' => 'Geldig BTW-nummer',
'react_notification_link' => 'Reageer op meldingslinks',
'react_notification_link_help' => 'E-mails van beheerders bevatten links naar de reactietoepassing',
- 'show_task_billable' => 'Toon taak factureerbaar',
+ 'show_task_billable' => 'Toon factureerbare taken',
'credit_item' => 'Kredietartikel',
'drop_file_here' => 'Zet het bestand hier neer',
'files' => 'Bestanden',
'camera' => 'Camera',
'gallery' => 'Galerij',
'project_location' => 'Project Locatie',
- 'add_gateway_help_message' => 'Voeg een betalingsgateway toe (bijv. Stripe, WePay of PayPal) om online betalingen te accepteren',
+ 'add_gateway_help_message' => 'Voeg een betaalprovider toe (bijv. Stripe, WePay of PayPal) om online betalingen te accepteren',
'lang_Hungarian' => 'Hongaars',
'use_mobile_to_manage_plan' => 'Gebruik de instellingen van uw telefoonabonnement om uw abonnement te beheren',
'item_tax3' => 'Artikelbelasting3',
@@ -5029,7 +5029,7 @@ Email: :email ',
'county' => 'District',
'tax_details' => 'Belastinggegevens',
'activity_10_online' => ':contact heeft betaling uitgevoerd :payment voor factuur :invoice voor :client',
- 'activity_10_manual' => ':user ingevoerde betaling :payment voor factuur :invoice voor :client',
+ 'activity_10_manual' => ':user heeft betaling :payment ingevoerd voor factuur :invoice voor :client',
'default_payment_type' => 'Standaard betalingstype',
'number_precision' => 'Cijferprecisie',
'number_precision_help' => 'Bepaalt het aantal decimalen dat in de interface wordt ondersteund',
@@ -5044,26 +5044,26 @@ Email: :email ',
'reverse_tax_info' => 'Houd er rekening mee dat op deze levering een verleggingsregeling van toepassing is',
'currency_nicaraguan_cordoba' => 'Nicaraguaans Córdoba',
'public' => 'Openbaar',
- 'private' => 'Privaat',
+ 'private' => 'Privé',
'image' => 'Afbeelding',
- 'other' => 'Ander',
+ 'other' => 'Overig',
'linked_to' => 'Gekoppeld aan',
'file_saved_in_path' => 'Het bestand is opgeslagen in :path',
- 'unlinked_transactions' => 'Succesvol :count transacties ontkoppeld.',
+ 'unlinked_transactions' => 'Succesvol :count transacties ontkoppeld',
'unlinked_transaction' => 'Transactie ontkoppeld',
'view_dashboard_permission' => 'Geef de gebruiker toegang tot het dashboard, waarbij de beschikbare rechten bepalen welke gegevens zij kunnen zien',
'marked_sent_credits' => 'Succesvol gemarkeerde verzonden credits',
- 'show_document_preview' => 'Toon Documentvoorbeeld',
+ 'show_document_preview' => 'Toon documentvoorbeeld',
'cash_accounting' => 'Kasboekhouding',
'click_or_drop_files_here' => 'Klik hier of sleep bestanden hierheen',
- 'set_public' => 'Openbaar instellen',
- 'set_private' => 'Privé instellen',
+ 'set_public' => 'Openbaar',
+ 'set_private' => 'Privé',
'individual' => 'Individueel',
'business' => 'Bedrijf',
'partnership' => 'Vennootschap',
- 'trust' => 'Vertrouwen',
+ 'trust' => 'Trustfonds',
'charity' => 'Goed doel',
- 'government' => 'Regering',
+ 'government' => 'Overheid',
'in_stock_quantity' => 'Voorraadhoeveelheid',
'vendor_contact' => 'Contactpersoon leverancier',
'expense_status_4' => 'Onbetaald',
@@ -5080,16 +5080,16 @@ Email: :email ',
'upcoming' => 'Aankomend',
'client_contact' => 'Klantcontact',
'uncategorized' => 'Niet gecategoriseerd',
- 'login_notification' => 'Aanmeldingsmelding',
+ 'login_notification' => 'Inlogmelding',
'login_notification_help' => 'Stuurt een e-mail met de melding dat er een login heeft plaatsgevonden.',
'payment_refund_receipt' => 'Betalingsrestitutieontvangst # :number',
'payment_receipt' => 'Betalingsbewijs # :number',
'load_template_description' => 'De sjabloon wordt toegepast op het volgende:',
- 'run_template' => 'Run Template',
- 'statement_design' => 'Verklaring ontwerp',
+ 'run_template' => 'Sjabloon toepassen',
+ 'statement_design' => 'Ontwerp van samenvatting',
'delivery_note_design' => 'Ontwerp van leveringsbon',
'payment_receipt_design' => 'Ontwerp van betalingsontvangst',
- 'payment_refund_design' => 'Betaling Terugbetaling Ontwerp',
+ 'payment_refund_design' => 'Ontwerp van terugbetaling',
'task_extension_banner' => 'Voeg de Chrome-extensie toe om uw taken te beheren',
'watch_video' => 'Bekijk video',
'view_extension' => 'Bekijk Extensie',
@@ -5117,7 +5117,7 @@ Email: :email ',
'charges' => 'Kosten',
'email_report' => 'E-mailrapport',
'payment_type_Pay Later' => 'Betaal later',
- 'payment_type_credit' => 'Betalingstype Krediet',
+ 'payment_type_credit' => 'Betalingstype krediet',
'payment_type_debit' => 'Betalingswijze Debet',
'send_emails_to' => 'Stuur e-mails naar',
'primary_contact' => 'Primaire contactpersoon',
@@ -5131,26 +5131,26 @@ Email: :email ',
'nordigen_handler_error_heading_account_config_invalid' => 'Ontbrekende inloggegevens',
'nordigen_handler_error_contents_account_config_invalid' => 'Ongeldige of ontbrekende inloggegevens voor Gocardless-bankrekeninggegevens. Neem contact op met de ondersteuning voor hulp als dit probleem zich blijft voordoen.',
'nordigen_handler_error_heading_not_available' => 'Niet beschikbaar',
- 'nordigen_handler_error_contents_not_available' => 'Functie niet beschikbaar, alleen Enterprise Plan.',
+ 'nordigen_handler_error_contents_not_available' => 'Functie niet beschikbaar, alleen binnen het Enterprise-abonnement.',
'nordigen_handler_error_heading_institution_invalid' => 'Ongeldige instelling',
'nordigen_handler_error_contents_institution_invalid' => 'Het opgegeven instellings-ID is ongeldig of niet meer geldig.',
'nordigen_handler_error_heading_ref_invalid' => 'Ongeldige referentie',
'nordigen_handler_error_contents_ref_invalid' => 'GoCardless heeft geen geldige referentie opgegeven. Voer de stroom opnieuw uit en neem contact op met de ondersteuning als dit probleem zich blijft voordoen.',
'nordigen_handler_error_heading_not_found' => 'Ongeldige aanvraag',
'nordigen_handler_error_contents_not_found' => 'GoCardless heeft geen geldige referentie opgegeven. Voer de stroom opnieuw uit en neem contact op met de ondersteuning als dit probleem zich blijft voordoen.',
- 'nordigen_handler_error_heading_requisition_invalid_status' => 'Niet klaar',
- 'nordigen_handler_error_contents_requisition_invalid_status' => 'Je hebt deze site te vroeg gebeld. Voltooi de autorisatie en vernieuw deze pagina. Neem contact op met de ondersteuning voor hulp als dit probleem zich blijft voordoen.',
+ 'nordigen_handler_error_heading_requisition_invalid_status' => 'Niet gereed',
+ 'nordigen_handler_error_contents_requisition_invalid_status' => 'U hebt deze pagina te vroeg bereikt. Voltooi de autorisatie en vernieuw deze pagina. Neem contact op met de klantenservice voor hulp als dit probleem zich blijft voordoen.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Geen accounts geselecteerd',
'nordigen_handler_error_contents_requisition_no_accounts' => 'De service heeft geen geldige accounts geretourneerd. Overweeg om de stroom opnieuw te starten.',
'nordigen_handler_restart' => 'Start de stroom opnieuw.',
'nordigen_handler_return' => 'Terug naar applicatie.',
'lang_Lao' => 'Laos',
'currency_lao_kip' => 'Laotiaanse kip',
- 'yodlee_regions' => 'Regio's: VS, VK, Australië en India',
- 'nordigen_regions' => 'Regio's: Europa en VK',
+ 'yodlee_regions' => 'Regio\'s: VS, VK, Australië en India',
+ 'nordigen_regions' => 'Regio\'s: Europa en VK',
'select_provider' => 'Selecteer Aanbieder',
'nordigen_requisition_subject' => 'Aanvraag is verlopen. Authenticeer opnieuw.',
- 'nordigen_requisition_body' => 'De toegang tot bankrekeningfeeds is verlopen zoals vastgelegd in de Eindgebruikersovereenkomst.
Meld u aan bij Invoice Ninja en authenticeer opnieuw bij uw banken om transacties te blijven ontvangen.',
+ 'nordigen_requisition_body' => 'De toegang tot bankrekeningkoppelingen is verlopen zoals vastgelegd in de gebruikersovereenkomst.
Meld u aan bij Invoice Ninja en log opnieuw in bij uw banken om transacties te blijven ontvangen.',
'participant' => 'Deelnemer',
'participant_name' => 'Naam deelnemer',
'client_unsubscribed' => 'Klant heeft zich afgemeld voor e-mails.',
@@ -5169,7 +5169,7 @@ Email: :email ',
'my_bank' => 'Mijn bank',
'pay_later' => 'Betaal later',
'local_domain' => 'Lokaal domein',
- 'verify_peer' => 'Verifieer peer',
+ 'verify_peer' => 'Verifieer versleutelde verbinding',
'nordigen_help' => 'Let op: voor het koppelen van een account is een GoCardless/Nordigen API-sleutel vereist',
'ar_detailed' => 'Debiteuren gedetailleerd',
'ar_summary' => 'Overzicht debiteuren',
@@ -5182,7 +5182,7 @@ Email: :email ',
'step_dependency_order_fail' => 'Component ":step" is afhankelijk van ":dependency". De volgorde van de component(en) is correct.',
'step_authentication_fail' => 'U moet ten minste één van de authenticatiemethoden opnemen.',
'auth.login' => 'Log in',
- 'auth.login-or-register' => 'Log in of Registreer',
+ 'auth.login-or-register' => 'Log in of registreer',
'auth.register' => 'Register',
'cart' => 'Winkelwagen',
'methods' => 'Methoden',
@@ -5190,16 +5190,16 @@ Email: :email ',
'add_step' => 'Stap toevoegen',
'steps' => 'Stappen',
'steps_order_help' => 'De volgorde van de stappen is belangrijk. De eerste stap mag niet afhankelijk zijn van een andere stap. De tweede stap moet afhankelijk zijn van de eerste stap, enzovoort.',
- 'other_steps' => 'Andere stappen',
+ 'other_steps' => 'Overige stappen',
'use_available_payments' => 'Gebruik beschikbare betalingen',
'test_email_sent' => 'E-mail succesvol verzonden',
- 'gateway_type' => 'Gatewaytype',
+ 'gateway_type' => 'Type betaalprovider',
'save_template_body' => 'Wilt u deze importtoewijzing opslaan als sjabloon voor toekomstig gebruik?',
'save_as_template' => 'Sjabloontoewijzing opslaan',
'checkout_only_for_existing_customers' => 'Afrekenen is alleen mogelijk voor bestaande klanten. Log in met een bestaand account om af te rekenen.',
'checkout_only_for_new_customers' => 'Afrekenen is alleen mogelijk voor nieuwe klanten. Registreer een nieuw account om af te rekenen.',
- 'auto_bill_standard_invoices_help' => 'Standaardfacturen automatisch factureren op de vervaldatum',
- 'auto_bill_on_help' => 'Automatische factuur op verzenddatum OF vervaldatum (terugkerende facturen)',
+ 'auto_bill_standard_invoices_help' => 'Standaardfacturen automatisch innen op de vervaldatum',
+ 'auto_bill_on_help' => 'Automatische betaling op verzenddatum OF vervaldatum (terugkerende facturen)',
'use_available_credits_help' => 'Pas eventuele creditsaldi toe op betalingen voordat u een betaalmethode in rekening brengt',
'use_unapplied_payments' => 'Gebruik niet-verwerkte betalingen',
'use_unapplied_payments_help' => 'Pas eventuele betalingssaldi toe voordat u een betaalmethode in rekening brengt',
@@ -5213,11 +5213,11 @@ Email: :email ',
'purchase_order_items' => 'Inkooporderartikelen',
'csv_rows_length' => 'Er zijn geen gegevens gevonden in dit CSV-bestand',
'accept_payments_online' => 'Accepteer betalingen online',
- 'all_payment_gateways' => 'Bekijk alle betalingsgateways',
+ 'all_payment_gateways' => 'Bekijk alle betaalproviders',
'product_cost' => 'Productkosten',
'duration_words' => 'Duur in woorden',
'upcoming_recurring_invoices' => 'Aankomende terugkerende facturen',
- 'shipping_country_id' => 'Verzendland',
+ 'shipping_country_id' => 'Land leveringsadres',
'show_table_footer' => 'Tabelvoettekst weergeven',
'show_table_footer_help' => 'Geeft de totalen weer in de voettekst van de tabel',
'total_invoices' => 'Totaal facturen',
@@ -5226,81 +5226,90 @@ Email: :email ',
'valid_credentials' => 'De legitimatiegegevens zijn geldig',
'e_quote' => 'E-offerte',
'e_credit' => 'E-krediet',
- 'e_purchase_order' => 'E-aankooporder',
+ 'e_purchase_order' => 'E-inkooporder',
'e_quote_type' => 'Type e-offerte',
'unlock_unlimited_clients' => 'Upgrade om een onbeperkt aantal klanten te ontgrendelen!',
- 'download_e_purchase_order' => 'E-aankooporder downloaden',
+ 'download_e_purchase_order' => 'E-inkooporder downloaden',
'flutter_web_warning' => 'Voor de beste prestaties raden we u aan de nieuwe web-app of de desktop-app te gebruiken',
- 'rappen_rounding' => 'Rappenafronding',
+ 'rappen_rounding' => 'Afronden op 5 cent',
'rappen_rounding_help' => 'Rond het bedrag af op 5 cent',
'assign_group' => 'Groep toewijzen',
- 'paypal_advanced_cards' => 'Advanced Card Payments',
- 'local_domain_help' => 'EHLO domain (optional)',
- 'port_help' => 'ie. 25,587,465',
- 'host_help' => 'ie. smtp.gmail.com',
- 'always_show_required_fields' => 'Allows show required fields form',
- 'always_show_required_fields_help' => 'Displays the required fields form always at checkout',
- 'advanced_cards' => 'Advanced Cards',
- 'activity_140' => 'Statement sent to :client',
- 'invoice_net_amount' => 'Invoice Net Amount',
- 'round_to_minutes' => 'Round To Minutes',
- '1_second' => '1 Second',
- '1_minute' => '1 Minute',
- '5_minutes' => '5 Minutes',
- '15_minutes' => '15 Minutes',
- '30_minutes' => '30 Minutes',
- '1_hour' => '1 Hour',
- '1_day' => '1 Day',
- 'round_tasks' => 'Task Rounding Direction',
- 'round_tasks_help' => 'Round task times up or down.',
- 'direction' => 'Direction',
- 'round_up' => 'Round Up',
- 'round_down' => 'Round Down',
- 'task_round_to_nearest' => 'Round To Nearest',
- 'task_round_to_nearest_help' => 'The interval to round the task to.',
- 'bulk_updated' => 'Successfully updated data',
- 'bulk_update' => 'Bulk Update',
- 'calculate' => 'Calculate',
- 'sum' => 'Sum',
- 'money' => 'Money',
- 'web_app' => 'Web App',
- 'desktop_app' => 'Desktop App',
- 'disconnected' => 'Disconnected',
- 'reconnect' => 'Reconnect',
- 'e_invoice_settings' => 'E-Invoice Settings',
- 'btcpay_refund_subject' => 'Refund of your invoice via BTCPay',
- 'btcpay_refund_body' => 'A refund intended for you has been issued. To claim it via BTCPay, please click on this link:',
- 'currency_mauritanian_ouguiya' => 'Mauritanian Ouguiya',
- 'currency_bhutan_ngultrum' => 'Bhutan Ngultrum',
- 'end_of_month' => 'End Of Month',
- 'merge_e_invoice_to_pdf' => 'Merge E-Invoice and PDF',
- 'task_assigned_subject' => 'New task assignment [Task :task] [ :date ]',
- 'task_assigned_body' => 'You have been assigned task :task
Description: :description
Client: :client',
- 'activity_141' => 'User :user entered note: :notes',
- 'quote_reminder_subject' => 'Reminder: Quote :quote from :company',
- 'quote_reminder_message' => 'Reminder for quote :number for :amount',
- 'quote_reminder1' => 'First Quote Reminder',
- 'before_valid_until_date' => 'Before the valid until date',
- 'after_valid_until_date' => 'After the valid until date',
- 'after_quote_date' => 'After the quote date',
- 'remind_quote' => 'Remind Quote',
- 'end_of_month' => 'End Of Month',
- 'tax_currency_mismatch' => 'Tax currency is different from invoice currency',
- 'edocument_import_already_exists' => 'The invoice has already been imported on :date',
- 'before_valid_until' => 'Before the valid until',
- 'after_valid_until' => 'After the valid until',
- 'task_assigned_notification' => 'Task Assigned Notification',
- 'task_assigned_notification_help' => 'Send an email when a task is assigned',
- 'invoices_locked_end_of_month' => 'Invoices are locked at the end of the month',
- 'referral_url' => 'Referral URL',
- 'add_comment' => 'Add Comment',
- 'added_comment' => 'Successfully saved comment',
+ 'paypal_advanced_cards' => 'Uitgebreide kaartbetalingen',
+ 'local_domain_help' => 'EHLO-domein (optioneel)',
+ 'port_help' => 'bijv. 25,587,465',
+ 'host_help' => 'bijv. smtp.gmail.com',
+ 'always_show_required_fields' => 'Altijd het verplichte velden formulier tonen',
+ 'always_show_required_fields_help' => 'Toon het verplichte velden formulier altijd bij het afrekenen',
+ 'advanced_cards' => 'Uitgebreide kaarten',
+ 'activity_140' => 'Overzicht verzonden naar :client',
+ 'invoice_net_amount' => 'Nettobedrag',
+ 'round_to_minutes' => 'Afronden op minuten',
+ '1_second' => '1 seconde',
+ '1_minute' => '1 minuut',
+ '5_minutes' => '5 minuten',
+ '15_minutes' => '15 minuten',
+ '30_minutes' => '30 minuten',
+ '1_hour' => '1 uur',
+ '1_day' => '1 dag',
+ 'round_tasks' => 'Afrondrichting voor taken',
+ 'round_tasks_help' => 'Rond tijden naar boven of beneden af',
+ 'direction' => 'Richting',
+ 'round_up' => 'Afronden naar boven',
+ 'round_down' => 'Afronden naar beneden',
+ 'task_round_to_nearest' => 'Afronden naar dichtstbijzijnde',
+ 'task_round_to_nearest_help' => 'Afrondinterval voor de taak',
+ 'bulk_updated' => 'Gegevens succesvol bijgewerkt',
+ 'bulk_update' => 'In bulk bewerken',
+ 'calculate' => 'Berekenen',
+ 'sum' => 'Som',
+ 'money' => 'Geld',
+ 'web_app' => 'Web-app',
+ 'desktop_app' => 'Desktopapplicatie',
+ 'disconnected' => 'Verbinding verbroken',
+ 'reconnect' => 'Verbind opnieuw',
+ 'e_invoice_settings' => 'E-factuurinstellingen',
+ 'btcpay_refund_subject' => 'Terugbetaling van uw factuur via BTCPay',
+ 'btcpay_refund_body' => 'Er is een terugbetaling uitgevoerd die voor u is bestemd. Om deze te claimen via BTCPay, kunt u de volgende link gebruiken:',
+ 'currency_mauritanian_ouguiya' => 'Mauritaanse Ouguiya',
+ 'currency_bhutan_ngultrum' => 'Bhutaanse Ngultrum',
+ 'end_of_month' => 'Einde van de maand',
+ 'merge_e_invoice_to_pdf' => 'E-factuur en PDF samenvoegen',
+ 'task_assigned_subject' => 'Nieuwe taak toegewezen [Task :task] [ :date ]',
+ 'task_assigned_body' => 'Taak :task is aan u toegewezen.
Beschrijving: :description
Klant: :client',
+ 'activity_141' => 'Gebruiker :user heeft een notitie toegevoegd: :notes',
+ 'quote_reminder_subject' => 'Herinnering: offerte :quote van :company',
+ 'quote_reminder_message' => 'Herinnering voor offerte :number voor een bedrag van :amount',
+ 'quote_reminder1' => 'Eerste herinnering voor offerte',
+ 'before_valid_until_date' => 'Voor de geldigheidsdatum',
+ 'after_valid_until_date' => 'Na de geldigheidsdatum',
+ 'after_quote_date' => 'Na de vervaldatum',
+ 'remind_quote' => 'Herinneringen offerte',
+ 'end_of_month' => 'Einde van de maand',
+ 'tax_currency_mismatch' => 'De belastingvaluta verschilt van de factuurvaluta',
+ 'edocument_import_already_exists' => 'De factuur is al geïmporteerd op :date',
+ 'before_valid_until' => 'Voor de geldigheidsdatum',
+ 'after_valid_until' => 'Na de geldigheidsdatum',
+ 'task_assigned_notification' => 'Notificatie voor toegewezen taak',
+ 'task_assigned_notification_help' => 'Verstuur een e-mail zodra een taak is toegewezen',
+ 'invoices_locked_end_of_month' => 'Facturen worden vastgezet aan het einde van de maand',
+ 'referral_url' => 'Referral-URL',
+ 'add_comment' => 'Commentaar toevoegen',
+ 'added_comment' => 'Commentaar succesvol opgeslagen',
'tickets' => 'Tickets',
- 'assigned_group' => 'Successfully assigned group',
- 'merge_to_pdf' => 'Merge to PDF',
- 'latest_requires_php_version' => 'Note: the latest version requires PHP :version',
- 'auto_expand_product_table_notes' => 'Automatically expand products table notes',
- 'auto_expand_product_table_notes_help' => 'Automatically expands the notes section within the products table to display more lines.',
+ 'assigned_group' => 'Groep succesvol toegewezen',
+ 'merge_to_pdf' => 'Samenvoegen in PDF',
+ 'latest_requires_php_version' => 'Let op: voor de nieuwste versie is PHP :version vereist',
+ 'auto_expand_product_table_notes' => 'Automatisch de notities in de producttabel uitklappen',
+ 'auto_expand_product_table_notes_help' => 'Hiermee worden notities in de producttabel automatisch uitgeklapt om meer regels te kunnen tonen.',
+ 'institution_number' => 'Banknummer (institution number)',
+ 'transit_number' => 'Transitnummer',
+ 'personal' => 'Persoonlijke gegevens',
+ 'address_information' => 'Adresinformatie',
+ 'enter_the_information_for_the_bank_account' => 'Voer de rekeninggegevens in',
+ 'account_holder_information' => 'Rekeninghouderinformatie',
+ 'enter_information_for_the_account_holder' => 'Voer de gegevens in van de rekeninghouder',
+ 'customer_type' => 'Klanttype',
+ 'process_date' => 'Verwerkingsdatum'
);
return $lang;
diff --git a/openapi/api-docs.yaml b/openapi/api-docs.yaml
index e43d4191c3a6..a736d98853be 100644
--- a/openapi/api-docs.yaml
+++ b/openapi/api-docs.yaml
@@ -1088,7 +1088,7 @@ paths:
post:
tags:
- bank_transactions
- summary: "Performs bulk actions on an array of bank_transations"
+ summary: "Bulk actions"
description: ""
operationId: bulkBankTransactions
parameters:
@@ -1132,8 +1132,30 @@ paths:
post:
tags:
- bank_transactions
- summary: "Performs match actions on an array of bank_transactions"
- description: ""
+ summary: "Match transactions"
+ description: |
+ Matching invoices or a payment to a bank transactions.
+
+ The API expects the id of the transaction along with either a comma separated list of invoice ids OR the payment id to associate the transaction to.
+
+ Example for matching a transaction to two invoices:
+
+ {"transactions":[{"id":"olejRl5ejN","invoice_ids":"JxboYBLegw,JxboYBLeXX"}]}
+
+ Example for matching a transaction and a paymente:
+
+ {"transactions":[{"id":"olejRl5ejN","payment_id":"JxboYBLeXf"}]}
+
+ Matching expenses.
+
+ You can match an existing expense within Invoice Ninja - or - create a new expense using the following:
+
+ {"transactions":[{"id":"open5pld7A","vendor_id":"gl9avJnaG1","ninja_category_id":""}]}
+
+ To match to an existing expense:
+
+ {"transactions":[{"id":"Jxbo2qKagw","expense_id":"7N1aMM1aWm"}]}
+
operationId: matchBankTransactions
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
@@ -8608,21 +8630,20 @@ paths:
default:
$ref: "#/components/responses/default"
- /api/v1/vendors:
+ /api/v1/credits:
get:
tags:
- - vendors
- summary: "List vendors"
- description: "Lists vendors, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the vendors, these are handled by the VendorFilters class which defines the methods available"
- operationId: getVendors
+ - credits
+ summary: "List credits"
+ description: "Lists credits, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the credits, these are handled by the CreditFilters class which defines the methods available"
+ operationId: getCredits
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of vendors"
+ description: "A list of credits"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8638,7 +8659,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Vendor'
+ $ref: '#/components/schemas/Credit'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -8656,17 +8677,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - vendors
- summary: "Create vendor"
- description: "Adds a vendor to a company"
- operationId: storeVendor
+ - credits
+ summary: "Create credit"
+ description: "Adds an credit to the system"
+ operationId: storeCredit
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "Returns the saved clivendorent object"
+ description: "Returns the saved credit object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8677,7 +8698,374 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/Credit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+
+ "/api/v1/credits/{id}":
+ get:
+ tags:
+ - credits
+ summary: "Show credit"
+ description: "Displays an credit by id"
+ operationId: showCredit
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Credit Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the credit object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Credit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ put:
+ tags:
+ - Credits
+ summary: "Update credit"
+ description: "Handles the updating of an Credit by id"
+ operationId: updateCredit
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Credit Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Credit object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Credit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ delete:
+ tags:
+ - credits
+ summary: "Delete credit"
+ description: "Handles the deletion of an credit by id"
+ operationId: deleteCredit
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Credit Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns a HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/credits/{id}/edit":
+ get:
+ tags:
+ - credits
+ summary: "Edit credit"
+ description: "Displays an credit by id"
+ operationId: editCredit
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Invoice Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the credit object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Invoice"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/credits/create:
+ get:
+ tags:
+ - credits
+ summary: "Blank credit"
+ description: "Returns a blank object with default values"
+ operationId: getCreditsCreate
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "A blank credit object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Credit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/credits/bulk:
+ post:
+ tags:
+ - credits
+ summary: "Bulk credit actions"
+ description: ""
+ operationId: bulkCredits
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/index"
+ requestBody:
+ description: "User credentials"
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: string
+ example: '[D2J234DFA,D2J234DFA,D2J234DFA]'
+ responses:
+ 200:
+ description: "The Bulk Action response"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/credit/{invitation_key}/download":
+ get:
+ tags:
+ - quotes
+ summary: "Download quote PDF"
+ description: "Downloads a specific quote"
+ operationId: downloadCredit
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Credit Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the credit pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/credits/{id}/upload":
+ post:
+ tags:
+ - credits
+ summary: "Upload a credit document"
+ description: "Handles the uploading of a document to a credit"
+ operationId: uploadCredits
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Credit Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ requestBody:
+ description: "File Upload Body"
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ _method:
+ type: string
+ example: PUT
+ documents:
+ type: array
+ items:
+ description: "Array of binary documents for upload"
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "Returns the Credit object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Credit"
401:
$ref: "#/components/responses/401"
403:
@@ -8690,28 +9078,103 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/vendors/{id}":
+ /api/v1/recurring_invoices:
get:
tags:
- - vendors
- summary: "Show vendor"
- description: "Displays a vendor by id"
- operationId: showVendor
+ - Recurring Invoices
+ summary: "List recurring invoices"
+ description: |
+ Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
+
+ operationId: getRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The vendor Hashed ID"
- required: true
+ - $ref: "#/components/parameters/client_id"
+ - $ref: "#/components/parameters/created_at"
+ - $ref: "#/components/parameters/updated_at"
+ - $ref: "#/components/parameters/is_deleted"
+ - $ref: "#/components/parameters/filter_deleted_clients"
+ - $ref: "#/components/parameters/vendor_id"
+ - name: filter
+ in: query
+ description: |
+ Searches across a range of columns including:
+ - custom_value1
+ - custom_value2
+ - custom_value3
+ - custom_value4
+ required: false
schema:
type: string
- format: string
- example: D2J234DFA
+ example: ?filter=bob
+ - name: client_status
+ in: query
+ description: |
+ A comma separated list of invoice status strings. Valid options include:
+ - all
+ - active
+ - paused
+ - completed
+ required: false
+ schema:
+ type: string
+ example: ?client_status=active,paused
+ - name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc number|desc balance|asc
responses:
200:
- description: "Returns the vendor object"
+ description: "A list of recurring_invoices"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/RecurringInvoice'
+ meta:
+ type: object
+ $ref: '#/components/schemas/Meta'
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ post:
+ tags:
+ - Recurring Invoices
+ summary: "Create recurring invoice"
+ description: "Adds a Recurring Invoice to the system"
+ operationId: storeRecurringInvoice
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns the saved RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8722,7 +9185,53 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+
+ "/api/v1/recurring_invoices/{id}":
+ get:
+ tags:
+ - Recurring Invoices
+ summary: "Show recurring invoice"
+ description: "Displays an RecurringInvoice by id"
+ operationId: showRecurringInvoice
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The RecurringInvoice Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the RecurringInvoice object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -8737,17 +9246,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - vendors
- summary: "Update vendor"
- description: "Handles the updating of a vendor by id"
- operationId: updateVendor
+ - Recurring Invoices
+ summary: "Update recurring invoice"
+ description: "Handles the updating of an RecurringInvoice by id"
+ operationId: updateRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Vendor Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -8755,7 +9264,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the vendor object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8766,7 +9275,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -8781,17 +9290,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - vendors
- summary: "Delete vendor"
- description: "Handles the deletion of a vendor by id"
- operationId: deleteVendor
+ - Recurring Invoices
+ summary: "Delete recurring invoice"
+ description: "Handles the deletion of an RecurringInvoice by id"
+ operationId: deleteRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Vendor Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -8819,20 +9328,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/vendors/{id}/edit":
+ "/api/v1/recurring_invoices/{id}/edit":
get:
tags:
- - vendors
- summary: "Edit vendor"
- description: "Displays a vendor by id"
- operationId: editVendor
+ - Recurring Invoices
+ summary: "Edit recurring invoice"
+ description: "Displays an RecurringInvoice by id"
+ operationId: editRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Vendor Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -8840,7 +9349,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the vendor object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8851,7 +9360,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -8864,20 +9373,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/vendors/create:
+
+ /api/v1/recurring_invoices/create:
get:
tags:
- - vendors
- summary: "Blank vendor"
- description: "Returns a blank vendor with default values"
- operationId: getVendorsCreate
+ - Recurring Invoices
+ summary: "Blank recurring invoice"
+ description: "Returns a blank object with default values"
+ operationId: getRecurringInvoicesCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank vendor object"
+ description: "A blank RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8888,7 +9398,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -8901,31 +9411,55 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/vendors/bulk:
+ /api/v1/recurring_invoices/bulk:
post:
tags:
- - vendors
- summary: "Bulk vendor actions"
- description: ""
- operationId: bulkVendors
+ - Recurring Invoices
+ summary: "Bulk recurring invoice actions"
+ description: |
+ There are multiple actions that are available including:
+
+ operationId: bulkRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: "User credentials"
+ description: "Bulk action details"
required: true
content:
application/json:
schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
+ type: object
+ properties:
+ action:
+ type: string
+ description: |
+ The action to be performed, options include:
+ - `start`
+ Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
+ If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
+ - `stop`
+ Stops the recurring invoice.
+ - `send_now`
+ Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
+ - `restore`
+ Restores the recurring invoice from an archived or deleted state.
+ - `archive`
+ Archives the recurring invoice. The recurring invoice will not fire in this state.
+ - `delete`
+ Deletes a recurring invoice.
+ ids:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
+ type: string
+ example:
+ action: start
+ ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
responses:
200:
- description: "The Vendor User response"
+ description: "The RecurringInvoice response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8936,7 +9470,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -8949,20 +9483,115 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/vendors/{id}/upload":
- post:
+ "/api/v1/recurring_invoices/{id}/{action}":
+ get:
+ deprecated: true
tags:
- - vendors
- summary: "Uploads a vendor document"
- description: "Handles the uploading of a document to a vendor"
- operationId: uploadVendor
+ - Recurring Invoices
+ summary: "Custom recurring invoice action"
+ description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
+ operationId: actionRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Vendor Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ - name: action
+ in: path
+ description: "The action string to be performed"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: clone_to_quote
+ responses:
+ 200:
+ description: "Returns the RecurringInvoice object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/RecurringInvoice"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/recurring_invoice/{invitation_key}/download":
+ get:
+ tags:
+ - Recurring Invoices
+ summary: "Download recurring invoice PDF"
+ description: "Downloads a specific invoice"
+ operationId: downloadRecurringInvoice
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Recurring Invoice Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the recurring invoice pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/recurring_invoices/{id}/upload":
+ post:
+ tags:
+ - Recurring Invoices
+ summary: "Add recurring invoice document"
+ description: "Handles the uploading of a document to a recurring_invoice"
+ operationId: uploadRecurringInvoice
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -8987,7 +9616,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Vendor object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -8998,7 +9627,989 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Vendor"
+ $ref: "#/components/schemas/RecurringInvoice"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/tasks:
+ get:
+ tags:
+ - tasks
+ summary: "List tasks"
+ description: "Lists tasks, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the tasks, these are handled by the TaskFilters class which defines the methods available"
+ operationId: getTasks
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/index"
+ responses:
+ 200:
+ description: "A list of tasks"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Task'
+ meta:
+ type: object
+ $ref: '#/components/schemas/Meta'
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ post:
+ tags:
+ - tasks
+ summary: "Create task"
+ description: "Adds an task to a company"
+ operationId: storeTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns the saved task object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/tasks/{id}":
+ get:
+ tags:
+ - tasks
+ summary: "Show task"
+ description: "Displays a task by id"
+ operationId: showTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Task Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the task object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ put:
+ tags:
+ - tasks
+ summary: "Update task"
+ description: "Handles the updating of a task by id"
+ operationId: updateTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The task Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the task object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ delete:
+ tags:
+ - tasks
+ summary: "Delete task"
+ description: "Handles the deletion of a task by id"
+ operationId: deleteTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Task Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns a HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/tasks/{id}/edit":
+ get:
+ tags:
+ - tasks
+ summary: "Edit task"
+ description: "Displays a task by id"
+ operationId: editTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Task Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the client object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/tasks/create:
+ get:
+ tags:
+ - tasks
+ summary: "Blank task"
+ description: "Returns a blank task with default values"
+ operationId: getTasksCreate
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "A blank task object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/tasks/bulk:
+ post:
+ tags:
+ - tasks
+ summary: "Bulk task actions"
+ description: ""
+ operationId: bulkTasks
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/index"
+ requestBody:
+ description: "User credentials"
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
+ responses:
+ 200:
+ description: "The Task User response"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/tasks/{id}/upload":
+ post:
+ tags:
+ - tasks
+ summary: "Uploads a task document"
+ description: "Handles the uploading of a document to a task"
+ operationId: uploadTask
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Task Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ requestBody:
+ description: "File Upload Body"
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ _method:
+ type: string
+ example: PUT
+ documents:
+ type: array
+ items:
+ description: "Array of binary documents for upload"
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "Returns the Task object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/tasks/sort:
+ post:
+ tags:
+ - tasks
+ summary: "Sort tasks on KanBan"
+ description: "Sorts tasks after drag and drop on the KanBan."
+ operationId: sortTasks
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns an Ok, 200 HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes:
+ get:
+ tags:
+ - quotes
+ summary: "List quotes"
+ description: "Lists quotes, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the quotes, these are handled by the QuoteFilters class which defines the methods available"
+ operationId: getQuotes
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/status"
+ - $ref: "#/components/parameters/client_id"
+ - $ref: "#/components/parameters/created_at"
+ - $ref: "#/components/parameters/updated_at"
+ - $ref: "#/components/parameters/is_deleted"
+ - $ref: "#/components/parameters/filter_deleted_clients"
+ - $ref: "#/components/parameters/vendor_id"
+ - name: filter
+ in: query
+ description: |
+ Searches across a range of columns including:
+ - number
+ - custom_value1
+ - custom_value2
+ - custom_value3
+ - custom_value4
+ required: false
+ schema:
+ type: string
+ example: ?filter=bob
+ - name: client_status
+ in: query
+ description: |
+ A comma separated list of quote status strings. Valid options include:
+ - all
+ - draft
+ - sent
+ - approved
+ - expired
+ - upcoming
+ required: false
+ schema:
+ type: string
+ example: ?client_status=paid,unpaid
+ - name: number
+ in: query
+ description: |
+ Search quote by quote number
+ required: false
+ schema:
+ type: string
+ example: ?number=Q-001
+ - name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc number|desc balance|asc
+ responses:
+ 200:
+ description: "A list of quotes"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Quote'
+ meta:
+ type: object
+ $ref: '#/components/schemas/Meta'
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ post:
+ tags:
+ - quotes
+ summary: "Create quote"
+ description: "Adds an Quote to the system"
+ operationId: storeQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns the saved Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}":
+ get:
+ tags:
+ - quotes
+ summary: "Show quote"
+ description: "Displays an Quote by id"
+ operationId: showQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ put:
+ tags:
+ - quotes
+ summary: "Update quote"
+ description: "Handles the updating of an Quote by id"
+ operationId: updateQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ delete:
+ tags:
+ - quotes
+ summary: "Delete quote"
+ description: "Handles the deletion of an Quote by id"
+ operationId: deleteQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns a HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/edit":
+ get:
+ tags:
+ - quotes
+ summary: "Edit quote"
+ description: "Displays an Quote by id"
+ operationId: editQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes/create:
+ get:
+ tags:
+ - quotes
+ summary: "Blank quote"
+ description: "Returns a blank object with default values"
+ operationId: getQuotesCreate
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "A blank Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes/bulk:
+ post:
+ tags:
+ - quotes
+ summary: "Bulk quote actions"
+ description: ""
+ operationId: bulkQuotes
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/index"
+ requestBody:
+ description: "Hashed ids"
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
+ responses:
+ 200:
+ description: "The Quote response"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/{action}":
+ get:
+ deprecated: true
+ tags:
+ - quotes
+ summary: "Performs a custom action on an Quote"
+ description: "Performs a custom action on an Quote.\n\n The current range of actions are as follows\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - convert\n - convert_to_invoice\n - email"
+ operationId: actionQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ - name: action
+ in: path
+ description: "The action string to be performed"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: clone_to_quote
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quote/{invitation_key}/download":
+ get:
+ tags:
+ - quotes
+ summary: "Download quote PDF"
+ description: "Downloads a specific quote"
+ operationId: downloadQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Quote Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the quote pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/upload":
+ post:
+ tags:
+ - quotes
+ summary: "Upload a quote document"
+ description: "Handles the uploading of a document to a quote"
+ operationId: uploadQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ requestBody:
+ description: "File Upload Body"
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ _method:
+ type: string
+ example: PUT
+ documents:
+ type: array
+ items:
+ description: "Array of binary documents for upload"
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
401:
$ref: "#/components/responses/401"
403:
@@ -9722,20 +11333,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/credits:
+ /api/v1/projects:
get:
tags:
- - credits
- summary: "List credits"
- description: "Lists credits, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the credits, these are handled by the CreditFilters class which defines the methods available"
- operationId: getCredits
+ - projects
+ summary: "List projects"
+ description: "Lists projects"
+ operationId: getProjects
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of credits"
+ description: "A list of projects"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9751,7 +11363,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Credit'
+ $ref: '#/components/schemas/Project'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -9769,17 +11381,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - credits
- summary: "Create credit"
- description: "Adds an credit to the system"
- operationId: storeCredit
+ - projects
+ summary: "Create project"
+ description: "Adds an project to a company"
+ operationId: storeProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "Returns the saved credit object"
+ description: "Returns the saved project object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9790,12 +11402,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Credit"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -9804,21 +11415,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
-
- "/api/v1/credits/{id}":
+ "/api/v1/projects/{id}":
get:
tags:
- - credits
- summary: "Show credit"
- description: "Displays an credit by id"
- operationId: showCredit
+ - projects
+ summary: "Show project"
+ description: "Displays a project by id"
+ operationId: showProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Credit Hashed ID"
+ description: "The Project Hashed ID"
required: true
schema:
type: string
@@ -9826,7 +11436,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the credit object"
+ description: "Returns the expense object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9837,12 +11447,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Credit"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -9853,17 +11462,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - Credits
- summary: "Update credit"
- description: "Handles the updating of an Credit by id"
- operationId: updateCredit
+ - projects
+ summary: "Update project"
+ description: "Handles the updating of a project by id"
+ operationId: updateProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Credit Hashed ID"
+ description: "The Project Hashed ID"
required: true
schema:
type: string
@@ -9871,7 +11480,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Credit object"
+ description: "Returns the project object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9882,12 +11491,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Credit"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -9898,17 +11506,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - credits
- summary: "Delete credit"
- description: "Handles the deletion of an credit by id"
- operationId: deleteCredit
+ - projects
+ summary: "Delete project"
+ description: "Handles the deletion of a project by id"
+ operationId: deleteProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Credit Hashed ID"
+ description: "The Project Hashed ID"
required: true
schema:
type: string
@@ -9928,7 +11536,6 @@ paths:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -9937,20 +11544,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/credits/{id}/edit":
+ "/api/v1/projects/{id}/edit":
get:
tags:
- - credits
- summary: "Edit credit"
- description: "Displays an credit by id"
- operationId: editCredit
+ - projects
+ summary: "Edit project"
+ description: "Displays a project by id"
+ operationId: editProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Invoice Hashed ID"
+ description: "The Project Hashed ID"
required: true
schema:
type: string
@@ -9958,7 +11565,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the credit object"
+ description: "Returns the project object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9969,12 +11576,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Invoice"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -9983,20 +11589,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/credits/create:
+ /api/v1/projects/create:
get:
tags:
- - credits
- summary: "Blank credit"
+ - projects
+ summary: "Blank project"
description: "Returns a blank object with default values"
- operationId: getCreditsCreate
+ operationId: getProjectsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank credit object"
+ description: "A blank project object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10007,12 +11613,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Credit"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -10021,13 +11626,13 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/credits/bulk:
+ /api/v1/projects/bulk:
post:
tags:
- - credits
- summary: "Bulk credit actions"
+ - projects
+ summary: "Bulk project actions"
description: ""
- operationId: bulkCredits
+ operationId: bulkProjects
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -10041,11 +11646,11 @@ paths:
type: array
items:
description: "Array of hashed IDs to be bulk 'actioned"
- type: string
- example: '[D2J234DFA,D2J234DFA,D2J234DFA]'
+ type: integer
+ example: "[0,1,2,3]"
responses:
200:
- description: "The Bulk Action response"
+ description: "The Project User response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10053,11 +11658,14 @@ paths:
$ref: "#/components/headers/X-RateLimit-Remaining"
X-RateLimit-Limit:
$ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
$ref: "#/components/responses/403"
-
422:
$ref: '#/components/responses/422'
429:
@@ -10066,62 +11674,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/credit/{invitation_key}/download":
- get:
- tags:
- - quotes
- summary: "Download quote PDF"
- description: "Downloads a specific quote"
- operationId: downloadCredit
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Credit Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the credit pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
-
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/credits/{id}/upload":
+ "/api/v1/projects/{id}/upload":
post:
tags:
- - credits
- summary: "Upload a credit document"
- description: "Handles the uploading of a document to a credit"
- operationId: uploadCredits
+ - projects
+ summary: "Uploads a project document"
+ description: "Handles the uploading of a document to a project"
+ operationId: uploadProject
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Credit Hashed ID"
+ description: "The Project Hashed ID"
required: true
schema:
type: string
@@ -10146,7 +11712,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Credit object"
+ description: "Returns the Project object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10157,7 +11723,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Credit"
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
@@ -10170,69 +11736,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/products:
+ /api/v1/vendors:
get:
tags:
- - products
- summary: "List products"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X GET 'https://invoicing.co/api/v1/products?filter=search&per_page=20&page=1&include=documents' \
- -H "X-API-TOKEN:company-token-test" \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: go
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $products = $ninja->products->all([
- 'filter' => 'search',
- 'per_page' => 20,
- 'page' => 1,
- 'include' => 'documents'
- ]);
- description: |
- Lists products within your company.
-
- You can search and filter the result set using query parameters. These can be chained together allowing fine grained lists to be generated.
-
- operationId: getProducts
+ - vendors
+ summary: "List vendors"
+ description: "Lists vendors, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the vendors, these are handled by the VendorFilters class which defines the methods available"
+ operationId: getVendors
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/status"
- - $ref: "#/components/parameters/client_id"
- - $ref: "#/components/parameters/created_at"
- - $ref: "#/components/parameters/updated_at"
- - $ref: "#/components/parameters/is_deleted"
- - $ref: "#/components/parameters/filter_deleted_clients"
- - $ref: "#/components/parameters/vendor_id"
- - name: filter
- in: query
- description: Filter by product name
- required: false
- schema:
- type: string
- example: bob
- - name: product_key
- in: query
- description: Filter by product key
- required: false
- schema:
- type: string
- example: bob
- - name: sort
- in: query
- description: Returns the list sorted by column in ascending or descending order.
- required: false
- schema:
- type: string
- example: id|desc product_key|desc
+ - $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of products"
+ description: "A list of vendors"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10248,14 +11766,14 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Product'
+ $ref: '#/components/schemas/Vendor'
meta:
type: object
$ref: '#/components/schemas/Meta'
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10263,46 +11781,20 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
+ $ref: "#/components/responses/default"
post:
tags:
- - products
- summary: "Create Product"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X POST 'https://invoicing.co/api/v1/products' \
- -H "X-API-TOKEN:company-token-test" \
- -H "Content-Type:application/json" \
- -d '{"product_key":"sku_1","notes":"product description","cost":1,"price":10}' \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: go
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $products = $ninja->products->create([
- 'product_key' => "sku_1",
- 'notes' => "product description",
- 'cost' => 1,
- 'price' => 10
- ]);
- description: "Adds a product to a company"
- operationId: storeProduct
+ - vendors
+ summary: "Create vendor"
+ description: "Adds a vendor to a company"
+ operationId: storeVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- requestBody:
- description: Product object that needs to be added to the company
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ProductRequest'
responses:
200:
- description: "Returns the saved product object"
+ description: "Returns the saved clivendorent object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10313,11 +11805,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10325,33 +11817,21 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
- "/api/v1/products/{id}":
+ $ref: "#/components/responses/default"
+ "/api/v1/vendors/{id}":
get:
tags:
- - products
- summary: "Show product"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X GET 'https://invoicing.co/api/v1/products/{id}' \
- -H "X-API-TOKEN:company-token-test" \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: php
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $product = $ninja->products->get("{id}");
- description: "Displays a product by id"
- operationId: showProduct
+ - vendors
+ summary: "Show vendor"
+ description: "Displays a vendor by id"
+ operationId: showVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Product Hashed ID"
+ description: "The vendor Hashed ID"
required: true
schema:
type: string
@@ -10359,7 +11839,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the product object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10370,11 +11850,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10382,56 +11862,28 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
+ $ref: "#/components/responses/default"
put:
tags:
- - products
- summary: "Update product"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X PUT 'https://invoicing.co/api/v1/products/{id}' \
- -H "X-API-TOKEN:company-token-test" \
- -H "Content-Type: application/json" \
- -d '{
- "product_key": "Updated Product",
- "price": 150.0,
- "notes": "An updated description of the product"
- }'
- - lang: go
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $product = $ninja->products->update("id", [
- "name" => "Updated Product",
- "price" => 150.0,
- "description" => "An updated description of the product"
- ]);
- description: "Handles the updating of a product by id"
- operationId: updateProduct
+ - vendors
+ summary: "Update vendor"
+ description: "Handles the updating of a vendor by id"
+ operationId: updateVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Product Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
format: string
example: D2J234DFA
- requestBody:
- description: Product object that needs to be added to the company
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ProductRequest'
responses:
200:
- description: "Returns the Product object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10442,11 +11894,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10454,32 +11906,20 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
+ $ref: "#/components/responses/default"
delete:
tags:
- - products
- summary: "Delete product"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X DELETE 'https://invoicing.co/api/v1/products/{id}' \
- -H "X-API-TOKEN:company-token-test" \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: go
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $ninja->products->bulk("delete", "id");
- description: "Handles the deletion of a product by id"
- operationId: deleteProduct
+ - vendors
+ summary: "Delete vendor"
+ description: "Handles the deletion of a vendor by id"
+ operationId: deleteVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Product Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -10496,9 +11936,9 @@ paths:
X-RateLimit-Limit:
$ref: "#/components/headers/X-RateLimit-Limit"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10506,33 +11946,21 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
- "/api/v1/products/{id}/edit":
+ $ref: "#/components/responses/default"
+ "/api/v1/vendors/{id}/edit":
get:
tags:
- - products
- summary: "Edit product"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X GET 'https://invoicing.co/api/v1/products/{id}/edit' \
- -H "X-API-TOKEN:company-token-test" \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: php
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $product = $ninja->products->get("{id}");
- description: "Displays an Product by id"
- operationId: editProduct
+ - vendors
+ summary: "Edit vendor"
+ description: "Displays a vendor by id"
+ operationId: editVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Product Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -10540,7 +11968,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Product object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10551,11 +11979,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10563,21 +11991,21 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
- "/api/v1/products/create":
+ $ref: "#/components/responses/default"
+ /api/v1/vendors/create:
get:
tags:
- - products
- summary: "Blank product"
- description: "Returns a blank product object with default values"
- operationId: getProductsCreate
+ - vendors
+ summary: "Blank vendor"
+ description: "Returns a blank vendor with default values"
+ operationId: getVendorsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank Product object"
+ description: "A blank vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10588,11 +12016,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10600,43 +12028,32 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
-
- /api/v1/products/bulk:
+ $ref: "#/components/responses/default"
+ /api/v1/vendors/bulk:
post:
tags:
- - products
- summary: "Bulk product actions"
- x-code-samples:
- - lang: curl
- label: Curl
- source: |
- curl -X GET 'https://invoicing.co/api/v1/products/bulk' \
- -H "Content-Type:application/json" \
- -d '{"action":"archive","ids":["id","id2"]}' \
- -H "X-API-TOKEN:company-token-test" \
- -H "X-Requested-With: XMLHttpRequest";
- - lang: php
- label: PHP
- source: |
- $ninja = new InvoiceNinja("your_token");
- $product = $ninja->products->bulk("action", ["id","id2"]);
- description: "Archive / Restore / Delete / Set tax id in bulk"
- operationId: bulkProducts
+ - vendors
+ summary: "Bulk vendor actions"
+ description: ""
+ operationId: bulkVendors
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: 'Bulk action array'
+ description: "User credentials"
required: true
content:
application/json:
schema:
- $ref: '#/components/schemas/ProductBulkAction'
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
responses:
200:
- description: "The Product response"
+ description: "The Vendor User response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10647,11 +12064,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10659,28 +12076,28 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
-
- "/api/v1/products/{id}/upload":
+ $ref: "#/components/responses/default"
+ "/api/v1/vendors/{id}/upload":
post:
tags:
- - products
- summary: "Add product document"
- description: "Handles the uploading of a document to a product"
- operationId: uploadProduct
+ - vendors
+ summary: "Uploads a vendor document"
+ description: "Handles the uploading of a document to a vendor"
+ operationId: uploadVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/client_include"
+ - $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Product Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
format: string
example: D2J234DFA
requestBody:
+ description: "File Upload Body"
required: true
content:
multipart/form-data:
@@ -10689,14 +12106,16 @@ paths:
properties:
_method:
type: string
- example: POST
+ example: PUT
documents:
type: array
items:
+ description: "Array of binary documents for upload"
+ type: string
format: binary
responses:
200:
- description: "Returns the Product object"
+ description: "Returns the Vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10707,11 +12126,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Product"
+ $ref: "#/components/schemas/Vendor"
401:
- $ref: '#/components/responses/401'
+ $ref: "#/components/responses/401"
403:
- $ref: '#/components/responses/403'
+ $ref: "#/components/responses/403"
422:
$ref: '#/components/responses/422'
429:
@@ -10719,15 +12138,14 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: '#/components/responses/default'
-
- /api/v1/quotes:
+ $ref: "#/components/responses/default"
+ /api/v1/payments:
get:
tags:
- - quotes
- summary: "List quotes"
- description: "Lists quotes, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the quotes, these are handled by the QuoteFilters class which defines the methods available"
- operationId: getQuotes
+ - payments
+ summary: "List payments"
+ description: "Lists payments, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the payments, these are handled by the PaymentFilters class which defines the methods available"
+ operationId: getPayments
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -10743,7 +12161,8 @@ paths:
in: query
description: |
Searches across a range of columns including:
- - number
+ - amount
+ - date
- custom_value1
- custom_value2
- custom_value3
@@ -10751,29 +12170,15 @@ paths:
required: false
schema:
type: string
- example: ?filter=bob
- - name: client_status
- in: query
- description: |
- A comma separated list of quote status strings. Valid options include:
- - all
- - draft
- - sent
- - approved
- - expired
- - upcoming
- required: false
- schema:
- type: string
- example: ?client_status=paid,unpaid
+ example: ?filter=10
- name: number
in: query
description: |
- Search quote by quote number
+ Search payments by payment number
required: false
schema:
type: string
- example: ?number=Q-001
+ example: ?number=0001
- name: sort
in: query
description: Returns the list sorted by column in ascending or descending order.
@@ -10783,7 +12188,7 @@ paths:
example: id|desc number|desc balance|asc
responses:
200:
- description: "A list of quotes"
+ description: "A list of payments"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -10799,7 +12204,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Quote'
+ $ref: '#/components/schemas/Payment'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -10817,276 +12222,24 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - quotes
- summary: "Create quote"
- description: "Adds an Quote to the system"
- operationId: storeQuote
+ - payments
+ summary: "Create payment"
+ description: "Adds an Payment to the system"
+ operationId: storePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}":
- get:
- tags:
- - quotes
- summary: "Show quote"
- description: "Displays an Quote by id"
- operationId: showQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- put:
- tags:
- - quotes
- summary: "Update quote"
- description: "Handles the updating of an Quote by id"
- operationId: updateQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- delete:
- tags:
- - quotes
- summary: "Delete quote"
- description: "Handles the deletion of an Quote by id"
- operationId: deleteQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns a HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/edit":
- get:
- tags:
- - quotes
- summary: "Edit quote"
- description: "Displays an Quote by id"
- operationId: editQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/quotes/create:
- get:
- tags:
- - quotes
- summary: "Blank quote"
- description: "Returns a blank object with default values"
- operationId: getQuotesCreate
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A blank Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/quotes/bulk:
- post:
- tags:
- - quotes
- summary: "Bulk quote actions"
- description: ""
- operationId: bulkQuotes
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/index"
requestBody:
- description: "Hashed ids"
+ description: "The payment request"
required: true
content:
application/json:
schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
+ $ref: "#/components/schemas/Payment"
responses:
200:
- description: "The Quote response"
+ description: "Returns the saved Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11097,245 +12250,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/{action}":
- get:
- deprecated: true
- tags:
- - quotes
- summary: "Performs a custom action on an Quote"
- description: "Performs a custom action on an Quote.\n\n The current range of actions are as follows\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - convert\n - convert_to_invoice\n - email"
- operationId: actionQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- - name: action
- in: path
- description: "The action string to be performed"
- required: true
- schema:
- type: string
- format: string
- example: clone_to_quote
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quote/{invitation_key}/download":
- get:
- tags:
- - quotes
- summary: "Download quote PDF"
- description: "Downloads a specific quote"
- operationId: downloadQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Quote Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the quote pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/upload":
- post:
- tags:
- - quotes
- summary: "Upload a quote document"
- description: "Handles the uploading of a document to a quote"
- operationId: uploadQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- requestBody:
- description: "File Upload Body"
- required: true
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- _method:
- type: string
- example: PUT
- documents:
- type: array
- items:
- description: "Array of binary documents for upload"
- type: string
- format: binary
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/purchase_orders:
- get:
- tags:
- - Purchase Orders
- summary: "List purchase orders"
- description: "Lists purchase orders, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the purchase orders, these are handled by the PurchaseOrderFilters class which defines the methods available"
- operationId: getPurchaseOrders
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A list of purchase orders"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- type: object
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/PurchaseOrder'
- meta:
- type: object
- $ref: '#/components/schemas/Meta'
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- post:
- tags:
- - Purchase Orders
- summary: "Create purchase order"
- description: "Adds an purchase order to the system"
- operationId: storePurchaseOrder
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved purchase order object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11349,20 +12264,20 @@ paths:
default:
$ref: "#/components/responses/default"
- "/api/v1/purchase_orders/{id}":
+ "/api/v1/payments/{id}":
get:
tags:
- - Purchase Orders
- summary: "Show purchase order"
- description: "Displays an purchase order by id"
- operationId: showPurchaseOrder
+ - payments
+ summary: "Show payment"
+ description: "Displays an Payment by id"
+ operationId: showPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Purchase order Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11370,7 +12285,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the purchase order object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11381,7 +12296,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11394,20 +12309,19 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/purchase_order/{id}":
put:
tags:
- - Purchase Orders
- summary: "Update purchase order"
- description: "Handles the updating of an purchase order by id"
- operationId: updatePurchaseOrder
+ - payments
+ summary: "Update payment"
+ description: "Handles the updating of an Payment by id"
+ operationId: updatePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The purchase order Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11415,7 +12329,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the purchase order object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11426,7 +12340,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11441,17 +12355,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - Purchase Orders
- summary: "Delete purchase order"
- description: "Handles the deletion of an purchase orders by id"
- operationId: deletePurchaseOrder
+ - payments
+ summary: "Delete payment"
+ description: "Handles the deletion of an Payment by id"
+ operationId: deletePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The purhcase order Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11479,20 +12393,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/purchase_orders/{id}/edit":
+ "/api/v1/payments/{id}/edit":
get:
tags:
- - Purchase Orders
- summary: "Edit purchase order"
- description: "Displays an purchase order by id"
- operationId: editPurchaseOrder
+ - payments
+ summary: "Edit payment"
+ description: "Displays an Payment by id"
+ operationId: editPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The purchase order Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11500,7 +12414,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the purchase order object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11511,7 +12425,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11524,21 +12438,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
-
- /api/v1/purchase_orders/create:
+ /api/v1/payments/create:
get:
tags:
- - Purchase Orders
- summary: "Blank purchase order"
+ - payments
+ summary: "Blank payment"
description: "Returns a blank object with default values"
- operationId: getPurchaseOrderCreate
+ operationId: getPaymentsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank purchase order object"
+ description: "A blank Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11549,7 +12462,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11562,81 +12475,27 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/purchase_orders/bulk:
+ /api/v1/payments/refund:
post:
tags:
- - Purchase Orders
- summary: "Bulk purchase order action"
- description: ""
- operationId: bulkPurchaseOrderss
+ - payments
+ summary: "Refund payment"
+ description: "Adds an Refund to the system"
+ operationId: storeRefund
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/index"
+ - $ref: "#/components/parameters/include"
requestBody:
- description: "Purchase Order IDS"
+ description: "The refund request"
required: true
content:
application/json:
schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
+ $ref: "#/components/schemas/Payment"
responses:
200:
- description: "The Bulk Action response"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/purchase_orders/{id}/{action}":
- get:
- deprecated: true
- tags:
- - Purchase Orders
- summary: "Custom purchase order actions"
- description: "Performs a custom action on an purchase order.\n *\n * The current range of actions are as follows\n * - mark_paid\n * - download\n * - archive\n * - delete\n * - email"
- operationId: actionPurchaseOrder
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Purchase Order Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- - name: action
- in: path
- description: "The action string to be performed"
- required: true
- schema:
- type: string
- format: string
- example: clone_to_quote
- responses:
- 200:
- description: "Returns the purchase order object"
+ description: "Returns the saved Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11647,7 +12506,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/PurchaseOrder"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11660,409 +12519,13 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/purchase_orders/{id}/upload":
+ /api/v1/payments/bulk:
post:
tags:
- - Purchase Orders
- summary: "Uploads a purchase order document"
- description: "Handles the uploading of a document to a purchase_order"
- operationId: uploadPurchaseOrder
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Purchase Order Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- requestBody:
- description: "File Upload Body"
- required: true
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- _method:
- type: string
- example: PUT
- documents:
- type: array
- items:
- description: "Array of binary documents for upload"
- type: string
- format: binary
- responses:
- 200:
- description: "Returns the Purchase Order object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/PurchaseOrder"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/purchase_order/{invitation_key}/download":
- get:
- tags:
- - Purchase Orders
- summary: "Download a purchase order PDF"
- description: "Downloads a specific purchase order"
- operationId: downloadPurchaseOrder
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Purchase Order Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Purchase Order pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/tasks:
- get:
- tags:
- - tasks
- summary: "List tasks"
- description: "Lists tasks, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the tasks, these are handled by the TaskFilters class which defines the methods available"
- operationId: getTasks
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/index"
- responses:
- 200:
- description: "A list of tasks"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- type: object
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/Task'
- meta:
- type: object
- $ref: '#/components/schemas/Meta'
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- post:
- tags:
- - tasks
- summary: "Create task"
- description: "Adds an task to a company"
- operationId: storeTask
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved task object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/tasks/{id}":
- get:
- tags:
- - tasks
- summary: "Show task"
- description: "Displays a task by id"
- operationId: showTask
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Task Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the task object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- put:
- tags:
- - tasks
- summary: "Update task"
- description: "Handles the updating of a task by id"
- operationId: updateTask
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The task Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the task object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- delete:
- tags:
- - tasks
- summary: "Delete task"
- description: "Handles the deletion of a task by id"
- operationId: deleteTask
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Task Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns a HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/tasks/{id}/edit":
- get:
- tags:
- - tasks
- summary: "Edit task"
- description: "Displays a task by id"
- operationId: editTask
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Task Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the client object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/tasks/create:
- get:
- tags:
- - tasks
- summary: "Blank task"
- description: "Returns a blank task with default values"
- operationId: getTasksCreate
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A blank task object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/tasks/bulk:
- post:
- tags:
- - tasks
- summary: "Bulk task actions"
+ - payments
+ summary: "Bulk payment actions"
description: ""
- operationId: bulkTasks
+ operationId: bulkPayments
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -12080,7 +12543,7 @@ paths:
example: "[0,1,2,3]"
responses:
200:
- description: "The Task User response"
+ description: "The Payment response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12091,7 +12554,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -12104,20 +12567,75 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/tasks/{id}/upload":
- post:
+ "/api/v1/payments/{id}/{action}":
+ get:
+ deprecated: true
tags:
- - tasks
- summary: "Uploads a task document"
- description: "Handles the uploading of a document to a task"
- operationId: uploadTask
+ - payments
+ summary: "Custom payment actions"
+ description: "Performs a custom action on an Payment.\n\n The current range of actions are as follows\n - clone_to_Payment\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
+ operationId: actionPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Task Hashed ID"
+ description: "The Payment Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ - name: action
+ in: path
+ description: "The action string to be performed"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: clone_to_quote
+ responses:
+ 200:
+ description: "Returns the Payment object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Payment"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+
+ "/api/v1/payments/{id}/upload":
+ post:
+ tags:
+ - payments
+ summary: "Upload a payment document"
+ description: "Handles the uploading of a document to a payment"
+ operationId: uploadPayment
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -12142,7 +12660,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Task object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12153,40 +12671,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/tasks/sort:
- post:
- tags:
- - tasks
- summary: "Sort tasks on KanBan"
- description: "Sorts tasks after drag and drop on the KanBan."
- operationId: sortTasks
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns an Ok, 200 HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -12953,21 +13438,20 @@ paths:
description: 'Server error'
default:
$ref: '#/components/responses/default'
- /api/v1/projects:
+ /api/v1/purchase_orders:
get:
tags:
- - projects
- summary: "List projects"
- description: "Lists projects"
- operationId: getProjects
+ - Purchase Orders
+ summary: "List purchase orders"
+ description: "Lists purchase orders, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the purchase orders, these are handled by the PurchaseOrderFilters class which defines the methods available"
+ operationId: getPurchaseOrders
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of projects"
+ description: "A list of purchase orders"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12983,7 +13467,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Project'
+ $ref: '#/components/schemas/PurchaseOrder'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -13001,17 +13485,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - projects
- summary: "Create project"
- description: "Adds an project to a company"
- operationId: storeProject
+ - Purchase Orders
+ summary: "Create purchase order"
+ description: "Adds an purchase order to the system"
+ operationId: storePurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "Returns the saved project object"
+ description: "Returns the saved purchase order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13022,7 +13506,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13035,20 +13519,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}":
+
+ "/api/v1/purchase_orders/{id}":
get:
tags:
- - projects
- summary: "Show project"
- description: "Displays a project by id"
- operationId: showProject
+ - Purchase Orders
+ summary: "Show purchase order"
+ description: "Displays an purchase order by id"
+ operationId: showPurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Purchase order Hashed ID"
required: true
schema:
type: string
@@ -13056,7 +13541,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the expense object"
+ description: "Returns the purchase order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13067,7 +13552,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13080,19 +13565,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
+ "/api/v1/purchase_order/{id}":
put:
tags:
- - projects
- summary: "Update project"
- description: "Handles the updating of a project by id"
- operationId: updateProject
+ - Purchase Orders
+ summary: "Update purchase order"
+ description: "Handles the updating of an purchase order by id"
+ operationId: updatePurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The purchase order Hashed ID"
required: true
schema:
type: string
@@ -13100,7 +13586,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the project object"
+ description: "Returns the purchase order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13111,7 +13597,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13126,17 +13612,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - projects
- summary: "Delete project"
- description: "Handles the deletion of a project by id"
- operationId: deleteProject
+ - Purchase Orders
+ summary: "Delete purchase order"
+ description: "Handles the deletion of an purchase orders by id"
+ operationId: deletePurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The purhcase order Hashed ID"
required: true
schema:
type: string
@@ -13164,20 +13650,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}/edit":
+ "/api/v1/purchase_orders/{id}/edit":
get:
tags:
- - projects
- summary: "Edit project"
- description: "Displays a project by id"
- operationId: editProject
+ - Purchase Orders
+ summary: "Edit purchase order"
+ description: "Displays an purchase order by id"
+ operationId: editPurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The purchase order Hashed ID"
required: true
schema:
type: string
@@ -13185,7 +13671,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the project object"
+ description: "Returns the purchase order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13196,7 +13682,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13209,20 +13695,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/projects/create:
+
+ /api/v1/purchase_orders/create:
get:
tags:
- - projects
- summary: "Blank project"
+ - Purchase Orders
+ summary: "Blank purchase order"
description: "Returns a blank object with default values"
- operationId: getProjectsCreate
+ operationId: getPurchaseOrderCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank project object"
+ description: "A blank purchase order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13233,7 +13720,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13246,19 +13733,19 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/projects/bulk:
+ /api/v1/purchase_orders/bulk:
post:
tags:
- - projects
- summary: "Bulk project actions"
+ - Purchase Orders
+ summary: "Bulk purchase order action"
description: ""
- operationId: bulkProjects
+ operationId: bulkPurchaseOrderss
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: "User credentials"
+ description: "Purchase Order IDS"
required: true
content:
application/json:
@@ -13270,7 +13757,7 @@ paths:
example: "[0,1,2,3]"
responses:
200:
- description: "The Project User response"
+ description: "The Bulk Action response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13278,10 +13765,6 @@ paths:
$ref: "#/components/headers/X-RateLimit-Remaining"
X-RateLimit-Limit:
$ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
@@ -13294,20 +13777,74 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}/upload":
- post:
+ "/api/v1/purchase_orders/{id}/{action}":
+ get:
+ deprecated: true
tags:
- - projects
- summary: "Uploads a project document"
- description: "Handles the uploading of a document to a project"
- operationId: uploadProject
+ - Purchase Orders
+ summary: "Custom purchase order actions"
+ description: "Performs a custom action on an purchase order.\n *\n * The current range of actions are as follows\n * - mark_paid\n * - download\n * - archive\n * - delete\n * - email"
+ operationId: actionPurchaseOrder
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Purchase Order Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ - name: action
+ in: path
+ description: "The action string to be performed"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: clone_to_quote
+ responses:
+ 200:
+ description: "Returns the purchase order object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PurchaseOrder"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/purchase_orders/{id}/upload":
+ post:
+ tags:
+ - Purchase Orders
+ summary: "Uploads a purchase order document"
+ description: "Handles the uploading of a document to a purchase_order"
+ operationId: uploadPurchaseOrder
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Purchase Order Hashed ID"
required: true
schema:
type: string
@@ -13332,7 +13869,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Project object"
+ description: "Returns the Purchase Order object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13343,7 +13880,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/PurchaseOrder"
401:
$ref: "#/components/responses/401"
403:
@@ -13356,13 +13893,75 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/payments:
+ "/api/v1/purchase_order/{invitation_key}/download":
get:
tags:
- - payments
- summary: "List payments"
- description: "Lists payments, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the payments, these are handled by the PaymentFilters class which defines the methods available"
- operationId: getPayments
+ - Purchase Orders
+ summary: "Download a purchase order PDF"
+ description: "Downloads a specific purchase order"
+ operationId: downloadPurchaseOrder
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Purchase Order Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Purchase Order pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/products:
+ get:
+ tags:
+ - products
+ summary: "List products"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X GET 'https://invoicing.co/api/v1/products?filter=search&per_page=20&page=1&include=documents' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: go
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $products = $ninja->products->all([
+ 'filter' => 'search',
+ 'per_page' => 20,
+ 'page' => 1,
+ 'include' => 'documents'
+ ]);
+ description: |
+ Lists products within your company.
+
+ You can search and filter the result set using query parameters. These can be chained together allowing fine grained lists to be generated.
+
+ operationId: getProducts
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -13376,36 +13975,28 @@ paths:
- $ref: "#/components/parameters/vendor_id"
- name: filter
in: query
- description: |
- Searches across a range of columns including:
- - amount
- - date
- - custom_value1
- - custom_value2
- - custom_value3
- - custom_value4
+ description: Filter by product name
required: false
schema:
type: string
- example: ?filter=10
- - name: number
+ example: bob
+ - name: product_key
in: query
- description: |
- Search payments by payment number
+ description: Filter by product key
required: false
schema:
type: string
- example: ?number=0001
+ example: bob
- name: sort
in: query
description: Returns the list sorted by column in ascending or descending order.
required: false
schema:
type: string
- example: id|desc number|desc balance|asc
+ example: id|desc product_key|desc
responses:
200:
- description: "A list of payments"
+ description: "A list of products"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13421,14 +14012,14 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Payment'
+ $ref: '#/components/schemas/Product'
meta:
type: object
$ref: '#/components/schemas/Meta'
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13436,27 +14027,46 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
+ $ref: '#/components/responses/default'
post:
tags:
- - payments
- summary: "Create payment"
- description: "Adds an Payment to the system"
- operationId: storePayment
+ - products
+ summary: "Create Product"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X POST 'https://invoicing.co/api/v1/products' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "Content-Type:application/json" \
+ -d '{"product_key":"sku_1","notes":"product description","cost":1,"price":10}' \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: go
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $products = $ninja->products->create([
+ 'product_key' => "sku_1",
+ 'notes' => "product description",
+ 'cost' => 1,
+ 'price' => 10
+ ]);
+ description: "Adds a product to a company"
+ operationId: storeProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
requestBody:
- description: "The payment request"
+ description: Product object that needs to be added to the company
required: true
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: '#/components/schemas/ProductRequest'
responses:
200:
- description: "Returns the saved Payment object"
+ description: "Returns the saved product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13467,11 +14077,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13479,22 +14089,33 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
-
- "/api/v1/payments/{id}":
+ $ref: '#/components/responses/default'
+ "/api/v1/products/{id}":
get:
tags:
- - payments
- summary: "Show payment"
- description: "Displays an Payment by id"
- operationId: showPayment
+ - products
+ summary: "Show product"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X GET 'https://invoicing.co/api/v1/products/{id}' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: php
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $product = $ninja->products->get("{id}");
+ description: "Displays a product by id"
+ operationId: showProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The Product Hashed ID"
required: true
schema:
type: string
@@ -13502,7 +14123,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13513,11 +14134,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13525,28 +14146,56 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
+ $ref: '#/components/responses/default'
put:
tags:
- - payments
- summary: "Update payment"
- description: "Handles the updating of an Payment by id"
- operationId: updatePayment
+ - products
+ summary: "Update product"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X PUT 'https://invoicing.co/api/v1/products/{id}' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "product_key": "Updated Product",
+ "price": 150.0,
+ "notes": "An updated description of the product"
+ }'
+ - lang: go
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $product = $ninja->products->update("id", [
+ "name" => "Updated Product",
+ "price" => 150.0,
+ "description" => "An updated description of the product"
+ ]);
+ description: "Handles the updating of a product by id"
+ operationId: updateProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The Product Hashed ID"
required: true
schema:
type: string
format: string
example: D2J234DFA
+ requestBody:
+ description: Product object that needs to be added to the company
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProductRequest'
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the Product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13557,11 +14206,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13569,20 +14218,32 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
+ $ref: '#/components/responses/default'
delete:
tags:
- - payments
- summary: "Delete payment"
- description: "Handles the deletion of an Payment by id"
- operationId: deletePayment
+ - products
+ summary: "Delete product"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X DELETE 'https://invoicing.co/api/v1/products/{id}' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: go
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $ninja->products->bulk("delete", "id");
+ description: "Handles the deletion of a product by id"
+ operationId: deleteProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The Product Hashed ID"
required: true
schema:
type: string
@@ -13599,9 +14260,9 @@ paths:
X-RateLimit-Limit:
$ref: "#/components/headers/X-RateLimit-Limit"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13609,21 +14270,33 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
- "/api/v1/payments/{id}/edit":
+ $ref: '#/components/responses/default'
+ "/api/v1/products/{id}/edit":
get:
tags:
- - payments
- summary: "Edit payment"
- description: "Displays an Payment by id"
- operationId: editPayment
+ - products
+ summary: "Edit product"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X GET 'https://invoicing.co/api/v1/products/{id}/edit' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: php
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $product = $ninja->products->get("{id}");
+ description: "Displays an Product by id"
+ operationId: editProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The Product Hashed ID"
required: true
schema:
type: string
@@ -13631,7 +14304,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the Product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13642,11 +14315,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13654,21 +14327,21 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
- /api/v1/payments/create:
+ $ref: '#/components/responses/default'
+ "/api/v1/products/create":
get:
tags:
- - payments
- summary: "Blank payment"
- description: "Returns a blank object with default values"
- operationId: getPaymentsCreate
+ - products
+ summary: "Blank product"
+ description: "Returns a blank product object with default values"
+ operationId: getProductsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank Payment object"
+ description: "A blank Product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13679,11 +14352,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13691,76 +14364,43 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
- /api/v1/payments/refund:
+ $ref: '#/components/responses/default'
+
+ /api/v1/products/bulk:
post:
tags:
- - payments
- summary: "Refund payment"
- description: "Adds an Refund to the system"
- operationId: storeRefund
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- requestBody:
- description: "The refund request"
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
- responses:
- 200:
- description: "Returns the saved Payment object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/payments/bulk:
- post:
- tags:
- - payments
- summary: "Bulk payment actions"
- description: ""
- operationId: bulkPayments
+ - products
+ summary: "Bulk product actions"
+ x-code-samples:
+ - lang: curl
+ label: Curl
+ source: |
+ curl -X GET 'https://invoicing.co/api/v1/products/bulk' \
+ -H "Content-Type:application/json" \
+ -d '{"action":"archive","ids":["id","id2"]}' \
+ -H "X-API-TOKEN:company-token-test" \
+ -H "X-Requested-With: XMLHttpRequest";
+ - lang: php
+ label: PHP
+ source: |
+ $ninja = new InvoiceNinja("your_token");
+ $product = $ninja->products->bulk("action", ["id","id2"]);
+ description: "Archive / Restore / Delete / Set tax id in bulk"
+ operationId: bulkProducts
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: "User credentials"
+ description: 'Bulk action array'
required: true
content:
application/json:
schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
+ $ref: '#/components/schemas/ProductBulkAction'
responses:
200:
- description: "The Payment response"
+ description: "The Product response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13771,11 +14411,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13783,83 +14423,28 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
- "/api/v1/payments/{id}/{action}":
- get:
- deprecated: true
- tags:
- - payments
- summary: "Custom payment actions"
- description: "Performs a custom action on an Payment.\n\n The current range of actions are as follows\n - clone_to_Payment\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
- operationId: actionPayment
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Payment Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- - name: action
- in: path
- description: "The action string to be performed"
- required: true
- schema:
- type: string
- format: string
- example: clone_to_quote
- responses:
- 200:
- description: "Returns the Payment object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
-
- "/api/v1/payments/{id}/upload":
+ $ref: '#/components/responses/default'
+
+ "/api/v1/products/{id}/upload":
post:
tags:
- - payments
- summary: "Upload a payment document"
- description: "Handles the uploading of a document to a payment"
- operationId: uploadPayment
+ - products
+ summary: "Add product document"
+ description: "Handles the uploading of a document to a product"
+ operationId: uploadProduct
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/client_include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The Product Hashed ID"
required: true
schema:
type: string
format: string
example: D2J234DFA
requestBody:
- description: "File Upload Body"
required: true
content:
multipart/form-data:
@@ -13868,16 +14453,14 @@ paths:
properties:
_method:
type: string
- example: PUT
+ example: POST
documents:
type: array
items:
- description: "Array of binary documents for upload"
- type: string
format: binary
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the Product object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13888,11 +14471,11 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/Product"
401:
- $ref: "#/components/responses/401"
+ $ref: '#/components/responses/401'
403:
- $ref: "#/components/responses/403"
+ $ref: '#/components/responses/403'
422:
$ref: '#/components/responses/422'
429:
@@ -13900,569 +14483,8 @@ paths:
5XX:
description: 'Server error'
default:
- $ref: "#/components/responses/default"
- /api/v1/recurring_invoices:
- get:
- tags:
- - Recurring Invoices
- summary: "List recurring invoices"
- description: |
- Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
+ $ref: '#/components/responses/default'
- operationId: getRecurringInvoices
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/client_id"
- - $ref: "#/components/parameters/created_at"
- - $ref: "#/components/parameters/updated_at"
- - $ref: "#/components/parameters/is_deleted"
- - $ref: "#/components/parameters/filter_deleted_clients"
- - $ref: "#/components/parameters/vendor_id"
- - name: filter
- in: query
- description: |
- Searches across a range of columns including:
- - custom_value1
- - custom_value2
- - custom_value3
- - custom_value4
- required: false
- schema:
- type: string
- example: ?filter=bob
- - name: client_status
- in: query
- description: |
- A comma separated list of invoice status strings. Valid options include:
- - all
- - active
- - paused
- - completed
- required: false
- schema:
- type: string
- example: ?client_status=active,paused
- - name: sort
- in: query
- description: Returns the list sorted by column in ascending or descending order.
- required: false
- schema:
- type: string
- example: id|desc number|desc balance|asc
- responses:
- 200:
- description: "A list of recurring_invoices"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- type: object
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/RecurringInvoice'
- meta:
- type: object
- $ref: '#/components/schemas/Meta'
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- post:
- tags:
- - Recurring Invoices
- summary: "Create recurring invoice"
- description: "Adds a Recurring Invoice to the system"
- operationId: storeRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
-
- "/api/v1/recurring_invoices/{id}":
- get:
- tags:
- - Recurring Invoices
- summary: "Show recurring invoice"
- description: "Displays an RecurringInvoice by id"
- operationId: showRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- put:
- tags:
- - Recurring Invoices
- summary: "Update recurring invoice"
- description: "Handles the updating of an RecurringInvoice by id"
- operationId: updateRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- delete:
- tags:
- - Recurring Invoices
- summary: "Delete recurring invoice"
- description: "Handles the deletion of an RecurringInvoice by id"
- operationId: deleteRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns a HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/edit":
- get:
- tags:
- - Recurring Invoices
- summary: "Edit recurring invoice"
- description: "Displays an RecurringInvoice by id"
- operationId: editRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
-
- /api/v1/recurring_invoices/create:
- get:
- tags:
- - Recurring Invoices
- summary: "Blank recurring invoice"
- description: "Returns a blank object with default values"
- operationId: getRecurringInvoicesCreate
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A blank RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/recurring_invoices/bulk:
- post:
- tags:
- - Recurring Invoices
- summary: "Bulk recurring invoice actions"
- description: |
- There are multiple actions that are available including:
-
- operationId: bulkRecurringInvoices
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/index"
- requestBody:
- description: "Bulk action details"
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- action:
- type: string
- description: |
- The action to be performed, options include:
- - `start`
- Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
- If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
- - `stop`
- Stops the recurring invoice.
- - `send_now`
- Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
- - `restore`
- Restores the recurring invoice from an archived or deleted state.
- - `archive`
- Archives the recurring invoice. The recurring invoice will not fire in this state.
- - `delete`
- Deletes a recurring invoice.
- ids:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
- type: string
- example:
- action: start
- ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
- responses:
- 200:
- description: "The RecurringInvoice response"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/{action}":
- get:
- deprecated: true
- tags:
- - Recurring Invoices
- summary: "Custom recurring invoice action"
- description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
- operationId: actionRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- - name: action
- in: path
- description: "The action string to be performed"
- required: true
- schema:
- type: string
- format: string
- example: clone_to_quote
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoice/{invitation_key}/download":
- get:
- tags:
- - Recurring Invoices
- summary: "Download recurring invoice PDF"
- description: "Downloads a specific invoice"
- operationId: downloadRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Recurring Invoice Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the recurring invoice pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/upload":
- post:
- tags:
- - Recurring Invoices
- summary: "Add recurring invoice document"
- description: "Handles the uploading of a document to a recurring_invoice"
- operationId: uploadRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- requestBody:
- description: "File Upload Body"
- required: true
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- _method:
- type: string
- example: PUT
- documents:
- type: array
- items:
- description: "Array of binary documents for upload"
- type: string
- format: binary
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
components:
headers:
X-MINIMUM-CLIENT-VERSION:
@@ -14557,43 +14579,43 @@ components:
# - prev: null
# - next: null
responses:
- 401:
- description: 'Authentication error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AuthenticationError'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
-
- 400:
- description: 'Invalid user input'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InvalidInputError'
- 403:
- description: 'Authorization error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AuthorizationError'
- 429:
- description: 'Rate Limit Exceeded'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/RateLimiterError'
default:
description: 'Unexpected Error'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
+ 429:
+ description: 'Rate Limit Exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RateLimiterError'
+ 400:
+ description: 'Invalid user input'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InvalidInputError'
+
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
parameters:
X-API-SECRET:
name: X-API-SECRET
@@ -15177,322 +15199,42 @@ components:
type: string
example: JSON
type: object
- User:
+ Meta:
properties:
- id:
- description: 'The hashed id of the user'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the user'
- type: string
- example: Brad
- last_name:
- description: 'The last name of the user'
- type: string
- example: Pitt
- email:
- description: 'The users email address'
- type: string
- example: brad@pitt.com
- phone:
- description: 'The users phone number'
- type: string
- example: 555-1233-23232
- signature:
- description: 'The users sign off signature'
- type: string
- example: 'Have a nice day!'
- avatar:
- description: 'The users avatar'
- type: string
- example: 'https://url.to.your/avatar.png'
- accepted_terms_version:
- description: 'The version of the invoice ninja terms that has been accepted by the user'
- type: string
- example: 1.0.1
- readOnly: true
- oauth_user_id:
- description: 'The provider id of the oauth entity'
- type: string
- example: jkhasdf789as6f675sdf768sdfs
- readOnly: true
- oauth_provider_id:
- description: 'The oauth entity id'
- type: string
- example: google
- readOnly: true
- language_id:
- description: 'The language id of the user'
- type: string
- example: 1
- verified_phone_number:
- description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
- type: boolean
- example: true
- readOnly: true
- sms_verification_code:
- description: 'The sms verification code for the user. Required to settings up 2FA'
- type: string
- example: '123456'
- readOnly: true
- oauth_user_token_expiry:
- description: 'The expiry date of the oauth token'
- type: string
- example: '2022-10-10'
- readOnly: true
- has_password:
- description: 'Boolean flag determining if the user has a password'
- type: boolean
- example: true
- readOnly: true
- last_confirmed_email_address:
- description: 'The last confirmed email address of the user'
- type: string
- example: 'bob@gmail.com'
- readOnly: true
- custom_value1:
- description: 'A custom value'
- type: string
- example: 'Custom value 1'
- custom_value2:
- description: 'A custom value'
- type: string
- example: '$1000'
- custom_value3:
- description: 'A custom value'
- type: string
- example: 'Custom value 3'
- custom_value4:
- description: 'A custom value'
- type: string
- example: 'Custom value 4'
- is_deleted:
- description: 'Boolean flag determining if the user has been deleted'
- type: boolean
- example: true
- readOnly: true
- google_2fa_secret:
- description: 'The google 2fa secret for the user'
- type: string
- example: '123456'
- readOnly: true
- company_user:
- $ref: '#/components/schemas/CompanyUserRef'
+ pagination:
+ $ref: '#/components/schemas/Pagination'
+ Pagination:
type: object
- UserRef:
properties:
- id:
- description: 'The hashed id of the user'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the user'
- type: string
- example: Brad
- last_name:
- description: 'The last name of the user'
- type: string
- example: Pitt
- email:
- description: 'The users email address'
- type: string
- example: brad@pitt.com
- phone:
- description: 'The users phone number'
- type: string
- example: 555-1233-23232
- signature:
- description: 'The users sign off signature'
- type: string
- example: 'Have a nice day!'
- avatar:
- description: 'The users avatar'
- type: string
- example: 'https://url.to.your/avatar.png'
- accepted_terms_version:
- description: 'The version of the invoice ninja terms that has been accepted by the user'
- type: string
- example: 1.0.1
- readOnly: true
- oauth_user_id:
- description: 'The provider id of the oauth entity'
- type: string
- example: jkhasdf789as6f675sdf768sdfs
- readOnly: true
- oauth_provider_id:
- description: 'The oauth entity id'
- type: string
- example: google
- readOnly: true
- language_id:
- description: 'The language id of the user'
- type: string
- example: 1
- verified_phone_number:
- description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
- type: boolean
- example: true
- readOnly: true
- sms_verification_code:
- description: 'The sms verification code for the user. Required to settings up 2FA'
- type: string
- example: '123456'
- readOnly: true
- oauth_user_token_expiry:
- description: 'The expiry date of the oauth token'
- type: string
- example: '2022-10-10'
- readOnly: true
- has_password:
- description: 'Boolean flag determining if the user has a password'
- type: boolean
- example: true
- readOnly: true
- last_confirmed_email_address:
- description: 'The last confirmed email address of the user'
- type: string
- example: 'bob@gmail.com'
- readOnly: true
- custom_value1:
- description: 'A custom value'
- type: string
- example: 'Custom value 1'
- custom_value2:
- description: 'A custom value'
- type: string
- example: '$1000'
- custom_value3:
- description: 'A custom value'
- type: string
- example: 'Custom value 3'
- custom_value4:
- description: 'A custom value'
- type: string
- example: 'Custom value 4'
- is_deleted:
- description: 'Boolean flag determining if the user has been deleted'
- type: boolean
- example: true
- readOnly: true
- google_2fa_secret:
- description: 'The google 2fa secret for the user'
- type: string
- example: '123456'
- readOnly: true
- type: object
- Task:
- properties:
- id:
- description: 'The hashed id of the task'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The hashed id of the user who created the task'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user of the task'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed if of the client'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The hashed id of the invoice associated with the task'
- type: string
- example: Opnel5aKBz
- project_id:
- description: 'The hashed id of the project associated with the task'
- type: string
- example: Opnel5aKBz
- number:
- description: 'The number of the task'
- type: string
- example: TASK-123
- time_log:
- description: 'An array of unix time stamps defining the start and end times of the task'
- type: string
- example: '[[1,2],[3,4]]'
- is_running:
- description: 'Determines if the task is still running'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag determining if the task has been deleted'
- type: boolean
- example: true
- task_status_id:
- description: 'The hashed id of the task status'
- type: string
- example: Opnel5aKBz
- description:
- description: 'The task description'
- type: string
- example: 'A wonder task to work on'
- duration:
- description: 'The task duration in seconds'
+ total:
type: integer
- example: '3600'
- task_status_order:
- description: 'The order of the task'
+ description: 'The total number of items'
+ example: 1
+ readOnly: true
+ count:
type: integer
- example: '4'
- rate:
- description: 'The task rate'
- type: number
- example: 10.00
- custom_value1:
- description: 'A custom value'
- type: string
- example: '2022-10-10'
- custom_value2:
- description: 'A custom value'
- type: string
- example: $1100
- custom_value3:
- description: 'A custom value'
- type: string
- example: 'I need help'
- custom_value4:
- description: 'A custom value'
- type: string
- example: INV-3343
- is_date_based:
- description: 'Boolean flag determining if the task is date based'
- type: boolean
- example: true
- calculated_start_date:
- description: 'The calculated start date of the task'
- type: string
- example: '2022-10-10'
+ description: 'The number of items per page'
+ example: 1
readOnly: true
- invoice_documents:
- description: "Boolean flags which determines whether to include the task documents on the invoice"
- type: boolean
- example: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
+ per_page:
+ type: integer
+ description: 'The number of items per page'
+ example: 1
readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
+ current_page:
+ type: integer
+ description: 'The current page number'
+ example: 1
readOnly: true
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
+ total_pages:
+ type: integer
+ description: 'The total number of pages'
+ example: 1
+ readOnly: true
+ links:
+ type: object
+ description: 'The pagination links'
readOnly: true
- type: object
Document:
properties:
id:
@@ -15563,674 +15305,16 @@ components:
format: integer
example: '134341234234'
type: object
- ClientGatewayToken:
+ Error:
properties:
- id:
- description: 'The hashed id of the client gateway token'
+ message:
+ description: 'Something terrible went wrong'
type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed_id of the client'
- type: string
- example: '2'
- token:
- description: 'The payment token'
- type: string
- example: '2'
- routing_number:
- description: 'THe bank account routing number'
- type: string
- example: '2'
- company_gateway_id:
- description: 'The hashed id of the company gateway'
- type: string
- example: '2'
- is_default:
- description: 'Flag determining if the token is the default payment method'
- type: boolean
- example: 'true'
- type: object
- Invoice:
- properties:
- id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- number:
- description: 'The invoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- invitations:
- type: array
- description: 'An array of objects which define the invitations of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceInvitation'
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- project_id:
- description: 'The project associated with this invoice'
- type: string
- example: Opnel5aKBz
- auto_bill_tries:
- description: 'The number of times the invoice has attempted to be auto billed'
+ example: 'Unexpected error'
+ code:
+ description: 'The HTTP error code, ie 5xx 4xx'
type: integer
- example: '1'
- readOnly: true
- auto_bill_enabled:
- description: 'Boolean flag determining if the invoice is set to auto bill'
- type: boolean
- example: true
- subscription_id:
- description: 'The subscription associated with this invoice'
- type: string
- example: Opnel5aKBz
-
- type: object
- FillableInvoice:
- properties:
- assigned_user_id:
- description: "The assigned user's hashed ID"
- type: string
- example: 'a1b2c3d4'
- client_id:
- description: "The client's hashed ID"
- type: string
- example: 'x1y2z3a4'
- number:
- description: "The unique alphanumeric invoice number for each invoice per company"
- type: string
- example: INV_101
- po_number:
- description: "The purchase order number associated with the invoice"
- type: string
- example: 'PO12345'
- terms:
- description: "The terms and conditions for the invoice"
- type: string
- example: 'Net 30'
- public_notes:
- description: "Public notes visible to the client on the invoice"
- type: string
- example: 'Thank you for your business.'
- private_notes:
- description: "Private notes for internal use only"
- type: string
- example: 'Client is a slow payer.'
- footer:
- description: "The footer text displayed on the invoice"
- type: string
- example: 'Authorized Signature'
- custom_value1:
- description: "First custom value for additional information"
- type: string
- example: 'Project ABC'
- custom_value2:
- description: "Second custom value for additional information"
- type: string
- example: 'Department XYZ'
- custom_value3:
- description: "Third custom value for additional information"
- type: string
- example: 'Location 123'
- custom_value4:
- description: "Fourth custom value for additional information"
- type: string
- example: 'Currency USD'
- tax_name1:
- description: "Name of the first tax applied to the invoice"
- type: string
- example: 'VAT'
- tax_name2:
- description: "Name of the second tax applied to the invoice"
- type: string
- example: 'GST'
- tax_rate1:
- description: "Rate of the first tax applied to the invoice"
- type: number
- example: 10.00
- tax_rate2:
- description: "Rate of the second tax applied to the invoice"
- type: number
- example: 5.00
- tax_name3:
- description: "Name of the third tax applied to the invoice"
- type: string
- example: 'PST'
- tax_rate3:
- description: "Rate of the third tax applied to the invoice"
- type: number
- example: 8.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- discount:
- description: "The discount applied to the invoice"
- type: number
- example: 10.00
- partial:
- description: "The partial amount applied to the invoice"
- type: number
- example: 20.00
- is_amount_discount:
- description: "Indicates whether the discount applied is a fixed amount or a percentage"
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: "Indicates whether the tax rates applied to the invoice are inclusive or exclusive"
- type: boolean
- example: true
- date:
- description: "The date the invoice was issued"
- type: string
- example: '1994-07-30'
- partial_due_date:
- description: "The due date for the partial payment"
- type: string
- example: '1994-08-15'
- due_date:
- description: "The due date for the invoice"
- type: string
- example: '1994-08-30'
- custom_surcharge1:
- description: "First custom surcharge applied to the invoice"
- type: number
- example: 10.00
- custom_surcharge2:
- description: "Second custom surcharge applied to the invoice"
- type: number
- example: 15.00
- custom_surcharge3:
- description: "Third custom surcharge applied to the invoice"
- type: number
- example: 5.00
- custom_surcharge4:
- description: "Fourth custom surcharge applied to the invoice"
- type: number
- example: 20.00
- type: object
- CompanyGateway:
- properties:
- id:
- description: 'The hashed id of the company gateway'
- type: string
- example: Opnel5aKBz
- gateway_key:
- description: 'The gateway key (hash)'
- type: string
- example: '2'
- accepted_credit_cards:
- description: 'Bitmask representation of cards'
- type: integer
- example: '32'
- require_billing_address:
- description: 'Determines if the the billing address is required prior to payment.'
- type: boolean
- example: true
- require_shipping_address:
- description: 'Determines if the the billing address is required prior to payment.'
- type: boolean
- example: true
- config:
- description: 'The configuration map for the gateway'
- type: string
- example: dfadsfdsafsafd
- update_details:
- description: 'Determines if the client details should be updated.'
- type: boolean
- example: true
- fees_and_limits:
- description: 'A mapped collection of the fees and limits for the configured gateway'
- type: array
- items:
- $ref: '#/components/schemas/FeesAndLimits'
- type: object
-
-
- InvoiceInvitation:
- properties:
- id:
- description: 'The entity invitation hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- client_contact_id:
- description: 'The client contact hashed id'
- type: string
- example: Opnel5aKBz
- key:
- description: 'The invitation key'
- type: string
- example: Opnel5aKBz4343343566236gvbb
- readOnly: true
- link:
- description: 'The invitation link'
- type: string
- example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
- readOnly: true
- sent_date:
- description: 'The invitation sent date'
- type: string
- format: date-time
- readOnly: true
- viewed_date:
- description: 'The invitation viewed date'
- type: string
- format: date-time
- readOnly: true
- opened_date:
- description: 'The invitation opened date'
- type: string
- format: date-time
- readOnly: true
- updated_at:
- description: 'Timestamp'
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- archived_at:
- description: 'Timestamp'
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- email_error:
- description: 'The email error'
- type: string
- example: 'The email error'
- readOnly: true
- email_status:
- description: 'The email status'
- type: string
- readOnly: true
-
- Account:
- properties:
- id:
- description: 'The account hashed id'
- type: string
- example: AS3df3A
- account_sms_verified:
- description: 'Boolean flag if the account has been verified by sms'
- type: string
- example: true
- type: object
- ExpenseCategory:
- properties:
- id:
- description: 'The expense hashed id'
- type: string
- example: Opnel5aKBz
- name:
- description: 'The expense category name'
- type: string
- example: Accounting
- user_id:
- description: 'The user hashed id'
- type: string
- example: XS987sD
- is_deleted:
- description: 'Flag determining whether the expense category has been deleted'
- type: boolean
- example: true
- updated_at:
- description: 'The updated at timestamp'
- type: integer
- example: '2'
- created_at:
- description: 'The created at timestamp'
- type: integer
- example: '2'
- type: object
- Subscription:
- properties:
- id:
- description: Unique identifier for the subscription
- type: string
- example: Opnel5aKBz
- user_id:
- description: Unique identifier for the user associated with the subscription
- type: string
- example: Ua6Rw4pVbS
- product_id:
- description: Unique identifier for the product associated with the subscription
- type: string
- example: Pr5Ft7yBmC
- recurring_invoice_id:
- description: Unique identifier for the recurring invoice associated with the subscription
- type: string
- example: Ri2Yt8zJkP
- is_recurring:
- description: Indicates whether the subscription is recurring
- type: boolean
- example: 'true'
- frequency_id:
- description: 'integer const representation of the frequency'
- type: string
- example: '1'
- auto_bill:
- description: 'enum setting'
- type: string
- example: always
- promo_code:
- description: Promotional code applied to the subscription
- type: string
- example: PROMOCODE4U
- promo_discount:
- description: Discount percentage or amount applied to the subscription
- type: number
- example: 10
- is_amount_discount:
- description: Indicates whether the discount is a fixed amount
- type: boolean
- example: 'true'
- allow_cancellation:
- description: Indicates whether the subscription can be cancelled
- type: boolean
- example: 'true'
- per_seat_enabled:
- description: Indicates whether the subscription pricing is per seat
- type: boolean
- example: 'true'
- currency_id:
- description: Unique identifier for the currency used in the subscription
- type: integer
- example: '1'
- max_seats_limit:
- description: Maximum number of seats allowed for the subscription
- type: integer
- example: '100'
- trial_enabled:
- description: Indicates whether the subscription has a trial period
- type: boolean
- example: 'true'
- trial_duration:
- description: Duration of the trial period in days
- type: integer
- example: '14'
- allow_query_overrides:
- description: Indicates whether query overrides are allowed for the subscription
- type: boolean
- example: 'true'
- allow_plan_changes:
- description: Indicates whether plan changes are allowed for the subscription
- type: boolean
- example: 'true'
- refund_period:
- description: Number of days within which refunds can be requested
- type: integer
- example: '30'
- webhook_configuration:
- description: Webhook configuration for the subscription
- type: string
- example: 'expand reference for this'
- is_deleted:
- description: Indicates whether the subscription has been deleted
- type: boolean
- example: 'false'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- type: object
- BulkAction:
- type: array
- items:
- type: integer
- example: '[0,1,2,3,]'
- SystemLog:
- properties:
- id:
- description: 'The account hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user_id hashed id'
- type: string
- example: AS3df3A
- client_id:
- description: 'The client_id hashed id'
- type: string
- example: AS3df3A
- event_id:
- description: 'The Log Type ID'
- type: integer
- example: 1
- category_id:
- description: 'The Category Type ID'
- type: integer
- example: 1
- type_id:
- description: 'The Type Type ID'
- type: integer
- example: 1
- log:
- description: 'The json object of the error'
- type: object
- example: '{''key'':''value''}'
- updated_at:
- description: Timestamp
- type: string
- example: '2'
- created_at:
- description: Timestamp
- type: string
- example: '2'
+ example: '500'
type: object
InvoiceItem:
type: object
@@ -16348,6 +15432,954 @@ components:
example: '1'
default: '1'
description: 'The tax ID of the product: 1 product, 2 service, 3 digital, 4 shipping, 5 exempt, 5 reduced tax, 7 override, 8 zero rate, 9 reverse tax'
+ ExpenseCategory:
+ properties:
+ id:
+ description: 'The expense hashed id'
+ type: string
+ example: Opnel5aKBz
+ name:
+ description: 'The expense category name'
+ type: string
+ example: Accounting
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: XS987sD
+ is_deleted:
+ description: 'Flag determining whether the expense category has been deleted'
+ type: boolean
+ example: true
+ updated_at:
+ description: 'The updated at timestamp'
+ type: integer
+ example: '2'
+ created_at:
+ description: 'The created at timestamp'
+ type: integer
+ example: '2'
+ type: object
+ Client:
+ properties:
+ id:
+ description: 'The unique identifier of the client'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ contacts:
+ type: array
+ items:
+ $ref: '#/components/schemas/ClientContact'
+ user_id:
+ description: 'The unique identifier of the user who created the client'
+ type: string
+ example: Ua6Rw4pVbS
+ readOnly: true
+ assigned_user_id:
+ description: 'The unique identifier of the user who has been assigned the client'
+ type: string
+ example: Ua6Rw4pVbS
+ name:
+ description: 'The name of the client company or organization'
+ type: string
+ example: "Jim's Housekeeping"
+ website:
+ description: 'The website URL of the client company or organization'
+ type: string
+ example: 'https://www.jims-housekeeping.com'
+ private_notes:
+ description: 'Notes that are only visible to the user who created the client'
+ type: string
+ example: 'Client prefers email communication over phone calls'
+ client_hash:
+ description: 'A unique hash value for the client'
+ type: string
+ example: asdfkjhk342hjhbfdvmnfb1
+ readOnly: true
+ industry_id:
+ description: 'The unique identifier of the industry the client operates in'
+ type: number
+ example: '5'
+ size_id:
+ description: 'The unique identifier for the size category of the client company or organization'
+ type: number
+ example: '2'
+ address1:
+ description: "First line of the client's address"
+ type: string
+ example: '123 Main St'
+ address2:
+ description: "Second line of the client's address, if needed"
+ type: string
+ example: 'Apt 4B'
+ city:
+ description: 'The city the client is located in'
+ type: string
+ example: 'Beverly Hills'
+ state:
+ description: 'The state, province, or locality the client is located in'
+ type: string
+ example: 'California'
+ postal_code:
+ description: 'The postal code or ZIP code of the client'
+ type: string
+ example: '90210'
+ phone:
+ description: "The client's phone number"
+ type: string
+ example: '555-3434-3434'
+ country_id:
+ description: "The unique identifier of the client's country"
+ type: number
+ format: integer
+ example: '1'
+ custom_value1:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Preferred contact: Email'
+ custom_value2:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Account manager: John Doe'
+ custom_value3:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'VIP client: Yes'
+ custom_value4:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Annual contract value: $50,000'
+ vat_number:
+ description: "The client's VAT (Value Added Tax) number, if applicable"
+ type: string
+ example: 'VAT123456'
+ id_number:
+ description: 'A unique identification number for the client, such as a tax ID or business registration number'
+ type: string
+ number:
+ description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
+ type: string
+ example: 'CL-0001'
+ shipping_address1:
+ description: "First line of the client's shipping address"
+ type: string
+ example: '5 Wallaby Way'
+ shipping_address2:
+ description: "Second line of the client's shipping address, if needed"
+ type: string
+ example: 'Suite 5'
+ shipping_city:
+ description: "The city of the client's shipping address"
+ type: string
+ example: 'Perth'
+ shipping_state:
+ description: "The state, province, or locality of the client's shipping address"
+ type: string
+ example: 'Western Australia'
+ shipping_postal_code:
+ description: "The postal code or ZIP code of the client's shipping address"
+ type: string
+ example: '6110'
+ shipping_country_id:
+ description: "The unique identifier of the country for the client's shipping address"
+ type: number
+ format: integer
+ example: '4'
+ is_deleted:
+ description: 'A boolean value indicating whether the client has been deleted or not'
+ type: boolean
+ example: false
+ readOnly: true
+ balance:
+ description: 'The outstanding balance the client owes'
+ type: number
+ format: float
+ example: '500.00'
+ readOnly: true
+ paid_to_date:
+ description: 'The total amount the client has paid to date'
+ type: number
+ format: float
+ example: '2000.00'
+ readOnly: true
+ credit_balance:
+ description: 'The available credit balance for the client to use on future purchases'
+ type: number
+ format: float
+ example: '100.00'
+ readOnly: true
+ last_login:
+ description: "The timestamp of the client's last login"
+ type: number
+ format: integer
+ example: '1628686031'
+ readOnly: true
+ created_at:
+ description: 'The timestamp when the client was created'
+ type: number
+ format: integer
+ example: '1617629031'
+ readOnly: true
+ updated_at:
+ description: 'The timestamp when the client was last updated'
+ type: number
+ format: integer
+ example: '1628445631'
+ readOnly: true
+ group_settings_id:
+ description: 'The group settings assigned to the client'
+ type: string
+ example: Opnel5aKBz
+ routing_id:
+ description: 'The routing address id for e-invoicing for this client'
+ type: string
+ example: Opnel5aKBz3489-dfkiu-2239-sdsd
+ is_tax_exempt:
+ description: 'Flag which defines if the client is exempt from taxes'
+ type: boolean
+ example: false
+ has_valid_vat_number:
+ description: 'Flag which defines if the client has a valid VAT number'
+ type: boolean
+ example: false
+ readOnly: true
+ payment_balance:
+ description: 'Defines the payment balance the client has on file (pre payments / over payments / unapplied amounts)'
+ type: number
+ example: 100
+ readOnly: true
+ settings:
+ $ref: '#/components/schemas/ClientSettings'
+ type: object
+ Quote:
+ properties:
+ id:
+ description: 'The unique hashed identifier for the quote'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The unique hashed identifier for the user who created the quote'
+ type: string
+ example: ''
+ assigned_user_id:
+ description: 'The unique hashed identifier for the user assigned to the quote'
+ type: string
+ example: ''
+ client_id:
+ description: 'The unique hashed identifier for the client associated with the quote'
+ type: string
+ example: ''
+ status_id:
+ description: 'The status of the quote represented by a unique identifier'
+ type: string
+ example: ''
+ number:
+ description: 'The unique alpha-numeric quote number for the quote per company'
+ type: string
+ example: QUOTE_101
+ po_number:
+ description: 'The purchase order number associated with the quote'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The terms and conditions for the quote'
+ type: string
+ example: 'These are some quote terms. Valid for 14 days.'
+ public_notes:
+ description: 'Publicly visible notes associated with the quote'
+ type: string
+ example: 'These are public notes which the client may see'
+ private_notes:
+ description: 'Privately visible notes associated with the quote, not disclosed to the client'
+ type: string
+ example: 'These are private notes, not to be disclosed to the client'
+ footer:
+ description: 'The footer text of the quote'
+ type: string
+ example: 'The text goes in the footer of the quote'
+ custom_value1:
+ description: 'First custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value2:
+ description: 'Second custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value3:
+ description: 'Third custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value4:
+ description: 'Fourth custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ tax_name1:
+ description: 'The name of the first tax applied to the quote'
+ type: string
+ example: GST
+ tax_name2:
+ description: 'The name of the second tax applied to the quote'
+ type: string
+ example: VAT
+ tax_rate1:
+ description: 'The rate of the first tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ tax_rate2:
+ description: 'The rate of the second tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ tax_name3:
+ description: 'The name of the third tax applied to the quote'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The rate of the third tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ total_taxes:
+ description: 'The total amount of taxes for the quote'
+ type: number
+ format: float
+ example: 10.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the quote'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ amount:
+ description: 'The total amount of the quote before taxes and discounts'
+ type: number
+ format: float
+ example: 10.00
+ balance:
+ description: 'The balance due for the quote after accounting for payments'
+ type: number
+ format: float
+ example: 10.00
+ paid_to_date:
+ description: 'The total amount paid on the quote so far'
+ type: number
+ format: float
+ example: 10.00
+ discount:
+ description: 'The discount amount or percentage applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ partial:
+ description: 'The partial or deposit amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ is_amount_discount:
+ description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag indicating if the quote has been deleted'
+ type: boolean
+ example: false
+ uses_inclusive_taxes:
+ description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The date the quote was created'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the quote was sent to the client'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The next scheduled date for sending a reminder for the quote'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the partial or deposit amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date for the total amount of the quote'
+ type: string
+ format: date
+ example: '1994-07-30'
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ last_viewed:
+ description: 'The timestamp of the last time the quote was viewed'
+ type: number
+ format: integer
+ example: 1434342123
+ updated_at:
+ description: 'The timestamp of the last update to the quote'
+ type: number
+ format: integer
+ example: 1434342123
+ archived_at:
+ description: 'The timestamp of when the quote was archived'
+ type: number
+ format: integer
+ example: 1434342123
+ custom_surcharge1:
+ description: 'First custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge2:
+ description: 'Second custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge3:
+ description: 'Third custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge4:
+ description: 'Fourth custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge_tax1:
+ description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
+ type: boolean
+ example: true
+ type: object
+ InvoiceRequest:
+ required:
+ - client_id
+ properties:
+ id:
+ description: 'The invoice hashed id'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ status_id:
+ description: 'The invoice status variable'
+ type: string
+ example: '4'
+ readOnly: true
+ number:
+ description: 'The invoice number - is a unique alpha numeric number per invoice per company'
+ type: string
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this invoice'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The invoice terms'
+ type: string
+ example: 'These are invoice terms'
+ public_notes:
+ description: 'The public notes of the invoice'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the invoice'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The invoice footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the invoice'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ invitations:
+ type: array
+ description: 'An array of objects which define the invitations of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceInvitationRequest'
+ amount:
+ description: 'The invoice amount'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ balance:
+ description: 'The invoice balance'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ paid_to_date:
+ description: 'The amount paid on the invoice to date'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ discount:
+ description: 'The invoice discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the invoice has been deleted'
+ type: boolean
+ example: true
+ readOnly: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The Invoice Date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the invoice was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ readOnly: true
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ readOnly: true
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ project_id:
+ description: 'The project associated with this invoice'
+ type: string
+ example: Opnel5aKBz
+ type: object
+ ProductRequest:
+ type: object
+ properties:
+ id:
+ type: string
+ description: 'The hashed product ID.'
+ example: eP01N
+ readOnly: true
+ assigned_user_id:
+ type: string
+ description: 'The hashed ID of the user assigned to this product.'
+ example: pR0j3
+
+ project_id:
+ type: string
+ description: 'The hashed ID of the project that this product is associated with.'
+ example: pR0j3
+
+ vendor_id:
+ type: string
+ description: 'The hashed ID of the vendor that this product is associated with.'
+ example: pR0j3
+
+ custom_value1:
+ type: string
+ description: 'Custom value field 1.'
+ example: 'Custom value 1'
+
+ custom_value2:
+ type: string
+ description: 'Custom value field 2.'
+ example: 'Custom value 2'
+
+ custom_value3:
+ type: string
+ description: 'Custom value field 3.'
+ example: 'Custom value 3'
+
+ custom_value4:
+ type: string
+ description: 'Custom value field 4.'
+ example: 'Custom value 4'
+
+ product_key:
+ type: string
+ description: 'The product key.'
+ example: '1234'
+
+ notes:
+ type: string
+ description: 'Notes about the product.'
+ example: 'These are some notes about the product.'
+
+ cost:
+ type: number
+ format: double
+ description: 'The cost of the product.'
+ example: 10.0
+
+ price:
+ type: number
+ format: double
+ description: 'The price of the product.'
+ example: 20.0
+
+ quantity:
+ type: number
+ format: double
+ description: 'The quantity of the product.'
+ example: 5.0
+
+ default: 1
+ tax_name1:
+ type: string
+ description: 'The name of tax 1.'
+ example: 'Tax 1'
+
+ tax_rate1:
+ type: number
+ format: double
+ description: 'The rate of tax 1.'
+ example: 10.0
+
+ tax_name2:
+ type: string
+ description: 'The name of tax 2.'
+ example: 'Tax 2'
+
+ tax_rate2:
+ type: number
+ format: double
+ description: 'The rate of tax 2.'
+ example: 5.0
+
+ tax_name3:
+ type: string
+ description: 'The name of tax 3.'
+ example: 'Tax 3'
+
+ tax_rate3:
+ type: number
+ format: double
+ description: 'The rate of tax 3.'
+ example: 0.0
+
+ in_stock_quantity:
+ type: integer
+ format: int32
+ description: |
+ The quantity of the product that is currently in stock.
+
+ **note** this field is not mutable without passing an extra query parameter which will allow modification of this value.
+
+ The query parameter ?update_in_stock_quantity=true **MUST** be passed if you wish to update this value manually.
+
+ default: 0
+
+ stock_notification:
+ type: boolean
+ description: Indicates whether stock notifications are enabled for this product
+ default: true
+
+ stock_notification_threshold:
+ type: integer
+ format: int32
+ description: The minimum quantity threshold for which stock notifications will be triggered
+ default: 0
+
+ max_quantity:
+ type: integer
+ format: int32
+ description: The maximum quantity that can be ordered for this product
+
+ product_image:
+ type: string
+ description: The URL of the product image
+ format: uri-reference
+
+ tax_id:
+ type: string
+ default: '1'
+
+ description: |
+ The tax category id for this product.'
+
+ The following constants are available (default = '1')
+
+ ```
+ PRODUCT_TYPE_PHYSICAL = '1'
+ PRODUCT_TYPE_SERVICE = '2'
+ PRODUCT_TYPE_DIGITAL = '3'
+ PRODUCT_TYPE_SHIPPING = '4'
+ PRODUCT_TYPE_EXEMPT = '5'
+ PRODUCT_TYPE_REDUCED_TAX = '6'
+ PRODUCT_TYPE_OVERRIDE_TAX = '7'
+ PRODUCT_TYPE_ZERO_RATED = '8'
+ PRODUCT_TYPE_REVERSE_TAX = '9'
+ ```
+ example: '1'
+
+ InvoiceInvitationRequest:
+ required:
+ - client_contact_id
+ properties:
+ id:
+ description: 'The entity invitation hashed id'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ client_contact_id:
+ description: 'The client contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ key:
+ description: 'The invitation key'
+ type: string
+ example: Opnel5aKBz4343343566236gvbb
+ readOnly: true
+ link:
+ description: 'The invitation link'
+ type: string
+ example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
+ readOnly: true
+ sent_date:
+ description: 'The invitation sent date'
+ type: string
+ format: date-time
+ readOnly: true
+ viewed_date:
+ description: 'The invitation viewed date'
+ type: string
+ format: date-time
+ readOnly: true
+ opened_date:
+ description: 'The invitation opened date'
+ type: string
+ format: date-time
+ readOnly: true
+ updated_at:
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ email_error:
+ description: 'The email error'
+ type: string
+ example: 'The email error'
+ readOnly: true
+ email_status:
+ description: 'The email status'
+ type: string
+ readOnly: true
+
+ BankIntegration:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: AS3df3A
+ provider_bank_name:
+ description: 'The providers bank name'
+ type: string
+ example: 'Chase Bank'
+ bank_account_id:
+ description: 'The bank account id'
+ type: integer
+ example: '1233434'
+ bank_account_name:
+ description: 'The name of the account'
+ type: string
+ example: 'My Checking Acc'
+ bank_account_number:
+ description: 'The account number'
+ type: string
+ example: '111 234 2332'
+ bank_account_status:
+ description: 'The status of the bank account'
+ type: string
+ example: ACTIVE
+ bank_account_type:
+ description: 'The type of account'
+ type: string
+ example: CREDITCARD
+ balance:
+ description: 'The current bank balance if available'
+ type: number
+ example: '1000000'
+ currency:
+ description: 'iso_3166_3 code'
+ type: string
+ example: USD
+ type: object
+ CompanyToken:
+ properties:
+ name:
+ description: 'The token name'
+ type: string
+ example: 'Token Name'
+ token:
+ description: 'The token value'
+ type: string
+ example: AS3df3jUUH765fhfd9KJuidj3JShjA
+ is_system:
+ description: 'Determines whether the token is created by the system rather than a user'
+ type: boolean
+ example: 'true'
+ type: object
PurchaseOrder:
properties:
id:
@@ -16565,98 +16597,1270 @@ components:
type: object
- CompanyUser:
+ InvoiceInvitation:
properties:
- permissions:
- description: 'The user permissionsfor this company in a comma separated list'
+ id:
+ description: 'The entity invitation hashed id'
type: string
- example: 'create_invoice,create_client,view_client'
- settings:
- description: 'Settings that are used for the flutter applications to store user preferences / metadata'
- type: object
+ example: Opnel5aKBz
readOnly: true
- react_settings:
- description: 'Dedicated settings object for the react web application'
- type: object
+ client_contact_id:
+ description: 'The client contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ key:
+ description: 'The invitation key'
+ type: string
+ example: Opnel5aKBz4343343566236gvbb
readOnly: true
- is_owner:
- description: 'Determines whether the user owns this company'
- type: boolean
- example: true
+ link:
+ description: 'The invitation link'
+ type: string
+ example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
readOnly: true
- is_admin:
- description: 'Determines whether the user is the admin of this company'
- type: boolean
- example: true
+ sent_date:
+ description: 'The invitation sent date'
+ type: string
+ format: date-time
readOnly: true
- is_locked:
- description: 'Determines whether the users access to this company has been locked'
- type: boolean
- example: true
+ viewed_date:
+ description: 'The invitation viewed date'
+ type: string
+ format: date-time
+ readOnly: true
+ opened_date:
+ description: 'The invitation opened date'
+ type: string
+ format: date-time
readOnly: true
updated_at:
- description: 'The last time the record was modified, format Unix Timestamp'
- type: integer
- example: '1231232312321'
- deleted_at:
- description: 'Timestamp when the user was archived, format Unix Timestamp'
- type: integer
- example: '12312312321'
- account:
- $ref: '#/components/schemas/Account'
- company:
- $ref: '#/components/schemas/Company'
- user:
- $ref: '#/components/schemas/UserRef'
- token:
- $ref: '#/components/schemas/CompanyToken'
- type: object
- CompanyUserRef:
- properties:
- permissions:
- description: 'The user permissionsfor this company in a comma separated list'
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ email_error:
+ description: 'The email error'
type: string
- example: 'create_invoice,create_client,view_client'
- settings:
- description: 'Settings that are used for the flutter applications to store user preferences / metadata'
- type: object
+ example: 'The email error'
readOnly: true
- react_settings:
- description: 'Dedicated settings object for the react web application'
- type: object
+ email_status:
+ description: 'The email status'
+ type: string
readOnly: true
- is_owner:
- description: 'Determines whether the user owns this company'
- type: boolean
- example: true
- readOnly: true
- is_admin:
- description: 'Determines whether the user is the admin of this company'
- type: boolean
- example: true
- readOnly: true
- is_locked:
- description: 'Determines whether the users access to this company has been locked'
+
+ VendorContact:
+ properties:
+ id:
+ description: 'The hashed id of the vendor contact'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The hashed id of the user id'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ vendor_id:
+ description: 'The hashed id of the vendor'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the contact'
+ type: string
+ example: Harry
+ last_name:
+ description: 'The last name of the contact'
+ type: string
+ example: Windsor
+ contact_key:
+ description: 'A unique identifier for the contact'
+ type: string
+ example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
+ readOnly: true
+ confirmation_code:
+ description: 'The confirmation code used to authenticate the contacts email address'
+ type: string
+ example: 333-sdjkh34gbasd
+ readOnly: true
+ phone:
+ description: 'The contacts phone number'
+ type: string
+ example: 555-123-1234
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: '2022-10-10'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: $1000
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: ''
+ email:
+ description: 'The contact email address'
+ type: string
+ example: harry@windsor.com
+ email_verified_at:
+ description: 'The date which the contact confirmed their email'
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ password:
+ description: 'The hashed password of the contact'
+ type: string
+ example: '*****'
+ is_primary:
+ description: 'Boolean flag determining if the contact is the primary contact for the vendor'
type: boolean
example: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
readOnly: true
updated_at:
- description: 'The last time the record was modified, format Unix Timestamp'
- type: integer
- example: '1231232312321'
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
deleted_at:
- description: 'Timestamp when the user was archived, format Unix Timestamp'
- type: integer
- example: '12312312321'
- account:
- $ref: '#/components/schemas/Account'
- company:
- $ref: '#/components/schemas/Company'
- user:
- $ref: '#/components/schemas/UserRef'
- token:
- $ref: '#/components/schemas/CompanyToken'
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
type: object
+ ClientGatewayToken:
+ properties:
+ id:
+ description: 'The hashed id of the client gateway token'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed_id of the client'
+ type: string
+ example: '2'
+ token:
+ description: 'The payment token'
+ type: string
+ example: '2'
+ routing_number:
+ description: 'THe bank account routing number'
+ type: string
+ example: '2'
+ company_gateway_id:
+ description: 'The hashed id of the company gateway'
+ type: string
+ example: '2'
+ is_default:
+ description: 'Flag determining if the token is the default payment method'
+ type: boolean
+ example: 'true'
+ type: object
+ Company:
+ properties:
+ id:
+ description: "The unique hashed identifier for the company"
+ type: string
+ example: WJxbojagwO
+ size_id:
+ description: "The unique identifier representing the company's size category"
+ type: string
+ example: '2'
+ industry_id:
+ description: "The unique identifier representing the company's industry category"
+ type: string
+ example: '5'
+ slack_webhook_url:
+ description: "The URL for the company's Slack webhook notifications"
+ type: string
+ example: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
+ google_analytics_key:
+ description: "The company's Google Analytics tracking ID"
+ type: string
+ example: 'UA-123456789-1'
+ portal_mode:
+ description: "The mode determining how client-facing URLs are structured (e.g., subdomain, domain, or iframe)"
+ type: string
+ example: subdomain
+ subdomain:
+ description: "The subdomain prefix for the company's domain (e.g., 'acme' in acme.domain.com)"
+ type: string
+ example: acme
+ portal_domain:
+ description: "The fully qualified domain used for client-facing URLs"
+ type: string
+ example: 'https://subdomain.invoicing.co'
+ enabled_tax_rates:
+ description: "The number of tax rates used per entity"
+ type: integer
+ example: '2'
+ fill_products:
+ description: "A flag determining whether to auto-fill product descriptions based on the product key"
+ type: boolean
+ example: true
+ convert_products:
+ description: "A flag determining whether to convert products between different types or units"
+ type: boolean
+ example: true
+ update_products:
+ description: "A flag determining whether to update product descriptions when the description changes"
+ type: boolean
+ example: true
+ show_product_details:
+ description: "A flag determining whether to display product details in the user interface"
+ type: boolean
+ example: true
+ show_product_cost:
+ description: "A flag determining whether to display product cost is shown in the user interface"
+ type: boolean
+ example: true
+ custom_fields:
+ description: "A mapping of custom fields for various objects within the company"
+ type: object
+ enable_product_cost:
+ description: "A flag determining whether to show or hide the product cost field in the user interface"
+ type: boolean
+ example: true
+ enable_product_quantity:
+ description: "A flag determining whether to show or hide the product quantity field in the user interface"
+ type: boolean
+ example: true
+ default_quantity:
+ description: "A flag determining whether to use a default quantity for products"
+ type: boolean
+ example: true
+ custom_surcharge_taxes1:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the first custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes2:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the second custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes3:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the third custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes4:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the fourth custom"
+ logo:
+ description: "The company logo file in binary format"
+ type: string
+ format: binary
+ example: logo.png
+ company_key:
+ description: "The static company key hash used to identify the Company"
+ readOnly: true
+ type: string
+ example: "Vnb14bRlwiFjc5ckte6cfbygTRkn5IMQ"
+ client_can_register:
+ description: "A flag determining whether clients can register for the client portal"
+ type: boolean
+ example: true
+ enabled_modules:
+ type: integer
+ description: |
+ Bitmask representation of the modules that are enabled in the application
+
+ ```
+ self::ENTITY_RECURRING_INVOICE => 1,
+ self::ENTITY_CREDIT => 2,
+ self::ENTITY_QUOTE => 4,
+ self::ENTITY_TASK => 8,
+ self::ENTITY_EXPENSE => 16,
+ self::ENTITY_PROJECT => 32,
+ self::ENTITY_VENDOR => 64,
+ self::ENTITY_TICKET => 128,
+ self::ENTITY_PROPOSAL => 256,
+ self::ENTITY_RECURRING_EXPENSE => 512,
+ self::ENTITY_RECURRING_TASK => 1024,
+ self::ENTITY_RECURRING_QUOTE => 2048,
+ ```
+
+ The default per_page value is 20.
+
+ example: 2048
+ db:
+ readOnly: true
+ type: string
+ example: 'db-ninja-01'
+ first_day_of_week:
+ description: "The first day of the week for the company"
+ type: string
+ example: '1'
+ first_month_of_year:
+ description: "The first month for the company financial year"
+ type: string
+ example: '1'
+ enabled_item_tax_rates:
+ description: "The number of tax rates used per item"
+ type: integer
+ example: 2
+ is_large:
+ description: "A flag determining whether the company is considered large"
+ type: boolean
+ example: true
+ default_auto_bill:
+ type: string
+ example: 'always'
+ description: |
+ A flag determining whether to auto-bill clients by default
+
+ values:
+
+ - always - Always auto bill
+ - disabled - Never auto bill
+ - optin - Allow the client to select their auto bill status with the default being disabled
+ - optout -Allow the client to select their auto bill status with the default being enabled
+ mark_expenses_invoiceable:
+ description: "A flag determining whether to mark expenses as invoiceable by default"
+ type: boolean
+ example: true
+ mark_expenses_paid:
+ description: "A flag determining whether to mark expenses as paid by default"
+ type: boolean
+ example: true
+ invoice_expense_documents:
+ description: "A flag determining whether to include expense documents on invoices by default"
+ type: boolean
+ example: true
+ auto_start_tasks:
+ description: "A flag determining whether to auto-start tasks by default"
+ type: boolean
+ example: true
+ invoice_task_timelog:
+ description: "A flag determining whether to include task time logs on invoices by default"
+ type: boolean
+ example: true
+ invoice_task_documents:
+ description: "A flag determining whether to include task documents on invoices by default"
+ type: boolean
+ example: true
+ show_tasks_table:
+ description: "A flag determining whether to show the tasks table on invoices by default"
+ type: boolean
+ example: true
+ is_disabled:
+ description: "A flag determining whether the company is disabled"
+ type: boolean
+ example: true
+ default_task_is_date_based:
+ description: "A flag determining whether to default tasks to be date-based"
+ type: boolean
+ example: true
+ enable_product_discount:
+ description: "A flag determining whether to show or hide the product discount field in the user interface"
+ type: boolean
+ example: true
+ calculate_expense_tax_by_amount:
+ description: "A flag determining whether to calculate expense taxes by amount"
+ type: boolean
+ example: true
+ expense_inclusive_taxes:
+ description: "A flag determining whether to include taxes in the expense amount"
+ type: boolean
+ example: true
+ session_timeout:
+ description: "The session timeout for the company"
+ type: integer
+ example: 60
+ oauth_password_required:
+ description: "A flag determining whether to require a password for `dangerous` actions when using OAuth"
+ type: boolean
+ example: true
+ invoice_task_datelog:
+ description: "A flag determining whether to include task date logs on invoices by default"
+ type: boolean
+ example: true
+ default_password_timeout:
+ description: "The default password timeout for the company"
+ type: integer
+ example: 60
+ show_task_end_date:
+ description: "A flag determining whether to show the task end date on invoices by default"
+ type: boolean
+ example: true
+ markdown_enabled:
+ description: "A flag determining whether markdown is enabled for the company"
+ type: boolean
+ example: true
+ report_include_drafts:
+ description: "A flag determining whether to include draft invoices in reports"
+ type: boolean
+ example: true
+ client_registration_fields:
+ description: "The client registration fields for the company"
+ type: object
+ stop_on_unpaid_recurring:
+ description: "A flag determining whether to stop recurring invoices when they are unpaid"
+ type: boolean
+ example: true
+ use_quote_terms_on_conversion:
+ description: "A flag determining whether to use quote terms on conversion to an invoice"
+ type: boolean
+ example: true
+ enable_applying_payments:
+ description: "A flag determining whether to enable applying payments to invoices"
+ type: boolean
+ example: true
+ track_inventory:
+ description: "A flag determining whether to track inventory for the company"
+ type: boolean
+ example: true
+ inventory_notification_threshold:
+ description: "The inventory notification threshold for the company"
+ type: integer
+ example: 60
+ stock_notification:
+ description: "A flag determining whether to send stock notifications for the company"
+ type: boolean
+ example: true
+ matomo_url:
+ description: "The Matomo URL for the company"
+ type: string
+ example: 'https://matomo.example.com'
+ matomo_id:
+ description: "The Matomo ID for the company"
+ type: string
+ example: '1'
+ enabled_expense_tax_rates:
+ description: "The number of tax rates used per expense"
+ type: integer
+ example: 2
+ invoice_task_project:
+ description: "A flag determining whether to include the project on invoices by default"
+ type: boolean
+ example: true
+ report_include_deleted:
+ description: "A flag determining whether to include deleted invoices in reports"
+ type: boolean
+ example: true
+ invoice_task_lock:
+ description: "A flag determining whether to lock tasks when invoiced"
+ type: boolean
+ example: true
+ convert_payment_currency:
+ description: "A flag determining whether to convert the payment currency"
+ type: boolean
+ example: true
+ convert_expense_currency:
+ description: "A flag determining whether to convert the expense currency"
+ type: boolean
+ example: true
+ notify_vendor_when_paid:
+ description: "A flag determining whether to notify the vendor when an expense is paid"
+ type: boolean
+ example: true
+ invoice_task_hours:
+ description: "A flag determining whether to include the task hours on invoices by default"
+ type: boolean
+ example: true
+ calculate_taxes:
+ description: "A flag determining whether to calculate taxes for the company"
+ type: boolean
+ example: true
+ tax_data:
+ description: "The tax data for the company"
+ type: object
+ e_invoice_certificate:
+ description: "The e-invoice certificate for the company"
+ type: string
+ example: '-----BEGIN CERTIFICATE-----'
+ e_invoice_certificate_passphrase:
+ description: "The e-invoice certificate passphrase for the company"
+ type: string
+ example: 'secret'
+ origin_tax_data:
+ description: "The origin tax data for the company"
+ type: object
+ invoice_task_project_header:
+ description: "A flag determining whether to include the project header on invoices by default"
+ type: boolean
+ example: true
+ invoice_task_item_description:
+ description: "A flag determining whether to include the item description on invoices by default"
+ type: boolean
+ example: true
+
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ type: object
+ CompanyLedger:
+ properties:
+ entity_id:
+ description: 'This field will reference one of the following entity hashed ID payment_id, invoice_id or credit_id'
+ type: string
+ example: AS3df3A
+ notes:
+ description: 'The notes which reference this entry of the ledger'
+ type: string
+ example: 'Credit note for invoice #3212'
+ balance:
+ description: 'The client balance'
+ type: number
+ format: float
+ example: '10.00'
+ adjustment:
+ description: 'The amount the client balance is adjusted by'
+ type: number
+ format: float
+ example: '10.00'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ RecurringInvoice:
+ properties:
+ id:
+ description: 'The hashed id of the recurring invoice'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ status_id:
+ description: 'The invoice status variable'
+ type: string
+ example: '4'
+ frequency_id:
+ description: 'The recurring invoice frequency'
+ type: number
+ example: '4'
+ remaining_cycles:
+ description: 'The number of invoices left to be generated'
+ type: number
+ example: '4'
+ number:
+ description: 'The recurringinvoice number - is a unique alpha numeric number per invoice per company'
+ type: string
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this recurring invoice'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The invoice terms'
+ type: string
+ example: 'These are invoice terms'
+ public_notes:
+ description: 'The public notes of the invoice'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the invoice'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The invoice footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the invoice'
+ type: number
+ format: float
+ example: '10.00'
+ line_items:
+ description: 'An array of objects which define the line items of the invoice'
+ type: object
+ example: ''
+ amount:
+ description: 'The invoice amount'
+ type: number
+ format: float
+ example: '10.00'
+ balance:
+ description: 'The invoice balance'
+ type: number
+ format: float
+ example: '10.00'
+ paid_to_date:
+ description: 'The amount paid on the invoice to date'
+ type: number
+ format: float
+ example: '10.00'
+ discount:
+ description: 'The invoice discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the invoice has been deleted'
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The Invoice Date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the invoice was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ type: object
+
+ Payment:
+ properties:
+ id:
+ description: 'The payment hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ invitation_id:
+ description: 'The invitation hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_contact_id:
+ description: 'The client contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ type_id:
+ description: 'The Payment Type ID'
+ type: string
+ example: '1'
+ date:
+ description: 'The Payment date'
+ type: string
+ example: 1-1-2014
+ transaction_reference:
+ description: 'The transaction reference as defined by the payment gateway'
+ type: string
+ example: xcsSxcs124asd
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: Opnel5aKBz
+ private_notes:
+ description: 'The private notes of the payment'
+ type: string
+ example: 'The payment was refunded due to error'
+ is_manual:
+ description: 'Flags whether the payment was made manually or processed via a gateway'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the payment has been deleted'
+ type: boolean
+ example: true
+ amount:
+ description: 'The amount of this payment'
+ type: number
+ example: 10
+ refunded:
+ description: 'The refunded amount of this payment'
+ type: number
+ example: 10
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ company_gateway_id:
+ description: 'The company gateway id'
+ type: string
+ example: '3'
+ paymentables:
+ $ref: '#/components/schemas/Paymentable'
+ invoices:
+ description: ''
+ type: array
+ items:
+ $ref: '#/components/schemas/InvoicePaymentable'
+ credits:
+ description: ''
+ type: array
+ items:
+ $ref: '#/components/schemas/CreditPaymentable'
+ number:
+ description: 'The payment number - is a unique alpha numeric number per payment per company'
+ type: string
+ example: PAY_101
+ type: object
+
+ Credit:
+ properties:
+ id:
+ description: "The unique hashed ID of the credit"
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: "The unique hashed ID of the user associated with the credit"
+ type: string
+ example: 1a2b3c4d5e
+ assigned_user_id:
+ description: "The unique hashed ID of the assigned user responsible for the credit"
+ type: string
+ example: 6f7g8h9i0j
+ client_id:
+ description: "The unique hashed ID of the client associated with the credit"
+ type: string
+ example: p1q2r3s4t5
+ status_id:
+ description: "The ID representing the current status of the credit"
+ type: string
+ example: 3
+ invoice_id:
+ description: "The unique hashed ID of the linked invoice to which the credit is applied"
+ type: string
+ example: u1v2w3x4y5
+ number:
+ description: "The unique alphanumeric credit number per company"
+ type: string
+ example: QUOTE_101
+ po_number:
+ description: "The purchase order number referred to by the credit"
+ type: string
+ example: PO_12345
+ terms:
+ description: "The terms associated with the credit"
+ type: string
+ example: "Net 30"
+ public_notes:
+ description: "Public notes for the credit"
+ type: string
+ example: "Thank you for your business."
+ private_notes:
+ description: "Private notes for internal use, not visible to the client"
+ type: string
+ example: "Client is requesting a discount."
+ footer:
+ description: "The footer text for the credit"
+ type: string
+ example: "Footer text goes here."
+ custom_value1:
+ description: "Custom value 1 for additional credit information"
+ type: string
+ example: "Custom data 1"
+ custom_value2:
+ description: "Custom value 2 for additional credit information"
+ type: string
+ example: "Custom data 2"
+ custom_value3:
+ description: "Custom value 3 for additional credit information"
+ type: string
+ example: "Custom data 3"
+ custom_value4:
+ description: "Custom value 4 for additional credit information"
+ type: string
+ example: "Custom data 4"
+ tax_name1:
+ description: "The name of the first tax applied to the credit"
+ type: string
+ example: "VAT"
+ tax_name2:
+ description: "The name of the second tax applied to the credit"
+ type: string
+ example: "GST"
+ tax_rate1:
+ description: "The rate of the first tax applied to the credit"
+ type: number
+ format: float
+ example: 10.00
+ tax_rate2:
+ description: "The rate of the second tax applied to the credit"
+ type: number
+ format: float
+ example: 5.00
+ tax_name3:
+ description: "The name of the third tax applied to the credit"
+ type: string
+ example: "PST"
+ tax_rate3:
+ description: "The rate of the third tax applied to the credit"
+ type: number
+ format: float
+ example: 8.00
+ total_taxes:
+ description: "The total amount of taxes for the credit"
+ type: number
+ format: float
+ example: 23.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the credit'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ amount:
+ description: "The total amount of the credit"
+ type: number
+ format: float
+ example: 100.00
+ balance:
+ description: "The outstanding balance of the credit"
+ type: number
+ format: float
+ example: 50.00
+ paid_to_date:
+ description: "The total amount paid to date for the credit"
+ type: number
+ format: float
+ example: 50.00
+ discount:
+ description: "The discount applied to the credit"
+ type: number
+ format: float
+ example: 10.00
+ partial:
+ description: "The partial amount applied to the credit"
+ type: number
+ format: float
+ example: 20.00
+ is_amount_discount:
+ description: "Indicates whether the discount applied is a fixed amount or a percentage"
+ type: boolean
+ example: true
+ is_deleted:
+ description: "Indicates whether the credit has been deleted"
+ type: boolean
+ example: false
+ uses_inclusive_taxes:
+ description: "Indicates whether the tax rates applied to the credit are inclusive or exclusive"
+ type: boolean
+ example: true
+ date:
+ description: "The date the credit was issued"
+ type: string
+ format: date
+ example: "1994-07-30"
+ last_sent_date:
+ description: "The date the credit was last sent out"
+ type: string
+ format: date
+ example: "1994-07-30"
+ next_send_date:
+ description: "The next scheduled date for sending a credit reminder"
+ type: string
+ format: date
+ example: "1994-07-30"
+ partial_due_date:
+ description: "The due date for the partial amount of the credit"
+ type: string
+ format: date
+ example: "1994-07-30"
+ due_date:
+ description: "The due date for the total amount of the credit"
+ type: string
+ format: date
+ example: "1994-07-30"
+ settings:
+ $ref: "#/components/schemas/CompanySettings"
+ last_viewed:
+ description: "The timestamp of the last time the credit was viewed"
+ type: number
+ format: integer
+ example: 1434342123
+ updated_at:
+ description: "The timestamp of the last time the credit was updated"
+ type: number
+ format: integer
+ example: 1434342123
+ archived_at:
+ description: "The timestamp of the last time the credit was archived"
+ type: number
+ format: integer
+ example: 1434342123
+ custom_surcharge1:
+ description: "First custom surcharge amount"
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ type: object
+ Subscription:
+ properties:
+ id:
+ description: Unique identifier for the subscription
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: Unique identifier for the user associated with the subscription
+ type: string
+ example: Ua6Rw4pVbS
+ product_id:
+ description: Unique identifier for the product associated with the subscription
+ type: string
+ example: Pr5Ft7yBmC
+ recurring_invoice_id:
+ description: Unique identifier for the recurring invoice associated with the subscription
+ type: string
+ example: Ri2Yt8zJkP
+ is_recurring:
+ description: Indicates whether the subscription is recurring
+ type: boolean
+ example: 'true'
+ frequency_id:
+ description: 'integer const representation of the frequency'
+ type: string
+ example: '1'
+ auto_bill:
+ description: 'enum setting'
+ type: string
+ example: always
+ promo_code:
+ description: Promotional code applied to the subscription
+ type: string
+ example: PROMOCODE4U
+ promo_discount:
+ description: Discount percentage or amount applied to the subscription
+ type: number
+ example: 10
+ is_amount_discount:
+ description: Indicates whether the discount is a fixed amount
+ type: boolean
+ example: 'true'
+ allow_cancellation:
+ description: Indicates whether the subscription can be cancelled
+ type: boolean
+ example: 'true'
+ per_seat_enabled:
+ description: Indicates whether the subscription pricing is per seat
+ type: boolean
+ example: 'true'
+ currency_id:
+ description: Unique identifier for the currency used in the subscription
+ type: integer
+ example: '1'
+ max_seats_limit:
+ description: Maximum number of seats allowed for the subscription
+ type: integer
+ example: '100'
+ trial_enabled:
+ description: Indicates whether the subscription has a trial period
+ type: boolean
+ example: 'true'
+ trial_duration:
+ description: Duration of the trial period in days
+ type: integer
+ example: '14'
+ allow_query_overrides:
+ description: Indicates whether query overrides are allowed for the subscription
+ type: boolean
+ example: 'true'
+ allow_plan_changes:
+ description: Indicates whether plan changes are allowed for the subscription
+ type: boolean
+ example: 'true'
+ refund_period:
+ description: Number of days within which refunds can be requested
+ type: integer
+ example: '30'
+ webhook_configuration:
+ description: Webhook configuration for the subscription
+ type: string
+ example: 'expand reference for this'
+ is_deleted:
+ description: Indicates whether the subscription has been deleted
+ type: boolean
+ example: 'false'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ type: object
+ BulkAction:
+ type: array
+ items:
+ type: integer
+ example: '[0,1,2,3,]'
+ Project:
+ type: object
+ properties:
+ id:
+ description: 'The project hashed id'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: The assigned user identifier associated with the project
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ type: string
+ example: Opnel5aKBz
+ description: The client identifier associated with the project
+ name:
+ type: string
+ description: The name of the project
+ example: 'New Project'
+ task_rate:
+ type: number
+ format: float
+ example: 10
+ description: The default rate per task for the project
+ due_date:
+ type: string
+ format: date
+ example: '2019-01-01'
+ description: The due date for the project
+ private_notes:
+ type: string
+ description: Private notes associated with the project
+ budgeted_hours:
+ type: number
+ format: float
+ description: The number of budgeted hours for the project
+ custom_value1:
+ type: string
+ description: Custom value field 1
+ custom_value2:
+ type: string
+ description: Custom value field 2
+ custom_value3:
+ type: string
+ description: Custom value field 3
+ custom_value4:
+ type: string
+ description: Custom value field 4
+ created_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the project creation
+ updated_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the last project update
+ archived_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the project deletion
+ public_notes:
+ type: string
+ description: Public notes associated with the project
+ is_deleted:
+ type: boolean
+ description: A flag indicating if the project is deleted
+ number:
+ type: string
+ description: The project number
+ color:
+ type: string
+ description: The color associated with the project
+ required:
+ - id
+ - user_id
+ - name
+ - task_rate
+ - budgeted_hours
+ - is_deleted
+ - color
+
CompanySettings:
required:
- currency_id
@@ -17500,1859 +18704,6 @@ components:
example: "individual"
type: object
- CompanyLedger:
- properties:
- entity_id:
- description: 'This field will reference one of the following entity hashed ID payment_id, invoice_id or credit_id'
- type: string
- example: AS3df3A
- notes:
- description: 'The notes which reference this entry of the ledger'
- type: string
- example: 'Credit note for invoice #3212'
- balance:
- description: 'The client balance'
- type: number
- format: float
- example: '10.00'
- adjustment:
- description: 'The amount the client balance is adjusted by'
- type: number
- format: float
- example: '10.00'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- CompanyToken:
- properties:
- name:
- description: 'The token name'
- type: string
- example: 'Token Name'
- token:
- description: 'The token value'
- type: string
- example: AS3df3jUUH765fhfd9KJuidj3JShjA
- is_system:
- description: 'Determines whether the token is created by the system rather than a user'
- type: boolean
- example: 'true'
- type: object
- Activity:
- properties:
- id:
- description: 'The id field of the activity'
- type: string
- example: Opnel5aKBz
- activity_type_id:
- description: 'The activity type id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- company_id:
- description: 'The company hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- payment_id:
- description: 'The payment hashed id'
- type: string
- example: Opnel5aKBz
- credit_id:
- description: 'The credit hashed id'
- type: string
- example: Opnel5aKBz
- updated_at:
- description: 'Unixtimestamp the last time the record was updated'
- type: integer
- example: '343421434'
- expense_id:
- description: 'The expense hashed id'
- type: string
- example: Opnel5aKBz
- is_system:
- description: 'Defines is the activity was performed by the system'
- type: boolean
- example: true
- contact_id:
- description: 'The contact hashed id'
- type: string
- example: Opnel5aKBz
- task_id:
- description: 'The task hashed id'
- type: string
- example: Opnel5aKBz
- notes:
- description: 'Activity Notes'
- type: string
- example: Opnel5aKBz
- token_id:
- description: 'The hashed ID of the token who performed the action'
- type: string
- example: Opnel5aKBz
- ip:
- description: 'The IP Address of the user who performed the action'
- type: string
- example: 192.168.1.252
- user:
- $ref: '#/components/schemas/User'
- client:
- $ref: '#/components/schemas/Client'
- contact:
- $ref: '#/components/schemas/ClientContact'
- recurring_invoice:
- $ref: '#/components/schemas/RecurringInvoice'
- invoice:
- $ref: '#/components/schemas/Invoice'
- credit:
- $ref: '#/components/schemas/Credit'
- quote:
- $ref: '#/components/schemas/Quote'
- payment:
- $ref: '#/components/schemas/Payment'
- expense:
- $ref: '#/components/schemas/Expense'
- task:
- $ref: '#/components/schemas/Task'
- purchase_order:
- $ref: '#/components/schemas/PurchaseOrder'
- vendor:
- $ref: '#/components/schemas/Vendor'
- vendor_contact:
- $ref: '#/components/schemas/VendorContact'
- type: object
- Error:
- properties:
- message:
- description: 'Something terrible went wrong'
- type: string
- example: 'Unexpected error'
- code:
- description: 'The HTTP error code, ie 5xx 4xx'
- type: integer
- example: '500'
- type: object
-
- GenericBulkAction:
- properties:
- action:
- type: string
- example: archive
- description: 'The action to perform ie. archive / restore / delete'
- ids:
- type: array
- items:
- format: string
- type: string
- example: 2J234DFA,D2J234DFA,D2J234DFA
- description: string array of client hashed ids
- type: object
- ClientContact:
- properties:
- id:
- description: 'The hashed if of the contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The hashed id of the user who created the contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- client_id:
- description: 'The hashed id of the client'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the contact'
- type: string
- example: John
- last_name:
- description: 'The last name of the contact'
- type: string
- example: Doe
- phone:
- description: 'The phone number of the contact'
- type: string
- example: 555-152-4524
- custom_value1:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value2:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value3:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A Custom field value'
- type: string
- example: ''
- email:
- description: 'The email of the contact'
- type: string
- example: ''
- accepted_terms_version:
- description: 'The terms of service which the contact has accpeted'
- type: string
- example: 'A long set of ToS'
- readOnly: true
- password:
- description: 'The hashed password of the contact'
- type: string
- example: '*****'
- confirmation_code:
- description: 'The confirmation code used to authenticate the contacts email address'
- type: string
- example: 333-sdjkh34gbasd
- readOnly: true
- token:
- description: 'A uuid based token.'
- type: string
- example: 333-sdjkh34gbasd
- readOnly: true
- contact_key:
- description: 'A unique identifier for the contact'
- type: string
- example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
- readOnly: true
- is_primary:
- description: 'Defines is this contact is the primary contact for the client'
- type: boolean
- example: true
- confirmed:
- description: 'Boolean value confirms the user has confirmed their account.'
- type: boolean
- example: true
- is_locked:
- description: 'Boolean value defines if the contact has been locked out.'
- type: boolean
- example: true
- send_email:
- description: 'Boolean value determines is this contact should receive emails'
- type: boolean
- example: true
- failed_logins:
- description: 'The number of failed logins the contact has had'
- type: number
- format: integer
- example: '3'
- readOnly: true
- email_verified_at:
- description: 'The date which the contact confirmed their email'
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- last_login:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- deleted_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- type: object
- Project:
- type: object
- properties:
- id:
- description: 'The project hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: The assigned user identifier associated with the project
- type: string
- example: Opnel5aKBz
- client_id:
- type: string
- example: Opnel5aKBz
- description: The client identifier associated with the project
- name:
- type: string
- description: The name of the project
- example: 'New Project'
- task_rate:
- type: number
- format: float
- example: 10
- description: The default rate per task for the project
- due_date:
- type: string
- format: date
- example: '2019-01-01'
- description: The due date for the project
- private_notes:
- type: string
- description: Private notes associated with the project
- budgeted_hours:
- type: number
- format: float
- description: The number of budgeted hours for the project
- custom_value1:
- type: string
- description: Custom value field 1
- custom_value2:
- type: string
- description: Custom value field 2
- custom_value3:
- type: string
- description: Custom value field 3
- custom_value4:
- type: string
- description: Custom value field 4
- created_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the project creation
- updated_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the last project update
- archived_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the project deletion
- public_notes:
- type: string
- description: Public notes associated with the project
- is_deleted:
- type: boolean
- description: A flag indicating if the project is deleted
- number:
- type: string
- description: The project number
- color:
- type: string
- description: The color associated with the project
- required:
- - id
- - user_id
- - name
- - task_rate
- - budgeted_hours
- - is_deleted
- - color
-
- Credit:
- properties:
- id:
- description: "The unique hashed ID of the credit"
- type: string
- example: Opnel5aKBz
- user_id:
- description: "The unique hashed ID of the user associated with the credit"
- type: string
- example: 1a2b3c4d5e
- assigned_user_id:
- description: "The unique hashed ID of the assigned user responsible for the credit"
- type: string
- example: 6f7g8h9i0j
- client_id:
- description: "The unique hashed ID of the client associated with the credit"
- type: string
- example: p1q2r3s4t5
- status_id:
- description: "The ID representing the current status of the credit"
- type: string
- example: 3
- invoice_id:
- description: "The unique hashed ID of the linked invoice to which the credit is applied"
- type: string
- example: u1v2w3x4y5
- number:
- description: "The unique alphanumeric credit number per company"
- type: string
- example: QUOTE_101
- po_number:
- description: "The purchase order number referred to by the credit"
- type: string
- example: PO_12345
- terms:
- description: "The terms associated with the credit"
- type: string
- example: "Net 30"
- public_notes:
- description: "Public notes for the credit"
- type: string
- example: "Thank you for your business."
- private_notes:
- description: "Private notes for internal use, not visible to the client"
- type: string
- example: "Client is requesting a discount."
- footer:
- description: "The footer text for the credit"
- type: string
- example: "Footer text goes here."
- custom_value1:
- description: "Custom value 1 for additional credit information"
- type: string
- example: "Custom data 1"
- custom_value2:
- description: "Custom value 2 for additional credit information"
- type: string
- example: "Custom data 2"
- custom_value3:
- description: "Custom value 3 for additional credit information"
- type: string
- example: "Custom data 3"
- custom_value4:
- description: "Custom value 4 for additional credit information"
- type: string
- example: "Custom data 4"
- tax_name1:
- description: "The name of the first tax applied to the credit"
- type: string
- example: "VAT"
- tax_name2:
- description: "The name of the second tax applied to the credit"
- type: string
- example: "GST"
- tax_rate1:
- description: "The rate of the first tax applied to the credit"
- type: number
- format: float
- example: 10.00
- tax_rate2:
- description: "The rate of the second tax applied to the credit"
- type: number
- format: float
- example: 5.00
- tax_name3:
- description: "The name of the third tax applied to the credit"
- type: string
- example: "PST"
- tax_rate3:
- description: "The rate of the third tax applied to the credit"
- type: number
- format: float
- example: 8.00
- total_taxes:
- description: "The total amount of taxes for the credit"
- type: number
- format: float
- example: 23.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the credit'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- amount:
- description: "The total amount of the credit"
- type: number
- format: float
- example: 100.00
- balance:
- description: "The outstanding balance of the credit"
- type: number
- format: float
- example: 50.00
- paid_to_date:
- description: "The total amount paid to date for the credit"
- type: number
- format: float
- example: 50.00
- discount:
- description: "The discount applied to the credit"
- type: number
- format: float
- example: 10.00
- partial:
- description: "The partial amount applied to the credit"
- type: number
- format: float
- example: 20.00
- is_amount_discount:
- description: "Indicates whether the discount applied is a fixed amount or a percentage"
- type: boolean
- example: true
- is_deleted:
- description: "Indicates whether the credit has been deleted"
- type: boolean
- example: false
- uses_inclusive_taxes:
- description: "Indicates whether the tax rates applied to the credit are inclusive or exclusive"
- type: boolean
- example: true
- date:
- description: "The date the credit was issued"
- type: string
- format: date
- example: "1994-07-30"
- last_sent_date:
- description: "The date the credit was last sent out"
- type: string
- format: date
- example: "1994-07-30"
- next_send_date:
- description: "The next scheduled date for sending a credit reminder"
- type: string
- format: date
- example: "1994-07-30"
- partial_due_date:
- description: "The due date for the partial amount of the credit"
- type: string
- format: date
- example: "1994-07-30"
- due_date:
- description: "The due date for the total amount of the credit"
- type: string
- format: date
- example: "1994-07-30"
- settings:
- $ref: "#/components/schemas/CompanySettings"
- last_viewed:
- description: "The timestamp of the last time the credit was viewed"
- type: number
- format: integer
- example: 1434342123
- updated_at:
- description: "The timestamp of the last time the credit was updated"
- type: number
- format: integer
- example: 1434342123
- archived_at:
- description: "The timestamp of the last time the credit was archived"
- type: number
- format: integer
- example: 1434342123
- custom_surcharge1:
- description: "First custom surcharge amount"
- type: number
- format: float
- example: 10.00
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- type: object
-
- ProductBulkAction:
- required:
- - action
- - ids
- properties:
- action:
- type: string
- example: archive
- description: 'The action to perform ie. archive / restore / delete / set_tax_id'
- ids:
- type: array
- items:
- format: string
- type: string
- example: 2J234DFA,D2J234DFA,D2J234DFA
- description: string array of client hashed ids
- tax_id:
- type: string
- example: '1'
- description: |
- The tax rate id to set on the list of products
-
- The following constants are available (default = '1')
-
- ```
- PRODUCT_TYPE_PHYSICAL = '1'
- PRODUCT_TYPE_SERVICE = '2'
- PRODUCT_TYPE_DIGITAL = '3'
- PRODUCT_TYPE_SHIPPING = '4'
- PRODUCT_TYPE_EXEMPT = '5'
- PRODUCT_TYPE_REDUCED_TAX = '6'
- PRODUCT_TYPE_OVERRIDE_TAX = '7'
- PRODUCT_TYPE_ZERO_RATED = '8'
- PRODUCT_TYPE_REVERSE_TAX = '9'
- ```
- type: object
- Payment:
- properties:
- id:
- description: 'The payment hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- invitation_id:
- description: 'The invitation hashed id'
- type: string
- example: Opnel5aKBz
- client_contact_id:
- description: 'The client contact hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- type_id:
- description: 'The Payment Type ID'
- type: string
- example: '1'
- date:
- description: 'The Payment date'
- type: string
- example: 1-1-2014
- transaction_reference:
- description: 'The transaction reference as defined by the payment gateway'
- type: string
- example: xcsSxcs124asd
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- private_notes:
- description: 'The private notes of the payment'
- type: string
- example: 'The payment was refunded due to error'
- is_manual:
- description: 'Flags whether the payment was made manually or processed via a gateway'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the payment has been deleted'
- type: boolean
- example: true
- amount:
- description: 'The amount of this payment'
- type: number
- example: 10
- refunded:
- description: 'The refunded amount of this payment'
- type: number
- example: 10
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- company_gateway_id:
- description: 'The company gateway id'
- type: string
- example: '3'
- paymentables:
- $ref: '#/components/schemas/Paymentable'
- invoices:
- description: ''
- type: array
- items:
- $ref: '#/components/schemas/InvoicePaymentable'
- credits:
- description: ''
- type: array
- items:
- $ref: '#/components/schemas/CreditPaymentable'
- number:
- description: 'The payment number - is a unique alpha numeric number per payment per company'
- type: string
- example: PAY_101
- type: object
-
- BankTransactionRule:
- properties:
- id:
- description: 'The bank transaction rules hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: AS3df3A
- name:
- description: 'The name of the transaction'
- type: string
- example: 'Rule 1'
- rules:
- description: 'A mapped collection of the sub rules for the BankTransactionRule'
- type: array
- items:
- $ref: '#/components/schemas/BTRules'
- auto_convert:
- description: 'Flags whether the rule converts the transaction automatically'
- type: boolean
- example: true
- matches_on_all:
- description: 'Flags whether all subrules are required for the match'
- type: boolean
- example: true
- applies_to:
- description: 'Flags whether the rule applies to a CREDIT or DEBIT'
- type: string
- example: CREDIT
- client_id:
- description: 'The client hashed id'
- type: string
- example: AS3df3A
- vendor_id:
- description: 'The vendor hashed id'
- type: string
- example: AS3df3A
- category_id:
- description: 'The category hashed id'
- type: string
- example: AS3df3A
- type: object
- RecurringExpense:
- properties:
- id:
- description: 'The hashed id of the recurring expense'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The hashed id of the user who created the recurring expense'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The hashed id of the user assigned to this recurring expense'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed id of the client'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The hashed id of the invoice'
- type: string
- example: Opnel5aKBz
- bank_id:
- description: 'The id of the bank associated with this recurring expense'
- type: string
- example: '22'
- invoice_currency_id:
- description: 'The currency id of the invoice associated with this recurring expense'
- type: string
- example: '1'
- expense_currency_id:
- description: 'The currency id of the expense associated with this recurring expense'
- type: string
- example: '1'
- invoice_category_id:
- description: 'The category id of the invoice'
- type: string
- example: '1'
- payment_type_id:
- description: 'The payment type id'
- type: string
- example: '1'
- private_notes:
- description: 'The recurring expense private notes'
- type: string
- example: 'Private and confidential'
- public_notes:
- description: 'The recurring expense public notes'
- type: string
- example: 'This is the best client in the world'
- transaction_reference:
- description: 'The recurring expense transaction reference'
- type: string
- example: EXP-1223-2333
- transcation_id:
- description: 'The transaction id of the recurring expense'
- type: string
- example: '1233312312'
- custom_value1:
- description: 'Custom value field'
- type: string
- example: $1000
- custom_value2:
- description: 'Custom value field'
- type: string
- example: '2022-10-10'
- custom_value3:
- description: 'Custom value field'
- type: string
- example: 'short text'
- custom_value4:
- description: 'Custom value field'
- type: string
- example: 'very long text'
- tax_name1:
- description: 'The tax name'
- type: string
- example: GST
- tax_name2:
- description: 'The tax name'
- type: string
- example: VAT
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The total amount of the recurring expense'
- type: number
- format: float
- example: '10.00'
- frequency_id:
- description: 'The frequency this recurring expense fires'
- type: number
- format: int
- example: '1'
- remaining_cycles:
- description: 'The number of remaining cycles for this recurring expense'
- type: number
- format: int
- example: '1'
- foreign_amount:
- description: 'The foreign currency amount of the recurring expense'
- type: number
- format: float
- example: '10.00'
- exchange_rate:
- description: 'The exchange rate for the expernse'
- type: number
- format: float
- example: '0.80'
- date:
- description: 'The date of the expense'
- type: string
- example: ''
- payment_date:
- description: 'The date the expense was paid'
- type: string
- example: ''
- should_be_invoiced:
- description: 'Boolean flag determining if the expense should be invoiced'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag determining if the recurring expense is deleted'
- type: boolean
- example: true
- last_sent_date:
- description: 'The Date it was sent last'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The next send date'
- type: string
- format: date
- example: '1994-07-30'
- invoice_documents:
- description: 'Boolean flag determining if the documents associated with this expense should be passed onto the invoice if it is converted to an invoice'
- type: boolean
- example: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- InvoiceRequest:
- required:
- - client_id
- properties:
- id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- readOnly: true
- number:
- description: 'The invoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- invitations:
- type: array
- description: 'An array of objects which define the invitations of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceInvitationRequest'
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- readOnly: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- readOnly: true
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- readOnly: true
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- project_id:
- description: 'The project associated with this invoice'
- type: string
- example: Opnel5aKBz
- type: object
- RecurringQuote:
- properties:
- id:
- description: 'The hashed id of the recurring quote'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The quote status variable'
- type: string
- example: '4'
- frequency_id:
- description: 'The recurring quote frequency'
- type: number
- example: '4'
- remaining_cycles:
- description: 'The number of quotes left to be generated'
- type: number
- example: '4'
- number:
- description: 'The recurringquote number - is a unique alpha numeric number per quote per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this recurring quote'
- type: string
- example: PO-1234
- terms:
- description: 'The quote terms'
- type: string
- example: 'These are quote terms'
- public_notes:
- description: 'The public notes of the quote'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the quote'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The quote footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the quote'
- type: number
- format: float
- example: '10.00'
- line_items:
- description: 'An array of objects which define the line items of the quote'
- type: object
- example: ''
- amount:
- description: 'The quote amount'
- type: number
- format: float
- example: '10.00'
- balance:
- description: 'The quote balance'
- type: number
- format: float
- example: '10.00'
- paid_to_date:
- description: 'The amount paid on the quote to date'
- type: number
- format: float
- example: '10.00'
- discount:
- description: 'The quote discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the quote has been deleted'
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The quote Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the quote was sent out'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the quote'
- type: string
- format: date
- example: '1994-07-30'
- settings:
- $ref: '#/components/schemas/CompanySettings'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- type: object
- Client:
- properties:
- id:
- description: 'The unique identifier of the client'
- type: string
- example: Opnel5aKBz
- readOnly: true
- contacts:
- type: array
- items:
- $ref: '#/components/schemas/ClientContact'
- user_id:
- description: 'The unique identifier of the user who created the client'
- type: string
- example: Ua6Rw4pVbS
- readOnly: true
- assigned_user_id:
- description: 'The unique identifier of the user who has been assigned the client'
- type: string
- example: Ua6Rw4pVbS
- name:
- description: 'The name of the client company or organization'
- type: string
- example: "Jim's Housekeeping"
- website:
- description: 'The website URL of the client company or organization'
- type: string
- example: 'https://www.jims-housekeeping.com'
- private_notes:
- description: 'Notes that are only visible to the user who created the client'
- type: string
- example: 'Client prefers email communication over phone calls'
- client_hash:
- description: 'A unique hash value for the client'
- type: string
- example: asdfkjhk342hjhbfdvmnfb1
- readOnly: true
- industry_id:
- description: 'The unique identifier of the industry the client operates in'
- type: number
- example: '5'
- size_id:
- description: 'The unique identifier for the size category of the client company or organization'
- type: number
- example: '2'
- address1:
- description: "First line of the client's address"
- type: string
- example: '123 Main St'
- address2:
- description: "Second line of the client's address, if needed"
- type: string
- example: 'Apt 4B'
- city:
- description: 'The city the client is located in'
- type: string
- example: 'Beverly Hills'
- state:
- description: 'The state, province, or locality the client is located in'
- type: string
- example: 'California'
- postal_code:
- description: 'The postal code or ZIP code of the client'
- type: string
- example: '90210'
- phone:
- description: "The client's phone number"
- type: string
- example: '555-3434-3434'
- country_id:
- description: "The unique identifier of the client's country"
- type: number
- format: integer
- example: '1'
- custom_value1:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Preferred contact: Email'
- custom_value2:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Account manager: John Doe'
- custom_value3:
- description: 'A custom field for storing additional information'
- type: string
- example: 'VIP client: Yes'
- custom_value4:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Annual contract value: $50,000'
- vat_number:
- description: "The client's VAT (Value Added Tax) number, if applicable"
- type: string
- example: 'VAT123456'
- id_number:
- description: 'A unique identification number for the client, such as a tax ID or business registration number'
- type: string
- number:
- description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
- type: string
- example: 'CL-0001'
- shipping_address1:
- description: "First line of the client's shipping address"
- type: string
- example: '5 Wallaby Way'
- shipping_address2:
- description: "Second line of the client's shipping address, if needed"
- type: string
- example: 'Suite 5'
- shipping_city:
- description: "The city of the client's shipping address"
- type: string
- example: 'Perth'
- shipping_state:
- description: "The state, province, or locality of the client's shipping address"
- type: string
- example: 'Western Australia'
- shipping_postal_code:
- description: "The postal code or ZIP code of the client's shipping address"
- type: string
- example: '6110'
- shipping_country_id:
- description: "The unique identifier of the country for the client's shipping address"
- type: number
- format: integer
- example: '4'
- is_deleted:
- description: 'A boolean value indicating whether the client has been deleted or not'
- type: boolean
- example: false
- readOnly: true
- balance:
- description: 'The outstanding balance the client owes'
- type: number
- format: float
- example: '500.00'
- readOnly: true
- paid_to_date:
- description: 'The total amount the client has paid to date'
- type: number
- format: float
- example: '2000.00'
- readOnly: true
- credit_balance:
- description: 'The available credit balance for the client to use on future purchases'
- type: number
- format: float
- example: '100.00'
- readOnly: true
- last_login:
- description: "The timestamp of the client's last login"
- type: number
- format: integer
- example: '1628686031'
- readOnly: true
- created_at:
- description: 'The timestamp when the client was created'
- type: number
- format: integer
- example: '1617629031'
- readOnly: true
- updated_at:
- description: 'The timestamp when the client was last updated'
- type: number
- format: integer
- example: '1628445631'
- readOnly: true
- group_settings_id:
- description: 'The group settings assigned to the client'
- type: string
- example: Opnel5aKBz
- routing_id:
- description: 'The routing address id for e-invoicing for this client'
- type: string
- example: Opnel5aKBz3489-dfkiu-2239-sdsd
- is_tax_exempt:
- description: 'Flag which defines if the client is exempt from taxes'
- type: boolean
- example: false
- has_valid_vat_number:
- description: 'Flag which defines if the client has a valid VAT number'
- type: boolean
- example: false
- readOnly: true
- payment_balance:
- description: 'Defines the payment balance the client has on file (pre payments / over payments / unapplied amounts)'
- type: number
- example: 100
- readOnly: true
- settings:
- $ref: '#/components/schemas/ClientSettings'
- type: object
- PaymentTerm:
- properties:
- num_days:
- description: 'The payment term length in days'
- type: integer
- example: '1'
- name:
- description: 'The payment term length in string format'
- type: string
- example: 'NET 1'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- type: object
- Product:
- type: object
- properties:
- id:
- type: string
- description: 'The hashed product ID.'
- example: eP01N
- readOnly: true
- user_id:
- type: string
- description: 'The hashed ID of the user that created this product.'
- example: n30m4
- readOnly: true
- assigned_user_id:
- type: string
- description: 'The hashed ID of the user assigned to this product.'
- example: pR0j3
- project_id:
- type: string
- description: 'The hashed ID of the project that this product is associated with.'
- example: pR0j3
- vendor_id:
- type: string
- description: 'The hashed ID of the vendor that this product is associated with.'
- example: pR0j3
- custom_value1:
- type: string
- description: 'Custom value field 1.'
- example: 'Custom value 1'
- custom_value2:
- type: string
- description: 'Custom value field 2.'
- example: 'Custom value 2'
- custom_value3:
- type: string
- description: 'Custom value field 3.'
- example: 'Custom value 3'
- custom_value4:
- type: string
- description: 'Custom value field 4.'
- example: 'Custom value 4'
- product_key:
- type: string
- description: 'The product key.'
- example: '1234'
- notes:
- type: string
- description: 'Notes about the product.'
- example: 'These are some notes about the product.'
- cost:
- type: number
- format: double
- description: 'The cost of the product. (Your purchase price for this product)'
- example: 10.0
- price:
- type: number
- format: double
- description: 'The price of the product that you are charging.'
- example: 20.0
- quantity:
- type: number
- format: double
- description: 'The quantity of the product. (used as a default)'
- example: 5.0
- tax_name1:
- type: string
- description: 'The name of tax 1.'
- example: 'Tax 1'
- tax_rate1:
- type: number
- format: double
- description: 'The rate of tax 1.'
- example: 10.0
- tax_name2:
- type: string
- description: 'The name of tax 2.'
- example: 'Tax 2'
- tax_rate2:
- type: number
- format: double
- description: 'The rate of tax 2.'
- example: 5.0
- tax_name3:
- type: string
- description: 'The name of tax 3.'
- example: 'Tax 3'
- tax_rate3:
- type: number
- format: double
- description: 'The rate of tax 3.'
- example: 0.0
- archived_at:
- type: integer
- format: timestamp
- description: 'The timestamp when the product was archived.'
- example: '2022-03-18T15:00:00Z'
- readOnly: true
- created_at:
- type: integer
- format: timestamp
- description: 'The timestamp when the product was created.'
- example: '2022-03-18T15:00:00Z'
- readOnly: true
- updated_at:
- description: Timestamp
- type: integer
- format: timestamp
- example: '2022-03-18T12:34:56.789Z'
- readOnly: true
- is_deleted:
- type: boolean
- description: 'Boolean flag determining if the product has been deleted'
- example: false
- readOnly: true
- in_stock_quantity:
- type: integer
- format: int32
- description: The quantity of the product that is currently in stock
- default: 0
- stock_notification:
- type: boolean
- description: Indicates whether stock notifications are enabled for this product
- default: true
- stock_notification_threshold:
- type: integer
- format: int32
- description: The minimum quantity threshold for which stock notifications will be triggered
- default: 0
- max_quantity:
- type: integer
- format: int32
- description: The maximum quantity that can be ordered for this product
- product_image:
- type: string
- description: The URL of the product image
- format: uri-reference
- tax_id:
- type: string
- default: '1'
- description: |
- The tax category id for this product.'
-
- The following constants are available (default = '1')
-
- ```
- PRODUCT_TYPE_PHYSICAL = '1'
- PRODUCT_TYPE_SERVICE = '2'
- PRODUCT_TYPE_DIGITAL = '3'
- PRODUCT_TYPE_SHIPPING = '4'
- PRODUCT_TYPE_EXEMPT = '5'
- PRODUCT_TYPE_REDUCED_TAX = '6'
- PRODUCT_TYPE_OVERRIDE_TAX = '7'
- PRODUCT_TYPE_ZERO_RATED = '8'
- PRODUCT_TYPE_REVERSE_TAX = '9'
- ```
- example: '1'
-
- Meta:
- properties:
- pagination:
- $ref: '#/components/schemas/Pagination'
- Pagination:
- type: object
- properties:
- total:
- type: integer
- description: 'The total number of items'
- example: 1
- readOnly: true
- count:
- type: integer
- description: 'The number of items per page'
- example: 1
- readOnly: true
- per_page:
- type: integer
- description: 'The number of items per page'
- example: 1
- readOnly: true
- current_page:
- type: integer
- description: 'The current page number'
- example: 1
- readOnly: true
- total_pages:
- type: integer
- description: 'The total number of pages'
- example: 1
- readOnly: true
- links:
- type: object
- description: 'The pagination links'
- readOnly: true
- ClientContactRequest:
- properties:
- id:
- description: 'The hashed if of the contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the contact'
- type: string
- example: John
- last_name:
- description: 'The last name of the contact'
- type: string
- example: Doe
- phone:
- description: 'The phone number of the contact'
- type: string
- example: 555-152-4524
- custom_value1:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value2:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value3:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A Custom field value'
- type: string
- example: ''
- email:
- description: 'The email of the contact'
- type: string
- example: ''
- password:
- description: 'The hashed password of the contact'
- type: string
- example: '*****'
- send_email:
- description: 'Boolean value determines is this contact should receive emails'
- type: boolean
- example: true
- type: object
Design:
properties:
id:
@@ -19395,1521 +18746,6 @@ components:
format: integer
example: '134341234234'
type: object
- Vendor:
- properties:
- id:
- description: 'The hashed id of the vendor. This is a unique identifier for the vendor.'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The hashed id of the user who created the vendor. This is a unique identifier for the user.'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The hashed id of the assigned user to this vendor. This is a unique identifier for the user.'
- type: string
- example: Opnel5aKBz
- contacts:
- type: array
- items:
- $ref: '#/components/schemas/VendorContact'
- description: 'An array of contacts associated with the vendor.'
- name:
- description: 'The name of the vendor.'
- type: string
- example: 'Harry cafe de wheels'
- classification:
- description: 'The classification of the vendor.'
- type: string
- example: 'individual'
- website:
- description: 'The website of the vendor.'
- type: string
- example: www.harry.com
- private_notes:
- description: 'The private notes of the vendor. These notes are only visible to users with appropriate permissions.'
- type: string
- example: 'Shhh, do not tell the vendor'
- industry_id:
- description: 'The industry id of the vendor. This is a unique identifier for the industry.'
- type: string
- example: '1'
- size_id:
- description: 'The size id of the vendor. This is a unique identifier for the size of the vendor.'
- type: string
- example: ''
- address1:
- description: 'The first line of the vendor''s address.'
- type: string
- example: ''
- address2:
- description: 'The second line of the vendor''s address.'
- type: string
- example: ''
- city:
- description: 'The city of the vendor''s address.'
- type: string
- example: ''
- state:
- description: 'The state of the vendor''s address.'
- type: string
- example: ''
- postal_code:
- description: 'The postal code of the vendor''s address.'
- type: string
- example: ''
- phone:
- description: 'The phone number of the vendor.'
- type: string
- example: 555-3434-3434
- country_id:
- description: 'The country id of the vendor. This is a unique identifier for the country.'
- type: string
- example: ''
- currency_id:
- description: 'The currency id of the vendor. This is a unique identifier for the currency.'
- type: string
- example: '4'
- custom_value1:
- description: 'The value of the first custom field for the vendor.'
- type: string
- example: ''
- custom_value2:
- description: 'The value of the second custom field for the vendor.'
- type: string
- example: ''
- custom_value3:
- description: 'The value of the third custom field for the vendor.'
- type: string
- example: ''
- custom_value4:
- description: 'The value of the fourth custom field for the vendor.'
- type: string
- example: ''
- vat_number:
- description: 'The VAT number of the vendor.'
- type: string
- example: ''
- id_number:
- description: 'The ID number of the vendor.'
- type: string
- example: ''
- number:
- description: 'The number of the vendor'
- type: string
- example: '11234'
- is_deleted:
- description: 'Boolean flag determining if the vendor has been deleted'
- type: boolean
- example: true
- language_id:
- description: 'The language id of the vendor. This is a unique identifier for the language.'
- type: string
- example: '1'
- vendor_hash:
- description: 'The vendor hash of the vendor. This is a unique identifier for the vendor.'
- type: string
- example: 'aaa-sss-www'
- readOnly: true
- transaction_name:
- description: 'The transaction name of the vendor.'
- type: string
- example: 'aaa-sss-www'
- last_login:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- display_name:
- description: 'The display name of the vendor.'
- type: string
- example: 'Bob the vendor'
- readOnly: true
- type: object
- BTRules:
- properties:
- data_key:
- description: 'The key to search'
- type: string
- example: 'description,amount'
- operator:
- description: 'The operator flag of the search'
- type: string
- example: '>'
- value:
- description: 'The value to search for'
- type: string
- example: bob
- type: object
- ClientRequest:
- required:
- - contacts
- - country_id
- properties:
- id:
- description: 'The unique identifier of the client'
- type: string
- example: Opnel5aKBz
- readOnly: true
- contacts:
- type: array
- description: 'A list of contacts associated with the client'
- items:
- $ref: '#/components/schemas/ClientContactRequest'
- name:
- description: 'The name of the client company or organization'
- type: string
- example: "Jim's Housekeeping"
- website:
- description: 'The website URL of the client company or organization'
- type: string
- example: 'https://www.jims-housekeeping.com'
- private_notes:
- description: 'Notes that are only visible to the user who created the client'
- type: string
- example: 'Client prefers email communication over phone calls'
- industry_id:
- description: 'The unique identifier of the industry the client operates in'
- type: number
- example: '5'
- size_id:
- description: 'The unique identifier for the size category of the client company or organization'
- type: number
- example: '2'
- address1:
- description: "First line of the client's address"
- type: string
- example: '123 Main St'
- address2:
- description: "Second line of the client's address, if needed"
- type: string
- example: 'Apt 4B'
- city:
- description: 'The city the client is located in'
- type: string
- example: 'Beverly Hills'
- state:
- description: 'The state, province, or locality the client is located in'
- type: string
- example: 'California'
- postal_code:
- description: 'The postal code or ZIP code of the client'
- type: string
- example: '90210'
- phone:
- description: "The client's phone number"
- type: string
- example: '555-3434-3434'
- country_id:
- description: "The unique identifier of the client's country"
- type: number
- format: integer
- example: '1'
- custom_value1:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Preferred contact: Email'
- custom_value2:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Account manager: John Doe'
- custom_value3:
- description: 'A custom field for storing additional information'
- type: string
- example: 'VIP client: Yes'
- custom_value4:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Annual contract value: $50,000'
- vat_number:
- description: "The client's VAT (Value Added Tax) number, if applicable"
- type: string
- example: 'VAT123456'
- id_number:
- description: 'A unique identification number for the client, such as a tax ID or business registration number'
- type: string
- number:
- description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
- type: string
- example: 'CL-0001'
- shipping_address1:
- description: "First line of the client's shipping address"
- type: string
- example: '5 Wallaby Way'
- shipping_address2:
- description: "Second line of the client's shipping address, if needed"
- type: string
- example: 'Suite 5'
- shipping_city:
- description: "The city of the client's shipping address"
- type: string
- example: 'Perth'
- shipping_state:
- description: "The state, province, or locality of the client's shipping address"
- type: string
- example: 'Western Australia'
- shipping_postal_code:
- description: "The postal code or ZIP code of the client's shipping address"
- type: string
- example: '6110'
- shipping_country_id:
- description: "The unique identifier of the country for the client's shipping address"
- type: number
- format: integer
- example: '4'
- is_deleted:
- description: 'A boolean value indicating whether the client has been deleted or not'
- type: boolean
- example: false
- readOnly: true
- group_settings_id:
- description: 'The group settings assigned to the client'
- type: string
- example: Opnel5aKBz
- routing_id:
- description: 'The routing address id for e-invoicing for this client'
- type: string
- example: Opnel5aKBz3489-dfkiu-2239-sdsd
- is_tax_exempt:
- description: 'Flag which defines if the client is exempt from taxes'
- type: boolean
- example: false
- has_valid_vat_number:
- description: 'Flag which defines if the client has a valid VAT number'
- type: boolean
- example: false
- readOnly: true
- classification:
- description: 'The classification of the client'
- type: string
- example: 'individual'
- settings:
- $ref: '#/components/schemas/ClientSettings'
- type: object
- BankTransaction:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: AS3df3A
- transaction_id:
- description: 'The id of the transaction rule'
- type: integer
- example: 343434
- amount:
- description: 'The transaction amount'
- type: number
- example: 10
- currency_id:
- description: 'The currency ID of the currency'
- type: string
- example: '1'
- account_type:
- description: 'The account type'
- type: string
- example: creditCard
- description:
- description: 'The description of the transaction'
- type: string
- example: 'Potato purchases for kevin'
- category_id:
- description: 'The category id'
- type: integer
- example: 1
- category_type:
- description: 'The category description'
- type: string
- example: Expenses
- base_type:
- description: 'Either CREDIT or DEBIT'
- type: string
- example: CREDIT
- date:
- description: 'The date of the transaction'
- type: string
- example: '2022-09-01'
- bank_account_id:
- description: 'The ID number of the bank account'
- type: integer
- example: '1'
- type: object
-
- FeesAndLimits:
- properties:
- min_limit:
- description: 'The minimum amount accepted for this gateway'
- type: string
- example: '2'
- max_limit:
- description: 'The maximum amount accepted for this gateway'
- type: string
- example: '2'
- fee_amount:
- description: 'The gateway fee amount'
- type: number
- format: float
- example: '2.0'
- fee_percent:
- description: 'The gateway fee percentage'
- type: number
- format: float
- example: '2.0'
- fee_tax_name1:
- description: 'Fee tax name'
- type: string
- example: GST
- fee_tax_name2:
- description: 'Fee tax name'
- type: string
- example: VAT
- fee_tax_name3:
- description: 'Fee tax name'
- type: string
- example: 'CA Sales Tax'
- fee_tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.0'
- fee_tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '17.5'
- fee_tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '25.0'
- fee_cap:
- description: 'If set the fee amount will be no higher than this amount'
- type: number
- format: float
- example: '2.0'
- adjust_fee_percent:
- description: 'Adjusts the fee to match the exact gateway fee.'
- type: boolean
- example: true
- type: object
- VendorContact:
- properties:
- id:
- description: 'The hashed id of the vendor contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The hashed id of the user id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- vendor_id:
- description: 'The hashed id of the vendor'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the contact'
- type: string
- example: Harry
- last_name:
- description: 'The last name of the contact'
- type: string
- example: Windsor
- contact_key:
- description: 'A unique identifier for the contact'
- type: string
- example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
- readOnly: true
- confirmation_code:
- description: 'The confirmation code used to authenticate the contacts email address'
- type: string
- example: 333-sdjkh34gbasd
- readOnly: true
- phone:
- description: 'The contacts phone number'
- type: string
- example: 555-123-1234
- custom_value1:
- description: 'A custom value'
- type: string
- example: '2022-10-10'
- custom_value2:
- description: 'A custom value'
- type: string
- example: $1000
- custom_value3:
- description: 'A custom value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom value'
- type: string
- example: ''
- email:
- description: 'The contact email address'
- type: string
- example: harry@windsor.com
- email_verified_at:
- description: 'The date which the contact confirmed their email'
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- password:
- description: 'The hashed password of the contact'
- type: string
- example: '*****'
- is_primary:
- description: 'Boolean flag determining if the contact is the primary contact for the vendor'
- type: boolean
- example: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- deleted_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- type: object
- InvoiceInvitationRequest:
- required:
- - client_contact_id
- properties:
- id:
- description: 'The entity invitation hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- client_contact_id:
- description: 'The client contact hashed id'
- type: string
- example: Opnel5aKBz
- key:
- description: 'The invitation key'
- type: string
- example: Opnel5aKBz4343343566236gvbb
- readOnly: true
- link:
- description: 'The invitation link'
- type: string
- example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
- readOnly: true
- sent_date:
- description: 'The invitation sent date'
- type: string
- format: date-time
- readOnly: true
- viewed_date:
- description: 'The invitation viewed date'
- type: string
- format: date-time
- readOnly: true
- opened_date:
- description: 'The invitation opened date'
- type: string
- format: date-time
- readOnly: true
- updated_at:
- description: 'Timestamp'
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- archived_at:
- description: 'Timestamp'
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- email_error:
- description: 'The email error'
- type: string
- example: 'The email error'
- readOnly: true
- email_status:
- description: 'The email status'
- type: string
- readOnly: true
-
- Paymentable:
- properties:
- id:
- description: 'The paymentable hashed id'
- type: string
- example: AS3df3A
- invoice_id:
- description: 'The invoice hashed id'
- type: string
- example: AS3df3A
- credit_id:
- description: 'The credit hashed id'
- type: string
- example: AS3df3A
- refunded:
- description: 'The amount that has been refunded for this payment'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The amount that has been applied to the payment'
- type: number
- format: float
- example: '10.00'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- Company:
- properties:
- id:
- description: "The unique hashed identifier for the company"
- type: string
- example: WJxbojagwO
- size_id:
- description: "The unique identifier representing the company's size category"
- type: string
- example: '2'
- industry_id:
- description: "The unique identifier representing the company's industry category"
- type: string
- example: '5'
- slack_webhook_url:
- description: "The URL for the company's Slack webhook notifications"
- type: string
- example: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
- google_analytics_key:
- description: "The company's Google Analytics tracking ID"
- type: string
- example: 'UA-123456789-1'
- portal_mode:
- description: "The mode determining how client-facing URLs are structured (e.g., subdomain, domain, or iframe)"
- type: string
- example: subdomain
- subdomain:
- description: "The subdomain prefix for the company's domain (e.g., 'acme' in acme.domain.com)"
- type: string
- example: acme
- portal_domain:
- description: "The fully qualified domain used for client-facing URLs"
- type: string
- example: 'https://subdomain.invoicing.co'
- enabled_tax_rates:
- description: "The number of tax rates used per entity"
- type: integer
- example: '2'
- fill_products:
- description: "A flag determining whether to auto-fill product descriptions based on the product key"
- type: boolean
- example: true
- convert_products:
- description: "A flag determining whether to convert products between different types or units"
- type: boolean
- example: true
- update_products:
- description: "A flag determining whether to update product descriptions when the description changes"
- type: boolean
- example: true
- show_product_details:
- description: "A flag determining whether to display product details in the user interface"
- type: boolean
- example: true
- show_product_cost:
- description: "A flag determining whether to display product cost is shown in the user interface"
- type: boolean
- example: true
- custom_fields:
- description: "A mapping of custom fields for various objects within the company"
- type: object
- enable_product_cost:
- description: "A flag determining whether to show or hide the product cost field in the user interface"
- type: boolean
- example: true
- enable_product_quantity:
- description: "A flag determining whether to show or hide the product quantity field in the user interface"
- type: boolean
- example: true
- default_quantity:
- description: "A flag determining whether to use a default quantity for products"
- type: boolean
- example: true
- custom_surcharge_taxes1:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the first custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes2:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the second custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes3:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the third custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes4:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the fourth custom"
- logo:
- description: "The company logo file in binary format"
- type: string
- format: binary
- example: logo.png
- company_key:
- description: "The static company key hash used to identify the Company"
- readOnly: true
- type: string
- example: "Vnb14bRlwiFjc5ckte6cfbygTRkn5IMQ"
- client_can_register:
- description: "A flag determining whether clients can register for the client portal"
- type: boolean
- example: true
- enabled_modules:
- type: integer
- description: |
- Bitmask representation of the modules that are enabled in the application
-
- ```
- self::ENTITY_RECURRING_INVOICE => 1,
- self::ENTITY_CREDIT => 2,
- self::ENTITY_QUOTE => 4,
- self::ENTITY_TASK => 8,
- self::ENTITY_EXPENSE => 16,
- self::ENTITY_PROJECT => 32,
- self::ENTITY_VENDOR => 64,
- self::ENTITY_TICKET => 128,
- self::ENTITY_PROPOSAL => 256,
- self::ENTITY_RECURRING_EXPENSE => 512,
- self::ENTITY_RECURRING_TASK => 1024,
- self::ENTITY_RECURRING_QUOTE => 2048,
- ```
-
- The default per_page value is 20.
-
- example: 2048
- db:
- readOnly: true
- type: string
- example: 'db-ninja-01'
- first_day_of_week:
- description: "The first day of the week for the company"
- type: string
- example: '1'
- first_month_of_year:
- description: "The first month for the company financial year"
- type: string
- example: '1'
- enabled_item_tax_rates:
- description: "The number of tax rates used per item"
- type: integer
- example: 2
- is_large:
- description: "A flag determining whether the company is considered large"
- type: boolean
- example: true
- default_auto_bill:
- type: string
- example: 'always'
- description: |
- A flag determining whether to auto-bill clients by default
-
- values:
-
- - always - Always auto bill
- - disabled - Never auto bill
- - optin - Allow the client to select their auto bill status with the default being disabled
- - optout -Allow the client to select their auto bill status with the default being enabled
- mark_expenses_invoiceable:
- description: "A flag determining whether to mark expenses as invoiceable by default"
- type: boolean
- example: true
- mark_expenses_paid:
- description: "A flag determining whether to mark expenses as paid by default"
- type: boolean
- example: true
- invoice_expense_documents:
- description: "A flag determining whether to include expense documents on invoices by default"
- type: boolean
- example: true
- auto_start_tasks:
- description: "A flag determining whether to auto-start tasks by default"
- type: boolean
- example: true
- invoice_task_timelog:
- description: "A flag determining whether to include task time logs on invoices by default"
- type: boolean
- example: true
- invoice_task_documents:
- description: "A flag determining whether to include task documents on invoices by default"
- type: boolean
- example: true
- show_tasks_table:
- description: "A flag determining whether to show the tasks table on invoices by default"
- type: boolean
- example: true
- is_disabled:
- description: "A flag determining whether the company is disabled"
- type: boolean
- example: true
- default_task_is_date_based:
- description: "A flag determining whether to default tasks to be date-based"
- type: boolean
- example: true
- enable_product_discount:
- description: "A flag determining whether to show or hide the product discount field in the user interface"
- type: boolean
- example: true
- calculate_expense_tax_by_amount:
- description: "A flag determining whether to calculate expense taxes by amount"
- type: boolean
- example: true
- expense_inclusive_taxes:
- description: "A flag determining whether to include taxes in the expense amount"
- type: boolean
- example: true
- session_timeout:
- description: "The session timeout for the company"
- type: integer
- example: 60
- oauth_password_required:
- description: "A flag determining whether to require a password for `dangerous` actions when using OAuth"
- type: boolean
- example: true
- invoice_task_datelog:
- description: "A flag determining whether to include task date logs on invoices by default"
- type: boolean
- example: true
- default_password_timeout:
- description: "The default password timeout for the company"
- type: integer
- example: 60
- show_task_end_date:
- description: "A flag determining whether to show the task end date on invoices by default"
- type: boolean
- example: true
- markdown_enabled:
- description: "A flag determining whether markdown is enabled for the company"
- type: boolean
- example: true
- report_include_drafts:
- description: "A flag determining whether to include draft invoices in reports"
- type: boolean
- example: true
- client_registration_fields:
- description: "The client registration fields for the company"
- type: object
- stop_on_unpaid_recurring:
- description: "A flag determining whether to stop recurring invoices when they are unpaid"
- type: boolean
- example: true
- use_quote_terms_on_conversion:
- description: "A flag determining whether to use quote terms on conversion to an invoice"
- type: boolean
- example: true
- enable_applying_payments:
- description: "A flag determining whether to enable applying payments to invoices"
- type: boolean
- example: true
- track_inventory:
- description: "A flag determining whether to track inventory for the company"
- type: boolean
- example: true
- inventory_notification_threshold:
- description: "The inventory notification threshold for the company"
- type: integer
- example: 60
- stock_notification:
- description: "A flag determining whether to send stock notifications for the company"
- type: boolean
- example: true
- matomo_url:
- description: "The Matomo URL for the company"
- type: string
- example: 'https://matomo.example.com'
- matomo_id:
- description: "The Matomo ID for the company"
- type: string
- example: '1'
- enabled_expense_tax_rates:
- description: "The number of tax rates used per expense"
- type: integer
- example: 2
- invoice_task_project:
- description: "A flag determining whether to include the project on invoices by default"
- type: boolean
- example: true
- report_include_deleted:
- description: "A flag determining whether to include deleted invoices in reports"
- type: boolean
- example: true
- invoice_task_lock:
- description: "A flag determining whether to lock tasks when invoiced"
- type: boolean
- example: true
- convert_payment_currency:
- description: "A flag determining whether to convert the payment currency"
- type: boolean
- example: true
- convert_expense_currency:
- description: "A flag determining whether to convert the expense currency"
- type: boolean
- example: true
- notify_vendor_when_paid:
- description: "A flag determining whether to notify the vendor when an expense is paid"
- type: boolean
- example: true
- invoice_task_hours:
- description: "A flag determining whether to include the task hours on invoices by default"
- type: boolean
- example: true
- calculate_taxes:
- description: "A flag determining whether to calculate taxes for the company"
- type: boolean
- example: true
- tax_data:
- description: "The tax data for the company"
- type: object
- e_invoice_certificate:
- description: "The e-invoice certificate for the company"
- type: string
- example: '-----BEGIN CERTIFICATE-----'
- e_invoice_certificate_passphrase:
- description: "The e-invoice certificate passphrase for the company"
- type: string
- example: 'secret'
- origin_tax_data:
- description: "The origin tax data for the company"
- type: object
- invoice_task_project_header:
- description: "A flag determining whether to include the project header on invoices by default"
- type: boolean
- example: true
- invoice_task_item_description:
- description: "A flag determining whether to include the item description on invoices by default"
- type: boolean
- example: true
-
- settings:
- $ref: '#/components/schemas/CompanySettings'
- type: object
- ProductRequest:
- type: object
- properties:
- id:
- type: string
- description: 'The hashed product ID.'
- example: eP01N
- readOnly: true
- assigned_user_id:
- type: string
- description: 'The hashed ID of the user assigned to this product.'
- example: pR0j3
-
- project_id:
- type: string
- description: 'The hashed ID of the project that this product is associated with.'
- example: pR0j3
-
- vendor_id:
- type: string
- description: 'The hashed ID of the vendor that this product is associated with.'
- example: pR0j3
-
- custom_value1:
- type: string
- description: 'Custom value field 1.'
- example: 'Custom value 1'
-
- custom_value2:
- type: string
- description: 'Custom value field 2.'
- example: 'Custom value 2'
-
- custom_value3:
- type: string
- description: 'Custom value field 3.'
- example: 'Custom value 3'
-
- custom_value4:
- type: string
- description: 'Custom value field 4.'
- example: 'Custom value 4'
-
- product_key:
- type: string
- description: 'The product key.'
- example: '1234'
-
- notes:
- type: string
- description: 'Notes about the product.'
- example: 'These are some notes about the product.'
-
- cost:
- type: number
- format: double
- description: 'The cost of the product.'
- example: 10.0
-
- price:
- type: number
- format: double
- description: 'The price of the product.'
- example: 20.0
-
- quantity:
- type: number
- format: double
- description: 'The quantity of the product.'
- example: 5.0
-
- default: 1
- tax_name1:
- type: string
- description: 'The name of tax 1.'
- example: 'Tax 1'
-
- tax_rate1:
- type: number
- format: double
- description: 'The rate of tax 1.'
- example: 10.0
-
- tax_name2:
- type: string
- description: 'The name of tax 2.'
- example: 'Tax 2'
-
- tax_rate2:
- type: number
- format: double
- description: 'The rate of tax 2.'
- example: 5.0
-
- tax_name3:
- type: string
- description: 'The name of tax 3.'
- example: 'Tax 3'
-
- tax_rate3:
- type: number
- format: double
- description: 'The rate of tax 3.'
- example: 0.0
-
- in_stock_quantity:
- type: integer
- format: int32
- description: |
- The quantity of the product that is currently in stock.
-
- **note** this field is not mutable without passing an extra query parameter which will allow modification of this value.
-
- The query parameter ?update_in_stock_quantity=true **MUST** be passed if you wish to update this value manually.
-
- default: 0
-
- stock_notification:
- type: boolean
- description: Indicates whether stock notifications are enabled for this product
- default: true
-
- stock_notification_threshold:
- type: integer
- format: int32
- description: The minimum quantity threshold for which stock notifications will be triggered
- default: 0
-
- max_quantity:
- type: integer
- format: int32
- description: The maximum quantity that can be ordered for this product
-
- product_image:
- type: string
- description: The URL of the product image
- format: uri-reference
-
- tax_id:
- type: string
- default: '1'
-
- description: |
- The tax category id for this product.'
-
- The following constants are available (default = '1')
-
- ```
- PRODUCT_TYPE_PHYSICAL = '1'
- PRODUCT_TYPE_SERVICE = '2'
- PRODUCT_TYPE_DIGITAL = '3'
- PRODUCT_TYPE_SHIPPING = '4'
- PRODUCT_TYPE_EXEMPT = '5'
- PRODUCT_TYPE_REDUCED_TAX = '6'
- PRODUCT_TYPE_OVERRIDE_TAX = '7'
- PRODUCT_TYPE_ZERO_RATED = '8'
- PRODUCT_TYPE_REVERSE_TAX = '9'
- ```
- example: '1'
-
- RecurringInvoice:
- properties:
- id:
- description: 'The hashed id of the recurring invoice'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- frequency_id:
- description: 'The recurring invoice frequency'
- type: number
- example: '4'
- remaining_cycles:
- description: 'The number of invoices left to be generated'
- type: number
- example: '4'
- number:
- description: 'The recurringinvoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this recurring invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- line_items:
- description: 'An array of objects which define the line items of the invoice'
- type: object
- example: ''
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- settings:
- $ref: '#/components/schemas/CompanySettings'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- type: object
-
- BankIntegration:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: AS3df3A
- provider_bank_name:
- description: 'The providers bank name'
- type: string
- example: 'Chase Bank'
- bank_account_id:
- description: 'The bank account id'
- type: integer
- example: '1233434'
- bank_account_name:
- description: 'The name of the account'
- type: string
- example: 'My Checking Acc'
- bank_account_number:
- description: 'The account number'
- type: string
- example: '111 234 2332'
- bank_account_status:
- description: 'The status of the bank account'
- type: string
- example: ACTIVE
- bank_account_type:
- description: 'The type of account'
- type: string
- example: CREDITCARD
- balance:
- description: 'The current bank balance if available'
- type: number
- example: '1000000'
- currency:
- description: 'iso_3166_3 code'
- type: string
- example: USD
- type: object
- Expense:
- properties:
- id:
- description: 'The expense hashed id'
- type: string
- example: 'Opnel5aKBz'
- user_id:
- description: 'The user hashed id'
- type: string
- example: 'Opnel5aKBz'
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: 'Opnel5aKBz'
- project_id:
- description: 'The associated project_id'
- type: string
- example: 'Opnel5aKBz'
- client_id:
- description: 'The client hashed id'
- type: string
- example: 'Opnel5aKBz'
- invoice_id:
- description: 'The related invoice hashed id'
- type: string
- example: 'Opnel5aKBz'
- bank_id:
- description: 'The bank id related to this expense'
- type: string
- example: ''
- invoice_currency_id:
- description: 'The currency id of the related invoice'
- type: string
- example: '1'
- currency_id:
- description: 'The currency id of the expense'
- type: string
- example: '2'
- invoice_category_id:
- description: 'The invoice category id'
- type: string
- example: 'Opnel5aKBz'
- payment_type_id:
- description: 'The payment type id'
- type: string
- example: ''
- recurring_expense_id:
- description: 'The related recurring expense this expense was created from'
- type: string
- example: 'Opnel5aKBz'
- private_notes:
- description: 'The private notes of the expense'
- type: string
- example: ''
- public_notes:
- description: 'The public notes of the expense'
- type: string
- example: ''
- transaction_reference:
- description: 'The transaction references of the expense'
- type: string
- example: ''
- transcation_id:
- description: 'The transaction id of the expense'
- type: string
- example: ''
- custom_value1:
- description: 'A custom value'
- type: string
- example: ''
- custom_value2:
- description: 'A custom value'
- type: string
- example: ''
- custom_value3:
- description: 'A custom value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom value'
- type: string
- example: ''
- tax_amount:
- description: 'The tax amount'
- type: number
- example: 10.00
- tax_name1:
- description: 'Tax Name 1'
- type: string
- example: 'GST'
- tax_name2:
- description: 'Tax Name 2'
- type: string
- example: 'VAT'
- tax_name3:
- description: 'Tax Name 3'
- type: string
- example: 'IVA'
- tax_rate1:
- description: 'Tax rate 1'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'Tax rate 2'
- type: number
- format: float
- example: '10.00'
- tax_rate3:
- description: 'Tax rate 3'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The total expense amont'
- type: number
- format: float
- example: '10.00'
- foreign_amount:
- description: 'The total foreign amount of the expense'
- type: number
- format: float
- example: '10.00'
- exchange_rate:
- description: 'The exchange rate at the time of the expense'
- type: number
- format: float
- example: '0.80'
- date:
- description: 'The expense date format Y-m-d'
- type: string
- example: '2022-12-01'
- payment_date:
- description: 'The date of payment for the expense, format Y-m-d'
- type: string
- example: '2022-12-01'
- should_be_invoiced:
- description: 'Flag whether the expense should be invoiced'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean determining whether the expense has been deleted'
- type: boolean
- example: true
- invoice_documents:
- description: 'Passing the expense documents over to the invoice'
- type: boolean
- example: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
ClientSettings:
required:
- currency_id
@@ -21744,221 +19580,2407 @@ components:
type: string
example: 'Bob Smith'
type: object
- Quote:
+ BTRules:
+ properties:
+ data_key:
+ description: 'The key to search'
+ type: string
+ example: 'description,amount'
+ operator:
+ description: 'The operator flag of the search'
+ type: string
+ example: '>'
+ value:
+ description: 'The value to search for'
+ type: string
+ example: bob
+ type: object
+ Account:
properties:
id:
- description: 'The unique hashed identifier for the quote'
+ description: 'The account hashed id'
+ type: string
+ example: AS3df3A
+ account_sms_verified:
+ description: 'Boolean flag if the account has been verified by sms'
+ type: string
+ example: true
+ type: object
+ Invoice:
+ properties:
+ id:
+ description: 'The invoice hashed id'
type: string
example: Opnel5aKBz
+ readOnly: true
user_id:
- description: 'The unique hashed identifier for the user who created the quote'
+ description: 'The user hashed id'
type: string
- example: ''
+ example: Opnel5aKBz
+ readOnly: true
assigned_user_id:
- description: 'The unique hashed identifier for the user assigned to the quote'
+ description: 'The assigned user hashed id'
type: string
- example: ''
+ example: Opnel5aKBz
client_id:
- description: 'The unique hashed identifier for the client associated with the quote'
+ description: 'The client hashed id'
type: string
- example: ''
+ example: Opnel5aKBz
status_id:
- description: 'The status of the quote represented by a unique identifier'
+ description: 'The invoice status variable'
type: string
- example: ''
+ example: '4'
number:
- description: 'The unique alpha-numeric quote number for the quote per company'
+ description: 'The invoice number - is a unique alpha numeric number per invoice per company'
type: string
- example: QUOTE_101
+ example: INV_101
po_number:
- description: 'The purchase order number associated with the quote'
+ description: 'The purchase order associated with this invoice'
type: string
example: PO-1234
terms:
- description: 'The terms and conditions for the quote'
+ description: 'The invoice terms'
type: string
- example: 'These are some quote terms. Valid for 14 days.'
+ example: 'These are invoice terms'
public_notes:
- description: 'Publicly visible notes associated with the quote'
+ description: 'The public notes of the invoice'
type: string
- example: 'These are public notes which the client may see'
+ example: 'These are some public notes'
private_notes:
- description: 'Privately visible notes associated with the quote, not disclosed to the client'
+ description: 'The private notes of the invoice'
type: string
- example: 'These are private notes, not to be disclosed to the client'
+ example: 'These are some private notes'
footer:
- description: 'The footer text of the quote'
+ description: 'The invoice footer notes'
type: string
- example: 'The text goes in the footer of the quote'
+ example: ''
custom_value1:
- description: 'First custom value field for additional information'
+ description: 'A custom field value'
type: string
- example: 'A custom value'
+ example: '2022-10-01'
custom_value2:
- description: 'Second custom value field for additional information'
+ description: 'A custom field value'
type: string
- example: 'A custom value'
+ example: 'Something custom'
custom_value3:
- description: 'Third custom value field for additional information'
+ description: 'A custom field value'
type: string
- example: 'A custom value'
+ example: ''
custom_value4:
- description: 'Fourth custom value field for additional information'
+ description: 'A custom field value'
type: string
- example: 'A custom value'
+ example: ''
tax_name1:
- description: 'The name of the first tax applied to the quote'
+ description: 'The tax name'
type: string
- example: GST
+ example: ''
tax_name2:
- description: 'The name of the second tax applied to the quote'
+ description: 'The tax name'
type: string
- example: VAT
+ example: ''
tax_rate1:
- description: 'The rate of the first tax applied to the quote'
+ description: 'The tax rate'
type: number
format: float
- example: 10.00
+ example: '10.00'
tax_rate2:
- description: 'The rate of the second tax applied to the quote'
+ description: 'The tax rate'
type: number
format: float
- example: 10.00
+ example: '10.00'
tax_name3:
- description: 'The name of the third tax applied to the quote'
+ description: 'The tax name'
type: string
example: ''
tax_rate3:
- description: 'The rate of the third tax applied to the quote'
+ description: 'The tax rate'
type: number
format: float
- example: 10.00
+ example: '10.00'
total_taxes:
- description: 'The total amount of taxes for the quote'
+ description: 'The total taxes for the invoice'
type: number
format: float
- example: 10.00
+ example: '10.00'
line_items:
type: array
- description: 'An array of objects which define the line items of the quote'
+ description: 'An array of objects which define the line items of the invoice'
items:
$ref: '#/components/schemas/InvoiceItem'
+ invitations:
+ type: array
+ description: 'An array of objects which define the invitations of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceInvitation'
amount:
- description: 'The total amount of the quote before taxes and discounts'
+ description: 'The invoice amount'
type: number
format: float
- example: 10.00
+ example: '10.00'
balance:
- description: 'The balance due for the quote after accounting for payments'
+ description: 'The invoice balance'
type: number
format: float
- example: 10.00
+ example: '10.00'
paid_to_date:
- description: 'The total amount paid on the quote so far'
+ description: 'The amount paid on the invoice to date'
type: number
format: float
- example: 10.00
+ example: '10.00'
discount:
- description: 'The discount amount or percentage applied to the quote'
+ description: 'The invoice discount, can be an amount or a percentage'
type: number
format: float
- example: 10.00
+ example: '10.00'
partial:
- description: 'The partial or deposit amount for the quote'
+ description: 'The deposit/partial amount'
type: number
format: float
- example: 10.00
+ example: '10.00'
is_amount_discount:
- description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
+ description: 'Flag determining if the discount is an amount or a percentage'
type: boolean
example: true
is_deleted:
- description: 'Boolean flag indicating if the quote has been deleted'
+ description: 'Defines if the invoice has been deleted'
type: boolean
- example: false
+ example: true
uses_inclusive_taxes:
- description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
type: boolean
example: true
date:
- description: 'The date the quote was created'
+ description: 'The Invoice Date'
type: string
format: date
example: '1994-07-30'
last_sent_date:
- description: 'The last date the quote was sent to the client'
+ description: 'The last date the invoice was sent out'
type: string
format: date
example: '1994-07-30'
next_send_date:
- description: 'The next scheduled date for sending a reminder for the quote'
+ description: 'The Next date for a reminder to be sent'
type: string
format: date
example: '1994-07-30'
partial_due_date:
- description: 'The due date for the partial or deposit amount'
+ description: 'The due date for the deposit/partial amount'
type: string
format: date
example: '1994-07-30'
due_date:
- description: 'The due date for the total amount of the quote'
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ project_id:
+ description: 'The project associated with this invoice'
+ type: string
+ example: Opnel5aKBz
+ auto_bill_tries:
+ description: 'The number of times the invoice has attempted to be auto billed'
+ type: integer
+ example: '1'
+ readOnly: true
+ auto_bill_enabled:
+ description: 'Boolean flag determining if the invoice is set to auto bill'
+ type: boolean
+ example: true
+ subscription_id:
+ description: 'The subscription associated with this invoice'
+ type: string
+ example: Opnel5aKBz
+
+ type: object
+ ClientRequest:
+ required:
+ - contacts
+ - country_id
+ properties:
+ id:
+ description: 'The unique identifier of the client'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ contacts:
+ type: array
+ description: 'A list of contacts associated with the client'
+ items:
+ $ref: '#/components/schemas/ClientContactRequest'
+ name:
+ description: 'The name of the client company or organization'
+ type: string
+ example: "Jim's Housekeeping"
+ website:
+ description: 'The website URL of the client company or organization'
+ type: string
+ example: 'https://www.jims-housekeeping.com'
+ private_notes:
+ description: 'Notes that are only visible to the user who created the client'
+ type: string
+ example: 'Client prefers email communication over phone calls'
+ industry_id:
+ description: 'The unique identifier of the industry the client operates in'
+ type: number
+ example: '5'
+ size_id:
+ description: 'The unique identifier for the size category of the client company or organization'
+ type: number
+ example: '2'
+ address1:
+ description: "First line of the client's address"
+ type: string
+ example: '123 Main St'
+ address2:
+ description: "Second line of the client's address, if needed"
+ type: string
+ example: 'Apt 4B'
+ city:
+ description: 'The city the client is located in'
+ type: string
+ example: 'Beverly Hills'
+ state:
+ description: 'The state, province, or locality the client is located in'
+ type: string
+ example: 'California'
+ postal_code:
+ description: 'The postal code or ZIP code of the client'
+ type: string
+ example: '90210'
+ phone:
+ description: "The client's phone number"
+ type: string
+ example: '555-3434-3434'
+ country_id:
+ description: "The unique identifier of the client's country"
+ type: number
+ format: integer
+ example: '1'
+ custom_value1:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Preferred contact: Email'
+ custom_value2:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Account manager: John Doe'
+ custom_value3:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'VIP client: Yes'
+ custom_value4:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Annual contract value: $50,000'
+ vat_number:
+ description: "The client's VAT (Value Added Tax) number, if applicable"
+ type: string
+ example: 'VAT123456'
+ id_number:
+ description: 'A unique identification number for the client, such as a tax ID or business registration number'
+ type: string
+ number:
+ description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
+ type: string
+ example: 'CL-0001'
+ shipping_address1:
+ description: "First line of the client's shipping address"
+ type: string
+ example: '5 Wallaby Way'
+ shipping_address2:
+ description: "Second line of the client's shipping address, if needed"
+ type: string
+ example: 'Suite 5'
+ shipping_city:
+ description: "The city of the client's shipping address"
+ type: string
+ example: 'Perth'
+ shipping_state:
+ description: "The state, province, or locality of the client's shipping address"
+ type: string
+ example: 'Western Australia'
+ shipping_postal_code:
+ description: "The postal code or ZIP code of the client's shipping address"
+ type: string
+ example: '6110'
+ shipping_country_id:
+ description: "The unique identifier of the country for the client's shipping address"
+ type: number
+ format: integer
+ example: '4'
+ is_deleted:
+ description: 'A boolean value indicating whether the client has been deleted or not'
+ type: boolean
+ example: false
+ readOnly: true
+ group_settings_id:
+ description: 'The group settings assigned to the client'
+ type: string
+ example: Opnel5aKBz
+ routing_id:
+ description: 'The routing address id for e-invoicing for this client'
+ type: string
+ example: Opnel5aKBz3489-dfkiu-2239-sdsd
+ is_tax_exempt:
+ description: 'Flag which defines if the client is exempt from taxes'
+ type: boolean
+ example: false
+ has_valid_vat_number:
+ description: 'Flag which defines if the client has a valid VAT number'
+ type: boolean
+ example: false
+ readOnly: true
+ classification:
+ description: 'The classification of the client'
+ type: string
+ example: 'individual'
+ settings:
+ $ref: '#/components/schemas/ClientSettings'
+ type: object
+ PaymentTerm:
+ properties:
+ num_days:
+ description: 'The payment term length in days'
+ type: integer
+ example: '1'
+ name:
+ description: 'The payment term length in string format'
+ type: string
+ example: 'NET 1'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ type: object
+ ClientContactRequest:
+ properties:
+ id:
+ description: 'The hashed if of the contact'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the contact'
+ type: string
+ example: John
+ last_name:
+ description: 'The last name of the contact'
+ type: string
+ example: Doe
+ phone:
+ description: 'The phone number of the contact'
+ type: string
+ example: 555-152-4524
+ custom_value1:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ email:
+ description: 'The email of the contact'
+ type: string
+ example: ''
+ password:
+ description: 'The hashed password of the contact'
+ type: string
+ example: '*****'
+ send_email:
+ description: 'Boolean value determines is this contact should receive emails'
+ type: boolean
+ example: true
+ type: object
+
+ GenericBulkAction:
+ properties:
+ action:
+ type: string
+ example: archive
+ description: 'The action to perform ie. archive / restore / delete'
+ ids:
+ type: array
+ items:
+ format: string
+ type: string
+ example: 2J234DFA,D2J234DFA,D2J234DFA
+ description: string array of client hashed ids
+ type: object
+ BankTransactionRule:
+ properties:
+ id:
+ description: 'The bank transaction rules hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: AS3df3A
+ name:
+ description: 'The name of the transaction'
+ type: string
+ example: 'Rule 1'
+ rules:
+ description: 'A mapped collection of the sub rules for the BankTransactionRule'
+ type: array
+ items:
+ $ref: '#/components/schemas/BTRules'
+ auto_convert:
+ description: 'Flags whether the rule converts the transaction automatically'
+ type: boolean
+ example: true
+ matches_on_all:
+ description: 'Flags whether all subrules are required for the match'
+ type: boolean
+ example: true
+ applies_to:
+ description: 'Flags whether the rule applies to a CREDIT or DEBIT'
+ type: string
+ example: CREDIT
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: AS3df3A
+ vendor_id:
+ description: 'The vendor hashed id'
+ type: string
+ example: AS3df3A
+ category_id:
+ description: 'The category hashed id'
+ type: string
+ example: AS3df3A
+ type: object
+ Product:
+ type: object
+ properties:
+ id:
+ type: string
+ description: 'The hashed product ID.'
+ example: eP01N
+ readOnly: true
+ user_id:
+ type: string
+ description: 'The hashed ID of the user that created this product.'
+ example: n30m4
+ readOnly: true
+ assigned_user_id:
+ type: string
+ description: 'The hashed ID of the user assigned to this product.'
+ example: pR0j3
+ project_id:
+ type: string
+ description: 'The hashed ID of the project that this product is associated with.'
+ example: pR0j3
+ vendor_id:
+ type: string
+ description: 'The hashed ID of the vendor that this product is associated with.'
+ example: pR0j3
+ custom_value1:
+ type: string
+ description: 'Custom value field 1.'
+ example: 'Custom value 1'
+ custom_value2:
+ type: string
+ description: 'Custom value field 2.'
+ example: 'Custom value 2'
+ custom_value3:
+ type: string
+ description: 'Custom value field 3.'
+ example: 'Custom value 3'
+ custom_value4:
+ type: string
+ description: 'Custom value field 4.'
+ example: 'Custom value 4'
+ product_key:
+ type: string
+ description: 'The product key.'
+ example: '1234'
+ notes:
+ type: string
+ description: 'Notes about the product.'
+ example: 'These are some notes about the product.'
+ cost:
+ type: number
+ format: double
+ description: 'The cost of the product. (Your purchase price for this product)'
+ example: 10.0
+ price:
+ type: number
+ format: double
+ description: 'The price of the product that you are charging.'
+ example: 20.0
+ quantity:
+ type: number
+ format: double
+ description: 'The quantity of the product. (used as a default)'
+ example: 5.0
+ tax_name1:
+ type: string
+ description: 'The name of tax 1.'
+ example: 'Tax 1'
+ tax_rate1:
+ type: number
+ format: double
+ description: 'The rate of tax 1.'
+ example: 10.0
+ tax_name2:
+ type: string
+ description: 'The name of tax 2.'
+ example: 'Tax 2'
+ tax_rate2:
+ type: number
+ format: double
+ description: 'The rate of tax 2.'
+ example: 5.0
+ tax_name3:
+ type: string
+ description: 'The name of tax 3.'
+ example: 'Tax 3'
+ tax_rate3:
+ type: number
+ format: double
+ description: 'The rate of tax 3.'
+ example: 0.0
+ archived_at:
+ type: integer
+ format: timestamp
+ description: 'The timestamp when the product was archived.'
+ example: '2022-03-18T15:00:00Z'
+ readOnly: true
+ created_at:
+ type: integer
+ format: timestamp
+ description: 'The timestamp when the product was created.'
+ example: '2022-03-18T15:00:00Z'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: integer
+ format: timestamp
+ example: '2022-03-18T12:34:56.789Z'
+ readOnly: true
+ is_deleted:
+ type: boolean
+ description: 'Boolean flag determining if the product has been deleted'
+ example: false
+ readOnly: true
+ in_stock_quantity:
+ type: integer
+ format: int32
+ description: The quantity of the product that is currently in stock
+ default: 0
+ stock_notification:
+ type: boolean
+ description: Indicates whether stock notifications are enabled for this product
+ default: true
+ stock_notification_threshold:
+ type: integer
+ format: int32
+ description: The minimum quantity threshold for which stock notifications will be triggered
+ default: 0
+ max_quantity:
+ type: integer
+ format: int32
+ description: The maximum quantity that can be ordered for this product
+ product_image:
+ type: string
+ description: The URL of the product image
+ format: uri-reference
+ tax_id:
+ type: string
+ default: '1'
+ description: |
+ The tax category id for this product.'
+
+ The following constants are available (default = '1')
+
+ ```
+ PRODUCT_TYPE_PHYSICAL = '1'
+ PRODUCT_TYPE_SERVICE = '2'
+ PRODUCT_TYPE_DIGITAL = '3'
+ PRODUCT_TYPE_SHIPPING = '4'
+ PRODUCT_TYPE_EXEMPT = '5'
+ PRODUCT_TYPE_REDUCED_TAX = '6'
+ PRODUCT_TYPE_OVERRIDE_TAX = '7'
+ PRODUCT_TYPE_ZERO_RATED = '8'
+ PRODUCT_TYPE_REVERSE_TAX = '9'
+ ```
+ example: '1'
+
+ RecurringQuote:
+ properties:
+ id:
+ description: 'The hashed id of the recurring quote'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ status_id:
+ description: 'The quote status variable'
+ type: string
+ example: '4'
+ frequency_id:
+ description: 'The recurring quote frequency'
+ type: number
+ example: '4'
+ remaining_cycles:
+ description: 'The number of quotes left to be generated'
+ type: number
+ example: '4'
+ number:
+ description: 'The recurringquote number - is a unique alpha numeric number per quote per company'
+ type: string
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this recurring quote'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The quote terms'
+ type: string
+ example: 'These are quote terms'
+ public_notes:
+ description: 'The public notes of the quote'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the quote'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The quote footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the quote'
+ type: number
+ format: float
+ example: '10.00'
+ line_items:
+ description: 'An array of objects which define the line items of the quote'
+ type: object
+ example: ''
+ amount:
+ description: 'The quote amount'
+ type: number
+ format: float
+ example: '10.00'
+ balance:
+ description: 'The quote balance'
+ type: number
+ format: float
+ example: '10.00'
+ paid_to_date:
+ description: 'The amount paid on the quote to date'
+ type: number
+ format: float
+ example: '10.00'
+ discount:
+ description: 'The quote discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the quote has been deleted'
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The quote Date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the quote was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the quote'
type: string
format: date
example: '1994-07-30'
settings:
$ref: '#/components/schemas/CompanySettings'
last_viewed:
- description: 'The timestamp of the last time the quote was viewed'
+ description: Timestamp
type: number
format: integer
- example: 1434342123
+ example: '1434342123'
updated_at:
- description: 'The timestamp of the last update to the quote'
+ description: Timestamp
type: number
format: integer
- example: 1434342123
+ example: '1434342123'
archived_at:
- description: 'The timestamp of when the quote was archived'
+ description: Timestamp
type: number
format: integer
- example: 1434342123
+ example: '1434342123'
custom_surcharge1:
- description: 'First custom surcharge amount for the quote'
+ description: 'First Custom Surcharge'
type: number
format: float
- example: 10.00
+ example: '10.00'
custom_surcharge2:
- description: 'Second custom surcharge amount for the quote'
+ description: 'Second Custom Surcharge'
type: number
format: float
- example: 10.00
+ example: '10.00'
custom_surcharge3:
- description: 'Third custom surcharge amount for the quote'
+ description: 'Third Custom Surcharge'
type: number
format: float
- example: 10.00
+ example: '10.00'
custom_surcharge4:
- description: 'Fourth custom surcharge amount for the quote'
+ description: 'Fourth Custom Surcharge'
type: number
format: float
- example: 10.00
+ example: '10.00'
custom_surcharge_tax1:
- description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
+ description: 'Toggles charging taxes on custom surcharge amounts'
type: boolean
example: true
custom_surcharge_tax2:
- description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
+ description: 'Toggles charging taxes on custom surcharge amounts'
type: boolean
example: true
custom_surcharge_tax3:
- description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
+ description: 'Toggles charging taxes on custom surcharge amounts'
type: boolean
example: true
custom_surcharge_tax4:
- description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
+ description: 'Toggles charging taxes on custom surcharge amounts'
type: boolean
example: true
type: object
+ Paymentable:
+ properties:
+ id:
+ description: 'The paymentable hashed id'
+ type: string
+ example: AS3df3A
+ invoice_id:
+ description: 'The invoice hashed id'
+ type: string
+ example: AS3df3A
+ credit_id:
+ description: 'The credit hashed id'
+ type: string
+ example: AS3df3A
+ refunded:
+ description: 'The amount that has been refunded for this payment'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The amount that has been applied to the payment'
+ type: number
+ format: float
+ example: '10.00'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ SystemLog:
+ properties:
+ id:
+ description: 'The account hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user_id hashed id'
+ type: string
+ example: AS3df3A
+ client_id:
+ description: 'The client_id hashed id'
+ type: string
+ example: AS3df3A
+ event_id:
+ description: 'The Log Type ID'
+ type: integer
+ example: 1
+ category_id:
+ description: 'The Category Type ID'
+ type: integer
+ example: 1
+ type_id:
+ description: 'The Type Type ID'
+ type: integer
+ example: 1
+ log:
+ description: 'The json object of the error'
+ type: object
+ example: '{''key'':''value''}'
+ updated_at:
+ description: Timestamp
+ type: string
+ example: '2'
+ created_at:
+ description: Timestamp
+ type: string
+ example: '2'
+ type: object
+ BankTransaction:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: AS3df3A
+ transaction_id:
+ description: 'The id of the transaction rule'
+ type: integer
+ example: 343434
+ amount:
+ description: 'The transaction amount'
+ type: number
+ example: 10
+ currency_id:
+ description: 'The currency ID of the currency'
+ type: string
+ example: '1'
+ account_type:
+ description: 'The account type'
+ type: string
+ example: creditCard
+ description:
+ description: 'The description of the transaction'
+ type: string
+ example: 'Potato purchases for kevin'
+ category_id:
+ description: 'The category id'
+ type: integer
+ example: 1
+ category_type:
+ description: 'The category description'
+ type: string
+ example: Expenses
+ base_type:
+ description: 'Either CREDIT or DEBIT'
+ type: string
+ example: CREDIT
+ date:
+ description: 'The date of the transaction'
+ type: string
+ example: '2022-09-01'
+ bank_account_id:
+ description: 'The ID number of the bank account'
+ type: integer
+ example: '1'
+ type: object
+
+ ProductBulkAction:
+ required:
+ - action
+ - ids
+ properties:
+ action:
+ type: string
+ example: archive
+ description: 'The action to perform ie. archive / restore / delete / set_tax_id'
+ ids:
+ type: array
+ items:
+ format: string
+ type: string
+ example: 2J234DFA,D2J234DFA,D2J234DFA
+ description: string array of client hashed ids
+ tax_id:
+ type: string
+ example: '1'
+ description: |
+ The tax rate id to set on the list of products
+
+ The following constants are available (default = '1')
+
+ ```
+ PRODUCT_TYPE_PHYSICAL = '1'
+ PRODUCT_TYPE_SERVICE = '2'
+ PRODUCT_TYPE_DIGITAL = '3'
+ PRODUCT_TYPE_SHIPPING = '4'
+ PRODUCT_TYPE_EXEMPT = '5'
+ PRODUCT_TYPE_REDUCED_TAX = '6'
+ PRODUCT_TYPE_OVERRIDE_TAX = '7'
+ PRODUCT_TYPE_ZERO_RATED = '8'
+ PRODUCT_TYPE_REVERSE_TAX = '9'
+ ```
+ type: object
+ FillableInvoice:
+ properties:
+ assigned_user_id:
+ description: "The assigned user's hashed ID"
+ type: string
+ example: 'a1b2c3d4'
+ client_id:
+ description: "The client's hashed ID"
+ type: string
+ example: 'x1y2z3a4'
+ number:
+ description: "The unique alphanumeric invoice number for each invoice per company"
+ type: string
+ example: INV_101
+ po_number:
+ description: "The purchase order number associated with the invoice"
+ type: string
+ example: 'PO12345'
+ terms:
+ description: "The terms and conditions for the invoice"
+ type: string
+ example: 'Net 30'
+ public_notes:
+ description: "Public notes visible to the client on the invoice"
+ type: string
+ example: 'Thank you for your business.'
+ private_notes:
+ description: "Private notes for internal use only"
+ type: string
+ example: 'Client is a slow payer.'
+ footer:
+ description: "The footer text displayed on the invoice"
+ type: string
+ example: 'Authorized Signature'
+ custom_value1:
+ description: "First custom value for additional information"
+ type: string
+ example: 'Project ABC'
+ custom_value2:
+ description: "Second custom value for additional information"
+ type: string
+ example: 'Department XYZ'
+ custom_value3:
+ description: "Third custom value for additional information"
+ type: string
+ example: 'Location 123'
+ custom_value4:
+ description: "Fourth custom value for additional information"
+ type: string
+ example: 'Currency USD'
+ tax_name1:
+ description: "Name of the first tax applied to the invoice"
+ type: string
+ example: 'VAT'
+ tax_name2:
+ description: "Name of the second tax applied to the invoice"
+ type: string
+ example: 'GST'
+ tax_rate1:
+ description: "Rate of the first tax applied to the invoice"
+ type: number
+ example: 10.00
+ tax_rate2:
+ description: "Rate of the second tax applied to the invoice"
+ type: number
+ example: 5.00
+ tax_name3:
+ description: "Name of the third tax applied to the invoice"
+ type: string
+ example: 'PST'
+ tax_rate3:
+ description: "Rate of the third tax applied to the invoice"
+ type: number
+ example: 8.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ discount:
+ description: "The discount applied to the invoice"
+ type: number
+ example: 10.00
+ partial:
+ description: "The partial amount applied to the invoice"
+ type: number
+ example: 20.00
+ is_amount_discount:
+ description: "Indicates whether the discount applied is a fixed amount or a percentage"
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: "Indicates whether the tax rates applied to the invoice are inclusive or exclusive"
+ type: boolean
+ example: true
+ date:
+ description: "The date the invoice was issued"
+ type: string
+ example: '1994-07-30'
+ partial_due_date:
+ description: "The due date for the partial payment"
+ type: string
+ example: '1994-08-15'
+ due_date:
+ description: "The due date for the invoice"
+ type: string
+ example: '1994-08-30'
+ custom_surcharge1:
+ description: "First custom surcharge applied to the invoice"
+ type: number
+ example: 10.00
+ custom_surcharge2:
+ description: "Second custom surcharge applied to the invoice"
+ type: number
+ example: 15.00
+ custom_surcharge3:
+ description: "Third custom surcharge applied to the invoice"
+ type: number
+ example: 5.00
+ custom_surcharge4:
+ description: "Fourth custom surcharge applied to the invoice"
+ type: number
+ example: 20.00
+ type: object
+ CompanyGateway:
+ properties:
+ id:
+ description: 'The hashed id of the company gateway'
+ type: string
+ example: Opnel5aKBz
+ gateway_key:
+ description: 'The gateway key (hash)'
+ type: string
+ example: '2'
+ accepted_credit_cards:
+ description: 'Bitmask representation of cards'
+ type: integer
+ example: '32'
+ require_billing_address:
+ description: 'Determines if the the billing address is required prior to payment.'
+ type: boolean
+ example: true
+ require_shipping_address:
+ description: 'Determines if the the billing address is required prior to payment.'
+ type: boolean
+ example: true
+ config:
+ description: 'The configuration map for the gateway'
+ type: string
+ example: dfadsfdsafsafd
+ update_details:
+ description: 'Determines if the client details should be updated.'
+ type: boolean
+ example: true
+ fees_and_limits:
+ description: 'A mapped collection of the fees and limits for the configured gateway'
+ type: array
+ items:
+ $ref: '#/components/schemas/FeesAndLimits'
+ type: object
+
+
+ Activity:
+ properties:
+ id:
+ description: 'The id field of the activity'
+ type: string
+ example: Opnel5aKBz
+ activity_type_id:
+ description: 'The activity type id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ company_id:
+ description: 'The company hashed id'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The invoice hashed id'
+ type: string
+ example: Opnel5aKBz
+ payment_id:
+ description: 'The payment hashed id'
+ type: string
+ example: Opnel5aKBz
+ credit_id:
+ description: 'The credit hashed id'
+ type: string
+ example: Opnel5aKBz
+ updated_at:
+ description: 'Unixtimestamp the last time the record was updated'
+ type: integer
+ example: '343421434'
+ expense_id:
+ description: 'The expense hashed id'
+ type: string
+ example: Opnel5aKBz
+ is_system:
+ description: 'Defines is the activity was performed by the system'
+ type: boolean
+ example: true
+ contact_id:
+ description: 'The contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ task_id:
+ description: 'The task hashed id'
+ type: string
+ example: Opnel5aKBz
+ notes:
+ description: 'Activity Notes'
+ type: string
+ example: Opnel5aKBz
+ token_id:
+ description: 'The hashed ID of the token who performed the action'
+ type: string
+ example: Opnel5aKBz
+ ip:
+ description: 'The IP Address of the user who performed the action'
+ type: string
+ example: 192.168.1.252
+ user:
+ $ref: '#/components/schemas/User'
+ client:
+ $ref: '#/components/schemas/Client'
+ contact:
+ $ref: '#/components/schemas/ClientContact'
+ recurring_invoice:
+ $ref: '#/components/schemas/RecurringInvoice'
+ invoice:
+ $ref: '#/components/schemas/Invoice'
+ credit:
+ $ref: '#/components/schemas/Credit'
+ quote:
+ $ref: '#/components/schemas/Quote'
+ payment:
+ $ref: '#/components/schemas/Payment'
+ expense:
+ $ref: '#/components/schemas/Expense'
+ task:
+ $ref: '#/components/schemas/Task'
+ purchase_order:
+ $ref: '#/components/schemas/PurchaseOrder'
+ vendor:
+ $ref: '#/components/schemas/Vendor'
+ vendor_contact:
+ $ref: '#/components/schemas/VendorContact'
+ type: object
+ User:
+ properties:
+ id:
+ description: 'The hashed id of the user'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the user'
+ type: string
+ example: Brad
+ last_name:
+ description: 'The last name of the user'
+ type: string
+ example: Pitt
+ email:
+ description: 'The users email address'
+ type: string
+ example: brad@pitt.com
+ phone:
+ description: 'The users phone number'
+ type: string
+ example: 555-1233-23232
+ signature:
+ description: 'The users sign off signature'
+ type: string
+ example: 'Have a nice day!'
+ avatar:
+ description: 'The users avatar'
+ type: string
+ example: 'https://url.to.your/avatar.png'
+ accepted_terms_version:
+ description: 'The version of the invoice ninja terms that has been accepted by the user'
+ type: string
+ example: 1.0.1
+ readOnly: true
+ oauth_user_id:
+ description: 'The provider id of the oauth entity'
+ type: string
+ example: jkhasdf789as6f675sdf768sdfs
+ readOnly: true
+ oauth_provider_id:
+ description: 'The oauth entity id'
+ type: string
+ example: google
+ readOnly: true
+ language_id:
+ description: 'The language id of the user'
+ type: string
+ example: 1
+ verified_phone_number:
+ description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
+ type: boolean
+ example: true
+ readOnly: true
+ sms_verification_code:
+ description: 'The sms verification code for the user. Required to settings up 2FA'
+ type: string
+ example: '123456'
+ readOnly: true
+ oauth_user_token_expiry:
+ description: 'The expiry date of the oauth token'
+ type: string
+ example: '2022-10-10'
+ readOnly: true
+ has_password:
+ description: 'Boolean flag determining if the user has a password'
+ type: boolean
+ example: true
+ readOnly: true
+ last_confirmed_email_address:
+ description: 'The last confirmed email address of the user'
+ type: string
+ example: 'bob@gmail.com'
+ readOnly: true
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 1'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: '$1000'
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 3'
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 4'
+ is_deleted:
+ description: 'Boolean flag determining if the user has been deleted'
+ type: boolean
+ example: true
+ readOnly: true
+ google_2fa_secret:
+ description: 'The google 2fa secret for the user'
+ type: string
+ example: '123456'
+ readOnly: true
+ company_user:
+ $ref: '#/components/schemas/CompanyUserRef'
+ type: object
+ UserRef:
+ properties:
+ id:
+ description: 'The hashed id of the user'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the user'
+ type: string
+ example: Brad
+ last_name:
+ description: 'The last name of the user'
+ type: string
+ example: Pitt
+ email:
+ description: 'The users email address'
+ type: string
+ example: brad@pitt.com
+ phone:
+ description: 'The users phone number'
+ type: string
+ example: 555-1233-23232
+ signature:
+ description: 'The users sign off signature'
+ type: string
+ example: 'Have a nice day!'
+ avatar:
+ description: 'The users avatar'
+ type: string
+ example: 'https://url.to.your/avatar.png'
+ accepted_terms_version:
+ description: 'The version of the invoice ninja terms that has been accepted by the user'
+ type: string
+ example: 1.0.1
+ readOnly: true
+ oauth_user_id:
+ description: 'The provider id of the oauth entity'
+ type: string
+ example: jkhasdf789as6f675sdf768sdfs
+ readOnly: true
+ oauth_provider_id:
+ description: 'The oauth entity id'
+ type: string
+ example: google
+ readOnly: true
+ language_id:
+ description: 'The language id of the user'
+ type: string
+ example: 1
+ verified_phone_number:
+ description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
+ type: boolean
+ example: true
+ readOnly: true
+ sms_verification_code:
+ description: 'The sms verification code for the user. Required to settings up 2FA'
+ type: string
+ example: '123456'
+ readOnly: true
+ oauth_user_token_expiry:
+ description: 'The expiry date of the oauth token'
+ type: string
+ example: '2022-10-10'
+ readOnly: true
+ has_password:
+ description: 'Boolean flag determining if the user has a password'
+ type: boolean
+ example: true
+ readOnly: true
+ last_confirmed_email_address:
+ description: 'The last confirmed email address of the user'
+ type: string
+ example: 'bob@gmail.com'
+ readOnly: true
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 1'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: '$1000'
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 3'
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 4'
+ is_deleted:
+ description: 'Boolean flag determining if the user has been deleted'
+ type: boolean
+ example: true
+ readOnly: true
+ google_2fa_secret:
+ description: 'The google 2fa secret for the user'
+ type: string
+ example: '123456'
+ readOnly: true
+ type: object
+ CompanyUser:
+ properties:
+ permissions:
+ description: 'The user permissionsfor this company in a comma separated list'
+ type: string
+ example: 'create_invoice,create_client,view_client'
+ settings:
+ description: 'Settings that are used for the flutter applications to store user preferences / metadata'
+ type: object
+ readOnly: true
+ react_settings:
+ description: 'Dedicated settings object for the react web application'
+ type: object
+ readOnly: true
+ is_owner:
+ description: 'Determines whether the user owns this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_admin:
+ description: 'Determines whether the user is the admin of this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_locked:
+ description: 'Determines whether the users access to this company has been locked'
+ type: boolean
+ example: true
+ readOnly: true
+ updated_at:
+ description: 'The last time the record was modified, format Unix Timestamp'
+ type: integer
+ example: '1231232312321'
+ deleted_at:
+ description: 'Timestamp when the user was archived, format Unix Timestamp'
+ type: integer
+ example: '12312312321'
+ account:
+ $ref: '#/components/schemas/Account'
+ company:
+ $ref: '#/components/schemas/Company'
+ user:
+ $ref: '#/components/schemas/UserRef'
+ token:
+ $ref: '#/components/schemas/CompanyToken'
+ type: object
+ CompanyUserRef:
+ properties:
+ permissions:
+ description: 'The user permissionsfor this company in a comma separated list'
+ type: string
+ example: 'create_invoice,create_client,view_client'
+ settings:
+ description: 'Settings that are used for the flutter applications to store user preferences / metadata'
+ type: object
+ readOnly: true
+ react_settings:
+ description: 'Dedicated settings object for the react web application'
+ type: object
+ readOnly: true
+ is_owner:
+ description: 'Determines whether the user owns this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_admin:
+ description: 'Determines whether the user is the admin of this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_locked:
+ description: 'Determines whether the users access to this company has been locked'
+ type: boolean
+ example: true
+ readOnly: true
+ updated_at:
+ description: 'The last time the record was modified, format Unix Timestamp'
+ type: integer
+ example: '1231232312321'
+ deleted_at:
+ description: 'Timestamp when the user was archived, format Unix Timestamp'
+ type: integer
+ example: '12312312321'
+ account:
+ $ref: '#/components/schemas/Account'
+ company:
+ $ref: '#/components/schemas/Company'
+ user:
+ $ref: '#/components/schemas/UserRef'
+ token:
+ $ref: '#/components/schemas/CompanyToken'
+ type: object
+ RecurringExpense:
+ properties:
+ id:
+ description: 'The hashed id of the recurring expense'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The hashed id of the user who created the recurring expense'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The hashed id of the user assigned to this recurring expense'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed id of the client'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The hashed id of the invoice'
+ type: string
+ example: Opnel5aKBz
+ bank_id:
+ description: 'The id of the bank associated with this recurring expense'
+ type: string
+ example: '22'
+ invoice_currency_id:
+ description: 'The currency id of the invoice associated with this recurring expense'
+ type: string
+ example: '1'
+ expense_currency_id:
+ description: 'The currency id of the expense associated with this recurring expense'
+ type: string
+ example: '1'
+ invoice_category_id:
+ description: 'The category id of the invoice'
+ type: string
+ example: '1'
+ payment_type_id:
+ description: 'The payment type id'
+ type: string
+ example: '1'
+ private_notes:
+ description: 'The recurring expense private notes'
+ type: string
+ example: 'Private and confidential'
+ public_notes:
+ description: 'The recurring expense public notes'
+ type: string
+ example: 'This is the best client in the world'
+ transaction_reference:
+ description: 'The recurring expense transaction reference'
+ type: string
+ example: EXP-1223-2333
+ transcation_id:
+ description: 'The transaction id of the recurring expense'
+ type: string
+ example: '1233312312'
+ custom_value1:
+ description: 'Custom value field'
+ type: string
+ example: $1000
+ custom_value2:
+ description: 'Custom value field'
+ type: string
+ example: '2022-10-10'
+ custom_value3:
+ description: 'Custom value field'
+ type: string
+ example: 'short text'
+ custom_value4:
+ description: 'Custom value field'
+ type: string
+ example: 'very long text'
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: GST
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: VAT
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The total amount of the recurring expense'
+ type: number
+ format: float
+ example: '10.00'
+ frequency_id:
+ description: 'The frequency this recurring expense fires'
+ type: number
+ format: int
+ example: '1'
+ remaining_cycles:
+ description: 'The number of remaining cycles for this recurring expense'
+ type: number
+ format: int
+ example: '1'
+ foreign_amount:
+ description: 'The foreign currency amount of the recurring expense'
+ type: number
+ format: float
+ example: '10.00'
+ exchange_rate:
+ description: 'The exchange rate for the expernse'
+ type: number
+ format: float
+ example: '0.80'
+ date:
+ description: 'The date of the expense'
+ type: string
+ example: ''
+ payment_date:
+ description: 'The date the expense was paid'
+ type: string
+ example: ''
+ should_be_invoiced:
+ description: 'Boolean flag determining if the expense should be invoiced'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag determining if the recurring expense is deleted'
+ type: boolean
+ example: true
+ last_sent_date:
+ description: 'The Date it was sent last'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The next send date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ invoice_documents:
+ description: 'Boolean flag determining if the documents associated with this expense should be passed onto the invoice if it is converted to an invoice'
+ type: boolean
+ example: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ ClientContact:
+ properties:
+ id:
+ description: 'The hashed if of the contact'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The hashed id of the user who created the contact'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ client_id:
+ description: 'The hashed id of the client'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the contact'
+ type: string
+ example: John
+ last_name:
+ description: 'The last name of the contact'
+ type: string
+ example: Doe
+ phone:
+ description: 'The phone number of the contact'
+ type: string
+ example: 555-152-4524
+ custom_value1:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ email:
+ description: 'The email of the contact'
+ type: string
+ example: ''
+ accepted_terms_version:
+ description: 'The terms of service which the contact has accpeted'
+ type: string
+ example: 'A long set of ToS'
+ readOnly: true
+ password:
+ description: 'The hashed password of the contact'
+ type: string
+ example: '*****'
+ confirmation_code:
+ description: 'The confirmation code used to authenticate the contacts email address'
+ type: string
+ example: 333-sdjkh34gbasd
+ readOnly: true
+ token:
+ description: 'A uuid based token.'
+ type: string
+ example: 333-sdjkh34gbasd
+ readOnly: true
+ contact_key:
+ description: 'A unique identifier for the contact'
+ type: string
+ example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
+ readOnly: true
+ is_primary:
+ description: 'Defines is this contact is the primary contact for the client'
+ type: boolean
+ example: true
+ confirmed:
+ description: 'Boolean value confirms the user has confirmed their account.'
+ type: boolean
+ example: true
+ is_locked:
+ description: 'Boolean value defines if the contact has been locked out.'
+ type: boolean
+ example: true
+ send_email:
+ description: 'Boolean value determines is this contact should receive emails'
+ type: boolean
+ example: true
+ failed_logins:
+ description: 'The number of failed logins the contact has had'
+ type: number
+ format: integer
+ example: '3'
+ readOnly: true
+ email_verified_at:
+ description: 'The date which the contact confirmed their email'
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ last_login:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ deleted_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ type: object
+ Expense:
+ properties:
+ id:
+ description: 'The expense hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ project_id:
+ description: 'The associated project_id'
+ type: string
+ example: 'Opnel5aKBz'
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ invoice_id:
+ description: 'The related invoice hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ bank_id:
+ description: 'The bank id related to this expense'
+ type: string
+ example: ''
+ invoice_currency_id:
+ description: 'The currency id of the related invoice'
+ type: string
+ example: '1'
+ currency_id:
+ description: 'The currency id of the expense'
+ type: string
+ example: '2'
+ invoice_category_id:
+ description: 'The invoice category id'
+ type: string
+ example: 'Opnel5aKBz'
+ payment_type_id:
+ description: 'The payment type id'
+ type: string
+ example: ''
+ recurring_expense_id:
+ description: 'The related recurring expense this expense was created from'
+ type: string
+ example: 'Opnel5aKBz'
+ private_notes:
+ description: 'The private notes of the expense'
+ type: string
+ example: ''
+ public_notes:
+ description: 'The public notes of the expense'
+ type: string
+ example: ''
+ transaction_reference:
+ description: 'The transaction references of the expense'
+ type: string
+ example: ''
+ transcation_id:
+ description: 'The transaction id of the expense'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: ''
+ tax_amount:
+ description: 'The tax amount'
+ type: number
+ example: 10.00
+ tax_name1:
+ description: 'Tax Name 1'
+ type: string
+ example: 'GST'
+ tax_name2:
+ description: 'Tax Name 2'
+ type: string
+ example: 'VAT'
+ tax_name3:
+ description: 'Tax Name 3'
+ type: string
+ example: 'IVA'
+ tax_rate1:
+ description: 'Tax rate 1'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'Tax rate 2'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate3:
+ description: 'Tax rate 3'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The total expense amont'
+ type: number
+ format: float
+ example: '10.00'
+ foreign_amount:
+ description: 'The total foreign amount of the expense'
+ type: number
+ format: float
+ example: '10.00'
+ exchange_rate:
+ description: 'The exchange rate at the time of the expense'
+ type: number
+ format: float
+ example: '0.80'
+ date:
+ description: 'The expense date format Y-m-d'
+ type: string
+ example: '2022-12-01'
+ payment_date:
+ description: 'The date of payment for the expense, format Y-m-d'
+ type: string
+ example: '2022-12-01'
+ should_be_invoiced:
+ description: 'Flag whether the expense should be invoiced'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean determining whether the expense has been deleted'
+ type: boolean
+ example: true
+ invoice_documents:
+ description: 'Passing the expense documents over to the invoice'
+ type: boolean
+ example: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ Task:
+ properties:
+ id:
+ description: 'The hashed id of the task'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The hashed id of the user who created the task'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user of the task'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed if of the client'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The hashed id of the invoice associated with the task'
+ type: string
+ example: Opnel5aKBz
+ project_id:
+ description: 'The hashed id of the project associated with the task'
+ type: string
+ example: Opnel5aKBz
+ number:
+ description: 'The number of the task'
+ type: string
+ example: TASK-123
+ time_log:
+ description: 'An array of unix time stamps defining the start and end times of the task'
+ type: string
+ example: '[[1,2],[3,4]]'
+ is_running:
+ description: 'Determines if the task is still running'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag determining if the task has been deleted'
+ type: boolean
+ example: true
+ task_status_id:
+ description: 'The hashed id of the task status'
+ type: string
+ example: Opnel5aKBz
+ description:
+ description: 'The task description'
+ type: string
+ example: 'A wonder task to work on'
+ duration:
+ description: 'The task duration in seconds'
+ type: integer
+ example: '3600'
+ task_status_order:
+ description: 'The order of the task'
+ type: integer
+ example: '4'
+ rate:
+ description: 'The task rate'
+ type: number
+ example: 10.00
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: '2022-10-10'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: $1100
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: 'I need help'
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: INV-3343
+ is_date_based:
+ description: 'Boolean flag determining if the task is date based'
+ type: boolean
+ example: true
+ calculated_start_date:
+ description: 'The calculated start date of the task'
+ type: string
+ example: '2022-10-10'
+ readOnly: true
+ invoice_documents:
+ description: "Boolean flags which determines whether to include the task documents on the invoice"
+ type: boolean
+ example: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ type: object
+
+ FeesAndLimits:
+ properties:
+ min_limit:
+ description: 'The minimum amount accepted for this gateway'
+ type: string
+ example: '2'
+ max_limit:
+ description: 'The maximum amount accepted for this gateway'
+ type: string
+ example: '2'
+ fee_amount:
+ description: 'The gateway fee amount'
+ type: number
+ format: float
+ example: '2.0'
+ fee_percent:
+ description: 'The gateway fee percentage'
+ type: number
+ format: float
+ example: '2.0'
+ fee_tax_name1:
+ description: 'Fee tax name'
+ type: string
+ example: GST
+ fee_tax_name2:
+ description: 'Fee tax name'
+ type: string
+ example: VAT
+ fee_tax_name3:
+ description: 'Fee tax name'
+ type: string
+ example: 'CA Sales Tax'
+ fee_tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.0'
+ fee_tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '17.5'
+ fee_tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '25.0'
+ fee_cap:
+ description: 'If set the fee amount will be no higher than this amount'
+ type: number
+ format: float
+ example: '2.0'
+ adjust_fee_percent:
+ description: 'Adjusts the fee to match the exact gateway fee.'
+ type: boolean
+ example: true
+ type: object
+ Vendor:
+ properties:
+ id:
+ description: 'The hashed id of the vendor. This is a unique identifier for the vendor.'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The hashed id of the user who created the vendor. This is a unique identifier for the user.'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The hashed id of the assigned user to this vendor. This is a unique identifier for the user.'
+ type: string
+ example: Opnel5aKBz
+ contacts:
+ type: array
+ items:
+ $ref: '#/components/schemas/VendorContact'
+ description: 'An array of contacts associated with the vendor.'
+ name:
+ description: 'The name of the vendor.'
+ type: string
+ example: 'Harry cafe de wheels'
+ classification:
+ description: 'The classification of the vendor.'
+ type: string
+ example: 'individual'
+ website:
+ description: 'The website of the vendor.'
+ type: string
+ example: www.harry.com
+ private_notes:
+ description: 'The private notes of the vendor. These notes are only visible to users with appropriate permissions.'
+ type: string
+ example: 'Shhh, do not tell the vendor'
+ industry_id:
+ description: 'The industry id of the vendor. This is a unique identifier for the industry.'
+ type: string
+ example: '1'
+ size_id:
+ description: 'The size id of the vendor. This is a unique identifier for the size of the vendor.'
+ type: string
+ example: ''
+ address1:
+ description: 'The first line of the vendor''s address.'
+ type: string
+ example: ''
+ address2:
+ description: 'The second line of the vendor''s address.'
+ type: string
+ example: ''
+ city:
+ description: 'The city of the vendor''s address.'
+ type: string
+ example: ''
+ state:
+ description: 'The state of the vendor''s address.'
+ type: string
+ example: ''
+ postal_code:
+ description: 'The postal code of the vendor''s address.'
+ type: string
+ example: ''
+ phone:
+ description: 'The phone number of the vendor.'
+ type: string
+ example: 555-3434-3434
+ country_id:
+ description: 'The country id of the vendor. This is a unique identifier for the country.'
+ type: string
+ example: ''
+ currency_id:
+ description: 'The currency id of the vendor. This is a unique identifier for the currency.'
+ type: string
+ example: '4'
+ custom_value1:
+ description: 'The value of the first custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'The value of the second custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'The value of the third custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'The value of the fourth custom field for the vendor.'
+ type: string
+ example: ''
+ vat_number:
+ description: 'The VAT number of the vendor.'
+ type: string
+ example: ''
+ id_number:
+ description: 'The ID number of the vendor.'
+ type: string
+ example: ''
+ number:
+ description: 'The number of the vendor'
+ type: string
+ example: '11234'
+ is_deleted:
+ description: 'Boolean flag determining if the vendor has been deleted'
+ type: boolean
+ example: true
+ language_id:
+ description: 'The language id of the vendor. This is a unique identifier for the language.'
+ type: string
+ example: '1'
+ vendor_hash:
+ description: 'The vendor hash of the vendor. This is a unique identifier for the vendor.'
+ type: string
+ example: 'aaa-sss-www'
+ readOnly: true
+ transaction_name:
+ description: 'The transaction name of the vendor.'
+ type: string
+ example: 'aaa-sss-www'
+ last_login:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ display_name:
+ description: 'The display name of the vendor.'
+ type: string
+ example: 'Bob the vendor'
+ readOnly: true
+ type: object
tags:
- name: login
description: |
diff --git a/openapi/paths.yaml b/openapi/paths.yaml
index e8a45b8fd7f8..64e5e2e549cc 100644
--- a/openapi/paths.yaml
+++ b/openapi/paths.yaml
@@ -998,7 +998,7 @@ paths:
post:
tags:
- bank_transactions
- summary: "Performs bulk actions on an array of bank_transations"
+ summary: "Bulk actions"
description: ""
operationId: bulkBankTransactions
parameters:
@@ -1042,8 +1042,30 @@ paths:
post:
tags:
- bank_transactions
- summary: "Performs match actions on an array of bank_transactions"
- description: ""
+ summary: "Match transactions"
+ description: |
+ Matching invoices or a payment to a bank transactions.
+
+ The API expects the id of the transaction along with either a comma separated list of invoice ids OR the payment id to associate the transaction to.
+
+ Example for matching a transaction to two invoices:
+
+ {"transactions":[{"id":"olejRl5ejN","invoice_ids":"JxboYBLegw,JxboYBLeXX"}]}
+
+ Example for matching a transaction and a paymente:
+
+ {"transactions":[{"id":"olejRl5ejN","payment_id":"JxboYBLeXf"}]}
+
+ Matching expenses.
+
+ You can match an existing expense within Invoice Ninja - or - create a new expense using the following:
+
+ {"transactions":[{"id":"open5pld7A","vendor_id":"gl9avJnaG1","ninja_category_id":""}]}
+
+ To match to an existing expense:
+
+ {"transactions":[{"id":"Jxbo2qKagw","expense_id":"7N1aMM1aWm"}]}
+
operationId: matchBankTransactions
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
diff --git a/public/build/assets/app-02bc3b96.css b/public/build/assets/app-02bc3b96.css
deleted file mode 100644
index 8c1544d1c4e3..000000000000
--- a/public/build/assets/app-02bc3b96.css
+++ /dev/null
@@ -1 +0,0 @@
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-75:disabled{opacity:.75}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
diff --git a/public/build/assets/app-039bd735.css b/public/build/assets/app-06521fee.css
similarity index 87%
rename from public/build/assets/app-039bd735.css
rename to public/build/assets/app-06521fee.css
index b404a6350ce2..ed4a7a525a0d 100644
--- a/public/build/assets/app-039bd735.css
+++ b/public/build/assets/app-06521fee.css
@@ -1 +1 @@
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
+*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-75:disabled{opacity:.75}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
diff --git a/public/build/manifest.json b/public/build/manifest.json
index f6047f4d4c3c..954c5b5476eb 100644
--- a/public/build/manifest.json
+++ b/public/build/manifest.json
@@ -240,7 +240,7 @@
"src": "resources/js/setup/setup.js"
},
"resources/sass/app.scss": {
- "file": "assets/app-039bd735.css",
+ "file": "assets/app-06521fee.css",
"isEntry": true,
"src": "resources/sass/app.scss"
}
diff --git a/resources/views/billing-portal/v3/authentication/register-form.blade.php b/resources/views/billing-portal/v3/authentication/register-form.blade.php
index 5ebb0a7de21c..fcead1bf59df 100644
--- a/resources/views/billing-portal/v3/authentication/register-form.blade.php
+++ b/resources/views/billing-portal/v3/authentication/register-form.blade.php
@@ -47,7 +47,7 @@
@foreach(App\Utils\TranslationHelper::getCurrencies() as $currency)
@endforeach
@@ -61,7 +61,7 @@
@endforeach
@@ -75,7 +75,7 @@
@endforeach
diff --git a/resources/views/email/template/client.blade.php b/resources/views/email/template/client.blade.php
index e73dfa3630bd..112f5b71c553 100644
--- a/resources/views/email/template/client.blade.php
+++ b/resources/views/email/template/client.blade.php
@@ -22,6 +22,7 @@
color-scheme: light dark;
supported-color-schemes: light dark;
}
+
@if(isset($settings) && $settings->email_style === 'dark')
body {
background-color: #1a1a1a !important;
@@ -48,6 +49,13 @@
hr {
border-color: #474849 !important;
}
+ .file_icon {
+ filter: invert(1);
+ }
+ @else
+ .file_icon {
+ filter: invert(1);
+ }
@endif
/** Content-specific styles. **/
#content .button {
@@ -171,9 +179,12 @@
@isset($links)