-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathen-EU.toml
More file actions
138 lines (128 loc) · 9.49 KB
/
Copy pathen-EU.toml
File metadata and controls
138 lines (128 loc) · 9.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
locale_id = "en-EU"
[nav]
help = "Help"
docs = "Docs"
terms = "Terms"
privacy = "Privacy"
repository = "Repository"
rust_crate = "Rust Crate"
[language]
selector_label = "Language"
[hero]
eyebrow = "hashavatar.app"
title = "Generate A Public Avatar In Seconds"
description = "Turn any opaque user id, stable username, or one-way hash into a deterministic avatar URL. Choose the style, background, and size, then copy the WebP URL, download the result, or create a signed object-storage link."
privacy_tip = "Privacy-conscious integration tip: email-shaped identifiers are accepted for convenience, but a stable internal id or one-way hash is better when you want less personal data in URL logs."
[form]
identity = "Identity"
namespace_tenant = "Namespace Tenant"
style_version = "Style Version"
avatar_type = "Avatar Type"
background = "Background"
accessory = "Accessory"
accent_color = "Accent Color"
expression = "Expression"
shape = "Shape"
size = "Size"
copy_url = "Copy URL"
copy_signed_link = "Copy Signed Link"
download = "Download"
open_raw = "Open Raw"
copied = "Copied"
copy_failed = "Copy failed"
direct_url = "Direct URL"
signed_storage_link = "Signed Storage Link"
machine_readable_api = "Machine-Readable API"
signed_unavailable = "Enable S3 configuration on the server to use signed links."
signed_unavailable_runtime = "Signed storage links are unavailable until S3 is configured on the server."
[preview]
api = "API"
storage = "Storage"
storage_text = "optional S3 persistence with presigned links via"
cache = "Cache"
cache_text = "Cloudflare-friendly long cache headers"
tip = "Tip"
tip_text = "Every URL is deterministic, so you can embed it directly in your app."
presets = "Preset Examples"
preset_suffix = "preset"
[footer]
copy = "hashavatar.app is a deterministic avatar API and demo service built on the open-source hashavatar Rust crate."
[pages.help]
title = "Help"
description = "Integration guide for using the hashavatar.app avatar API in web apps, frontends, and backends."
eyebrow = "Integration Guide"
lead = "Use hashavatar.app directly from the browser, your frontend, or your backend. Every avatar URL is deterministic, so the same identifier and options always produce the same result."
basic_url = "Basic URL"
basic_url_text = "Use the query endpoint when you want a simple public image URL."
path_style = "Path Style URL"
path_style_text = "Use the path form if you prefer cleaner embed URLs."
html_example = "HTML Example"
javascript_example = "JavaScript Example"
supported_parameters = "Supported Parameters"
style_layer_note = "Accessory and expression layers apply to character-style families. Object-style families such as planet, rocket, paws, mushroom, cactus, cupcake, pizza, icecream, diamond, coffee-cup, and shield are normalized to accessory=none and expression=default."
signed_storage_links = "Signed Storage Links"
signed_storage_links_text = "If this deployment has object storage configured, request a presigned storage link from /v1/avatar/link. That endpoint stores the generated object and returns JSON with the signed URL, object key, and a hashed cache key. Standard avatar responses do not expose signed-link metadata in response headers."
open_source = "Open Source"
open_source_text = "The public site source lives in the API repository and the reusable avatar renderer is published on crates.io."
[pages.docs]
title = "Docs"
description = "Reference documentation for the hashavatar.app public avatar API, storage link endpoint, and namespace-aware identity contract."
eyebrow = "API Reference"
lead = "This is the product-facing reference for the public API. The same identity, tenant, style version, avatar family, style options, size, and WebP output are intended to remain stable within a major release."
core_endpoints = "Core Endpoints"
operational_endpoints = "Operational Endpoints"
operational_text = "GET /healthz is public for load balancers and uptime checks. GET /metrics is loopback-only and returns 404 to non-local peers."
namespace_support = "Namespace Support"
namespace_text = "Use tenant and style_version to keep visual identity spaces separate between products or rollout phases."
anonymous_ids = "Anonymous IDs"
anonymous_text = "Send an internal stable id or a one-way application hash instead of raw personal data."
rate_limits = "Rate Limits"
rate_limits_text = "The public service applies origin-side rate limits, with stricter limits on /v1/avatar/link, direct avatar requests with persist=true, and /og.png because object storage writes and Open Graph image rendering are more expensive than direct rendering."
timeouts = "Timeouts"
timeouts_text = "Avatar generation and storage operations are bounded by server-side timeouts so expensive requests cannot monopolize the origin indefinitely."
errors = "Errors"
error_bad_request = "invalid kind, unsupported algorithm or format, size, or missing identity"
error_timeout = "generation or storage timeout"
error_rate_limit = "rate limit exceeded"
error_internal = "rendering or storage failure"
openapi = "OpenAPI"
openapi_text = "For generated clients or tooling, use"
[pages.terms]
title = "Terms"
description = "Best-effort service terms for the public hashavatar.app avatar API and demo website."
eyebrow = "Service Terms"
lead = "This public service is provided on an informational and best-effort basis. Use it only if that risk profile works for your application."
no_warranty = "No Warranty"
no_warranty_text = "This service and all generated outputs are provided as-is and as-available, without warranties of any kind, whether express or implied. We do not promise availability, correctness, fitness for a particular purpose, uninterrupted operation, or compatibility with your systems."
no_liability = "No Liability"
no_liability_text = "We are not responsible for downtime, outages, degraded performance, broken links, cache behavior, lost data, corrupted objects, third-party provider failures, or any direct or indirect damages arising from your use of the service."
fallback_text = "If you depend on these avatars in production, you should implement your own fallback behavior, caching strategy, and availability plan."
acceptable_use = "Acceptable Use"
acceptable_use_text = "Do not use the service to overload the infrastructure, bypass rate limits or cache controls, test abusive traffic patterns, or store illegal material through any persistence feature."
changes = "Changes"
changes_text = "We may change, limit, suspend, or discontinue the public service at any time and without notice. Public endpoints, output details, or operational limits may change as the service evolves."
legal_note = "This page is operational guidance, not legal advice. If you need formal legal terms for a business deployment, you should publish a reviewed version specific to your jurisdiction and operator entity."
[pages.privacy]
title = "Privacy"
description = "Privacy notice for hashavatar.app covering request data, logs, and optional object storage behavior."
eyebrow = "Privacy Notice"
lead = "The service is intentionally simple, but a public avatar API still receives some request data in order to function. This page describes that practical baseline."
receives = "What The Service Receives"
receives_identity = "the opaque identifier you put in the request, such as an internal id, username, or one-way hash"
receives_parameters = "request parameters such as avatar type, style options, size, format, and background"
receives_http_metadata = "standard HTTP metadata handled by the server, reverse proxy, and CDN, such as IP address, user agent, referrer, and request timing"
stores = "What The App Itself Stores"
stores_text = "The application does not require user accounts and does not set application cookies by default. In the basic request flow it generates the avatar on demand and returns it directly."
storage_text = "If object storage support is enabled and a signed-link or persistence route is used, the generated avatar file and its object key may be stored in the configured S3-compatible bucket."
telemetry = "Privacy-Preserving Telemetry"
telemetry_text = "If telemetry is enabled by the operator, the app emits aggregate OpenTelemetry metrics for page views, visible page time, repository and crate clicks, demo actions, and avatar generation counts grouped by bounded style choices such as kind, background, accessory, color, expression, shape, and size bucket."
telemetry_limits = "Telemetry does not include raw identifiers, tenant or style namespace values, IP addresses, user agents, referrers, full URLs, cookies, or free-form text. The telemetry endpoints accept only allow-listed aggregate labels."
logging = "Logging And Infrastructure"
logging_text = "Depending on deployment, infrastructure components such as nginx, Caddy, Cloudflare, hosting providers, or S3-compatible storage may keep access logs and operational metadata. Those logs are part of running a public service and may contain the identifier you requested if it appears in the URL."
avoid = "What To Avoid Sending"
avoid_text = "Email-shaped identifiers are accepted for compatibility, but URLs can appear in infrastructure logs. Send an internal stable id or a one-way application hash when you want to avoid putting personal data in the request URL."
repository = "Repository And Crate"
repository_text = "You can inspect the implementation in the public API repository and the reusable avatar renderer in the Rust crate."
translations = "Translation Notice"
translations_text = "Website translations are AI-assisted and best effort. If you see wording that should be improved, contributions are welcome on GitHub."
translations_link = "Improve translations"