Luna · Schema

LogEventRequest

Body for `POST /api/vega/log`. Provide the fields that make sense for `type`.

Baby TrackerShared LogHealth TrackingFamily Care

Properties

Name Type Description
type string
ts object ISO 8601 local time; defaults to now. Cannot be in the future.
ml object `milk`: millilitres, 0-500. Use 0 (or omit) for a breastfeed.
kind object `nappy`: wet|dirty|both|dry. `supplement`: vitd|iron|multivitamin.
foods object `solid`: foods eaten.
meal_type object `solid` only.
kg object `weight`: kilograms, 0.5-30.
cm object `length`: centimetres, 40-120.
ug object `supplement`: micrograms.
note object Free text, up to 300 characters.
author object Defaults to the calling user's username.
timezone object IANA zone if `ts` is in a different zone from the family's.
client_id object Same as the `Idempotency-Key` header, for clients that can't set headers. 8-128 characters: letters, digits, `_ - . :`. If both are sent they must match.
View JSON Schema on GitHub

JSON Schema

getmyluna-app-log-event-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getmyluna-app/json-schema/getmyluna-app-log-event-request-schema.json",
  "title": "LogEventRequest",
  "description": "Body for `POST /api/vega/log`. Provide the fields that make sense for `type`.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getmyluna-app-openapi.json#/components/schemas/LogEventRequest",
  "properties": {
    "type": {
      "enum": [
        "milk",
        "sleep",
        "wake",
        "nappy",
        "poop",
        "solid",
        "note",
        "supplement",
        "weight",
        "length"
      ],
      "title": "Type",
      "type": "string"
    },
    "ts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ISO 8601 local time; defaults to now. Cannot be in the future.",
      "title": "Ts"
    },
    "ml": {
      "anyOf": [
        {
          "maximum": 500,
          "minimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`milk`: millilitres, 0-500. Use 0 (or omit) for a breastfeed.",
      "title": "Ml"
    },
    "kind": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`nappy`: wet|dirty|both|dry. `supplement`: vitd|iron|multivitamin.",
      "title": "Kind"
    },
    "foods": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`solid`: foods eaten.",
      "title": "Foods"
    },
    "meal_type": {
      "anyOf": [
        {
          "enum": [
            "meal",
            "snack"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`solid` only.",
      "title": "Meal Type"
    },
    "kg": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`weight`: kilograms, 0.5-30.",
      "title": "Kg"
    },
    "cm": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`length`: centimetres, 40-120.",
      "title": "Cm"
    },
    "ug": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "`supplement`: micrograms.",
      "title": "Ug"
    },
    "note": {
      "anyOf": [
        {
          "maxLength": 300,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free text, up to 300 characters.",
      "title": "Note"
    },
    "author": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Defaults to the calling user's username.",
      "title": "Author"
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "IANA zone if `ts` is in a different zone from the family's.",
      "title": "Timezone"
    },
    "client_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Same as the `Idempotency-Key` header, for clients that can't set headers. 8-128 characters: letters, digits, `_ - . :`. If both are sent they must match.",
      "title": "Client Id"
    }
  },
  "required": [
    "type"
  ],
  "type": "object"
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/getmyluna-app-log-event-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.