Introduction
Welcome to the unofficial Online Scout Manager documentation. This is an (incomplete) mapping of the OSM API, as observed in HTTP requests.
This documentation only really contains API routes we've used internally within City of Newcastle Scouts, though external contribution is always welcome - simply submit a pull request on GitHub!
Authentication
By visiting Settings
-> My Account Details
-> Developer Tools
, you are able to create a new application and create an OAuth client.
A note on rate limiting
OSM has rate limits on all API Endpoints. If your application is sending too many requests, you can be temporarily or permenantely blocked from the API.
To avoid being rate limited, monitor the following headers in any response: - X-RateLimit-Limit - how many requests/hour your client can perform - X-RateLimit-Remaining - how many requests are remaining until your client will be blocked - X-RateLimit-Reset - how long unnntil the ratelimit is reset (in seconds).
A HTTP 429 status code will be sent if your application has been rate limited.
General Requests
API Requests which don't fit into another category
Get General Data
Get an indication of which badges are covered in a term, with a weight per badge to show how many times it has been covered.
Example Response (a lot of this data has been ommitted as it is irrelevant to 99% of use cases)
var data_holder = {
"globals": {
"email": "your.osm.email@newcastlescouts.org.uk",
"firstname": "Joe",
"fullname": "Joe Bloggs",
"hasSectionAccess": true,
"lastname": "Bloggs",
"member_access": {
"12345": {
"abbrv": "Cubs",
"access": true,
"config": {
"at_home": false,
"attachments": false,
"badges": true,
"chat": false,
"details": true,
"emailbolton": true,
"events": true,
"giftaid": true,
"payments": true,
"photos": true,
"programme": true
},
"group": "1st Newcastle (Example)",
"label": "Cubs",
"members": {
"_nclscoutsapinote": "This only iterates for you (and your own children)",
"2211000": {
"first_name": "Leader",
"last_name": "Name",
"photo_guid": "00000000-0000-0000-0000-000000000000",
"abbrv_name": "Joe",
"chat_rooms": [],
"access_type": "member",
"has_unread_chat_rooms": false,
"abbrv": "Joe",
"pane_abbrv": "Joe",
"permissions": true,
"patrol": "Leaders"
}
}
}
},
"notepads": {
"10000": {
"raw": "Example",
"html": "<p>Example</p>"
}
},
"sectionConfig": {
"subscription_level": 3,
"subscription_expires": "2022-01-01",
"section_type": "cubs",
"sectionType": "cubs",
"parentSectionId": "0",
"subscription_lastExpires": "2021-01-01",
"subscription_active": false,
"portal": {
"events": 1,
"programme": 1,
"badges": 1,
"details": 1,
"emailbolton": 1,
"eventRemindFrequency": "-1",
"eventRemindCount": "-1",
"programmeSummary": "1",
"programmeTimes": "1",
"programmeShow": "0",
"programmeParentHelp": "no",
"badgesPartial": "0",
"showStore": 0,
"personalDetailsHeader": "Personal Details Header",
"emailAddress": "1st Example Cubs <cubs@examplescouts.org.uk>",
"emailAddressCopy": "",
"programmeDownloadButton": "0",
"badgesEmail": "0",
"charityName": "1st Newcastle (Example) Scout Group",
"easyfundraising": "https://www.easyfundraising.org.uk/causes/49thns/",
"email_archive_disable": true,
"email_archive_dob": true,
"eventIcs": 1,
"badgesShowRequirements": true,
"usedGiftAid": "2022-01-01",
"programmeIcs": "1",
"programmeShowBadges": "0",
"programmeAllowInformedAbsence": "1",
"badgesHomework": "badge",
"chat": 0,
"accounts": 1,
"payments": 1,
"autoGiftAid": "1",
"paymentRemindFrequency": "5",
"paymentRemindCount": "3",
"invitesRequired": false,
"photos": true,
"showPatrol": true,
"disabledContacts": []
},
"portalExpires": {
"events": "2022-10-02",
"eventsA": 0,
"programme": "2022-10-02",
"programmeA": 0,
"badges": "2022-10-02",
"badgesA": 0,
"details": "2022-10-02",
"detailsA": 0,
"emailbolton": "2022-10-02",
"emailboltonA": 0,
"chat": "2021-08-29",
"chatA": 0,
"accountsA": 2,
"accounts": "2023-03-22"
},
"hasUsedBadgeRecords": true,
"extraRecords": {
"5": {
"name": "Example Record",
"extraid": "12345"
}
},
"qmshare": {
"1": true
},
"subscription_cancelled": "2015-01-01",
"meeting_day": "Thu",
"config_subscriptions_checked": "2022-01-01",
"subscription_pred_lvl": 3,
"subscription_pred_exp": "2022-10-02",
"gocardless": "true",
"discountcodes": [
"ExampleAPICode"
],
"organisation_imported_section_id": "10000000",
"hierarchy_lowest_level": "level_1",
"hierarchy_operating_level": "level_0"
},
"terms": {
"12345": [
{
"enddate": "2022-01-01",
"master_term": null,
"name": "Example Term",
"past": true,
"sectionid": "12345",
"termid": "54321"
}
]
}
}
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/generic/startup/?action=getData
Members
This contains all API nodes accessed in the 'Members' category of OSM.
Get List of Members
Get a list of all members in a given section.
Example Response
{
"identifier": "scoutid",
"photos": true,
"items": [
{
"firstname": "Joe",
"lastname": "Smith",
"photo_guid": "00000000-0000-0000-0000-000000000000",
"patrolid": 12345,
"patrol": "Green",
"sectionid": 54321,
"enddate": null,
"age": "6 \/ 0",
"patrol_role_level_label": "",
"active": true,
"scoutid": 1000001,
"full_name": "Joe Smith"
},
{
"firstname": "Jane",
"lastname": "Smith",
"photo_guid": "00000000-0000-0000-0000-000000000000",
"patrolid": 12346,
"patrol": "Blue",
"sectionid": 54321,
"enddate": null,
"age": "6 \/ 5",
"patrol_role_level_label": "",
"active": false,
"scoutid": 1000002,
"full_name": "Jane Smith"
}
]
}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/contact/?action=getListOfMembers
Query Parameters
Parameter | Description |
---|---|
sort | What the returned members should be sorted by (dob , firstname , lastname , patrol ) |
sectionid | The Section ID |
termid | The Term ID |
section | The type of section (squirrels , beavers , cubs , scouts , explorers ) |
Get Individual Member Info
Get information about an individual member.
Example Response
{
"ok": true,
"read_only": [],
"data": {
"scoutid": "1234567",
"firstname": "Joseph",
"lastname": "Thomas",
"photo_guid": null,
"dob": "2016-01-10",
"started": "2022-01-01",
"created_date": "2021-09-18 00:00:00",
"last_accessed": "2022-04-21 00:00:00",
"patrolid": "10001",
"patrolleader": "0",
"startedsection": "2022-02-01",
"enddate": null,
"age": "6 years and 0 months",
"age_simple": "06 \/ 00",
"sectionid": 12345,
"active": true,
"meetings": "0"
},
"meta": []
}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/contact/?action=getIndividual
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
scoutid | The member's unique identifier |
termid | The term to retrieve data for |
context | The context you are requesting data in (members ) |
Get Member's Data
Get personal data about a member.
Example Response
{"note": "This is a ~1000 line JSON document per child. To read it, we'd suggest opening Inspect Element -> Network while using OSM."}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/contact/?action=getIndividual
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
scoutid | The member's unique identifier |
termid | The term to retrieve data for |
context | The context you are requesting data in (members ) |
Get Patrols
Get a list of all patrols/sixes/lodges with members.
Example Response
{
"-3": {
"patrolid": "-3",
"sectionid": "-2",
"name": "Young Leaders (YLs)",
"active": "1",
"points": "0",
"census_costs": false,
"members": []
},
"-2": {
"patrolid": "-2",
"sectionid": "-2",
"name": "Leaders",
"active": "1",
"points": "0",
"census_costs": false,
"members": []
},
"12345": {
"patrolid": "10001",
"sectionid": "12345",
"name": "Blue",
"active": "1",
"points": "4",
"census_costs": false,
"members": [
{
"firstname": "John",
"lastname": "Smith",
"scout_id": 1234567,
"photo_guid": "00000000-0000-0000-0000-000000000000",
"patrolid": 12345,
"patrolleader": "0",
"patrol": "Blue",
"sectionid": 54321,
"enddate": null,
"age": "7 \/ 10",
"patrol_role_level_label": "",
"active": 1,
"scoutid": 1234567,
"editable": true
}
]
}
}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/patrols/?action=getPatrolsWithPeople
Query Parameters
Parameter | Description |
---|---|
sectionid | Section ID |
termid | The term to retrieve data for |
include_no_patrol | Include a pseudo-patrol for members not in a patrol (ID -1). (y , n ) |
Get Census Details
Get a list of all members who do not have census data entered for them.
Example Response
{
"identifier": "scoutid",
"items": [
{
"scoutid": "1234567",
"firstname": "Example",
"lastname": "User",
"joined": "2022-03-01",
"photo_guid": null,
"sex": "",
"ethnicity": "",
"disabilities": "Edit disabilities",
"myscout": "Send Parent Portal email",
"raw_disabilities": [],
"_filterString": "example user"
}
]
}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/census/?action=getDetails
Query Parameters
Parameter | Description |
---|---|
sectionid | Section ID |
termid | Term ID to get data for |
Get Flexi-Records
Get a list of all flexi-records.
Example Response
{
"identifier": "extraid",
"label": "name",
"items": [
{
"extraid": "23456",
"name": "My Flexi-Record"
}
]
}
HTTP Request
GET https://onlinescoutmanager.co.uk/ext/members/flexirecords/?action=getPatrolsWithPeople
Query Parameters
Parameter | Description |
---|---|
sectionid | Section ID |
archived | Toggle archived or non-archived flexi-records (you cannot show both at the same time). (y , n ) |
Get Members Pending Transfer
Get a list of all members pending a transfer to/from another group/section.
Example Response
{
"status": true,
"error": null,
"data": [
{
"direction": "from",
"member_id": 1234567,
"firstname": "Josh",
"lastname": "Smith",
"photo_guid": "00000000-0000-0000-0000-000000000000",
"type": "transferred",
"date": "2022-02-01",
"section_id": 654321,
"section_name": {
"group": "Example Newcastle",
"section": "Scouts"
},
"section_long": "Example Newcastle: Scouts",
"mode": "outgoing",
"id": "outgoing-987654"
}
],
"meta": []
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/members/contact/?action=getMemberTransfers
Query Parameters
Parameter | Description |
---|---|
mode | The display mode (we're only aware of the value grid being used here) |
section_id | Section ID |
Get Deletable Members
Get a list of members who have been in your section, yet are no longer active in any OSM section.
Example Response
{
"status": true,
"error": null,
"data": [
{
"firstname": "Example",
"lastname": "Cub",
"date_deleted": "2022-04-01",
"id": 1234567
}
],
"meta": []
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/v3/members/review/deletion/<sectionid>
Query Parameters
Parameter | Description |
---|---|
mode | The display mode (we're only aware of the value grid being used here) |
section_id | Section ID |
Programme
This contains all API nodes accessed in the 'Programme' category of OSM.
Get Programme Overview
Get an overview of all meetings in a term, including the date, name and parent rota information.
Example Response
{
"items": [
{
"eveningid": "1111111",
"sectionid": "12345",
"title": "My Evening",
"notesforparents": "Beavers will return on the first Monday of the new school term.",
"notesforhelpingparents": null,
"parentsrequired": "1",
"games": "Games Notes from OSM",
"prenotes": "Pre-Meeting Notes from OSM",
"postnotes": "Post-Meeting Notes from OSM",
"leaders": "Example will be unavailable \n",
"meetingdate": "2022-04-01",
"starttime": "18:00:00",
"endtime": "19:00:00",
"config": "{\"parent_help_reminder_sent\":\"2022-04-01\"}",
"googlecalendar": null,
"soft_deleted": "0",
"parentsattendingcount": "1"
}
]
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/programme/?action=getProgrammeSummary
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
termid | The Term ID |
Get Badge Tag Cloud
Get an indication of which badges are covered in a term, with a weight per badge to show how many times it has been covered.
Example Response
{
"tags": {
"community": 1,
},
"tag_count": 1,
"badges": {
"sites\/onlinescoutmanager.co.uk\/badge_images\/img_231870.png": 1,
}
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/programme/clouds/?action=getBadgeTagCloud
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
termid | The Term ID |
section | The section type (squirrels , beavers , cubs , scouts , explorers ) |
Show Programme Risk Assessment
Show general programme risks added via OSM.
Example Response
{
"status": true,
"error": null,
"data": [
{
"name": "Example Category"
},
{
"name": "General Risks"
}
],
"meta": {
"itemstore": {
"identifier": "name"
}
}
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/v3/risk_assessments/<section id>/categories
Query Parameters
N/A
Get Badge Tag Cloud
Get an indication of which badges are covered in a term, with a weight per badge to show how many times it has been covered.
Example Response
{
"tags": {
"community": 1,
},
"tag_count": 1,
"badges": {
"sites\/onlinescoutmanager.co.uk\/badge_images\/img_231870.png": 1,
}
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/programme/clouds/?action=getBadgeTagCloud
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
termid | The Term ID |
section | The section type (squirrels , beavers , cubs , scouts , explorers ) |
Get Meeting Details
Get details about a given meeting
Example Response
{
"items": [
{
"eveningid": "1111111",
"sectionid": "12345",
"title": "Example Meeting",
"notesforparents": "Beavers will return on the first Monday of the new school term.",
"notesforhelpingparents": null,
"parentsrequired": "1",
"games": "",
"prenotes": "",
"postnotes": "",
"leaders": "Example will be unavailable \n",
"meetingdate": "2022-04-01",
"starttime": "18:00:00",
"endtime": "19:00:00",
"config": {
"parent_help_reminder_sent": "2022-04-01"
},
"googlecalendar": null,
"soft_deleted": "0",
"help": [
{
"scoutid": "2345678",
"scout": "Example Child",
"_nclScoutsNote": "(This is a list of parent helpers)"
}
],
"unavailableleaders": [
{
"member_id": 1234567,
"firstname": "Example",
"lastname": "Leader"
}
]
}
],
"badgelinks": {
"6171007": [
{
"picture": "sites\/onlinescoutmanager.co.uk\/badge_images\/img_231881.png",
"link_relation_id": "9677397",
"badge_id": "1525",
"badge_version": "0",
"column_id": "114235",
"badge": "1525_0",
"badgeLongName": "Global Issues",
"badgetype": "activity",
"badgetypeLongName": "Activity",
"columnname": "114235",
"columnnameLongName": "A: Endangered animals = Eco Evening",
"data": "Eco Evening",
"section": "beavers",
"same_as": [],
"sectionLongName": "Beavers",
"label": "Activity: Global Issues - Endangered animals"
}
]
}
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/programme/?action=getProgramme
Query Parameters
Parameter | Description |
---|---|
sectionid | The Section ID |
termid | The Term ID |
eveningid | The Meeting ID |
View Meeting Attachments
Get an indication of which badges are covered in a term, with a weight per badge to show how many times it has been covered.
Example Response
{
"note": [
"This contains a configuration of what files the server will accept",
"We've never used this endpoint, so can't extensively document it."
]
}
HTTP Request
GET https://www.onlinescoutmanager.co.uk/ext/programme/?action=programmeAttachmentsManifest
Query Parameters
Parameter | Description |
---|---|
section_id | The Section ID |
id | The Meeting ID |
evening_id | The Meeting ID (again) |
path | Unknown (/ ) |
temp | Unknown (false ) |
upload_mode | Unknown (programme ) |