NAV
json

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)