# Erişim talebi: eksik izni yöneticiden istemek

Uygulamanın bir kuruluma, ERP sorgusuna, uygulama izni atamasına ya da yetki alanına ihtiyacı olduğunu fark
ettiğinizde kullanıcıya teknik adım anlatmayın: talebi **kendiniz gönderin**, kullanıcıya sade dille bildirin
("Uygulamanın Portal'da görünmesi için yöneticinizden onay istedim; onaylanınca e-postayla haber verilecek").

⛔ Talep izni kendiliğinden **vermez**. Yönetici Devoplus Console'da onaylar ya da gerekçesiyle reddeder; sonuç talep
sahibine e-postayla bildirilir ve aşağıdaki araçlarla sorgulanır.

## Nasıl gönderilir

| Yol | Gönder | Durum |
|---|---|---|
| Devoplus One MCP sunucusu (`<bu adres>/mcp`) | `one_request_access` | `one_list_my_requests`, `one_get_request` |
| Komut satırı (`@devoplus/one-sdk`) | `one request <tür> ...` | `one requests [kimlik]` |

Oturumdaki portalın adı ve var olan kısa adı (portal anahtarı) için `one_portal_context` aracı ya da `one context`
komutu kullanılır (salt okuma). Kurulum talebinden önce kullanıcıya portal adresini ya da anahtarını **sormayın**.

Portalda Devoplus One uygulamalarına açılmış DEXA sorgularını `one_dexa_queries` aracı ya da `one dexa queries`
komutu listeler (salt okuma): anahtar, yön, bugün kullanılıp kullanılamadığı, açıklama, giriş parametreleri ve dönen
sütunlar. `dexa-query` talebinden önce buna bakın ve anahtarı **listeden aynen** alın; uydurmayın. Liste izin vermez.

Önce MCP aracını kullanın; MCP bağlı değilse `one login` + `one request`. Bazı ortamlarda MCP araçlarının sonucu
kullanıcıya Devoplus One kartı olarak da görünür (talebin türü, durumu, gerekçesi). Kartın çizilip çizilmediğini
bilemezsiniz; sonucu her zaman kısa bir cümleyle söyleyin. Gönderen kişi ve portal **oturumdan**
gelir; talepte portal ya da kişi bilgisi yoktur. Kullanıcı Devoplus hesabıyla giriş yaparken portalı seçer.

## Türler

| Tür | Ne ister | Zorunlu alan | Kime düşer |
|---|---|---|---|
| `registration` | Yeni uygulama kaydı (onaylanınca gönderen **sahip** olur) | `titleTr` (İngilizce ad ve `additionalPermissions` isteğe bağlı) | Şirket yöneticisi |
| `installation` | Uygulamanın bir portala kurulması | Yok (`portalKey` isteğe bağlı) | Şirket yöneticisi |
| `dexa-query` | ERP okuma sorgusunun uygulamaya açılması | `queryKey` | Şirket yöneticisi |
| `dexa-command` | ERP'ye yazan işlemin uygulamaya açılması | `queryKey` | Şirket yöneticisi |
| `app-permission` | Uygulama izninin bir kullanıcı grubuna atanması | `permissionCode` (+ ad, isteğe bağlı grup) | Şirket yöneticisi |
| `scope` | Uygulamaya yeni bir yetki alanı | `scope` (`<modül>.<read\|write\|manage\|execute>`) | Platform yöneticisi |
| `new-query` | Henüz olmayan bir ERP sorgusu için iş talebi | `description` (+ isteğe bağlı `draftSql`) | Şirket yöneticisi |

Onaylayan, talebin portalının **şirket yöneticisidir** (küresel yönetici de onaylayabilir); yalnız yetki alanı (`scope`)
talepleri platform yöneticisine düşer.

Ortak alanlar: `appSlug` (manifest `app.slug`) ve `justification` (yöneticinin okuyacağı kısa gerekçe, en çok 2.000
karakter). Gerekçeyi kullanıcının iş diliyle yazın: "Satış ekibi müşteri bakiyesini uygulamada görebilsin diye".

