# Ukazky volani sluzby v C# ## ListUsersTop10 Konzolova aplikace (.NET 8), ktera zavola `GET /users?top=10` a vypise displayName, userPrincipalName, mail a id kazdeho uzivatele. Obsahuje tridu `CredentialEncoder`, ktera sifruje hodnoty pro hlavicky `X-MS365-Tenant-Id`, `X-MS365-Client-Id` a `X-MS365-Client-Secret` presne tak, jak je sluzba dekoduje v `app/credentials.py`. Tridu lze zkopirovat do libovolneho projektu, nema zadne externi zavislosti. ### Spusteni ```powershell cd examples/csharp/ListUsersTop10 $env:MS365_SERVICE_BASE_URL = "https://services.csbot.cz/apps/microsoft-365-service" $env:MS365_TENANT_ID = "" $env:MS365_CLIENT_ID = "" $env:MS365_CLIENT_SECRET = "" $env:MS365_CREDENTIAL_ENCODING_SECRET = "" dotnet run ``` ### Co ocekavat - `200` a JSON ve tvaru Microsoft Graph: `{ "value": [ ... ], "@odata.nextLink": "..." }`. - `400` kdyz hlavicky chybi, jsou neuplne, prosle nebo je spatny sdileny secret. - `502` kdyz Microsoft Graph nebo prihlaseni k Entra ID selze, detail je v tele odpovedi. - `503` kdyz sluzba nema nastaveny `MS365_CREDENTIAL_ENCODING_SECRET`. - `403 text/plain` kdyz GET neprojde pres reverzni proxy (IP allowlist), tj. problem neni ve sluzbe, ale v sitovem pristupu klienta. Hlavicky lze vynechat jen tehdy, kdyz ma sluzba credentials nastavene v environment promennych na serveru. Instance na services.csbot.cz je nema (`GET /status` vraci `configured: false`), takze tam jsou hlavicky povinne.