> For the complete documentation index, see [llms.txt](https://docs.kangal.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangal.dev/tr/developer-portal/developer-portal.md).

# Developer Portal genel bakış

Kangal Geliştirici Portalı; gateway servisleri ve route'larından herkese açık bir API kataloğu oluşturur, oturum açmış geliştiricilerin erişim istemesine olanak tanır ve platform ekiplerine API sürümü, onay, SDK ve özel alan adı iş akışları sunar.

## Portal yüzeyleri

### Herkese açık portal

Şu adreslerden açın:

```
/{locale}/portal/{tenant_id}
/{locale}/portal/{tenant_id}?gateway={gateway_id}
```

Anonim ziyaretçiler yayımlanmış API'lerde arama yapabilir, metot ve path'leri inceleyebilir, üretilmiş OpenAPI belgesini açabilir, yayımlanmış sürümleri ve değişiklik günlüğü kayıtlarını okuyabilir. Oturum açmış bir Kangal kullanıcısı uygulama oluşturabilir; onay politikasına göre API anahtarını hemen alır veya yönetici onayını bekler.

Herkese açık sayfa, portal için yapılandırılmış `display_name` değerini kullanır. Tema metadata'sı, onaylı portal ve edge entegrasyonları için Theme API üzerinden alınabilir.

### Yönetici genel bakışı

**Dev Portal** bölümünü açarak şunları yapabilirsiniz:

* yöneticinin tenant'ındaki tek bir gateway'i veya tüm gateway'leri seçme;
* yayımlanmamış katalog kayıtlarını önizleme;
* katalog ve uygulama kayıtlarında arama yapma;
* herkese açık portalı açma;
* bekleyen uygulamaları onaylama veya reddetme;
* bir gateway'in ayrıntılı portal sayfasına geçme.

### Gateway portal yönetimi

Bir gateway açıp **Developer Portal** bölümüne giderek herkese açık kataloğu, üretilmiş OpenAPI belgesini, route'ları, trafiği, uygulamaları, API sürümü yaşam döngüsünü ve SDK dışa aktarımlarını inceleyebilirsiniz. Aynı sayfadan geliştirici uygulaması oluşturabilir ve bekleyen başvuruları değerlendirebilirsiniz.

Yayın etiketleri için Admin Service ve Route API'lerini, portal metadata'sı için Theme API'yi kullanın.

## API haritası

Aşağıdaki endpoint'lerin tümü sürümsüz `/portal` prefix'ini kullanır.

### Herkese açık okuma işlemleri

| Metot ve path                                 | Amaç                                           |
| --------------------------------------------- | ---------------------------------------------- |
| `GET /portal/catalog`                         | Yayımlanmış servis/route kataloğu              |
| `GET /portal/theme`                           | Tenant/gateway portal ayarları                 |
| `GET /portal/services/{service_id}`           | Yayımlanmış tek bir servis                     |
| `GET /portal/services/{service_id}/openapi`   | Üretilmiş OpenAPI 3.0.3 belgesi                |
| `GET /portal/services/{service_id}/changelog` | Yayımlanmış değişiklik günlüğü kayıtları       |
| `GET /portal/services/{service_id}/versions`  | Yayımlanmış ve kullanım dışına alınan sürümler |

Tüm isteklerde `tenant_id` zorunlu, `gateway_id` isteğe bağlıdır. Katalog, servis, değişiklik günlüğü ve sürüm okumaları `include_unpublished=true` parametresini kabul eder. Bu mod, aynı tenant'taki kimliği doğrulanmış ve okuma yetkili yönetici kullanıcının Kangal oturumuna ait Bearer JWT'sini gerektirir. Admin API token'ı portal önizlemesini yetkilendirmez.

### Oturum açmış geliştirici işlemi

| Metot ve path                                     | Amaç                               |
| ------------------------------------------------- | ---------------------------------- |
| `POST /portal/services/{service_id}/applications` | Uygulama kaydetme ve erişim isteme |

Bu endpoint geçerli bir Kangal JWT'siyle birlikte Redis destekli etkin bir kullanıcı oturumu gerektirir. Başvuru sahibi farklı bir organizasyona ait olabilir; seçilen API, yayımlayan tenant'ta herkese açık olmalıdır.

### Yönetici işlemleri

| Metot ve path                                                 | Amaç                                                   |
| ------------------------------------------------------------- | ------------------------------------------------------ |
| `PUT /portal/theme`                                           | Tema metadata'sı oluşturma veya güncelleme             |
| `POST /portal/services/{service_id}/changelog`                | Değişiklik günlüğü kaydı oluşturma                     |
| `POST /portal/services/{service_id}/versions`                 | Taslak veya yayımlanmış sürüm oluşturma                |
| `PATCH /portal/services/{service_id}/versions/{version_id}`   | Yaşam döngüsünü ilerletme veya metadata düzenleme      |
| `GET /portal/services/{service_id}/versions/{version_id}/sdk` | Deterministik SDK ZIP metadata'sı/içeriği dışa aktarma |
| `GET /portal/applications`                                    | Uygulamaları listeleme; isteğe bağlı `status` filtresi |
| `POST /portal/applications/{application_id}/approve`          | Uygulamayı onaylama ve gerektiğinde anahtar üretme     |
| `POST /portal/applications/{application_id}/reject`           | Uygulamayı reddetme                                    |

Yönetici okuma işlemlerine `admin`, `super_admin`, `admin_readonly` ve `read_only_admin`; yazma işlemlerine `admin` ve `super_admin` rolleri erişebilir. Her yönetici işleminde tenant kapsamı doğrulanır. Tema, değişiklik günlüğü, sürüm, SDK, onay ve ret işlemleri ayrıca `developer_portal.manage` yetkisi gerektirir. Uygulama oluşturma işlemi `developer_portal.applications` yetkisini kullanır; limitler tenant'a atanan plana ve override değerine bağlıdır.

## Uçtan uca iş akışı

1. Bir gateway üzerinde servis ve bir veya daha fazla route oluşturun.
2. Servise ve keşfedilmesini istediğiniz her route'a herkese açık portal etiketlerini ekleyin.
3. Anonim katalog ile üretilmiş OpenAPI çıktısını doğrulayın.
4. Bir API sürümü taslağı oluşturun, saklanan sözleşme snapshot'ını inceleyin ve yayımlayın.
5. Geçiş veya sürüm bilgilerini içeren bir değişiklik günlüğü kaydı ekleyin.
6. Servis için manuel uygulama onayı gerekip gerekmediğini yapılandırın.
7. Geliştirici olarak oturum açın, uygulama oluşturun, dönen anahtarı alın ve onaylı bir secret store içinde saklayın.
8. Yönetici olarak bir SDK dışa aktarın ve doğrulayın.
9. Markalı barındırma gerekiyorsa ayrı bir portal özel alan adı binding'i oluşturup DNS ve sertifika etkinleştirmesini tamamlayın.

Ayrıntılar için [API yayımlama ve uygulama yönetimi](/tr/developer-portal/publishing-applications.md) ile [Kimlik bilgileri, SDK'lar ve alan adları](/tr/developer-portal/credentials-sdks-domains.md) bölümlerine bakın.

## Tema alanları

`PUT /portal/theme?tenant_id=...&gateway_id=...` şu alanları kabul eder:

| Alan            | Limit                |
| --------------- | -------------------- |
| `display_name`  | 120 karakter         |
| `logo_url`      | 500 karakter         |
| `primary_color` | 32 karakter          |
| `custom_domain` | 255 karakter         |
| `support_url`   | 500 karakter         |
| `metadata`      | Serbest JSON nesnesi |

Theme API'deki `custom_domain`, portalın görüntüleme ve yapılandırma metadata'sıdır. DNS sahipliği, TLS ve etkin edge binding'i için özel alan adı kaynak iş akışını kullanın.

## Yayın gereksinimi

Normal production yayını açık etiketlemeye dayanır: servis ve route doğru bir portal etiketi taşımalıdır. Seed/demo verileriyle uyumluluk için, sorgulanan kapsamdaki servis ve route'ların **hiçbirinde** portal etiketi yoksa etkin servis ve route'lar katalogda gösterilir. Herhangi bir portal etiketi eklendiği anda yalnızca açıkça yayımlanan kaynaklar gösterilir.

Production gizliliği için bu uyumluluk davranışına güvenmeyin. Geçiş sırasında tüm servis ve route'lara açıkça false/private veya true/public etiketi verin; portalı dış erişime açmadan önce anonim katalogda yalnızca amaçlanan API'lerin göründüğünü doğrulayın.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kangal.dev/tr/developer-portal/developer-portal.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
