Ga naar inhoud

Assets: domeinen, sites, hosting

Wat een bureau voor een klant beheert, en de vier diensten waar dat uit gelezen wordt: de registrar, de DNS-zone, de monitor en de site zelf.

128 endpoints, verdeeld over 7 groepen. Een recht geschreven als module.resource.action:own heeft een bereik: :own dekt rijen die van jou zijn, :any die van iedereen, en :any voldoet aan een controle op :own.

EndpointRecht
GET /domainsdomains.domain.read
POST /domainsdomains.domain.write
GET /domains/{domain_id}domains.domain.read
PATCH /domains/{domain_id}domains.domain.write
DELETE /domains/{domain_id}domains.domain.delete
POST /domains/{domain_id}/refreshdomains.domain.write
GET /domains/tld-pricesdomains.tld_price.read
POST /domains/tld-pricesdomains.tld_price.manage
DELETE /domains/tld-prices/{price_id}domains.tld_price.manage
POST /domains/tld-prices/price-increasedomains.tld_price.manage
POST /domains/tld-prices/price-increase/previewdomains.tld_price.manage
GET /domains/totalsdomains.domain.read
Parameters en schema’s per endpoint

List Domains

Recht: domains.domain.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
company_idstring
qstring
sortstringname | company | status | registrar | dns | dnssec | email_enabled | start_date | next_invoice_date | created_at | updated_at, ’-’ desc
invoiceablebooleanFilter on the resolved billing answer (#298), not the stored flag: false lists what is registered elsewhere and therefore never invoiced.
statusstringactive | redirect | parked | expired | inactive
registrar_provider_idstring
dns_provider_idstring
countbooleanCompute total; set false for name-only lookups (default true)
metabooleanResolve the display fields a picker discards — client/provider names, party labels, the register facts and the resolved price. False leaves them at their empty values. (default true)

Antwoord: 200 · Page_DomainRead_

Create Domain

Recht: domains.domain.write

Request body: DomainCreate

Antwoord: 201 · DomainRead

Get Domain

Recht: domains.domain.read

Padparameters: domain_id

Antwoord: 200 · DomainRead

Update Domain

Recht: domains.domain.write

Padparameters: domain_id

Request body: DomainUpdate

Antwoord: 200 · DomainRead

Delete Domain

Recht: domains.domain.delete

Padparameters: domain_id

Antwoord: 204

Refresh Domain Dns — Re-query public DNS for this domain’s nameservers + DNSSEC now (#92).

Recht: domains.domain.write

Padparameters: domain_id

Antwoord: 200 · DomainRead

List Tld Prices — The per-TLD price list: current, scheduled and past rows, plus unpriced TLDs.

Recht: domains.tld_price.read

Antwoord: 200 · TldPriceGroup[]

Set Tld Price — Append a price row for a TLD (a same-day row is corrected in place).

Recht: domains.tld_price.manage

Request body: TldPriceUpsert

Antwoord: 200 · TldPriceRow

DELETE /api/v1/domains/tld-prices/{price_id}

Section titled “DELETE /api/v1/domains/tld-prices/{price_id}”

Delete Tld Price — Remove one history row (undo a scheduled increase or a mistake).

Recht: domains.tld_price.manage

Padparameters: price_id

Antwoord: 204

POST /api/v1/domains/tld-prices/price-increase

Section titled “POST /api/v1/domains/tld-prices/price-increase”

Apply Tld Price Increase — Apply a price change: one history row per TLD, effective valid_from.

Recht: domains.tld_price.manage

Request body: TldPriceIncreaseRequest

Antwoord: 200 · TldPriceIncreaseResult

POST /api/v1/domains/tld-prices/price-increase/preview

Section titled “POST /api/v1/domains/tld-prices/price-increase/preview”

Preview Tld Price Increase — What a price change would do — nothing is written (#231’s preview-then-apply).

Recht: domains.tld_price.manage

Request body: TldPriceIncreaseRequest

Antwoord: 200 · TldPriceIncreaseResult

Domain Totals — What the filtered register adds up to, per client and as a whole.

Recht: domains.domain.read

Queryparameters:

NaamTypeBetekenis
company_idstring
qstring
invoiceablebooleanThe list’s own filter: the resolved billing answer (#298).
statusstring
registrar_provider_idstring
dns_provider_idstring

Antwoord: 200 · DomainTotalsReport

EndpointRecht
GET /websiteswebsites.website.read
POST /websiteswebsites.website.write
GET /websites/{website_id}websites.website.read
PATCH /websites/{website_id}websites.website.write
DELETE /websites/{website_id}websites.website.delete
GET /websites/available-domainswebsites.website.write
Parameters en schema’s per endpoint

List Websites

Recht: websites.website.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
domain_idstring
company_idstring
qstringMatches the parent domain’s name
hosting_idstring
uptime_enabledboolean
sortstringname | company | hosting | uptime | created_at | updated_at, ’-’ desc
countbooleanCompute total; set false for name-only lookups (default true)
metabooleanResolve the display fields a picker discards — the parent domain’s name and client, the hosting account’s name and the technical owner’s label. (default true)

Antwoord: 200 · Page_WebsiteRead_

Create Website

Recht: websites.website.write

Request body: WebsiteCreate

Antwoord: 201 · WebsiteRead

Get Website

Recht: websites.website.read

Padparameters: website_id

Antwoord: 200 · WebsiteRead

Update Website

Recht: websites.website.write

Padparameters: website_id

Request body: WebsiteUpdate

Antwoord: 200 · WebsiteRead

Delete Website

Recht: websites.website.delete

Padparameters: website_id

Antwoord: 204

List Available Domains — The domains that do not have a website yet — the create picker’s options.

Recht: websites.website.write

Queryparameters:

NaamTypeBetekenis
limitinteger(default 200)

Antwoord: 200 · AvailableDomain[]

EndpointRecht
GET /hostinghosting.hosting.read
POST /hostinghosting.hosting.write
GET /hosting/{hosting_id}hosting.hosting.read
PATCH /hosting/{hosting_id}hosting.hosting.write
DELETE /hosting/{hosting_id}hosting.hosting.delete
Parameters en schema’s per endpoint

List Hosting

Recht: hosting.hosting.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
company_idstring
qstring
sortstringname | ip_address | created_at | updated_at, ’-’ desc
countbooleanCompute total; set false for name-only lookups (default true)
metabooleanResolve the display fields a picker discards — the client’s and provider’s names and the contact’s label. (default true)

Antwoord: 200 · Page_HostingRead_

Create Hosting

Recht: hosting.hosting.write

Request body: HostingCreate

Antwoord: 201 · HostingRead

Get Hosting

Recht: hosting.hosting.read

Padparameters: hosting_id

Antwoord: 200 · HostingRead

Update Hosting

Recht: hosting.hosting.write

Padparameters: hosting_id

Request body: HostingUpdate

Antwoord: 200 · HostingRead

Delete Hosting

Recht: hosting.hosting.delete

Padparameters: hosting_id

Antwoord: 204

EndpointRecht
GET /cloudflare/accountscloudflare.settings.manage
POST /cloudflare/accountscloudflare.settings.manage
PATCH /cloudflare/accounts/{account_id}cloudflare.settings.manage
DELETE /cloudflare/accounts/{account_id}cloudflare.settings.manage
POST /cloudflare/accounts/{account_id}/synccloudflare.settings.manage
POST /cloudflare/accounts/{account_id}/verifycloudflare.settings.manage
GET /cloudflare/accounts/optionscloudflare.dns.read
POST /cloudflare/domains/{domain_id}/checkcloudflare.dns.read
POST /cloudflare/domains/{domain_id}/connectcloudflare.zone.manage
POST /cloudflare/domains/{domain_id}/pagescloudflare.zone.manage
PUT /cloudflare/domains/{domain_id}/redirectcloudflare.zone.manage
DELETE /cloudflare/domains/{domain_id}/redirectcloudflare.zone.manage
POST /cloudflare/domains/{domain_id}/redirect/adoptcloudflare.zone.manage
PUT /cloudflare/domains/{domain_id}/redirect/rules/{rule_id}cloudflare.zone.manage
DELETE /cloudflare/domains/{domain_id}/redirect/rules/{rule_id}cloudflare.zone.manage
GET /cloudflare/domains/{domain_id}/statuscloudflare.dns.read
DELETE /cloudflare/pages/links/{link_id}cloudflare.zone.manage
GET /cloudflare/pages/projectscloudflare.dns.read
GET /cloudflare/zonescloudflare.dns.read
GET /cloudflare/zones/{zone_id}/dnscloudflare.dns.read
POST /cloudflare/zones/{zone_id}/dnscloudflare.zone.manage
PATCH /cloudflare/zones/{zone_id}/dns/{record_id}cloudflare.zone.manage
DELETE /cloudflare/zones/{zone_id}/dns/{record_id}cloudflare.zone.manage
GET /cloudflare/zones/{zone_id}/dns/exportcloudflare.dns.read
POST /cloudflare/zones/{zone_id}/linkcloudflare.zone.manage
DELETE /cloudflare/zones/{zone_id}/linkcloudflare.zone.manage
Parameters en schema’s per endpoint

List Accounts — Configured Cloudflare accounts. The API token is never part of the response.

Recht: cloudflare.settings.manage

Antwoord: 200 · AccountRead[]

Create Account

Recht: cloudflare.settings.manage

Request body: AccountCreate

Antwoord: 201 · AccountRead

PATCH /api/v1/cloudflare/accounts/{account_id}

Section titled “PATCH /api/v1/cloudflare/accounts/{account_id}”

Update Account — Rename, repoint or rotate. An omitted api_token keeps the stored one.

Recht: cloudflare.settings.manage

Padparameters: account_id

Request body: AccountUpdate

Antwoord: 200 · AccountRead

DELETE /api/v1/cloudflare/accounts/{account_id}

Section titled “DELETE /api/v1/cloudflare/accounts/{account_id}”

Delete Account — Forget the credential and its synced inventory. Nothing at Cloudflare is deleted.

Recht: cloudflare.settings.manage

Padparameters: account_id

Antwoord: 204

POST /api/v1/cloudflare/accounts/{account_id}/sync

Section titled “POST /api/v1/cloudflare/accounts/{account_id}/sync”

Sync Account — Pull the account’s zones and Pages projects, matching zones to domains by apex.

Recht: cloudflare.settings.manage

Padparameters: account_id

Antwoord: 200 · AccountSyncResult

POST /api/v1/cloudflare/accounts/{account_id}/verify

Section titled “POST /api/v1/cloudflare/accounts/{account_id}/verify”

Verify Account — Probe what this token can do and store the answer, so the UI can name a missing scope.

Recht: cloudflare.settings.manage

Padparameters: account_id

Antwoord: 200 · AccountVerifyResult

List Account Options — Names only, for the “which account” picker — choosing one is zone.manage’s job, and should not require holding the credential screen’s permission.

Recht: cloudflare.dns.read

Antwoord: 200 · AccountOption[]

POST /api/v1/cloudflare/domains/{domain_id}/check

Section titled “POST /api/v1/cloudflare/domains/{domain_id}/check”

Cloudflare Check Domain — Ask Cloudflare what it actually has: drift, conflicting redirects, whether the apex is proxied at all. Persists the observation; every probe fails softly and names itself.

Recht: cloudflare.dns.read

Padparameters: domain_id

Antwoord: 200 · DomainStatusRead

POST /api/v1/cloudflare/domains/{domain_id}/connect

Section titled “POST /api/v1/cloudflare/domains/{domain_id}/connect”

Connect Domain — Adopt this domain’s existing Cloudflare zone, or create one. Adoption always wins.

Recht: cloudflare.zone.manage

Padparameters: domain_id

Request body: ConnectRequest

Antwoord: 200 · ZoneRead

POST /api/v1/cloudflare/domains/{domain_id}/pages

Section titled “POST /api/v1/cloudflare/domains/{domain_id}/pages”

Link Pages Project — Serve a hostname of this domain from a Pages project (registers it and points DNS).

Recht: cloudflare.zone.manage

Padparameters: domain_id

Request body: PagesLinkCreate

Antwoord: 201 · PagesLinkRead

PUT /api/v1/cloudflare/domains/{domain_id}/redirect

Section titled “PUT /api/v1/cloudflare/domains/{domain_id}/redirect”

Set Redirect — Set the domain-wide redirect and push it to Cloudflare as a Redirect Rule.

Recht: cloudflare.zone.manage

Padparameters: domain_id

Request body: RedirectWrite

Antwoord: 200 · RedirectRead

DELETE /api/v1/cloudflare/domains/{domain_id}/redirect

Section titled “DELETE /api/v1/cloudflare/domains/{domain_id}/redirect”

Remove Redirect — Delete the rule we created at Cloudflare. Rules we did not create are never touched.

Recht: cloudflare.zone.manage

Padparameters: domain_id

Antwoord: 204

POST /api/v1/cloudflare/domains/{domain_id}/redirect/adopt

Section titled “POST /api/v1/cloudflare/domains/{domain_id}/redirect/adopt”

Adopt Redirect — Take ownership of a Redirect Rule the zone already has. Writes nothing at Cloudflare.

Recht: cloudflare.zone.manage

Padparameters: domain_id

Request body: RedirectAdopt

Antwoord: 200 · RedirectRead

PUT /api/v1/cloudflare/domains/{domain_id}/redirect/rules/{rule_id}

Section titled “PUT /api/v1/cloudflare/domains/{domain_id}/redirect/rules/{rule_id}”

Edit Zone Redirect — Change where an existing Redirect Rule sends traffic. Never changes what it matches.

Recht: cloudflare.zone.manage

Padparameters: domain_id, rule_id

Request body: RedirectRuleEdit

Antwoord: 200 · DomainStatusRead

DELETE /api/v1/cloudflare/domains/{domain_id}/redirect/rules/{rule_id}

Section titled “DELETE /api/v1/cloudflare/domains/{domain_id}/redirect/rules/{rule_id}”

Delete Zone Redirect — Delete one Redirect Rule from this zone by id, resolved inside the zone’s own ruleset.

Recht: cloudflare.zone.manage

Padparameters: domain_id, rule_id

Antwoord: 200 · DomainStatusRead

GET /api/v1/cloudflare/domains/{domain_id}/status

Section titled “GET /api/v1/cloudflare/domains/{domain_id}/status”

Cloudflare Domain Status — Stored state only — no Cloudflare call, so this is safe on a page load.

Recht: cloudflare.dns.read

Padparameters: domain_id

Antwoord: 200 · DomainStatusRead

Section titled “DELETE /api/v1/cloudflare/pages/links/{link_id}”

Unlink Pages Project — Detach the hostname from the project. Its DNS record is left alone on purpose.

Recht: cloudflare.zone.manage

Padparameters: link_id

Antwoord: 204

List Pages Projects — Synced Pages projects — the picker’s source, so it never waits on Cloudflare.

Recht: cloudflare.dns.read

Queryparameters:

NaamTypeBetekenis
account_idstring

Antwoord: 200 · PagesProjectRead[]

List Zones

Recht: cloudflare.dns.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
account_idstring
domain_idstring
linkedbooleantrue: matched to a domain; false: orphans
qstring
countbooleanCompute the total. False for pickers. (default true)

Antwoord: 200 · Page_ZoneRead_

GET /api/v1/cloudflare/zones/{zone_id}/dns

Section titled “GET /api/v1/cloudflare/zones/{zone_id}/dns”

List Dns — The zone’s records, read live from Cloudflare — never a cached copy (see schemas).

Recht: cloudflare.dns.read

Padparameters: zone_id

Antwoord: 200 · ZoneRecords

POST /api/v1/cloudflare/zones/{zone_id}/dns

Section titled “POST /api/v1/cloudflare/zones/{zone_id}/dns”

Create Dns Record

Recht: cloudflare.zone.manage

Padparameters: zone_id

Request body: DnsRecordWrite

Antwoord: 201 · DnsRecordRead

PATCH /api/v1/cloudflare/zones/{zone_id}/dns/{record_id}

Section titled “PATCH /api/v1/cloudflare/zones/{zone_id}/dns/{record_id}”

Update Dns Record

Recht: cloudflare.zone.manage

Padparameters: zone_id, record_id

Request body: DnsRecordWrite

Antwoord: 200 · DnsRecordRead

DELETE /api/v1/cloudflare/zones/{zone_id}/dns/{record_id}

Section titled “DELETE /api/v1/cloudflare/zones/{zone_id}/dns/{record_id}”

Delete Dns Record

Recht: cloudflare.zone.manage

Padparameters: zone_id, record_id

Antwoord: 204

GET /api/v1/cloudflare/zones/{zone_id}/dns/export

Section titled “GET /api/v1/cloudflare/zones/{zone_id}/dns/export”

Export Dns — The zone as a BIND file (Cloudflare’s own export) or a CSV built here.

Recht: cloudflare.dns.read

Padparameters: zone_id

Queryparameters:

NaamTypeBetekenis
formatstring(default bind)

Antwoord: 200 · DnsExport

POST /api/v1/cloudflare/zones/{zone_id}/link

Section titled “POST /api/v1/cloudflare/zones/{zone_id}/link”

Link Zone — Match a synced zone to a domain by hand, where the apex did not match automatically.

Recht: cloudflare.zone.manage

Padparameters: zone_id

Request body: ZoneLink

Antwoord: 200 · ZoneRead

Section titled “DELETE /api/v1/cloudflare/zones/{zone_id}/link”

Unlink Zone — Forget the match. The zone keeps serving at Cloudflare.

Recht: cloudflare.zone.manage

Padparameters: zone_id

Antwoord: 200 · ZoneRead

EndpointRecht
GET /oxxa/accountsoxxa.settings.manage
POST /oxxa/accountsoxxa.settings.manage
PATCH /oxxa/accounts/{account_id}oxxa.settings.manage
DELETE /oxxa/accounts/{account_id}oxxa.settings.manage
POST /oxxa/accounts/{account_id}/syncoxxa.registrar.sync
POST /oxxa/accounts/{account_id}/verifyoxxa.settings.manage
GET /oxxa/accounts/optionsoxxa.registrar.sync
GET /oxxa/domainsoxxa.registrar.sync
POST /oxxa/domains/{domain_id}/nameserversoxxa.registrar.manage
POST /oxxa/domains/{domain_id}/refreshoxxa.registrar.sync
GET /oxxa/domains/{domain_id}/statusoxxa.registrar.sync
Parameters en schema’s per endpoint

List Accounts — Configured OXXA logins. The API password is never part of the response.

Recht: oxxa.settings.manage

Antwoord: 200 · OxxaAccountRead[]

Create Account — Store a credential. Creating does not verify it — /verify is the explicit probe, so a typo is reported on the settings screen rather than as a failed save.

Recht: oxxa.settings.manage

Request body: OxxaAccountCreate

Antwoord: 201 · OxxaAccountRead

Update Account — Rename, repoint or rotate. An omitted api_password keeps the stored one.

Recht: oxxa.settings.manage

Padparameters: account_id

Request body: OxxaAccountUpdate

Antwoord: 200 · OxxaAccountRead

Delete Account — Forget the credential and the register synced from it. Nothing at OXXA is deleted.

Recht: oxxa.settings.manage

Padparameters: account_id

Antwoord: 204

POST /api/v1/oxxa/accounts/{account_id}/sync

Section titled “POST /api/v1/oxxa/accounts/{account_id}/sync”

Sync Account — Pull the whole register and reconcile it. One request to OXXA, not one per domain.

Recht: oxxa.registrar.sync

Padparameters: account_id

Antwoord: 200 · OxxaAccountSyncResult

POST /api/v1/oxxa/accounts/{account_id}/verify

Section titled “POST /api/v1/oxxa/accounts/{account_id}/verify”

Verify Account — Probe the credential and cache the TLDs it may operate on.

Recht: oxxa.settings.manage

Padparameters: account_id

Antwoord: 200 · OxxaAccountVerifyResult

List Account Options — Names only, for the “which register” picker — choosing one is the sync/push caller’s job, and should not require holding the credential screen’s permission.

Recht: oxxa.registrar.sync

Antwoord: 200 · OxxaAccountOption[]

List Register — The stored register. linked=false is the one worth looking at: domains the agency is paying to renew that no schakl record — and therefore no invoice — knows about.

Recht: oxxa.registrar.sync

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
account_idstring
linkedbooleantrue = matched to a schakl domain, false = only the unmatched
qstring
countbooleanfalse skips the count query (docs/PERFORMANCE.md) (default true)

Antwoord: 200 · Page_RegistrarDomainRead_

POST /api/v1/oxxa/domains/{domain_id}/nameservers

Section titled “POST /api/v1/oxxa/domains/{domain_id}/nameservers”

Push Nameservers — Repoint the domain’s delegation at the registrar.

Recht: oxxa.registrar.manage

Padparameters: domain_id

Request body: NameserverPush

Antwoord: 200 · NameserverPushResult

POST /api/v1/oxxa/domains/{domain_id}/refresh

Section titled “POST /api/v1/oxxa/domains/{domain_id}/refresh”

Refresh Domain — Re-read one domain from the registrar, including DNSSEC and the registrant’s name.

Recht: oxxa.registrar.sync

Padparameters: domain_id

Queryparameters:

NaamTypeBetekenis
account_idstring

Antwoord: 200 · DomainRegistrarStatus

GET /api/v1/oxxa/domains/{domain_id}/status

Section titled “GET /api/v1/oxxa/domains/{domain_id}/status”

Domain Status — Stored rows only — never calls OXXA, so the domain page renders when OXXA is down.

Recht: oxxa.registrar.sync

Padparameters: domain_id

Antwoord: 200 · DomainRegistrarStatus

EndpointRecht
POST /uptime/hook/{token}Bewust open
GET /uptime/instancesuptime.instance.manage
POST /uptime/instancesuptime.instance.manage
GET /uptime/instances/{instance_id}uptime.instance.manage
PATCH /uptime/instances/{instance_id}uptime.instance.manage
DELETE /uptime/instances/{instance_id}uptime.instance.manage
POST /uptime/instances/{instance_id}/enroluptime.instance.manage
POST /uptime/instances/{instance_id}/links/applyuptime.monitor.write
POST /uptime/instances/{instance_id}/probeuptime.instance.manage
POST /uptime/instances/{instance_id}/syncuptime.instance.manage
GET /uptime/instances/selectableuptime.monitor.read
GET /uptime/monitorsuptime.monitor.read
POST /uptime/monitorsuptime.monitor.write
GET /uptime/monitors/{monitor_id}uptime.monitor.read
PATCH /uptime/monitors/{monitor_id}uptime.monitor.write
DELETE /uptime/monitors/{monitor_id}uptime.monitor.write
POST /uptime/monitors/{monitor_id}/linkuptime.monitor.write
POST /uptime/monitors/{monitor_id}/pauseuptime.monitor.pause
POST /uptime/monitors/{monitor_id}/reconcileuptime.monitor.write
POST /uptime/monitors/{monitor_id}/resumeuptime.monitor.pause
GET /uptime/profilesuptime.monitor.read
POST /uptime/profilesuptime.profile.manage
PATCH /uptime/profiles/{profile_id}uptime.profile.manage
DELETE /uptime/profiles/{profile_id}uptime.profile.manage
Parameters en schema’s per endpoint

Uptime Hook — Ingest one reported heartbeat.

Recht: Bewust open

Padparameters: token

Antwoord: 200

List Instances

Recht: uptime.instance.manage

Antwoord: 200 · UptimeInstanceRead[]

Create Instance

Recht: uptime.instance.manage

Request body: UptimeInstanceCreate

Antwoord: 201 · UptimeInstanceRead

GET /api/v1/uptime/instances/{instance_id}

Section titled “GET /api/v1/uptime/instances/{instance_id}”

Get Instance

Recht: uptime.instance.manage

Padparameters: instance_id

Antwoord: 200 · UptimeInstanceRead

PATCH /api/v1/uptime/instances/{instance_id}

Section titled “PATCH /api/v1/uptime/instances/{instance_id}”

Update Instance

Recht: uptime.instance.manage

Padparameters: instance_id

Request body: UptimeInstanceUpdate

Antwoord: 200 · UptimeInstanceRead

DELETE /api/v1/uptime/instances/{instance_id}

Section titled “DELETE /api/v1/uptime/instances/{instance_id}”

Delete Instance

Recht: uptime.instance.manage

Padparameters: instance_id

Antwoord: 204

POST /api/v1/uptime/instances/{instance_id}/enrol

Section titled “POST /api/v1/uptime/instances/{instance_id}/enrol”

Enrol Instance — Authenticate once and store the token. The password never reaches the database.

Recht: uptime.instance.manage

Padparameters: instance_id

Request body: UptimeEnrol

Antwoord: 200 · UptimeProbeResult

POST /api/v1/uptime/instances/{instance_id}/links/apply

Section titled “POST /api/v1/uptime/instances/{instance_id}/links/apply”

Apply Links — Confirm every unambiguous proposal on this instance; report what was left.

Recht: uptime.monitor.write

Padparameters: instance_id

Antwoord: 200 · UptimeLinkApplyResult

POST /api/v1/uptime/instances/{instance_id}/probe

Section titled “POST /api/v1/uptime/instances/{instance_id}/probe”

Probe Instance

Recht: uptime.instance.manage

Padparameters: instance_id

Antwoord: 200 · UptimeProbeResult

POST /api/v1/uptime/instances/{instance_id}/sync

Section titled “POST /api/v1/uptime/instances/{instance_id}/sync”

Sync Instance — Read every monitor into the mirror. Writes nothing to Uptime Kuma.

Recht: uptime.instance.manage

Padparameters: instance_id

Antwoord: 200 · UptimeSyncReport

List Selectable Instances — Which Uptime Kumas a monitor may be created on — the create form’s picker (#366).

Recht: uptime.monitor.read

Antwoord: 200 · UptimeInstanceOption[]

List Monitors

Recht: uptime.monitor.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
instance_idstring
company_idstring
website_idstring
domain_idstring
hosting_idstring
sync_statusstring
monitor_typestringFilter by type; ‘group’ lists the groups an instance has
link_statusstringlinked / matched / ambiguous / unmatched, ‘proposed’ for everything a sync found a candidate for and nobody has confirmed yet, or ‘unlinked’ for everything still attachable
countbooleanCompute total; set false for pickers (default true)
metabooleanResolve display names; skip it for pickers (default false)

Antwoord: 200 · Page_UptimeMonitorRead_

Create Monitor — Create the monitor here and push it to Uptime Kuma.

Recht: uptime.monitor.write

Request body: UptimeMonitorCreate

Antwoord: 201 · UptimeMonitorRead

Get Monitor

Recht: uptime.monitor.read

Padparameters: monitor_id

Antwoord: 200 · UptimeMonitorRead

PATCH /api/v1/uptime/monitors/{monitor_id}

Section titled “PATCH /api/v1/uptime/monitors/{monitor_id}”

Update Monitor

Recht: uptime.monitor.write

Padparameters: monitor_id

Request body: UptimeMonitorUpdate

Antwoord: 200 · UptimeMonitorRead

DELETE /api/v1/uptime/monitors/{monitor_id}

Section titled “DELETE /api/v1/uptime/monitors/{monitor_id}”

Delete Monitor

Recht: uptime.monitor.write

Padparameters: monitor_id

Queryparameters:

NaamTypeBetekenis
at_kumabooleanAlso delete the monitor in Uptime Kuma. Defaults to false: ‘stop tracking this here’ and ‘stop watching this client’s site’ are different decisions. (default false)

Antwoord: 204

POST /api/v1/uptime/monitors/{monitor_id}/link

Section titled “POST /api/v1/uptime/monitors/{monitor_id}/link”

Link Monitor — Attach a found monitor to the website, domain or hosting it watches (#321).

Recht: uptime.monitor.write

Padparameters: monitor_id

Request body: UptimeMonitorLink

Antwoord: 200 · UptimeMonitorRead

POST /api/v1/uptime/monitors/{monitor_id}/pause

Section titled “POST /api/v1/uptime/monitors/{monitor_id}/pause”

Pause Monitor — Its own permission: silencing an alert during a planned migration is an ordinary act, and repointing a monitor is not.

Recht: uptime.monitor.pause

Padparameters: monitor_id

Antwoord: 200 · UptimeMonitorRead

POST /api/v1/uptime/monitors/{monitor_id}/reconcile

Section titled “POST /api/v1/uptime/monitors/{monitor_id}/reconcile”

Reconcile Monitor — Resolve a drift in the direction the caller names. There is no default direction: one overwrites a colleague’s edit in Uptime Kuma, the other overwrites schakl’s record.

Recht: uptime.monitor.write

Padparameters: monitor_id

Request body: UptimeReconcile

Antwoord: 200 · UptimeMonitorRead

POST /api/v1/uptime/monitors/{monitor_id}/resume

Section titled “POST /api/v1/uptime/monitors/{monitor_id}/resume”

Resume Monitor

Recht: uptime.monitor.pause

Padparameters: monitor_id

Antwoord: 200 · UptimeMonitorRead

List Profiles — Readable on monitor.read, writable on profile.manage.

Recht: uptime.monitor.read

Antwoord: 200 · UptimeProfileRead[]

Create Profile

Recht: uptime.profile.manage

Request body: UptimeProfileCreate

Antwoord: 201 · UptimeProfileRead

PATCH /api/v1/uptime/profiles/{profile_id}

Section titled “PATCH /api/v1/uptime/profiles/{profile_id}”

Update Profile

Recht: uptime.profile.manage

Padparameters: profile_id

Request body: UptimeProfileUpdate

Antwoord: 200 · UptimeProfileRead

DELETE /api/v1/uptime/profiles/{profile_id}

Section titled “DELETE /api/v1/uptime/profiles/{profile_id}”

Delete Profile

Recht: uptime.profile.manage

Padparameters: profile_id

Antwoord: 204

EndpointRecht
GET /wordpress/siteswordpress.site.read
POST /wordpress/siteswordpress.site.manage
GET /wordpress/sites/{site_id}wordpress.site.read
PATCH /wordpress/sites/{site_id}wordpress.site.manage
DELETE /wordpress/sites/{site_id}wordpress.site.manage
GET /wordpress/sites/{site_id}/abilitieswordpress.ability.read
POST /wordpress/sites/{site_id}/abilities/runwordpress.ability.read
GET /wordpress/sites/{site_id}/brandswordpress.site.read
GET /wordpress/sites/{site_id}/bridgewordpress.site.read
GET /wordpress/sites/{site_id}/bridge/languageswordpress.content.read
POST /wordpress/sites/{site_id}/bridge/mediawordpress.content.write
GET /wordpress/sites/{site_id}/bridge/menuswordpress.content.read
GET /wordpress/sites/{site_id}/bridge/menus/{menu}wordpress.content.read
POST /wordpress/sites/{site_id}/bridge/menus/{menu}/itemswordpress.content.publish
DELETE /wordpress/sites/{site_id}/bridge/menus/{menu}/items/{item_id}wordpress.content.publish
GET /wordpress/sites/{site_id}/bridge/optionswordpress.content.read
GET /wordpress/sites/{site_id}/bridge/options/{page}wordpress.content.read
PATCH /wordpress/sites/{site_id}/bridge/options/{page}wordpress.content.publish
GET /wordpress/sites/{site_id}/bridge/recordswordpress.content.read
POST /wordpress/sites/{site_id}/bridge/recordswordpress.content.write
GET /wordpress/sites/{site_id}/bridge/records/{wp_id}wordpress.content.read
PATCH /wordpress/sites/{site_id}/bridge/records/{wp_id}wordpress.content.write
DELETE /wordpress/sites/{site_id}/bridge/records/{wp_id}wordpress.content.delete
GET /wordpress/sites/{site_id}/bridge/records/{wp_id}/translationswordpress.content.read
POST /wordpress/sites/{site_id}/bridge/records/{wp_id}/translationswordpress.content.write
GET /wordpress/sites/{site_id}/bridge/schemawordpress.content.read
GET /wordpress/sites/{site_id}/bridge/stringswordpress.content.read
PUT /wordpress/sites/{site_id}/bridge/stringswordpress.content.publish
GET /wordpress/sites/{site_id}/bridge/termswordpress.content.read
POST /wordpress/sites/{site_id}/bridge/termswordpress.content.write
GET /wordpress/sites/{site_id}/contentwordpress.content.read
POST /wordpress/sites/{site_id}/contentwordpress.content.write
GET /wordpress/sites/{site_id}/content/{type}/{wp_id}wordpress.content.read
PATCH /wordpress/sites/{site_id}/content/{type}/{wp_id}wordpress.content.write
GET /wordpress/sites/{site_id}/formswordpress.forms.read
POST /wordpress/sites/{site_id}/formswordpress.forms.write
GET /wordpress/sites/{site_id}/forms/{wp_id}wordpress.forms.read
PATCH /wordpress/sites/{site_id}/forms/{wp_id}wordpress.forms.write
GET /wordpress/sites/{site_id}/mediawordpress.content.read
GET /wordpress/sites/{site_id}/media/{wp_id}wordpress.content.read
POST /wordpress/sites/{site_id}/restwordpress.rest.read
GET /wordpress/sites/{site_id}/summarywordpress.site.read
POST /wordpress/sites/{site_id}/verifywordpress.site.manage
GET /wordpress/sites/by-website/{website_id}wordpress.site.read
Parameters en schema’s per endpoint

List Sites — Every connected site, or a website’s, or a client’s — the question an agent asks first, since a client is how it was told about the site.

Recht: wordpress.site.read

Queryparameters:

NaamTypeBetekenis
website_idstring
company_idstring

Antwoord: 200 · WordPressSiteRead[]

Connect Site

Recht: wordpress.site.manage

Request body: WordPressSiteCreate

Antwoord: 201 · WordPressSiteRead

Get Site

Recht: wordpress.site.read

Padparameters: site_id

Antwoord: 200 · WordPressSiteRead

Update Site

Recht: wordpress.site.manage

Padparameters: site_id

Request body: WordPressSiteUpdate

Antwoord: 200 · WordPressSiteRead

Disconnect Site

Recht: wordpress.site.manage

Padparameters: site_id

Antwoord: 204

GET /api/v1/wordpress/sites/{site_id}/abilities

Section titled “GET /api/v1/wordpress/sites/{site_id}/abilities”

List Site Abilities — Every ability the site registers for REST, with its input schema and whether it is read-only — what run may be asked for.

Recht: wordpress.ability.read

Padparameters: site_id

Antwoord: 200 · WordPressAbility[]

POST /api/v1/wordpress/sites/{site_id}/abilities/run

Section titled “POST /api/v1/wordpress/sites/{site_id}/abilities/run”

Run Site Ability — Run one ability by name. A read-only ability runs on wordpress.ability.read; any other needs wordpress.ability.run — decided by the ability’s own annotation.

Recht: wordpress.ability.read

Padparameters: site_id

Request body: WordPressAbilityRun

Antwoord: 200 · WordPressAbilityResult

GET /api/v1/wordpress/sites/{site_id}/brands

Section titled “GET /api/v1/wordpress/sites/{site_id}/brands”

List Brands — The Rank Math brands this site tracks — the marketing link picker’s options.

Recht: wordpress.site.read

Padparameters: site_id

Antwoord: 200 · WordPressBrand[]

GET /api/v1/wordpress/sites/{site_id}/bridge

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge”

Bridge Info — What the site is, through the schakl WordPress MCP Bridge plugin: versions, every post type (including ones hidden from the REST API), taxonomies, ACF options pages, menus, WPML languages, the SEO plugin, and what the stored credential may do. The read to make first on a site that has the plugin; 409 names the plugin on one that does not.

Recht: wordpress.site.read

Padparameters: site_id

Antwoord: 200 · WordPressBridgeInfo

GET /api/v1/wordpress/sites/{site_id}/bridge/languages

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/languages”

Bridge Languages — WPML: the active languages and the default; 409 on a site without WPML.

Recht: wordpress.content.read

Padparameters: site_id

Antwoord: 200 · WordPressLanguages

POST /api/v1/wordpress/sites/{site_id}/bridge/media

Section titled “POST /api/v1/wordpress/sites/{site_id}/bridge/media”

Bridge Upload Media — Upload a file to the site’s media library from a URL or a base64 body, with alt text. Returns the attachment; use its id in image fields or as featured_media.

Recht: wordpress.content.write

Padparameters: site_id

Request body: WordPressMediaUpload

Antwoord: 201 · WordPressBridgeMedia

GET /api/v1/wordpress/sites/{site_id}/bridge/menus

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/menus”

Bridge Menus — The navigation menus and the theme locations they fill.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
langstring

Antwoord: 200 · WordPressMenuList

GET /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}”

Bridge Menu — One menu as a tree of items.

Recht: wordpress.content.read

Padparameters: site_id, menu

Antwoord: 200 · WordPressMenu

POST /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}/items

Section titled “POST /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}/items”

Bridge Menu Add Item — Add a record, a term or a custom link to a menu — live at once, hence publish.

Recht: wordpress.content.publish

Padparameters: site_id, menu

Request body: WordPressMenuItemAdd

Antwoord: 201 · WordPressMenu

DELETE /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}/items/{item_id}

Section titled “DELETE /api/v1/wordpress/sites/{site_id}/bridge/menus/{menu}/items/{item_id}”

Bridge Menu Remove Item — Remove one item from a menu.

Recht: wordpress.content.publish

Padparameters: site_id, menu, item_id

Antwoord: 200 · WordPressMenu

GET /api/v1/wordpress/sites/{site_id}/bridge/options

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/options”

Bridge Options Pages — The site’s ACF options pages (company details, footer, partners …).

Recht: wordpress.content.read

Padparameters: site_id

Antwoord: 200 · WordPressOptionsPages

GET /api/v1/wordpress/sites/{site_id}/bridge/options/{page}

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/options/{page}”

Bridge Options Get — The values on one options page, compact, with references; per language under WPML.

Recht: wordpress.content.read

Padparameters: site_id, page

Queryparameters:

NaamTypeBetekenis
langstring
modestring(default compact)
include_schemaboolean(default false)

Antwoord: 200 · WordPressOptionsRead

PATCH /api/v1/wordpress/sites/{site_id}/bridge/options/{page}

Section titled “PATCH /api/v1/wordpress/sites/{site_id}/bridge/options/{page}”

Bridge Options Update — Write ACF values on an options page. Live at once and site-wide, hence publish.

Recht: wordpress.content.publish

Padparameters: site_id, page

Request body: WordPressOptionsWrite

Antwoord: 200 · WordPressOptionsRead

GET /api/v1/wordpress/sites/{site_id}/bridge/records

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/records”

Bridge List Records — Records of any post type through the plugin — REST-hidden types included — with the page path, status, and WPML language and translation ids per row.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
post_typestring(default page)
searchstring
statusstringComma-separated, or ‘any’.
langstring
parentinteger
pageinteger(default 1)
per_pageinteger(default 20)

Antwoord: 200 · WordPressRecordList

POST /api/v1/wordpress/sites/{site_id}/bridge/records

Section titled “POST /api/v1/wordpress/sites/{site_id}/bridge/records”

Bridge Create Record — A new record with its ACF fields, validated against the site’s schema before anything is written; a refusal lists every problem with its path in details.problems. A live status needs wordpress.content.publish.

Recht: wordpress.content.write

Padparameters: site_id

Request body: WordPressRecordCreate

Antwoord: 201 · WordPressRecord

GET /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}”

Bridge Get Record — One record whole: core fields, taxonomies, SEO, the ACF fields (compact: per page-builder row only what that row uses) and references for every id in them.

Recht: wordpress.content.read

Padparameters: site_id, wp_id

Queryparameters:

NaamTypeBetekenis
modestring(default compact)
include_schemaboolean(default false)

Antwoord: 200 · WordPressRecord

PATCH /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}

