Exchange valt buiten deze API/CLI-release. Eventuele historische Exchange-voorbeelden in deze gids zijn niet beschikbaar; dit zegt niets over bestaande portaalfuncties. Zie het [actuele releasebereik](/developers/guides/release-scope?lang=nl).

# Hosting- en Exchange-serverbeheer

Dit beheer vereist een echte interne beheerder met `admin:read`/`admin:write`, recente passkeyverificatie en de afzonderlijke beheerflags. De beheercontext is een expliciet gekozen bedrijf. Serviceverbindingen, gewone eigenaars en resellers kunnen geen leveranciersservers configureren.

```bash
binadit admin hosting servers list --account 123 --output json
binadit admin exchange servers get 8 --account 123 --output json
binadit admin exchange servers update 8 --account 123 \
  --version 'ETAG_UIT_GET' --set exchange_version=2019-cu15 --dry-run
```

API: `/api/v1/accounts/{account}/admin/hosting/servers` en `/admin/exchange/servers` hebben `GET`/`POST` op de collectie, en `GET`/`PATCH`/`DELETE` op `/{server}`. Collecties gebruiken `limit` (maximaal 100), `cursor` en `meta.next_cursor`. Een afzonderlijke read levert de ETag. Wijzigen, verwijderen en metadata verversen vereisen `If-Match` en een idempotentiesleutel. Ook de dry-run toetst dezelfde versie en actuele beheerrechten.

## Verbinding aanmaken of sleutel vervangen

Maak een JSON-bestand met private bestandsrechten, of lever de JSON via een vertrouwde stdinbron. Geheimen horen niet in `--set`, shellgeschiedenis of commandoregelargumenten. Gebruik bijvoorbeeld `binadit admin exchange servers create --account 123 --from-file -` en lever de JSON via stdin. De volledige velden en vereisten staan in OpenAPI; de API retourneert alleen metadata en `has_credentials`.

Hosting vereist `hostname`, `ipv4`, `username` en `password` (16 tot 4096 tekens). `ipv6`, `max_websites` en `is_default` zijn optioneel. Een bare Hosting-hostnaam gebruikt HTTPS op poort 8443; een expliciete HTTPS-origin kan een andere poort aangeven. De gekoppelde private DNS-template bevat de normale Hosting-records en blijft zichtbaar in het portaal. De gekozen beheercontext moet voor een nieuwe template een unieke bestaande klantbinding hebben. Een wachtwoordrotatie overschrijft een handmatig aangepaste DNS-template niet.

Exchange vereist `hostname` als HTTPS-origin, `directory_domain` en `api_key`. Optioneel: `exchange_version`, `webmail_url`, `owner_account_id` en `is_default`. Een eigenaar is een expliciet actief bedrijf met een unieke klantbinding; `null` maakt een ongebruikte server gedeeld. Een private server kan niet de gedeelde standaard zijn. Nieuwe origins bevatten geen authenticatiegegevens, pad, query of fragment.

Bij wijzigen blijven weggelaten inloggegevens behouden. Nieuwe sleutels worden versleuteld opgeslagen en direct na opslag teruggelezen om de roundtrip te controleren. Oude onleesbare Exchange-sleutels worden niet ontsleuteld, vervangen of gerepareerd zonder expliciet nieuw aangeleverde sleutel. Providerwachtwoorden en tokens verschijnen nooit in metadata, operatie-uitkomsten of voorbeeldbestanden in deze repository.

## Exchange-databases ophalen en kiezen

```bash
binadit admin exchange servers refresh-databases 8 --account 123 \
  --version 'ETAG_UIT_GET' --dry-run
binadit admin exchange servers refresh-databases 8 --account 123 \
  --version 'ETAG_UIT_GET'
```

Dit gebruikt `POST .../exchange/servers/{server}/actions/refresh-databases`. De dry-run maakt geen leveranciersverbinding. Uitvoeren leest maximaal 200 unieke, begrensde database-identiteiten via de bestaande Exchange-providerverbinding en bewaart de inventaris. De geselecteerde database verandert niet automatisch. Kies na deze read een exacte database-identiteit via `PATCH` met `database`, een nieuwe ETag en een nieuwe expliciete wijzigingsintentie. Een al gebruikte server kan met gewone configuratie niet naar een andere database worden omgeleid.

Een bestaande onleesbare sleutel geeft `provider_credential_unavailable`; voer eerst een nieuwe sleutel in. Een onduidelijke provideruitkomst herhaalt de opgeslagen operatie niet automatisch. Onderzoek de oorspronkelijke operatie vóór een nieuwe intentie.

## Verwijderen en bestaande diensten

```bash
binadit admin hosting servers delete 8 --account 123 \
  --version 'ETAG_UIT_GET' --confirm-server 8
```

Dit verwijdert uitsluitend ongebruikte portaalconfiguratie. Een leverancier, DNS-template, mailbox of Hosting-abonnement wordt niet verwijderd. Bestaande lokale resourceverwijzingen verhinderen verwijdering en wijzigingen aan de routering of bedrijfseigenaar. Openstaande of onbekende leverancierstaken verhinderen sleutelrotatie en verwijdering. Rond zulke taken eerst aantoonbaar af of migreer de betrokken diensten via een daarvoor bedoelde workflow; wijzig geen databaseverwijzingen handmatig om de blokkade te omzeilen.

De nieuwe instellingen gebruiken dezelfde portaalmodellen, bestaande encryptie en canonieke Exchange-sleutelopslag. Het aanmaken van configuratie provisiont niet zelfstandig een server, mailbox of betaald abonnement. Hosting-pakketsynchronisatie, leveranciersimports en overdrachten hebben hun eigen contract en acceptatiebewijs in de functiematrix.

## Hosting-serverbeheer in het portaal

**Hosting → Servers** gebruikt voor aanmaken, wijzigen en verwijderen dezelfde autorisatie, versies en verbindingscontroles als de API. Het formulier bewaart de getoonde versie en vraagt recente passkeyverificatie. De lijst is gepagineerd; wijzigen of verwijderen van gekoppelde routering is ook via het portaal geblokkeerd.

Het bewerkformulier toont het bestaande Plesk-wachtwoord nooit, ook niet in een verborgen veld of HTML-attribuut. Laat het nieuwe wachtwoord leeg om de bestaande versleutelde waarde te behouden. Een oude onleesbare sleutel kan daardoor niet ongemerkt worden vervangen door een leeg wachtwoord. Een geldige, ongewijzigde oudere hostnaam wordt in het formulier als HTTPS-adres weergegeven en niet als een nieuwe routeringswijziging teruggestuurd. Andere verbindingen vereisen een expliciete wijziging met de huidige versie.

Verwijderen bevestigt precies de geselecteerde lokale server-ID. Het verwijdert geen Plesk-server, Hosting-abonnement of historische DNS-template. Koppelingen met abonnementen of onveranderlijke pakketplanversies blokkeren verwijdering en routeringswijzigingen; onafgerond werk blokkeert sleutelrotatie. Een afgeronde planbinding staat een expliciete wachtwoordrotatie wel toe, met behoud van exact dezelfde leveranciersidentiteit en teruggelezen plan.

Na het toevoegen van een server moeten de gewenste [Hosting-pakketten](/developers/guides/hosting-package-administration?lang=nl) expliciet op die server worden bevestigd. Serverconfiguratie alleen doet geen Plesk-planpublicatie.
