Skip to content

5.1 Introduction

Interfaces documents how Moonitoring systems communicate with one another and with external providers. It covers contracts and communication paths such as REST, GraphQL, gRPC, events, webhooks, and provider-specific integrations.

Use this section when changing a boundary between systems or when you need to understand what information crosses that boundary.

Which standard to use for each kind of boundary, and the rules each one follows, is in Choosing an Interface.

Each system of the platform has its own section: an introduction with its host names and a short description of each business domain, then one page per domain with its versions and its contract: Access, Farm, MooChat, AI Gateway, AI Model Platform, Grant, Releases and News. The types every API shares are in Shared Types.

Status of the contracts

The contracts of every system are a proposal for review, written in October 2026 from the refined requirements, the data model and the flows, before any implementation. Three pages check them as a whole: the Traceability Matrix from requirement to operation and event, the System Dependency Map that verifies that no system reads another system's data, and the Open Decisions that need an answer before the contracts are confirmed.

The review corrections of 2 November 2026 explain the fixes, the checks performed and the design questions still open.

5.1.1 Host Names

Every system has one host name in prod and one in stage:

Environment Template Access Farm
Prod <system>.moonitoring.com access.moonitoring.com farm.moonitoring.com
Stage stage-<system>.moonitoring.com stage-access.moonitoring.com stage-farm.moonitoring.com
  • <system> is the system's short name, as listed in Domains and Systems. Prod has no prefix, so the names customers use stay short.
  • Every domain of a system is a path on its host, followed by its version: https://farm.moonitoring.com/animals/v1/. The one other path is /ready, the readiness endpoint the probes of status call.
  • A host per system, not one host for all of them: each system keeps its own certificate, Cloud Armor policy and backend, and can move to another project, region or cell by changing one DNS record, with no client changing its addresses. Browser apps never call these hosts from the page: they call /api/<system>/ on their own host, so no request is cross-origin.
  • Stage is reached through its own load balancer, like prod (see Network): staff through Identity-Aware Proxy, and clients with our tokens plus, in stage only, Identity-Aware Proxy for the testers' group, stage-testers@moonitoring.com (decided 2026-11-10; the group 2026-11-12, on the system hosts too since 2026-11-13). Development runs only on each developer's computer, with Docker (Running Locally).
  • status is the exception: its host serves the status page, not its backend (decided 2026-11-13). In prod status.moonitoring.com is on Cloudflare, with /api/v1/ going to status-watchdog; in stage stage-status.moonitoring.com is the page's Cloud Run service behind Identity-Aware Proxy, with /api/v1 going to status-backend. Its staff API is reached only through the Console (Status).
  • The landing pages and the static news site, news.moonitoring.com, are served from Cloudflare, not from Google Cloud. The backend of news is the one system with no host of its own: only the Console calls it, through /api/news/ on its own host.

Apps have host names of their own, never the name of a system (decided 2026-11-05), so that a system's host only ever serves its API:

App Prod Stage
Organization Dashboard dash.moonitoring.com stage-dash.moonitoring.com
Account account.moonitoring.com stage-account.moonitoring.com
Console console.moonitoring.com, staff only through Identity-Aware Proxy stage-console.moonitoring.com
MooGrant moogrant.moonitoring.com stage-moogrant.moonitoring.com
  • A new product is a section of dash.moonitoring.com (decided 2026-11-05, was app), at its own path such as dash.moonitoring.com/farm, not a new host; only an app with users of its own gets a name of its own.
  • The Account app is where a person signs in with their MooNitoring account, for every app: e-mail and password or Continue with Google, Forgot password, and Create an account with e-mail verification, all handled by Identity Platform, then the registration of name, surname, telephone and language (Customers). Every other app signs in through it with a code (Signing In from an App): native apps, the farm sync client and its installer, open account.moonitoring.com/authorize in the browser and ask the person to allow them; our own web apps, today the Organization Dashboard, send the browser there from their own server and come straight back without an Allow page (decided 2026-11-11), and their pages never hold a token.
  • Invitation and join links point to the Account app, such as account.moonitoring.com/join, whichever product the person will use: the secret travels in the URL fragment, which the browser never sends to a server or to its logs, and the app hands it to access in the body of a request.