{"openapi":"3.1.0","info":{"title":"AppMetricsKit API","version":"1.0.0","description":"Ingest events and read analytics. Ingest uses app ingest keys; read endpoints use scoped REST API keys."},"servers":[{"url":"/","description":"This deployment"}],"paths":{"/api/ingest":{"post":{"summary":"Ingest a batch of events","security":[{"ingestKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["events"],"properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}}}}},"responses":{"200":{"description":"Batch metering result"},"401":{"description":"Missing/invalid ingest key"},"413":{"description":"Batch too large"},"429":{"description":"Rate limited"}}}},"/api/v1/events":{"get":{"summary":"List recent events","security":[{"apiKey":["events:read"]}],"parameters":[{"name":"appId","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000}}],"responses":{"200":{"description":"Events array"},"401":{"description":"Bad key"},"403":{"description":"Missing scope"}}}},"/api/v1/rollups":{"get":{"summary":"List daily rollups","security":[{"apiKey":["rollups:read"]}],"parameters":[{"name":"appId","in":"query","required":true,"schema":{"type":"string"}},{"name":"fromDate","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Rollups array"},"401":{"description":"Bad key"},"403":{"description":"Missing scope"}}}}},"components":{"securitySchemes":{"ingestKey":{"type":"http","scheme":"bearer","description":"App ingest key (amk_live_… / amk_test_…)"},"apiKey":{"type":"http","scheme":"bearer","description":"Scoped REST API key (amk_api_…)"}},"schemas":{"Event":{"type":"object","required":["eventName"],"properties":{"eventName":{"type":"string","example":"Purchase.completed"},"anonymousUserId":{"type":"string"},"sessionId":{"type":"string"},"eventTime":{"type":"integer","description":"epoch millis"},"eventId":{"type":"string","description":"client dedup id"},"isTestMode":{"type":"boolean"},"platform":{"type":"string"},"appVersion":{"type":"string"},"buildNumber":{"type":"string"},"osVersion":{"type":"string"},"deviceModel":{"type":"string"},"locale":{"type":"string"},"timezone":{"type":"string"},"floatValue":{"type":"number"},"payload":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}}}}}}}