Appearance
Mutations
Overzicht van alle beschikbare mutations met voorbeelden.
Registratie: bij registratie roept de frontend de register-mutatie aan. Die maakt in één keer organisatie, environment en user aan (met e-mail en optioneel wachtwoord) en koppelt ze.
register
Maakt in één keer een organisatie, environment en user aan en koppelt ze. De user krijgt een Email-object en optioneel een PasswordCredential. Wachtwoord is optioneel (bijv. voor OAuth-only users).
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | RegisterInput! | Ja | Bevat email (verplicht), password (optioneel), organizationName, environmentName, displayName. |
Minimale variabelen (alleen email + eventueel password):
json
{
"input": {
"email": "[email protected]",
"password": "geheim123"
}
}Voorbeeld-mutation:
graphql
mutation Register($input: RegisterInput!) {
register(input: $input) {
user {
uuid
displayName
created
email {
address
verified
}
hasPassword
}
organization {
uuid
name
}
environment {
uuid
name
}
}
}Variabelen (uitgebreid):
json
{
"input": {
"email": "[email protected]",
"password": "geheim123",
"organizationName": "Mijn Bedrijf",
"environmentName": "default",
"displayName": "Jan Jansen"
}
}login
Logt een gebruiker in met e-mail en wachtwoord. Bij succes retourneert de API een token en de user. De API zet geen cookie; de client (bijv. monitor.persmonitor.nl) slaat de token op en stuurt die bij volgende requests mee in de header Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | LoginInput! | Ja | Bevat email en password. |
Voorbeeld-mutation:
graphql
mutation Login($input: LoginInput!) {
login(input: $input) {
user {
uuid
displayName
created
changed
email { address verified }
hasPassword
isAdmin
}
token
refreshToken
message
}
}Variabelen:
json
{
"input": {
"email": "[email protected]",
"password": "geheim123"
}
}Bij succes krijg je token (access token, 15 min geldig), refreshToken (7 dagen) en user. Sla beide tokens op; gebruik refreshToken voor de mutatie refreshToken om de sessie te verlengen.
Bij verkeerde gegevens: GraphQL-error met boodschap "These credentials do not match our records." of "Invalid email address." / "Password is required."
logout
Maakt de huidige token ongeldig. Stuur de token mee in de header Authorization: Bearer <token> (niet via cookie; de API is stateless).
Geen argumenten. Response is de string "Logged out.".
Geen of ongeldige token: GraphQL-error "Not authenticated. Send Authorization: Bearer <token>."
Voorbeeld-mutation:
graphql
mutation Logout {
logout
}refreshToken
Geeft nieuwe access + refresh tokens terug. Stuur de refresh token in de header Authorization: Bearer <refresh_token>. De oude refresh token wordt ongeldig (rotation). Handig voor een heartbeat: zo blijft de sessie verlengd zonder opnieuw in te loggen.
Geen argumenten. Response is een object met accessToken en refreshToken. Sla beide op.
Voorbeeld-mutation:
graphql
mutation RefreshToken {
refreshToken {
accessToken
refreshToken
}
}Zie Auth, sessie & heartbeat voor hoe de monitor dit gebruikt.
deleteSession
Beëindigt één specifieke sessie (AuthSession) voor de huidige gebruiker. Handig voor de “Sessies”-pagina zodat je jezelf op afstand kunt uitloggen. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
uuid | String! | Ja | UUID van de sessie (bijv. uit mySessions). |
graphql
mutation DeleteSession($uuid: String!) {
deleteSession(uuid: $uuid)
}Response is true bij succes. Bij een onbekende UUID of een sessie die niet bij de gebruiker hoort, volgt een GraphQL-fout.
deleteOtherSessions
Beëindigt alle andere sessies behalve de huidige. Handig als een gebruiker “overal elders” wil uitloggen na verlies van een device. Vereist Authorization: Bearer <token>.
Geen argumenten.
graphql
mutation DeleteOtherSessions {
deleteOtherSessions
}Response is true bij succes.
setCurrentEnvironment
Koppelt een environment aan de huidige sessie. De monitor-app gebruikt dit wanneer je in de UI een ander environment kiest. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
environmentUuid | String! | Ja | Environment waar de gebruiker toegang toe heeft. |
graphql
mutation SetCurrentEnvironment($environmentUuid: String!) {
setCurrentEnvironment(environmentUuid: $environmentUuid) {
uuid
name
}
}Als de gebruiker geen toegang heeft, krijg je een GraphQL-fout. De nieuwe waarde is vervolgens zichtbaar via de query currentEnvironment.
createOrganization
Maakt een nieuwe organisatie aan.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateOrganizationInput! | Ja | Bevat name. |
Voorbeeld:
graphql
mutation CreateOrganization($input: CreateOrganizationInput!) {
createOrganization(input: $input) {
uuid
name
created
changed
}
}Variabelen:
json
{
"input": {
"name": "Mijn Bedrijf"
}
}createEnvironment
Maakt een nieuw environment aan onder een bestaande organisatie.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateEnvironmentInput! | Ja | Bevat organizationUuid en name. |
Voorbeeld:
graphql
mutation CreateEnvironment($input: CreateEnvironmentInput!) {
createEnvironment(input: $input) {
uuid
name
created
changed
organization {
uuid
name
}
}
}Variabelen:
json
{
"input": {
"organizationUuid": "uuid-van-de-organisatie",
"name": "production"
}
}createP2000Message
Maakt een nieuw P2000-bericht aan en kan optioneel capcodes koppelen.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateP2000MessageInput! | Ja | Bevat message, sended (ISO-8601), optioneel capcodes. |
Voorbeeld:
graphql
mutation CreateP2000Message($input: CreateP2000MessageInput!) {
createP2000Message(input: $input) {
uuid
message
sended
created
capcodes {
uuid
name
}
}
}Variabelen:
json
{
"input": {
"message": "A1 DIA 16167 Rit 75494 Amsterdam",
"sended": "2025-10-09T14:30:00Z",
"capcodes": [
{ "name": "0100001" },
{ "name": "1300031" }
]
}
}switchEnvironment
Wisselt naar een ander environment. Maakt een nieuwe sessie aan met het gekozen environment en retourneert nieuwe access + refresh tokens. De oude sessie wordt ongeldig. De monitor-app gebruikt dit bij de environment-switcher. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
environmentUuid | String! | Ja | UUID van het environment waar je naartoe wilt. |
graphql
mutation SwitchEnvironment($environmentUuid: String!) {
switchEnvironment(environmentUuid: $environmentUuid) {
accessToken
refreshToken
environment {
uuid
name
}
}
}Sla de nieuwe accessToken en refreshToken op; de oude token is daarna ongeldig.
updateOrganization
Werk een organisatie bij (naam). Vereist Authorization: Bearer <token> en lidmaatschap van de organisatie.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | UpdateOrganizationInput! | Ja | Bevat uuid en name. |
graphql
mutation UpdateOrganization($input: UpdateOrganizationInput!) {
updateOrganization(input: $input) {
uuid
name
created
changed
}
}createApiToken
Maakt een nieuwe API-token aan voor het huidige environment. Vereist Authorization: Bearer <token>. Het volledige token (plainToken) wordt alleen bij aanmaken geretourneerd; bewaar hem veilig.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateApiTokenInput! | Ja | Bevat name, scopes (array van strings), validDays (optioneel, null = nooit verlopen). |
graphql
mutation CreateApiToken($input: CreateApiTokenInput!) {
createApiToken(input: $input) {
token {
uuid
name
tokenPreview
scopes
expiresAt
created
}
plainToken
}
}Variabelen:
json
{
"input": {
"name": "Mijn integratie",
"scopes": ["auth:login", "monitors:read", "notifications:read"],
"validDays": 30
}
}validDays: null of 0 = nooit verlopen. Scopes: bijv. auth:login, auth:register, monitors:read, monitors:write, notifications:read, notifications:write, screens:read, screens:write, organization:read. Gebruik de query apiScopes voor de volledige lijst.
updateApiToken
Werk een API-token bij (naam en/of scopes). Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
uuid | String! | Ja | UUID van het token. |
name | String | Nee | Nieuwe naam. |
scopes | [String] | Nee | Nieuwe scopes (vervangt de bestaande). |
graphql
mutation UpdateApiToken($uuid: String!, $name: String, $scopes: [String]) {
updateApiToken(uuid: $uuid, name: $name, scopes: $scopes) {
uuid
name
tokenPreview
scopes
expiresAt
created
}
}deleteApiToken
Trek een API-token in (verwijderen). Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
uuid | String! | Ja | UUID van het token. |
graphql
mutation DeleteApiToken($uuid: String!) {
deleteApiToken(uuid: $uuid)
}Response is true bij succes.
createChannel
Maakt een nieuw kanaal aan (e-mail, SMS, Telegram, webhook, etc.) voor het huidige environment. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateChannelInput! | Ja | Bevat type, name, en type-specifieke velden (bijv. emailAddress, url, headers). |
Zie de monitor-app of GraphQL-schema voor de exacte velden per kanaaltype.
deleteChannel
Verwijdert een kanaal. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
uuid | String! | Ja | UUID van het kanaal. |
graphql
mutation DeleteChannel($uuid: String!) {
deleteChannel(uuid: $uuid)
}Response is true bij succes.
createMonitor
Maakt een P2000-monitor aan voor het huidige environment. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | CreateMonitorInput! | Ja | Bevat name (verplicht), description, active, type, query (JSON), location, locationMode, locationLiveSourceId, radius, channels (JSON), notificationRules (JSON). |
query, channels en notificationRules zijn JSON-strings. Zie de monitor-app voor de structuur.
graphql
mutation CreateMonitor($input: CreateMonitorInput!) {
createMonitor(input: $input) {
uuid
name
description
active
type
created
changed
}
}updateMonitor
Werk een bestaande monitor bij. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
input | UpdateMonitorInput! | Ja | Bevat uuid (verplicht) en alle velden die je wilt bijwerken (optioneel). |
graphql
mutation UpdateMonitor($input: UpdateMonitorInput!) {
updateMonitor(input: $input) {
uuid
name
description
active
changed
}
}deleteMonitor
Verwijdert een monitor. Vereist Authorization: Bearer <token>.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
uuid | String! | Ja | UUID van de monitor. |
graphql
mutation DeleteMonitor($uuid: String!) {
deleteMonitor(uuid: $uuid)
}Response is true bij succes.
requestPasswordReset
Vraag een wachtwoord-reset aan. Vereist een API-token met scope auth:password_reset (niet de gebruikerstoken). Stuurt een e-mail met reset-link (indien geïmplementeerd).
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
email | String! | Ja | E-mailadres van het account. |
graphql
mutation RequestPasswordReset($email: String!) {
requestPasswordReset(email: $email)
}Response is altijd dezelfde string (om te voorkomen dat aanvallers kunnen checken of een e-mail bestaat).
resetPassword
Wijzig wachtwoord met het token uit de reset-e-mail. Geen authenticatie vereist – het token uit de e-mail is voldoende.
Argumenten:
| Argument | Type | Verplicht | Beschrijving |
|---|---|---|---|
token | String! | Ja | Token uit de reset-e-mail. |
newPassword | String! | Ja | Nieuw wachtwoord (min. 8 tekens). |
graphql
mutation ResetPassword($token: String!, $newPassword: String!) {
resetPassword(token: $token, newPassword: $newPassword)
}