Section titled “PATCH /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}”

Bridge Update Record — Change a record: fields replaces named top-level ACF fields whole, ops edits one row by path without resending the rest. Validated first; nothing written on a refusal. Editing anything a visitor can see needs wordpress.content.publish.

Recht: wordpress.content.write

Padparameters: site_id, wp_id

Request body: WordPressRecordUpdate

Antwoord: 200 · WordPressRecord

DELETE /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}

Section titled “DELETE /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}”

Bridge Delete Record — Trash a record (recoverable in the site’s admin), or delete it for good.

Recht: wordpress.content.delete

Padparameters: site_id, wp_id

Queryparameters:

NaamTypeBetekenis
forcebooleanDelete permanently instead of trashing. (default false)

Antwoord: 200 · WordPressBridgeDelete

GET /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}/translations

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}/translations”

Bridge Translations — WPML: a record’s translation group — per language the id, title, status and whether it is the original.

Recht: wordpress.content.read

Padparameters: site_id, wp_id

Antwoord: 200 · WordPressTranslations

POST /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}/translations

Section titled “POST /api/v1/wordpress/sites/{site_id}/bridge/records/{wp_id}/translations”

Bridge Translate — WPML: create this record’s translation in lang, linked to it — the source copied with its references translated, your title/content/fields applied on top — or, with translation_id, connect an existing record as the translation. A live status needs wordpress.content.publish.

