Atasu Maps

Me

The signed-in user — profile, devices, my submissions, appeals, deletion, rewards.

← All operations

GET/v1/meAvailable

Current user

Host
https://api.atasumaps.com · getMe
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered

Only what the map side stores — map reputation, trust level, locale. No phone, real name, wallet data or Atasuai sub. Staff consoles read the caller's role here: trust_level moderator / admin (the token carries no roles claim; two-factor sign-in is still proven by the token's amr / acr). A banned user gets 403. Like every /v1 user route it needs an API key (any scope) as well as the user token; staff consoles use a web key of their own.

Responses

StatusDescriptionType
200ProfileMe
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
403Authenticated but not allowed (scope_denied, key_restriction_failed, forbidden, user_banned, mfa_required, self_moderation_forbidden, feature_disabled)Problem
429Rate limit (rate_limited) or monthly plan quota (quota_exceeded: reject plans only; Retry-After = seconds until the next Asia/Almaty month; context = product, included, used, period_end)Problem
PATCH/v1/mePlanned

Update display name or locale

Host
https://api.atasumaps.com · updateMe
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

Parameters

NameInTypeRequiredDescription
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Request body MeUpdate

NameTypeRequiredDescription
display_namestring | null
localeLang
expected_versioninteger

Responses

StatusDescriptionType
200Updated profileMe
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
POST/v1/me/devicesPlanned

Register this device

Host
https://api.atasumaps.com · registerDevice
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

Returns the device_id sent with event reports. Attestation (Play Integrity / App Attest) is optional in the MVP and only raises weight later. Push tokens are not accepted until push providers outside Kazakhstan are legally approved.

Parameters

NameInTypeRequiredDescription
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Request body DeviceRegister

NameTypeRequiredDescription
platform"android" | "ios" | "web"yes
app_versionstring
attestation_tokenstringPlay Integrity / App Attest token; verified server-side, not stored

Responses

StatusDescriptionType
201Device registered (or the same device returned on replay)Device
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
GET/v1/me/submissionsAvailable

My submissions and reports with their status

Host
https://api.atasumaps.com · listMySubmissions
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered

Parameters

NameInTypeRequiredDescription
kindqueryReportKind[]
statusquerySubmissionDisplayStatus[]
langqueryLangResponse language; overrides Accept-Language. Default kk (Cyrillic).
cursorquerystringOpaque cursor from the previous page's next_cursor.
limitqueryinteger

Responses

StatusDescriptionType
200Page of submissions, newest firstMySubmissionPage
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
429Rate limit (rate_limited) or monthly plan quota (quota_exceeded: reject plans only; Retry-After = seconds until the next Asia/Almaty month; context = product, included, used, period_end)Problem
GET/v1/me/submissions/{report_id}Available

One of my submissions, with status history

Host
https://api.atasumaps.com · getMySubmission
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered

Parameters

NameInTypeRequiredDescription
report_idpathstring (uuid)yes
langqueryLangResponse language; overrides Accept-Language. Default kk (Cyrillic).

Responses

StatusDescriptionType
200SubmissionMySubmissionDetail
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
404No such resource, or not visible to the caller (not_found)Problem
429Rate limit (rate_limited) or monthly plan quota (quota_exceeded: reject plans only; Retry-After = seconds until the next Asia/Almaty month; context = product, included, used, period_end)Problem
POST/v1/me/submissions/{report_id}/withdrawPlanned

Withdraw a pending submission

Host
https://api.atasumaps.com · withdrawMySubmission
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

Parameters

NameInTypeRequiredDescription
report_idpathstring (uuid)yes
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Request body ExpectedVersionOnly

NameTypeRequiredDescription
expected_versionintegeryes

Responses

StatusDescriptionType
200WithdrawnCommandResult
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
403Authenticated but not allowed (scope_denied, key_restriction_failed, forbidden, user_banned, mfa_required, self_moderation_forbidden, feature_disabled)Problem
404No such resource, or not visible to the caller (not_found)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
POST/v1/me/submissions/{report_id}/appealAvailable

Appeal a rejected submission (once)

Host
https://api.atasumaps.com · appealMySubmission
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

