Scout Camp Developers

Worked examples

Tutorials

These examples assume you already have a bearer token. Replace ids, tokens, and names with values from the camp you are authorised against.

1. Create a young person

Scope: children.write. Send JSON to POST https://developer.scoutcamp.co.uk/api/v1/children.

Comma-separate dietary, allergies, and disabilities (alias of health_other). Do not send one tag per field. medical_info is free-text medication notes, not a tag list. Do not send camp_consent — after submit we email the primary contact (emergency_email) the permission slip, then a second email with a signature box.
POST https://developer.scoutcamp.co.uk/api/v1/children
Authorization: Bearer sc_tok_…
Content-Type: application/json

{
    "first_name": "Alex",
    "last_name": "Taylor",
    "dob": "2014-06-12",
    "section_id": 3,
    "scout_group_id": 2,
    "emergency_name": "Sam Taylor",
    "emergency_phone": "07123 456789",
    "emergency_email": "sam@example.com",
    "photography_consent": "YES",
    "dietary": "Vegetarian, Gluten free",
    "allergies": "Peanuts, EpiPen required",
    "disabilities": "ADHD, Autism",
    "has_asthma": 1,
    "medical_info": "Uses a reliever inhaler before sport."
}

The response is privacy-safe. Submitted medical and contact details are stored but not returned:

{
  "ok": true,
  "consent_pending": true,
  "consent_emails_sent": true,
  "child": {
    "id": 184,
    "first_name": "Alex",
    "last_initial": "T",
    "profile_url": "https://…/qr/child/…",
    "scout_group_id": 2,
    "section_id": 3,
    "camp_status": ""
  }
}

2. Submit a registration form

Scopes: registration.urls then registration.submit.

  1. Call GET /registration-urls and copy the token for a child or leader link.
  2. POST to /registrations with that token, a matching type, and the person fields. Group and section come from the token — do not override them. Do not send camp_consent.
  3. Use the same comma-separated tag rules as creating a child. A JSON array of tags is also accepted and stored as a comma-separated list.
POST https://developer.scoutcamp.co.uk/api/v1/registrations
Authorization: Bearer sc_tok_…
Content-Type: application/json

{
    "token": "reg_abc123",
    "type": "child",
    "first_name": "Alex",
    "last_name": "Taylor",
    "dob": "2014-06-12",
    "emergency_name": "Sam Taylor",
    "emergency_phone": "07123 456789",
    "emergency_email": "sam@example.com",
    "dietary": [
        "Vegetarian",
        "Gluten free"
    ],
    "allergies": "Peanuts, EpiPen required",
    "health_other": "ADHD, Autism, Mobility needs",
    "has_asthma": true,
    "can_swim_50m": 1
}

3. Create a leader

Scope: leaders.write. Same tag rules for dietary and allergies.

POST https://developer.scoutcamp.co.uk/api/v1/leaders
Authorization: Bearer sc_tok_…
Content-Type: application/json

{
    "first_name": "Jordan",
    "last_name": "Reed",
    "email": "jordan.reed@example.com",
    "dob": "1994-03-02",
    "section_id": 3,
    "scout_group_id": 2,
    "role": "Leader",
    "dietary": "Vegan",
    "allergies": "Tree nuts",
    "phone": "07900 111222"
}

4. List people without personal details

Scopes: children.read or leaders.read. You only receive first name, last initial, id, profile URL, group, section, and status.

curl -H "Authorization: Bearer sc_tok_…" https://developer.scoutcamp.co.uk/api/v1/children