Recht: wordpress.content.write

Padparameters: site_id, wp_id

Request body: WordPressTranslationCreate

Antwoord: 201 · WordPressRecord

GET /api/v1/wordpress/sites/{site_id}/bridge/schema

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/schema”

Bridge Schema — The ACF field schema for a post type (optionally with template/parent), a record, an options page or a taxonomy: every field’s name, type, choices, sub fields, the conditions that hide it, and the JSON the writer takes. Read before writing fields.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
post_typestring
templatestring
parentinteger
wp_idintegerAn existing record: the groups that apply to it.
options_pagestring
taxonomystring

Antwoord: 200 · WordPressBridgeSchema

GET /api/v1/wordpress/sites/{site_id}/bridge/strings

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/strings”

Bridge Strings — WPML String Translation: the registered strings with their translations per language.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
domainstring
searchstring
pageinteger(default 1)
per_pageinteger(default 50)

Antwoord: 200 · WordPressStringList

PUT /api/v1/wordpress/sites/{site_id}/bridge/strings

Section titled “PUT /api/v1/wordpress/sites/{site_id}/bridge/strings”

Bridge String Update — WPML String Translation: set a string’s translation — live at once, hence publish.

Recht: wordpress.content.publish

Padparameters: site_id

Request body: WordPressStringUpdate

