Naar de hoofdinhoud

Provisioning API (instance)

Meer dan 2 maanden geleden bijgewerkt

Inleiding

De Workspace 365 Provisioning API is bedoeld voor het inrichten en beheren van Workspace 365-resources. De API gebruikt een REST-achtige interface, wat betekent dat je in plaats van acties/methoden aan te roepen, de actie definieert die je op een resource wilt uitvoeren via de HTTP-METHOD (d.w.z. GET, POST, PUT en DELETE) en JSON gebruikt als gegevensprotocol.

Vereisten

Om toegang te krijgen tot de Provisioning API moet er bij elk verzoek een zogenaamde Provisioning Key worden verstrekt.

Deze sleutel wordt gegeven tijdens de lancering van de Workspace. Met deze sleutel kun je je hele instantie beheren, bijvoorbeeld het aanmaken of verwijderen van tenants. Dit is zeer gevoelige informatie en moet binnen je organisatie bekend zijn. Als je de sleutel bent kwijtgeraakt, dien dan een supportticket in.

De Provisioning Key wordt verstrekt via de waarde van een header genaamd ProvisioningKey. Bij elk verzoek wordt een extra header meegeleverd: X-Requested-With: XMLHttpRequest.

Er is geen GUI of een manier om de API vanuit de Workspace te bekijken. We beschrijven de beschikbare eindpunten en hun gegevensobjecten per resourcetype. Bij elk eindpunt is een voorbeeld van het verzoek inbegrepen. Deze voorbeelden gaan ervan uit dat Workspace 365 de volgende instellingen heeft:

Houd er rekening mee dat dit voorbeeldwaarden zijn. Controleer je eigen waarden op je eigen instantie.


Provisioning API ingeschakeld

Alleen zelf-gehoste partners moeten controleren of de Provisioning API is ingeschakeld. Voor ons gehoste platform is dit standaard ingeschakeld.

Dit is te vinden in NDAW.WebApp.config met de naam ProvisioningApiEnabled en moet worden ingesteld op True of False, bijvoorbeeld;

<setting name="ProvisioningApiEnabled" serializeAs="String">     <value>TRUE</value> </setting>


ProvisioningKey

Wordt gebruikt om de waarde van de Provisioning Key aan te geven die wordt gebruikt om te authenticeren bij de API. De provisioning key wordt gegeven wanneer je begint als partner en moet binnen je organisatie bekend zijn.

Zelf-gehoste partners kunnen dit vinden in NDAW.WebApp.config met de naam ProvisioningKey, dit moet worden ingesteld op een niet-lege stringwaarde, bijvoorbeeld:

<setting name="ProvisioningKey" serializeAs="String">        <value>00000000-0000-0000-0000-000000000000</value> </setting>

Gehoste partners die hun provisioning key kwijt zijn, kunnen een nieuwe aanvragen. We kunnen geen bestaande provisioning keys verstrekken of verifiëren.


Preview API's

Import/export van omgevingsconfiguratie

Onderdelen die we momenteel exporteren/importeren zijn:

  • Aangepaste app-afbeeldingen

  • Apps (zowel geïnstalleerd uit de catalogus als aangepaste)

  • Standaard workspace template

  • Gedeelde tegelgroepen

  • Gedeelde ruimtes

Opmerking: Niet alle apps worden gelijk geëxporteerd/geïmporteerd. Apps die een relatie hebben met andere configuraties (bijvoorbeeld Clientless RDP of Business App) worden slechts gedeeltelijk geëxporteerd/geïmporteerd. Je moet ze daarna bijwerken.

Eindpunten

Omgeving

POST

/Provisioning/Environment/?version=2.0

Creëert een omgeving en een gebruiker met beheerdersrechten met een tijdelijk wachtwoord. Versie 2

Naam

Gelegen in

Omschrijving

Verplicht

Omgeving

Body

Omgeving op te Creëren

Ja

Schema:

