[
{
"api_type": "rest",
"endpoint": "GET /api/capabilities",
"auth": "none",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/api/@version",
"/osm/api/@generator",
"/osm/api/version/@minimum",
"/osm/api/version/@maximum",
"/osm/api/area/@maximum",
"/osm/api/tracepoints/@per_page",
"/osm/api/waynodes/@maximum",
"/osm/api/changesets/@maximum_elements",
"/osm/status/@database",
"/osm/status/@api",
"/osm/status/@gpx"
],
"notes": "Deprecated root-level alias; delegates to api/capabilities#show"
},
{
"api_type": "rest",
"endpoint": "GET /api/versions",
"auth": "none",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/api/@version"
],
"notes": "Returns list of supported API versions"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/capabilities",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/api/version/@minimum",
"/osm/api/version/@maximum",
"/osm/api/area/@maximum",
"/osm/api/tracepoints/@per_page",
"/osm/api/waynodes/@maximum",
"/osm/api/changesets/@maximum_elements",
"/osm/status/@database",
"/osm/status/@api",
"/osm/status/@gpx",
".version.minimum",
".version.maximum",
".area.maximum"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/permissions",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/permissions/permission/@name",
".permissions[]"
],
"notes": "Returns empty list for unauthenticated; full list for basic-auth; OAuth-scoped list for token-based auth"
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/changeset/create",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {
"osm/changeset": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "XML document with "
}
},
"response_key_fields": [
"plain text: changeset id integer"
],
"notes": "Returns new changeset ID as plain text"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/changeset/{id}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {
"include_discussion": {
"type": "boolean",
"source": "TASK_SPEC",
"notes": "If present, includes comment discussion in response"
}
},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
"/osm/changeset/@created_at",
"/osm/changeset/@closed_at",
"/osm/changeset/@open",
"/osm/changeset/@user",
"/osm/changeset/@uid",
"/osm/changeset/@min_lat",
"/osm/changeset/@min_lon",
"/osm/changeset/@max_lat",
"/osm/changeset/@max_lon",
"/osm/changeset/@num_changes",
"/osm/changeset/@comments_count",
"/osm/changeset/tag/@k",
"/osm/changeset/tag/@v",
".changeset.id",
".changeset.created_at",
".changeset.open",
".changeset.tags"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/changeset/{id}",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {
"osm/changeset": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "XML document updating changeset tags"
}
},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
],
"notes": "Update changeset tags; must be the changeset's owner"
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/changeset/{id}/close",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Returns 200 OK with empty body; idempotent"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/{id}/upload",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {
"osmChange": {
"type": "XML osmChange document",
"source": "TASK_SPEC",
"notes": "Contains , , sections with nodes/ways/relations"
}
},
"response_key_fields": [
"/diffResult/node/@old_id",
"/diffResult/node/@new_id",
"/diffResult/node/@new_version",
"/diffResult/way/@old_id",
"/diffResult/way/@new_id",
"/diffResult/way/@new_version",
"/diffResult/relation/@old_id",
"/diffResult/relation/@new_id",
"/diffResult/relation/@new_version"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/changeset/{id}/download",
"auth": "none",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osmChange/create/node/@id",
"/osmChange/modify/node/@id",
"/osmChange/delete/node/@id",
"/osmChange/create/way/@id",
"/osmChange/modify/way/@id",
"/osmChange/delete/way/@id"
],
"notes": "Returns osmChange XML document"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/{id}/subscribe",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/{id}/unsubscribe",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/changesets",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Bounding box: min_lon,min_lat,max_lon,max_lat"
},
"user": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/{id}",
"from_field": "/osm/user/@id",
"notes": "Filter by user ID; mutually exclusive with display_name"
},
"display_name": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Filter by display name; mutually exclusive with user"
},
"time": {
"type": "string",
"source": "TASK_SPEC",
"notes": "ISO 8601 datetime or comma-separated range"
},
"open": {
"type": "boolean",
"source": "TASK_SPEC",
"notes": "If any value, return only open changesets"
},
"closed": {
"type": "boolean",
"source": "TASK_SPEC",
"notes": "If any value, return only closed changesets"
},
"changesets": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated list of changeset IDs"
}
},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
"/osm/changeset/@user",
"/osm/changeset/@uid",
"/osm/changeset/@created_at",
"/osm/changeset/@open",
".changesets[].id",
".changesets[].uid"
],
"notes": "Returns up to 100 changesets sorted by created_at DESC"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/{id}/comment",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/changeset/create",
"from_field": "plain text response body",
"notes": "Changeset ID; must be closed"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comment body; required"
}
},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/comment/{id}/hide",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/changeset/{id}",
"from_field": "/osm/changeset/discussion/comment/@id",
"notes": "Changeset comment ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
],
"notes": "Moderator-only: sets visible=false on comment"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/changeset/comment/{id}/unhide",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/changeset/{id}",
"from_field": "/osm/changeset/discussion/comment/@id",
"notes": "Changeset comment ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/changeset/@id",
".changeset.id"
],
"notes": "Moderator-only: sets visible=true on comment"
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/node/create",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {
"osm/node": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": ""
}
},
"response_key_fields": [
"plain text: node id integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/node/{id}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/node/create",
"from_field": "plain text response body",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/node/@id",
"/osm/node/@lat",
"/osm/node/@lon",
"/osm/node/@version",
"/osm/node/@changeset",
"/osm/node/@user",
"/osm/node/@uid",
"/osm/node/@visible",
"/osm/node/@timestamp",
"/osm/node/tag/@k",
"/osm/node/tag/@v",
".elements[0].id",
".elements[0].lat",
".elements[0].lon",
".elements[0].tags"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/node/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {
"osm/node": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute matching current version"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/node/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {
"osm/node": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/nodes",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"nodes": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated list of node IDs; required"
}
},
"body_params": {},
"response_key_fields": [
"/osm/node/@id",
"/osm/node/@lat",
"/osm/node/@lon",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/node/{id}/history",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/node/@version",
"/osm/node/@id",
".elements[].version"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/node/{id}/{version}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}/history",
"from_field": "/osm/node/@version",
"notes": "Version number"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/node/@id",
"/osm/node/@version",
"/osm/node/@lat",
"/osm/node/@lon"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/node/{id}/{version}/redact",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}/history",
"from_field": "/osm/node/@version",
"notes": "Version to redact"
}
},
"query_params": {
"redaction": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redaction ID; omit to unredact"
}
},
"body_params": {},
"response_key_fields": [],
"notes": "Moderator-only; returns 200 OK empty"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/node/{id}/ways",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/way/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/node/{id}/relations",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/way/create",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {
"osm/way": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": ""
}
},
"response_key_fields": [
"plain text: way id integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/way/{id}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/way/create",
"from_field": "plain text response body",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/way/@id",
"/osm/way/@version",
"/osm/way/@changeset",
"/osm/way/nd/@ref",
"/osm/way/tag/@k",
"/osm/way/tag/@v",
".elements[0].id",
".elements[0].nodes",
".elements[0].tags"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/way/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {
"osm/way": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/way/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {
"osm/way": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/ways",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"ways": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated list of way IDs; required"
}
},
"body_params": {},
"response_key_fields": [
"/osm/way/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/way/{id}/full",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/node/@id",
"/osm/way/@id",
".elements[].type",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/way/{id}/history",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/way/@version",
".elements[].version"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/way/{id}/{version}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}/history",
"from_field": "/osm/way/@version",
"notes": "Version number"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/way/@id",
"/osm/way/@version"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/way/{id}/{version}/redact",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}/history",
"from_field": "/osm/way/@version",
"notes": "Version to redact"
}
},
"query_params": {
"redaction": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redaction ID; omit to unredact"
}
},
"body_params": {},
"response_key_fields": [],
"notes": "Moderator-only"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/way/{id}/relations",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/relation/create",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {
"osm/relation": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": ""
}
},
"response_key_fields": [
"plain text: relation id integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relation/{id}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "PUT /api/0.6/relation/create",
"from_field": "plain text response body",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
"/osm/relation/@version",
"/osm/relation/member/@type",
"/osm/relation/member/@ref",
"/osm/relation/member/@role",
"/osm/relation/tag/@k",
"/osm/relation/tag/@v",
".elements[0].id",
".elements[0].members",
".elements[0].tags"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/relation/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {
"osm/relation": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/relation/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {
"osm/relation": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "Must include version attribute"
}
},
"response_key_fields": [
"plain text: new version integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relations",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"relations": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated list of relation IDs; required"
}
},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relation/{id}/full",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/node/@id",
"/osm/way/@id",
"/osm/relation/@id",
".elements[].type",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relation/{id}/history",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@version",
".elements[].version"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relation/{id}/{version}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}/history",
"from_field": "/osm/relation/@version",
"notes": "Version number"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
"/osm/relation/@version"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/relation/{id}/{version}/redact",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
},
"version": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}/history",
"from_field": "/osm/relation/@version",
"notes": "Version to redact"
}
},
"query_params": {
"redaction": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redaction ID; omit to unredact"
}
},
"body_params": {},
"response_key_fields": [],
"notes": "Moderator-only"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/relation/{id}/relations",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/relation/@id",
".elements[].id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/map",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "min_lon,min_lat,max_lon,max_lat; required; max area ~0.25 sq degrees"
}
},
"body_params": {},
"response_key_fields": [
"/osm/bounds/@minlat",
"/osm/bounds/@minlon",
"/osm/bounds/@maxlat",
"/osm/bounds/@maxlon",
"/osm/node/@id",
"/osm/node/@lat",
"/osm/node/@lon",
"/osm/way/@id",
"/osm/relation/@id",
".bounds",
".elements[].type",
".elements[].id"
],
"notes": "Content-Disposition: attachment; filename=map.osm"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/trackpoints",
"auth": "none",
"format_variants": [
".gpx"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "min_lon,min_lat,max_lon,max_lat; required"
},
"page": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Page number >= 0; default 0"
}
},
"body_params": {},
"response_key_fields": [
"/gpx/trk/trkseg/trkpt/@lat",
"/gpx/trk/trkseg/trkpt/@lon",
"/gpx/trk/trkseg/trkpt/time"
],
"notes": "Returns GPX format only; Content-Disposition: attachment; filename=tracks.gpx"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/user/{id}",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "User ID; from search result or known user"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/user/@id",
"/osm/user/@display_name",
"/osm/user/@account_created",
"/osm/user/description",
"/osm/user/contributor-terms/@agreed",
"/osm/user/img/@href",
"/osm/user/changesets/@count",
"/osm/user/traces/@count",
"/osm/user/home/@lat",
"/osm/user/home/@lon",
"/osm/user/home/@zoom",
"/osm/user/languages/lang",
".user.id",
".user.display_name",
".user.changesets.count",
".user.traces.count"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/user/details",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/user/@id",
"/osm/user/@display_name",
"/osm/user/messages/received/@count",
"/osm/user/messages/received/@unread",
"/osm/user/messages/sent/@count",
".user.id",
".user.display_name",
".user.messages"
],
"notes": "Returns full details for the authenticated user"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/user/gpx_files",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/gpx_file/@id",
"/osm/gpx_file/@name",
"/osm/gpx_file/@lat",
"/osm/gpx_file/@lon",
"/osm/gpx_file/@visibility",
"/osm/gpx_file/@pending"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/users",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {
"users": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated list of user IDs; required"
}
},
"body_params": {},
"response_key_fields": [
"/osm/user/@id",
"/osm/user/@display_name",
".users[].id",
".users[].display_name"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/user/preferences",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/preferences/preference/@k",
"/osm/preferences/preference/@v",
".preferences"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/user/preferences",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"osm/preferences": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": ""
}
},
"response_key_fields": [],
"notes": "Replaces entire preferences set; returns empty 200"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/user/preferences/{preference_key}",
"auth": "oauth",
"format_variants": [],
"path_params": {
"preference_key": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/preferences",
"from_field": "/osm/preferences/preference/@k",
"notes": "Preference key"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"plain text: preference value string"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/user/preferences/{preference_key}",
"auth": "oauth",
"format_variants": [],
"path_params": {
"preference_key": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Preference key to set"
}
},
"query_params": {},
"body_params": {
"raw_body": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Raw text body = new preference value"
}
},
"response_key_fields": [],
"notes": "Returns empty 200"
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/user/preferences/{preference_key}",
"auth": "oauth",
"format_variants": [],
"path_params": {
"preference_key": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/preferences",
"from_field": "/osm/preferences/preference/@k",
"notes": "Preference key to delete"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Returns empty 200"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/gpx/create",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"file": {
"type": "multipart file",
"source": "TASK_SPEC",
"notes": "GPX file upload; required"
},
"description": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Trace description"
},
"tags": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated tags"
},
"visibility": {
"type": "string",
"source": "TASK_SPEC",
"notes": "private|public|trackable|identifiable"
},
"public": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Deprecated: 0 or 1"
}
},
"response_key_fields": [
"plain text: gpx trace id integer"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/gpx/{id}",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "POST /api/0.6/gpx/create",
"from_field": "plain text response body",
"notes": "GPX trace ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/gpx_file/@id",
"/osm/gpx_file/@name",
"/osm/gpx_file/@lat",
"/osm/gpx_file/@lon",
"/osm/gpx_file/@visibility",
"/osm/gpx_file/@pending",
"/osm/gpx_file/description",
"/osm/gpx_file/tag"
]
},
{
"api_type": "rest",
"endpoint": "PUT /api/0.6/gpx/{id}",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id",
"notes": "GPX trace ID"
}
},
"query_params": {},
"body_params": {
"osm/gpx_file": {
"type": "XML body",
"source": "TASK_SPEC",
"notes": "XML with updated name/description/tags/visibility"
}
},
"response_key_fields": [],
"notes": "Returns 200 OK; owner only"
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/gpx/{id}",
"auth": "oauth",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id",
"notes": "GPX trace ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Returns 200 OK; owner only; soft-deletes via TraceDestroyerJob"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/gpx/{id}/details",
"auth": "oauth",
"format_variants": [
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id",
"notes": "GPX trace ID; alias of GET /gpx/{id}"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/gpx_file/@id",
"/osm/gpx_file/@visibility"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/gpx/{id}/data",
"auth": "oauth",
"format_variants": [
".gpx",
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id",
"notes": "GPX trace ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"binary file download"
],
"notes": "Returns raw GPX/XML file; Content-Disposition attachment; owner or public traces only"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes",
"auth": "none",
"format_variants": [
".xml",
".json",
".rss",
".gpx"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "min_lon,min_lat,max_lon,max_lat; preferred over l/r/b/t"
},
"l": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Left/min_lon (deprecated; use bbox)"
},
"r": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Right/max_lon (deprecated; use bbox)"
},
"b": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Bottom/min_lat (deprecated; use bbox)"
},
"t": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Top/max_lat (deprecated; use bbox)"
},
"limit": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Max results 1-10000; default 100"
},
"closed": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Days since closed to include (-1=all, 0=open only, N=closed within N days); default 7"
}
},
"body_params": {},
"response_key_fields": [
"/osm/note/@lon",
"/osm/note/@lat",
"/osm/note/id",
"/osm/note/status",
"/osm/note/date_created",
"/osm/note/comments/comment/text",
".features[].properties.id",
".features[].geometry.coordinates",
".features[].properties.status"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Latitude; required"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Longitude; required"
},
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Opening comment text; required"
}
},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status",
".features[0].properties.id",
".features[0].properties.status"
],
"notes": "Anonymous posting allowed if no ACL block; returns note details"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes/{id}",
"auth": "none",
"format_variants": [
".xml",
".json",
".rss",
".gpx"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "POST /api/0.6/notes",
"from_field": "/osm/note/id",
"notes": "Note ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"/osm/note/@lon",
"/osm/note/@lat",
"/osm/note/id",
"/osm/note/status",
"/osm/note/comments/comment/text",
"/osm/note/comments/comment/user",
"/osm/note/comments/comment/uid",
".features[0].properties.id",
".features[0].properties.comments"
]
},
{
"api_type": "rest",
"endpoint": "DELETE /api/0.6/notes/{id}",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/notes/{id}",
"from_field": "/osm/note/id",
"notes": "Note ID"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Optional hide comment"
}
},
"response_key_fields": [
"/osm/note/status",
".features[0].properties.status"
],
"notes": "Moderator-only; sets status=hidden"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/{id}/comment",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/notes/{id}",
"from_field": "/osm/note/id",
"notes": "Note ID; must be open"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comment text; required"
}
},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status",
".features[0].properties.id"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/{id}/close",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/notes/{id}",
"from_field": "/osm/note/id",
"notes": "Note ID; must be open"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Optional closing comment"
}
},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status",
".features[0].properties.status"
]
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/{id}/reopen",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/notes/{id}",
"from_field": "/osm/note/id",
"notes": "Note ID; must be closed"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Optional reopening comment"
}
},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes/search",
"auth": "none",
"format_variants": [
".xml",
".json",
".rss",
".gpx"
],
"path_params": {},
"query_params": {
"q": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Full-text search query against note comments"
},
"display_name": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Filter by author display name"
},
"user": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/{id}",
"from_field": "/osm/user/@id",
"notes": "Filter by author user ID"
},
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Bounding box filter"
},
"from": {
"type": "string",
"source": "TASK_SPEC",
"notes": "ISO 8601 start date"
},
"to": {
"type": "string",
"source": "TASK_SPEC",
"notes": "ISO 8601 end date; default now"
},
"sort": {
"type": "string",
"source": "TASK_SPEC",
"notes": "created_at|updated_at; default updated_at"
},
"order": {
"type": "string",
"source": "TASK_SPEC",
"notes": "oldest|newest; default newest"
},
"limit": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Max 1-10000; default 100"
},
"closed": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Days filter same as /notes"
}
},
"body_params": {},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status",
".features[].properties.id"
]
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes/feed",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Optional bounding box filter"
},
"limit": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Max results; default 100"
},
"closed": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Days filter"
}
},
"body_params": {},
"response_key_fields": [
"RSS feed of recent note comments"
],
"notes": "Default format is rss"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/addPOIexec",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Latitude; required"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Longitude; required"
},
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comment; required"
}
},
"response_key_fields": [
"/osm/note/id"
],
"notes": "Legacy alias for POST /api/0.6/notes"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/closePOIexec",
"auth": "oauth",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Note ID; required"
},
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Optional comment"
}
},
"response_key_fields": [
"/osm/note/id",
"/osm/note/status"
],
"notes": "Legacy alias for POST /api/0.6/notes/{id}/close"
},
{
"api_type": "rest",
"endpoint": "POST /api/0.6/notes/editPOIexec",
"auth": "none",
"format_variants": [
".xml",
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Note ID; required"
},
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comment text; required"
}
},
"response_key_fields": [
"/osm/note/id"
],
"notes": "Legacy alias for POST /api/0.6/notes/{id}/comment"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes/getGPX",
"auth": "none",
"format_variants": [
".gpx"
],
"path_params": {},
"query_params": {
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Bounding box"
}
},
"body_params": {},
"response_key_fields": [
"GPX waypoints with note data"
],
"notes": "Legacy alias for GET /api/0.6/notes with format=gpx"
},
{
"api_type": "rest",
"endpoint": "GET /api/0.6/notes/getRSSfeed",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"RSS feed"
],
"notes": "Legacy alias for GET /api/0.6/notes/feed"
},
{
"api_type": "form",
"endpoint": "GET /search",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"query": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Free text search query; may be parsed as lat/lon, DMS, NSEW coordinates, or forwarded to Nominatim"
},
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Latitude for reverse geocode (alternative to query)"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Longitude for reverse geocode (alternative to query)"
},
"zoom": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Map zoom level hint"
},
"minlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box south bound"
},
"minlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box west bound"
},
"maxlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box north bound"
},
"maxlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box east bound"
}
},
"body_params": {},
"response_key_fields": [
"HTML page; triggers JS calls to geocoder sub-endpoints"
],
"notes": "Returns HTML map page; actual search dispatched client-side to /geocoder/* sub-endpoints"
},
{
"api_type": "form",
"endpoint": "POST /geocoder/search_latlon",
"auth": "none",
"format_variants": [
".html partial"
],
"path_params": {},
"query_params": {},
"body_params": {
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Latitude; required"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Longitude; required"
},
"zoom": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Zoom level"
},
"latlon_digits": {
"type": "boolean",
"source": "DERIVED",
"notes": "Set when query was ambiguous lat/lon digits"
}
},
"response_key_fields": [
"HTML results partial with .lat, .lon, .zoom, .name per result"
],
"notes": "Returns HTML results partial"
},
{
"api_type": "form",
"endpoint": "POST /geocoder/search_osm_nominatim",
"auth": "none",
"format_variants": [
".html partial"
],
"path_params": {},
"query_params": {},
"body_params": {
"query": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Search query; required"
},
"minlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box west"
},
"minlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box south"
},
"maxlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box east"
},
"maxlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "View box north"
},
"exclude": {
"type": "string",
"source": "DERIVED",
"notes": "Comma-separated Nominatim place IDs to exclude (from more_params)"
}
},
"response_key_fields": [
"HTML results: .lat, .lon, .min_lat, .max_lat, .min_lon, .max_lon, .prefix, .name, .type (N/W/R), .id (osm_id)"
],
"notes": "Proxies to Nominatim; response includes .type and .id for OSM object linkage via PREV_CALL"
},
{
"api_type": "form",
"endpoint": "POST /geocoder/search_osm_nominatim_reverse",
"auth": "none",
"format_variants": [
".html partial"
],
"path_params": {},
"query_params": {},
"body_params": {
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Latitude; required"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Longitude; required"
},
"zoom": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Zoom controls precision"
}
},
"response_key_fields": [
"HTML results: .lat, .lon, .zoom, .name, .type (osm_type), .id (osm_id)"
],
"notes": "Proxies to Nominatim reverse geocode endpoint"
},
{
"api_type": "form",
"endpoint": "GET /directions",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"from": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Origin place name or coordinates"
},
"to": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Destination place name or coordinates"
},
"route": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Routing engine identifier"
}
},
"body_params": {},
"response_key_fields": [
"HTML map page; routing handled client-side"
],
"notes": "Renders map with directions UI; actual routing is client-side"
},
{
"api_type": "form",
"endpoint": "GET /export",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"minlon": {
"type": "float",
"source": "TASK_SPEC"
},
"minlat": {
"type": "float",
"source": "TASK_SPEC"
},
"maxlon": {
"type": "float",
"source": "TASK_SPEC"
},
"maxlat": {
"type": "float",
"source": "TASK_SPEC"
}
},
"body_params": {},
"response_key_fields": [
"HTML export page"
]
},
{
"api_type": "form",
"endpoint": "POST /export/finish",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"minlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "West bound"
},
"minlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "South bound"
},
"maxlon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "East bound"
},
"maxlat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "North bound"
},
"format": {
"type": "string",
"source": "TASK_SPEC",
"notes": "osm|mapnik"
},
"mapnik_format": {
"type": "string",
"source": "TASK_SPEC",
"notes": "png|jpeg|svg|pdf (when format=mapnik)"
},
"mapnik_scale": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Scale denominator (when format=mapnik)"
}
},
"response_key_fields": [],
"notes": "Redirects to /api/0.6/map for osm format, or to render.openstreetmap.org for mapnik"
},
{
"api_type": "form",
"endpoint": "GET /export/embed",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML embed snippet"
],
"notes": "Cached; used for generating embeddable map iframes"
},
{
"api_type": "form",
"endpoint": "GET /",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"lat": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Map centre latitude (redirects to #map=...)"
},
"lon": {
"type": "float",
"source": "TASK_SPEC",
"notes": "Map centre longitude"
},
"zoom": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Map zoom level"
},
"layers": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Layer codes"
},
"node": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redirect to /node/{id}"
},
"way": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redirect to /way/{id}"
},
"relation": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Redirect to /relation/{id}"
},
"query": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Redirect to /search?query=..."
}
},
"body_params": {},
"response_key_fields": [
"HTML main map page"
]
},
{
"api_type": "form",
"endpoint": "GET /edit",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"editor": {
"type": "string",
"source": "TASK_SPEC",
"notes": "id|potlatch2|remote"
},
"node": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Focus on node"
},
"way": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Focus on way"
},
"note": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Focus on note"
},
"gpx": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Focus on trace"
}
},
"body_params": {},
"response_key_fields": [
"HTML editor page"
]
},
{
"api_type": "form",
"endpoint": "GET /go/{code}",
"auth": "none",
"format_variants": [],
"path_params": {
"code": {
"type": "string",
"source": "STATIC",
"notes": "Short-link code (base64-like)"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Decodes ShortLink and redirects to map with lat/lon/zoom"
},
{
"api_type": "form",
"endpoint": "POST /preview/{type}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"type": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Rich text format type (e.g. markdown)"
}
},
"query_params": {},
"body_params": {
"text": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Text to preview"
}
},
"response_key_fields": [
"HTML rendered text"
]
},
{
"api_type": "form",
"endpoint": "GET /node/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML browse page"
]
},
{
"api_type": "form",
"endpoint": "GET /node/{id}/history",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/node/{id}",
"from_field": "/osm/node/@id",
"notes": "Node ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML history page"
]
},
{
"api_type": "form",
"endpoint": "GET /way/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML browse page"
]
},
{
"api_type": "form",
"endpoint": "GET /way/{id}/history",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/way/{id}",
"from_field": "/osm/way/@id",
"notes": "Way ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML history page"
]
},
{
"api_type": "form",
"endpoint": "GET /relation/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML browse page"
]
},
{
"api_type": "form",
"endpoint": "GET /relation/{id}/history",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/relation/{id}",
"from_field": "/osm/relation/@id",
"notes": "Relation ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML history page"
]
},
{
"api_type": "form",
"endpoint": "GET /changeset/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/changeset/{id}",
"from_field": "/osm/changeset/@id",
"notes": "Changeset ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML browse page"
]
},
{
"api_type": "form",
"endpoint": "GET /query",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML query page (browse feature query tool)"
]
},
{
"api_type": "form",
"endpoint": "GET /history",
"auth": "none",
"format_variants": [
".html",
".atom"
],
"path_params": {},
"query_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Filter by user"
},
"bbox": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Bounding box filter"
},
"max_id": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Maximum changeset ID for paging"
}
},
"body_params": {},
"response_key_fields": [
"HTML or Atom feed of changesets"
]
},
{
"api_type": "form",
"endpoint": "GET /history/feed",
"auth": "none",
"format_variants": [
".atom"
],
"path_params": {},
"query_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"bbox": {
"type": "string",
"source": "TASK_SPEC"
}
},
"body_params": {},
"response_key_fields": [
"Atom feed"
]
},
{
"api_type": "form",
"endpoint": "GET /history/comments/feed",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {},
"query_params": {
"limit": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Max comments 1-10000; default 100"
}
},
"body_params": {},
"response_key_fields": [
"RSS feed of recent changeset comments"
]
},
{
"api_type": "form",
"endpoint": "GET /changeset/{id}/comments/feed",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/changeset/{id}",
"from_field": "/osm/changeset/@id",
"notes": "Changeset ID; empty string = all"
}
},
"query_params": {
"limit": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Max comments"
}
},
"body_params": {},
"response_key_fields": [
"RSS feed of changeset comments"
]
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/history",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/{id}",
"from_field": "/osm/user/@display_name",
"notes": "User display name"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML user changeset history"
]
},
{
"api_type": "form",
"endpoint": "GET /note/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/notes/{id}",
"from_field": "/osm/note/id",
"notes": "Note ID"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML note page"
]
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/notes",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/{id}",
"from_field": "/osm/user/@display_name",
"notes": "User display name"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of user's notes"
]
},
{
"api_type": "form",
"endpoint": "GET /login",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"referer": {
"type": "string",
"source": "TASK_SPEC",
"notes": "URL to redirect to after successful login"
}
},
"body_params": {},
"response_key_fields": [
"HTML login form"
]
},
{
"api_type": "form",
"endpoint": "POST /login",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"username": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Username or email address"
},
"password": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Password"
},
"remember_me": {
"type": "boolean",
"source": "TASK_SPEC",
"notes": "Persist session cookie"
},
"referer": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Post-login redirect URL"
}
},
"response_key_fields": [],
"notes": "On success sets session[:user] and redirects; on failure re-renders login form"
},
{
"api_type": "form",
"endpoint": "GET /logout",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML confirmation page"
]
},
{
"api_type": "form",
"endpoint": "POST /logout",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"referer": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Post-logout redirect"
}
},
"response_key_fields": [],
"notes": "Destroys UserToken and session; redirects to referer or /"
},
{
"api_type": "form",
"endpoint": "GET /user/new",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"referer": {
"type": "string",
"source": "TASK_SPEC"
},
"auth_provider": {
"type": "string",
"source": "AUTH_FLOW",
"notes": "Set after OAuth callback"
},
"auth_uid": {
"type": "string",
"source": "AUTH_FLOW"
},
"email": {
"type": "string",
"source": "AUTH_FLOW"
},
"nickname": {
"type": "string",
"source": "AUTH_FLOW"
}
},
"body_params": {},
"response_key_fields": [
"HTML signup form"
]
},
{
"api_type": "form",
"endpoint": "POST /user/new",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"user[email]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[email_confirmation]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[display_name]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[pass_crypt]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[pass_crypt_confirmation]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[auth_provider]": {
"type": "string",
"source": "AUTH_FLOW"
},
"user[auth_uid]": {
"type": "string",
"source": "AUTH_FLOW"
}
},
"response_key_fields": [],
"notes": "Creates session[:new_user], then redirects to /user/terms or third-party auth"
},
{
"api_type": "form",
"endpoint": "GET /user/terms",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML terms of service page"
]
},
{
"api_type": "form",
"endpoint": "POST /user/save",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"read_tou": {
"type": "boolean",
"source": "TASK_SPEC"
},
"read_ct": {
"type": "boolean",
"source": "TASK_SPEC"
},
"decline": {
"type": "boolean",
"source": "TASK_SPEC"
},
"user[consider_pd]": {
"type": "boolean",
"source": "TASK_SPEC"
}
},
"response_key_fields": [],
"notes": "Creates account or agrees to terms; redirects to welcome or confirmation"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/confirm/resend",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Resends confirmation email; requires matching session token"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/confirm",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML confirmation page"
]
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/confirm",
"auth": "none",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"confirm_string": {
"type": "string",
"source": "STATIC",
"notes": "Token from confirmation email"
}
},
"response_key_fields": [],
"notes": "Activates account and logs user in"
},
{
"api_type": "form",
"endpoint": "POST /user/confirm",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"confirm_string": {
"type": "string",
"source": "STATIC",
"notes": "Confirmation token"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user/confirm-email",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"token": {
"type": "string",
"source": "STATIC",
"notes": "Email change confirmation token"
}
},
"body_params": {},
"response_key_fields": [
"HTML confirmation result"
]
},
{
"api_type": "form",
"endpoint": "POST /user/confirm-email",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"confirm_string": {
"type": "string",
"source": "STATIC",
"notes": "Email change token"
}
},
"response_key_fields": [],
"notes": "Confirms new email address; redirects to account edit"
},
{
"api_type": "form",
"endpoint": "GET /user/forgot-password",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML forgot-password form"
]
},
{
"api_type": "form",
"endpoint": "POST /user/forgot-password",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"email": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Registered email address"
}
},
"response_key_fields": [],
"notes": "Sends reset token email; redirects to login"
},
{
"api_type": "form",
"endpoint": "GET /user/reset-password",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"token": {
"type": "string",
"source": "STATIC",
"notes": "Password reset token from email"
}
},
"body_params": {},
"response_key_fields": [
"HTML password reset form"
]
},
{
"api_type": "form",
"endpoint": "POST /user/reset-password",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"token": {
"type": "string",
"source": "STATIC",
"notes": "Reset token"
},
"user[pass_crypt]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[pass_crypt_confirmation]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": [],
"notes": "Updates password; logs user in on success"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/{id}",
"from_field": "/osm/user/@display_name",
"notes": "User display name"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML user profile page"
]
},
{
"api_type": "form",
"endpoint": "GET /account/edit",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML account settings form"
]
},
{
"api_type": "form",
"endpoint": "PUT /account",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"user[display_name]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[new_email]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[pass_crypt]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[pass_crypt_confirmation]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[auth_provider]": {
"type": "string",
"source": "AUTH_FLOW"
}
},
"response_key_fields": [],
"notes": "Updates account settings; may redirect to third-party auth"
},
{
"api_type": "form",
"endpoint": "DELETE /account",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Soft-deletes account; clears session"
},
{
"api_type": "form",
"endpoint": "GET /account/deletion",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML account deletion confirmation page"
]
},
{
"api_type": "form",
"endpoint": "GET /dashboard",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML user dashboard"
]
},
{
"api_type": "form",
"endpoint": "GET /preferences",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML preferences page"
]
},
{
"api_type": "form",
"endpoint": "GET /preferences/edit",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML preferences edit form"
]
},
{
"api_type": "form",
"endpoint": "PUT /preferences",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"user[languages]": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Comma-separated language codes"
},
"user[preferred_editor]": {
"type": "string",
"source": "TASK_SPEC",
"notes": "id|potlatch2|remote|default"
}
},
"response_key_fields": [],
"notes": "Updates language and editor preferences"
},
{
"api_type": "form",
"endpoint": "GET /profile/edit",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML profile edit form"
]
},
{
"api_type": "form",
"endpoint": "PUT /profile",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"user[description]": {
"type": "string",
"source": "TASK_SPEC"
},
"user[home_lat]": {
"type": "float",
"source": "TASK_SPEC"
},
"user[home_lon]": {
"type": "float",
"source": "TASK_SPEC"
},
"user[avatar]": {
"type": "multipart file",
"source": "TASK_SPEC"
},
"avatar_action": {
"type": "string",
"source": "TASK_SPEC",
"notes": "new|delete|gravatar"
}
},
"response_key_fields": [],
"notes": "Updates description, home location, avatar"
},
{
"api_type": "form",
"endpoint": "POST /user/go_public",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Sets data_public=true; redirects to account edit"
},
{
"api_type": "form",
"endpoint": "GET /auth/failure",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {
"message": {
"type": "string",
"source": "AUTH_FLOW",
"notes": "OmniAuth error message key"
},
"origin": {
"type": "string",
"source": "AUTH_FLOW",
"notes": "Original URL"
}
},
"body_params": {},
"response_key_fields": [],
"notes": "OmniAuth failure callback; redirects to login with error flash"
},
{
"api_type": "form",
"endpoint": "GET /auth/{provider}/callback",
"auth": "none",
"format_variants": [],
"path_params": {
"provider": {
"type": "string",
"source": "AUTH_FLOW",
"notes": "OmniAuth provider name: google|facebook|github|openid etc."
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "OmniAuth success callback; processes auth_info and logs in or creates account"
},
{
"api_type": "form",
"endpoint": "POST /auth/{provider}/callback",
"auth": "none",
"format_variants": [],
"path_params": {
"provider": {
"type": "string",
"source": "AUTH_FLOW",
"notes": "OmniAuth provider name"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "OmniAuth POST callback variant"
},
{
"api_type": "form",
"endpoint": "POST /auth/{provider}",
"auth": "none",
"format_variants": [],
"path_params": {
"provider": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Third-party provider to authenticate with"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Initiates OmniAuth flow; redirects to provider"
},
{
"api_type": "form",
"endpoint": "GET /oauth/authorize",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"oauth_token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth/request_token",
"from_field": "oauth_token",
"notes": "OAuth 1.0 request token"
}
},
"body_params": {},
"response_key_fields": [
"HTML OAuth 1.0 authorization page"
],
"notes": "OAuth 1.0a authorization endpoint"
},
{
"api_type": "form",
"endpoint": "POST /oauth/authorize",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"oauth_token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth/request_token",
"from_field": "oauth_token"
},
"allow_read_prefs": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_write_prefs": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_write_diary": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_write_api": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_read_gpx": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_write_gpx": {
"type": "boolean",
"source": "TASK_SPEC"
},
"allow_write_notes": {
"type": "boolean",
"source": "TASK_SPEC"
}
},
"response_key_fields": [],
"notes": "Grants or denies OAuth 1.0 permissions; redirects to callback with oauth_token+oauth_verifier"
},
{
"api_type": "rest",
"endpoint": "GET /oauth/request_token",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"oauth_token",
"oauth_token_secret"
],
"notes": "OAuth 1.0a: returns request token as URL-encoded form body"
},
{
"api_type": "rest",
"endpoint": "POST /oauth/request_token",
"auth": "none",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"oauth_consumer_key": {
"type": "string",
"source": "STATIC"
},
"oauth_signature_method": {
"type": "string",
"source": "STATIC"
},
"oauth_callback": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": [
"oauth_token",
"oauth_token_secret"
]
},
{
"api_type": "rest",
"endpoint": "GET /oauth/access_token",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"oauth_token",
"oauth_token_secret"
],
"notes": "OAuth 1.0a: exchange authorized request token for access token"
},
{
"api_type": "rest",
"endpoint": "POST /oauth/access_token",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"oauth_verifier": {
"type": "string",
"source": "AUTH_FLOW",
"from_endpoint": "POST /oauth/authorize",
"notes": "Verifier from authorization callback"
}
},
"response_key_fields": [
"oauth_token",
"oauth_token_secret"
]
},
{
"api_type": "rest",
"endpoint": "GET /oauth/token",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"oauth_token",
"oauth_token_secret"
],
"notes": "OAuth 1.0a token info endpoint"
},
{
"api_type": "rest",
"endpoint": "GET /oauth/test_request",
"auth": "oauth",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "OAuth 1.0a test endpoint to verify token works"
},
{
"api_type": "form",
"endpoint": "GET /oauth/revoke",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth/access_token",
"from_field": "oauth_token"
}
},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /oauth/revoke",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth/access_token",
"from_field": "oauth_token"
}
},
"response_key_fields": [],
"notes": "Invalidates OAuth 1.0 access token; redirects to oauth_clients list"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/oauth_clients",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/details",
"from_field": "/osm/user/@display_name"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of OAuth 1.0 client applications"
]
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/oauth_clients",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/details",
"from_field": "/osm/user/@display_name"
}
},
"query_params": {},
"body_params": {
"client_application[name]": {
"type": "string",
"source": "TASK_SPEC"
},
"client_application[url]": {
"type": "string",
"source": "TASK_SPEC"
},
"client_application[callback_url]": {
"type": "string",
"source": "TASK_SPEC"
},
"client_application[support_url]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/oauth_clients/{id}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/user/details",
"from_field": "/osm/user/@display_name"
},
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /user/{display_name}/oauth_clients",
"from_field": ".id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML OAuth 1.0 app detail page"
]
},
{
"api_type": "form",
"endpoint": "GET /oauth2/authorize",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"client_id": {
"type": "string",
"source": "STATIC",
"notes": "OAuth 2.0 application client_id"
},
"redirect_uri": {
"type": "string",
"source": "STATIC"
},
"response_type": {
"type": "string",
"source": "STATIC",
"notes": "code"
},
"scope": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Space-separated scopes e.g. read_prefs write_api"
},
"state": {
"type": "string",
"source": "TASK_SPEC"
},
"code_challenge": {
"type": "string",
"source": "TASK_SPEC",
"notes": "PKCE code challenge"
},
"code_challenge_method": {
"type": "string",
"source": "TASK_SPEC",
"notes": "S256|plain"
}
},
"body_params": {},
"response_key_fields": [
"HTML OAuth 2.0 authorization consent page"
],
"notes": "Doorkeeper OAuth 2.0 authorization endpoint"
},
{
"api_type": "form",
"endpoint": "POST /oauth2/authorize",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"client_id": {
"type": "string",
"source": "STATIC"
},
"redirect_uri": {
"type": "string",
"source": "STATIC"
},
"response_type": {
"type": "string",
"source": "STATIC"
},
"scope": {
"type": "string",
"source": "TASK_SPEC"
},
"state": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": [],
"notes": "User grants/denies; redirects to redirect_uri?code=...&state=..."
},
{
"api_type": "rest",
"endpoint": "POST /oauth2/token",
"auth": "none",
"format_variants": [
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"grant_type": {
"type": "string",
"source": "TASK_SPEC",
"notes": "authorization_code|refresh_token|client_credentials"
},
"code": {
"type": "string",
"source": "AUTH_FLOW",
"from_endpoint": "POST /oauth2/authorize",
"from_field": "redirect_uri code param"
},
"redirect_uri": {
"type": "string",
"source": "STATIC"
},
"client_id": {
"type": "string",
"source": "STATIC"
},
"client_secret": {
"type": "string",
"source": "STATIC"
},
"code_verifier": {
"type": "string",
"source": "TASK_SPEC",
"notes": "PKCE verifier"
}
},
"response_key_fields": [
".access_token",
".token_type",
".expires_in",
".refresh_token",
".scope"
],
"notes": "Doorkeeper OAuth 2.0 token endpoint"
},
{
"api_type": "rest",
"endpoint": "POST /oauth2/revoke",
"auth": "none",
"format_variants": [
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "POST /oauth2/token",
"from_field": ".access_token"
},
"client_id": {
"type": "string",
"source": "STATIC"
},
"client_secret": {
"type": "string",
"source": "STATIC"
}
},
"response_key_fields": [],
"notes": "Doorkeeper token revocation; returns 200 OK"
},
{
"api_type": "rest",
"endpoint": "POST /oauth2/introspect",
"auth": "none",
"format_variants": [
".json"
],
"path_params": {},
"query_params": {},
"body_params": {
"token": {
"type": "string",
"source": "PREV_CALL",
"from_endpoint": "POST /oauth2/token",
"from_field": ".access_token"
}
},
"response_key_fields": [
".active",
".scope",
".client_id",
".username",
".exp"
],
"notes": "Doorkeeper token introspection (RFC 7662)"
},
{
"api_type": "form",
"endpoint": "GET /oauth2/applications",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of user's OAuth 2.0 applications"
]
},
{
"api_type": "form",
"endpoint": "POST /oauth2/applications",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"oauth2_application[name]": {
"type": "string",
"source": "TASK_SPEC"
},
"oauth2_application[redirect_uri]": {
"type": "string",
"source": "TASK_SPEC"
},
"oauth2_application[confidential]": {
"type": "boolean",
"source": "TASK_SPEC"
},
"oauth2_application[scopes][]": {
"type": "string[]",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /oauth2/applications/{id}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth2/applications",
"from_field": ".id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML OAuth 2.0 app detail"
]
},
{
"api_type": "form",
"endpoint": "GET /oauth2/authorized_applications",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of apps authorized by this user"
]
},
{
"api_type": "form",
"endpoint": "DELETE /oauth2/authorized_applications/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /oauth2/authorized_applications",
"from_field": ".id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Revokes all tokens for this application"
},
{
"api_type": "form",
"endpoint": "GET /traces",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"tag": {
"type": "string",
"source": "TASK_SPEC"
},
"page": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"body_params": {},
"response_key_fields": [
"HTML list of public GPX traces"
]
},
{
"api_type": "form",
"endpoint": "GET /traces/new",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML trace upload form"
]
},
{
"api_type": "form",
"endpoint": "POST /traces",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"trace[gpx_file]": {
"type": "multipart file",
"source": "TASK_SPEC",
"notes": "GPX file to upload"
},
"trace[description]": {
"type": "string",
"source": "TASK_SPEC"
},
"trace[tagstring]": {
"type": "string",
"source": "TASK_SPEC"
},
"trace[visibility]": {
"type": "string",
"source": "TASK_SPEC",
"notes": "private|public|trackable|identifiable"
}
},
"response_key_fields": [],
"notes": "Creates trace; dispatches TraceImporterJob"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/traces/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML trace detail page"
]
},
{
"api_type": "form",
"endpoint": "GET /traces/{id}/edit",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML trace edit form"
]
},
{
"api_type": "form",
"endpoint": "PUT /traces/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {
"trace[description]": {
"type": "string",
"source": "TASK_SPEC"
},
"trace[tagstring]": {
"type": "string",
"source": "TASK_SPEC"
},
"trace[visibility]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "DELETE /traces/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /trace/{id}/data",
"auth": "none",
"format_variants": [
".gpx",
".xml"
],
"path_params": {
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"binary GPX download"
],
"notes": "Public or owner-only file download"
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/traces/{id}/picture",
"auth": "none",
"format_variants": [
".gif"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"GIF image or redirect to blob storage"
]
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/traces/{id}/icon",
"auth": "none",
"format_variants": [
".gif"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "PREV_CALL",
"from_endpoint": "GET /api/0.6/gpx/{id}",
"from_field": "/osm/gpx_file/@id"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"GIF icon or redirect to blob storage"
]
},
{
"api_type": "form",
"endpoint": "GET /traces/rss",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"RSS feed of public traces"
]
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/traces/rss",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"RSS feed of user's public traces"
]
},
{
"api_type": "form",
"endpoint": "GET /diary",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"language": {
"type": "string",
"source": "TASK_SPEC"
},
"page": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"body_params": {},
"response_key_fields": [
"HTML list of diary entries"
]
},
{
"api_type": "form",
"endpoint": "GET /diary/new",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML new diary entry form"
]
},
{
"api_type": "form",
"endpoint": "POST /diary",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"diary_entry[title]": {
"type": "string",
"source": "TASK_SPEC"
},
"diary_entry[body]": {
"type": "string",
"source": "TASK_SPEC"
},
"diary_entry[language_code]": {
"type": "string",
"source": "TASK_SPEC"
},
"diary_entry[latitude]": {
"type": "float",
"source": "TASK_SPEC"
},
"diary_entry[longitude]": {
"type": "float",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/diary",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML user diary entries"
]
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/diary/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML diary entry detail"
]
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/diary/{id}/newcomment",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"diary_comment[body]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/diary/{id}/subscribe",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/diary/{id}/unsubscribe",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/diary/rss",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"RSS feed of user diary entries"
]
},
{
"api_type": "form",
"endpoint": "GET /diary/rss",
"auth": "none",
"format_variants": [
".rss"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"RSS feed of all diary entries"
]
},
{
"api_type": "form",
"endpoint": "GET /messages/inbox",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML inbox"
]
},
{
"api_type": "form",
"endpoint": "GET /messages/outbox",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML outbox"
]
},
{
"api_type": "form",
"endpoint": "GET /message/new/{display_name}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML compose message form"
]
},
{
"api_type": "form",
"endpoint": "POST /messages",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"message[title]": {
"type": "string",
"source": "TASK_SPEC"
},
"message[body]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /messages/{id}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML message detail; marks as read"
]
},
{
"api_type": "form",
"endpoint": "DELETE /messages/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /messages/{message_id}/mark",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"message_id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"mark": {
"type": "string",
"source": "TASK_SPEC",
"notes": "read|unread"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /messages/{message_id}/reply",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"message_id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML reply form"
]
},
{
"api_type": "form",
"endpoint": "POST /messages/{message_id}/reply",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"message_id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"message[title]": {
"type": "string",
"source": "TASK_SPEC"
},
"message[body]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user/{display_name}/make_friend",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML confirmation page"
]
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/make_friend",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Creates Friendship; sends notification email"
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/remove_friend",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user_blocks",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of all user blocks"
]
},
{
"api_type": "form",
"endpoint": "GET /blocks/new/{display_name}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML new block form"
]
},
{
"api_type": "form",
"endpoint": "POST /user_blocks",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"user_block_period": {
"type": "integer",
"source": "TASK_SPEC",
"notes": "Hours to block"
},
"user_block[reason]": {
"type": "string",
"source": "TASK_SPEC"
},
"user_block[needs_view]": {
"type": "boolean",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /user_blocks/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML block detail"
]
},
{
"api_type": "form",
"endpoint": "GET /blocks/{id}/revoke",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML revoke confirmation"
]
},
{
"api_type": "form",
"endpoint": "POST /blocks/{id}/revoke",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"confirm": {
"type": "boolean",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/role/{role}/grant",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"role": {
"type": "string",
"source": "TASK_SPEC",
"notes": "administrator|moderator"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Administrator-only"
},
{
"api_type": "form",
"endpoint": "POST /user/{display_name}/role/{role}/revoke",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"display_name": {
"type": "string",
"source": "TASK_SPEC"
},
"role": {
"type": "string",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /issues",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"search_by_user": {
"type": "string",
"source": "TASK_SPEC"
},
"status": {
"type": "string",
"source": "TASK_SPEC",
"notes": "open|ignored|resolved"
},
"issue_type": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Note|DiaryEntry|DiaryComment|User"
},
"last_updated_by": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"body_params": {},
"response_key_fields": [
"HTML issues list; moderator/admin only"
]
},
{
"api_type": "form",
"endpoint": "GET /issues/{id}",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML issue detail"
]
},
{
"api_type": "form",
"endpoint": "POST /issues/{id}/resolve",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /issues/{id}/ignore",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /issues/{id}/reopen",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "POST /issues/{issue_id}/comments",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"issue_id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"issue_comment[body]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /reports/new",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {
"reportable_id": {
"type": "integer",
"source": "TASK_SPEC"
},
"reportable_type": {
"type": "string",
"source": "TASK_SPEC",
"notes": "Note|DiaryEntry|DiaryComment|User"
}
},
"body_params": {},
"response_key_fields": [
"HTML report form"
]
},
{
"api_type": "form",
"endpoint": "POST /reports",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"report[details]": {
"type": "string",
"source": "TASK_SPEC"
},
"report[category]": {
"type": "string",
"source": "TASK_SPEC"
},
"report[issue][reportable_id]": {
"type": "integer",
"source": "TASK_SPEC"
},
"report[issue][reportable_type]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /redactions",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML list of redactions"
]
},
{
"api_type": "form",
"endpoint": "GET /redactions/new",
"auth": "session_cookie",
"format_variants": [
".html"
],
"path_params": {},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML new redaction form"
]
},
{
"api_type": "form",
"endpoint": "POST /redactions",
"auth": "session_cookie",
"format_variants": [],
"path_params": {},
"query_params": {},
"body_params": {
"redaction[title]": {
"type": "string",
"source": "TASK_SPEC"
},
"redaction[description]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "GET /redactions/{id}",
"auth": "none",
"format_variants": [
".html"
],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [
"HTML redaction detail"
]
},
{
"api_type": "form",
"endpoint": "PUT /redactions/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {
"redaction[title]": {
"type": "string",
"source": "TASK_SPEC"
},
"redaction[description]": {
"type": "string",
"source": "TASK_SPEC"
}
},
"response_key_fields": []
},
{
"api_type": "form",
"endpoint": "DELETE /redactions/{id}",
"auth": "session_cookie",
"format_variants": [],
"path_params": {
"id": {
"type": "integer",
"source": "TASK_SPEC"
}
},
"query_params": {},
"body_params": {},
"response_key_fields": [],
"notes": "Only allowed if no elements are associated with this redaction"
}
]