rejected → pending_review, at most once per submission (409 appeal_already_used). Re-approval of a new place re-enables the original place; an edit is first rebased by a moderator. Someone else's submission → 404. Through this endpoint a moderator is an ordinary reporter (moderator re-opening only via the admin API).

Parameters

NameInTypeRequiredDescription
report_idpathstring (uuid)yes
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Request body AppealCreate

NameTypeRequiredDescription
reasonstringyes
expected_versionintegeryes

Responses

StatusDescriptionType
200Back in the review queueCommandResult
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
403Authenticated but not allowed (scope_denied, key_restriction_failed, forbidden, user_banned, mfa_required, self_moderation_forbidden, feature_disabled)Problem
404No such resource, or not visible to the caller (not_found)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
429Rate limit (rate_limited) or monthly plan quota (quota_exceeded: reject plans only; Retry-After = seconds until the next Asia/Almaty month; context = product, included, used, period_end)Problem
POST/v1/me/submissions/{report_id}/mediaPlanned

Attach a photo to my submission

Host
https://api.atasumaps.com · uploadSubmissionPhoto
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

Stored in object storage inside Kazakhstan. Size and type limited, content scanned, EXIF and location stripped before any publication; the original is kept separately and only moderators can see it, with every view logged. Max 10 MB, JPEG / PNG / HEIC, 5 photos per submission.

Parameters

NameInTypeRequiredDescription
report_idpathstring (uuid)yes
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Responses

StatusDescriptionType
201StoredMediaRef
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
403Authenticated but not allowed (scope_denied, key_restriction_failed, forbidden, user_banned, mfa_required, self_moderation_forbidden, feature_disabled)Problem
404No such resource, or not visible to the caller (not_found)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
413payload_too_largeProblem
415unsupported_media_typeProblem
GET/v1/me/deletion-requestPlanned

Status of my deletion request

Host
https://api.atasumaps.com · getDeletionRequest
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered

Responses

StatusDescriptionType
200RequestDeletionRequest
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
404No such resource, or not visible to the caller (not_found)Problem
POST/v1/me/deletion-requestPlanned

Request deletion of my data

Host
https://api.atasumaps.com · requestDeletion
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered
Idempotency-Key
Required: one key per command; a retry returns the first result

Covers the primary database, search index, photos and caches; backups expire by policy. Approved public contributions are kept but detached from the account (draft — see open questions). Replays return the existing request.

Parameters

NameInTypeRequiredDescription
Idempotency-KeyheaderstringyesClient-generated unique key per logical command (UUID v4/v7 recommended). Scope: caller + endpoint + key. Same key + same body → first result (Idempotent-Replayed: true); same key + different body → 409 idempotency_key_reused. Missing → 400 idempotency_key_required. Keys are kept at least 24 hours.

Request body DeletionRequestCreate

NameTypeRequiredDescription
confirmtrueyes
reasonstring

Responses

StatusDescriptionType
202Request recordedDeletionRequest
400Invalid request (invalid_request, idempotency_key_required, limit_exceeded, future_departure_not_supported, observation_in_future)Problem
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
409Conflict — never a silent overwrite. Codes: idempotency_key_reused (same key, different body), version_conflict (stale expected_version; body has current_version), invalid_state (transition not allowed from the current status), appeal_already_used, base_version_stale (place changed since the edit's baseline; rebase first), later_edits_exist (revert needs compensation), already_claimed, last_owner, already_member, deletion_pending. A retry with the original Idempotency-Key still returns the original result, never a 409.Problem
GET/v1/me/rewardsPlanned

My jarmaq grant history (Beta; off until its tests pass)

Host
https://api.atasumaps.com · listMyRewards
Access
Any API key + signed-in user (Atasuai)
Metering
Not metered

The Atasuai wallet is the ledger of record; this lists the map side's grant records only. Returns 403 feature_disabled until rewards are switched on.

Parameters

NameInTypeRequiredDescription
cursorquerystringOpaque cursor from the previous page's next_cursor.
limitqueryinteger

Responses

StatusDescriptionType
200Grants, newest firstRewardGrantPage
401Missing or invalid credentials (unauthenticated, key_invalid, key_revoked, token_expired, token_invalid)Problem
403Authenticated but not allowed (scope_denied, key_restriction_failed, forbidden, user_banned, mfa_required, self_moderation_forbidden, feature_disabled)Problem