{ EmailAddress:
string (email)
Email address of the admin
EnvironmentName: string
Name of the environment
FirstName: string
First name of the admin
LastName: string
Last name of the admin
}

Code

Omschrijving

Schema

200

Naam van de gecreëerde omgeving. Deze waarde kan verschillen van de ingevoerde gegevens omdat deze is gesaneerd.

{
Id:
string (in GUID format)
Id of a newly created environment

EnvironmentName:
string
Name of the created environment.

TemporaryPassword:
string
Temporary password of created administrator
}

400

Lijst van validatieresultaten

[ValidationResult]

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

POST https://workspace365instance.url/Provisioning/Environment/?version=2.0 HTTP/1.1
Accept: application/json
Content-Length: 148
Content-Type: application/json
ProvisioningKey: 00000000-0000-0000-0000-000000000000
Host: yourworkspace365instance.url
X-Requested-With: XMLHttpRequest{
"EnvironmentName": "{EnvironmentName}",
"EmailAddress": "admin@example.com",
"FirstName": "Admin",
"LastName": "-"
}

PUT

/Provisioning/Environment/{EnvironmentName}/Activate

Activeert de omgeving

Naam

Gelegen in

Omschrijving

Verplicht

Omgevingsnaam

Pad

Naam van de omgeving

Ja

Schema

string 

Antwoorden

Code

Beschijving

Schema

200

De omgeving is actief

string

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

[ValidationResult]

404

De bron is niet gevonden

411

De header “Content-Length: 0” ontbreekt

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject


Voorbeeld

PUT https://workspace365instance.url/Provisioning/Environment/{EnvironmentName}/Activate/ HTTP/1.1 Accept: application/json Content-Length: 0 ProvisioningKey: 00000000-0000-0000-0000-000000000000 Host: yourworkspace365instance.url X-Requested-With: XMLHttpRequest

PUT

/Provisioning/Environment/{EnvironmentName}/Deactivate

Deactiveert de omgeving

Naam

Gelegen in

Omschrijving

Verplicht

Omgevingsnaam

Pad

Naam van de omgeving

Ja

Antwoorden

Code

Omschrijving

Schema

200

De omgeving is gedeactiveerd

string

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

[ValidationResult]

404

De bron is niet gevonden

411

De header “Content-Length: 0” ontbreekt

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

PUT https://workspace365instance.url/Provisioning/Environment/{EnvironmentName}/Deactivate/ HTTP/1.1 Accept: application/json Content-Length: 0 ProvisioningKey: 00000000-0000-0000-0000-000000000000 Host: yourworkspace365instance.url X-Requested-With: XMLHttpRequest

DELETE

/Provisioning/Environment/{EnvironmentName}/

Verwijdert de omgeving

Naam

Gelegen in

Omschrijving

Verplicht

Omgevingsnaam

Pad

Naam van de omgeving

Ja

Schema

string 

Antwoorden

Code

Omschrijving

Schema

200

De omgeving is verwijderd

string

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

[ValidationResult]

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

DELETE https://workspace365instance.url/Provisioning/Environment/{EnvironmentName}/ HTTP/1.1 Accept: application/json ProvisioningKey: 00000000-0000-0000-0000-000000000000 Host: yourworkspace365instance.url X-Requested-With: XMLHttpRequest   

GET

/Provisioning/Environment/

Haalt een lijst met omgevingen op

Antwoorden

Code

Omschrijving

Schema

200

De omgevingen

[
Environment {
name:
string
The name of the environment
isActive:
boolean
Whether the environment is active
creationDate:
date
When the environment was created
}
]

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeelden

GET https://workspace365instance.url/Provisioning/Environment/ HTTP/1.1 Accept: application/json Host: yourworkspace365instance.url ProvisioningKey: 00000000-0000-0000-0000-000000000000 X-Requested-With: XMLHttpRequest


SSO

