PHP code example of voipcompetencecenter / weclappclient
1. Go to this page and download the library: Download voipcompetencecenter/weclappclient library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
voipcompetencecenter / weclappclient example snippets
use WeclappClient\Core\WeclappClient;
// Default: API v2
$client = new WeclappClient('your-subdomain', 'your-api-key');
// Legacy: API v1 (if needed)
$client = new WeclappClient('your-subdomain', 'your-api-key', null, 1);
$client = new WeclappClient('your-subdomain', 'your-api-key', null, 2, [
'timeout' => 30, // request timeout in seconds (default 30)
'connect_timeout' => 10, // connection timeout in seconds (default 10)
'max_retries' => 3, // retries on HTTP 429 / connection errors (default 3)
'retry_delay_ms' => 1000, // base backoff in ms, doubled per attempt (default 1000)
]);
$results = $client->query('/customer')
->whereEq('customerType', 'CUSTOMER')
->whereLike('company', '%GmbH%')
->orderBy('lastModifiedDate', 'desc')
->limit(10)
->all();
// OR Conditions
$results = $client->query('/party')
->whereEq('firstName', 'Max')
->orWhere('lastName', 'eq', 'Mustermann')
->orWhere('email', 'like', '%@example.com')
->getResult();
// OR Grouping
$results = $client->query('/party')
->orWhereGroup('location', function($q) {
$q->orWhere('city', 'eq', 'Berlin')
->orWhere('city', 'eq', 'München');
})
->orWhereGroup('status', function($q) {
$q->orWhere('active', 'eq', true)
->orWhere('verified', 'eq', true);
})
->getResult();
// Raw Filter Expressions (Beta)
$results = $client->query('/party')
->whereRaw('(age >= 18) and (customer = true)')
->getResult();
// String Custom Attributes
$results = $client->query('/party')
->whereCustomAttributeString('customer-note', 'like', '%VIP%')
->getResult();
// Boolean Custom Attributes
$results = $client->query('/party')
->whereCustomAttributeBoolean('is-premium', 'eq', true)
->getResult();
// Number Custom Attributes
$results = $client->query('/party')
->whereCustomAttributeNumber('credit-limit', 'gt', 10000)
->getResult();
// Date Custom Attributes (automatic string → timestamp conversion)
$results = $client->query('/party')
->whereCustomAttributeDate('last-contact', 'gt', '2024-01-01')
->getResult();
// OR-Filter with Custom Attributes
$results = $client->query('/party')
->orWhereCustomAttribute('customer-tier', 'eq', 'Gold', 'stringValue')
->orWhereCustomAttribute('customer-tier', 'eq', 'Platinum', 'stringValue')
->getResult();
// Document Endpoint - query('/document')
->entityName('party')
->entityId('12345')
->whereLike('name', '%Rechnung%')
->orderBy('createdDate', 'desc')
->getResult();
// Comment Endpoint - ry('/custom-endpoint')
->param('customParam', 'customValue')
->param('anotherParam', 123)
->getResult();
->orderAsc('fieldName')
->orderDesc('fieldName')
->orderBy('fieldName', 'desc') // 'asc' is default
->limit(50) // fetches up to 50 records across pages
->page(2, 25) // page 2 with 25 entries (classic pagination)
$count = $client->query('/customer')->whereEq('customerType', 'CUSTOMER')->count();
// Get first matching record
$customer = $client->query('/customer')
->whereEq('customerType', 'CUSTOMER')
->first();
// Get specific record by ID
$customer = $client->query('/customer')->get($id);
// Selective Properties - Only fetch needed fields
$results = $client->query('/article')
->properties(['id', 'name', 'unitId', 'articleCategoryId'])
->getResult();
// Referenced Entities - Load related data in one request
$results = $client->query('/article')
->
->
// Fetch single object by ID
$customer = $client->query('/customer')->get($id);
// Create
$created = $client->query('/customer')->create([
'company' => 'Test GmbH',
'customerType' => 'CUSTOMER',
'partyType' => 'ORGANIZATION'
]);
// Update (Traditional)
$updated = $client->query('/customer')->update([
'id' => $created['id'],
'company' => 'Updated GmbH'
]);
// Partial Update (v2.0.0) - Only update specified fields
$updated = $client->query('/customer')->partialUpdate([
'id' => $created['id'],
'version' => $created['version'],
'email' => '[email protected] '
]);
// Dry-Run Mode (v2.0.0) - Validate without executing
$validation = $client->query('/customer')
->dryRun()
->create([
'company' => 'Test Corp',
'customerType' => 'CUSTOMER'
]);
// Delete
$success = $client->query('/customer')->delete($created['id']);
use WeclappClient\Exception\WeclappApiException;
use WeclappClient\Exception\WeclappValidationError;
try {
$result = $client->query('/party')->create($data);
} catch (WeclappApiException $e) {
// RFC 7807 compliant error information
echo "Error Type: " . $e->getType(); // URI reference to error type
echo "Title: " . $e->getTitle(); // Short summary
echo "Detail: " . $e->getDetail(); // Detailed explanation
echo "Instance: " . $e->getInstance(); // URI to affected entity
// Validation errors (if any)
foreach ($e->getValidationErrors() as $error) {
echo "Field: " . $error->location; // JsonPath to field
echo "Message: " . $error->detail; // Field-specific error
echo "Allowed: " . implode(', ', $error->allowed ?? []); // Valid values
}
}
[
'id' => 123456,
'company' => 'Sample Company GmbH',
'customerNumber' => 'C-1000',
// ...
]
// v1.x (old)
$client = new WeclappClient('tenant', 'token');
// v2.0.0 (automatic migration)
$client = new WeclappClient('tenant', 'token'); // Uses v2 by default
// Legacy v1 (if needed)
$client = new WeclappClient('tenant', 'token', null, 1);
// Use new advanced filtering
$results = $client->query('/party')
->whereNotNull('email')
->orWhere('firstName', 'eq', 'Max')
->getResult();
// Use custom attributes (replaces legacy customField methods)
$results = $client->query('/party')
->whereCustomAttributeString('customer-note', 'like', '%VIP%')
->whereCustomAttributeBoolean('is-premium', 'eq', true)
->getResult();
// Use special parameters for document/comment endpoints
$results = $client->query('/document')
->entityName('party')
->entityId('12345')
->getResult();
// Use performance optimizations
$results = $client->query('/article')
->properties(['id', 'name'])
->
class MyApiQueryBuilder extends AbstractBaseQueryBuilder
{
public function all(): array
{
// custom logic to retrieve all data
}
}