---
name: avaza-api-documentation
description: "Avaza API Documentation API skill. Use when working with Avaza API Documentation for api. Covers 119 endpoints."
version: 1.0.0
generator: lapsh
---

# Avaza API Documentation
API version: v1

## Auth
OAuth2

## Base URL
https://api.avaza.com

## Setup
1. Configure auth: OAuth2
2. GET /api/Account -- retrieves configuration details for the authenticated avaza account, including timesheet settings, currency, branding, and feature flags.
3. POST /api/Bill -- create first Bill

## Endpoints
119 endpoints across 1 group. See references/api-spec.lap for full details.

### Api
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/Account | Retrieves configuration details for the authenticated Avaza account, including timesheet settings, currency, branding, and feature flags. |
| GET | /api/Bill | Retrieves a paginated list of supplier bills with line items, status, and address details. Supports filtering by company, status, date ranges, and updated date. |
| POST | /api/Bill | Creates a new draft supplier bill (purchase invoice). Optionally creates a new supplier company and contact if no matching company is found. |
| GET | /api/Bill/{id} | Retrieves a single supplier bill by its Transaction ID, including line items, issuer/recipient address details, and web links. |
| GET | /api/BillPayment | Retrieves a paginated list of supplier bill payments, including payment allocations to specific bills. |
| POST | /api/BillPayment | Records a new supplier bill payment. Optionally include allocations to apply the payment against specific bills. |
| GET | /api/BillPayment/{id} | Retrieves a single supplier bill payment by its Transaction ID, including allocations to bills. |
| GET | /api/Company/Lookup | Retrieves a paginated dropdown list of companies. Admins see all companies; non-admins see only companies from projects they are a member of. |
| GET | /api/Company | Retrieves a paginated list of customer companies with full details including contacts, billing address, and financial settings. |
| PUT | /api/Company | Updates an existing company record. Only fields listed in the FieldsToUpdate array will be modified. |
| POST | /api/Company | Creates a new customer company record in Avaza. |
| GET | /api/Company/{id} | Retrieves a single customer company by its Company ID, including contacts and billing address details. |
| GET | /api/Contact | Retrieves a paginated list of external contacts (customer contacts) with company association details. |
| POST | /api/Contact | Creates a new external contact, optionally linked to an existing company. If CompanyName is provided and not matched, a new company is created. |
| GET | /api/Contact/{id} | Retrieves a single external contact by their Contact ID. |
| GET | /api/CreditNote | Retrieves a paginated list of customer credit notes, including line items and allocations against invoices. |
| GET | /api/CreditNote/{id} | Retrieves a single credit note by its Transaction ID, including line items and invoice allocations. |
| GET | /api/Currency | Retrieves the list of currencies configured in the Avaza account, including currency codes, names, symbols, and decimal places. |
| GET | /api/CustomFieldDefinition | Retrieves the active custom field definitions mapped to an entity type, in display order, including data type, multi-select flag, required flag, visibility, and the active options for Dropdown fields. Use the returned CustomFieldDefinitionID (or Name) to set values via the CustomFields collection on the Task and Project endpoints. Returns an empty list when the account's Custom Fields feature is disabled. |
| GET | /api/Estimate | Gets list of Estimates |
| PUT | /api/Estimate | Updates an existing estimate. Only fields listed in the FieldsToUpdate array will be modified. When LineItems is included in FieldsToUpdate, all existing line items not present in the array are deleted. |
| POST | /api/Estimate | Creates a new draft estimate (quote). Optionally creates a new customer company and contact if no matching company is found. |
| DELETE | /api/Estimate | Deletes an estimate by its Estimate ID. |
| GET | /api/Estimate/{id} | Retrieves a single estimate by its Estimate ID, including line items, issuer/recipient details, and web links. |
| POST | /api/Expense/Attachment | Uploads a file attachment for an expense. Accepts multipart/form-data with the file content. Returns the uploaded file details including ID and URL. |
| POST | /api/ExpenseApproval/Submit | Submit Expenses for Approval. |
| GET | /api/Expense | Retrieves a paginated list of expense entries with rich filtering by date range, user, project, category, chargeable/invoiced status, approval status, and merchant. |
| PUT | /api/Expense | Updates an existing expense entry. Only fields listed in the FieldsToUpdate array will be modified. Requires the ExpenseID and FieldsToUpdate properties. |
| POST | /api/Expense | Creates a new expense entry. Requires at minimum an expense date, amount, and expense category (by ID or name). |
| DELETE | /api/Expense | Deletes one or more expense entries by their Expense IDs. Returns a result set indicating success or failure for each expense. |
| GET | /api/Expense/{id} | Retrieves a single expense entry by its Expense ID, including category, project, tax, attachment, and approval details. |
| GET | /api/ExpenseCategory | Retrieves the list of expense categories configured in the account, including unit price settings for per-unit expense tracking. |
| GET | /api/ExpenseGroup/Lookup | Retrieves a paginated list of expense group/trip names for categorising expenses, with optional search filtering. |
| GET | /api/ExpenseMerchant/Lookup | Retrieves a minimal dropdown list of expense merchant names for search/autocomplete. |
| GET | /api/ExpensePaymentMethod/Lookup | Retrieves the list of expense payment methods configured in the Avaza account. |
| GET | /api/ExpenseSummary | Retrieves aggregated expense statistics for a date range, with optional grouping by up to three dimensions (e.g. Category, Project, User, Month). Requires ExpenseDateFrom and ExpenseDateTo. |
| POST | /api/FileAttachment | Uploads a single file via multipart/form-data. Send the file in a "file" form field. |
| POST | /api/FileAttachment/Base64 | Uploads a single file as a base64-encoded JSON body. Designed for MCP clients and other JSON-only callers that can't easily build multipart/form-data requests. |
| POST | /api/FileAttachment/FromUrl | Uploads a single file by giving the server a public https URL to fetch from. The server downloads the file (capped at 50 MB, SSRF-protected: blocks RFC1918, loopback, link-local, AWS metadata IPs, and IPv6 ULA). |
| GET | /api/FixedAmount | Retrieves a paginated list of fixed-amount billing entries used for fixed-price project invoicing. Can filter by project, task, invoiced status, and updated date. |
| PUT | /api/FixedAmount | Updates an existing fixed-amount billing entry. Only fields listed in the FieldsToUpdate array will be modified. Valid field names: Amount, InventoryItemIDFK, Notes. |
| POST | /api/FixedAmount | Creates a new fixed-amount billing entry against a task. |
| GET | /api/Inventory | Retrieves a paginated list of inventory/product items configured in the account, used as line items on invoices, bills, and estimates. |
| POST | /api/Inventory | Creates a new inventory/product item. |
| GET | /api/Inventory/{id} | Retrieves a single inventory/product item by its Inventory Item ID. |
| POST | /api/Invoice/MarkAsSent | Flags an existing Draft invoice as Sent ("Mark as Sent"). This is a status change only - the invoice is not emailed to the customer. |
| POST | /api/Invoice/AddLineItems | Appends line items to an existing invoice WITHOUT modifying or deleting its other line items (unlike PUT /api/Invoice, which replaces the full line item collection). Each line item may optionally link uninvoiced timesheets, expenses or a fixed amount via TimesheetEntryIDs / ExpenseIDs / FixedAmountIDs; quantities, prices, descriptions and taxes are calculated from the linked records unless supplied, and the linked records are marked as invoiced. The request is atomic: if any line item or link is invalid, nothing is added. The invoice must not be Void; totals, balance and status are recalculated (e.g. a Paid invoice becomes Partial when its total grows). |
| POST | /api/Invoice/RemoveLineItems | Deletes specific line items from an invoice and releases any timesheets, expenses or fixed amounts linked to them back to uninvoiced. Unlike PUT /api/Invoice (which replaces the whole line item collection), this endpoint only touches the line items you name. The invoice must not be Void and must retain at least one line item; totals, balance and status are recalculated. |
| POST | /api/Invoice/PreviewUninvoicedItems | DRY RUN: computes the line items that AddUninvoicedItems would create for the given filters - quantities, blended rates, converted expense amounts with markup, generated descriptions, taxes, and the source record IDs each line covers - WITHOUT saving anything or marking any record as invoiced. Use it to answer "what is ready to bill onto this invoice?" and to confirm with a person before calling AddUninvoicedItems. |
| POST | /api/Invoice/AddUninvoicedItems | Finds ALL currently-eligible uninvoiced records for the invoice's customer matching the filters (timesheets, expenses and/or fixed amounts), groups them per the requested grouping, appends the generated line items to the invoice and marks the source records as invoiced - one call instead of list + construct + add. Selection only ever picks eligible records, so a repeat call finds nothing and returns zero counts (safe to retry). Use PreviewUninvoicedItems first for a dry run. The invoice must not be Void. |
| GET | /api/Invoice/UninvoicedSummary | Aggregated "what is ready to bill?" view: uninvoiced billable hours and indicative time value, uninvoiced chargeable expense value, and uninvoiced fixed amount totals, grouped per customer (default) or per project. Only billable, Approved/AutoApproved, not-yet-invoiced records are counted. Time and fixed amounts are in each customer's currency; expense values are in the account's base currency (before markup). Use PreviewUninvoicedItems for exact invoice-ready amounts for one customer. |
| GET | /api/Invoice | Gets list of Invoices |
| PUT | /api/Invoice | Updates an existing draft invoice. Only fields listed in the FieldsToUpdate array will be modified. When LineItems is included in FieldsToUpdate, all existing line items not present in the array are deleted. |
| POST | /api/Invoice | Creates a new draft invoice. Optionally creates a new customer company and contact if no matching company is found. |
| GET | /api/Invoice/{id} | Retrieves a single invoice by its Transaction ID, including line items, issuer/recipient address details, and web links. |
| GET | /api/Payment | Retrieves a paginated list of customer payments, including allocations to specific invoices. Can filter by invoice or updated date. |
| POST | /api/Payment | Records a new customer payment. Optionally include allocations to apply the payment against specific invoices. |
| GET | /api/Payment/{id} | Retrieves a single customer payment by its Transaction ID, including allocations to invoices. |
| GET | /api/Project/Lookup | Retrieves a minimal dropdown list of active projects grouped by customer company, for search/autocomplete. Supports filtering by user timesheet access, company, project code, and search term. |
| GET | /api/Project | Retrieves a paginated list of projects with details including status, billing type, budget, category, and date range. Supports filtering by company, category, owner, status, billable type, budget type, and creation date. |
| PUT | /api/Project | Updates an existing project. Only fields listed in the FieldsToUpdate array will be modified. When ProjectBillableTypeCode is updated, use ScheduleRateUpdateOption and TimesheetRateUpdateOption to control whether rate changes cascade to existing schedule bookings and timesheet entries respectively. |
| POST | /api/Project | Creates a new project in Avaza, linked to a customer company. Optionally creates a new company if CompanyName is provided and not matched. |
| GET | /api/Project/{id} | Retrieves full project details by Project ID, including sections, team members with rates and permissions, and project tags. |
| GET | /api/ProjectMember | Retrieves a list of project members with rates and permissions. Include at least one of ProjectID or UserID parameters. |
| PUT | /api/ProjectMember | Updates a project member's rates, budget, or permissions. Only fields listed in the FieldsToUpdate array will be modified. |
| POST | /api/ProjectMember | Adds a user as a member of a project, setting their rates, budget, and permissions. |
| GET | /api/ProjectTag | Retrieves all project tags in the account, sorted alphabetically by name (case-insensitive). |
| GET | /api/ProjectTimesheetCategory | Retrieves the list of timesheet/billing categories assigned to projects. |
| PUT | /api/ProjectTimesheetCategory | Updates an existing project timesheet category assignment, including billable status, rate, and budget hours. Optionally cascades rate changes to existing schedule bookings via ScheduleRateUpdateOption and to existing timesheet entries via TimesheetRateUpdateOption. |
| POST | /api/ProjectTimesheetCategory | Assigns a timesheet/billing category to a project, specifying billable status, rate, and budget hours. |
| GET | /api/RecurringInvoice | Gets list of Recurring Invoices |
| GET | /api/RecurringInvoice/{id} | Retrieves a single recurring invoice profile by its ID, including line items, schedule configuration, and next invoice date. |
| GET | /api/ScheduleAssignment | Gets list of Schedule Assignments. |
| POST | /api/ScheduleSeries/AddBooking | Creates a new project work schedule booking for a user over a date range with specified hours per day or total duration. |
| POST | /api/ScheduleSeries/AddLeave | Creates a new leave/time-off schedule booking for a user over a date range. |
| PUT | /api/ScheduleSeries/EditLeave | Updates an existing leave schedule booking. |
| PUT | /api/ScheduleSeries/EditBooking | Updates an existing project work schedule booking. |
| GET | /api/ScheduleSeries | Gets list of Schedule Series |
| POST | /api/ScheduleSeries | Retrieves a paginated list of schedule series matching the provided filter criteria. POST body contains filter parameters. |
| DELETE | /api/ScheduleSeries/{id} | Deletes a schedule series (booking or leave) by its Schedule Series ID. Also removes all associated daily schedule assignments. |
| GET | /api/Section | Retrieves a list of sections (task groups) within a project. Requires a ProjectID query parameter. |
| POST | /api/Section | Creates a new section (task group) within a project. |
| DELETE | /api/Section | Deletes a section by its Section ID. Cannot delete a Section that contains Tasks. |
| GET | /api/Task/Lookup | Retrieves tasks grouped by section within a project for dropdown/autocomplete use. Requires a projectID parameter. |
| GET | /api/Task | Retrieves a paginated list of tasks with details including assignees, dates, status, priority, tags, and time tracking. Supports filtering by project, section, status, priority, due date range, assigned user, completion state, and parent task / hierarchy. |
| PUT | /api/Task | Update a Task. |
| POST | /api/Task | Creates a new task in a project section. Requires ProjectIDFK, SectionIDFK, and Title. Optionally assign users, set dates, priority, estimated effort, and tags. |
| GET | /api/Task/{id} | Retrieves full task details by Task ID, including project context, section, assignees, dates, status, priority, tags, and time tracking information. |
| DELETE | /api/Task/{id} | Deletes a task by its Task ID. |
| GET | /api/TaskDiscussion | Retrieves discussion/comment messages for a specific task, including replies, attachments, and system messages. Supports pagination via startItem. |
| PUT | /api/TaskDiscussion | Edit an existing task comment (body + attachments). Author-only. Internal-note flag, |
| POST | /api/TaskDiscussion | Post a new comment / discussion message to a task. Supports plain comments, internal notes, replies to existing messages, and file attachments. |
| GET | /api/TaskPriority | Retrieves all task priority definitions configured in the account. Includes priority code, display name, color, and sort order. Results are ordered by DisplayOrder ascending. |
| GET | /api/TaskStatus | Retrieves all task status definitions configured in the account, grouped by task type. Includes status codes, display names, colors, sort order, and whether the status represents a completed state. |
| GET | /api/TaskType | Retrieves all task type definitions (workflow types) configured in the account, including name, icon, and whether it is the default type. |
| GET | /api/Tax | Retrieves all tax rates configured in the Avaza account, including tax components for compound taxes. |
| GET | /api/Timesheet/deleted | Retrieves deleted (tombstone) timesheet entries for synchronisation purposes. Admin access only. Supports filtering by deletion date, entry date range, and user. |
| GET | /api/Timesheet | Retrieves a paginated list of timesheet entries with rich filtering by date range, user, project, task, category, billable/invoiced status, approval status, and running timer state. |
| PUT | /api/Timesheet | Updates an existing timesheet entry. Only fields listed in FieldsToUpdate will be modified. ProjectIDFK is always required. |
| POST | /api/Timesheet | Creates a new timesheet entry. If Duration is null or 0, a timer will be started automatically. Requires ProjectIDFK and TimesheetCategoryIDFK. |
| GET | /api/Timesheet/{id} | Retrieves a single timesheet entry by its Timesheet Entry ID, including user, project, category, approval, and timer details. |
| DELETE | /api/Timesheet/{id} | Deletes a timesheet entry by its Timesheet Entry ID. |
| POST | /api/Timesheets/Approve | Approves a batch of pending timesheet entries by their TimeSheetEntryIDs. Caller must have the Timesheet Approver role and permission to approve each specific entry. Mixed-eligibility batches return per-entry results. |
| POST | /api/Timesheets/Reject | Rejects a batch of pending or approved timesheet entries by their TimeSheetEntryIDs. Invoiced or paid entries cannot be rejected. Caller must have the Timesheet Approver role and permission to reject each specific entry. By default sends a rejection notification email per affected timesheet user; set SendNotifications=false to suppress. |
| POST | /api/TimesheetSubmission | Submits timesheet entries for approval. Either provide a specific day (WholeDayOf) or any day within a week (WholeWeekOf) to submit all draft timesheets in that day or week. |
| GET | /api/TimesheetSummary | Retrieves aggregated timesheet statistics for a date range, with optional grouping by up to three dimensions (e.g. Project, User, Category, Task, Month). Requires EntryDateFrom and EntryDateTo. |
| GET | /api/TimesheetTimer | Checks if there is a currently running timer for the authenticated user (or an impersonated user). Returns timer start time, timesheet entry ID, and server time for clock synchronisation. |
| POST | /api/TimesheetTimer/{id} | Starts a timer on an existing timesheet entry. If the entry is not on the current day or start/end times are enabled, a new timesheet entry is created for the timer. |
| DELETE | /api/TimesheetTimer/{id} | Stops the running timer on a timesheet entry. The elapsed time is added to the entry's duration. |
| POST | /api/UserProfile/Archive | Archive an existing user. Sets isArchived=true, deletes all role assignments, and disables all ProjectMember rows (freeing any consumed paid-role seats). |
| POST | /api/UserProfile/Unarchive | Unarchive a previously archived user. Does NOT restore roles or ProjectMember records — those must be re-added explicitly. |
| GET | /api/UserProfile | Get Collection of Users who have roles in the current Avaza account. |
| PUT | /api/UserProfile | Update one or more fields on an existing user. Only fields named in FieldsToUpdate are written; fields listed but null in the payload are ignored. |
| POST | /api/UserProfile | Create a new user (team member or customer contact) in the current Avaza account. |
| GET | /api/Webhook | Retrieves all active webhook subscriptions for the authenticated account. |
| POST | /api/Webhook | Creates a new webhook subscription. On success, returns the ID of the new webhook subscription. |
| DELETE | /api/Webhook | Deletes a webhook subscription by its callback URL. |
| GET | /api/Webhook/{id} | Retrieves a single webhook subscription by its Subscription ID. |
| DELETE | /api/Webhook/{id} | Deletes a webhook subscription by its Subscription ID. |