Dit eindpunt kan worden gebruikt om SSO opnieuw te configureren indien nodig. Raadpleeg dit artikel voor instructies hoe dit te doen.

PUT

/Provisioning/{EnvironmentName}/SingleSignOnSettings/OAuth2/

Stelt instellingen in voor OAuth2-authenticatie (niet beschikbaar wanneer gehost on-premises)

Naam

Gelegen in

Omschrijving

Verplicht

Naam

Omgevingsnaam

Pad

Naam van de omgeving

Ja

Omgevingsnaam

Instellingen

Body

OAuth2-instellingen om te gebruiken

Ja

{
Authority:
string (url)
OAuth2 authority server url
ClientID:
string
OAuth2 client IDKey:
string
OAuth2 key
}

Antwoorden

Code

Omschrijving

Schema

200

Succes

400

Lijst van validatieresultaten

[ValidationResult]

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

PUT https://workspace365instance.url/Provisioning/example/SingleSignOnSettings/OAuth2/ HTTP/1.1  Accept: application/json  Content-Length: 184  Content-Type: application/json  Host: workspace365instance.url  ProvisioningKey: 00000000-0000-0000-0000-000000000000  X-Requested-With: XMLHttpRequest {    "Authority": "https://login.windows.net/company.onmicrosoft.com/",    "ClientId": "6ace5d40-604c-5b2a-102e-513d21132da8c",    "Key": "3e9jCju7tv7f9tz6BPjC711jupUUTF8BSqSAS7+asB="  } 


Licenties

Zelf-gehost? Je moet minimaal v4.3 draaien om deze API te gebruiken.

Versie 3.5

De Licensing API V3.5 moet worden gebruikt terwijl we overstappen van het Simplify/Adapt/Boost-licentiesysteem naar het Module-licentiesysteem (Hybrid/Engage/Unify). We bieden ook een Power BI-dashboard voor beide API's die je kunt gebruiken voor rapportage.

GET

/Provisioning/{EnvironmentName}/Licensing/?version=3.5

Haalt de licentiesamenvatting, modulesamenvatting en klantinformatie op

Naam

Gelegen in

Omschrijving

Benodigd

Schema

Omgevingsnaam

Pad

Naam van de omgeving

Ja

string

Responses

Code

Omschrijving

Schema

200

De licentiesamenvatting

{
summary: {
guest:
integer
The number of active users with a guest license

simplify:
integer
The number of active users with a simplify license

adapt:
integer
The number of active users with an adapt license

boost:
integer
The number of active users with a boost license
},

moduleSummary: {
regularUsers: {
hybrid:
integer
The number of active non guest users with a hybrid module

engage:
integer
The number of active non guest users with an engage module

unify:
integer
The number of active non guest users with a unify module
},

guestUsers: {
hybrid:
integer
The number of active guest users with a hybrid module engage:
integer
The number of active guest users with an engage module unify:
integer
The number of active guest users with a unify module }
},

customer: {
name:
string
Name provided by a Customer

referenceNumber:
string
Reference number provided by a Customer

customerType:
enum
A number that maps to the Customer Type specified by a Customer 1: Business 2: Education 3: Non-Profit 4: Distributor industry: enum A number that maps to the industry
Type specified by a Customer
1: Agriculture
2: Chemical
3: Construction
4: Defense
5: Education
6: Energy
7: Entertainment
8: Financial
9: Food
10: Governmental
11: Health Care
12: Hospitality
13: Information Technology
14: Manufacturing
15: Other
16: Software
17: Telecommunications
18: Transport

UseNewBillingMethod:
bool
Specifies if the old or the new billing method must be used }
}

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden.

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject.

Voorbeeld

GET https://portal.workspace365.net/Provisioning/example/Licensing/?version=3.5 HTTP/1.1 Accept: application/json Host: yourworkspace365instance.url ProvisioningKey: 00000000-0000-0000-0000-000000000000 X-Requested-With: XMLHttpRequest

Versie 4.0