Antwoord: 200 · WordPressStringResult

GET /api/v1/wordpress/sites/{site_id}/bridge/terms

Section titled “GET /api/v1/wordpress/sites/{site_id}/bridge/terms”

Bridge List Terms — The terms of one taxonomy, with their WPML language and, on request, ACF fields.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
taxonomystring · verplicht
searchstring
langstring
modestring(default none)

Antwoord: 200 · WordPressBridgeTermList

POST /api/v1/wordpress/sites/{site_id}/bridge/terms

Section titled “POST /api/v1/wordpress/sites/{site_id}/bridge/terms”

Bridge Create Term — A new term, its ACF fields validated first; with WPML, in a language and optionally as the translation of another term.

Recht: wordpress.content.write

Padparameters: site_id

Request body: WordPressBridgeTermCreate

Antwoord: 201 · WordPressBridgeTerm

GET /api/v1/wordpress/sites/{site_id}/content

Section titled “GET /api/v1/wordpress/sites/{site_id}/content”

List Site Content — Pages, posts or any custom post type, drafts included, newest change first.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
typestring(default page)
searchstring
statusstring
langstring
pageinteger(default 1)
per_pageinteger(default 20)

Antwoord: 200 · WordPressContentList

POST /api/v1/wordpress/sites/{site_id}/content