## Common Questions
Match user requests to endpoints in references/api-spec.lap. Key patterns:
- "List all Account?" -> GET /api/Account
- "List all Bill?" -> GET /api/Bill
- "Create a Bill?" -> POST /api/Bill
- "Get Bill details?" -> GET /api/Bill/{id}
- "List all BillPayment?" -> GET /api/BillPayment
- "Create a BillPayment?" -> POST /api/BillPayment
- "Get BillPayment details?" -> GET /api/BillPayment/{id}
- "Search Lookup?" -> GET /api/Company/Lookup
- "List all Company?" -> GET /api/Company
- "Create a Company?" -> POST /api/Company
- "Get Company details?" -> GET /api/Company/{id}
- "List all Contact?" -> GET /api/Contact
- "Create a Contact?" -> POST /api/Contact
- "Get Contact details?" -> GET /api/Contact/{id}
- "List all CreditNote?" -> GET /api/CreditNote
- "Get CreditNote details?" -> GET /api/CreditNote/{id}
- "List all Currency?" -> GET /api/Currency
- "List all CustomFieldDefinition?" -> GET /api/CustomFieldDefinition
- "List all Estimate?" -> GET /api/Estimate
- "Create a Estimate?" -> POST /api/Estimate
- "Get Estimate details?" -> GET /api/Estimate/{id}
- "Create a Attachment?" -> POST /api/Expense/Attachment
- "Create a Submit?" -> POST /api/ExpenseApproval/Submit
- "Search Expense?" -> GET /api/Expense
- "Create a Expense?" -> POST /api/Expense
- "Get Expense details?" -> GET /api/Expense/{id}
- "List all ExpenseCategory?" -> GET /api/ExpenseCategory
- "List all Lookup?" -> GET /api/ExpensePaymentMethod/Lookup
- "List all ExpenseSummary?" -> GET /api/ExpenseSummary
- "Create a FileAttachment?" -> POST /api/FileAttachment
- "Create a Base64?" -> POST /api/FileAttachment/Base64
- "Create a FromUrl?" -> POST /api/FileAttachment/FromUrl
- "List all FixedAmount?" -> GET /api/FixedAmount
- "Create a FixedAmount?" -> POST /api/FixedAmount
- "List all Inventory?" -> GET /api/Inventory
- "Create a Inventory?" -> POST /api/Inventory
- "Get Inventory details?" -> GET /api/Inventory/{id}
- "Create a MarkAsSent?" -> POST /api/Invoice/MarkAsSent
- "Create a AddLineItem?" -> POST /api/Invoice/AddLineItems
- "Create a RemoveLineItem?" -> POST /api/Invoice/RemoveLineItems
- "Create a PreviewUninvoicedItem?" -> POST /api/Invoice/PreviewUninvoicedItems
- "Create a AddUninvoicedItem?" -> POST /api/Invoice/AddUninvoicedItems
- "List all UninvoicedSummary?" -> GET /api/Invoice/UninvoicedSummary
- "List all Invoice?" -> GET /api/Invoice
- "Create a Invoice?" -> POST /api/Invoice
- "Get Invoice details?" -> GET /api/Invoice/{id}
- "List all Payment?" -> GET /api/Payment
- "Create a Payment?" -> POST /api/Payment
- "Get Payment details?" -> GET /api/Payment/{id}
- "List all Project?" -> GET /api/Project
- "Create a Project?" -> POST /api/Project
- "Get Project details?" -> GET /api/Project/{id}
- "List all ProjectMember?" -> GET /api/ProjectMember
- "Create a ProjectMember?" -> POST /api/ProjectMember
- "List all ProjectTag?" -> GET /api/ProjectTag
- "List all ProjectTimesheetCategory?" -> GET /api/ProjectTimesheetCategory
- "Create a ProjectTimesheetCategory?" -> POST /api/ProjectTimesheetCategory
- "List all RecurringInvoice?" -> GET /api/RecurringInvoice
- "Get RecurringInvoice details?" -> GET /api/RecurringInvoice/{id}
- "List all ScheduleAssignment?" -> GET /api/ScheduleAssignment
- "Create a AddBooking?" -> POST /api/ScheduleSeries/AddBooking
- "Create a AddLeave?" -> POST /api/ScheduleSeries/AddLeave
- "List all ScheduleSeries?" -> GET /api/ScheduleSeries
- "Create a ScheduleSery?" -> POST /api/ScheduleSeries
- "Delete a ScheduleSery?" -> DELETE /api/ScheduleSeries/{id}
- "List all Section?" -> GET /api/Section
- "Create a Section?" -> POST /api/Section
- "List all Task?" -> GET /api/Task
- "Create a Task?" -> POST /api/Task
- "Get Task details?" -> GET /api/Task/{id}
- "Delete a Task?" -> DELETE /api/Task/{id}
- "List all TaskDiscussion?" -> GET /api/TaskDiscussion
- "Create a TaskDiscussion?" -> POST /api/TaskDiscussion
- "List all TaskPriority?" -> GET /api/TaskPriority
- "List all TaskStatus?" -> GET /api/TaskStatus
- "List all TaskType?" -> GET /api/TaskType
- "List all Tax?" -> GET /api/Tax
- "List all deleted?" -> GET /api/Timesheet/deleted
- "List all Timesheet?" -> GET /api/Timesheet
- "Create a Timesheet?" -> POST /api/Timesheet
- "Get Timesheet details?" -> GET /api/Timesheet/{id}
- "Delete a Timesheet?" -> DELETE /api/Timesheet/{id}
- "Create a Approve?" -> POST /api/Timesheets/Approve
- "Create a Reject?" -> POST /api/Timesheets/Reject
- "Create a TimesheetSubmission?" -> POST /api/TimesheetSubmission
- "List all TimesheetSummary?" -> GET /api/TimesheetSummary
- "List all TimesheetTimer?" -> GET /api/TimesheetTimer
- "Delete a TimesheetTimer?" -> DELETE /api/TimesheetTimer/{id}
- "Create a Archive?" -> POST /api/UserProfile/Archive
- "Create a Unarchive?" -> POST /api/UserProfile/Unarchive
- "List all UserProfile?" -> GET /api/UserProfile
- "Create a UserProfile?" -> POST /api/UserProfile
- "List all Webhook?" -> GET /api/Webhook
- "Create a Webhook?" -> POST /api/Webhook
- "Get Webhook details?" -> GET /api/Webhook/{id}
- "Delete a Webhook?" -> DELETE /api/Webhook/{id}
- "How to authenticate?" -> See Auth section above

## Response Tips
- Check response schemas in references/api-spec.lap for field details
- Create/update endpoints return the modified resource on success
- Error responses include status codes and descriptions in the spec

## References
- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas

> Generated from the official API spec by [LAP](https://lap.sh)
