Skip to content

Releases: apideck-libraries/sdk-php

php - v0.18.8 - 2026-04-25 13:01:56

25 Apr 13:02
64e7e38

Choose a tag to compare

Generated by Speakeasy CLI

apideck-libraries/sdk-php 0.18.8

Php SDK Changes:

  • apideck->accounting->bills->list():
    • request Changed
    • response.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(): request Changed
  • apideck->accounting->creditNotes->list(): request Changed
  • apideck->accounting->payments->list():
    • request->filter Changed
  • apideck->accounting->billPayments->list():
    • request->filter Changed
  • 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

21 Apr 13:01
f0d9041

Choose a tag to compare

Generated by Speakeasy CLI

2026-04-21 13:01:42

Changes

Based on:

Generated

  • [php v0.18.7] .

Releases

Publishing Completed

php - v0.18.6 - 2026-04-17 15:18:41

17 Apr 15:18
a3d156c

Choose a tag to compare

Generated by Speakeasy CLI

apideck-libraries/sdk-php 0.18.6

Php SDK Changes:

  • apideck->accounting->bills->list(): response.data[]->paymentAllocations Added
  • apideck->accounting->bills->create():
    • request->bill->paymentAllocations Added
  • apideck->accounting->bills->get(): response.data->paymentAllocations Added
  • apideck->accounting->bills->update():
    • request->bill->paymentAllocations Added
  • apideck->accounting->payments->list():
    • request->filter Changed
  • apideck->accounting->billPayments->list():
    • request->filter Changed

Generated with Speakeasy CLI 1.761.7

Publishing Completed

php - v0.18.5 - 2026-04-13 17:28:02

13 Apr 17:28
70ffa1a

Choose a tag to compare

Generated by Speakeasy CLI

2026-04-13 17:28:02

Changes

Based on:

Generated

  • [php v0.18.5] .

Releases

Publishing Completed

php - v0.18.4 - 2026-04-09 12:11:54

09 Apr 12:12
c358793

Choose a tag to compare

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-php to ^0.18.4 in composer.json
  • Run composer update apideck-libraries/sdk-php
  • Run your test suite

php - v0.18.3 - 2026-04-06 09:20:20

06 Apr 09:20
2a8ab7c

Choose a tag to compare

Generated by Speakeasy CLI

2026-04-06 09:20:20

Changes

Based on:

Generated

  • [php v0.18.3] .

Releases

Publishing Completed

php - v0.18.2 - 2026-03-31 13:06:02

31 Mar 13:06
99d9143

Choose a tag to compare

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[] Changed
    • response.data->events[] Changed (Breaking ⚠️)
  • apideck->webhook->webhooks->get(): response.data->events[] Changed (Breaking ⚠️)
  • apideck->webhook->webhooks->update():
    • request.updateWebhookRequest->events[] Changed
    • response.data->events[] Changed (Breaking ⚠️)
  • apideck->webhook->webhooks->delete(): response.data->events[] Changed (Breaking ⚠️)
  • apideck->vault->consumers->create(): response.data->connections[] Changed
  • apideck->vault->consumers->get(): response.data->connections[] Changed
  • apideck->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

26 Mar 13:05
559d24d

Choose a tag to compare

Generated by Speakeasy CLI

2026-03-26 13:05:25

Changes

Based on:

Generated

  • [php v0.18.1] .

Releases

Publishing Completed

php - v0.18.0 - 2026-03-23 09:33:08

23 Mar 09:33
ea819a2

Choose a tag to compare

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. JournalEntryLineItemtype 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:

  • bankAccount on applicable line item and transaction models
  • taxType on line items (uses the new TaxType enum)
  • employee on line items (uses the new LinkedEmployee model)

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...
Read more

php - v0.17.4 - 2026-02-26 11:01:52

26 Feb 11:01
b4728d9

Choose a tag to compare

Generated by Speakeasy CLI

apideck-libraries/sdk-php 0.17.4

Php SDK Changes:

  • apideck->accounting->employees->list(): Added
  • apideck->accounting->employees->create(): Added
  • apideck->accounting->employees->get(): Added
  • apideck->accounting->employees->update(): Added
  • apideck->accounting->employees->delete(): Added
  • apideck->accounting->expenseCategories->list(): Added
  • apideck->accounting->expenseCategories->create(): Added
  • apideck->accounting->expenseCategories->get(): Added
  • apideck->accounting->expenseCategories->update(): Added
  • apideck->accounting->expenseCategories->delete(): Added
  • apideck->accounting->expenseReports->list(): Added
  • apideck->accounting->expenseReports->create(): Added
  • apideck->accounting->expenseReports->get(): Added
  • apideck->accounting->expenseReports->update(): Added
  • apideck->accounting->expenseReports->delete(): Added

Generated with Speakeasy CLI 1.730.1

Publishing Completed