Section titled “POST /api/v1/wordpress/sites/{site_id}/content”

Create Site Content — A new page or post — a draft unless status says otherwise, and a live status needs wordpress.content.publish.

Recht: wordpress.content.write

Padparameters: site_id

Request body: WordPressContentCreate

Antwoord: 201 · WordPressContentRead

GET /api/v1/wordpress/sites/{site_id}/content/{type}/{wp_id}

Section titled “GET /api/v1/wordpress/sites/{site_id}/content/{type}/{wp_id}”

Get Site Content — One record whole: raw content, rendered HTML, the ACF fields, the meta.

Recht: wordpress.content.read

Padparameters: site_id, type, wp_id

Antwoord: 200 · WordPressContentRead

PATCH /api/v1/wordpress/sites/{site_id}/content/{type}/{wp_id}

Section titled “PATCH /api/v1/wordpress/sites/{site_id}/content/{type}/{wp_id}”

Update Site Content — Change a record. Absent fields are left alone. Editing anything a visitor can see, or setting a live status, needs wordpress.content.publish.

Recht: wordpress.content.write

Padparameters: site_id, type, wp_id

Request body: WordPressContentWrite

Antwoord: 200 · WordPressContentRead

GET /api/v1/wordpress/sites/{site_id}/forms

Section titled “GET /api/v1/wordpress/sites/{site_id}/forms”

