Podle zadani "MS365 prava konektoru": - Calendar: calendarView, getSchedule, get/patch/delete udalosti - Planner: plany skupiny, buckety, tasky, create/patch/delete s ETag - GET /admin-consent/url pro onboarding klientskeho tenantu - examples/csharp/ListUsersTop10: ukazka volani GET /users?top=10 vcetne sifrovani hlavicek X-MS365-* - README: multitenant napojeni, endpointy, opravneni, zaznam zmen Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
37 lines
1.5 KiB
Markdown
37 lines
1.5 KiB
Markdown
# 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 = "<tenant id>"
|
|
$env:MS365_CLIENT_ID = "<client id>"
|
|
$env:MS365_CLIENT_SECRET = "<client secret>"
|
|
$env:MS365_CREDENTIAL_ENCODING_SECRET = "<sdileny secret, stejny jako na serveru>"
|
|
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.
|