`registration`: uygulama içi izinleri (rolleri) **kayıt talebinde** isteyin: `additionalPermissions` =
`[{ code, nameTr, nameEn? }]`, en çok 16; kod `One.<Uygulama>.<Eylem>` biçiminde ve ana iznin (`One.<Uygulama>.Use`)
ad alanında olur, ana kodun kendisi olamaz. Onayla birlikte izin kataloğuna girer. Kayıttan **sonra** izin eklemenin
talep türü yoktur: izni uygulamanın ana portalının şirket yöneticisi Devoplus Console'dan ekler, sahip listesini de o
değiştirir; ana portalı belirlenemeyen uygulamada bu ikisini platform yöneticisi yapar. Bu yüzden manifest `permissions` listesindeki bütün izinleri kayıtta isteyin. Komut
satırında: `one request registration --title "<ad>" --permission One.Hello.Manage="Yönetir" [--permission-en One.Hello.Manage="Manages"]`.

`installation`: portal anahtarını sunucu portalın adından belirler (örneğin "Süvari Portal" için `suvari`); elle
seçilemez. `portalKey` göndermeyin, kullanıcıya sormayın ve uydurmayın; gönderilirse yok sayılır. Portalın adı ve var
olan anahtarı `one_portal_context` ile okunur.

`app-permission`: `permissionCode` uygulamanın kaydında (ana izin ya da kayıtta istenen ek izinler) tanımlı olmalıdır;
değilse talep baştan reddedilir.

`dexa-query`: `queryKey` `one_dexa_queries` listesindeki **kullanılabilir** bir anahtardır (harf duyarlı). Listede
"kullanılamaz" yazan sorgu istenemez; uygun sorgu yoksa `new-query` gönderin. "bağlam kodu" işaretli parametreleri
platform oturumdan doldurur: okuma sorgusunda `LangCode`, `UserCode`, `CompanyCode`, `CostCenterCode`'u uygulama
göndermez (kurulumda bağlam kodu onayı varsa son üçünü gönderebilir; arka plan işinde doldurulmaz, ayrıntı SDK
başvurusunda). Sütun adlarını
kodda listedeki gibi kullanın; gerçek sonuç yine de çalışma anında doğrulanır.

`new-query`: `draftSql` yalnız bir öneridir, hiçbir yerde **çalıştırılmaz**; yönetici sorguyu kendisi oluşturur ve
onaylarken sorgu anahtarını yazar. Onaydan sonra `one_get_request` sonucundaki sorgu anahtarını manifest'e ekleyin.

## Kurallar ve hatalar

| Durum | Ne olur |
|---|---|
| Talebi gönderen uygulamanın sahibi değil (kayıt hariç) | 403 `ONE-APP-E-039`; kullanıcıya uygulamanın sahibinin kim olduğunu sorun |
| Kısa ad zaten kayıtlı (kayıt talebi) | 409 `ONE-APP-E-038`; başka bir kısa ad seçin |
| Kısa ad pasife alınmış bir uygulamaya ait | 409 `ONE-APP-E-107`; bu kısa ad yeniden kaydedilemez, başka bir kısa ad seçin |
| Aynı talep zaten bekliyor | 409 `ONE-APP-E-040`; yeniden göndermeyin, durumunu izleyin |
| Kişi başına saatte 20 talep aşıldı | 429 `ONE-APP-E-041` |
| İzin kodu uygulamanın ad alanında değil | 400 `ONE-APP-E-047`; kod `One.<Uygulama>.<Eylem>` biçiminde olmalı |
| Ek izin biçimsiz, ad alanı dışında, ana kodla aynı ya da yinelenen; 16'dan fazla | 400; açıklamayı kullanıcıya iletin, listeyi düzeltip yeniden gönderin |
| `app-permission` kodu uygulamanın kaydında yok | 400; izni önce uygulama kaydına ekletin (ana portalın şirket yöneticisi, Devoplus Console), sonra talebi yeniden gönderin |
| Oturumda portal yok | 403 `ONE-APP-E-037`; kullanıcı yeniden giriş yapıp portal seçmeli |
| Vekalet ya da Yerine Görüntüle oturumu | Talep gönderilmez; kullanıcı kendi oturumuyla bağlanmalı |

Reddedilen talebin notunu kullanıcıya olduğu gibi iletin ve ne yapılabileceğini birlikte düşünün.
