Aan de slag met de API

API-sleutels en authenticatie

Elke aanvraag bevat een organisatie-API-sleutel als Bearer-token in de Authorization-header. Sleutels worden in de cloudconsole gemaakt en kunnen tot uw netwerken worden beperkt.

Verstuur bij elke aanvraag de sleutel als Bearer-token in de Authorization-header. De sleutel hoort bij één organisatie en de API leest de organisatie uit de sleutel zelf. Er is dus geen extra header nodig om de organisatie aan te geven; een meegestuurde X-ORGANIZATION-ID-header wordt genegeerd.

curl --request GET \
  --url https://api.serverside.com/v1/baremetal \
  --header 'Authorization: Bearer <api-key>'

De API leest de sleutel ook uit een X-API-KEY-header, een alias voor hetzelfde toegangsbewijs. Een aanvraag bevat slechts één toegangsbewijs: X-API-KEY samen met Authorization, of een van beide headers dubbel, wordt geweigerd met 400 (Authenticatiefouten).

Een sleutel maken

De eerste sleutel komt uit de cloudconsole: in de organisatie-instellingen staat onder Manage API Keys de knop Create an API Key. U geeft een naam op en eventueel de netwerken waarvandaan de sleutel werkt. De aangemaakte sleutel wordt één keer getoond en kan niet opnieuw worden weergegeven. Sla hem daarom direct op in een geheimenbeheerder of omgevingsvariabele.

Een sleutel telt 63 tekens: org_, gevolgd door 59 tekens URL-veilige base64, waaronder - en _. Alleen een Bearer-waarde die met org_ begint wordt als API-sleutel gelezen. Elke andere waarde geldt als consolesessietoken; een sleutel zonder voorvoegsel mislukt dus met 401.

Sleutels worden uitsluitend in de console beheerd. Endpoints voor het maken, opvragen en wijzigen van sleutels vereisen een aangemelde consolesessie. Een sleutel kan daarom geen andere sleutel maken, opvragen of wijzigen.

Bewerkingen die een sleutel niet kan aanroepen

De API-referentie vermeldt alle bewerkingen die een sleutel kan aanroepen. De rest van de API bedient de cloudconsole: organisatie-instellingen, leden, uitnodigingen, rollen, API-sleutels, meldingen, gebruikersprofiel, supporttickets en landen- en valutalijsten. Elk van deze bewerkingen antwoordt een sleutel met 401 en deze body:

{
  "success": false,
  "data": null,
  "code": "UNAUTHENTICATED",
  "message": "This endpoint requires a signed-in user session. Organization API keys are not accepted here.",
  "traceId": "SRV-1A2B-3C4D-5E6F-7A8B"
}

Sleutelmachtigingen

Een nieuwe sleutel krijgt alle machtigingen van de ingebouwde Admin-rol op de aanmaakdatum. Daarom noemt de console elke sleutel Full Permissions. Deze verzameling wordt daarna nooit bijgewerkt. Machtigingen die later aan het platform worden toegevoegd ontbreken bij oudere sleutels; een endpoint dat die controleert antwoordt zo'n sleutel met 403. Een na de wijziging gemaakte sleutel heeft ze wel.

Elke endpointpagina noemt de gecontroleerde machtiging, bijvoorbeeld organization.baremetal.deploy bij Besturingssysteem implementeren. Zeven bewerkingen controleren geen machtiging en zijn voor elke organisatiesleutel beschikbaar: lijsten en detailaanvragen van dedicated-server- en IP-blokconfiguraties, Regio's opvragen, Beschikbare rechten opvragen en SSH-sleutels opvragen. Elke andere bewerking controleert een van deze:

MachtigingBewerkingen
organization.baremetal.readAlle leesaanvragen voor een server: details, status en voedingsstatus, bewerkingen, hardwaremetingen, bandbreedte, activiteit, netwerkpoorten, virtuele netwerken en installeerbare images en applicaties
organization.baremetal.updateServer hernoemen, opstartmodus en iPXE-script lezen of wijzigen
organization.baremetal.deployBesturingssysteem implementeren, hardwaretests uitvoeren en beide annuleren
organization.baremetal.powerVoedingsopdrachten en BMC-resets
organization.baremetal.consoleConsolesessies en virtuele media
organization.baremetal.networkingServersegmenten maken en verwijderen en servers met virtuele netwerken verbinden of loskoppelen
organization.baremetal.lockServer vergrendelen en ontgrendelen
organization.networking.readVirtuele netwerken, IP-blokken en adressen, VLAN-beschikbaarheid en beveiligingsscanresultaten lezen en een nieuwe scan inplannen
organization.networking.virtual.manageVirtuele netwerken maken, hernoemen en verwijderen
organization.networking.addresses.manageAdressen toewijzen, reserveren en vrijgeven en reverse DNS
organization.billing.readBestellingen, facturen en hun pdf's, abonnementen, gebruik en accounttegoed
organization.billing.payFacturen betalen, tegoed kopen en opgeslagen kaarten beheren
organization.billing.orders.createBestellingen en met uurfacturering aangemaakte servers en IP-blokken
organization.billing.subscriptions.manageAbonnementen opzeggen en servers en IP-blokken verwijderen
organization.assets.iso.readISO-images opvragen in de bibliotheek en op een server
organization.assets.iso.manageISO-images uploaden en verwijderen
organization.sshkeys.manageSSH-sleutels toevoegen, hernoemen en verwijderen
organization.activity.readActiviteitenlog van de organisatie

Sleutels met minder machtigingen dan de Admin-rol kunnen niet worden gemaakt; een nieuwe sleutel heeft ze dus allemaal.

Een sleutel tot uw netwerken beperken

Een sleutel zonder toegestane netwerken werkt vanaf elk adres. Zodra er minstens één is ingesteld, wordt een aanvraag van buiten al die netwerken geweigerd alsof de sleutel onjuist is. Een vermelding is een enkel adres (198.51.100.7) of netwerk in CIDR-notatie (198.51.100.0/24), IPv4 of IPv6, ingesteld in de console. Een nieuwe sleutel accepteert maximaal 100 vermeldingen.

De API vergelijkt netwerken met het adres dat Cloudflare voor de verbinding meldt. Krijgt een beperkte sleutel een 401 in de aanvraagplayground, voer dezelfde aanvraag dan met cURL uit vanaf een toegestane machine.

Een sleutel uitschakelen

Uitschakelen in de console stopt een sleutel zonder de instellingen te verliezen; verwijderen wist hem definitief. Een uitgeschakelde, verwijderde of verlopen sleutel laat elke aanvraag op dezelfde manier mislukken als een onjuiste sleutel. De vervaldatum staat los van de aan/uit-schakelaar: het inschakelen van een verlopen sleutel maakt hem niet weer bruikbaar.

Authenticatiefouten

StatuscodeWanneer
400VALIDATION_ERRORDe aanvraag verstuurt X-API-KEY samen met Authorization of een van beide dubbel. Het ene detail INVALID_VALUE noemt die header als field met location header.
401UNAUTHENTICATEDHeader ontbreekt; sleutel is onjuist, uitgeschakeld, verlopen of verwijderd; of de aanvraag komt van buiten de toegestane netwerken. De message is "Authentication is required or the supplied credentials are invalid."
401UNAUTHENTICATEDDe bewerking vereist een consolesessie (Bewerkingen die een sleutel niet kan aanroepen). De message vermeldt dit.
403NO_PERMISSIONDe sleutel is geldig maar mist de machtiging die het endpoint noemt.

Een sleutel die op beide manieren wordt verstuurd krijgt dit antwoord:

{
  "success": false,
  "data": null,
  "code": "VALIDATION_ERROR",
  "message": "X-API-KEY: Send one credential: the API key in the Authorization header or in X-API-KEY, not both.",
  "traceId": "SRV-1A2B-3C4D-5E6F-7A8B",
  "details": [
    {
      "code": "INVALID_VALUE",
      "message": "Send one credential: the API key in the Authorization header or in X-API-KEY, not both.",
      "field": "X-API-KEY",
      "location": "header"
    }
  ]
}

Beide 401-antwoorden bevatten WWW-Authenticate-headers met de toegestane toegangsbewijzen: Bearer en ApiKey header="X-API-KEY" waar een sleutel werkt, alleen Bearer bij consolebewerkingen, waar dit voor het consolesessietoken staat.

De eerste 401 noemt niet welke oorzaak van toepassing was. Controleer achtereenvolgens de sleutel zelf en of deze op Bearer volgt, de status onder Manage API Keys in de console en de toegestane netwerken.