{"info":{"_postman_id":"824a81a2-ab88-9539-dcac-493ef28059b9","name":"FarmOps Public API","description":"Programmatic access to FarmOps alliance data. Use this API to import power,\nkills, VS points (duels), donations, storm assignments, storm scores, and\ncustom event entries — and to export the same data in JSON or CSV.\n\n## Authentication\nInclude your API key in the `Authorization` header:\n```\nAuthorization: Bearer fops_live_<your-key>\n```\nKeys are scoped to a single alliance and carry a `READ` or `WRITE` scope.\nCreate and manage keys in the alliance settings under **API Access & Security**.\n\n## Rate limiting\n- 60 requests per minute per key\n- 5 000 requests per day per key\n\nEvery response includes `X-RateLimit-Remaining-Minute` and\n`X-RateLimit-Remaining-Day` headers. When exceeded you receive HTTP 429 with\na `Retry-After` header.\n\n## Errors\nAll errors follow a consistent shape:\n```json\n{ \"error\": { \"code\": \"RATE_LIMITED\", \"message\": \"...\", \"details\": {} } }\n```\nSwitch on `error.code` (stable) rather than `error.message`.\n\n## BigInt values\nPower and kill counters routinely exceed `Number.MAX_SAFE_INTEGER`. These\nfields are serialised as **strings** in JSON responses. Parse them\naccordingly (`BigInt(response.power)` in JS).\n","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item":[{"name":"Alliance","item":[{"id":"44debb46-efe0-473b-16d9-fbc78220ff14","name":"Get alliance basic info","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance","host":["{{baseUrl}}"],"path":["api","v1","alliance"]}},"response":[]}]},{"name":"Members","item":[{"id":"268f9278-7909-9a1b-e45a-cd80a9c8730b","name":"List members","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/members","host":["{{baseUrl}}"],"path":["api","v1","alliance","members"]}},"response":[]},{"id":"71b91070-bb5e-2bc0-ebb6-0888cab59efb","name":"Export power history","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/power","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","power"]}},"response":[]},{"id":"6a8d1e8f-06b9-c0e2-d95d-fe313637cf11","name":"Import power values","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"entries\": [\n    {\n      \"memberId\": \"ckxyz123\",\n      \"power\": 12500000\n    },\n    {\n      \"memberId\": \"ckabc456\",\n      \"power\": 8300000\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/power","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","power"]}},"response":[]},{"id":"85757778-1e3a-547c-49c6-65741112279d","name":"Export kill history","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/kills","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","kills"]}},"response":[]},{"id":"5a2bd406-f0d7-f76a-804e-bbeff7adef47","name":"Import kill values","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"kills\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/kills","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","kills"]}},"response":[]},{"id":"25db86d5-2b76-70db-3b3f-741e818439ee","name":"Export VS point scores","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/duels","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","duels"]}},"response":[]},{"id":"2fb79d32-3eef-6461-ae8a-0da923985239","name":"Import VS point scores for a day","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"scoredOn\": \"\",\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"score\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/duels","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","duels"],"query":[{"key":"scoredOn","value":"","disabled":true,"description":"ISO date. Alternatively pass `scoredOn` in the JSON body."}]}},"response":[]},{"id":"e6adc725-1fba-6687-f738-eb321cc12274","name":"Export weekly donation totals","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/donations","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","donations"]}},"response":[]},{"id":"5b3dce38-97d5-cd5e-fd4c-f944704e4830","name":"Import weekly donation totals","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"weekStart\": \"\",\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"total\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/members/donations","host":["{{baseUrl}}"],"path":["api","v1","alliance","members","donations"],"query":[{"key":"weekStart","value":"","disabled":true}]}},"response":[]}]},{"name":"Storms","item":[{"id":"8fd68a76-a9f2-3631-175f-17c5a051b10b","name":"List storm events","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/storms","host":["{{baseUrl}}"],"path":["api","v1","alliance","storms"],"query":[{"key":"type","value":"","disabled":true},{"key":"from","value":"","disabled":true},{"key":"to","value":"","disabled":true}]}},"response":[]},{"id":"56e7107c-51cc-3a41-29d4-b76baf0edce6","name":"Get storm assignments for an event","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/storms/{eventId}/assignments","host":["{{baseUrl}}"],"path":["api","v1","alliance","storms",":eventId","assignments"]}},"response":[]},{"id":"d5912523-ebdb-194b-8292-d69c3602d026","name":"Import storm assignments (creates the event if needed)","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stormType\": \"CANYON\",\n  \"eventDate\": \"\",\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"team\": \"A\",\n      \"role\": \"STARTER\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/storms/assignments","host":["{{baseUrl}}"],"path":["api","v1","alliance","storms","assignments"],"query":[{"key":"stormType","value":"","disabled":true},{"key":"eventDate","value":"","disabled":true}]}},"response":[]},{"id":"73676b49-a146-53ea-4316-c3129d499b18","name":"Import storm scores after an event","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"stormType\": \"CANYON\",\n  \"eventDate\": \"\",\n  \"defaultTeam\": \"A\",\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"score\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/storms/scores","host":["{{baseUrl}}"],"path":["api","v1","alliance","storms","scores"]}},"response":[]}]},{"name":"Custom Events","item":[{"id":"721ed73c-61e4-3f32-ecb1-71e4025f1ca9","name":"List custom events","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/custom-events","host":["{{baseUrl}}"],"path":["api","v1","alliance","custom-events"]}},"response":[]},{"id":"36211bad-c97c-b525-8cca-c8a8f1e53b10","name":"Export entries for a custom event","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/custom-events/{eventId}/entries","host":["{{baseUrl}}"],"path":["api","v1","alliance","custom-events",":eventId","entries"]}},"response":[]},{"id":"bac3e1ce-e003-039b-b4f7-5d9e5ade12c9","name":"Import entries for a custom event","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"recordedAt\": \"\",\n  \"metricId\": \"\",\n  \"phase\": \"before\",\n  \"entries\": [\n    {\n      \"memberId\": \"\",\n      \"name\": \"\",\n      \"value\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/alliance/custom-events/{eventId}/entries","host":["{{baseUrl}}"],"path":["api","v1","alliance","custom-events",":eventId","entries"],"query":[{"key":"recordedAt","value":"","disabled":true},{"key":"metricId","value":"","disabled":true},{"key":"phase","value":"","disabled":true}]}},"response":[]}]},{"name":"Seasons","item":[{"id":"f016e513-6e8d-e16d-d94e-aa924b682720","name":"List seasons","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/seasons","host":["{{baseUrl}}"],"path":["api","v1","alliance","seasons"]}},"response":[]}]},{"name":"Export","item":[{"id":"fe94cd11-adaf-8954-cfd4-8b8a8a0c1b5d","name":"Export everything as one JSON bundle","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/alliance/export","host":["{{baseUrl}}"],"path":["api","v1","alliance","export"]},"description":"Full alliance snapshot (members + history + storms + custom events + seasons). Large — cache the result."},"response":[]}]}],"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://www.lastwar.farm","type":"string"},{"key":"apiKey","value":"fops_live_your_key_here","type":"string","description":"Your FarmOps API key"}]}