List Site Forms — The site’s Contact Form 7 forms.

Recht: wordpress.forms.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
searchstring

Antwoord: 200 · WordPressFormRow[]

POST /api/v1/wordpress/sites/{site_id}/forms

Section titled “POST /api/v1/wordpress/sites/{site_id}/forms”

Create Site Form

Recht: wordpress.forms.write

Padparameters: site_id

Request body: WordPressFormCreate

Antwoord: 201 · WordPressFormRead

GET /api/v1/wordpress/sites/{site_id}/forms/{wp_id}

Section titled “GET /api/v1/wordpress/sites/{site_id}/forms/{wp_id}”

Get Site Form — One form whole: template, field names, both mails, messages, extra settings.

Recht: wordpress.forms.read

Padparameters: site_id, wp_id

Antwoord: 200 · WordPressFormRead

PATCH /api/v1/wordpress/sites/{site_id}/forms/{wp_id}

Section titled “PATCH /api/v1/wordpress/sites/{site_id}/forms/{wp_id}”

Update Site Form — Change a form. Live the moment it saves; absent fields are left alone.

Recht: wordpress.forms.write

Padparameters: site_id, wp_id

Request body: WordPressFormWrite

Antwoord: 200 · WordPressFormRead

GET /api/v1/wordpress/sites/{site_id}/media