GET

/Provisioning/{EnvironmentName}/Licensing/?version=4.0

Haalt de modulesamenvatting en klantinformatie op

Naam

Gelegen in

Omschrijving

Benodigd

Schema

Omgevingsnaam

Pad

Naam van de omgeving

Ja

string

Antwoorden

Code

Omschrijving

Schema

200

De licentiesamenvatting

{
moduleSummary: {
regularUsers: {
hybrid:
integer
The number of active non guest users with a hybrid module

engage:
integer
The number of active non guest users with an engage module

unify:
integer
The number of active non guest users with a unify module
},

guestUsers: {
hybrid:
integer
The number of active guest users with a hybrid module

engage:
integer
The number of active guest users with an engage module

unify:
integer
The number of active guest users with a unify module
}
},

customer: {
name:
string
Name provided by a Customer

referenceNumber:
string
Reference number provided by a Customer

customerType:
enum
A number that maps to the Customer Type specified by a Customer 1: Business 2: Education 3: Non-Profit 4: Distributor industry: enum A number that maps to the industry
Type specified by a Customer
1: Agriculture
2: Chemical
3: Construction
4: Defense
5: Education
6: Energy
7: Entertainment
8: Financial
9: Food
10: Governmental
11: Health Care
12: Hospitality
13: Information Technology
14: Manufacturing
15: Other
16: Software
17: Telecommunications
18: Transport
}
}

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden.

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject.

Voorbeeld

GET https://portal.workspace365.net/Provisioning/example/Licensing/?version=4.0 HTTP/1.1 Accept: application/json Host: yourworkspace365instance.url ProvisioningKey: 00000000-0000-0000-0000-000000000000 X-Requested-With: XMLHttpRequest


Template

GET

/Provisioning/Environment/{EnvironmentName}/Export/

Het GET-verzoek haalt het volgende op uit de omgeving:

  • Aangepaste app-afbeeldingen

  • Apps (zowel geïnstalleerd uit de catalogus als aangepaste)

    • Niet alle apps worden gelijk geëxporteerd/geïmporteerd. Apps die een relatie hebben met andere configuraties (bijv. Clientless RDP of andere integraties) worden slechts gedeeltelijk geëxporteerd/geïmporteerd. Je moet deze bijwerken na het importeren.

  • Standaard workspace template

  • Gedeelde tegelgroepen

  • Gedeelde ruimtes

Naam

Gelegen in

Omschrijving

Schema

Omgevingsnaam

Pad

Naam van de omgeving

string

Responses

Code

Omschrijving

Schema

200

De geëxporteerde omgevingsconfiguratie

EnvironmentConfiguration

400

Validatieprobleem, controleer het foutresponsgegevensformaat

ApiErrorResponse

401, 403

  • De provisioning key in de configuratie is niet gedefinieerd of leeg.

  • De provisioning API is niet ingeschakeld in de configuratie.

  • De provisioning key in de header komt niet overeen met de geconfigureerde waarde

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeldverzoek

GET https://workspace365instance.url/Provisioning/Environment/{EnvironmentName}/Export/ HTTP/1.1
Accept: application/json
Host: yourworkspace365instance.url
ProvisioningKey: 00000000-0000-0000-0000-000000000000
X-Requested-With: XMLHttpRequest

