{% extends "base.html" %} {% block title %}{{ 'api_docs.title'|t(user.language) }} - {{ 'brand'|t(user.language) }}{% endblock %} {% block content %}

{{ 'api_docs.title'|t(user.language) }}

{{ 'api_docs.intro'|t(user.language) }}

{{ 'api_docs.go_settings'|t(user.language) }}

{{ 'api_docs.base_url'|t(user.language) }}

{{ request.base_url }}api/v1

{{ 'api_docs.auth'|t(user.language) }}

{{ 'api_docs.auth_desc'|t(user.language) }}

X-API-Key: mv_your_api_key_here

{{ 'api_docs.permissions'|t(user.language) }}

{{ 'api_docs.permissions_desc'|t(user.language) }}

{{ 'api_docs.scope'|t(user.language) }}{{ 'api_docs.scope_desc'|t(user.language) }}{{ 'api_docs.scope_endpoints'|t(user.language) }}
profiles:read{{ 'apikey.perm.profiles_read'|t(user.language) }}GET /profiles, GET /profiles/{id}
profiles:write{{ 'apikey.perm.profiles_write'|t(user.language) }}POST /profiles, PUT /profiles/{id}, DELETE /profiles/{id}
postcards:read{{ 'apikey.perm.postcards_read'|t(user.language) }}GET /profiles/{id}/postcards, GET /profiles/{id}/postcards/{id}
postcards:write{{ 'apikey.perm.postcards_write'|t(user.language) }}POST /profiles/{id}/postcards, PUT /profiles/{id}/postcards/{id}, DELETE /profiles/{id}/postcards/{id}
images:upload{{ 'apikey.perm.images_upload'|t(user.language) }}POST /profiles/{id}/postcards/{id}/upload
{{ 'api_docs.permissions_keys_note'|t(user.language) }}

{{ 'api_docs.permissions_note'|t(user.language) }}

{{ 'api_docs.profile_ops'|t(user.language) }}

GET /profiles
{{ 'api_docs.ep.list_profiles'|t(user.language) }}
[ {"id": 1, "nickname": "Japan", "showcase_enabled": false, "showcase_visible": "both", "notes": "", "created_at": "2025-01-01T00:00:00"}, ... ]
POST /profiles
{{ 'api_docs.ep.create_profile'|t(user.language) }}
{{ 'api_docs.body'|t(user.language) }}
nicknamestring {{ 'misc.required'|t(user.language) }}
{"id": 2, "nickname": "Europe", ...}
GET /profiles/{id}
{{ 'api_docs.ep.get_profile'|t(user.language) }}
PUT /profiles/{id}
{{ 'api_docs.ep.update_profile'|t(user.language) }}
{{ 'api_docs.body'|t(user.language) }}
nickname{{ 'api_docs.ep.optional_str'|t(user.language) }}
DELETE /profiles/{id}
{{ 'api_docs.ep.delete_profile'|t(user.language) }}
{"ok": true}

{{ 'api_docs.postcard_ops'|t(user.language) }}

GET /profiles/{profile_id}/postcards
{{ 'api_docs.ep.list_postcards'|t(user.language) }}
{{ 'api_docs.params'|t(user.language) }}
statusstring({{ 'api_docs.ep.optional_str'|t(user.language) }})— {{ 'api_docs.ep.filter_hint'|t(user.language) }}
POST /profiles/{profile_id}/postcards
{{ 'api_docs.ep.create_postcard'|t(user.language) }}
{{ 'api_docs.body'|t(user.language) }}
card_numberstring * {{ 'misc.required'|t(user.language) }}
statusstring * {{ 'misc.required'|t(user.language) }} — sent / delivered / received
recipient_name{{ 'api_docs.ep.optional_str'|t(user.language) }}
country{{ 'api_docs.ep.optional_str'|t(user.language) }} — {{ 'api_docs.ep.country_hint'|t(user.language) }}
send_time{{ 'api_docs.ep.optional_str'|t(user.language) }} — {{ 'api_docs.ep.date_hint'|t(user.language) }}
arrival_time{{ 'api_docs.ep.optional_str'|t(user.language) }}
sender_name{{ 'api_docs.ep.optional_str'|t(user.language) }}
receive_time{{ 'api_docs.ep.optional_str'|t(user.language) }}
notes{{ 'api_docs.ep.optional_str'|t(user.language) }}
GET /profiles/{profile_id}/postcards/{id}
{{ 'api_docs.ep.get_postcard'|t(user.language) }}
PUT /profiles/{profile_id}/postcards/{id}
{{ 'api_docs.ep.update_postcard'|t(user.language) }}
{{ 'api_docs.body'|t(user.language) }}
card_number{{ 'api_docs.ep.optional_str'|t(user.language) }}
status{{ 'api_docs.ep.optional_str'|t(user.language) }}
recipient_name{{ 'api_docs.ep.optional_str'|t(user.language) }}
country{{ 'api_docs.ep.optional_str'|t(user.language) }}
send_time{{ 'api_docs.ep.optional_str'|t(user.language) }}
arrival_time{{ 'api_docs.ep.optional_str'|t(user.language) }}
sender_name{{ 'api_docs.ep.optional_str'|t(user.language) }}
receive_time{{ 'api_docs.ep.optional_str'|t(user.language) }}
notes{{ 'api_docs.ep.optional_str'|t(user.language) }}
DELETE /profiles/{profile_id}/postcards/{id}
{{ 'api_docs.ep.delete_postcard'|t(user.language) }}
{"ok": true}

{{ 'api_docs.upload_op'|t(user.language) }}

POST /profiles/{profile_id}/postcards/{id}/upload
{{ 'api_docs.ep.upload_uses'|t(user.language) }} multipart/form-data
Form Field
fileFile * {{ 'misc.required'|t(user.language) }} — {{ 'api_docs.ep.image_file'|t(user.language) }}
side{{ 'api_docs.ep.side_hint'|t(user.language) }}

{{ 'api_docs.key_ops'|t(user.language) }}

GET /keys
{{ 'api_docs.ep.list_keys'|t(user.language) }}
POST /keys
{{ 'api_docs.ep.create_key'|t(user.language) }}
{{ 'api_docs.body'|t(user.language) }}
name{{ 'api_docs.ep.key_name_hint'|t(user.language) }}
DELETE /keys/{id}
{{ 'api_docs.ep.delete_key'|t(user.language) }}
{"ok": true}

{{ 'api_docs.showcase_ops'|t(user.language) }}

GET /showcase/{username}
{{ 'api_docs.no_auth'|t(user.language) }} — {{ 'api_docs.ep.showcase_user'|t(user.language) }}
GET /showcase/{username}/profile/{id}
{{ 'api_docs.no_auth'|t(user.language) }} — {{ 'api_docs.ep.showcase_profile'|t(user.language) }}

{{ 'api_docs.try_it'|t(user.language) }}

{% endblock %}