Section titled “GET /api/v1/wordpress/sites/{site_id}/media”

List Site Media — The media library — what an ACF image id resolves to.

Recht: wordpress.content.read

Padparameters: site_id

Queryparameters:

NaamTypeBetekenis
searchstring
pageinteger(default 1)
per_pageinteger(default 20)

Antwoord: 200 · WordPressMediaList

GET /api/v1/wordpress/sites/{site_id}/media/{wp_id}

Section titled “GET /api/v1/wordpress/sites/{site_id}/media/{wp_id}”

Get Site Media

Recht: wordpress.content.read

Padparameters: site_id, wp_id

Antwoord: 200 · WordPressMediaRow

POST /api/v1/wordpress/sites/{site_id}/rest

Section titled “POST /api/v1/wordpress/sites/{site_id}/rest”

Call Site Rest — Any call to the site’s REST API, under the stored credential — the escape hatch for a plugin namespace no curated route above knows (read them off summary.namespaces).

Recht: wordpress.rest.read

Padparameters: site_id

Request body: WordPressRestCall

Antwoord: 200 · WordPressRestResult

GET /api/v1/wordpress/sites/{site_id}/summary

Section titled “GET /api/v1/wordpress/sites/{site_id}/summary”

Site Summary — What the site is: name, WordPress and PHP version, post types, plugin namespaces.

Recht: wordpress.site.read

Padparameters: site_id

Antwoord: 200 · WordPressSiteSummary

POST /api/v1/wordpress/sites/{site_id}/verify

Section titled “POST /api/v1/wordpress/sites/{site_id}/verify”

Verify Site — Probe the site and store what was observed.

Recht: wordpress.site.manage

Padparameters: site_id

Antwoord: 200 · WordPressVerifyResult

GET /api/v1/wordpress/sites/by-website/{website_id}

Section titled “GET /api/v1/wordpress/sites/by-website/{website_id}”

Site For Website — The one credential a website has, or null.

Recht: wordpress.site.read

Padparameters: website_id

Antwoord: 200 · WordPressSiteRead