Configuration¶
Configuration requires an explicit URL and credential.
Basic configuration¶
use Newfoundcodes\Okatana\Configuration;
use Newfoundcodes\Okatana\OkatanaClient;
$config = new Configuration(
baseUrl: 'https://pm.example.com',
apiKey: 'oka_public.secret',
);
$client = new OkatanaClient($config);
URL behavior¶
Configuration requires an HTTP or HTTPS absolute URL. Query strings and fragments are rejected. Appends /api/v1 if missing.
Supports local, staging, and production deployments:
$local = OkatanaClient::create('http://localhost:8000', $token);
$staging = OkatanaClient::create('https://okatana.staging.example', $token);
$production = OkatanaClient::create('https://work.example/api/v1', $token);
Host inference is disabled.
Timeout¶
$client = OkatanaClient::create(
baseUrl: $_ENV['OKATANA_URL'],
apiKey: $_ENV['OKATANA_TOKEN'],
timeout: 15.0,
);
Timeout applies to the default Guzzle transport. Configure timeouts on custom PSR-18 clients separately.
Retry policy¶
use Newfoundcodes\Okatana\Http\RetryPolicy;
$policy = new RetryPolicy(
maxAttempts: 3,
baseDelayMs: 200,
maxDelayMs: 2500,
methods: ['GET', 'HEAD'],
statusCodes: [429, 500, 502, 503, 504],
retryTransportErrors: true,
jitter: true,
);
$config = new Configuration(
$_ENV['OKATANA_URL'],
$_ENV['OKATANA_TOKEN'],
retryPolicy: $policy,
);
Disable retries:
Custom PSR-18 transport¶
$client = new OkatanaClient(
configuration: $config,
httpClient: $myPsr18Client,
requestFactory: $myPsr17Factory,
streamFactory: $myPsr17Factory,
);
Supports custom transports for proxy configuration, tracing, client certificates, or custom DNS.
Logger¶
Pass a PSR-3 logger:
Logs method, relative path, status, attempt, duration, and exception class. Bearer tokens and JSON bodies are excluded.