# Kanbert Version: v1 ## Servers ``` https://api.kanbert.com/api/v1 ``` ## Security ### http Type: http Scheme: bearer ### oauth2 Type: oauth2 ## Download OpenAPI description [Kanbert](https://developers.kanbert.com/_bundle/api.yaml) ## Users ### Retrieve current user's information - [GET /whoami](https://developers.kanbert.com/api/users/users.whoami.md): No specific scope required. ### List all users (basic) - [GET /users](https://developers.kanbert.com/api/users/users.index.md): No specific scope required. ### Get all users (full) - [GET /users/full](https://developers.kanbert.com/api/users/users.fullindex.md): Required scopes: user:read ### Retrieve a user - [GET /users/{id}](https://developers.kanbert.com/api/users/users.show.md): No specific scope required. Returns UserFullData if app has any user: scope or user-profile: if current user ## Clients ### List all clients (basic) - [GET /clients](https://developers.kanbert.com/api/clients/clients.index.md): No specific scope required. ### Create a client - [POST /clients](https://developers.kanbert.com/api/clients/clients.store.md): Required scopes: client:write ### List all clients (full) - [GET /clients/full](https://developers.kanbert.com/api/clients/clients.fullindex.md): Required scopes: client:read ### Retrieve a client - [GET /clients/{id}](https://developers.kanbert.com/api/clients/clients.show.md): No specific scope required. Returns ClientFullData if app has any client:* scope ### Update a client - [PATCH /clients/{id}](https://developers.kanbert.com/api/clients/clients.update.md): Required scopes: client:write To update external_id jump to Endpoint /clients/{id}/external-identifier To update shortcode jump to Endpoint /clients/{id}/shortcode ### Archive a client - [DELETE /clients/{id}](https://developers.kanbert.com/api/clients/clients.destroy.md): Required scopes: client:write ### Update a client's external identifier - [PUT /clients/{id}/external-identifier](https://developers.kanbert.com/api/clients/clients.updateexternalid.md): Required scopes: client:write ### Update a client's shortcode - [PUT /clients/{id}/shortcode](https://developers.kanbert.com/api/clients/clients.updateshortcode.md): Required scopes: client:write ### Restore a client - [POST /clients/{id}/restore](https://developers.kanbert.com/api/clients/clients.restore.md): Required scopes: client:write ## Projects ### List all projects - [GET /projects](https://developers.kanbert.com/api/projects/projects.index.md): No specific scope required. ### Retrieve a project - [GET /projects/{id}](https://developers.kanbert.com/api/projects/projects.show.md): No specific scope required. ### List all project team members - [GET /projects/{id}/team](https://developers.kanbert.com/api/projects/projects.team.md): No specific scope required. ### List all project guests - [GET /projects/{id}/guests](https://developers.kanbert.com/api/projects/projects.guests.md): No specific scope required. ### List all project phases - [GET /projects/{id}/phases](https://developers.kanbert.com/api/projects/projects.phases.md): Required scopes: task-management:read ### List all project milestones - [GET /projects/{id}/milestones](https://developers.kanbert.com/api/projects/projects.milestones.md): Required scopes: task-management:read ### List all project epics - [GET /projects/{id}/epics](https://developers.kanbert.com/api/projects/projects.epics.md): Required scopes: task-management:read ### List all project tasks - [GET /projects/{id}/tasks](https://developers.kanbert.com/api/projects/projects.tasks.md): Required scopes: task-management:read ## Portfolios & Project Groups ### List all portfolios - [GET /portfolios](https://developers.kanbert.com/api/portfolios-and-project-groups/projectportfolios.index.md): No specific scope required. ### List all project groups - [GET /project-groups](https://developers.kanbert.com/api/portfolios-and-project-groups/projectportfolios.projectgroups.md): No specific scope required. ## Tasks ### List all tasks - [GET /tasks](https://developers.kanbert.com/api/tasks/tasks.index.md): Required scopes: task-management:read ### Create a task - [POST /tasks](https://developers.kanbert.com/api/tasks/tasks.store.md): Required scopes: task-management:write ### Retrieve a task - [GET /tasks/{id}](https://developers.kanbert.com/api/tasks/tasks.show.md): Required scopes: task-management:read ### Archive a task - [DELETE /tasks/{id}](https://developers.kanbert.com/api/tasks/tasks.delete.md): Required scopes: task-management:write ### Update a task - [PATCH /tasks/{task}](https://developers.kanbert.com/api/tasks/tasks.update.md): Required scopes: task-management:write ### Update a tasks's external identifier - [PUT /tasks/{id}/external-identifier](https://developers.kanbert.com/api/tasks/tasks.updateexternalid.md): Required scopes: client:write ### Upload file to a task - [POST /tasks/{id}/upload](https://developers.kanbert.com/api/tasks/tasks.upload.md): Required scopes: task-management:write ### Task created - [POST task:created](https://developers.kanbert.com/api/tasks/paths/task:created/post.md): task:create - A new task was created ### Task updated - [POST task:updated](https://developers.kanbert.com/api/tasks/paths/task:updated/post.md): task:update A Task was updated ### Task deleted - [POST task:deleted](https://developers.kanbert.com/api/tasks/paths/task:deleted/post.md): task:delete - A task was deleted ## Task Comments ### Create a new comment for a task - [POST /tasks/comments](https://developers.kanbert.com/api/task-comments/taskcomments.store.md): Required scopes: task-management:write ### Update a tasks comment's content - [PATCH /tasks/comments/{id}](https://developers.kanbert.com/api/task-comments/taskcomments.update.md): Required scopes: task-management:write Comments can only be updated by the author of the comment ### Retrieve a tasks comment - [GET /tasks/comments/{id}](https://developers.kanbert.com/api/task-comments/taskcomments.show.md): Required scopes: task-management:read ### Delete a tasks comment - [DELETE /tasks/comments/{id}](https://developers.kanbert.com/api/task-comments/taskcomments.destroy.md): Required scopes: task-management:write Comments can only be deleted by the author of the comment ### Upload file to a task comment - [POST /tasks/comments/{id}/upload](https://developers.kanbert.com/api/task-comments/taskcomments.upload.md): Required scopes: task-management:write Files can only be uploaded by the author of the comment ### List all comments for a task - [GET /tasks/{id}/comments](https://developers.kanbert.com/api/task-comments/taskcomments.comments.md): Required scopes: task-management:read ### Comment created - [POST comment:created](https://developers.kanbert.com/api/task-comments/paths/comment:created/post.md): comment:create - A new comment was created ### Comment updated - [POST comment:updated](https://developers.kanbert.com/api/task-comments/paths/comment:updated/post.md): comment:update A Comment was updated ### Comment deleted - [POST comment:deleted](https://developers.kanbert.com/api/task-comments/paths/comment:deleted/post.md): comment:delete - A comment was deleted ## Efforts ### List all efforts - [GET /efforts](https://developers.kanbert.com/api/efforts/efforts.index.md): Required scopes: efforts:read If additional scope efforts:extended:read is granted efforts with type admin will be included. ## Contacts ### List all contacts - [GET /contacts](https://developers.kanbert.com/api/contacts/contacts.index.md): Required scopes: contact-data:read ### Create a contact - [POST /contacts](https://developers.kanbert.com/api/contacts/contacts.store.md): Required scopes: contact-data:write ### Retrieve a contact - [GET /contacts/{id}](https://developers.kanbert.com/api/contacts/contacts.show.md): Required scopes: contact-data:read ### Update a contact - [PATCH /contacts/{id}](https://developers.kanbert.com/api/contacts/contacts.update.md): Required scopes: contact-data:write To update external_id jump to Endpoint /contacts/{id}/external-identifier ### Archive a contact - [DELETE /contacts/{id}](https://developers.kanbert.com/api/contacts/contacts.destroy.md): Required scopes: contact-data:write ### Update a contacts external identifier - [PUT /contacts/{id}/external-identifier](https://developers.kanbert.com/api/contacts/contacts.updateexternalid.md): Required scopes: contact-data:write Can be used to force overwrite external_id ### Attach a contact to a company - [PUT /contacts/{id}/company/attach](https://developers.kanbert.com/api/contacts/contacts.associatecompany.md): Required scopes: contact-data:write ### Detach a contact from a company - [PUT /contacts/{id}/company/detach](https://developers.kanbert.com/api/contacts/contacts.unassociatecompany.md): Required scopes: contact-data:write ### Restore a contact - [POST /contacts/{id}/restore](https://developers.kanbert.com/api/contacts/contacts.restore.md): Required scopes: contact-data:write ### Contact created - [POST contact:created](https://developers.kanbert.com/api/contacts/paths/contact:created/post.md): contact:create - Fired when a new contact was created ### Contact updated - [POST contact:update](https://developers.kanbert.com/api/contacts/paths/contact:update/post.md): contact:update - Fired when a contact was updated ### Contact deleted - [POST contact:deleted](https://developers.kanbert.com/api/contacts/paths/contact:deleted/post.md): contact:delete - A contact was deleted ## Companies ### List all companies - [GET /companies](https://developers.kanbert.com/api/companies/companies.index.md): Required scopes: contact-data:read ### Create a company - [POST /companies](https://developers.kanbert.com/api/companies/companies.store.md): Required scopes: contact-data:write ### Retrieve a company - [GET /companies/{id}](https://developers.kanbert.com/api/companies/companies.show.md): Required scopes: contact-data:read ### Update a company - [PATCH /companies/{id}](https://developers.kanbert.com/api/companies/companies.update.md): Required scopes: contact-data:write To update external_id jump to Endpoint /companies/{id}/external-identifier ### Archive a company - [DELETE /companies/{id}](https://developers.kanbert.com/api/companies/companies.destroy.md): Required scopes: contact-data:write ### Update a companys external identifier - [PUT /companies/{id}/external-identifier](https://developers.kanbert.com/api/companies/companies.updateexternalid.md): Required scopes: contact-data:write Can be used to force overwrite external_id ### Restore a company - [POST /companies/{id}/restore](https://developers.kanbert.com/api/companies/companies.restore.md): Required scopes: contact-data:write ### Company created - [POST company:created](https://developers.kanbert.com/api/companies/paths/company:created/post.md): company:create - A new company was created ### Company updated - [POST company:updated](https://developers.kanbert.com/api/companies/paths/company:updated/post.md): company:update A company was updated ### Company deleted - [POST company:deleted](https://developers.kanbert.com/api/companies/paths/company:deleted/post.md): company:delete - A company was deleted ## Offers ### List all offers - [GET /offers](https://developers.kanbert.com/api/offers/offers.index.md): Required scopes: offer:read ### Retrieve an offer - [GET /offers/{id}](https://developers.kanbert.com/api/offers/offers.show.md): Required scopes: offer:read ### List all offer lineItems - [GET /offers/{id}/line-items](https://developers.kanbert.com/api/offers/offers.lineitems.md): Required scopes: offer:read ### Download offer PDF - [GET /offers/{id}/pdf](https://developers.kanbert.com/api/offers/offers.pdf.md): Required scopes: offer:read ## Outgoing Invoices ### List all invoices - [GET /outgoing-invoices](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.index.md): Required scopes: outgoing-invoice:read ### List all invoice master plans - [GET /outgoing-invoices/master](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.masterplans.md): Required scopes: outgoing-invoice:read ### Retrieve an invoice master plan - [GET /outgoing-invoices/master/{id}](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.showmaster.md): Required scopes: outgoing-invoice:read ### Retrieve an invoice - [GET /outgoing-invoices/{id}](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.show.md): Required scopes: outgoing-invoice:read ### List all invoice lineItems - [GET /outgoing-invoices/{id}/line-items](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.lineitems.md): Required scopes: outgoing-invoice:read ### Upload a manual invoice - [POST /outgoing-invoices/external](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.createexternal.md): Required scopes: outgoing-invoice:upload Endpoint can be used to upload outgoing invoices not created within Kanbert. Be careful: Invoice Enumeration & consistency is in your responsibility. Make sure not to interfere with the invoice numbering of Kanbert. ### Download invoice PDF - [GET /outgoing-invoices/{id}/pdf](https://developers.kanbert.com/api/outgoing-invoices/outgoinginvoices.pdf.md): Required scopes: outgoing-invoice:read ## Incoming Invoices ### List all incoming invoices - [GET /incoming-invoices](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.index.md): Required scopes: incoming-invoice:read Returns documents of type Invoice and Credit. ### Upload an incoming invoice - [POST /incoming-invoices](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.store.md): Required scopes: incoming-invoice:write Creates a new incoming invoice document and optionally attaches an uploaded file. When a file is uploaded and file_was_preprocessed is not set (or false), the system will automatically run OCR to extract invoice data from the document. Fields explicitly provided in the request always take precedence over OCR results. Optionally, cost-center bookings can be created inline. ### Retrieve an incoming invoice - [GET /incoming-invoices/{id}](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.show.md): Required scopes: incoming-invoice:read Returns a single document of type Invoice or Credit. ### Update an incoming invoice - [PATCH /incoming-invoices/{id}](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.update.md): Required scopes: incoming-invoice:write Updates the document fields of an incoming invoice. Bookings and payments are not touched by this endpoint – use the dedicated booking endpoints instead. ### Check for duplicate uploads - [POST /incoming-invoices/check-duplicate](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.checkhash.md): Required scopes: incoming-invoice:read Verifies whether a file has already been uploaded by comparing its MD5 hash against existing document hashes. You may either upload the file directly (the server computes the hash) or provide a pre-computed MD5 hash string. ### Update a booking - [PATCH /incoming-invoices/{invoiceId}/bookings/{bookingId}](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.updatebooking.md): Required scopes: incoming-invoice:write, chart-of-accounts:write Updates a single chart-of-account booking on the given incoming invoice. ### Delete a booking - [DELETE /incoming-invoices/{invoiceId}/bookings/{bookingId}](https://developers.kanbert.com/api/incoming-invoices/incominginvoices.destroybooking.md): Required scopes: incoming-invoice:write, chart-of-accounts:write Removes a single chart-of-account booking from the given incoming invoice. ## Chart of Accounts ### List all chart of accounts - [GET /chart-of-accounts](https://developers.kanbert.com/api/chart-of-accounts/chartofaccounts.index.md): Required scopes: chart-of-accounts:read ### List bookings - [GET /chart-of-accounts/bookings](https://developers.kanbert.com/api/chart-of-accounts/chartofaccounts.bookings.md): Required scopes: chart-of-accounts:read ### Retrieve a single chart of account - [GET /chart-of-accounts/{id}](https://developers.kanbert.com/api/chart-of-accounts/chartofaccounts.show.md): Required scopes: chart-of-accounts:read ## Payments ### List all payment accounts - [GET /payment-accounts](https://developers.kanbert.com/api/payments/payments.accounts.md): Required scopes: payments:read ### List all payments - [GET /payments](https://developers.kanbert.com/api/payments/payments.payments.md): Required scopes: payments:read ### Add payment for an outgoing invoice - [POST /payments/outgoing-invoice](https://developers.kanbert.com/api/payments/payments.createoutgoinginvoicepayment.md): Required scopes: payments:write ### Associate an outgoing invoice with an outgoing credit - [POST /payments/outgoing-invoice-credit](https://developers.kanbert.com/api/payments/payments.createoutgoinginvoicereferencebooking.md): Required scopes: payments:write ### Add payment for an incoming invoice - [POST /payments/incoming-invoice](https://developers.kanbert.com/api/payments/payments.createincominginvoicepayment.md): Required scopes: payments:write Creates a payment record and associates it with one or more incoming invoices (documents). ### Associate an incoming invoice with an incoming credit - [POST /payments/incoming-invoice-credit](https://developers.kanbert.com/api/payments/payments.createincominginvoicereferencebooking.md): Required scopes: payments:write Creates a reference booking between an incoming invoice (type Invoice) and an incoming credit (type Credit). ## Usergroups & Teams ### List all usergroups - [GET /user-group](https://developers.kanbert.com/api/usergroups-and-teams/usergroups.index.md): Required scopes: user_group:read ### Retrieve a usergroup - [GET /user-group/{id}](https://developers.kanbert.com/api/usergroups-and-teams/usergroups.show.md): Required scopes: user_group:read ## Suppliers ### List all suppliers - [GET /suppliers](https://developers.kanbert.com/api/suppliers/suppliers.index.md): Required scopes: incoming-invoice:read ### Create a supplier - [POST /suppliers](https://developers.kanbert.com/api/suppliers/suppliers.store.md): Required scopes: incoming-invoice:write ### Retrieve a supplier - [GET /suppliers/{id}](https://developers.kanbert.com/api/suppliers/suppliers.show.md): Required scopes: incoming-invoice:read ### Update a supplier - [PATCH /suppliers/{id}](https://developers.kanbert.com/api/suppliers/suppliers.update.md): Required scopes: incoming-invoice:write ## Settings ### Retrieve all countries - [GET /settings/countries](https://developers.kanbert.com/api/settings/settings.countries.md): No specific scope required. ## Integration ### Retrieve current integration's information - [GET /integration](https://developers.kanbert.com/api/integration/integration.show.md): No specific scope required. ## Files ### Retrieve a file's data - [GET /files/{id}](https://developers.kanbert.com/api/files/file.show.md): No specific scope required. ### Download a file - [GET /files/{id}/download](https://developers.kanbert.com/api/files/file.download.md): No specific scope required. ## Custom Fields ### List all custom fields - [GET /custom-fields](https://developers.kanbert.com/api/custom-fields/customfields.index.md): Required scopes: integration ## Webhook Management ### List all registered webhooks - [GET /webhooks](https://developers.kanbert.com/api/webhook-management/webhooks.index.md): Required scopes: integration ### Register a new webhook - [POST /webhooks](https://developers.kanbert.com/api/webhook-management/webhooks.store.md): Required scopes: integration Returns a signature_secret_key field, make sure to save it somewhere safe. It won't be returned again. ### Delete a webhook - [DELETE /webhooks/{id}](https://developers.kanbert.com/api/webhook-management/webhooks.destroy.md): Required scopes: integration