Voorbeeldantwoord

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
"exportImportInfo": {
"hostingInstanceId": "1cfaad2e-1b58-4dbe-5312-163bbd8a6bd8",
"version": 1,
"exportDateTime": "2019-10-30T15:25:58.9942878+01:00"
},
"appImages": [],
"tileGroups": [
{
"name": "How To",
"type": 2,
"order": 1,
"isNewTilesTarget": false,
"tiles": [
{
"installedAppId": 1,
"name": null,
"appImage": null,
"parameters": null,
"position": {
"column": 0,
"row": 0
},
"dimension": {
"columnSpan": 8,
"rowSpan": 8
},
"color": null
}
]
},
{
"name": "To-Do",
"type": 3,
"order": 1,
"isNewTilesTarget": false,
"tiles": [
{
"installedAppId": 2,
"name": null,
"appImage": null,
"parameters": null,
"position": {
"column": 0,
"row": 0
},
"dimension": {
"columnSpan": 8,
"rowSpan": 8
},
"color": null
}
]
}
],
"apps": [
{
"id": 1,
"appId": 1,
"type": null,
"name": null,
"parameters": null,
"image": null,
"color": null,
"everyoneHasAccess": true,
"maintenanceWindow": null,
"conditionalAccessPolicy": null
},
{
"id": 2,
"appId": 2,
"type": null,
"name": null,
"parameters": null,
"image": null,
"color": null,
"everyoneHasAccess": true,
"maintenanceWindow": null,
"conditionalAccessPolicy": null
}
]
}

PUT

/Provisioning/Environment/{EnvironmentName}/Import/

Importeert een omgevingsconfiguratie

Een omgevingsconfiguratie kan alleen worden geïmporteerd in een omgeving die aan de volgende criteria voldoet:

  • Omgeving heeft slechts 1 gebruiker, de beheerder

  • Geen aangepaste apps geconfigureerd

  • Geen aangepaste app-pictogrammen toegevoegd

  • Geen tegelgroepen geconfigureerd

  • Geen gedeelde ruimtes geconfigureerd, alleen de persoonlijke ruimte van de beheerder moet bestaan

Als aan een van deze vereisten niet wordt voldaan, retourneert het verzoek een fout 400 met de respons "Omgeving is niet leeg".

Naam

Gelegen in

Omschrijving

Schema

Omgevingsnaam

Pad

Naam van de omgeving

string

Configuratie

Body

De configuratie die is gemaakt tijdens de export

EnvironmentConfiguration

Antwoorden

Code

Description

Schema

200

Success

400

Validatieprobleem, controleer het foutresponsgegevensformaat

ValidationResult

401, 403

  • De provisioning key in de configuratie is niet gedefinieerd of leeg.

  • De provisioning API is niet ingeschakeld in de configuratie.

  • De provisioning key in de header komt niet overeen met de geconfigureerde waarde

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeldverzoek:

PUT https://workspace365instance.url/Provisioning/Environment/{EnvironmentName}/Import/ HTTP/1.1
Accept: application/json
Content-Length: 23965
Content-Type: application/json
Host: yourworkspace365instance.url
ProvisioningKey: 00000000-0000-0000-0000-000000000000
X-Requested-With: XMLHttpRequest

Voorbeeldantwoord:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8


Email (Exchange)

PUT

/Provisioning/{EnvironmentName}/ExchangeSettings/

Stelt de instellingen van de Exchange-diensten in

Houd er rekening mee dat de PowerShellUrl is verouderd. Dit eindpunt blijft werken, maar zonder de mogelijkheid om de PowerShellUrl in te stellen. Zie dit artikel voor meer informatie.

Naam

Gelegen in

Omschrijving

Benodigd

Schema

Omgevingsnaam

Pad

Naam van de omgeving

Ja

string

Settings

Body

Exchange-instellingen om te gebruiken

Ja

{
ServerType:
enum The server type of the exchange server. - Office365 - OnPremises
DefaultEwsUrl: string (url) Default EWS address used when performing “Auto discover”. When left out
this property is ignored}

Antwoorden

Code

Omschrijving

Schema

200

Succes

400

Lijst van validatieresultaten

[ValidationResult]

403

  • De provisioning key in de configuratie is niet gedefinieerd of leeg.

  • De provisioning API is niet ingeschakeld in de configuratie.

  • De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

