Releases: apideck-libraries/sdk-php
php - v0.18.8 - 2026-04-25 13:01:56
Generated by Speakeasy CLI
apideck-libraries/sdk-php 0.18.8
Php SDK Changes:
apideck->accounting->bills->list():requestChangedresponse.data[]->lineItems[]->rebilling->rebillStatus->enum(other)Added (Breaking⚠️ )
apideck->accounting->bills->get():response.data->lineItems[]->rebilling->rebillStatus->enum(other)Added (Breaking⚠️ )apideck->accounting->expenses->list():response.data[]->lineItems[]->rebilling->rebillStatus->enum(other)Added (Breaking⚠️ )apideck->accounting->expenses->get():response.data->lineItems[]->rebilling->rebillStatus->enum(other)Added (Breaking⚠️ )apideck->accounting->bills->create():request->bill->lineItems[]->rebilling->rebillStatus->enum(other)Added
apideck->accounting->bills->update():request->bill->lineItems[]->rebilling->rebillStatus->enum(other)Added
apideck->accounting->invoices->list():requestChangedapideck->accounting->creditNotes->list():requestChangedapideck->accounting->payments->list():request->filterChanged
apideck->accounting->billPayments->list():request->filterChanged
apideck->accounting->expenses->create():request->expense->lineItems[]->rebilling->rebillStatus->enum(other)Added
apideck->accounting->expenses->update():request->expense->lineItems[]->rebilling->rebillStatus->enum(other)Added
Generated with Speakeasy CLI 1.761.9
Publishing Completed
php - v0.18.7 - 2026-04-21 13:01:42
Generated by Speakeasy CLI
2026-04-21 13:01:42
Changes
Based on:
- OpenAPI Doc 10.24.24
- Speakeasy CLI 1.761.9 (2.881.4) https://github.com/speakeasy-api/speakeasy
Generated
- [php v0.18.7] .
Releases
- [Composer v0.18.7] https://packagist.org/packages/apideck-libraries/sdk-php#v0.18.7 - .
Publishing Completed
php - v0.18.6 - 2026-04-17 15:18:41
Generated by Speakeasy CLI
apideck-libraries/sdk-php 0.18.6
Php SDK Changes:
apideck->accounting->bills->list():response.data[]->paymentAllocationsAddedapideck->accounting->bills->create():request->bill->paymentAllocationsAdded
apideck->accounting->bills->get():response.data->paymentAllocationsAddedapideck->accounting->bills->update():request->bill->paymentAllocationsAdded
apideck->accounting->payments->list():request->filterChanged
apideck->accounting->billPayments->list():request->filterChanged
Generated with Speakeasy CLI 1.761.7
Publishing Completed
php - v0.18.5 - 2026-04-13 17:28:02
Generated by Speakeasy CLI
2026-04-13 17:28:02
Changes
Based on:
- OpenAPI Doc 10.24.22
- Speakeasy CLI 1.761.3 (2.879.11) https://github.com/speakeasy-api/speakeasy
Generated
- [php v0.18.5] .
Releases
- [Composer v0.18.5] https://packagist.org/packages/apideck-libraries/sdk-php#v0.18.5 - .
Publishing Completed
php - v0.18.4 - 2026-04-09 12:11:54
php SDK v0.18.4 Changelog
Release Date: April 2026
What's New
This release adds two new filtering and control capabilities. You can now filter tax rates by status (active, inactive, or archived) when listing them through the Accounting API. All Proxy API methods (get, post, put, patch, delete, options) now accept a timeout parameter, giving you control over how long a proxied downstream request is allowed to run before timing out.
Summary of Changes
| Category | Description | Action Required |
|---|---|---|
| Accounting — Tax Rates | New status filter field on TaxRatesFilter |
None — optional parameter |
| Proxy — All methods | New timeout request parameter |
None — optional parameter |
Detailed Changes by API
Accounting — Tax Rates
New status filter when listing tax rates
What changed: TaxRatesFilter now includes an optional status field backed by the new TaxRatesFilterStatus enum. Use it to restrict results to only active, inactive, or archived tax rates.
Impact: Fully backward compatible. Existing calls without status continue to work unchanged.
use Apideck\SDK\Models\Components\TaxRatesFilter;
use Apideck\SDK\Models\Components\TaxRatesFilterStatus;
$request = new AccountingTaxRatesAllRequest(
filter: new TaxRatesFilter(
assets: true,
equity: true,
expenses: true,
liabilities: true,
revenue: true,
status: TaxRatesFilterStatus::Active, // new
),
);
$response = $apideck->accounting->taxRates->list($request);TaxRatesFilterStatus values:
| Name | Value |
|---|---|
Active |
active |
Inactive |
inactive |
Archived |
archived |
Proxy — All methods
New timeout parameter for downstream requests
What changed: All Proxy request models (ProxyGetProxyRequest, ProxyPostProxyRequest, ProxyPutProxyRequest, ProxyPatchProxyRequest, ProxyDeleteProxyRequest, ProxyOptionsProxyRequest) now accept an optional timeout integer field. The value is passed as the x-apideck-timeout header to control how long (in milliseconds) the Apideck gateway waits for the downstream service to respond.
Impact: Fully backward compatible. Omitting timeout preserves existing behavior.
use Apideck\SDK\Models\Operations\ProxyGetProxyRequest;
$request = new ProxyGetProxyRequest(
serviceId: 'close',
downstreamUrl: 'https://api.close.com/api/v1/lead',
downstreamAuthorization: 'Bearer <token>',
timeout: 30000, // new — milliseconds
);
$response = $apideck->proxy->get($request);Migration Checklist
- Update
apideck-libraries/sdk-phpto^0.18.4incomposer.json - Run
composer update apideck-libraries/sdk-php - Run your test suite
php - v0.18.3 - 2026-04-06 09:20:20
Generated by Speakeasy CLI
2026-04-06 09:20:20
Changes
Based on:
- OpenAPI Doc 10.24.14
- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy
Generated
- [php v0.18.3] .
Releases
- [Composer v0.18.3] https://packagist.org/packages/apideck-libraries/sdk-php#v0.18.3 - .
Publishing Completed
php - v0.18.2 - 2026-03-31 13:06:02
Generated by Speakeasy CLI
apideck-libraries/sdk-php 0.18.2
Php SDK Changes:
apideck->webhook->webhooks->list():response.data[]->events[]Changed (Breaking⚠️ )apideck->webhook->webhooks->create():request.createWebhookRequest->events[]Changedresponse.data->events[]Changed (Breaking⚠️ )
apideck->webhook->webhooks->get():response.data->events[]Changed (Breaking⚠️ )apideck->webhook->webhooks->update():request.updateWebhookRequest->events[]Changedresponse.data->events[]Changed (Breaking⚠️ )
apideck->webhook->webhooks->delete():response.data->events[]Changed (Breaking⚠️ )apideck->vault->consumers->create():response.data->connections[]Changedapideck->vault->consumers->get():response.data->connections[]Changedapideck->vault->consumers->update():response.data->connections[]Changed
Generated with Speakeasy CLI 1.761.0
Publishing Completed
php - v0.18.1 - 2026-03-26 13:05:25
Generated by Speakeasy CLI
2026-03-26 13:05:25
Changes
Based on:
- OpenAPI Doc 10.24.9
- Speakeasy CLI 1.759.3 (2.869.25) https://github.com/speakeasy-api/speakeasy
Generated
- [php v0.18.1] .
Releases
- [Composer v0.18.1] https://packagist.org/packages/apideck-libraries/sdk-php#v0.18.1 - .
Publishing Completed
php - v0.18.0 - 2026-03-23 09:33:08
PHP SDK v0.18.0 Changelog
Release Date: March 2026
What's New
Version 0.18.0 is a significant catch-up release that restructures how CRM and Accounting company resources are accessed, introduces new Accounting and ATS capabilities, and refines several data models for consistency. This release contains seven breaking changes that affect enum values, class namespaces, method signatures, and constructor parameter ordering. All users upgrading from v0.17.x should review the migration checklist at the bottom of this document before upgrading.
Summary of Changes
| Category | Description | Action Required |
|---|---|---|
| Breaking | ExpensesFilterStatus enum values removed |
Update any code referencing PendingApproval, Approved, Rejected, Deleted, or Other |
| Breaking | Companies class repurposed from CRM to Accounting |
Migrate CRM company calls to ApideckCompanies |
| Breaking | CRM companies moved to ApideckCompanies class |
Update service accessor from $sdk->crm->companies (old Companies) to new ApideckCompanies |
| Breaking | CrmCompaniesAllResponse accessor renamed |
Replace getCompaniesResponse with getCompaniesResponse1 |
| Breaking | JournalEntryLineItem type field now optional |
Update constructors and remove assumptions that type is always present |
| Breaking | Consumers::list() signature changed |
Insert new $filter parameter as 2nd positional argument |
| Breaking | HRIS companies type changed |
Update HRIS type references from ApideckCompanies to ApideckHrisCompanies |
| New Feature | Refunds resource for Accounting | No action required |
| New Feature | ATS Jobs CRUD methods | No action required |
| New Feature | companyId parameter on Accounting requests |
No action required |
| New Feature | New optional fields on many models | No action required |
| New Feature | LinkedEmployee model and TaxType enum |
No action required |
Detailed Changes by API
Accounting
1. ExpensesFilterStatus Enum Values Removed
What changed: The following values have been removed from the ExpensesFilterStatus enum: PendingApproval, Approved, Rejected, Deleted, and Other.
Impact: Any code that filters expenses using these status values will fail at compile time or throw an error at runtime.
// BEFORE (v0.17.x) -- these values no longer exist
$filter = new ExpensesFilter(
status: ExpensesFilterStatus::PendingApproval
);
$filter = new ExpensesFilter(
status: ExpensesFilterStatus::Approved
);
$filter = new ExpensesFilter(
status: ExpensesFilterStatus::Rejected
);
// AFTER (v0.18.0) -- use only the remaining supported status values
// Consult the SDK reference for the current set of valid enum values.
// Example with a supported value:
$filter = new ExpensesFilter(
status: ExpensesFilterStatus::Draft
);2. Companies Class Repurposed from CRM to Accounting
What changed: The Companies class previously represented the CRM Companies resource. It has been repurposed to serve the Accounting Companies resource. The create(), delete(), get(), and update() methods have been removed. The list() method now returns Accounting companies instead of CRM companies.
Impact: Any code that used Companies for CRM operations will break. The list() method still exists but returns a different data type.
// BEFORE (v0.17.x) -- Companies was the CRM resource
$response = $sdk->crm->companies->create(
company: new CrmCompanyInput(name: 'Acme Corp')
);
$response = $sdk->crm->companies->get(id: 'company_123');
$response = $sdk->crm->companies->update(id: 'company_123', company: $updated);
$response = $sdk->crm->companies->delete(id: 'company_123');
$response = $sdk->crm->companies->list();
// AFTER (v0.18.0) -- Companies is now Accounting; CRM moved to ApideckCompanies
// Accounting companies (list only):
$response = $sdk->accounting->companies->list();
// CRM companies (full CRUD via new class):
$response = $sdk->crm->companies->create(
company: new CrmCompanyInput(name: 'Acme Corp')
);
$response = $sdk->crm->companies->get(id: 'company_123');
$response = $sdk->crm->companies->update(id: 'company_123', company: $updated);
$response = $sdk->crm->companies->delete(id: 'company_123');
$response = $sdk->crm->companies->list();3. CRM Companies Moved to ApideckCompanies Class
What changed: CRM company operations are now served by the new ApideckCompanies class, accessible via $sdk->crm->companies. The underlying class has changed, but the accessor path remains the same.
Impact: If your code type-hints or instanceof-checks the Companies class for CRM usage, you must update those references to ApideckCompanies.
// BEFORE (v0.17.x)
use Apideck\Unify\Models\Components\Companies;
function processCrm(Companies $companiesService): void {
$result = $companiesService->list();
// ...
}
// AFTER (v0.18.0)
use Apideck\Unify\Models\Components\ApideckCompanies;
function processCrm(ApideckCompanies $companiesService): void {
$result = $companiesService->list();
// ...
}4. CrmCompaniesAllResponse Accessor Renamed
What changed: The getCompaniesResponse method on CrmCompaniesAllResponse has been renamed to getCompaniesResponse1.
Impact: Any code reading the response payload from a CRM companies list call must update the accessor name.
// BEFORE (v0.17.x)
$response = $sdk->crm->companies->list();
$companiesPayload = $response->getCompaniesResponse();
// AFTER (v0.18.0)
$response = $sdk->crm->companies->list();
$companiesPayload = $response->getCompaniesResponse1();5. JournalEntryLineItem — type Field Now Optional
What changed: The type property on both JournalEntryLineItem and JournalEntryLineItemInput has changed from required (JournalEntryLineItemType) to optional (?JournalEntryLineItemType). The constructor parameter order has also changed as a result.
Impact: Code that passes type as a positional constructor argument may break due to reordering. Code that reads type without null-checking may throw.
// BEFORE (v0.17.x) -- type was required and positionally first
$lineItem = new JournalEntryLineItemInput(
type: JournalEntryLineItemType::Debit,
ledgerAccount: $account,
totalAmount: 500.00
);
// Accessing type was always safe
$type = $lineItem->type; // JournalEntryLineItemType
// AFTER (v0.18.0) -- type is optional; use named parameters to avoid ordering issues
$lineItem = new JournalEntryLineItemInput(
ledgerAccount: $account,
totalAmount: 500.00,
type: JournalEntryLineItemType::Debit // now optional
);
// Always null-check when reading type
$type = $lineItem->type; // ?JournalEntryLineItemType
if ($type !== null) {
// handle type
}Recommendation: Always use named parameters when constructing JournalEntryLineItem and JournalEntryLineItemInput to insulate your code from future parameter reordering.
6. New Refunds Resource
What changed: A new Refunds resource is now available under the Accounting API, providing full access to refund records.
Impact: None -- this is additive. No migration required.
// List refunds
$response = $sdk->accounting->refunds->list();
// Get a specific refund
$response = $sdk->accounting->refunds->get(id: 'refund_456');7. New Optional companyId Parameter on Accounting Request Models
What changed: Many Accounting request models now accept an optional companyId parameter, enabling multi-company accounting workflows.
Impact: None -- this is additive. Existing calls without companyId continue to work as before.
// Optionally scope requests to a specific company
$response = $sdk->accounting->invoices->list(
companyId: 'company_789'
);8. New Optional Fields on Models
What changed: Several models now include new optional fields:
bankAccounton applicable line item and transaction modelstaxTypeon line items (uses the newTaxTypeenum)employeeon line items (uses the newLinkedEmployeemodel)
Impact: None -- these fields are optional and additive. Existing code is unaffected.
// Using new optional fields on a line item
$lineItem = new InvoiceLineItemInput(
description: 'Consulting services',
totalAmount: 1000.00,
taxType: TaxType::Output,
employee: new LinkedEmployee(id: 'emp_123', displayName: 'Jane Doe')
);ATS (Applicant Tracking System)
9. New Jobs CRUD Methods
What changed: The ATS Jobs resource now supports create(), update(), and delete() operations in addition to the existing list() and get().
Impact: None -- this is additive. No migration required.
// Create a new job
$response = $sdk->ats->jobs->create(
job: new AtsJobInput(
title: 'Senior PHP Developer',
description: 'Join our backend team...'
)
);
// Update an existing job
$response = $sdk->ats->jobs->update(
id: 'job_101',
job: new AtsJobInput(title: 'Staff PHP Developer')
);
// Delete a job
$response = $sdk->ats->jobs->delete(id: 'job_101');Vault (Consumer Management)
10. Consumers::list() Signature Changed
What changed: The Consumers::list() method now accepts a new $filter parameter as the 2nd positional argument. All subsequent positional arguments have shifted.
Impact: Any code calling Consumers::list() with positional arguments will break because the parameter order has changed.
// BEFORE (v0.17.x) -- positional call without filter
$response = $sdk->vault->consumers->list(
'cursor_abc', // cursor as 2nd argument
20 // limit as 3rd argument
);
// AFTER (v0.18.0) -- filter is now the 2nd positional argument
// Option A: Use named para...php - v0.17.4 - 2026-02-26 11:01:52
Generated by Speakeasy CLI
apideck-libraries/sdk-php 0.17.4
Php SDK Changes:
apideck->accounting->employees->list(): Addedapideck->accounting->employees->create(): Addedapideck->accounting->employees->get(): Addedapideck->accounting->employees->update(): Addedapideck->accounting->employees->delete(): Addedapideck->accounting->expenseCategories->list(): Addedapideck->accounting->expenseCategories->create(): Addedapideck->accounting->expenseCategories->get(): Addedapideck->accounting->expenseCategories->update(): Addedapideck->accounting->expenseCategories->delete(): Addedapideck->accounting->expenseReports->list(): Addedapideck->accounting->expenseReports->create(): Addedapideck->accounting->expenseReports->get(): Addedapideck->accounting->expenseReports->update(): Addedapideck->accounting->expenseReports->delete(): Added
Generated with Speakeasy CLI 1.730.1
Publishing Completed