
# Komut satırı arayüzü

`keenauth` komut satırı arayüzü (CLI), yönetim API'sini bir terminalden veya betikten çağırır. Her komut Go SDK'sının tipli bir yöntemini sarmalar; bu nedenle CLI ile API aynı şekilde davranır. Henüz bir kurulum paketi yok.

## Kimlik doğrulama ve hedef

CLI kimlik bilgilerini yalnızca ortam değişkenlerinden okur. API anahtarı hiçbir zaman bayrak olarak kabul edilmez; böylece kabuk geçmişinize düşmez.

| Değişken | Zorunlu | Açıklama |
|---|---|---|
| `KEENAUTH_API_KEY` | evet | Yönetim API anahtarı. Eksikse komut 3 çıkış koduyla sonlanır. |
| `KEENAUTH_BASE_URL` | evet, `--base-url` verilmediği sürece | Ortamınızın yönetim API temel URL'si. |

API anahtarı yerine kontrol paneli hesabınızla da giriş yapabilirsiniz: `keenauth login`, ardından `keenauth env use <environment_id>`. Oturum yalnızca `KEENAUTH_API_KEY` ayarlanmadığında kullanılır ve ortam adresi bu durumda kontrol düzleminden alınır (bkz. [keenauth login ile giriş yapma](/docs/cli/login)).

`--base-url` bayrağı tek bir komut için `KEENAUTH_BASE_URL` değerini geçersiz kılar. CLI API anahtarını hiçbir zaman yazdırmaz; bir sunucu yanıtı anahtarı yansıtırsa, anahtar `[redacted]` ile değiştirilir.

## Komutlar

Komutlar `keenauth <group> <action> [arguments] [flags]` kalıbını izler. Tam liste için `keenauth --help` veya `keenauth <group> --help` çalıştırın.

