Unofficial, community-driven OpenAPI documentation for the Online Scout Manager (OSM) API — reverse-engineered from real traffic by the City of Newcastle Scouts Digital Team.
OSM doesn't publish a public API specification. This project exists to fill that gap for developers building tools on top of OSM's platform, whether you're writing a custom badge tracker, a patrol planner, or anything else that helps leaders run their sections.
Warning
This documentation is provided as-is with no guarantees. OSM's API is undocumented and can change without notice. Endpoints, parameters, and response shapes described here were observed at the time of writing and may drift over time. Always test against the live API before relying on anything here. We are not affiliated with OSM — use at your own risk.
The spec documents 80 endpoints (88 operations) across 14 categories, with request/response examples and schemas:
| Category | Endpoints | What you can do |
|---|---|---|
| Startup | /ext/generic/startup/ |
Bootstrap a session — get roles, terms, permissions |
| Members | /ext/members/contact/, /ext/members/contact/actions/, /ext/members/patrols/, /ext/members/census/, /ext/members/flexirecords/, /ext/audittrail/, /ext/settings/parents/loginhistory/, /v3/members/contact/.../removalWarnings, /v3/members/review/... |
List members, update fields (name, DOB, patrol, rank), create/remove/restore members, patrol points, flexi-records, transfers, portal logins |
| Badges | /ext/badges/records/, /ext/badges/badgesbyperson/, /ext/programme/clouds/ |
Available badges, requirement columns, per-member progress, completion records |
| Attendance | /ext/members/attendance/, /v3/members/attendance/visitors/... |
Register data and layout, mark attendance, visitors, meeting badge requirements |
| Custom Data | /ext/customdata/ |
Read and update custom fields (contacts, consents, gender, etc.) |
/ext/members/email/, /ext/members/email/campaigns/, /ext/settings/emails/, /ext/members/sms/, /v3/members/email/... |
Resolve recipients, compose/draft/send, campaign templates, delivery reports | |
| Programme | /ext/programme/, /ext/programme/activities/, /ext/recipes/, /v3/programme/.../bookings, /v3/todo/... |
Meeting summaries and details, activity library, recipes, parent bookings, meeting to-dos and projects |
| Events | /ext/events/summary/, /v3/events/event/..., /v3/kit/... |
Event lists, details, attendance, payments, Parent Portal settings, timetable, kit lists |
| Finance | /v3/finances/accounting/..., /v3/comments/accounting/..., /ext/finances/onlinepayments/..., /ext/finances/invoices/summary/ |
Cashbook, categories, bank accounts and imports, budgets, annual report, expense cards, tracked items, Online Payments, comments |
| Files | .../uploads/, .../leader_resources/, .../attachments/files/ (action=manifest) |
Shared file-attachment manifest pattern |
| Dashboard | /ext/dashboard/ |
Dashboard summaries (now loadable in parts) |
| Risk Assessments | /v3/risk_assessments/..., /ext/risk_assessments/ |
Risk assessment categories, review schedule and meeting hazards |
| Generic / User | /ext/generic/locks/, /ext/generic/featureusage/, /ext/users/..., /ext/settings/accountpreferences/, /v3/menu-preferences/..., /v3/favourites/... |
Edit locks, keep-alive ping, default section, menu preferences, notifications |
| File | Description |
|---|---|
openapi.yaml |
OpenAPI 3.0.3 specification. The source of truth, edited by hand |
index.html |
Interactive docs UI (Redoc), served over HTTP |
llms.txt |
Index for AI agents (llmstxt.org). Generated |
llms/<category>.md |
One Markdown reference per category. Generated |
llms-full.txt |
The whole reference in one Markdown file. Generated |
scripts/build-llms.mjs |
Builds the three generated outputs from openapi.yaml |
AGENTS.md |
How AI agents (and people) should work on this repo |
Browse them at https://opensource.newcastlescouts.org.uk. Locally, serve the folder over HTTP (for example
npx http-server .) rather than opening index.html from disk, because browsers block the spec fetch on file://.
Point your coding agent at https://opensource.newcastlescouts.org.uk/llms.txt. It summarises the rules that matter
(form-encoded POSTs, rate limits, the action parameter) and links to one Markdown file per category, so the agent
only loads what it needs. llms-full.txt has everything in one file if your tool prefers that.
You can also import openapi.yaml into tools like Swagger Editor, Postman, or Insomnia.
-
Authentication — OSM uses OAuth 2.0. You'll need a
client_idandclient_secretfrom OSM. The bearer token goes in theAuthorizationheader. Tokens expire and must be refreshed via the/oauth/tokenendpoint. -
Response format quirks — Some endpoints return JavaScript (
var data_holder = {...}) rather than clean JSON. You'll need to strip the prefix before parsing. Thestartupendpoint is the main offender. -
Money units — the accounting API (
/v3/finances/accounting/) uses integer pence; event endpoints use pounds. Don't mix them up. -
POST bodies — OSM expects
application/x-www-form-urlencodedfor all POST requests, not JSON. Sending JSON will get you blocked. -
Rate limits — OSM enforces rate limits. Responses may include
X-RateLimit-*orRateLimit-*headers. If you hit a429, back off immediately. Excessive requests will get your OAuth client banned. -
Privacy and GDPR — These endpoints return personal data about young people and their families. Handle it responsibly. Don't store what you don't need, don't log PII, and follow your organisation's data protection policies.
PRs are welcome — especially for endpoints not yet documented. If you've observed a new endpoint or spotted a mistake:
- Add or update the relevant path in
openapi.yaml - Include realistic but fictional example data (no real names, IDs, or section data). Never commit HAR files
- Note any quirks in the description (unusual response formats, required-but-undocumented params, etc.)
- Run
npm installonce, thennpm run checkto lint and regenerate thellms*files, and commit them too
See AGENTS.md for the full conventions, including how to mine HAR captures safely.
This repo uses Redocly CLI to lint openapi.yaml (config in redocly.yaml):
npm install
npm run check # lint + regenerate llms.txt, llms-full.txt and llms/GitHub Actions (.github/workflows/validate-openapi.yml) lints and bundles the spec on every pull request and push to
main, and fails if the generated llms* files weren't regenerated after a spec change.
This documentation is open source. The OSM API itself is owned by Online Scout Manager. This project is not endorsed by or affiliated with OSM.