PUT https://workspace365instance.url/Provisioning/{EnvironmentName}/ExchangeSettings/ HTTP/1.1 Accept: application/json Content-Length: 178 Content-Type: application/json Host: yourworkspace365instance.url ProvisioningKey: 00000000-0000-0000-0000-000000000000 X-Requested-With: XMLHttpRequest{   "ServerType": "Office365",   "DefaultEwsUrl": "https://outlook.office365.com/ews/exchange.asmx" }


SharePoint

PUT

/Provisioning/{EnvironmentName}/SharePointSettings/

Stelt de instellingen van de SharePoint-diensten in.

Houd er rekening mee dat je de SharePoint-URL van een bestaande omgeving niet kunt wijzigen met deze API. De waarde "DefaultUrl" werkt een veld bij dat alleen wordt gebruikt bij het voor de eerste keer inloggen in een nieuw gecreëerde omgeving als de beheerder die de omgeving heeft gecreëerd.

Naam

Gelegen in

Omschrijving

Benodigd

Schema

Omgevingsnaam

Pad

Naam van de omgeving

Ja

string

Settings

Body

Exchange-instellingen om te gebruiken

Ja

{   DefaultUrl:     string (url)   Default SharePoint address used when    performing “Auto discover”.    When left out this property is ignored      AuthenticationType:     enum   The authentication type used when    connecting to SharePoint.   -	Online   -	ActiveDirectoryFederationServices   -	OAuth2 }

Antwoorden

Code

Omschrijving

Schema

200

Succes

400

Lijst van validatieresultaten

[ValidationResult]

403

De provisioning key in de configuratie is niet gedefinieerd of leeg. De provisioning API is niet ingeschakeld in de configuratie. De provisioning key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden

500

Interne serverfout. Dit kan worden veroorzaakt door het doorgeven van een onjuist gegevensobject

Voorbeeld

PUT https://workspace365instance.url/Provisioning/{EnvironmentName}/SharePointSettings/ HTTP/1.1 Accept: application/json Content-Length: 72 Content-Type: application/json Host: yourworkspace365instance.url ProvisioningKey: 00000000-0000-0000-0000-000000000000 X-Requested-With: XMLHttpRequest{   "DefaultUrl": "https://example.sharepoint.com",   "AuthenticationType": "Online" }


Gezondheidsstatus

GET

/api/health

Haalt de gezondheidsstatus op

Gezondheidsstatuscode

Status

Omschrijving

FAIL

De gezondheidscontrole is mislukt en de component is niet beschikbaar of heeft niet tijdig gereageerd.

OK

De gezondheidscontrole is geslaagd en de component is beschikbaar.

NOT_APPLICABLE

De component wordt in dit geval niet gebruikt en de gezondheidscontrole is niet uitgevoerd.

TIMEOUT

De gezondheidscontrole is niet tijdig voltooid.


Antwoorden

Code

Omschrijving

Schema

200

De gezondheidscontrole-samenvatting

HealthCheckResult {   overallStatus:   string    The combined result of all components.     The status will be OK if all health     checks performed were successful.   components:     list of ComponentHealthResult     A list of the results of all the     health checks on the individual     components.   productVersion:   string    The version of Workspace 365 software     running. }

403

De Health API Key in de configuratie is niet gedefinieerd of leeg.

De Health API is niet ingeschakeld in de configuratie.

De Health API Key in de header komt niet overeen met de geconfigureerde waarde.

404

De bron is niet gevonden.

500

Interne serverfout.

Voorbeeld

GET https://portal.workspace365.net/api/health HTTP/1.1 
Host: portal.workspace365.net
HealthApiKey: 00000000-0000-0000-0000-000000000000

{ "overallStatus": "OK", "components": [ { "component": "Database", "status": "OK", "responseTime": "00:00:00.0092007" }, { "component": "Redis", "status": "OK", "responseTime": "00:00:00.0035770" }, { "component": "RabbitMq", "status": "OK", "responseTime": "00:00:00.0297460" }, { "component": "BlobStorage", "status": "OK", "responseTime": "00:00:00.0034293" }, { "component": "Elasticsearch", "status": "OK", "responseTime": "00:00:00.0783747" } ], "productVersion": "4.7.0.732-rc" }