| Grup | Eylemler |
|---|---|
| `users` | `list`, `search`, `get`, `create`, `update`, `delete`, `block`, `unblock`, `cancel-deletion`, `authenticators list`, `authenticators delete`, `authenticators reset`, `authenticators reactivate`, `send-password-reset`, `send-verification-email`, `emails send-verification`, `start-recovery`, `logs list` |
| `applications` | `list`, `create`, `get`, `update`, `delete`, `get-api-grant`, `put-api-grant`, `delete-api-grant`, `credentials list`, `credentials create`, `credentials delete` |
| `apis` | `list`, `create`, `get`, `update`, `delete` |
| `connections` | `list`, `create`, `get`, `update`, `delete`, `activate`, `deactivate` |
| `identity-settings` | `get`, `update` |
| `environment-settings` | `get`, `update` |
| `config` | `export` (`-o` olmadan YAML yazdırır), `plan -f <file>` (terminalde okunabilir bir fark yazdırır), `plans get`, `apply <plan_id>` (onay ister; `--secrets-from-env` gizli bilgileri ortam değişkenlerinden okur, `--confirm-deletion <kind>/<key>`), `promote --from <env> --to <env>` (dışa aktarır, planlar, farkı gösterir ve onaydan sonra uygular; bkz. [keenauth config promote ile yapılandırmayı taşıma](/docs/cli/config-promote)) |
| `api-keys` | `list`, `get`, `create`, `rotate`, `revoke` |
| `logs` | `list`, `get`, `tail` (yeni kayıtları izler; `--type`, `--user`, `--org`; bkz. [keenauth logs tail ile günlükleri izleme](/docs/cli/tail)) |
| `support-access-grants` | `list`, `get`, `create`, `delete` (bkz. [keenauth support-access-grants ile destek erişimi verme](/docs/cli/support-access-grants)) |
| `directories` | `simulate <directory_id> --scenario <name>` (geliştirme ve hazırlık ortamlarında bir SCIM simülatörü senaryosu çalıştırır; bkz. [keenauth directories simulate ile SCIM sağlamayı test etme](/docs/cli/directories-simulate)) |
| `audit` | `verify` (indirilen bir denetim dışa aktarımını çevrimdışı denetler; bkz. [keenauth audit verify ile denetim dışa aktarımlarını doğrulama](/docs/cli/audit-verify)) |
| `branding` | `get`, `update`, `applications get`, `applications put`, `organizations get`, `organizations put`, `css put`, `page-template put`, `publish`, `rollback`, `versions list`, `texts get`, `texts put`, `texts delete` |
| `signing-keys` | `list`, `rotate`, `policy get`, `policy update` |
| `events` | `tail` (olay API'si üzerinden müşteri olaylarını izler; bkz. [keenauth events tail ile olayları izleme](/docs/cli/events-tail)), `get <event ID>` (tek bir olay, sunucunun gönderdiği biçimiyle) |
| `mock` | `serve` çevrimdışı testler için yerel bir OIDC taklit sunucusu çalıştırır; API anahtarı gerektirmez (bkz. [Yerel taklit sunucu](/docs/cli/mock-server)) |
| `test` | `login --user <+test address>` sabit kodla bir test kullanıcısını `development` ortamında oturum açtırır ve token'ları yazdırır; API anahtarı gerektirmez (bkz. [keenauth test login ile test kullanıcılarının giriş yapması](/docs/cli/test-login)) |
| `webhooks` | `listen --forward-to <local URL>`, `development` veya `staging` ortamının olaylarını, geçici bir gizli anahtarla imzalanmış olarak makinenize iletir (bkz. [keenauth webhooks listen ile webhook'ları yerelde test etme](/docs/cli/webhooks-listen)) |
| `login`, `logout`, `whoami`, `env` | `login` (`--web`, `--insecure-storage`), `logout`, `whoami`, `env use <environment_id>`, `env list`: API anahtarı yerine kontrol paneli hesabınızla giriş yapın (bkz. [keenauth login ile giriş yapma](/docs/cli/login)) |

Liste komutları `--limit`, `--after`, `--before` ve `--order` seçeneklerini kabul eder. Daha fazla sonuç varsa, sonraki imleç stderr'e `more results: --after <cursor>` olarak yazdırılır.

## Çıktı biçimi

`--output` (`-o`) `table`, `json` veya `yaml` seçer. Bayrak yoksa CLI terminalde tablo, aksi halde JSON yazdırır. JSON ve YAML, API yanıtını olduğu gibi içerir ve asla çevrilmez; böylece betikler bunlara güvenebilir. Sonuçlar stdout'a gider; hatalar, ipuçları ve `etag` satırı stderr'e gider.

## İstek gövdeleri

Gövde gönderen komutlar her düz alan için bir bayrak kabul eder; bayrak adı JSON anahtarından türetilir ve tireler kullanılır (`phone_number`, `--phone-number` olur). İç içe nesneler `--data` ile verilir:

- `--data @file.json` gövdeyi bir dosyadan okur.
- `--data -` gövdeyi standart girişten okur.

Bayraklar dosyadaki alanların üzerine yazar. Gövde 4 MiB ile sınırlıdır.

```sh
keenauth users create --email ada@example.com
keenauth apis create --data @api.json
echo '{"name":"Orders"}' | keenauth apis update api_123 --data - --if-match '"v3"'
```

## Eşzamanlılık kontrolü: `--if-match` ve etag

Uygulamalar, API'ler ve bağlantılar için güncelleme ve silme komutları `--if-match` ister; `users update` bunu kabul eder. Değer, değiştirmek istediğiniz sürümün `ETag` değeridir. Kaynak bu arada değiştiyse sunucu isteği reddeder. `identity-settings update` de bunu ister. `environment-settings update` de bunu ister. Marka taslağı yazma işlemleri (`branding update`, `branding applications put`, `branding organizations put`, `branding css put`, `branding page-template put`) de bunu ister.

Her `get` komutu (`users`, `applications`, `apis`, `connections`, `identity-settings`, `environment-settings`) yanıtın `ETag` değerini stderr'e yazdırır; böylece stdout temiz kalır:

```sh
$ keenauth apis get api_123
{ ... }
etag: "v3"
$ keenauth apis update api_123 --name Orders --if-match '"v3"'
```

`etag` satırı JSON veya YAML çıktısına eklenmez.

## Yıkıcı komutlar ve `--yes`

Silen veya engelleyen komutlar terminalde onay ister (`[y/N]`). Reddetmek 1 çıkış koduyla sonlanır ve `aborted` yazdırır. Standart giriş bir terminal değilse, komut `--yes` (`-y`) geçmediğiniz sürece çalışmayı reddeder; herhangi bir istek göndermeden 2 çıkış koduyla sonlanır.

## Çıkış kodları

| Kod | Anlamı |
|---|---|
| `0` | Başarılı. |
| `1` | Sunucu veya işletim hatası, reddedilen onay ya da ağ hatası. |
| `2` | Kullanım hatası: bilinmeyen komut veya bayrak, eksik bağımsız değişken, geçersiz gövde ya da etkileşimsiz bir terminalde `--yes` eksikliği. |
| `3` | Kimlik doğrulama hatası: anahtar eksik ya da sunucu 401 veya 403 yanıtı verdi. |
| `4` | Plan bu özelliği içermiyor (`403`, `plan_feature_unavailable` ile). |

Sunucu hataları için CLI, stderr'e `error`, `code`, `status`, `detail`, `request_id` bilgilerini ve her doğrulama hatası için bir `field` satırı yazdırır. Destekle iletişime geçtiğinizde `request_id` değerini belirtin.

## Dil

İnsan tarafından okunabilir metinler (yardım, istemler, hatalar, tablo başlıkları) Türkçe (`tr`), İngilizce (`en`), Fransızca (`fr`), Almanca (`de`), Korece (`ko`), Japonca (`ja`), İtalyanca (`it`) ve İspanyolca (`es`) olarak sunulur. Dil, bu değişkenlerin ilk ayarlananından alınır: `KEENAUTH_LANG`, `LC_ALL`, `LC_MESSAGES`, `LANG` (örneğin `tr_TR.UTF-8` `tr` dilini seçer). Boş veya desteklenmeyen bir değer İngilizceyi seçer; bir dilde eksik olan ileti İngilizceye geri döner.

Makine tarafından okunabilir çıktılar asla çevrilmez: JSON ve YAML alan adları ve değerleri, `code` sorunu ile `code`, `status` ve `request_id` etiketleri tüm dillerde aynı kalır. Sunucudan gelen iletiler, sunucunun gönderdiği şekliyle gösterilir.

```sh
KEENAUTH_LANG=de keenauth users list --help
```

## Uygulama kimlik bilgileri

`keenauth applications credentials list|create|delete` bir uygulamanın istemci sırlarını ve kayıtlı genel anahtarlarını yönetir. Bu komutlar `--if-match` kullanmaz.

```sh
keenauth applications credentials create app_123 --type client-secret --expires-at 2027-01-01T00:00:00Z
keenauth applications credentials create app_123 --type public-key --jwk-file key.pub.jwk
keenauth applications credentials delete app_123 cred_456 --yes
```

Bir istemci sırrı stdout'a bir kez yazdırılır; stderr'de tek seferlik bir uyarı ile birlikte gelir. `--jwk-file` tek bir genel JWK kabul eder (en fazla 16 KiB); özel üyeler içeren bir dosya, herhangi bir istek gönderilmeden reddedilir.

## API anahtarları

`keenauth api-keys list|get|create|rotate|revoke` ortamın yönetim API anahtarlarını yönetir. Bu komutlar `--if-match` kullanmaz.

```sh
keenauth api-keys create --name ci --type restricted --permissions users:read,users:write --expires-at 2027-10-01T00:00:00Z
keenauth api-keys rotate key_123 --overlap-hours 24
keenauth api-keys revoke key_123 --reason leaked --yes
```

`create` ve `rotate` işlemlerinin ham anahtarı stdout'a bir kez yazdırılır; stderr'de tek seferlik bir uyarı ile birlikte gelir ve bir daha alınamaz. `list` ve `get` yalnızca meta veri yazdırır.
