Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/hotosm/tasking-manager/llms.txt

Use this file to discover all available pages before exploring further.

HOT Tasking Manager uses a two-level structure — Organisations and Teams — to group contributors, own projects, and control who can map or validate. Organisations are the top-level entities that host mapping campaigns and own projects. Teams are groups of users within (or across) organisations that can be assigned specific roles on individual projects. Together these constructs allow coordinators to run everything from small community events to large-scale disaster response operations with fine-grained access control.

Organisations

An organisation in Tasking Manager is the administrative owner of projects and teams. Every project must be associated with exactly one organisation.

Organisation Fields

FieldDescription
idAuto-incremented integer primary key
nameUnique display name (up to 512 characters)
slugURL-safe identifier, auto-generated from the name if not provided
logoURL of the organisation’s logo image
descriptionFree-text description of the organisation
urlOrganisation’s public website
typeSubscription tier (see below)
subscription_tierNumeric tier detail for billing purposes

Organisation Types

The OrganisationType enum (from backend/models/postgis/statuses.py) classifies organisations by their subscription arrangement:
TypeValueDescription
FREE1Organisation uses Tasking Manager at no cost
DISCOUNTED2Organisation pays a reduced subscription fee
FULL_FEE3Organisation pays the full subscription fee

Organisation Managers

Organisations have a many-to-many relationship with users through the organisation_managers join table. Any user listed as a manager of an organisation can:
  • Create and publish projects under that organisation
  • Manage teams belonging to the organisation
  • Invite other managers
  • Create and link campaigns to the organisation
Managers are not a separate user role at the global level — the organisation_managers table grants management capability scoped to the specific organisation.

Creating an Organisation

Send a POST /organisations/ request as an admin user:
{
  "name": "MapAction",
  "slug": "mapaction",
  "logo": "https://example.org/logo.png",
  "url": "https://mapaction.org",
  "type": "FREE",
  "managers": ["alice_osm", "bob_osm"]
}
The managers array accepts OSM usernames. Each listed user must already have a Tasking Manager account (created on first OAuth login).

Teams

A team is a named group of users belonging to an organisation. Teams are the primary mechanism for restricting project access — project managers assign teams to a project with a specific role (MAPPER, VALIDATOR, or PROJECT_MANAGER), and only members of those teams can perform the corresponding actions.

Team Fields

FieldDescription
idAuto-incremented integer primary key
organisation_idForeign key to the owning organisation
nameTeam name (up to 512 characters)
logoOptional URL for a team logo
descriptionFree-text team description
join_methodHow new members can join
visibilityWhether the team is publicly listed

Team Visibility

The TeamVisibility enum controls whether a team appears in public listings:
VisibilityValueBehaviour
PUBLIC0Team is visible to all users and can be discovered in search
PRIVATE1Team is only visible to its members and organisation managers

Team Join Methods

The TeamJoinMethod enum controls how users can become members:
Join MethodValueBehaviour
ANY0Any logged-in user can join immediately
BY_REQUEST1Users request membership; a manager must approve
BY_INVITE2Users can only join when invited by a manager

Team Member Functions

Each member of a team holds one of two internal functions within that team:
FunctionValueDescription
MANAGER1Can approve join requests, invite users, and update team settings
MEMBER2Regular contributor; can map or validate on projects the team is assigned to
The creator of a team is automatically assigned the MANAGER function.

Team Roles on Projects

When a team is assigned to a project, it is given one of the roles defined by the TeamRoles enum, stored in the project_teams join table:
RoleValueWhat it grants
READ_ONLY-1Team members have no mapping or validation rights on the project
MAPPER0Team members can lock tasks for mapping on the project
VALIDATOR1Team members can lock tasks for validation on the project
PROJECT_MANAGER2Team members can manage the project (edit settings, publish, etc.)
A single team can be assigned to a project multiple times with different roles — for example, a team could be both a MAPPER and VALIDATOR team on the same project.
If a project has one or more teams with MAPPER role, only members of those teams (and admins) can map on it. Projects without any mapper team assignment default to MappingPermission.ANY, meaning any logged-in user can map.

Creating a Team

Send a POST /teams/ request:
{
  "name": "HOT Indonesia Validators",
  "organisation_id": 7,
  "description": "Experienced validators based in Indonesia",
  "joinMethod": "BY_REQUEST",
  "visibility": "PUBLIC"
}
The authenticated user becomes the first MANAGER of the team.

Adding a Team to a Project

Use POST /projects/{project_id}/teams/ to assign a team:
{
  "teamId": 23,
  "role": "VALIDATOR"
}

Campaigns

Campaigns are thematic groupings that link multiple projects under a shared banner. A campaign has a name, optional logo, optional URL, and a description. Both organisations and projects can be associated with multiple campaigns through many-to-many join tables (campaign_organisations and campaign_projects). Common uses for campaigns:
  • Grouping all projects responding to a single disaster event
  • Collecting thematic mapping work across countries (e.g., a global road network campaign)
  • Representing a partner organisation’s annual mapping goals
Campaigns are managed through POST /campaigns/ and can be listed at GET /campaigns/.

Partner Pages

Partners are public-facing pages for organisations and groups running remote mapathons or sustained mapping programmes. A partner record includes:
FieldDescription
namePartner display name
primary_hashtagMain OSM changeset hashtag used by the partner
secondary_hashtagOptional secondary hashtag
logo_urlPartner logo
permalinkUnique URL slug for the partner page
mapswipe_group_idLinks the partner to a MapSwipe group for integrated statistics
website_linksArray of labelled URLs pointing to partner resources
current_projectsFree-text or JSON listing active project IDs
The mapswipe_group_id field connects a partner page to the MapSwipe backend (MAPSWIPE_API_URL, defaulting to https://backend.mapswipe.org/graphql/), enabling MapSwipe contribution statistics to be displayed alongside Tasking Manager progress on the partner’s public page.

Organisations API

Create, update, and list organisations via the REST API.

Teams API

Manage teams, members, and project assignments via the REST API.

Roles and Permissions

Understand how global user roles interact with organisation and team access.

Projects and Tasks

Learn how projects are structured and how tasks are divided from an AoI.

Build docs developers (and LLMs) love