Inleiding

De Workspace 365 Health API is bedoeld om een snel overzicht te bieden van de status van de Workspace 365-componenten en de subservices die we gebruiken. Is de databaseverbinding gezond? Hoe lang duurt het om verbinding te maken? En hoe zit het met Redis of Blob Storage? Het doel is om ongezonde servicestatus of ongezonde afhankelijkheden te automatiseren en te detecteren.

Deze API gebruikt een REST-achtige interface, wat betekent dat je in plaats van acties/methoden aan te roepen, de actie definieert die je wilt uitvoeren op een resource via de HTTP METHOD GET en JSON gebruikt als gegevensprotocol.

Vereisten

Er zijn twee vereisten:

  • De API moet zijn ingeschakeld in Workspace 365.

  • Om toegang te krijgen tot de Health API moet er bij elk verzoek een sleutel worden verstrekt. De Health API Key wordt verstrekt via de waarde van een header genaamd HealthApiKey.

De Health API bevindt zich op /api/health (bijvoorbeeld wanneer Workspace 365 is gehost op

Er is geen GUI of een manier om de API vanuit de Workspace te bekijken. We beschrijven het beschikbare eindpunt en de gegevensobjecten per resourcetype. Inbegrepen bij het eindpunt is een voorbeeld van het verzoek, waarbij wordt aangenomen dat Workspace 365 de volgende instellingen heeft:

Health API ingeschakeld

Dit wordt gebruikt om aan te geven of de Health API is ingeschakeld.

Dit is te vinden in NDAW.WebApp.config met de naam HealthApiEnabled. Dit moet worden ingesteld op True of False, bijvoorbeeld:

<setting name="HealthApiEnabled" serializeAs="String">
<value>True</value>
</setting>

Health API sleutel

Dit wordt gebruikt om de waarde van de Health API Key aan te geven, die nodig is om te authenticeren bij de API.

Dit is te vinden in NDAW.WebApp.config met de naam HealthApiKey. Het moet worden ingesteld op een niet-lege stringwaarde, bijvoorbeeld:

<setting name="HealthApiKey" serializeAs="String"> 
<value>00000000-0000-0000-0000-000000000000</value>
</setting>

Algemene Gegevensobjecten

ComponentHealthResult {
component:
string
The name of the component which was health-checked.

status:
string
The result status of the health check performed for the component.

responseTime:
string
The time elapsed while the health check was being performed, in the format hours: minutes : seconds (include fractional seconds).
}


RabbitMQ 'FAIL' status

healthcheck_api_fail.png

Verklaring:

RabbitMQ is een verplicht onderdeel van het hosten van de Document Move Service. RabbitMQ hoeft niet te worden gehost op dezelfde machine (VM) als Workspace 365. Deze services communiceren via een TCP-verbinding, die is gedefinieerd in de configuratie van de verbindingsreeks.

We controleren altijd de gezondheidsstatus op elke Workspace 365-webserver afzonderlijk. De status van de RabbitMQ-service geeft aan of de webserver verbinding kan maken met RabbitMQ. Als de status van de RabbitMQ-service wordt weergegeven als 'Fail', kan het zijn dat de controle wordt uitgevoerd op een machine terwijl de service op een andere machine draait.

Oplossing:

Op alle webservers moet de RabbitMQ AddConnectionString verwijzen naar de machine waar de RabbitMQ-service op draait, met behulp van "IP van machine" (IPOFMachine) met TCP-poort 5672.

AddConnectionString("RabbitMq", @"amqp://CreatedUser:CreatedPassword@IPOFMachine/Instancename");

Zorg er in het parameterbestand ook voor dat AllowCrossSiteMove is ingesteld op "True":

AddTransform("AllowCrossSiteMove", @"True");

Was dit een antwoord op uw vraag?