mirror of
https://github.com/appwrite/appwrite
synced 2026-05-24 01:18:37 +00:00
Merge branch '1.8.x' into dat-571
This commit is contained in:
commit
16c3f2c55a
267 changed files with 1625 additions and 908 deletions
1
.env
1
.env
|
|
@ -22,6 +22,7 @@ _APP_OPTIONS_FORCE_HTTPS=disabled
|
||||||
_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled
|
_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled
|
||||||
_APP_OPENSSL_KEY_V1=your-secret-key
|
_APP_OPENSSL_KEY_V1=your-secret-key
|
||||||
_APP_DOMAIN=traefik
|
_APP_DOMAIN=traefik
|
||||||
|
_APP_CONSOLE_DOMAIN=localhost
|
||||||
_APP_DOMAIN_FUNCTIONS=functions.localhost
|
_APP_DOMAIN_FUNCTIONS=functions.localhost
|
||||||
_APP_DOMAIN_SITES=sites.localhost
|
_APP_DOMAIN_SITES=sites.localhost
|
||||||
_APP_DOMAIN_TARGET_CNAME=test.localhost
|
_APP_DOMAIN_TARGET_CNAME=test.localhost
|
||||||
|
|
|
||||||
5
.github/workflows/benchmark.yml
vendored
5
.github/workflows/benchmark.yml
vendored
|
|
@ -64,8 +64,9 @@ jobs:
|
||||||
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
|
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install oha
|
sudo apt install oha
|
||||||
|
oha --version
|
||||||
- name: Benchmark PR
|
- name: Benchmark PR
|
||||||
run: 'oha -z 180s http://localhost/v1/health/version --output-format json --output benchmark.json'
|
run: 'oha -z 180s http://localhost/v1/health/version --output-format json > benchmark.json'
|
||||||
- name: Cleaning
|
- name: Cleaning
|
||||||
run: docker compose down -v
|
run: docker compose down -v
|
||||||
- name: Installing latest version
|
- name: Installing latest version
|
||||||
|
|
@ -78,7 +79,7 @@ jobs:
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
sleep 10
|
sleep 10
|
||||||
- name: Benchmark Latest
|
- name: Benchmark Latest
|
||||||
run: 'oha -z 180s http://localhost/v1/health/version --output-format json --output benchmark-latest.json'
|
run: oha -z 180s http://localhost/v1/health/version --output-format json > benchmark-latest.json
|
||||||
- name: Prepare comment
|
- name: Prepare comment
|
||||||
run: |
|
run: |
|
||||||
echo '## :sparkles: Benchmark results' > benchmark.txt
|
echo '## :sparkles: Benchmark results' > benchmark.txt
|
||||||
|
|
|
||||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
|
|
@ -285,8 +285,6 @@ jobs:
|
||||||
name: E2E Service Test (Dev Keys)
|
name: E2E Service Test (Dev Keys)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: setup
|
needs: setup
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
|
||||||
10
app/cli.php
10
app/cli.php
|
|
@ -188,16 +188,18 @@ CLI::setResource('getLogsDB', function (Group $pools, Cache $cache) {
|
||||||
return $database;
|
return $database;
|
||||||
};
|
};
|
||||||
}, ['pools', 'cache']);
|
}, ['pools', 'cache']);
|
||||||
|
CLI::setResource('publisher', function (Group $pools) {
|
||||||
|
return new BrokerPool(publisher: $pools->get('publisher'));
|
||||||
|
}, ['pools']);
|
||||||
|
CLI::setResource('publisherRedis', function () {
|
||||||
|
// Stub
|
||||||
|
});
|
||||||
CLI::setResource('queueForStatsUsage', function (Publisher $publisher) {
|
CLI::setResource('queueForStatsUsage', function (Publisher $publisher) {
|
||||||
return new StatsUsage($publisher);
|
return new StatsUsage($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
CLI::setResource('queueForStatsResources', function (Publisher $publisher) {
|
CLI::setResource('queueForStatsResources', function (Publisher $publisher) {
|
||||||
return new StatsResources($publisher);
|
return new StatsResources($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
CLI::setResource('publisher', function (Group $pools) {
|
|
||||||
return new BrokerPool(publisher: $pools->get('publisher'));
|
|
||||||
}, ['pools']);
|
|
||||||
CLI::setResource('queueForFunctions', function (Publisher $publisher) {
|
CLI::setResource('queueForFunctions', function (Publisher $publisher) {
|
||||||
return new Func($publisher);
|
return new Func($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Appwrite\Auth\Auth;
|
use Appwrite\Auth\Auth;
|
||||||
use Appwrite\Network\Validator\Origin;
|
use Appwrite\Network\Platform;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\System\System;
|
use Utopia\System\System;
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ $console = [
|
||||||
[
|
[
|
||||||
'$collection' => ID::custom('platforms'),
|
'$collection' => ID::custom('platforms'),
|
||||||
'name' => 'Localhost',
|
'name' => 'Localhost',
|
||||||
'type' => Origin::CLIENT_TYPE_WEB,
|
'type' => Platform::TYPE_WEB,
|
||||||
'hostname' => 'localhost',
|
'hostname' => 'localhost',
|
||||||
], // Current host is added on app init
|
], // Current host is added on app init
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<p>{{hello}}</p>
|
<p>{{hello}}</p>
|
||||||
<p>{{body}}</p>
|
<p>{{body}}</p>
|
||||||
<p><a href="{{redirect}}" target="_blank">{{redirect}}</a></p>
|
<p><a href="{{redirect}}" target="_blank" style="font-size: 14px; font-family: Inter, sans-serif; color: #ffffff; text-decoration: none; background-color: #2D2D31; border-radius: 8px; padding: 9px 14px; border: 1px solid #414146; display: inline-block; text-align:center; box-sizing: border-box;">{{buttonText}}</a></p>
|
||||||
<p>{{footer}}</p>
|
<p>{{footer}}</p>
|
||||||
<p style="margin-bottom: 32px">
|
<p style="margin-bottom: 32px">
|
||||||
{{thanks}}
|
{{thanks}}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Volg hierdie skakel om u e-pos adres te bevestig.",
|
"emails.verification.body": "Volg hierdie skakel om u e-pos adres te bevestig.",
|
||||||
"emails.verification.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u adres te bevestig nie.",
|
"emails.verification.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u adres te bevestig nie.",
|
||||||
"emails.verification.thanks": "Baie dankie,",
|
"emails.verification.thanks": "Baie dankie,",
|
||||||
|
"emails.verification.buttonText": "Bevestig e-posadres",
|
||||||
"emails.verification.signature": "Die {{project}} span",
|
"emails.verification.signature": "Die {{project}} span",
|
||||||
"emails.magicSession.subject": "Teken aan",
|
"emails.magicSession.subject": "Teken aan",
|
||||||
"emails.magicSession.hello": "Goeie dag,",
|
"emails.magicSession.hello": "Goeie dag,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Volg hierdie skakel om u {{project}} wagwoord te herstel.",
|
"emails.recovery.body": "Volg hierdie skakel om u {{project}} wagwoord te herstel.",
|
||||||
"emails.recovery.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u wagwoord te herstel nie.",
|
"emails.recovery.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u wagwoord te herstel nie.",
|
||||||
"emails.recovery.thanks": "Baie dankie,",
|
"emails.recovery.thanks": "Baie dankie,",
|
||||||
|
"emails.recovery.buttonText": "Stel wagwoord terug",
|
||||||
"emails.recovery.signature": "Die {{project}} span",
|
"emails.recovery.signature": "Die {{project}} span",
|
||||||
"emails.invitation.subject": "Uitnodiging om by die %s span aan te sluit by %s",
|
"emails.invitation.subject": "Uitnodiging om by die %s span aan te sluit by %s",
|
||||||
"emails.invitation.hello": "Goeie dag,",
|
"emails.invitation.hello": "Goeie dag,",
|
||||||
"emails.invitation.body": "Hierdie boodskap is aan u gestuur omdat {{owner}} u uitnooi om 'n lid van die {{team}} groep by die {{project}} projek te wees.",
|
"emails.invitation.body": "Hierdie boodskap is aan u gestuur omdat {{owner}} u uitnooi om 'n lid van die {{team}} groep by die {{project}} projek te wees.",
|
||||||
"emails.invitation.footer": "As u nie belang stel nie, kan u gerus hierdie boodskap ignoreer.",
|
"emails.invitation.footer": "As u nie belang stel nie, kan u gerus hierdie boodskap ignoreer.",
|
||||||
"emails.invitation.thanks": "Baie dankie,",
|
"emails.invitation.thanks": "Baie dankie,",
|
||||||
|
"emails.invitation.buttonText": "Aanvaar uitnodiging na {{team}}",
|
||||||
"emails.invitation.signature": "Die {{project}} span",
|
"emails.invitation.signature": "Die {{project}} span",
|
||||||
"locale.country.unknown": "Onbekend",
|
"locale.country.unknown": "Onbekend",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "تبّع هاد الوصلة باش تيقّن لادريسة تاع ليميل ديالك.",
|
"emails.verification.body": "تبّع هاد الوصلة باش تيقّن لادريسة تاع ليميل ديالك.",
|
||||||
"emails.verification.footer": "إلا ماشي نتا اللي طلبتي تيقّن هاد لادريسة تاع ليميل، ممكن تنخّل هاد البرية.",
|
"emails.verification.footer": "إلا ماشي نتا اللي طلبتي تيقّن هاد لادريسة تاع ليميل، ممكن تنخّل هاد البرية.",
|
||||||
"emails.verification.thanks": "شكرا،",
|
"emails.verification.thanks": "شكرا،",
|
||||||
|
"emails.verification.buttonText": "تأكيد عنوان البريد الإلكتروني",
|
||||||
"emails.verification.signature": "فرقة {{project}}",
|
"emails.verification.signature": "فرقة {{project}}",
|
||||||
"emails.magicSession.subject": "تكونيكطا",
|
"emails.magicSession.subject": "تكونيكطا",
|
||||||
"emails.magicSession.hello": "السلام،",
|
"emails.magicSession.hello": "السلام،",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "تبّع هاد الوصلة باش تبدّل كلمة السر تاع {{project}}.",
|
"emails.recovery.body": "تبّع هاد الوصلة باش تبدّل كلمة السر تاع {{project}}.",
|
||||||
"emails.recovery.footer": "إلا ماشي نتا اللي طلبتي تبدّل كلمة السر، ممكن تنخّل هاد البرية.",
|
"emails.recovery.footer": "إلا ماشي نتا اللي طلبتي تبدّل كلمة السر، ممكن تنخّل هاد البرية.",
|
||||||
"emails.recovery.thanks": "شكرا،",
|
"emails.recovery.thanks": "شكرا،",
|
||||||
|
"emails.recovery.buttonText": "إعادة تعيين كلمة السر",
|
||||||
"emails.recovery.signature": "فرقة {{project}}",
|
"emails.recovery.signature": "فرقة {{project}}",
|
||||||
"emails.invitation.subject": "عراضة ل فرقة %s ف %s",
|
"emails.invitation.subject": "عراضة ل فرقة %s ف %s",
|
||||||
"emails.invitation.hello": "السلام،",
|
"emails.invitation.hello": "السلام،",
|
||||||
"emails.invitation.body": "هاد البرية تصيفطات ليك حيت {{owner}} بغى يعرض عليك تولّي عضو ف فرقة {{team}} عند {{project}}.",
|
"emails.invitation.body": "هاد البرية تصيفطات ليك حيت {{owner}} بغى يعرض عليك تولّي عضو ف فرقة {{team}} عند {{project}}.",
|
||||||
"emails.invitation.footer": "إلا كنتي ما مسوّقش, ممكن تنخّل هاد البرية.",
|
"emails.invitation.footer": "إلا كنتي ما مسوّقش, ممكن تنخّل هاد البرية.",
|
||||||
"emails.invitation.thanks": "شكرا،",
|
"emails.invitation.thanks": "شكرا،",
|
||||||
|
"emails.invitation.buttonText": "اقبل الدعوة إلى {{team}}",
|
||||||
"emails.invitation.signature": "فرقة {{project}}",
|
"emails.invitation.signature": "فرقة {{project}}",
|
||||||
"emails.certificate.subject": "السرتافيكة فشلات ل %s",
|
"emails.certificate.subject": "السرتافيكة فشلات ل %s",
|
||||||
"emails.certificate.hello": "السلام،",
|
"emails.certificate.hello": "السلام،",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "برجاء اتباع الرابط التالي لتأكيد بريدك الإلكتروني",
|
"emails.verification.body": "برجاء اتباع الرابط التالي لتأكيد بريدك الإلكتروني",
|
||||||
"emails.verification.footer": "لو لم تطلب تأكيد هذا البريد الإلكتروني، يمكنك تجاهل هذه الرسالة",
|
"emails.verification.footer": "لو لم تطلب تأكيد هذا البريد الإلكتروني، يمكنك تجاهل هذه الرسالة",
|
||||||
"emails.verification.thanks": "شكرا،",
|
"emails.verification.thanks": "شكرا،",
|
||||||
|
"emails.verification.buttonText": "تأكيد عنوان البريد الإلكتروني",
|
||||||
"emails.verification.signature": "فريق {{project}}",
|
"emails.verification.signature": "فريق {{project}}",
|
||||||
"emails.magicSession.subject": "تسجيل الدخول",
|
"emails.magicSession.subject": "تسجيل الدخول",
|
||||||
"emails.magicSession.hello": "أهلا،",
|
"emails.magicSession.hello": "أهلا،",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "برجاء اتباع الراط التالي لتغيير كلمة السر الخاصة بـ{{project}}",
|
"emails.recovery.body": "برجاء اتباع الراط التالي لتغيير كلمة السر الخاصة بـ{{project}}",
|
||||||
"emails.recovery.footer": "لولم تطلب تغيير كلمة السر، يمكنك تجاهل هذه الرسالة",
|
"emails.recovery.footer": "لولم تطلب تغيير كلمة السر، يمكنك تجاهل هذه الرسالة",
|
||||||
"emails.recovery.thanks": "شكرا،",
|
"emails.recovery.thanks": "شكرا،",
|
||||||
|
"emails.recovery.buttonText": "إعادة تعيين كلمة المرور",
|
||||||
"emails.recovery.signature": "فريق {{project}}",
|
"emails.recovery.signature": "فريق {{project}}",
|
||||||
"emails.invitation.subject": "دعوة لفريق %s في %s",
|
"emails.invitation.subject": "دعوة لفريق %s في %s",
|
||||||
"emails.invitation.hello": "أهلا،",
|
"emails.invitation.hello": "أهلا،",
|
||||||
"emails.invitation.body": "هذة الرسالة تم ارسالها لك لأن {{owner}} ارسل لك دعوة لتكون عضوا بفريق {{team}} في {{project}}",
|
"emails.invitation.body": "هذة الرسالة تم ارسالها لك لأن {{owner}} ارسل لك دعوة لتكون عضوا بفريق {{team}} في {{project}}",
|
||||||
"emails.invitation.footer": "اذا كنت غير مهتم، يمكنك تجاهل هذه الرسالة",
|
"emails.invitation.footer": "اذا كنت غير مهتم، يمكنك تجاهل هذه الرسالة",
|
||||||
"emails.invitation.thanks": "شكرا،",
|
"emails.invitation.thanks": "شكرا،",
|
||||||
|
"emails.invitation.buttonText": "قبول الدعوة إلى {{team}}",
|
||||||
"emails.invitation.signature": "فريق {{project}}",
|
"emails.invitation.signature": "فريق {{project}}",
|
||||||
"locale.country.unknown": "مجهول",
|
"locale.country.unknown": "مجهول",
|
||||||
"countries.af": "أفغانستان",
|
"countries.af": "أفغانستان",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "আপোনাৰ ইমেইল ঠিকনা প্ৰমাণিত কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।",
|
"emails.verification.body": "আপোনাৰ ইমেইল ঠিকনা প্ৰমাণিত কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।",
|
||||||
"emails.verification.footer": "যদি আপুনি এই ঠিকনাটো সত্যাপিত কৰিবলৈ কোৱা নাই, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
"emails.verification.footer": "যদি আপুনি এই ঠিকনাটো সত্যাপিত কৰিবলৈ কোৱা নাই, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
||||||
"emails.verification.thanks": "ধন্যবাদ,",
|
"emails.verification.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.verification.buttonText": "ইমেইল ঠিকনা নিশ্চিত কৰক",
|
||||||
"emails.verification.signature": "{{project}} দল",
|
"emails.verification.signature": "{{project}} দল",
|
||||||
"emails.magicSession.subject": "লগইন",
|
"emails.magicSession.subject": "লগইন",
|
||||||
"emails.magicSession.hello": "নমস্কাৰ,",
|
"emails.magicSession.hello": "নমস্কাৰ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "আপোনাৰ {{project}} পাছৱৰ্ড ৰিছেট কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।.",
|
"emails.recovery.body": "আপোনাৰ {{project}} পাছৱৰ্ড ৰিছেট কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।.",
|
||||||
"emails.recovery.footer": "যদি আপুনি আপোনাৰ পাছৱৰ্ড ৰিছেট কৰিবলৈ কোৱা নাছিল, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
"emails.recovery.footer": "যদি আপুনি আপোনাৰ পাছৱৰ্ড ৰিছেট কৰিবলৈ কোৱা নাছিল, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
||||||
"emails.recovery.thanks": "ধন্যবাদ,",
|
"emails.recovery.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.recovery.buttonText": "পাছৱৰ্ড ৰিছেট কৰক",
|
||||||
"emails.recovery.signature": "{{project}} দল",
|
"emails.recovery.signature": "{{project}} দল",
|
||||||
"emails.invitation.subject": "%s বছৰত %s দললৈ নিমন্ত্ৰণ",
|
"emails.invitation.subject": "%s বছৰত %s দললৈ নিমন্ত্ৰণ",
|
||||||
"emails.invitation.hello": "নমস্কাৰ,",
|
"emails.invitation.hello": "নমস্কাৰ,",
|
||||||
"emails.invitation.body": "এই মেইলটো আপোনালৈ প্ৰেৰণ কৰা হৈছিল কাৰণ {{owner}} জনে আপোনাক {{project}} বছৰবয়সত {{team}} দলৰ সদস্য হ'বলৈ আমন্ত্ৰণ জনাব বিচাৰিছিল।",
|
"emails.invitation.body": "এই মেইলটো আপোনালৈ প্ৰেৰণ কৰা হৈছিল কাৰণ {{owner}} জনে আপোনাক {{project}} বছৰবয়সত {{team}} দলৰ সদস্য হ'বলৈ আমন্ত্ৰণ জনাব বিচাৰিছিল।",
|
||||||
"emails.invitation.footer": "যদি আপুনি আগ্ৰহী নহয়, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
"emails.invitation.footer": "যদি আপুনি আগ্ৰহী নহয়, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
||||||
"emails.invitation.thanks": "ধন্যবাদ,",
|
"emails.invitation.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.invitation.buttonText": "{{team}}-লৈ নিমন্ত্ৰণ গ্ৰহণ কৰক",
|
||||||
"emails.invitation.signature": "{{project}} দল",
|
"emails.invitation.signature": "{{project}} দল",
|
||||||
"locale.country.unknown": "অজ্ঞাত ",
|
"locale.country.unknown": "অজ্ঞাত ",
|
||||||
"countries.af": "আফগানিস্তান ",
|
"countries.af": "আফগানিস্তান ",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "E-poçt ünvanınızı təsdiq etmək üçün bu linki izləyin.",
|
"emails.verification.body": "E-poçt ünvanınızı təsdiq etmək üçün bu linki izləyin.",
|
||||||
"emails.verification.footer": "Bu ünvanı doğrulamağı xahiş etməmisinizsə, bu mesajı gözardı edə bilərsiniz.",
|
"emails.verification.footer": "Bu ünvanı doğrulamağı xahiş etməmisinizsə, bu mesajı gözardı edə bilərsiniz.",
|
||||||
"emails.verification.thanks": "Təşəkkürlər,",
|
"emails.verification.thanks": "Təşəkkürlər,",
|
||||||
|
"emails.verification.buttonText": "E-poçt ünvanını təsdiqlə",
|
||||||
"emails.verification.signature": "{{project}} komandası",
|
"emails.verification.signature": "{{project}} komandası",
|
||||||
"emails.magicSession.subject": "Daxil Olmaq",
|
"emails.magicSession.subject": "Daxil Olmaq",
|
||||||
"emails.magicSession.hello": "Salam,",
|
"emails.magicSession.hello": "Salam,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "{{project}} şifrənizi sıfırlamaq üçün bu linki izləyin.",
|
"emails.recovery.body": "{{project}} şifrənizi sıfırlamaq üçün bu linki izləyin.",
|
||||||
"emails.recovery.footer": "Şifrənizi sıfırlamağı xahiş etməmisinizsə, bu mesajı gözardı edə bilərsiniz.",
|
"emails.recovery.footer": "Şifrənizi sıfırlamağı xahiş etməmisinizsə, bu mesajı gözardı edə bilərsiniz.",
|
||||||
"emails.recovery.thanks": "Təşəkkürlər,",
|
"emails.recovery.thanks": "Təşəkkürlər,",
|
||||||
|
"emails.recovery.buttonText": "Şifrəni sıfırla",
|
||||||
"emails.recovery.signature": "{{project}} komandası",
|
"emails.recovery.signature": "{{project}} komandası",
|
||||||
"emails.invitation.subject": "%s Komandasına Dəvət %sdə",
|
"emails.invitation.subject": "%s Komandasına Dəvət %sdə",
|
||||||
"emails.invitation.hello": "Salam,",
|
"emails.invitation.hello": "Salam,",
|
||||||
"emails.invitation.body": "{{owner}}, {{project}}də {{team}} komandasına üzv olmağa dəvət etmək istədiyi üçün bu məktub sizə göndərildi.",
|
"emails.invitation.body": "{{owner}}, {{project}}də {{team}} komandasına üzv olmağa dəvət etmək istədiyi üçün bu məktub sizə göndərildi.",
|
||||||
"emails.invitation.footer": "Əgər maraqlanmırsınızsa, bu mesajı gözardı edə bilərsiniz.",
|
"emails.invitation.footer": "Əgər maraqlanmırsınızsa, bu mesajı gözardı edə bilərsiniz.",
|
||||||
"emails.invitation.thanks": "Təşəkkürlər,",
|
"emails.invitation.thanks": "Təşəkkürlər,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} dəvətini qəbul et",
|
||||||
"emails.invitation.signature": "{{project}} komandası",
|
"emails.invitation.signature": "{{project}} komandası",
|
||||||
"locale.country.unknown": "Naməlum",
|
"locale.country.unknown": "Naməlum",
|
||||||
"countries.af": "Əfqanıstan",
|
"countries.af": "Əfqanıstan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Перайдзіце па гэтай спасылцы, каб пацвердзіць свой адрас электроннай пошты",
|
"emails.verification.body": "Перайдзіце па гэтай спасылцы, каб пацвердзіць свой адрас электроннай пошты",
|
||||||
"emails.verification.footer": "Калі вы не запытвалі пацвярджэнне гэтага адрасу, праігнаруйце гэтае паведамленне.",
|
"emails.verification.footer": "Калі вы не запытвалі пацвярджэнне гэтага адрасу, праігнаруйце гэтае паведамленне.",
|
||||||
"emails.verification.thanks": "Дзякуем,",
|
"emails.verification.thanks": "Дзякуем,",
|
||||||
|
"emails.verification.buttonText": "Пацвердзіць адрас электроннай пошты",
|
||||||
"emails.verification.signature": "каманда {{project}}",
|
"emails.verification.signature": "каманда {{project}}",
|
||||||
"emails.magicSession.subject": "Лагін",
|
"emails.magicSession.subject": "Лагін",
|
||||||
"emails.magicSession.hello": "Прывітанне,",
|
"emails.magicSession.hello": "Прывітанне,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Перайдзіце па гэтай спасылцы, каб скінуць пароль для праекта {{project}}.",
|
"emails.recovery.body": "Перайдзіце па гэтай спасылцы, каб скінуць пароль для праекта {{project}}.",
|
||||||
"emails.recovery.footer": "Калі вы не прасілі скінуць пароль, вы можаце праігнараваць гэта паведамленне.",
|
"emails.recovery.footer": "Калі вы не прасілі скінуць пароль, вы можаце праігнараваць гэта паведамленне.",
|
||||||
"emails.recovery.thanks": "Дзякуем,",
|
"emails.recovery.thanks": "Дзякуем,",
|
||||||
|
"emails.recovery.buttonText": "Аднавіць пароль",
|
||||||
"emails.recovery.signature": "каманда {{project}}",
|
"emails.recovery.signature": "каманда {{project}}",
|
||||||
"emails.invitation.subject": "Запрошення до Команди %s у %s",
|
"emails.invitation.subject": "Запрошення до Команди %s у %s",
|
||||||
"emails.invitation.hello": "Прывітанне,",
|
"emails.invitation.hello": "Прывітанне,",
|
||||||
"emails.invitation.body": "Гэта паведамленне было адпраўлена вам, таму што {{owner}} хацеў запрасіць вас стаць членам каманды {{team}} у {{project}}.",
|
"emails.invitation.body": "Гэта паведамленне было адпраўлена вам, таму што {{owner}} хацеў запрасіць вас стаць членам каманды {{team}} у {{project}}.",
|
||||||
"emails.invitation.footer": "Калі вам гэта не цікава, вы можаце праігнараваць гэтае паведамленне.",
|
"emails.invitation.footer": "Калі вам гэта не цікава, вы можаце праігнараваць гэтае паведамленне.",
|
||||||
"emails.invitation.thanks": "Дзякуем,",
|
"emails.invitation.thanks": "Дзякуем,",
|
||||||
|
"emails.invitation.buttonText": "Прыняць запрашэнне ў {{team}}",
|
||||||
"emails.invitation.signature": "каманда {{project}}",
|
"emails.invitation.signature": "каманда {{project}}",
|
||||||
"locale.country.unknown": "Невядомы",
|
"locale.country.unknown": "Невядомы",
|
||||||
"countries.af": "Афганістан",
|
"countries.af": "Афганістан",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ईमेल प्रमाणिकरण करे क लेल दिहल गइल लिंक फॉलो करें|",
|
"emails.verification.body": "ईमेल प्रमाणिकरण करे क लेल दिहल गइल लिंक फॉलो करें|",
|
||||||
"emails.verification.footer": "अगर ई पता को सत्यापित करे के लिए ना कहाले, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
"emails.verification.footer": "अगर ई पता को सत्यापित करे के लिए ना कहाले, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
||||||
"emails.verification.thanks": "धन्यवाद,",
|
"emails.verification.thanks": "धन्यवाद,",
|
||||||
|
"emails.verification.buttonText": "ईमेल पता के पुष्टि करीं",
|
||||||
"emails.verification.signature": "{{project}} टीम",
|
"emails.verification.signature": "{{project}} टीम",
|
||||||
"emails.magicSession.subject": "लॉग इन करीं|",
|
"emails.magicSession.subject": "लॉग इन करीं|",
|
||||||
"emails.magicSession.hello": "प्रणाम,",
|
"emails.magicSession.hello": "प्रणाम,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "पासवर्ड बदल क लेल दिहल गइल लिंक फॉलो करें|",
|
"emails.recovery.body": "पासवर्ड बदल क लेल दिहल गइल लिंक फॉलो करें|",
|
||||||
"emails.recovery.footer": "अगर पासवर्ड बदल क लेल ना कहाले, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
"emails.recovery.footer": "अगर पासवर्ड बदल क लेल ना कहाले, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
||||||
"emails.recovery.thanks": "धन्यवाद,",
|
"emails.recovery.thanks": "धन्यवाद,",
|
||||||
|
"emails.recovery.buttonText": "पासवर्ड रीसेट करीं",
|
||||||
"emails.recovery.signature": "{{project}} टीम",
|
"emails.recovery.signature": "{{project}} टीम",
|
||||||
"emails.invitation.subject": "%s टीम क %s पे न्योता देवे क लेल|",
|
"emails.invitation.subject": "%s टीम क %s पे न्योता देवे क लेल|",
|
||||||
"emails.invitation.hello": "प्रणाम,",
|
"emails.invitation.hello": "प्रणाम,",
|
||||||
"emails.invitation.body": "ई मेल आपके एही लेल भेजल गईल रहल काहे क {{owner}} आपके {{project}} क {{team}} टीम का सदस्य बनावे चाहित रहे|",
|
"emails.invitation.body": "ई मेल आपके एही लेल भेजल गईल रहल काहे क {{owner}} आपके {{project}} क {{team}} टीम का सदस्य बनावे चाहित रहे|",
|
||||||
"emails.invitation.footer": "अगर आवे क इच्छा ना होवत, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
"emails.invitation.footer": "अगर आवे क इच्छा ना होवत, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
||||||
"emails.invitation.thanks": "धन्यवाद,",
|
"emails.invitation.thanks": "धन्यवाद,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} में नेवता स्वीकार करीं",
|
||||||
"emails.invitation.signature": "{{project}} टीम",
|
"emails.invitation.signature": "{{project}} टीम",
|
||||||
"locale.country.unknown": "अनजान",
|
"locale.country.unknown": "अनजान",
|
||||||
"countries.af": "अफ़ग़ानिस्तान",
|
"countries.af": "अफ़ग़ानिस्तान",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "এই লিঙ্কের মাধ্যমে ইমেইল যাচাই করুন।",
|
"emails.verification.body": "এই লিঙ্কের মাধ্যমে ইমেইল যাচাই করুন।",
|
||||||
"emails.verification.footer": "আপনি যদি এই ঠিকানা যাচাই করতে না বলেন, তাহলে আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
"emails.verification.footer": "আপনি যদি এই ঠিকানা যাচাই করতে না বলেন, তাহলে আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
||||||
"emails.verification.thanks": "ধন্যবাদ,",
|
"emails.verification.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.verification.buttonText": "ইমেইল ঠিকানা নিশ্চিত করুন",
|
||||||
"emails.verification.signature": "{{project}} টীম",
|
"emails.verification.signature": "{{project}} টীম",
|
||||||
"emails.magicSession.subject": "লগ ইন",
|
"emails.magicSession.subject": "লগ ইন",
|
||||||
"emails.magicSession.hello": "নমস্কার,",
|
"emails.magicSession.hello": "নমস্কার,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "এই লিঙ্কের মাধ্যমে আপনার {{project}} পাসওয়ার্ড পুনরায় সেট করুন।",
|
"emails.recovery.body": "এই লিঙ্কের মাধ্যমে আপনার {{project}} পাসওয়ার্ড পুনরায় সেট করুন।",
|
||||||
"emails.recovery.footer": "আপনি যদি আপনার পাসওয়ার্ড পুনরায় সেট করতে না বলেন, তাহলে আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
"emails.recovery.footer": "আপনি যদি আপনার পাসওয়ার্ড পুনরায় সেট করতে না বলেন, তাহলে আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
||||||
"emails.recovery.thanks": "ধন্যবাদ,",
|
"emails.recovery.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.recovery.buttonText": "পাসওয়ার্ড রিসেট করুন",
|
||||||
"emails.recovery.signature": "{{project}} টীম",
|
"emails.recovery.signature": "{{project}} টীম",
|
||||||
"emails.invitation.subject": "%s টিমকে %s তে আমন্ত্রণ জানান",
|
"emails.invitation.subject": "%s টিমকে %s তে আমন্ত্রণ জানান",
|
||||||
"emails.invitation.hello": "নমস্কার,",
|
"emails.invitation.hello": "নমস্কার,",
|
||||||
"emails.invitation.body": "এই মেইলটি আপনাকে পাঠানো হয়েছে কারণ {{owner}} আপনাকে {{project}} এর সাথে যুক্ত {{team}} টিমের সদস্য হওয়ার জন্য আমন্ত্রণ জানাতে চেয়েছিলেন।",
|
"emails.invitation.body": "এই মেইলটি আপনাকে পাঠানো হয়েছে কারণ {{owner}} আপনাকে {{project}} এর সাথে যুক্ত {{team}} টিমের সদস্য হওয়ার জন্য আমন্ত্রণ জানাতে চেয়েছিলেন।",
|
||||||
"emails.invitation.footer": "যদি এটি আপনার জন্য প্রয়োজনীয় না হয়, আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
"emails.invitation.footer": "যদি এটি আপনার জন্য প্রয়োজনীয় না হয়, আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
||||||
"emails.invitation.thanks": "ধন্যবাদ,",
|
"emails.invitation.thanks": "ধন্যবাদ,",
|
||||||
|
"emails.invitation.buttonText": "{{team}}-এর আমন্ত্রণ গ্রহণ করুন",
|
||||||
"emails.invitation.signature": "{{project}} টীম",
|
"emails.invitation.signature": "{{project}} টীম",
|
||||||
"locale.country.unknown": "অজানা",
|
"locale.country.unknown": "অজানা",
|
||||||
"countries.af": "আফগানিস্তান",
|
"countries.af": "আফগানিস্তান",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Accedeix a aquest enllaç per tal de verificar la teva adreça electrònica.",
|
"emails.verification.body": "Accedeix a aquest enllaç per tal de verificar la teva adreça electrònica.",
|
||||||
"emails.verification.footer": "Si no has sol·licitat la verificació d'aquesta adreça electrònica, pots ignorar aquest missatge.",
|
"emails.verification.footer": "Si no has sol·licitat la verificació d'aquesta adreça electrònica, pots ignorar aquest missatge.",
|
||||||
"emails.verification.thanks": "Gràcies,",
|
"emails.verification.thanks": "Gràcies,",
|
||||||
|
"emails.verification.buttonText": "Confirma l'adreça electrònica",
|
||||||
"emails.verification.signature": "Equip {{project}}",
|
"emails.verification.signature": "Equip {{project}}",
|
||||||
"emails.magicSession.subject": "Entrar",
|
"emails.magicSession.subject": "Entrar",
|
||||||
"emails.magicSession.hello": "Hola,",
|
"emails.magicSession.hello": "Hola,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Accedeix a aquest enllaç per a reinicialitzar la teva contrasenya de {{project}}.",
|
"emails.recovery.body": "Accedeix a aquest enllaç per a reinicialitzar la teva contrasenya de {{project}}.",
|
||||||
"emails.recovery.footer": "Si no has sol·licitat reinicialitzar la teva contrasenya, pots ignorar aquest missatge.",
|
"emails.recovery.footer": "Si no has sol·licitat reinicialitzar la teva contrasenya, pots ignorar aquest missatge.",
|
||||||
"emails.recovery.thanks": "Gràcies,",
|
"emails.recovery.thanks": "Gràcies,",
|
||||||
|
"emails.recovery.buttonText": "Restableix la contrasenya",
|
||||||
"emails.recovery.signature": "Equip {{project}}",
|
"emails.recovery.signature": "Equip {{project}}",
|
||||||
"emails.invitation.subject": "Invitació a l'equip %s a s%",
|
"emails.invitation.subject": "Invitació a l'equip %s a s%",
|
||||||
"emails.invitation.hello": "Hola,",
|
"emails.invitation.hello": "Hola,",
|
||||||
"emails.invitation.body": "Aquest correu se t'ha enviat perquè {{owner}} vol convidar-te a formar part de l'equip {{team}} al {{project}}.",
|
"emails.invitation.body": "Aquest correu se t'ha enviat perquè {{owner}} vol convidar-te a formar part de l'equip {{team}} al {{project}}.",
|
||||||
"emails.invitation.footer": "Si no és del teu interès, pots ignorar aquest missatge.",
|
"emails.invitation.footer": "Si no és del teu interès, pots ignorar aquest missatge.",
|
||||||
"emails.invitation.thanks": "Gràcies,",
|
"emails.invitation.thanks": "Gràcies,",
|
||||||
|
"emails.invitation.buttonText": "Accepta la invitació a {{team}}",
|
||||||
"emails.invitation.signature": "Equip {{project}}",
|
"emails.invitation.signature": "Equip {{project}}",
|
||||||
"locale.country.unknown": "Desconegut",
|
"locale.country.unknown": "Desconegut",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Følg dette link, for at verificere din email adresse.",
|
"emails.verification.body": "Følg dette link, for at verificere din email adresse.",
|
||||||
"emails.verification.footer": "Hvis du ikke har bedt om at verificere denne adresse, ignorer venligst denne besked.",
|
"emails.verification.footer": "Hvis du ikke har bedt om at verificere denne adresse, ignorer venligst denne besked.",
|
||||||
"emails.verification.thanks": "Tak,",
|
"emails.verification.thanks": "Tak,",
|
||||||
|
"emails.verification.buttonText": "Bekræft e-mailadresse",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Hej,",
|
"emails.magicSession.hello": "Hej,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Følg dette link for at nulstille koden til {{project}}.",
|
"emails.recovery.body": "Følg dette link for at nulstille koden til {{project}}.",
|
||||||
"emails.recovery.footer": "Hvis du ikke har bedt om at nulstille dit password, ignorer venligst denne besked.",
|
"emails.recovery.footer": "Hvis du ikke har bedt om at nulstille dit password, ignorer venligst denne besked.",
|
||||||
"emails.recovery.thanks": "Tak,",
|
"emails.recovery.thanks": "Tak,",
|
||||||
|
"emails.recovery.buttonText": "Nulstil adgangskode",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Invitation til %s Team på %s",
|
"emails.invitation.subject": "Invitation til %s Team på %s",
|
||||||
"emails.invitation.hello": "Hej,",
|
"emails.invitation.hello": "Hej,",
|
||||||
"emails.invitation.body": "Denne mail blev sendt til dig, fordi {{owner}} vil invitere dig til at blive medlem af {{team}} teamet på {{project}}.",
|
"emails.invitation.body": "Denne mail blev sendt til dig, fordi {{owner}} vil invitere dig til at blive medlem af {{team}} teamet på {{project}}.",
|
||||||
"emails.invitation.footer": "Hvis du ikke er interesseret, ignorer venligst denne besked.",
|
"emails.invitation.footer": "Hvis du ikke er interesseret, ignorer venligst denne besked.",
|
||||||
"emails.invitation.thanks": "Tak,",
|
"emails.invitation.thanks": "Tak,",
|
||||||
|
"emails.invitation.buttonText": "Accepter invitation til {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Ukendt",
|
"locale.country.unknown": "Ukendt",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Folge diesem Link, um deine E-Mail-Adresse zu bestätigen.",
|
"emails.verification.body": "Folge diesem Link, um deine E-Mail-Adresse zu bestätigen.",
|
||||||
"emails.verification.footer": "Solltest du keine Verifizierung dieser E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
|
"emails.verification.footer": "Solltest du keine Verifizierung dieser E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
|
||||||
"emails.verification.thanks": "Danke,",
|
"emails.verification.thanks": "Danke,",
|
||||||
|
"emails.verification.buttonText": "E-Mail-Adresse bestätigen",
|
||||||
"emails.verification.signature": "{{project}}-Team",
|
"emails.verification.signature": "{{project}}-Team",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Hey,",
|
"emails.magicSession.hello": "Hey,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Folge diesem Link, um dein {{project}}-Kennwort zurückzusetzen.",
|
"emails.recovery.body": "Folge diesem Link, um dein {{project}}-Kennwort zurückzusetzen.",
|
||||||
"emails.recovery.footer": "Solltest du keine Kennwort-Zurücksetzung angefordert haben, kannst du diese Nachricht ignorieren.",
|
"emails.recovery.footer": "Solltest du keine Kennwort-Zurücksetzung angefordert haben, kannst du diese Nachricht ignorieren.",
|
||||||
"emails.recovery.thanks": "Danke,",
|
"emails.recovery.thanks": "Danke,",
|
||||||
|
"emails.recovery.buttonText": "Passwort zurücksetzen",
|
||||||
"emails.recovery.signature": "{{project}}-Team",
|
"emails.recovery.signature": "{{project}}-Team",
|
||||||
"emails.invitation.subject": "Einladung zum %s-Team auf %s",
|
"emails.invitation.subject": "Einladung zum %s-Team auf %s",
|
||||||
"emails.invitation.hello": "Hello,",
|
"emails.invitation.hello": "Hello,",
|
||||||
"emails.invitation.body": "Du erhälst diese E-Mail, weil {{owner}} dich in das Team {{team}} auf {{project}} eingeladen hat.",
|
"emails.invitation.body": "Du erhälst diese E-Mail, weil {{owner}} dich in das Team {{team}} auf {{project}} eingeladen hat.",
|
||||||
"emails.invitation.footer": "Wenn du nicht interessiert bist, kannst du diese Nachricht ignorieren.",
|
"emails.invitation.footer": "Wenn du nicht interessiert bist, kannst du diese Nachricht ignorieren.",
|
||||||
"emails.invitation.thanks": "Danke,",
|
"emails.invitation.thanks": "Danke,",
|
||||||
|
"emails.invitation.buttonText": "Einladung zu {{team}} annehmen",
|
||||||
"emails.invitation.signature": "{{project}}-Team",
|
"emails.invitation.signature": "{{project}}-Team",
|
||||||
"locale.country.unknown": "Unbekannt",
|
"locale.country.unknown": "Unbekannt",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Ακολουθήστε αυτό το link για να επαληθεύσετε τη δ/νση του email σας",
|
"emails.verification.body": "Ακολουθήστε αυτό το link για να επαληθεύσετε τη δ/νση του email σας",
|
||||||
"emails.verification.footer": "Εάν δεν ζητήσατε επαλήθευση αυτής της δ/νσης email, μπορείτε να αγνοήσετε αυτό το μήνυμα",
|
"emails.verification.footer": "Εάν δεν ζητήσατε επαλήθευση αυτής της δ/νσης email, μπορείτε να αγνοήσετε αυτό το μήνυμα",
|
||||||
"emails.verification.thanks": "Ευχαριστούμε,",
|
"emails.verification.thanks": "Ευχαριστούμε,",
|
||||||
|
"emails.verification.buttonText": "Επιβεβαιώστε διεύθυνση email",
|
||||||
"emails.verification.signature": "Η ομάδα του {{project}}",
|
"emails.verification.signature": "Η ομάδα του {{project}}",
|
||||||
"emails.magicSession.subject": "Είσοδος",
|
"emails.magicSession.subject": "Είσοδος",
|
||||||
"emails.magicSession.hello": "Γεια σου,",
|
"emails.magicSession.hello": "Γεια σου,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Ακολουθήστε αυτό το link για να αλλάξετε τον {{project}} κωδικό σας",
|
"emails.recovery.body": "Ακολουθήστε αυτό το link για να αλλάξετε τον {{project}} κωδικό σας",
|
||||||
"emails.recovery.footer": "Εάν δεν ζητήσατε αλλαγή του κωδικού σας πρόσβασης, μπορείτε να αγνοήσετε αυτό το μήνυμα",
|
"emails.recovery.footer": "Εάν δεν ζητήσατε αλλαγή του κωδικού σας πρόσβασης, μπορείτε να αγνοήσετε αυτό το μήνυμα",
|
||||||
"emails.recovery.thanks": "Ευχαριστούμε,",
|
"emails.recovery.thanks": "Ευχαριστούμε,",
|
||||||
|
"emails.recovery.buttonText": "Επαναφορά κωδικού πρόσβασης",
|
||||||
"emails.recovery.signature": "Η ομάδα του {{project}}",
|
"emails.recovery.signature": "Η ομάδα του {{project}}",
|
||||||
"emails.invitation.subject": "Πρόσκληση στην %s Ομάδα στον %s",
|
"emails.invitation.subject": "Πρόσκληση στην %s Ομάδα στον %s",
|
||||||
"emails.invitation.hello": "Γεια σου,",
|
"emails.invitation.hello": "Γεια σου,",
|
||||||
"emails.invitation.body": "Αυτό το email στάλθηκε επειδή ο/η {{owner}} θέλει να σας προσκαλέσει να γίνετε μέλος της ομάδας {{team}} του {{project}}.",
|
"emails.invitation.body": "Αυτό το email στάλθηκε επειδή ο/η {{owner}} θέλει να σας προσκαλέσει να γίνετε μέλος της ομάδας {{team}} του {{project}}.",
|
||||||
"emails.invitation.footer": "Εάν δεν ενδιαφέρεστε, μπορείτε να αγνοήσετε αυτό το μήνυμα.",
|
"emails.invitation.footer": "Εάν δεν ενδιαφέρεστε, μπορείτε να αγνοήσετε αυτό το μήνυμα.",
|
||||||
"emails.invitation.thanks": "Ευχαριστούμε,",
|
"emails.invitation.thanks": "Ευχαριστούμε,",
|
||||||
|
"emails.invitation.buttonText": "Αποδεχόμενος την πρόσκληση στην {{team}}",
|
||||||
"emails.invitation.signature": "Η ομάδα του {{project}}",
|
"emails.invitation.signature": "Η ομάδα του {{project}}",
|
||||||
"locale.country.unknown": "Άγνωστο",
|
"locale.country.unknown": "Άγνωστο",
|
||||||
"countries.af": "Αφγανιστάν",
|
"countries.af": "Αφγανιστάν",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Follow this link to verify your email address to your {{b}}{{project}}{{/b}} account.",
|
"emails.verification.body": "Follow this link to verify your email address to your {{b}}{{project}}{{/b}} account.",
|
||||||
"emails.verification.footer": "If you didn’t ask to verify this address, you can ignore this message.",
|
"emails.verification.footer": "If you didn’t ask to verify this address, you can ignore this message.",
|
||||||
"emails.verification.thanks": "Thanks,",
|
"emails.verification.thanks": "Thanks,",
|
||||||
|
"emails.verification.buttonText": "Confirm email address",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "{{project}} Login",
|
"emails.magicSession.subject": "{{project}} Login",
|
||||||
"emails.magicSession.hello": "Hello {{user}},",
|
"emails.magicSession.hello": "Hello {{user}},",
|
||||||
|
|
@ -45,12 +46,14 @@
|
||||||
"emails.recovery.body": "Follow this link to reset your {{b}}{{project}}{{/b}} password.",
|
"emails.recovery.body": "Follow this link to reset your {{b}}{{project}}{{/b}} password.",
|
||||||
"emails.recovery.footer": "If you didn't ask to reset your password, you can ignore this message.",
|
"emails.recovery.footer": "If you didn't ask to reset your password, you can ignore this message.",
|
||||||
"emails.recovery.thanks": "Thanks,",
|
"emails.recovery.thanks": "Thanks,",
|
||||||
|
"emails.recovery.buttonText": "Reset password",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Invitation to %s Team at %s",
|
"emails.invitation.subject": "Invitation to %s Team at %s",
|
||||||
"emails.invitation.hello": "Hello {{user}},",
|
"emails.invitation.hello": "Hello {{user}},",
|
||||||
"emails.invitation.body": "This mail was sent to you because {{b}}{{owner}}{{/b}} wanted to invite you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
|
"emails.invitation.body": "This mail was sent to you because {{b}}{{owner}}{{/b}} wanted to invite you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
|
||||||
"emails.invitation.footer": "If you are not interested, you can ignore this message.",
|
"emails.invitation.footer": "If you are not interested, you can ignore this message.",
|
||||||
"emails.invitation.thanks": "Thanks,",
|
"emails.invitation.thanks": "Thanks,",
|
||||||
|
"emails.invitation.buttonText": "Accept invite to {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"emails.certificate.subject": "Certificate failure for %s",
|
"emails.certificate.subject": "Certificate failure for %s",
|
||||||
"emails.certificate.hello": "Hello,",
|
"emails.certificate.hello": "Hello,",
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
"emails.verification.body": "Alklaku ĉi tiun ligon por kontroli vian retpoŝtan adreson.",
|
"emails.verification.body": "Alklaku ĉi tiun ligon por kontroli vian retpoŝtan adreson.",
|
||||||
"emails.verification.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
|
"emails.verification.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
|
||||||
"emails.verification.thanks": "Dankegon.,",
|
"emails.verification.thanks": "Dankegon.,",
|
||||||
|
"emails.verification.buttonText": "Konfirmi retadreson",
|
||||||
"emails.verification.signature": "Teamo {{project}}",
|
"emails.verification.signature": "Teamo {{project}}",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Saluton,",
|
"emails.magicSession.hello": "Saluton,",
|
||||||
|
|
@ -19,12 +20,14 @@
|
||||||
"emails.recovery.body": "Alklaku ĉi tiun ligon por reagordi vian pasvorton. {{project}}",
|
"emails.recovery.body": "Alklaku ĉi tiun ligon por reagordi vian pasvorton. {{project}}",
|
||||||
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ĉi tiun mesaĝon.",
|
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ĉi tiun mesaĝon.",
|
||||||
"emails.recovery.thanks": "Dankegon,",
|
"emails.recovery.thanks": "Dankegon,",
|
||||||
|
"emails.recovery.buttonText": "Pasvorton restarigi",
|
||||||
"emails.recovery.signature": "Teamo {{project}}",
|
"emails.recovery.signature": "Teamo {{project}}",
|
||||||
"emails.invitation.subject": "Invito al la Teamo %s em %s",
|
"emails.invitation.subject": "Invito al la Teamo %s em %s",
|
||||||
"emails.invitation.hello": "Dankegon,",
|
"emails.invitation.hello": "Dankegon,",
|
||||||
"emails.invitation.body": "Ĉi tiu retpoŝto estis sendita ĉar la {{owner}} volas inviti vin fariĝi membro de la Teamo {{team}} en {{project}}.",
|
"emails.invitation.body": "Ĉi tiu retpoŝto estis sendita ĉar la {{owner}} volas inviti vin fariĝi membro de la Teamo {{team}} en {{project}}.",
|
||||||
"emails.invitation.footer": "Se vi ne interesiĝas, vi povas ignori ĉi tiun mesaĝon.",
|
"emails.invitation.footer": "Se vi ne interesiĝas, vi povas ignori ĉi tiun mesaĝon.",
|
||||||
"emails.invitation.thanks": "Dankegon,",
|
"emails.invitation.thanks": "Dankegon,",
|
||||||
|
"emails.invitation.buttonText": "Akcepti inviton al {{team}}",
|
||||||
"emails.invitation.signature": "Teamo {{project}}",
|
"emails.invitation.signature": "Teamo {{project}}",
|
||||||
"locale.country.unknown": "Unknown",
|
"locale.country.unknown": "Unknown",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Haz clic en este enlace para verificar tu correo:",
|
"emails.verification.body": "Haz clic en este enlace para verificar tu correo:",
|
||||||
"emails.verification.footer": "Si no has solicitado verificar este correo, puedes ignorar este mensaje.",
|
"emails.verification.footer": "Si no has solicitado verificar este correo, puedes ignorar este mensaje.",
|
||||||
"emails.verification.thanks": "Gracias.,",
|
"emails.verification.thanks": "Gracias.,",
|
||||||
|
"emails.verification.buttonText": "Confirmar dirección de correo",
|
||||||
"emails.verification.signature": "El equipo de {{project}}.",
|
"emails.verification.signature": "El equipo de {{project}}.",
|
||||||
"emails.magicSession.subject": "Inicio de sesión",
|
"emails.magicSession.subject": "Inicio de sesión",
|
||||||
"emails.magicSession.hello": "Hola,",
|
"emails.magicSession.hello": "Hola,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Haz clic en este enlace para restablecer la contraseña de {{project}}:",
|
"emails.recovery.body": "Haz clic en este enlace para restablecer la contraseña de {{project}}:",
|
||||||
"emails.recovery.footer": "Si no has solicitado restablecer la contraseña, puedes ignorar este mensaje.",
|
"emails.recovery.footer": "Si no has solicitado restablecer la contraseña, puedes ignorar este mensaje.",
|
||||||
"emails.recovery.thanks": "Gracias.,",
|
"emails.recovery.thanks": "Gracias.,",
|
||||||
|
"emails.recovery.buttonText": "Restablecer contraseña",
|
||||||
"emails.recovery.signature": "El equipo de {{project}}",
|
"emails.recovery.signature": "El equipo de {{project}}",
|
||||||
"emails.invitation.subject": "Invitación al equipo %s en %s",
|
"emails.invitation.subject": "Invitación al equipo %s en %s",
|
||||||
"emails.invitation.hello": "Hola,",
|
"emails.invitation.hello": "Hola,",
|
||||||
"emails.invitation.body": "Este correo ha sido enviado a petición de {{owner}} quién quiere invitarte a formar parte del equipo {{team}} en {{project}}.",
|
"emails.invitation.body": "Este correo ha sido enviado a petición de {{owner}} quién quiere invitarte a formar parte del equipo {{team}} en {{project}}.",
|
||||||
"emails.invitation.footer": "Si no estás interesado, puedes ignorar este mensaje.",
|
"emails.invitation.footer": "Si no estás interesado, puedes ignorar este mensaje.",
|
||||||
"emails.invitation.thanks": "Gracias.,",
|
"emails.invitation.thanks": "Gracias.,",
|
||||||
|
"emails.invitation.buttonText": "Aceptar invitación a {{team}}",
|
||||||
"emails.invitation.signature": "El equipo de {{project}}",
|
"emails.invitation.signature": "El equipo de {{project}}",
|
||||||
"locale.country.unknown": "Desconocido",
|
"locale.country.unknown": "Desconocido",
|
||||||
"countries.af": "Afganistán",
|
"countries.af": "Afganistán",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "برای تأیید ایمیلتان پیوند زیر را دنبال کنید.",
|
"emails.verification.body": "برای تأیید ایمیلتان پیوند زیر را دنبال کنید.",
|
||||||
"emails.verification.footer": "اگر شما درخواست تأیید حساب ندادهاید، میتوانید این پیام را نادیده بگیرید.",
|
"emails.verification.footer": "اگر شما درخواست تأیید حساب ندادهاید، میتوانید این پیام را نادیده بگیرید.",
|
||||||
"emails.verification.thanks": "سپاس فراوان،",
|
"emails.verification.thanks": "سپاس فراوان،",
|
||||||
|
"emails.verification.buttonText": "آدرس ایمیل را تایید کنید",
|
||||||
"emails.verification.signature": "تیم {{user}}",
|
"emails.verification.signature": "تیم {{user}}",
|
||||||
"emails.magicSession.subject": "ورود به حساب کاربری",
|
"emails.magicSession.subject": "ورود به حساب کاربری",
|
||||||
"emails.magicSession.hello": "سلام،",
|
"emails.magicSession.hello": "سلام،",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "برای بازیابی گذرواژهتان پیوند زیر را دنبال کنید.",
|
"emails.recovery.body": "برای بازیابی گذرواژهتان پیوند زیر را دنبال کنید.",
|
||||||
"emails.recovery.footer": "اگر شما درخواست بازیابی گذرواژه ندادهاید، میتوانید این پیام را نادیده بگیرید.",
|
"emails.recovery.footer": "اگر شما درخواست بازیابی گذرواژه ندادهاید، میتوانید این پیام را نادیده بگیرید.",
|
||||||
"emails.recovery.thanks": "سپاس فراوان،",
|
"emails.recovery.thanks": "سپاس فراوان،",
|
||||||
|
"emails.recovery.buttonText": "بازنشانی رمز عبور",
|
||||||
"emails.recovery.signature": "تیم {{user}}",
|
"emails.recovery.signature": "تیم {{user}}",
|
||||||
"emails.invitation.subject": "دعوت به تیم %s در %s",
|
"emails.invitation.subject": "دعوت به تیم %s در %s",
|
||||||
"emails.invitation.hello": "سلام،",
|
"emails.invitation.hello": "سلام،",
|
||||||
"emails.invitation.body": "این ایمیل برای شما فرستاده شدهاست زیرا {{owner}} میخواهد شما را به تیم {{team}} در پروژهی {{project}} بیفزاید.",
|
"emails.invitation.body": "این ایمیل برای شما فرستاده شدهاست زیرا {{owner}} میخواهد شما را به تیم {{team}} در پروژهی {{project}} بیفزاید.",
|
||||||
"emails.invitation.footer": "اگر علاقه ندارید، میتوانید این پیام را نادیده بگیرید.",
|
"emails.invitation.footer": "اگر علاقه ندارید، میتوانید این پیام را نادیده بگیرید.",
|
||||||
"emails.invitation.thanks": "سپاس فراوان،",
|
"emails.invitation.thanks": "سپاس فراوان،",
|
||||||
|
"emails.invitation.buttonText": "دعوت را به {{team}} بپذیرید",
|
||||||
"emails.invitation.signature": "تیم {{user}}",
|
"emails.invitation.signature": "تیم {{user}}",
|
||||||
"locale.country.unknown": "ناشناخته",
|
"locale.country.unknown": "ناشناخته",
|
||||||
"countries.af": "افغانستان",
|
"countries.af": "افغانستان",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Suivez ce lien pour vérifier votre adresse e-mail.",
|
"emails.verification.body": "Suivez ce lien pour vérifier votre adresse e-mail.",
|
||||||
"emails.verification.footer": "Si vous n'avez pas demandé à vérifier cette adresse, vous pouvez ignorer ce message.",
|
"emails.verification.footer": "Si vous n'avez pas demandé à vérifier cette adresse, vous pouvez ignorer ce message.",
|
||||||
"emails.verification.thanks": "Merci,",
|
"emails.verification.thanks": "Merci,",
|
||||||
|
"emails.verification.buttonText": "Confirmez l'adresse e-mail",
|
||||||
"emails.verification.signature": "Équipe {{project}}",
|
"emails.verification.signature": "Équipe {{project}}",
|
||||||
"emails.magicSession.subject": "Connexion",
|
"emails.magicSession.subject": "Connexion",
|
||||||
"emails.magicSession.hello": "Bonjour,",
|
"emails.magicSession.hello": "Bonjour,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Suivez ce lien pour réinitialiser votre mot de passe pour {{project}}.",
|
"emails.recovery.body": "Suivez ce lien pour réinitialiser votre mot de passe pour {{project}}.",
|
||||||
"emails.recovery.footer": "Si vous n'avez pas demandé à réinitialiser votre mot de passe, vous pouvez ignorer ce message.",
|
"emails.recovery.footer": "Si vous n'avez pas demandé à réinitialiser votre mot de passe, vous pouvez ignorer ce message.",
|
||||||
"emails.recovery.thanks": "Merci,",
|
"emails.recovery.thanks": "Merci,",
|
||||||
|
"emails.recovery.buttonText": "Réinitialisation du mot de passe",
|
||||||
"emails.recovery.signature": "L'équipe {{project}}",
|
"emails.recovery.signature": "L'équipe {{project}}",
|
||||||
"emails.invitation.subject": "Invitation à l'équipe %s de %s",
|
"emails.invitation.subject": "Invitation à l'équipe %s de %s",
|
||||||
"emails.invitation.hello": "Bonjour,",
|
"emails.invitation.hello": "Bonjour,",
|
||||||
"emails.invitation.body": "Cet e-mail vous a été envoyé parce que {{owner}} souhaite vous inviter à devenir membre de l'équipe {{team}} pour {{project}}.",
|
"emails.invitation.body": "Cet e-mail vous a été envoyé parce que {{owner}} souhaite vous inviter à devenir membre de l'équipe {{team}} pour {{project}}.",
|
||||||
"emails.invitation.footer": "Si vous n'êtes pas intéressé, vous pouvez ignorer ce message.",
|
"emails.invitation.footer": "Si vous n'êtes pas intéressé, vous pouvez ignorer ce message.",
|
||||||
"emails.invitation.thanks": "Merci,",
|
"emails.invitation.thanks": "Merci,",
|
||||||
|
"emails.invitation.buttonText": "Accepter l'invitation à {{team}}",
|
||||||
"emails.invitation.signature": "L'équipe {{project}}",
|
"emails.invitation.signature": "L'équipe {{project}}",
|
||||||
"locale.country.unknown": "Inconnu",
|
"locale.country.unknown": "Inconnu",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Lean an nasc seo chun do ríomhphost a fhíorú.",
|
"emails.verification.body": "Lean an nasc seo chun do ríomhphost a fhíorú.",
|
||||||
"emails.verification.footer": "Mura ndearna tú iarratas an seoladh seo a fhíoru, déan neamhaird den teachtaireacht seo.",
|
"emails.verification.footer": "Mura ndearna tú iarratas an seoladh seo a fhíoru, déan neamhaird den teachtaireacht seo.",
|
||||||
"emails.verification.thanks": "Go raibh maith agat,",
|
"emails.verification.thanks": "Go raibh maith agat,",
|
||||||
|
"emails.verification.buttonText": "Deimhnigh seoladh ríomhphoist",
|
||||||
"emails.verification.signature": "{{project}} foireann",
|
"emails.verification.signature": "{{project}} foireann",
|
||||||
"emails.magicSession.subject": "Logáil isteach",
|
"emails.magicSession.subject": "Logáil isteach",
|
||||||
"emails.magicSession.hello": "Haigh,",
|
"emails.magicSession.hello": "Haigh,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Lean an nasc seo chun do pasfhocal {{project}} a athshocrú.",
|
"emails.recovery.body": "Lean an nasc seo chun do pasfhocal {{project}} a athshocrú.",
|
||||||
"emails.recovery.footer": "Mura ndearna tú iarratas do pasfhocal a athshocrú, déan neamhaird den teachtaireacht seo.",
|
"emails.recovery.footer": "Mura ndearna tú iarratas do pasfhocal a athshocrú, déan neamhaird den teachtaireacht seo.",
|
||||||
"emails.recovery.thanks": "Go raibh maith agat,",
|
"emails.recovery.thanks": "Go raibh maith agat,",
|
||||||
|
"emails.recovery.buttonText": "Athshocraigh focal faire",
|
||||||
"emails.recovery.signature": "{{project}} foireann",
|
"emails.recovery.signature": "{{project}} foireann",
|
||||||
"emails.invitation.subject": "Cuireadh do %s foireann ag %s",
|
"emails.invitation.subject": "Cuireadh do %s foireann ag %s",
|
||||||
"emails.invitation.hello": "Haigh,",
|
"emails.invitation.hello": "Haigh,",
|
||||||
"emails.invitation.body": "Seoladh an ríomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
|
"emails.invitation.body": "Seoladh an ríomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
|
||||||
"emails.invitation.footer": "Is cuma leat? Déan neamhaird den teachtaireacht seo.",
|
"emails.invitation.footer": "Is cuma leat? Déan neamhaird den teachtaireacht seo.",
|
||||||
"emails.invitation.thanks": "Go raibh maith agat,",
|
"emails.invitation.thanks": "Go raibh maith agat,",
|
||||||
|
"emails.invitation.buttonText": "Glac le cuireadh chuig {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} foireann",
|
"emails.invitation.signature": "{{project}} foireann",
|
||||||
"locale.country.unknown": "Neamhaithnid",
|
"locale.country.unknown": "Neamhaithnid",
|
||||||
"countries.af": "An Afganastáin",
|
"countries.af": "An Afganastáin",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "તમારું ઇમેઇલ સરનામું ચકાસવા માટે આ લિંકને અનુસરો.",
|
"emails.verification.body": "તમારું ઇમેઇલ સરનામું ચકાસવા માટે આ લિંકને અનુસરો.",
|
||||||
"emails.verification.footer": "જો તમે આ સરનામાંની ચકાસણી કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
|
"emails.verification.footer": "જો તમે આ સરનામાંની ચકાસણી કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
|
||||||
"emails.verification.thanks": "આભાર,",
|
"emails.verification.thanks": "આભાર,",
|
||||||
|
"emails.verification.buttonText": "ઇમેઇલ સરનામું ખાતરી કરો",
|
||||||
"emails.verification.signature": "{{project}} ટીમ",
|
"emails.verification.signature": "{{project}} ટીમ",
|
||||||
"emails.magicSession.subject": "પ્રવેશ કરો",
|
"emails.magicSession.subject": "પ્રવેશ કરો",
|
||||||
"emails.magicSession.hello": "નમસ્કાર,",
|
"emails.magicSession.hello": "નમસ્કાર,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "તમારો {{project}} પાસવર્ડ ફરીથી સેટ કરવા માટે આ લિંકને અનુસરો.",
|
"emails.recovery.body": "તમારો {{project}} પાસવર્ડ ફરીથી સેટ કરવા માટે આ લિંકને અનુસરો.",
|
||||||
"emails.recovery.footer": "જો તમે તમારો પાસવર્ડ ફરીથી સેટ કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
|
"emails.recovery.footer": "જો તમે તમારો પાસવર્ડ ફરીથી સેટ કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
|
||||||
"emails.recovery.thanks": "આભાર,",
|
"emails.recovery.thanks": "આભાર,",
|
||||||
|
"emails.recovery.buttonText": "પાસવર્ડ રીસેટ કરો",
|
||||||
"emails.recovery.signature": "{{project}} ટીમ",
|
"emails.recovery.signature": "{{project}} ટીમ",
|
||||||
"emails.invitation.subject": "%s ટીમને %s પર આમંત્રણ",
|
"emails.invitation.subject": "%s ટીમને %s પર આમંત્રણ",
|
||||||
"emails.invitation.hello": "નમસ્કાર,",
|
"emails.invitation.hello": "નમસ્કાર,",
|
||||||
"emails.invitation.body": "આ મેઇલ તમને મોકલવામાં આવ્યો હતો કારણ કે {{owner}} તમને {{project}} માં {{team}} ટીમના સભ્ય બનવા માટે આમંત્રિત કરવા માંગતા હતો.",
|
"emails.invitation.body": "આ મેઇલ તમને મોકલવામાં આવ્યો હતો કારણ કે {{owner}} તમને {{project}} માં {{team}} ટીમના સભ્ય બનવા માટે આમંત્રિત કરવા માંગતા હતો.",
|
||||||
"emails.invitation.footer": "જો તમને રસ નથી, તો તમે આ સંદેશને અવગણી શકો છો.",
|
"emails.invitation.footer": "જો તમને રસ નથી, તો તમે આ સંદેશને અવગણી શકો છો.",
|
||||||
"emails.invitation.thanks": "આભાર,",
|
"emails.invitation.thanks": "આભાર,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} નું આમંત્રણ સ્વીકારો",
|
||||||
"emails.invitation.signature": "{{project}} ટીમ",
|
"emails.invitation.signature": "{{project}} ટીમ",
|
||||||
"locale.country.unknown": "અજાણ",
|
"locale.country.unknown": "અજાણ",
|
||||||
"countries.af": "અફઘાનિસ્તાન",
|
"countries.af": "અફઘાનિસ્તાન",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "לחץ על קישור זה כדי לאמת את כתובת הדוא\"ל שלך.",
|
"emails.verification.body": "לחץ על קישור זה כדי לאמת את כתובת הדוא\"ל שלך.",
|
||||||
"emails.verification.footer": "אם לא ביקשת לאמת כתובת זו, תוכל להתעלם מהודעה זו.",
|
"emails.verification.footer": "אם לא ביקשת לאמת כתובת זו, תוכל להתעלם מהודעה זו.",
|
||||||
"emails.verification.thanks": "תודה,",
|
"emails.verification.thanks": "תודה,",
|
||||||
|
"emails.verification.buttonText": "אשר כתובת דוא\"ל",
|
||||||
"emails.verification.signature": "צוות {{project}}",
|
"emails.verification.signature": "צוות {{project}}",
|
||||||
"emails.magicSession.subject": "כניסה למערכת",
|
"emails.magicSession.subject": "כניסה למערכת",
|
||||||
"emails.magicSession.hello": "שלום,",
|
"emails.magicSession.hello": "שלום,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "עקוב אחר קישור זה כדי לאפס את סיסמתך ב-{{project}}.",
|
"emails.recovery.body": "עקוב אחר קישור זה כדי לאפס את סיסמתך ב-{{project}}.",
|
||||||
"emails.recovery.footer": "אם לא ביקשת לאפס את הסיסמה, תוכל להתעלם מהודעה זו.",
|
"emails.recovery.footer": "אם לא ביקשת לאפס את הסיסמה, תוכל להתעלם מהודעה זו.",
|
||||||
"emails.recovery.thanks": "תודה,",
|
"emails.recovery.thanks": "תודה,",
|
||||||
|
"emails.recovery.buttonText": "סיסמא איפוס",
|
||||||
"emails.recovery.signature": "צוות {{project}}",
|
"emails.recovery.signature": "צוות {{project}}",
|
||||||
"emails.invitation.subject": "הזמנה לצוות %s ב- %s",
|
"emails.invitation.subject": "הזמנה לצוות %s ב- %s",
|
||||||
"emails.invitation.hello": "שלום,",
|
"emails.invitation.hello": "שלום,",
|
||||||
"emails.invitation.body": "דואר זה נשלח אליך מכיוון ש {{owner}} רצה להזמין אותך להיות חבר בצוות {{team}} ב-{{project}}.",
|
"emails.invitation.body": "דואר זה נשלח אליך מכיוון ש {{owner}} רצה להזמין אותך להיות חבר בצוות {{team}} ב-{{project}}.",
|
||||||
"emails.invitation.footer": "אם אינך מעוניין, תוכל להתעלם מהודעה זו.",
|
"emails.invitation.footer": "אם אינך מעוניין, תוכל להתעלם מהודעה זו.",
|
||||||
"emails.invitation.thanks": "תודה,",
|
"emails.invitation.thanks": "תודה,",
|
||||||
|
"emails.invitation.buttonText": "אשר הזמנה ל-{{team}}",
|
||||||
"emails.invitation.signature": "צוות {{project}}",
|
"emails.invitation.signature": "צוות {{project}}",
|
||||||
"locale.country.unknown": "לא ידוע",
|
"locale.country.unknown": "לא ידוע",
|
||||||
"countries.af": "אפגניסטן",
|
"countries.af": "אפגניסטן",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "इस लिंक के माध्यम से अपने ईमेल को सत्यापित कीजिये।",
|
"emails.verification.body": "इस लिंक के माध्यम से अपने ईमेल को सत्यापित कीजिये।",
|
||||||
"emails.verification.footer": "यदि आप इस पते को सत्यापित नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
"emails.verification.footer": "यदि आप इस पते को सत्यापित नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
||||||
"emails.verification.thanks": "धन्यवाद,",
|
"emails.verification.thanks": "धन्यवाद,",
|
||||||
|
"emails.verification.buttonText": "ईमेल पता सत्यापित करें",
|
||||||
"emails.verification.signature": "{{project}} टीम",
|
"emails.verification.signature": "{{project}} टीम",
|
||||||
"emails.magicSession.subject": "लॉग इन",
|
"emails.magicSession.subject": "लॉग इन",
|
||||||
"emails.magicSession.hello": "नमस्ते,",
|
"emails.magicSession.hello": "नमस्ते,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "इस लिंक के माध्यम से अपना {{project}} पासवर्ड रीसेट करें।",
|
"emails.recovery.body": "इस लिंक के माध्यम से अपना {{project}} पासवर्ड रीसेट करें।",
|
||||||
"emails.recovery.footer": "यदि आप अपना पासवर्ड रीसेट नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
"emails.recovery.footer": "यदि आप अपना पासवर्ड रीसेट नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
||||||
"emails.recovery.thanks": "धन्यवाद,",
|
"emails.recovery.thanks": "धन्यवाद,",
|
||||||
|
"emails.recovery.buttonText": "पासवर्ड रीसेट करें",
|
||||||
"emails.recovery.signature": "{{project}} टीम",
|
"emails.recovery.signature": "{{project}} टीम",
|
||||||
"emails.invitation.subject": "%s टीम का यहाँ %s पर आमंत्रण",
|
"emails.invitation.subject": "%s टीम का यहाँ %s पर आमंत्रण",
|
||||||
"emails.invitation.hello": "नमस्ते,",
|
"emails.invitation.hello": "नमस्ते,",
|
||||||
"emails.invitation.body": "यह मेल आपको इसलिए भेजा गया है क्योंकि {{owner}} आपको {{team}} टीम का सदस्य बनाना चाहते है, जो {{project}} से जुड़ा हुआ है।",
|
"emails.invitation.body": "यह मेल आपको इसलिए भेजा गया है क्योंकि {{owner}} आपको {{team}} टीम का सदस्य बनाना चाहते है, जो {{project}} से जुड़ा हुआ है।",
|
||||||
"emails.invitation.footer": "यदि आप इसमें रूचि नहीं रखते, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
"emails.invitation.footer": "यदि आप इसमें रूचि नहीं रखते, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
||||||
"emails.invitation.thanks": "धन्यवाद,",
|
"emails.invitation.thanks": "धन्यवाद,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} का निमंत्रण स्वीकार करें",
|
||||||
"emails.invitation.signature": "{{project}} टीम",
|
"emails.invitation.signature": "{{project}} टीम",
|
||||||
"locale.country.unknown": "अज्ञात",
|
"locale.country.unknown": "अज्ञात",
|
||||||
"countries.af": "अफ़ग़ानिस्तान",
|
"countries.af": "अफ़ग़ानिस्तान",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Slijedite ovu poveznicu da biste potvrdili svoju adresu e-pošte.",
|
"emails.verification.body": "Slijedite ovu poveznicu da biste potvrdili svoju adresu e-pošte.",
|
||||||
"emails.verification.footer": "Ukoliko niste zatražili potvrdu ove adrese, možete zanemariti ovu poruku.",
|
"emails.verification.footer": "Ukoliko niste zatražili potvrdu ove adrese, možete zanemariti ovu poruku.",
|
||||||
"emails.verification.thanks": "Hvala,",
|
"emails.verification.thanks": "Hvala,",
|
||||||
|
"emails.verification.buttonText": "Potvrdi adresu e-pošte",
|
||||||
"emails.verification.signature": "{{project}} tim",
|
"emails.verification.signature": "{{project}} tim",
|
||||||
"emails.magicSession.subject": "Prijavite se",
|
"emails.magicSession.subject": "Prijavite se",
|
||||||
"emails.magicSession.hello": "Pozdrav,",
|
"emails.magicSession.hello": "Pozdrav,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Slijedite ovu poveznicu za ponovno postavljanje {{project}} lozinke.",
|
"emails.recovery.body": "Slijedite ovu poveznicu za ponovno postavljanje {{project}} lozinke.",
|
||||||
"emails.recovery.footer": "Ako niste zatražili ponovno postavljanje Vaše lozinke, možete zanemariti ovu poruku.",
|
"emails.recovery.footer": "Ako niste zatražili ponovno postavljanje Vaše lozinke, možete zanemariti ovu poruku.",
|
||||||
"emails.recovery.thanks": "Hvala,",
|
"emails.recovery.thanks": "Hvala,",
|
||||||
|
"emails.recovery.buttonText": "Resetiraj lozinku",
|
||||||
"emails.recovery.signature": "{{project}} tim",
|
"emails.recovery.signature": "{{project}} tim",
|
||||||
"emails.invitation.subject": "Pozivnica za %s tim na %s",
|
"emails.invitation.subject": "Pozivnica za %s tim na %s",
|
||||||
"emails.invitation.hello": "Pozdrav,",
|
"emails.invitation.hello": "Pozdrav,",
|
||||||
"emails.invitation.body": "Ova poruka Vam je poslana jer Vas je {{owner}} htio pozvati da postanete član {{team}} tima na {{project}}.",
|
"emails.invitation.body": "Ova poruka Vam je poslana jer Vas je {{owner}} htio pozvati da postanete član {{team}} tima na {{project}}.",
|
||||||
"emails.invitation.footer": "Ukoliko niste zainteresirani, možete zanemariti ovu poruku.",
|
"emails.invitation.footer": "Ukoliko niste zainteresirani, možete zanemariti ovu poruku.",
|
||||||
"emails.invitation.thanks": "Hvala,",
|
"emails.invitation.thanks": "Hvala,",
|
||||||
|
"emails.invitation.buttonText": "Prihvati pozivnicu za {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} tim",
|
"emails.invitation.signature": "{{project}} tim",
|
||||||
"locale.country.unknown": "Nepoznato",
|
"locale.country.unknown": "Nepoznato",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Kattints a linkre, hogy megerősítsd az email címedet.",
|
"emails.verification.body": "Kattints a linkre, hogy megerősítsd az email címedet.",
|
||||||
"emails.verification.footer": "Ha nem te kérted a címed megerősítését, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
"emails.verification.footer": "Ha nem te kérted a címed megerősítését, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
||||||
"emails.verification.thanks": "Köszönettel,",
|
"emails.verification.thanks": "Köszönettel,",
|
||||||
|
"emails.verification.buttonText": "E-mail-cím megerősítése",
|
||||||
"emails.verification.signature": "a {{project}} csapat",
|
"emails.verification.signature": "a {{project}} csapat",
|
||||||
"emails.magicSession.subject": "Bejelentkezés",
|
"emails.magicSession.subject": "Bejelentkezés",
|
||||||
"emails.magicSession.hello": "Szia,",
|
"emails.magicSession.hello": "Szia,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Kattints a linkre a {{project}} jelszavad visszaállításához.",
|
"emails.recovery.body": "Kattints a linkre a {{project}} jelszavad visszaállításához.",
|
||||||
"emails.recovery.footer": "Ha nem te kezdeményezted a jelszavad visszaállítását, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
"emails.recovery.footer": "Ha nem te kezdeményezted a jelszavad visszaállítását, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
||||||
"emails.recovery.thanks": "Köszönettel,",
|
"emails.recovery.thanks": "Köszönettel,",
|
||||||
|
"emails.recovery.buttonText": "Jelszó visszaállítása",
|
||||||
"emails.recovery.signature": "a {{project}} csapat",
|
"emails.recovery.signature": "a {{project}} csapat",
|
||||||
"emails.invitation.subject": "Meghívó a(z) %s csapatba, a(z) %s projektbe",
|
"emails.invitation.subject": "Meghívó a(z) %s csapatba, a(z) %s projektbe",
|
||||||
"emails.invitation.hello": "Szia,",
|
"emails.invitation.hello": "Szia,",
|
||||||
"emails.invitation.body": "Ezt a levelet azért kaptad, mert {{owner}} meghívott, hogy légy a {{team}} csapat tagja a {{project}} projektben.",
|
"emails.invitation.body": "Ezt a levelet azért kaptad, mert {{owner}} meghívott, hogy légy a {{team}} csapat tagja a {{project}} projektben.",
|
||||||
"emails.invitation.footer": "Ha nem érdekel a lehetőség, nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
"emails.invitation.footer": "Ha nem érdekel a lehetőség, nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
||||||
"emails.invitation.thanks": "Köszönettel,",
|
"emails.invitation.thanks": "Köszönettel,",
|
||||||
|
"emails.invitation.buttonText": "Elfogadni meghívást a {{team}-re",
|
||||||
"emails.invitation.signature": "a {{project}} csapat",
|
"emails.invitation.signature": "a {{project}} csapat",
|
||||||
"locale.country.unknown": "Ismeretlen",
|
"locale.country.unknown": "Ismeretlen",
|
||||||
"countries.af": "Afganisztán",
|
"countries.af": "Afganisztán",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Ikuti tautan ini untuk memverifikasi alamat email Anda.",
|
"emails.verification.body": "Ikuti tautan ini untuk memverifikasi alamat email Anda.",
|
||||||
"emails.verification.footer": "Jika Anda tidak meminta untuk memverifikasi alamat email ini, Anda dapat mengabaikan pesan ini.",
|
"emails.verification.footer": "Jika Anda tidak meminta untuk memverifikasi alamat email ini, Anda dapat mengabaikan pesan ini.",
|
||||||
"emails.verification.thanks": "Terima kasih,",
|
"emails.verification.thanks": "Terima kasih,",
|
||||||
|
"emails.verification.buttonText": "Konfirmasi alamat email",
|
||||||
"emails.verification.signature": "Tim {{project}}",
|
"emails.verification.signature": "Tim {{project}}",
|
||||||
"emails.magicSession.subject": "Masuk",
|
"emails.magicSession.subject": "Masuk",
|
||||||
"emails.magicSession.hello": "Hai,",
|
"emails.magicSession.hello": "Hai,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Ikuti tautan ini untuk menyetel ulang kata sandi {{project}} Anda.",
|
"emails.recovery.body": "Ikuti tautan ini untuk menyetel ulang kata sandi {{project}} Anda.",
|
||||||
"emails.recovery.footer": "Jika Anda tidak meminta untuk menyetel ulang kata sandi, Anda dapat mengabaikan pesan ini.",
|
"emails.recovery.footer": "Jika Anda tidak meminta untuk menyetel ulang kata sandi, Anda dapat mengabaikan pesan ini.",
|
||||||
"emails.recovery.thanks": "Terima kasih,",
|
"emails.recovery.thanks": "Terima kasih,",
|
||||||
|
"emails.recovery.buttonText": "Atur ulang kata sandi",
|
||||||
"emails.recovery.signature": "Tim {{project}}",
|
"emails.recovery.signature": "Tim {{project}}",
|
||||||
"emails.invitation.subject": "Undangan ke Tim %s di %s",
|
"emails.invitation.subject": "Undangan ke Tim %s di %s",
|
||||||
"emails.invitation.hello": "Halo,",
|
"emails.invitation.hello": "Halo,",
|
||||||
"emails.invitation.body": "Email ini dikirimkan kepada Anda karena {{owner}} ingin mengundang Anda untuk menjadi anggota tim {{team}} di {{project}}.",
|
"emails.invitation.body": "Email ini dikirimkan kepada Anda karena {{owner}} ingin mengundang Anda untuk menjadi anggota tim {{team}} di {{project}}.",
|
||||||
"emails.invitation.footer": "Jika Anda tidak tertarik, Anda dapat mengabaikan pesan ini.",
|
"emails.invitation.footer": "Jika Anda tidak tertarik, Anda dapat mengabaikan pesan ini.",
|
||||||
"emails.invitation.thanks": "Terima kasih,",
|
"emails.invitation.thanks": "Terima kasih,",
|
||||||
|
"emails.invitation.buttonText": "Terima undangan ke {{team}}",
|
||||||
"emails.invitation.signature": "Tim {{project}}",
|
"emails.invitation.signature": "Tim {{project}}",
|
||||||
"locale.country.unknown": "Tidak diketahui",
|
"locale.country.unknown": "Tidak diketahui",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Clicca questo link per verificare il tuo indirizzo email.",
|
"emails.verification.body": "Clicca questo link per verificare il tuo indirizzo email.",
|
||||||
"emails.verification.footer": "Se non hai richiesto la verifica dell’indirizzo email, puoi ignorare questo messaggio.",
|
"emails.verification.footer": "Se non hai richiesto la verifica dell’indirizzo email, puoi ignorare questo messaggio.",
|
||||||
"emails.verification.thanks": "Grazie,",
|
"emails.verification.thanks": "Grazie,",
|
||||||
|
"emails.verification.buttonText": "Confermare l'indirizzo email",
|
||||||
"emails.verification.signature": "Il team {{project}}",
|
"emails.verification.signature": "Il team {{project}}",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Ciao,",
|
"emails.magicSession.hello": "Ciao,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Clicca questo link per reimpostare la tua password di {{project}}.",
|
"emails.recovery.body": "Clicca questo link per reimpostare la tua password di {{project}}.",
|
||||||
"emails.recovery.footer": "Se non hai richiesto la reimpostazione della password, puoi ignorare questo messaggio.",
|
"emails.recovery.footer": "Se non hai richiesto la reimpostazione della password, puoi ignorare questo messaggio.",
|
||||||
"emails.recovery.thanks": "Grazie,",
|
"emails.recovery.thanks": "Grazie,",
|
||||||
|
"emails.recovery.buttonText": "Reimposta password",
|
||||||
"emails.recovery.signature": "Il team {{project}}",
|
"emails.recovery.signature": "Il team {{project}}",
|
||||||
"emails.invitation.subject": "Invito al Team %s per %s",
|
"emails.invitation.subject": "Invito al Team %s per %s",
|
||||||
"emails.invitation.hello": "Ciao,",
|
"emails.invitation.hello": "Ciao,",
|
||||||
"emails.invitation.body": "Hai ricevuto questa email perché {{owner}} ti ha invitato a diventare un membro del team {{team}} di {{project}}.",
|
"emails.invitation.body": "Hai ricevuto questa email perché {{owner}} ti ha invitato a diventare un membro del team {{team}} di {{project}}.",
|
||||||
"emails.invitation.footer": "Ignora questo messaggio se non sei interessatə.",
|
"emails.invitation.footer": "Ignora questo messaggio se non sei interessatə.",
|
||||||
"emails.invitation.thanks": "Grazie,",
|
"emails.invitation.thanks": "Grazie,",
|
||||||
|
"emails.invitation.buttonText": "Accetta invito a {{team}}",
|
||||||
"emails.invitation.signature": "Il team {{project}}",
|
"emails.invitation.signature": "Il team {{project}}",
|
||||||
"locale.country.unknown": "Sconosciuto",
|
"locale.country.unknown": "Sconosciuto",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "メールアドレスを有効化するためには下記リンクをクリックして下さい。",
|
"emails.verification.body": "メールアドレスを有効化するためには下記リンクをクリックして下さい。",
|
||||||
"emails.verification.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
"emails.verification.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
||||||
"emails.verification.thanks": "ご利用いただきありがとうございます。、",
|
"emails.verification.thanks": "ご利用いただきありがとうございます。、",
|
||||||
|
"emails.verification.buttonText": "メールアドレスを確認する",
|
||||||
"emails.verification.signature": "{{project}}チーム",
|
"emails.verification.signature": "{{project}}チーム",
|
||||||
"emails.magicSession.subject": "ログイン",
|
"emails.magicSession.subject": "ログイン",
|
||||||
"emails.magicSession.hello": "こんにちは、",
|
"emails.magicSession.hello": "こんにちは、",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "パスワードをリセットするためには下記リンクをクリックしてください。",
|
"emails.recovery.body": "パスワードをリセットするためには下記リンクをクリックしてください。",
|
||||||
"emails.recovery.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
"emails.recovery.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
||||||
"emails.recovery.thanks": "ご利用いただきありがとうございます。、",
|
"emails.recovery.thanks": "ご利用いただきありがとうございます。、",
|
||||||
|
"emails.recovery.buttonText": "パスワードをリセット",
|
||||||
"emails.recovery.signature": "{{project}}チーム",
|
"emails.recovery.signature": "{{project}}チーム",
|
||||||
"emails.invitation.subject": "%sチームへの招待が%sから来ました。",
|
"emails.invitation.subject": "%sチームへの招待が%sから来ました。",
|
||||||
"emails.invitation.hello": "こんにちは、",
|
"emails.invitation.hello": "こんにちは、",
|
||||||
"emails.invitation.body": "{{owner}}さんが{{project}}の{{team}}チームにあなたを招待しています。",
|
"emails.invitation.body": "{{owner}}さんが{{project}}の{{team}}チームにあなたを招待しています。",
|
||||||
"emails.invitation.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
"emails.invitation.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
||||||
"emails.invitation.thanks": "ご利用いただきありがとうございます。、",
|
"emails.invitation.thanks": "ご利用いただきありがとうございます。、",
|
||||||
|
"emails.invitation.buttonText": "{{team}}への招待を承諾する",
|
||||||
"emails.invitation.signature": "{{project}}チーム",
|
"emails.invitation.signature": "{{project}}チーム",
|
||||||
"locale.country.unknown": "不明",
|
"locale.country.unknown": "不明",
|
||||||
"countries.af": "アフガニスタン",
|
"countries.af": "アフガニスタン",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Klik link iki kanggo verifikasi alamat email sampeyan.",
|
"emails.verification.body": "Klik link iki kanggo verifikasi alamat email sampeyan.",
|
||||||
"emails.verification.footer": "Yen sampeyan ora njaluk verifikasi alamat iki, sampeyan iso nglirwakake pesen iki.",
|
"emails.verification.footer": "Yen sampeyan ora njaluk verifikasi alamat iki, sampeyan iso nglirwakake pesen iki.",
|
||||||
"emails.verification.thanks": "Matur nuwun,",
|
"emails.verification.thanks": "Matur nuwun,",
|
||||||
|
"emails.verification.buttonText": "Konfirmasi alamat email",
|
||||||
"emails.verification.signature": "Tim {{project}}",
|
"emails.verification.signature": "Tim {{project}}",
|
||||||
"emails.magicSession.subject": "Masuk",
|
"emails.magicSession.subject": "Masuk",
|
||||||
"emails.magicSession.hello": "Hai,",
|
"emails.magicSession.hello": "Hai,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Klik link iki kanggo setel ulang sandi {{project}}.",
|
"emails.recovery.body": "Klik link iki kanggo setel ulang sandi {{project}}.",
|
||||||
"emails.recovery.footer": "Yen sampeyan ora njaluk setel ulang sandi, sampeyan iso nglirwakake pesen iki.",
|
"emails.recovery.footer": "Yen sampeyan ora njaluk setel ulang sandi, sampeyan iso nglirwakake pesen iki.",
|
||||||
"emails.recovery.thanks": "Matur nuwun,",
|
"emails.recovery.thanks": "Matur nuwun,",
|
||||||
|
"emails.recovery.buttonText": "Reset sandhi",
|
||||||
"emails.recovery.signature": "Tim {{project}}",
|
"emails.recovery.signature": "Tim {{project}}",
|
||||||
"emails.invitation.subject": "Undangan ke Tim %s di %s",
|
"emails.invitation.subject": "Undangan ke Tim %s di %s",
|
||||||
"emails.invitation.hello": "Halo,",
|
"emails.invitation.hello": "Halo,",
|
||||||
"emails.invitation.body": "Email iki dikirim menyang sampeyan amarga {{owner}} pengin ngajak sampeyan dadi anggota tim {{team}} di {{project}}.",
|
"emails.invitation.body": "Email iki dikirim menyang sampeyan amarga {{owner}} pengin ngajak sampeyan dadi anggota tim {{team}} di {{project}}.",
|
||||||
"emails.invitation.footer": "Yen sampeyan ora tertarik, sampeyan iso nglirwakake pesen iki.",
|
"emails.invitation.footer": "Yen sampeyan ora tertarik, sampeyan iso nglirwakake pesen iki.",
|
||||||
"emails.invitation.thanks": "Matur nuwun,",
|
"emails.invitation.thanks": "Matur nuwun,",
|
||||||
|
"emails.invitation.buttonText": "Tampa undhangan menyang {{team}}",
|
||||||
"emails.invitation.signature": "Tim {{project}}",
|
"emails.invitation.signature": "Tim {{project}}",
|
||||||
"locale.country.unknown": "Ora dingerteni",
|
"locale.country.unknown": "Ora dingerteni",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸ ಪರಿಶೀಲನೆಗೆ ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
|
"emails.verification.body": "ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸ ಪರಿಶೀಲನೆಗೆ ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
|
||||||
"emails.verification.footer": "ನೀವು ಇಮೇಲ್ ವಿಳಾಸ ಪರಿಶೀಲನೆಗೆ ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
"emails.verification.footer": "ನೀವು ಇಮೇಲ್ ವಿಳಾಸ ಪರಿಶೀಲನೆಗೆ ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
||||||
"emails.verification.thanks": "ಧನ್ಯವಾದಗಳು,",
|
"emails.verification.thanks": "ಧನ್ಯವಾದಗಳು,",
|
||||||
|
"emails.verification.buttonText": "ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ದೃಢೀಕರಿಸಿ",
|
||||||
"emails.verification.signature": "{{project}} ತಂಡ",
|
"emails.verification.signature": "{{project}} ತಂಡ",
|
||||||
"emails.magicSession.subject": "ಲಾಗಿನ್",
|
"emails.magicSession.subject": "ಲಾಗಿನ್",
|
||||||
"emails.magicSession.hello": "ನಮಸ್ಕಾರ,",
|
"emails.magicSession.hello": "ನಮಸ್ಕಾರ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "ನಿಮ್ಮ {{project}} ಗುಪ್ತಪದವನ್ನು ಮರುಹೊಂದಿಸಲು ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
|
"emails.recovery.body": "ನಿಮ್ಮ {{project}} ಗುಪ್ತಪದವನ್ನು ಮರುಹೊಂದಿಸಲು ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
|
||||||
"emails.recovery.footer": "ನೀವು ಗುಪ್ತಪದವನ್ನು ಮರುಹೊಂದಿಸಲು ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
"emails.recovery.footer": "ನೀವು ಗುಪ್ತಪದವನ್ನು ಮರುಹೊಂದಿಸಲು ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
||||||
"emails.recovery.thanks": "ಧನ್ಯವಾದಗಳು,",
|
"emails.recovery.thanks": "ಧನ್ಯವಾದಗಳು,",
|
||||||
|
"emails.recovery.buttonText": "ಗುಪ್ತಪದವನ್ನು ಮರುಸೆಟ್ ಮಾಡಿ",
|
||||||
"emails.recovery.signature": "{{project}} ತಂಡ",
|
"emails.recovery.signature": "{{project}} ತಂಡ",
|
||||||
"emails.invitation.subject": "%s ತಂಡಕ್ಕೆ %s ರಲ್ಲಿ ಆಹ್ವಾನ",
|
"emails.invitation.subject": "%s ತಂಡಕ್ಕೆ %s ರಲ್ಲಿ ಆಹ್ವಾನ",
|
||||||
"emails.invitation.hello": "ನಮಸ್ಕಾರ,",
|
"emails.invitation.hello": "ನಮಸ್ಕಾರ,",
|
||||||
"emails.invitation.body": "ಈ ಇಮೇಲ್ ನಿಮಗೆ ಬಂದಿದೆ ಏಕೆಂದರೆ {{owner}} ನಿಮ್ಮನ್ನು {{team}} ತಂಡದ {{project}}ರಲ್ಲಿ ಸದಸ್ಯ ಆಗಲಿಕ್ಕೆ ಆಹ್ವಾನಿಸಿದ್ದಾರೆ",
|
"emails.invitation.body": "ಈ ಇಮೇಲ್ ನಿಮಗೆ ಬಂದಿದೆ ಏಕೆಂದರೆ {{owner}} ನಿಮ್ಮನ್ನು {{team}} ತಂಡದ {{project}}ರಲ್ಲಿ ಸದಸ್ಯ ಆಗಲಿಕ್ಕೆ ಆಹ್ವಾನಿಸಿದ್ದಾರೆ",
|
||||||
"emails.invitation.footer": "ನಿಮಗೆ ಆಸಕ್ತಿಯಿಲ್ಲದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
"emails.invitation.footer": "ನಿಮಗೆ ಆಸಕ್ತಿಯಿಲ್ಲದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
||||||
"emails.invitation.thanks": "ಧನ್ಯವಾದಗಳು,",
|
"emails.invitation.thanks": "ಧನ್ಯವಾದಗಳು,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} ಗೆ ಆಹ್ವಾನವನ್ನು ಸ್ವೀಕರಿಸಿ",
|
||||||
"emails.invitation.signature": "{{project}} ತಂಡ",
|
"emails.invitation.signature": "{{project}} ತಂಡ",
|
||||||
"locale.country.unknown": "Unknown",
|
"locale.country.unknown": "Unknown",
|
||||||
"countries.af": "ಅಫ್ಘಾನಿಸ್ತಾನ",
|
"countries.af": "ಅಫ್ಘಾನಿಸ್ತಾನ",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "이메일 인증을 위해 링크를 클릭하여주세요.",
|
"emails.verification.body": "이메일 인증을 위해 링크를 클릭하여주세요.",
|
||||||
"emails.verification.footer": "이메일 인증을 부탁하지 않으셨다면 이 메시지를 무시하여주세요.",
|
"emails.verification.footer": "이메일 인증을 부탁하지 않으셨다면 이 메시지를 무시하여주세요.",
|
||||||
"emails.verification.thanks": "감사합니다、",
|
"emails.verification.thanks": "감사합니다、",
|
||||||
|
"emails.verification.buttonText": "이메일 주소를 확인합니다",
|
||||||
"emails.verification.signature": "{{project}} 팀",
|
"emails.verification.signature": "{{project}} 팀",
|
||||||
"emails.magicSession.subject": "로그인",
|
"emails.magicSession.subject": "로그인",
|
||||||
"emails.magicSession.hello": "안녕하세요、",
|
"emails.magicSession.hello": "안녕하세요、",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "{{project}}의 비밀번호 재설정을 위해 링크를 클릭하여주세요.",
|
"emails.recovery.body": "{{project}}의 비밀번호 재설정을 위해 링크를 클릭하여주세요.",
|
||||||
"emails.recovery.footer": "비밀번호 재설정 신청을 하지 않으셨다면 이 메세지를 무시하여주세요.",
|
"emails.recovery.footer": "비밀번호 재설정 신청을 하지 않으셨다면 이 메세지를 무시하여주세요.",
|
||||||
"emails.recovery.thanks": "감사합니다、",
|
"emails.recovery.thanks": "감사합니다、",
|
||||||
|
"emails.recovery.buttonText": "비밀번호 재설정",
|
||||||
"emails.recovery.signature": "{{project}} 팀",
|
"emails.recovery.signature": "{{project}} 팀",
|
||||||
"emails.invitation.subject": "초대장 %s 팀 - %s",
|
"emails.invitation.subject": "초대장 %s 팀 - %s",
|
||||||
"emails.invitation.hello": "안녕하세요、",
|
"emails.invitation.hello": "안녕하세요、",
|
||||||
"emails.invitation.body": "{{owner}}님이 귀하를 {{project}}의 {{team}} 팀으로 초대합니다.",
|
"emails.invitation.body": "{{owner}}님이 귀하를 {{project}}의 {{team}} 팀으로 초대합니다.",
|
||||||
"emails.invitation.footer": "팀에 합류할 의사가 없으시면 이 메세지를 무시하여주세요.",
|
"emails.invitation.footer": "팀에 합류할 의사가 없으시면 이 메세지를 무시하여주세요.",
|
||||||
"emails.invitation.thanks": "감사합니다、",
|
"emails.invitation.thanks": "감사합니다、",
|
||||||
|
"emails.invitation.buttonText": "{{team}} 초대를 수락하기",
|
||||||
"emails.invitation.signature": "{{project}} 팀",
|
"emails.invitation.signature": "{{project}} 팀",
|
||||||
"locale.country.unknown": "알려지지 않은",
|
"locale.country.unknown": "알려지지 않은",
|
||||||
"countries.af": "아프가니스탄",
|
"countries.af": "아프가니스탄",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Sequere hanc nexum ut quin inscriptionem tuum.",
|
"emails.verification.body": "Sequere hanc nexum ut quin inscriptionem tuum.",
|
||||||
"emails.verification.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
|
"emails.verification.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
|
||||||
"emails.verification.thanks": "Gratias,",
|
"emails.verification.thanks": "Gratias,",
|
||||||
|
"emails.verification.buttonText": "Confirma inscriptionem electronicam",
|
||||||
"emails.verification.signature": "{{project}} Team",
|
"emails.verification.signature": "{{project}} Team",
|
||||||
"emails.magicSession.subject": "Log in",
|
"emails.magicSession.subject": "Log in",
|
||||||
"emails.magicSession.hello": "Salve ibi,",
|
"emails.magicSession.hello": "Salve ibi,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Sequere hanc conjunctionem ut recipias project password {{project}}",
|
"emails.recovery.body": "Sequere hanc conjunctionem ut recipias project password {{project}}",
|
||||||
"emails.recovery.footer": "Si tesseram tuam recuperare non petis, nuntium hunc ignorare potes",
|
"emails.recovery.footer": "Si tesseram tuam recuperare non petis, nuntium hunc ignorare potes",
|
||||||
"emails.recovery.thanks": "Gratias,",
|
"emails.recovery.thanks": "Gratias,",
|
||||||
|
"emails.recovery.buttonText": "Reset password",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Invitatio pro %s in quadrigis %s",
|
"emails.invitation.subject": "Invitatio pro %s in quadrigis %s",
|
||||||
"emails.invitation.hello": "Salve ibi,",
|
"emails.invitation.hello": "Salve ibi,",
|
||||||
"emails.invitation.body": "Haec inscriptio ad te missa est quia dominus incepto {{owner}} te invitare vult ut membrum {{team}} quadrigis fias ad {{project}}",
|
"emails.invitation.body": "Haec inscriptio ad te missa est quia dominus incepto {{owner}} te invitare vult ut membrum {{team}} quadrigis fias ad {{project}}",
|
||||||
"emails.invitation.footer": "Si non quaero, potes hunc nuntium ignorare",
|
"emails.invitation.footer": "Si non quaero, potes hunc nuntium ignorare",
|
||||||
"emails.invitation.thanks": "Gratias,",
|
"emails.invitation.thanks": "Gratias,",
|
||||||
|
"emails.invitation.buttonText": "Accipe invitare ad {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Ignotum",
|
"locale.country.unknown": "Ignotum",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Follegt dëse Link fir Är E -Mail Adress z'iwwerpréiwen.",
|
"emails.verification.body": "Follegt dëse Link fir Är E -Mail Adress z'iwwerpréiwen.",
|
||||||
"emails.verification.footer": "Wann Dir net gefrot hutt dës Adress z'iwwerpréiwen, kënnt Dir dëse Message ignoréieren.",
|
"emails.verification.footer": "Wann Dir net gefrot hutt dës Adress z'iwwerpréiwen, kënnt Dir dëse Message ignoréieren.",
|
||||||
"emails.verification.thanks": "Merci,",
|
"emails.verification.thanks": "Merci,",
|
||||||
|
"emails.verification.buttonText": "E-Mail-Adress bestätegen",
|
||||||
"emails.verification.signature": "{{project}} équipe",
|
"emails.verification.signature": "{{project}} équipe",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Hey,",
|
"emails.magicSession.hello": "Hey,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Follegt dëse Link fir Äert {{project}} Passwuert zréckzesetzen.",
|
"emails.recovery.body": "Follegt dëse Link fir Äert {{project}} Passwuert zréckzesetzen.",
|
||||||
"emails.recovery.footer": "Wann Dir net gefrot hutt Äert Passwuert zréckzesetzen, kënnt Dir dëse Message ignoréieren.",
|
"emails.recovery.footer": "Wann Dir net gefrot hutt Äert Passwuert zréckzesetzen, kënnt Dir dëse Message ignoréieren.",
|
||||||
"emails.recovery.thanks": "Merci,",
|
"emails.recovery.thanks": "Merci,",
|
||||||
|
"emails.recovery.buttonText": "Passwuert zrécksetzen",
|
||||||
"emails.recovery.signature": "{{project}} équipe",
|
"emails.recovery.signature": "{{project}} équipe",
|
||||||
"emails.invitation.subject": "Invitatioun un %s équipe bei %s",
|
"emails.invitation.subject": "Invitatioun un %s équipe bei %s",
|
||||||
"emails.invitation.hello": "Hallo,",
|
"emails.invitation.hello": "Hallo,",
|
||||||
"emails.invitation.body": "Dës E -Mail gouf un Iech geschéckt well {{owner}} Iech invitéiere wëllt fir Member vum {{team}} Team bei {{project}} ze ginn.",
|
"emails.invitation.body": "Dës E -Mail gouf un Iech geschéckt well {{owner}} Iech invitéiere wëllt fir Member vum {{team}} Team bei {{project}} ze ginn.",
|
||||||
"emails.invitation.footer": "Wann Dir net interesséiert sidd, kënnt Dir dëse Message ignoréieren.",
|
"emails.invitation.footer": "Wann Dir net interesséiert sidd, kënnt Dir dëse Message ignoréieren.",
|
||||||
"emails.invitation.thanks": "Merci,",
|
"emails.invitation.thanks": "Merci,",
|
||||||
|
"emails.invitation.buttonText": "Invitatioun bei {{team}} akzeptéieren",
|
||||||
"emails.invitation.signature": "{{project}} équipe",
|
"emails.invitation.signature": "{{project}} équipe",
|
||||||
"locale.country.unknown": "Onbekannt",
|
"locale.country.unknown": "Onbekannt",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Spauskite šią nuorodą, kad patvirtintumėte savo el. paštą.",
|
"emails.verification.body": "Spauskite šią nuorodą, kad patvirtintumėte savo el. paštą.",
|
||||||
"emails.verification.footer": "Jei neprašėte patvirtinti šio el. pašto, galite ignoruoti šį pranešimą.",
|
"emails.verification.footer": "Jei neprašėte patvirtinti šio el. pašto, galite ignoruoti šį pranešimą.",
|
||||||
"emails.verification.thanks": "Ačiū,",
|
"emails.verification.thanks": "Ačiū,",
|
||||||
|
"emails.verification.buttonText": "Patvirtinti el. pašto adresą",
|
||||||
"emails.verification.signature": "{{project}} komanda",
|
"emails.verification.signature": "{{project}} komanda",
|
||||||
"emails.magicSession.subject": "Prisijungti",
|
"emails.magicSession.subject": "Prisijungti",
|
||||||
"emails.magicSession.hello": "Labas,",
|
"emails.magicSession.hello": "Labas,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Spauskite šią nuorodą, kad atkurtumėte projekto {{project}} slaptažodį.",
|
"emails.recovery.body": "Spauskite šią nuorodą, kad atkurtumėte projekto {{project}} slaptažodį.",
|
||||||
"emails.recovery.footer": "Jei neprašėte atkurti savo slaptažodzio, galite ignoruoti šį pranešimą.",
|
"emails.recovery.footer": "Jei neprašėte atkurti savo slaptažodzio, galite ignoruoti šį pranešimą.",
|
||||||
"emails.recovery.thanks": "Ačiū,",
|
"emails.recovery.thanks": "Ačiū,",
|
||||||
|
"emails.recovery.buttonText": "Atstatyti slaptažodį",
|
||||||
"emails.recovery.signature": "{{project}} komanda",
|
"emails.recovery.signature": "{{project}} komanda",
|
||||||
"emails.invitation.subject": "Pakvietimas į %s komandą %s projekte",
|
"emails.invitation.subject": "Pakvietimas į %s komandą %s projekte",
|
||||||
"emails.invitation.hello": "Labas,",
|
"emails.invitation.hello": "Labas,",
|
||||||
"emails.invitation.body": "Šis el. laiškas buvo atsiųstas jums, nes {{owner}} norėjo jus pakviesti tapti projekto {{project}} dalimi {{team}} komandoje.",
|
"emails.invitation.body": "Šis el. laiškas buvo atsiųstas jums, nes {{owner}} norėjo jus pakviesti tapti projekto {{project}} dalimi {{team}} komandoje.",
|
||||||
"emails.invitation.footer": "Jei jūsų tai nedomina, galite ignoruoti šį pranešimą.",
|
"emails.invitation.footer": "Jei jūsų tai nedomina, galite ignoruoti šį pranešimą.",
|
||||||
"emails.invitation.thanks": "Ačiū,",
|
"emails.invitation.thanks": "Ačiū,",
|
||||||
|
"emails.invitation.buttonText": "Priimti kvietimą į {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} komanda",
|
"emails.invitation.signature": "{{project}} komanda",
|
||||||
"locale.country.unknown": "Nežinoma",
|
"locale.country.unknown": "Nežinoma",
|
||||||
"countries.af": "Afganistanas",
|
"countries.af": "Afganistanas",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Sekojiet saitei, lai apstiprinātu savu e-pasta adresi.",
|
"emails.verification.body": "Sekojiet saitei, lai apstiprinātu savu e-pasta adresi.",
|
||||||
"emails.verification.footer": "Ja Jūs nepieprasījāt šīs adreses apstiprinājumu, lūdzu, ignorējiet šo ziņu.",
|
"emails.verification.footer": "Ja Jūs nepieprasījāt šīs adreses apstiprinājumu, lūdzu, ignorējiet šo ziņu.",
|
||||||
"emails.verification.thanks": "Paldies,",
|
"emails.verification.thanks": "Paldies,",
|
||||||
|
"emails.verification.buttonText": "Apstiprināt e-pasta adresi",
|
||||||
"emails.verification.signature": "{{project}} komanda",
|
"emails.verification.signature": "{{project}} komanda",
|
||||||
"emails.magicSession.subject": "Ieiet",
|
"emails.magicSession.subject": "Ieiet",
|
||||||
"emails.magicSession.hello": "Sveicināti,",
|
"emails.magicSession.hello": "Sveicināti,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Sekojiet saitei, lai atjauninātu {{project}} paroli.",
|
"emails.recovery.body": "Sekojiet saitei, lai atjauninātu {{project}} paroli.",
|
||||||
"emails.recovery.footer": "Ja Jūs nepieprasījāt paroles atjaunināšanu, lūdzu, ignorējiet šo ziņu.",
|
"emails.recovery.footer": "Ja Jūs nepieprasījāt paroles atjaunināšanu, lūdzu, ignorējiet šo ziņu.",
|
||||||
"emails.recovery.thanks": "Paldies,",
|
"emails.recovery.thanks": "Paldies,",
|
||||||
|
"emails.recovery.buttonText": "Atiestatīt paroli",
|
||||||
"emails.recovery.signature": "{{project}} komanda",
|
"emails.recovery.signature": "{{project}} komanda",
|
||||||
"emails.invitation.subject": "Ielūgums piebiedroties %s komandai %s projektā.",
|
"emails.invitation.subject": "Ielūgums piebiedroties %s komandai %s projektā.",
|
||||||
"emails.invitation.hello": "Labdien,",
|
"emails.invitation.hello": "Labdien,",
|
||||||
"emails.invitation.body": "Šis e-pasts tika nosūtīts Jums, jo {{owner}} vēlējās Jūs ielūgt kļūt par {{team}} komandas biedru {{project}} projektā.",
|
"emails.invitation.body": "Šis e-pasts tika nosūtīts Jums, jo {{owner}} vēlējās Jūs ielūgt kļūt par {{team}} komandas biedru {{project}} projektā.",
|
||||||
"emails.invitation.footer": "Ja Jūs neesat ieinteresēts, lūdzu, ignorējiet šo ziņu.",
|
"emails.invitation.footer": "Ja Jūs neesat ieinteresēts, lūdzu, ignorējiet šo ziņu.",
|
||||||
"emails.invitation.thanks": "Paldies,",
|
"emails.invitation.thanks": "Paldies,",
|
||||||
|
"emails.invitation.buttonText": "Pieņemt ielūgumu uz {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} komanda",
|
"emails.invitation.signature": "{{project}} komanda",
|
||||||
"locale.country.unknown": "Nav zināms",
|
"locale.country.unknown": "Nav zināms",
|
||||||
"countries.af": "Afganistāna",
|
"countries.af": "Afganistāna",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുന്നതിനായി ഈ ലിങ്ക് പിന്തുടരുക.",
|
"emails.verification.body": "നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുന്നതിനായി ഈ ലിങ്ക് പിന്തുടരുക.",
|
||||||
"emails.verification.footer": "ഈ വിലാസം സ്ഥിരീകരിക്കാന് നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, നിങ്ങൾക്ക് ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
"emails.verification.footer": "ഈ വിലാസം സ്ഥിരീകരിക്കാന് നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, നിങ്ങൾക്ക് ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
||||||
"emails.verification.thanks": "നന്ദി,",
|
"emails.verification.thanks": "നന്ദി,",
|
||||||
|
"emails.verification.buttonText": "ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുക",
|
||||||
"emails.verification.signature": "{{project}} ടീം",
|
"emails.verification.signature": "{{project}} ടീം",
|
||||||
"emails.magicSession.subject": "ലോഗിൻ",
|
"emails.magicSession.subject": "ലോഗിൻ",
|
||||||
"emails.magicSession.hello": "നമസ്കാരം,",
|
"emails.magicSession.hello": "നമസ്കാരം,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "നിങ്ങളുടെ {{Project}} രഹസ്യവാക്ക് പുനക്രമീകരിക്കുന്നതിന് ഈ ലിങ്ക് പിന്തുടരുക.",
|
"emails.recovery.body": "നിങ്ങളുടെ {{Project}} രഹസ്യവാക്ക് പുനക്രമീകരിക്കുന്നതിന് ഈ ലിങ്ക് പിന്തുടരുക.",
|
||||||
"emails.recovery.footer": "നിങ്ങളുടെ രഹസ്യവാക്ക് പുനക്രമീകരിക്കാന് നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
"emails.recovery.footer": "നിങ്ങളുടെ രഹസ്യവാക്ക് പുനക്രമീകരിക്കാന് നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
||||||
"emails.recovery.thanks": "നന്ദി,",
|
"emails.recovery.thanks": "നന്ദി,",
|
||||||
|
"emails.recovery.buttonText": "പാസ്വേഡ് റീസെറ്റ് ചെയ്യുക",
|
||||||
"emails.recovery.signature": "{{project}} ടീം",
|
"emails.recovery.signature": "{{project}} ടീം",
|
||||||
"emails.invitation.subject": "%s -ലെ %s ടീമിലേക്കുള്ള ക്ഷണം",
|
"emails.invitation.subject": "%s -ലെ %s ടീമിലേക്കുള്ള ക്ഷണം",
|
||||||
"emails.invitation.hello": "നമസ്കാരം,",
|
"emails.invitation.hello": "നമസ്കാരം,",
|
||||||
"emails.invitation.body": "നിങ്ങളെ {{project}} -ലെ {{team}} ടീമിലെ അംഗമാകുവാന് ക്ഷണിക്കാൻ {{owner}} ആഗ്രഹിക്കുന്നതിനാലാണ് ഈ മെയിൽ നിങ്ങൾക്ക് അയക്കുന്നത്.",
|
"emails.invitation.body": "നിങ്ങളെ {{project}} -ലെ {{team}} ടീമിലെ അംഗമാകുവാന് ക്ഷണിക്കാൻ {{owner}} ആഗ്രഹിക്കുന്നതിനാലാണ് ഈ മെയിൽ നിങ്ങൾക്ക് അയക്കുന്നത്.",
|
||||||
"emails.invitation.footer": "നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
"emails.invitation.footer": "നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
||||||
"emails.invitation.thanks": "നന്ദി,",
|
"emails.invitation.thanks": "നന്ദി,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} ലേക്കുള്ള ക്ഷണം സ്വീകരിക്കുക",
|
||||||
"emails.invitation.signature": "{{project}} ടീം",
|
"emails.invitation.signature": "{{project}} ടീം",
|
||||||
"locale.country.unknown": "Unknown",
|
"locale.country.unknown": "Unknown",
|
||||||
"countries.af": "അഫ്ഗാനിസ്ഥാൻ",
|
"countries.af": "അഫ്ഗാനിസ്ഥാൻ",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "आपला ईमेल पत्ता सत्यापित करण्यासाठी या दुव्याचे अनुसरण करा.",
|
"emails.verification.body": "आपला ईमेल पत्ता सत्यापित करण्यासाठी या दुव्याचे अनुसरण करा.",
|
||||||
"emails.verification.footer": "आपण या पत्त्याची पडताळणी करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
"emails.verification.footer": "आपण या पत्त्याची पडताळणी करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
||||||
"emails.verification.thanks": "धन्यवाद,",
|
"emails.verification.thanks": "धन्यवाद,",
|
||||||
|
"emails.verification.buttonText": "ईमेल पत्ता सत्यापित करा",
|
||||||
"emails.verification.signature": "{{project}} संघ",
|
"emails.verification.signature": "{{project}} संघ",
|
||||||
"emails.magicSession.subject": "लॉगिन करा",
|
"emails.magicSession.subject": "लॉगिन करा",
|
||||||
"emails.magicSession.hello": "नमस्कार ,",
|
"emails.magicSession.hello": "नमस्कार ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "आपला {{project}}चे पासवर्ड रीसेट करण्यासाठी या लिंकचे अनुसरण करा",
|
"emails.recovery.body": "आपला {{project}}चे पासवर्ड रीसेट करण्यासाठी या लिंकचे अनुसरण करा",
|
||||||
"emails.recovery.footer": "आपण आपला पासवर्ड रीसेट करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
"emails.recovery.footer": "आपण आपला पासवर्ड रीसेट करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
||||||
"emails.recovery.thanks": "धन्यवाद,",
|
"emails.recovery.thanks": "धन्यवाद,",
|
||||||
|
"emails.recovery.buttonText": "पासवर्ड रीसेट करा",
|
||||||
"emails.recovery.signature": "{{project}} संघ",
|
"emails.recovery.signature": "{{project}} संघ",
|
||||||
"emails.invitation.subject": "%s संघ %s येथे सामील होण्यासाठी आमंत्रण",
|
"emails.invitation.subject": "%s संघ %s येथे सामील होण्यासाठी आमंत्रण",
|
||||||
"emails.invitation.hello": "नमस्कार,",
|
"emails.invitation.hello": "नमस्कार,",
|
||||||
"emails.invitation.body": "हा मेल तुम्हाला पाठवला होता कारण {{owner}} तुम्हाला {{project}} येथे {{team}} टीमचे सदस्य होण्यासाठी आमंत्रित करू इच्छित होते.",
|
"emails.invitation.body": "हा मेल तुम्हाला पाठवला होता कारण {{owner}} तुम्हाला {{project}} येथे {{team}} टीमचे सदस्य होण्यासाठी आमंत्रित करू इच्छित होते.",
|
||||||
"emails.invitation.footer": "आपल्याला स्वारस्य नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
"emails.invitation.footer": "आपल्याला स्वारस्य नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
||||||
"emails.invitation.thanks": "धन्यवाद,",
|
"emails.invitation.thanks": "धन्यवाद,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} साठी आमंत्रण स्वीकारा",
|
||||||
"emails.invitation.signature": "{{project}} संघ",
|
"emails.invitation.signature": "{{project}} संघ",
|
||||||
"locale.country.unknown": "अज्ञात",
|
"locale.country.unknown": "अज्ञात",
|
||||||
"countries.af": "अफगानिस्तान",
|
"countries.af": "अफगानिस्तान",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Tekan pautan ini untuk mengesahkan alamat email anda.",
|
"emails.verification.body": "Tekan pautan ini untuk mengesahkan alamat email anda.",
|
||||||
"emails.verification.footer": "Sekiranya anda tidak membuat permintaan untuk mengesahkan email ini, sila abaikan mesej ini.",
|
"emails.verification.footer": "Sekiranya anda tidak membuat permintaan untuk mengesahkan email ini, sila abaikan mesej ini.",
|
||||||
"emails.verification.thanks": "Terima kasih,",
|
"emails.verification.thanks": "Terima kasih,",
|
||||||
|
"emails.verification.buttonText": "Sahkan alamat email",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "Log masuk",
|
"emails.magicSession.subject": "Log masuk",
|
||||||
"emails.magicSession.hello": "Hey,",
|
"emails.magicSession.hello": "Hey,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Tekan pautan ini untuk menetapkan semula kata laluan {{project}}.",
|
"emails.recovery.body": "Tekan pautan ini untuk menetapkan semula kata laluan {{project}}.",
|
||||||
"emails.recovery.footer": "Sekiranya anda tidak membuat permintaan menetap semula kata laluan, sila abaikan mesej ini.",
|
"emails.recovery.footer": "Sekiranya anda tidak membuat permintaan menetap semula kata laluan, sila abaikan mesej ini.",
|
||||||
"emails.recovery.thanks": "Terima kasih,",
|
"emails.recovery.thanks": "Terima kasih,",
|
||||||
|
"emails.recovery.buttonText": "Tetapkan semula kata laluan",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Jemputan ke pasukan %s di %s",
|
"emails.invitation.subject": "Jemputan ke pasukan %s di %s",
|
||||||
"emails.invitation.hello": "Hello,",
|
"emails.invitation.hello": "Hello,",
|
||||||
"emails.invitation.body": "Anda menerima mel ini kerana {{owner}} ingin menjemput anda untuk menjadi ahli pasukan {{team}} di {{project}}.",
|
"emails.invitation.body": "Anda menerima mel ini kerana {{owner}} ingin menjemput anda untuk menjadi ahli pasukan {{team}} di {{project}}.",
|
||||||
"emails.invitation.footer": "Sekiranya anda tidak berminat, sila abaikan mesej ini.",
|
"emails.invitation.footer": "Sekiranya anda tidak berminat, sila abaikan mesej ini.",
|
||||||
"emails.invitation.thanks": "Terima kasih,",
|
"emails.invitation.thanks": "Terima kasih,",
|
||||||
|
"emails.invitation.buttonText": "Terima jemputan ke {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Tidak Diketahui",
|
"locale.country.unknown": "Tidak Diketahui",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Følg denne lenken for å bekrefte din e-postadresse.",
|
"emails.verification.body": "Følg denne lenken for å bekrefte din e-postadresse.",
|
||||||
"emails.verification.footer": "Dersom du ikke ba om å bekrefte e-postadressen, kan du se bort fra denne meldingen.",
|
"emails.verification.footer": "Dersom du ikke ba om å bekrefte e-postadressen, kan du se bort fra denne meldingen.",
|
||||||
"emails.verification.thanks": "Takk,",
|
"emails.verification.thanks": "Takk,",
|
||||||
|
"emails.verification.buttonText": "Bekreft e-postadresse",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "Pålogging",
|
"emails.magicSession.subject": "Pålogging",
|
||||||
"emails.magicSession.hello": "Hei,",
|
"emails.magicSession.hello": "Hei,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Følg denne lenken for å nullstille ditt {{project}} passord.",
|
"emails.recovery.body": "Følg denne lenken for å nullstille ditt {{project}} passord.",
|
||||||
"emails.recovery.footer": "Dersom du ikke ba om å nullstille passordet ditt, kan du se bort fra denne meldingen.",
|
"emails.recovery.footer": "Dersom du ikke ba om å nullstille passordet ditt, kan du se bort fra denne meldingen.",
|
||||||
"emails.recovery.thanks": "Takk,",
|
"emails.recovery.thanks": "Takk,",
|
||||||
|
"emails.recovery.buttonText": "Tilbakestill passord",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Invitasjon til %s Team ved %s",
|
"emails.invitation.subject": "Invitasjon til %s Team ved %s",
|
||||||
"emails.invitation.hello": "Hei,",
|
"emails.invitation.hello": "Hei,",
|
||||||
"emails.invitation.body": "Denne meldingen ble sendt til deg fordi {{owner}} ønsket å invitere deg til å bli medlem av {{team}} team ved {{project}}.",
|
"emails.invitation.body": "Denne meldingen ble sendt til deg fordi {{owner}} ønsket å invitere deg til å bli medlem av {{team}} team ved {{project}}.",
|
||||||
"emails.invitation.footer": "Dersom du ikke er interessert, kan du se bort fra denne meldingen.",
|
"emails.invitation.footer": "Dersom du ikke er interessert, kan du se bort fra denne meldingen.",
|
||||||
"emails.invitation.thanks": "Takk,",
|
"emails.invitation.thanks": "Takk,",
|
||||||
|
"emails.invitation.buttonText": "Godta invitasjon til {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Ukjent",
|
"locale.country.unknown": "Ukjent",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "इमेल ठेगाना प्रमाणित गर्नको लागी यो लिंकमा जानुहोस।",
|
"emails.verification.body": "इमेल ठेगाना प्रमाणित गर्नको लागी यो लिंकमा जानुहोस।",
|
||||||
"emails.verification.footer": "यदि तपाइँले आफ्नो खाता प्रमाणित गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
|
"emails.verification.footer": "यदि तपाइँले आफ्नो खाता प्रमाणित गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
|
||||||
"emails.verification.thanks": "धन्यवाद,",
|
"emails.verification.thanks": "धन्यवाद,",
|
||||||
|
"emails.verification.buttonText": "इमेल ठेगाना पुष्टि गर्नुहोस्",
|
||||||
"emails.verification.signature": "{{project}} समूह",
|
"emails.verification.signature": "{{project}} समूह",
|
||||||
"emails.magicSession.subject": "लगइन",
|
"emails.magicSession.subject": "लगइन",
|
||||||
"emails.magicSession.hello": "नमस्ते,",
|
"emails.magicSession.hello": "नमस्ते,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "{{project}}को पासवर्ड रिसेट गर्नको लागी यो लिंकमा जानुहोस।",
|
"emails.recovery.body": "{{project}}को पासवर्ड रिसेट गर्नको लागी यो लिंकमा जानुहोस।",
|
||||||
"emails.recovery.footer": "यदि तपाइँले आफ्नो पासवर्ड रिसेट गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
|
"emails.recovery.footer": "यदि तपाइँले आफ्नो पासवर्ड रिसेट गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
|
||||||
"emails.recovery.thanks": "धन्यवाद,",
|
"emails.recovery.thanks": "धन्यवाद,",
|
||||||
|
"emails.recovery.buttonText": "रिसेट पासवर्ड",
|
||||||
"emails.recovery.signature": "{{project}} समूह",
|
"emails.recovery.signature": "{{project}} समूह",
|
||||||
"emails.invitation.subject": "%s समूहको लागि %s मा निमन्त्रणा",
|
"emails.invitation.subject": "%s समूहको लागि %s मा निमन्त्रणा",
|
||||||
"emails.invitation.hello": "नमस्ते,",
|
"emails.invitation.hello": "नमस्ते,",
|
||||||
"emails.invitation.body": "{{owner}}ले तपाइँलाई {{project}}मा {{team}}को सदस्य बन्न आमन्त्रित गर्न चाहनु भएको छ। त्येसैले तपाइँलाई यो सन्देश पठाइएको हो।",
|
"emails.invitation.body": "{{owner}}ले तपाइँलाई {{project}}मा {{team}}को सदस्य बन्न आमन्त्रित गर्न चाहनु भएको छ। त्येसैले तपाइँलाई यो सन्देश पठाइएको हो।",
|
||||||
"emails.invitation.footer": "यदि तपाइँ इच्छुक हुनुहुन्न भने, तपाइँले यो सन्देशलाई बेवास्ता गर्न सक्नुहुन्छ।",
|
"emails.invitation.footer": "यदि तपाइँ इच्छुक हुनुहुन्न भने, तपाइँले यो सन्देशलाई बेवास्ता गर्न सक्नुहुन्छ।",
|
||||||
"emails.invitation.thanks": "धन्यवाद,",
|
"emails.invitation.thanks": "धन्यवाद,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} मा निमन्त्रणा स्वीकार गर्नुहोस्",
|
||||||
"emails.invitation.signature": "{{project}} समूह",
|
"emails.invitation.signature": "{{project}} समूह",
|
||||||
"locale.country.unknown": "अज्ञात",
|
"locale.country.unknown": "अज्ञात",
|
||||||
"countries.af": "अफगानिस्तान",
|
"countries.af": "अफगानिस्तान",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Volg deze link om uw e-mail te verifieren",
|
"emails.verification.body": "Volg deze link om uw e-mail te verifieren",
|
||||||
"emails.verification.footer": "Als u geen aanvraag voor verificatie heeft gemaakt, kan u deze mail negeren",
|
"emails.verification.footer": "Als u geen aanvraag voor verificatie heeft gemaakt, kan u deze mail negeren",
|
||||||
"emails.verification.thanks": "Bedankt,",
|
"emails.verification.thanks": "Bedankt,",
|
||||||
|
"emails.verification.buttonText": "Bevestig e-mailadres",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Hoi,",
|
"emails.magicSession.hello": "Hoi,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Volg deze link om het wachtwoord van uw project {{project}} te wijzigen",
|
"emails.recovery.body": "Volg deze link om het wachtwoord van uw project {{project}} te wijzigen",
|
||||||
"emails.recovery.footer": "Als u geen aanvraag heeft gemaakt om uw wachtwoord te wijzigen, kan u deze mail negeren",
|
"emails.recovery.footer": "Als u geen aanvraag heeft gemaakt om uw wachtwoord te wijzigen, kan u deze mail negeren",
|
||||||
"emails.recovery.thanks": "Bedankt,",
|
"emails.recovery.thanks": "Bedankt,",
|
||||||
|
"emails.recovery.buttonText": "Wachtwoord opnieuw instellen",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Uitnodiging van %s Team uit %s",
|
"emails.invitation.subject": "Uitnodiging van %s Team uit %s",
|
||||||
"emails.invitation.hello": "Hallo,",
|
"emails.invitation.hello": "Hallo,",
|
||||||
"emails.invitation.body": "U ontvangt deze mail want u was uitgenodig door {{owner}} om lid van het {{team}} team te worden in {{project}} ",
|
"emails.invitation.body": "U ontvangt deze mail want u was uitgenodig door {{owner}} om lid van het {{team}} team te worden in {{project}} ",
|
||||||
"emails.invitation.footer": "Als u niet geintereseerd bent, kan u deze mail negeren.",
|
"emails.invitation.footer": "Als u niet geintereseerd bent, kan u deze mail negeren.",
|
||||||
"emails.invitation.thanks": "Bedankt,",
|
"emails.invitation.thanks": "Bedankt,",
|
||||||
|
"emails.invitation.buttonText": "Uitnodiging voor {{team}} accepteren",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Onbekend",
|
"locale.country.unknown": "Onbekend",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Følg denne lenkja for å bekrefta din e-postadresse.",
|
"emails.verification.body": "Følg denne lenkja for å bekrefta din e-postadresse.",
|
||||||
"emails.verification.footer": "Om du ikkje bad om å bekrefta e-postadressa, kan du ignorera denne meldinga.",
|
"emails.verification.footer": "Om du ikkje bad om å bekrefta e-postadressa, kan du ignorera denne meldinga.",
|
||||||
"emails.verification.thanks": "Takk,",
|
"emails.verification.thanks": "Takk,",
|
||||||
|
"emails.verification.buttonText": "Stadfest e-postadresse",
|
||||||
"emails.verification.signature": "{{project}} team",
|
"emails.verification.signature": "{{project}} team",
|
||||||
"emails.magicSession.subject": "Pålogging",
|
"emails.magicSession.subject": "Pålogging",
|
||||||
"emails.magicSession.hello": "Hei,",
|
"emails.magicSession.hello": "Hei,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Følg denne lenkja for å nullstilla ditt {{project}} passord.",
|
"emails.recovery.body": "Følg denne lenkja for å nullstilla ditt {{project}} passord.",
|
||||||
"emails.recovery.footer": "Om du ikkje ba om å nullstilla passordet ditt, kan du ignorera denne meldinga.",
|
"emails.recovery.footer": "Om du ikkje ba om å nullstilla passordet ditt, kan du ignorera denne meldinga.",
|
||||||
"emails.recovery.thanks": "Takk,",
|
"emails.recovery.thanks": "Takk,",
|
||||||
|
"emails.recovery.buttonText": "Nullstill passord",
|
||||||
"emails.recovery.signature": "{{project}} team",
|
"emails.recovery.signature": "{{project}} team",
|
||||||
"emails.invitation.subject": "Innbyding til %s Team ved %s",
|
"emails.invitation.subject": "Innbyding til %s Team ved %s",
|
||||||
"emails.invitation.hello": "Hallo,",
|
"emails.invitation.hello": "Hallo,",
|
||||||
"emails.invitation.body": "Denne meldinga ble sendt til deg fordi {{owner}} ynskja å invitera deg til å bli medlem av {{team}} team i {{project}}.",
|
"emails.invitation.body": "Denne meldinga ble sendt til deg fordi {{owner}} ynskja å invitera deg til å bli medlem av {{team}} team i {{project}}.",
|
||||||
"emails.invitation.footer": "Om du ikkje er interessert, kan du ignorera denne meldinga.",
|
"emails.invitation.footer": "Om du ikkje er interessert, kan du ignorera denne meldinga.",
|
||||||
"emails.invitation.thanks": "Takk,",
|
"emails.invitation.thanks": "Takk,",
|
||||||
|
"emails.invitation.buttonText": "Godta invitasjon til {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} team",
|
"emails.invitation.signature": "{{project}} team",
|
||||||
"locale.country.unknown": "Ukjend",
|
"locale.country.unknown": "Ukjend",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ଆପଣଙ୍କର ଇମେଲ୍ ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ |",
|
"emails.verification.body": "ଆପଣଙ୍କର ଇମେଲ୍ ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ |",
|
||||||
"emails.verification.footer": "ଯଦି ଆପଣ ଏହି ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
|
"emails.verification.footer": "ଯଦି ଆପଣ ଏହି ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
|
||||||
"emails.verification.thanks": "ଧନ୍ୟବାଦ,",
|
"emails.verification.thanks": "ଧନ୍ୟବାଦ,",
|
||||||
|
"emails.verification.buttonText": "ଇମେଲ ଠିକଣା ନିଶ୍ଚିତ କରନ୍ତୁ",
|
||||||
"emails.verification.signature": "{{project}} ଦଳ",
|
"emails.verification.signature": "{{project}} ଦଳ",
|
||||||
"emails.magicSession.subject": "ଲଗଇନ୍ କରନ୍ତୁ",
|
"emails.magicSession.subject": "ଲଗଇନ୍ କରନ୍ତୁ",
|
||||||
"emails.magicSession.hello": "ନମସ୍କାର,",
|
"emails.magicSession.hello": "ନମସ୍କାର,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "ଆପଣଙ୍କର {{project}} ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ ଏହି ଲିଙ୍କକୁ ଅନୁସରଣ କରନ୍ତୁ |",
|
"emails.recovery.body": "ଆପଣଙ୍କର {{project}} ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ ଏହି ଲିଙ୍କକୁ ଅନୁସରଣ କରନ୍ତୁ |",
|
||||||
"emails.recovery.footer": "ଯଦି ଆପଣ ଆପଣଙ୍କର ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
|
"emails.recovery.footer": "ଯଦି ଆପଣ ଆପଣଙ୍କର ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
|
||||||
"emails.recovery.thanks": "ଧନ୍ୟବାଦ,",
|
"emails.recovery.thanks": "ଧନ୍ୟବାଦ,",
|
||||||
|
"emails.recovery.buttonText": "ପାସୱାର୍ଡ ପୁନଃସେଟ୍ କରନ୍ତୁ",
|
||||||
"emails.recovery.signature": "{{project}} ଦଳ",
|
"emails.recovery.signature": "{{project}} ଦଳ",
|
||||||
"emails.invitation.subject": "%s ରେ %s ଦଳକୁ ନିମନ୍ତ୍ରଣ |",
|
"emails.invitation.subject": "%s ରେ %s ଦଳକୁ ନିମନ୍ତ୍ରଣ |",
|
||||||
"emails.invitation.hello": "ନମସ୍କାର,",
|
"emails.invitation.hello": "ନମସ୍କାର,",
|
||||||
"emails.invitation.body": "ଏହି ମେଲ୍ ଆପଣଙ୍କୁ ପଠାଯାଇଥିଲା କାରଣ {{owner}} ଆପଣଙ୍କୁ {{project} ରେ {{team}} ଦଳର ସଦସ୍ୟ ହେବାକୁ ଆମନ୍ତ୍ରଣ କରିବାକୁ ଚାହୁଁଥିଲେ |",
|
"emails.invitation.body": "ଏହି ମେଲ୍ ଆପଣଙ୍କୁ ପଠାଯାଇଥିଲା କାରଣ {{owner}} ଆପଣଙ୍କୁ {{project} ରେ {{team}} ଦଳର ସଦସ୍ୟ ହେବାକୁ ଆମନ୍ତ୍ରଣ କରିବାକୁ ଚାହୁଁଥିଲେ |",
|
||||||
"emails.invitation.footer": "ଯଦି ଆପଣ ଆଗ୍ରହୀ ନୁହଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଅଣଦେଖା କରିପାରିବେ |",
|
"emails.invitation.footer": "ଯଦି ଆପଣ ଆଗ୍ରହୀ ନୁହଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଅଣଦେଖା କରିପାରିବେ |",
|
||||||
"emails.invitation.thanks": "ଧନ୍ୟବାଦ,",
|
"emails.invitation.thanks": "ଧନ୍ୟବାଦ,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} ପାଇଁ ଆମନ୍ତ୍ରଣ ଗ୍ରହଣ କରନ୍ତୁ",
|
||||||
"emails.invitation.signature": "{{project}} ଦଳ",
|
"emails.invitation.signature": "{{project}} ଦଳ",
|
||||||
"locale.country.unknown": "ଅଜ୍ଞାତ",
|
"locale.country.unknown": "ଅଜ୍ଞାତ",
|
||||||
"countries.af": "ଆଫଗାନିସ୍ତାନ",
|
"countries.af": "ଆଫଗାନିସ୍ତାନ",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Przejdź do tego linku, aby zweryfikować swój adres e-mail.",
|
"emails.verification.body": "Przejdź do tego linku, aby zweryfikować swój adres e-mail.",
|
||||||
"emails.verification.footer": "Jeśli to nie Ty prosiłeś o zweryfikowanie tego adresu, zignoruj tę wiadomość.",
|
"emails.verification.footer": "Jeśli to nie Ty prosiłeś o zweryfikowanie tego adresu, zignoruj tę wiadomość.",
|
||||||
"emails.verification.thanks": "Dziękujemy,",
|
"emails.verification.thanks": "Dziękujemy,",
|
||||||
|
"emails.verification.buttonText": "Potwierdź adres e-mail",
|
||||||
"emails.verification.signature": "Zespół {{project}}",
|
"emails.verification.signature": "Zespół {{project}}",
|
||||||
"emails.magicSession.subject": "Logowanie",
|
"emails.magicSession.subject": "Logowanie",
|
||||||
"emails.magicSession.hello": "Cześć,",
|
"emails.magicSession.hello": "Cześć,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Przejdź do tego linku, aby zresetować hasło dla {{project}}.",
|
"emails.recovery.body": "Przejdź do tego linku, aby zresetować hasło dla {{project}}.",
|
||||||
"emails.recovery.footer": "Jeśli to nie Ty prosiłeś o zresetowanie swojego hasła, zignoruj tę wiadomość.",
|
"emails.recovery.footer": "Jeśli to nie Ty prosiłeś o zresetowanie swojego hasła, zignoruj tę wiadomość.",
|
||||||
"emails.recovery.thanks": "Dziękujemy,",
|
"emails.recovery.thanks": "Dziękujemy,",
|
||||||
|
"emails.recovery.buttonText": "Zresetuj hasło",
|
||||||
"emails.recovery.signature": "Zespół {{project}}",
|
"emails.recovery.signature": "Zespół {{project}}",
|
||||||
"emails.invitation.subject": "Zaproszenie do zespołu %s w %s",
|
"emails.invitation.subject": "Zaproszenie do zespołu %s w %s",
|
||||||
"emails.invitation.hello": "Cześć,",
|
"emails.invitation.hello": "Cześć,",
|
||||||
"emails.invitation.body": "Otrzymujesz tę wiadomość, ponieważ {{owner}} zaprasza Cię do grona członków zespołu {{team}} w projekcie {{project}}.",
|
"emails.invitation.body": "Otrzymujesz tę wiadomość, ponieważ {{owner}} zaprasza Cię do grona członków zespołu {{team}} w projekcie {{project}}.",
|
||||||
"emails.invitation.footer": "Jeśli nie jesteś zainteresowany, zignoruj tę wiadomość.",
|
"emails.invitation.footer": "Jeśli nie jesteś zainteresowany, zignoruj tę wiadomość.",
|
||||||
"emails.invitation.thanks": "Dziękujemy,",
|
"emails.invitation.thanks": "Dziękujemy,",
|
||||||
|
"emails.invitation.buttonText": "Zaakceptuj zaproszenie do {{team}}",
|
||||||
"emails.invitation.signature": "Zespół {{project}}",
|
"emails.invitation.signature": "Zespół {{project}}",
|
||||||
"locale.country.unknown": "Nieznany",
|
"locale.country.unknown": "Nieznany",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Clique neste link para verificar o seu endereço de e-mail.",
|
"emails.verification.body": "Clique neste link para verificar o seu endereço de e-mail.",
|
||||||
"emails.verification.footer": "Se você não solicitou a verificação deste e-mail, ignore essa mensagem.",
|
"emails.verification.footer": "Se você não solicitou a verificação deste e-mail, ignore essa mensagem.",
|
||||||
"emails.verification.thanks": "Muito obrigado,",
|
"emails.verification.thanks": "Muito obrigado,",
|
||||||
|
"emails.verification.buttonText": "Confirmar endereço de e-mail",
|
||||||
"emails.verification.signature": "Time {{project}}",
|
"emails.verification.signature": "Time {{project}}",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Olá,",
|
"emails.magicSession.hello": "Olá,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Clique neste link para redefinir sua senha do {{project}}.",
|
"emails.recovery.body": "Clique neste link para redefinir sua senha do {{project}}.",
|
||||||
"emails.recovery.footer": "Se você não solicitou a redefinição da sua senha, você pode ignorar essa mensagem.",
|
"emails.recovery.footer": "Se você não solicitou a redefinição da sua senha, você pode ignorar essa mensagem.",
|
||||||
"emails.recovery.thanks": "Muito obrigado,",
|
"emails.recovery.thanks": "Muito obrigado,",
|
||||||
|
"emails.recovery.buttonText": "Redefinir senha",
|
||||||
"emails.recovery.signature": "Time {{project}}",
|
"emails.recovery.signature": "Time {{project}}",
|
||||||
"emails.invitation.subject": "Convite para o Time %s em %s",
|
"emails.invitation.subject": "Convite para o Time %s em %s",
|
||||||
"emails.invitation.hello": "Olá,",
|
"emails.invitation.hello": "Olá,",
|
||||||
"emails.invitation.body": "Este e-mail foi enviado porque {{owner}} deseja convidar você a se tornar membro do Time {{team}} em {{project}}.",
|
"emails.invitation.body": "Este e-mail foi enviado porque {{owner}} deseja convidar você a se tornar membro do Time {{team}} em {{project}}.",
|
||||||
"emails.invitation.footer": "Caso não tenha interesse, ignore essa mensagem.",
|
"emails.invitation.footer": "Caso não tenha interesse, ignore essa mensagem.",
|
||||||
"emails.invitation.thanks": "Muito obrigado,",
|
"emails.invitation.thanks": "Muito obrigado,",
|
||||||
|
"emails.invitation.buttonText": "Aceitar convite para {{team}}",
|
||||||
"emails.invitation.signature": "Time {{project}}",
|
"emails.invitation.signature": "Time {{project}}",
|
||||||
"locale.country.unknown": "Desconhecido",
|
"locale.country.unknown": "Desconhecido",
|
||||||
"countries.af": "Afeganistão",
|
"countries.af": "Afeganistão",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Siga esta ligação para verificar o seu endereço de correio electrónico.",
|
"emails.verification.body": "Siga esta ligação para verificar o seu endereço de correio electrónico.",
|
||||||
"emails.verification.footer": "Se não pediu para verificar este endereço, pode ignorar esta mensagem.",
|
"emails.verification.footer": "Se não pediu para verificar este endereço, pode ignorar esta mensagem.",
|
||||||
"emails.verification.thanks": "Obrigado,",
|
"emails.verification.thanks": "Obrigado,",
|
||||||
|
"emails.verification.buttonText": "Confirmar endereço de email",
|
||||||
"emails.verification.signature": "Equipa {{project}}",
|
"emails.verification.signature": "Equipa {{project}}",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Olá ,",
|
"emails.magicSession.hello": "Olá ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Utilize este link para redefinir a palavra-passe do seu projecto {{project}}",
|
"emails.recovery.body": "Utilize este link para redefinir a palavra-passe do seu projecto {{project}}",
|
||||||
"emails.recovery.footer": "Se não pediu para redefinir a sua palavra-passe, pode ignorar esta mensagem.",
|
"emails.recovery.footer": "Se não pediu para redefinir a sua palavra-passe, pode ignorar esta mensagem.",
|
||||||
"emails.recovery.thanks": "Obrigado,",
|
"emails.recovery.thanks": "Obrigado,",
|
||||||
|
"emails.recovery.buttonText": "Repor palavra-passe",
|
||||||
"emails.recovery.signature": "Equipa {{project}}",
|
"emails.recovery.signature": "Equipa {{project}}",
|
||||||
"emails.invitation.subject": "Convite à equipa de %s às %s",
|
"emails.invitation.subject": "Convite à equipa de %s às %s",
|
||||||
"emails.invitation.hello": "Olá,",
|
"emails.invitation.hello": "Olá,",
|
||||||
"emails.invitation.body": "Este correio foi-lhe enviado porque {{owner}} queria convidá-lo a tornar-se membro da equipa {{team}} da {{project}}.",
|
"emails.invitation.body": "Este correio foi-lhe enviado porque {{owner}} queria convidá-lo a tornar-se membro da equipa {{team}} da {{project}}.",
|
||||||
"emails.invitation.footer": "Se não estiver interessado, pode ignorar esta mensagem.",
|
"emails.invitation.footer": "Se não estiver interessado, pode ignorar esta mensagem.",
|
||||||
"emails.invitation.thanks": "Obrigado,",
|
"emails.invitation.thanks": "Obrigado,",
|
||||||
|
"emails.invitation.buttonText": "Aceitar convite para o {{team}}",
|
||||||
"emails.invitation.signature": "Equipa {{project}}",
|
"emails.invitation.signature": "Equipa {{project}}",
|
||||||
"locale.country.unknown": "Desconhecido",
|
"locale.country.unknown": "Desconhecido",
|
||||||
"countries.af": "Afeganistão",
|
"countries.af": "Afeganistão",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Click pe acest link pentru a valida adresa de email.",
|
"emails.verification.body": "Click pe acest link pentru a valida adresa de email.",
|
||||||
"emails.verification.footer": "Dacă nu ai cerut validarea adresei de email, poți ignora acest mesaj.",
|
"emails.verification.footer": "Dacă nu ai cerut validarea adresei de email, poți ignora acest mesaj.",
|
||||||
"emails.verification.thanks": "Mulțumim,",
|
"emails.verification.thanks": "Mulțumim,",
|
||||||
|
"emails.verification.buttonText": "Confirmă adresa de email",
|
||||||
"emails.verification.signature": "Echipa {{project}}",
|
"emails.verification.signature": "Echipa {{project}}",
|
||||||
"emails.magicSession.subject": "Login",
|
"emails.magicSession.subject": "Login",
|
||||||
"emails.magicSession.hello": "Bună ziua,",
|
"emails.magicSession.hello": "Bună ziua,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Click aici pentru a reseta parola pentru {{project}}",
|
"emails.recovery.body": "Click aici pentru a reseta parola pentru {{project}}",
|
||||||
"emails.recovery.footer": "Dacă nu ai cerut să îți schimbi parola, ignoră acest mesaj.",
|
"emails.recovery.footer": "Dacă nu ai cerut să îți schimbi parola, ignoră acest mesaj.",
|
||||||
"emails.recovery.thanks": "Mulțumim,",
|
"emails.recovery.thanks": "Mulțumim,",
|
||||||
|
"emails.recovery.buttonText": "Resetează parola",
|
||||||
"emails.recovery.signature": "Echipa {{project}}",
|
"emails.recovery.signature": "Echipa {{project}}",
|
||||||
"emails.invitation.subject": "Invitatie catre %s Echipa la %s",
|
"emails.invitation.subject": "Invitatie catre %s Echipa la %s",
|
||||||
"emails.invitation.hello": "Bună ziua,",
|
"emails.invitation.hello": "Bună ziua,",
|
||||||
"emails.invitation.body": "Acest email a fost trimis pentru că {{owner}} a vrut ca tu să devii membru al echipei {{team}} la {{project}}.",
|
"emails.invitation.body": "Acest email a fost trimis pentru că {{owner}} a vrut ca tu să devii membru al echipei {{team}} la {{project}}.",
|
||||||
"emails.invitation.footer": "Dacă nu esti interesat, poți ignora acest email.",
|
"emails.invitation.footer": "Dacă nu esti interesat, poți ignora acest email.",
|
||||||
"emails.invitation.thanks": "Mulțumim,",
|
"emails.invitation.thanks": "Mulțumim,",
|
||||||
|
"emails.invitation.buttonText": "Acceptă invitația la {{team}}",
|
||||||
"emails.invitation.signature": "Echipa {{project}}",
|
"emails.invitation.signature": "Echipa {{project}}",
|
||||||
"locale.country.unknown": "Necunoscut",
|
"locale.country.unknown": "Necunoscut",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Перейдите по ссылке, чтобы подтвердить свой адрес электронной почты.",
|
"emails.verification.body": "Перейдите по ссылке, чтобы подтвердить свой адрес электронной почты.",
|
||||||
"emails.verification.footer": "Если вы не запрашивали подтверждение этого адреса, проигнорируйте это сообщение.",
|
"emails.verification.footer": "Если вы не запрашивали подтверждение этого адреса, проигнорируйте это сообщение.",
|
||||||
"emails.verification.thanks": "Спасибо,",
|
"emails.verification.thanks": "Спасибо,",
|
||||||
|
"emails.verification.buttonText": "Подтвердить адрес электронной почты",
|
||||||
"emails.verification.signature": "команда {{project}}",
|
"emails.verification.signature": "команда {{project}}",
|
||||||
"emails.magicSession.subject": "Логин",
|
"emails.magicSession.subject": "Логин",
|
||||||
"emails.magicSession.hello": "Здравствуйте,",
|
"emails.magicSession.hello": "Здравствуйте,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Перейдите по этой ссылке для того чтобы сбросить свой пароль для проекта {{project}}",
|
"emails.recovery.body": "Перейдите по этой ссылке для того чтобы сбросить свой пароль для проекта {{project}}",
|
||||||
"emails.recovery.footer": "Если вы не запрашивали сброс пароля, проигнорируйте это сообщение.",
|
"emails.recovery.footer": "Если вы не запрашивали сброс пароля, проигнорируйте это сообщение.",
|
||||||
"emails.recovery.thanks": "Спасибо,",
|
"emails.recovery.thanks": "Спасибо,",
|
||||||
|
"emails.recovery.buttonText": "Сбросить пароль",
|
||||||
"emails.recovery.signature": "команда {{project}}",
|
"emails.recovery.signature": "команда {{project}}",
|
||||||
"emails.invitation.subject": "Приглашение в команду %s по проекту %s",
|
"emails.invitation.subject": "Приглашение в команду %s по проекту %s",
|
||||||
"emails.invitation.hello": "Здравствуйте,",
|
"emails.invitation.hello": "Здравствуйте,",
|
||||||
"emails.invitation.body": "Это письмо отправлено вам, потому что {{owner}} приглашает стать членом команды {{team}} в проекте {{project}}.",
|
"emails.invitation.body": "Это письмо отправлено вам, потому что {{owner}} приглашает стать членом команды {{team}} в проекте {{project}}.",
|
||||||
"emails.invitation.footer": "Если вы не заинтересованы, проигнорируйте это сообщение.",
|
"emails.invitation.footer": "Если вы не заинтересованы, проигнорируйте это сообщение.",
|
||||||
"emails.invitation.thanks": "Спасибо,",
|
"emails.invitation.thanks": "Спасибо,",
|
||||||
|
"emails.invitation.buttonText": "Принять приглашение в {{team}}",
|
||||||
"emails.invitation.signature": "команда {{project}}",
|
"emails.invitation.signature": "команда {{project}}",
|
||||||
"locale.country.unknown": "Неизвестно",
|
"locale.country.unknown": "Неизвестно",
|
||||||
"countries.af": "Афганистан",
|
"countries.af": "Афганистан",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ई-पत्रनिर्णायनार्थमिदं संयोगसूत्रमनुसरतु।",
|
"emails.verification.body": "ई-पत्रनिर्णायनार्थमिदं संयोगसूत्रमनुसरतु।",
|
||||||
"emails.verification.footer": "यदि अस्य संकेतस्य निर्णायनं नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्।",
|
"emails.verification.footer": "यदि अस्य संकेतस्य निर्णायनं नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्।",
|
||||||
"emails.verification.thanks": "धन्यवादः,",
|
"emails.verification.thanks": "धन्यवादः,",
|
||||||
|
"emails.verification.buttonText": "ईमेल-पत्त्रं सुनिश्चित करें",
|
||||||
"emails.verification.signature": "{{project}} गणः",
|
"emails.verification.signature": "{{project}} गणः",
|
||||||
"emails.magicSession.subject": "संप्रवेशः",
|
"emails.magicSession.subject": "संप्रवेशः",
|
||||||
"emails.magicSession.hello": "अयि,",
|
"emails.magicSession.hello": "अयि,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "{{project}} कूटशब्दपुनयाेजनाय संयोगमेनमनुसरतु।",
|
"emails.recovery.body": "{{project}} कूटशब्दपुनयाेजनाय संयोगमेनमनुसरतु।",
|
||||||
"emails.recovery.footer": "यदि कूटशब्दस्य पुनयाेजनं नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्।",
|
"emails.recovery.footer": "यदि कूटशब्दस्य पुनयाेजनं नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्।",
|
||||||
"emails.recovery.thanks": "धन्यवादः,",
|
"emails.recovery.thanks": "धन्यवादः,",
|
||||||
|
"emails.recovery.buttonText": "गुप्तशब्दं पुनः स्थापित करें",
|
||||||
"emails.recovery.signature": "{{project}} गणः",
|
"emails.recovery.signature": "{{project}} गणः",
|
||||||
"emails.invitation.subject": "गणस्य आमन्त्रणम् %s इति %s",
|
"emails.invitation.subject": "गणस्य आमन्त्रणम् %s इति %s",
|
||||||
"emails.invitation.hello": "अयि भो,",
|
"emails.invitation.hello": "अयि भो,",
|
||||||
"emails.invitation.body": "{{owner}} {{team}} गणे {{project}} मध्ये भवद्योगदानमच्छितीति हेतोः पत्रमदिं भवत्सकाशं प्रेषतिम्।",
|
"emails.invitation.body": "{{owner}} {{team}} गणे {{project}} मध्ये भवद्योगदानमच्छितीति हेतोः पत्रमदिं भवत्सकाशं प्रेषतिम्।",
|
||||||
"emails.invitation.footer": "यदि भवदनिच्छा तर्हि वात्र्तामिमामुपेक्षताम्।",
|
"emails.invitation.footer": "यदि भवदनिच्छा तर्हि वात्र्तामिमामुपेक्षताम्।",
|
||||||
"emails.invitation.thanks": "धन्यवादः,",
|
"emails.invitation.thanks": "धन्यवादः,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} निमन्त्रणं स्वीकुरुत",
|
||||||
"emails.invitation.signature": "{{project}} गणः",
|
"emails.invitation.signature": "{{project}} गणः",
|
||||||
"locale.country.unknown": "अज्ञातम् ",
|
"locale.country.unknown": "अज्ञातम् ",
|
||||||
"countries.af": "आफगानिस्थानम्",
|
"countries.af": "आफगानिस्थानम्",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "پنھنجي اي ميل ايڊريس جي تصديق ڪرڻ لاءِ ھن لنڪ تي عمل ڪريو.",
|
"emails.verification.body": "پنھنجي اي ميل ايڊريس جي تصديق ڪرڻ لاءِ ھن لنڪ تي عمل ڪريو.",
|
||||||
"emails.verification.footer": "جيڪڏھن توھان نه پ askيا ھئا ھن ايڊريس جي تصديق ڪرڻ لاءِ ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
"emails.verification.footer": "جيڪڏھن توھان نه پ askيا ھئا ھن ايڊريس جي تصديق ڪرڻ لاءِ ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
||||||
"emails.verification.thanks": "مهرباني,",
|
"emails.verification.thanks": "مهرباني,",
|
||||||
|
"emails.verification.buttonText": "اي ميل پتو تصديق ڪريو",
|
||||||
"emails.verification.signature": "{{project}} ٽيم",
|
"emails.verification.signature": "{{project}} ٽيم",
|
||||||
"emails.magicSession.subject": "لاگ ان",
|
"emails.magicSession.subject": "لاگ ان",
|
||||||
"emails.magicSession.hello": "هي ,",
|
"emails.magicSession.hello": "هي ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "ھن لنڪ تي عمل ڪريو پنھنجو {{project}} پاسورڊ ري سيٽ ڪرڻ لاءِ.",
|
"emails.recovery.body": "ھن لنڪ تي عمل ڪريو پنھنجو {{project}} پاسورڊ ري سيٽ ڪرڻ لاءِ.",
|
||||||
"emails.recovery.footer": "جيڪڏھن توھان نه پ پيو ھو پنھنجي پاسورڊ کي ري سيٽ ڪرڻ لاءِ ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
"emails.recovery.footer": "جيڪڏھن توھان نه پ پيو ھو پنھنجي پاسورڊ کي ري سيٽ ڪرڻ لاءِ ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
||||||
"emails.recovery.thanks": "مهرباني,",
|
"emails.recovery.thanks": "مهرباني,",
|
||||||
|
"emails.recovery.buttonText": "پاسورڊ ري سيٽ ڪريو",
|
||||||
"emails.recovery.signature": "{{project}} ٽيم",
|
"emails.recovery.signature": "{{project}} ٽيم",
|
||||||
"emails.invitation.subject": "%s ٽيم %s تيجي دعوت",
|
"emails.invitation.subject": "%s ٽيم %s تيجي دعوت",
|
||||||
"emails.invitation.hello": "هيلو,",
|
"emails.invitation.hello": "هيلو,",
|
||||||
"emails.invitation.body": "ھي اي ميل توھان ڏانھن موڪليو ويو آھي {اڪاڻ ته {{owner}} توھان کي دعوت ڏيڻ چاھي ٿو ته توھان {{team}} ٽيم جو ميمبر بڻجي {{project}} تي.",
|
"emails.invitation.body": "ھي اي ميل توھان ڏانھن موڪليو ويو آھي {اڪاڻ ته {{owner}} توھان کي دعوت ڏيڻ چاھي ٿو ته توھان {{team}} ٽيم جو ميمبر بڻجي {{project}} تي.",
|
||||||
"emails.invitation.footer": "جيڪڏھن توھان دلچسپي نٿا رکو ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
"emails.invitation.footer": "جيڪڏھن توھان دلچسپي نٿا رکو ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
||||||
"emails.invitation.thanks": "مهرباني,",
|
"emails.invitation.thanks": "مهرباني,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} جي دعوت قبول ڪريو",
|
||||||
"emails.invitation.signature": "{{project}} ٽيم",
|
"emails.invitation.signature": "{{project}} ٽيم",
|
||||||
"locale.country.unknown": "نامعلوم",
|
"locale.country.unknown": "نامعلوم",
|
||||||
"countries.af": "افغانستان",
|
"countries.af": "افغانستان",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ඔබගේ විද්යුත් තැපැල් ලිපිනය සත්යාපනය කිරීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
|
"emails.verification.body": "ඔබගේ විද්යුත් තැපැල් ලිපිනය සත්යාපනය කිරීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
|
||||||
"emails.verification.footer": "මෙම ලිපිනය සත්යාපනය කරන ලෙස ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
"emails.verification.footer": "මෙම ලිපිනය සත්යාපනය කරන ලෙස ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
||||||
"emails.verification.thanks": "ස්තුතියි,",
|
"emails.verification.thanks": "ස්තුතියි,",
|
||||||
|
"emails.verification.buttonText": "ඊමේල් ලිපිනය තහවුරු කරන්න",
|
||||||
"emails.verification.signature": "{{project}} කණ්ඩායම",
|
"emails.verification.signature": "{{project}} කණ්ඩායම",
|
||||||
"emails.magicSession.subject": "ප්රවේශ වන්න",
|
"emails.magicSession.subject": "ප්රවේශ වන්න",
|
||||||
"emails.magicSession.hello": "හේයි,",
|
"emails.magicSession.hello": "හේයි,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "ඔබගේ {{project}} මුරපදය නැවත සැකසීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
|
"emails.recovery.body": "ඔබගේ {{project}} මුරපදය නැවත සැකසීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
|
||||||
"emails.recovery.footer": "ඔබගේ මුරපදය නැවත සකසන ලෙස ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
"emails.recovery.footer": "ඔබගේ මුරපදය නැවත සකසන ලෙස ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
||||||
"emails.recovery.thanks": "ස්තුතියි,",
|
"emails.recovery.thanks": "ස්තුතියි,",
|
||||||
|
"emails.recovery.buttonText": "මුරපදය යළි පිහිටුවන්න",
|
||||||
"emails.recovery.signature": "{{project}} කණ්ඩායම",
|
"emails.recovery.signature": "{{project}} කණ්ඩායම",
|
||||||
"emails.invitation.subject": "%s කණ්ඩායමට ආරාධනා %s හි",
|
"emails.invitation.subject": "%s කණ්ඩායමට ආරාධනා %s හි",
|
||||||
"emails.invitation.hello": "ආයුබෝවන්,",
|
"emails.invitation.hello": "ආයුබෝවන්,",
|
||||||
"emails.invitation.body": "මෙම තැපැල් ඔබට එව්වේ, {{owner}} හට {{project}} හි {{team}} කණ්ඩායමේ සාමාජිකයෙකු වීමට ඔබට ආරාධනා කිරීමට අවශ්ය වූ බැවිනි.",
|
"emails.invitation.body": "මෙම තැපැල් ඔබට එව්වේ, {{owner}} හට {{project}} හි {{team}} කණ්ඩායමේ සාමාජිකයෙකු වීමට ඔබට ආරාධනා කිරීමට අවශ්ය වූ බැවිනි.",
|
||||||
"emails.invitation.footer": "ඔබ උනන්දුවක් නොදක්වන්නේ නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
"emails.invitation.footer": "ඔබ උනන්දුවක් නොදක්වන්නේ නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
||||||
"emails.invitation.thanks": "ස්තුතියි,",
|
"emails.invitation.thanks": "ස්තුතියි,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} සඳහා ආරාධනය පිළිගෙනින්න",
|
||||||
"emails.invitation.signature": "{{project}} කණ්ඩායම",
|
"emails.invitation.signature": "{{project}} කණ්ඩායම",
|
||||||
"locale.country.unknown": "නොදන්නා",
|
"locale.country.unknown": "නොදන්නා",
|
||||||
"countries.af": "ඇෆ්ගනිස්ථානය",
|
"countries.af": "ඇෆ්ගනිස්ථානය",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Použi tento link pre overenie svojej emailovej adresy.",
|
"emails.verification.body": "Použi tento link pre overenie svojej emailovej adresy.",
|
||||||
"emails.verification.footer": "Ak si nepožiadal o overenie tejto adresy, môžeš túto správu ignorovať.",
|
"emails.verification.footer": "Ak si nepožiadal o overenie tejto adresy, môžeš túto správu ignorovať.",
|
||||||
"emails.verification.thanks": "Ďakujeme.,",
|
"emails.verification.thanks": "Ďakujeme.,",
|
||||||
|
"emails.verification.buttonText": "Potvrďte e-mailovú adresu",
|
||||||
"emails.verification.signature": "{{project}} tím",
|
"emails.verification.signature": "{{project}} tím",
|
||||||
"emails.magicSession.subject": "Prihlásenie",
|
"emails.magicSession.subject": "Prihlásenie",
|
||||||
"emails.magicSession.hello": "Ahoj,",
|
"emails.magicSession.hello": "Ahoj,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Použi tento link pre obnovenie svojho {{project}} hesla.",
|
"emails.recovery.body": "Použi tento link pre obnovenie svojho {{project}} hesla.",
|
||||||
"emails.recovery.footer": "Ak si nepožiadal o obnovu svojho hesla, túto správu môžeš ignorovať.",
|
"emails.recovery.footer": "Ak si nepožiadal o obnovu svojho hesla, túto správu môžeš ignorovať.",
|
||||||
"emails.recovery.thanks": "Ďakujeme,",
|
"emails.recovery.thanks": "Ďakujeme,",
|
||||||
|
"emails.recovery.buttonText": "Obnoviť heslo",
|
||||||
"emails.recovery.signature": "{{project}} tím",
|
"emails.recovery.signature": "{{project}} tím",
|
||||||
"emails.invitation.subject": "Pozvánka do %s Tímu v %s",
|
"emails.invitation.subject": "Pozvánka do %s Tímu v %s",
|
||||||
"emails.invitation.hello": "Ahoj,",
|
"emails.invitation.hello": "Ahoj,",
|
||||||
"emails.invitation.body": "Tento email ti bol zaslaný, pretože {{owner}} ťa pozval, aby si sa stal členom {{team}} tímu v projekte {{project}}.",
|
"emails.invitation.body": "Tento email ti bol zaslaný, pretože {{owner}} ťa pozval, aby si sa stal členom {{team}} tímu v projekte {{project}}.",
|
||||||
"emails.invitation.footer": "Ak nemáš záujem, môžeš túto správu ignorovať.",
|
"emails.invitation.footer": "Ak nemáš záujem, môžeš túto správu ignorovať.",
|
||||||
"emails.invitation.thanks": "Ďakujeme,",
|
"emails.invitation.thanks": "Ďakujeme,",
|
||||||
|
"emails.invitation.buttonText": "Prijať pozvánku do {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} tím",
|
"emails.invitation.signature": "{{project}} tím",
|
||||||
"locale.country.unknown": "Neznámy",
|
"locale.country.unknown": "Neznámy",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Tevedza chinongedzo ichi kuti uratidze kuti kero iyi ndeyako.",
|
"emails.verification.body": "Tevedza chinongedzo ichi kuti uratidze kuti kero iyi ndeyako.",
|
||||||
"emails.verification.footer": "Kana usina kukumbira kuti uratidze kuti kero iyi ndeyako, unogona kufuratira meseji iyi.",
|
"emails.verification.footer": "Kana usina kukumbira kuti uratidze kuti kero iyi ndeyako, unogona kufuratira meseji iyi.",
|
||||||
"emails.verification.thanks": "Ndatenda,",
|
"emails.verification.thanks": "Ndatenda,",
|
||||||
|
"emails.verification.buttonText": "Simbisa kero yeemail",
|
||||||
"emails.verification.signature": "Chikwata che{{project}}",
|
"emails.verification.signature": "Chikwata che{{project}}",
|
||||||
"emails.magicSession.subject": "Pinda",
|
"emails.magicSession.subject": "Pinda",
|
||||||
"emails.magicSession.hello": "Hesi,",
|
"emails.magicSession.hello": "Hesi,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Baya chinongedzo ichi kuti uchinje pasiwedhi yako ye{{project}}.",
|
"emails.recovery.body": "Baya chinongedzo ichi kuti uchinje pasiwedhi yako ye{{project}}.",
|
||||||
"emails.recovery.footer": "Kana usina kukumbira kuchinja pasiwedhi yako, unogona kufuratira meseji iyi.",
|
"emails.recovery.footer": "Kana usina kukumbira kuchinja pasiwedhi yako, unogona kufuratira meseji iyi.",
|
||||||
"emails.recovery.thanks": "Ndatenda,",
|
"emails.recovery.thanks": "Ndatenda,",
|
||||||
|
"emails.recovery.buttonText": "Gadzirisa password",
|
||||||
"emails.recovery.signature": "Chikwata che{{project}}",
|
"emails.recovery.signature": "Chikwata che{{project}}",
|
||||||
"emails.invitation.subject": "Kukokwa kuchikwata che%s ku%s",
|
"emails.invitation.subject": "Kukokwa kuchikwata che%s ku%s",
|
||||||
"emails.invitation.hello": "Mhoro,",
|
"emails.invitation.hello": "Mhoro,",
|
||||||
"emails.invitation.body": "Tsamba iyi yatumirwa kwauri nekuti {{owner}} anga achida kuti uve nhengo yechikwata che{{team}} pachirongwa che{{project}}.",
|
"emails.invitation.body": "Tsamba iyi yatumirwa kwauri nekuti {{owner}} anga achida kuti uve nhengo yechikwata che{{team}} pachirongwa che{{project}}.",
|
||||||
"emails.invitation.footer": "Kana usiri kufarira kuve nhengo yechikwata ichi, unogona kufuratira meseji iyi.",
|
"emails.invitation.footer": "Kana usiri kufarira kuve nhengo yechikwata ichi, unogona kufuratira meseji iyi.",
|
||||||
"emails.invitation.thanks": "Ndatenda,",
|
"emails.invitation.thanks": "Ndatenda,",
|
||||||
|
"emails.invitation.buttonText": "Gamuchira kukokwa ku {{team}}",
|
||||||
"emails.invitation.signature": "Chikwata che{{project}}",
|
"emails.invitation.signature": "Chikwata che{{project}}",
|
||||||
"locale.country.unknown": "Haizivikanwe",
|
"locale.country.unknown": "Haizivikanwe",
|
||||||
"countries.af": "Afuganisitani",
|
"countries.af": "Afuganisitani",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Klicka på denna länk för att verifiera din email",
|
"emails.verification.body": "Klicka på denna länk för att verifiera din email",
|
||||||
"emails.verification.footer": "Om du inte bad om att verifiera den här e-postadressen kan du ignorera detta mail.",
|
"emails.verification.footer": "Om du inte bad om att verifiera den här e-postadressen kan du ignorera detta mail.",
|
||||||
"emails.verification.thanks": "Tack,",
|
"emails.verification.thanks": "Tack,",
|
||||||
|
"emails.verification.buttonText": "Bekräfta e-postadress",
|
||||||
"emails.verification.signature": "{{project}} teamet",
|
"emails.verification.signature": "{{project}} teamet",
|
||||||
"emails.magicSession.subject": "Logga in",
|
"emails.magicSession.subject": "Logga in",
|
||||||
"emails.magicSession.hello": "Hej,",
|
"emails.magicSession.hello": "Hej,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Klicka på denna länk för att återställa lösenordet på {{project}}",
|
"emails.recovery.body": "Klicka på denna länk för att återställa lösenordet på {{project}}",
|
||||||
"emails.recovery.footer": "Om du inte bad om att återställa ditt lösenord kan du ignorera detta mail.",
|
"emails.recovery.footer": "Om du inte bad om att återställa ditt lösenord kan du ignorera detta mail.",
|
||||||
"emails.recovery.thanks": "Tack,",
|
"emails.recovery.thanks": "Tack,",
|
||||||
|
"emails.recovery.buttonText": "Återställ lösenord",
|
||||||
"emails.recovery.signature": "{{project}} teamet",
|
"emails.recovery.signature": "{{project}} teamet",
|
||||||
"emails.invitation.subject": "Inbjudan till %s teamet på %s",
|
"emails.invitation.subject": "Inbjudan till %s teamet på %s",
|
||||||
"emails.invitation.hello": "Hej,",
|
"emails.invitation.hello": "Hej,",
|
||||||
"emails.invitation.body": "Detta mail skickades till dig eftersom {{owner}} ville bjuda in dig att bli medlem i teamet {{team}} på {{project}}.",
|
"emails.invitation.body": "Detta mail skickades till dig eftersom {{owner}} ville bjuda in dig att bli medlem i teamet {{team}} på {{project}}.",
|
||||||
"emails.invitation.footer": "Om du inte är intresserad kan du ignorera detta mail.",
|
"emails.invitation.footer": "Om du inte är intresserad kan du ignorera detta mail.",
|
||||||
"emails.invitation.thanks": "Tack,",
|
"emails.invitation.thanks": "Tack,",
|
||||||
|
"emails.invitation.buttonText": "Acceptera inbjudan till {{team}}",
|
||||||
"emails.invitation.signature": "{{project}} teamet",
|
"emails.invitation.signature": "{{project}} teamet",
|
||||||
"locale.country.unknown": "Okänt",
|
"locale.country.unknown": "Okänt",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "உங்கள் மின்னஞ்சல் முகவரியைச் சரிபார்க்க இந்த இணைப்பைப் பின்தொடரவும்.",
|
"emails.verification.body": "உங்கள் மின்னஞ்சல் முகவரியைச் சரிபார்க்க இந்த இணைப்பைப் பின்தொடரவும்.",
|
||||||
"emails.verification.footer": "இந்த முகவரியைச் சரிபார்க்கும்படி உங்களிடம் கேட்கப்படவில்லை என்றால், இந்தச் செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
"emails.verification.footer": "இந்த முகவரியைச் சரிபார்க்கும்படி உங்களிடம் கேட்கப்படவில்லை என்றால், இந்தச் செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
||||||
"emails.verification.thanks": "நன்றி,",
|
"emails.verification.thanks": "நன்றி,",
|
||||||
|
"emails.verification.buttonText": "மின்னஞ்சல் முகவரியை உறுதிப்படுத்தவும்",
|
||||||
"emails.verification.signature": "{{project}} குழு ",
|
"emails.verification.signature": "{{project}} குழு ",
|
||||||
"emails.magicSession.subject": "உள்நுழைய",
|
"emails.magicSession.subject": "உள்நுழைய",
|
||||||
"emails.magicSession.hello": "ஏய்,",
|
"emails.magicSession.hello": "ஏய்,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "மீட்டமைக்க இந்த இணைப்பைப் பின்தொடரவும் {{project}} கடவுச்சொல்.",
|
"emails.recovery.body": "மீட்டமைக்க இந்த இணைப்பைப் பின்தொடரவும் {{project}} கடவுச்சொல்.",
|
||||||
"emails.recovery.footer": "உங்கள் கடவுச்சொல்லை மீட்டமைக்கும்படி உங்களிடம் கேட்கப்படவில்லை என்றால், இந்தச் செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
"emails.recovery.footer": "உங்கள் கடவுச்சொல்லை மீட்டமைக்கும்படி உங்களிடம் கேட்கப்படவில்லை என்றால், இந்தச் செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
||||||
"emails.recovery.thanks": "நன்றி,",
|
"emails.recovery.thanks": "நன்றி,",
|
||||||
|
"emails.recovery.buttonText": "கடவுச்சொல்லை மீட்டமைக்கவும்",
|
||||||
"emails.recovery.signature": "{{project}} குழு",
|
"emails.recovery.signature": "{{project}} குழு",
|
||||||
"emails.invitation.subject": "அழைப்பிதழ் %s குழு %s ",
|
"emails.invitation.subject": "அழைப்பிதழ் %s குழு %s ",
|
||||||
"emails.invitation.hello": "வணக்கம்,",
|
"emails.invitation.hello": "வணக்கம்,",
|
||||||
"emails.invitation.body": "{{project}} இல் {{team}} குழுவில் உறுப்பினராக உங்களை {{owner}} அழைக்க விரும்புவதால், இந்த அஞ்சல் உங்களுக்கு அனுப்பப்பட்டது.",
|
"emails.invitation.body": "{{project}} இல் {{team}} குழுவில் உறுப்பினராக உங்களை {{owner}} அழைக்க விரும்புவதால், இந்த அஞ்சல் உங்களுக்கு அனுப்பப்பட்டது.",
|
||||||
"emails.invitation.footer": "உங்களுக்கு ஆர்வம் இல்லை என்றால், இந்த செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
"emails.invitation.footer": "உங்களுக்கு ஆர்வம் இல்லை என்றால், இந்த செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
|
||||||
"emails.invitation.thanks": "நன்றி,",
|
"emails.invitation.thanks": "நன்றி,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} அழைப்பை ஏற்கவும்",
|
||||||
"emails.invitation.signature": "{{project}} குழு",
|
"emails.invitation.signature": "{{project}} குழு",
|
||||||
"locale.country.unknown": "அறியவில்லை",
|
"locale.country.unknown": "அறியவில்லை",
|
||||||
"countries.af": "ஆப்கானித்தான்",
|
"countries.af": "ஆப்கானித்தான்",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "ఈ లింక్ ద్వారా ఇమెయిల్ ని ధృవీకరించండి",
|
"emails.verification.body": "ఈ లింక్ ద్వారా ఇమెయిల్ ని ధృవీకరించండి",
|
||||||
"emails.verification.footer": "మీరు ఈ చిరునామాను ధృవీకరించమని అడగనట్లయితే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
|
"emails.verification.footer": "మీరు ఈ చిరునామాను ధృవీకరించమని అడగనట్లయితే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
|
||||||
"emails.verification.thanks": "ధన్యవాదాలు,",
|
"emails.verification.thanks": "ధన్యవాదాలు,",
|
||||||
|
"emails.verification.buttonText": "ఇమెయిల్ చిరునామాను నిర్ధారించండి",
|
||||||
"emails.verification.signature": "{{project}} జట్",
|
"emails.verification.signature": "{{project}} జట్",
|
||||||
"emails.magicSession.subject": "లాగిన్",
|
"emails.magicSession.subject": "లాగిన్",
|
||||||
"emails.magicSession.hello": "నమస్కారము,",
|
"emails.magicSession.hello": "నమస్కారము,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "మీ {{project}} పాస్వర్డ్ ని రీసెట్ చేయడానికి ఈ లింక్ ని అనుసరించండి",
|
"emails.recovery.body": "మీ {{project}} పాస్వర్డ్ ని రీసెట్ చేయడానికి ఈ లింక్ ని అనుసరించండి",
|
||||||
"emails.recovery.footer": "మీరు మీ పాస్వర్డ్ ని రీసెట్ చేయమని అడగనట్లయితే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
|
"emails.recovery.footer": "మీరు మీ పాస్వర్డ్ ని రీసెట్ చేయమని అడగనట్లయితే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
|
||||||
"emails.recovery.thanks": "ధన్యవాదాల,",
|
"emails.recovery.thanks": "ధన్యవాదాల,",
|
||||||
|
"emails.recovery.buttonText": "పాస్వర్డ్ను రీసెట్ చేయండి",
|
||||||
"emails.recovery.signature": "{{project}} జట్",
|
"emails.recovery.signature": "{{project}} జట్",
|
||||||
"emails.invitation.subject": "%s వద్ద %s బృందానికి ఆహ్వానం",
|
"emails.invitation.subject": "%s వద్ద %s బృందానికి ఆహ్వానం",
|
||||||
"emails.invitation.hello": "నమస్కారమ,",
|
"emails.invitation.hello": "నమస్కారమ,",
|
||||||
"emails.invitation.body": "{{owner}} మిమ్మల్ని {{project}} లో {{team}} బృందంలో సభ్యునిగా ఉండమని ఆహ్వానించాలనుకుంటున్నందున ఈ మెయిల్ మీకు పంపబడింది.",
|
"emails.invitation.body": "{{owner}} మిమ్మల్ని {{project}} లో {{team}} బృందంలో సభ్యునిగా ఉండమని ఆహ్వానించాలనుకుంటున్నందున ఈ మెయిల్ మీకు పంపబడింది.",
|
||||||
"emails.invitation.footer": "మీకు ఆసక్తి లేకుంటే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు.",
|
"emails.invitation.footer": "మీకు ఆసక్తి లేకుంటే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు.",
|
||||||
"emails.invitation.thanks": "ధన్యవాదాల,",
|
"emails.invitation.thanks": "ధన్యవాదాల,",
|
||||||
|
"emails.invitation.buttonText": "{{team}} కు ఆహ్వానాన్ని ఆమోదించండి",
|
||||||
"emails.invitation.signature": "{{project}} జట్",
|
"emails.invitation.signature": "{{project}} జట్",
|
||||||
"locale.country.unknown": "తెలియని",
|
"locale.country.unknown": "తెలియని",
|
||||||
"countries.af": "ఆఫ్ఘనిస్తాన్",
|
"countries.af": "ఆఫ్ఘనిస్తాన్",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "กดเข้าไปที่ลิงก์นี้เพื่อยืนยันอีเมลของท่าน",
|
"emails.verification.body": "กดเข้าไปที่ลิงก์นี้เพื่อยืนยันอีเมลของท่าน",
|
||||||
"emails.verification.footer": "หากท่านไม่ได้ต้องการที่จะยืนยันอีเมลนี้ ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
"emails.verification.footer": "หากท่านไม่ได้ต้องการที่จะยืนยันอีเมลนี้ ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
||||||
"emails.verification.thanks": "ขอบคุณ",
|
"emails.verification.thanks": "ขอบคุณ",
|
||||||
|
"emails.verification.buttonText": "ยืนยันที่อยู่อีเมล",
|
||||||
"emails.verification.signature": "ทีม {{project}}",
|
"emails.verification.signature": "ทีม {{project}}",
|
||||||
"emails.magicSession.subject": "เข้าสู่ระบบ",
|
"emails.magicSession.subject": "เข้าสู่ระบบ",
|
||||||
"emails.magicSession.hello": "เรียนผู้ใช้งาน",
|
"emails.magicSession.hello": "เรียนผู้ใช้งาน",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "กดเข้าไปที่ลิงก์นี้เพื่อรีเซ็ตรหัสผ่านสำหรับโปรเจกต์ {{project}} ของท่าน",
|
"emails.recovery.body": "กดเข้าไปที่ลิงก์นี้เพื่อรีเซ็ตรหัสผ่านสำหรับโปรเจกต์ {{project}} ของท่าน",
|
||||||
"emails.recovery.footer": "หากท่านไม่ได้ต้องการที่จะรีเซ็ตรหัสผ่านของท่าน ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
"emails.recovery.footer": "หากท่านไม่ได้ต้องการที่จะรีเซ็ตรหัสผ่านของท่าน ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
||||||
"emails.recovery.thanks": "ขอบคุณ",
|
"emails.recovery.thanks": "ขอบคุณ",
|
||||||
|
"emails.recovery.buttonText": "รีเซ็ตรหัสผ่าน",
|
||||||
"emails.recovery.signature": "ทีม {{project}}",
|
"emails.recovery.signature": "ทีม {{project}}",
|
||||||
"emails.invitation.subject": "เรียนเชิญเข้าร่วม ทีม %s จากโปรเจกต์ %s",
|
"emails.invitation.subject": "เรียนเชิญเข้าร่วม ทีม %s จากโปรเจกต์ %s",
|
||||||
"emails.invitation.hello": "สวัสดี",
|
"emails.invitation.hello": "สวัสดี",
|
||||||
"emails.invitation.body": "ท่านได้รับอีเมลฉบับนี้เนื่องจาก {{owner}} ต้องการที่จะเชิญชวนคุณเข้าร่วมเป็นส่วนหนึ่งของ ทีม {{team}} จากโปรเจกต์ {{project}}",
|
"emails.invitation.body": "ท่านได้รับอีเมลฉบับนี้เนื่องจาก {{owner}} ต้องการที่จะเชิญชวนคุณเข้าร่วมเป็นส่วนหนึ่งของ ทีม {{team}} จากโปรเจกต์ {{project}}",
|
||||||
"emails.invitation.footer": "หากท่านไม่ได้สนใจที่จะเข้าร่วม ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
"emails.invitation.footer": "หากท่านไม่ได้สนใจที่จะเข้าร่วม ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
||||||
"emails.invitation.thanks": "ขอบคุณ",
|
"emails.invitation.thanks": "ขอบคุณ",
|
||||||
|
"emails.invitation.buttonText": "ยอมรับคำเชิญเข้าร่วม {{team}}",
|
||||||
"emails.invitation.signature": "ทีม {{project}}",
|
"emails.invitation.signature": "ทีม {{project}}",
|
||||||
"locale.country.unknown": "ไม่ทราบ",
|
"locale.country.unknown": "ไม่ทราบ",
|
||||||
"countries.af": "อัฟกานิสถาน",
|
"countries.af": "อัฟกานิสถาน",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Sundin ang link na ito upang ma-verify ang iyong email address.",
|
"emails.verification.body": "Sundin ang link na ito upang ma-verify ang iyong email address.",
|
||||||
"emails.verification.footer": "Kung hindi mo hiningi na i-verify ang address na ito, maaari mong balewalain ang mensahe na ito.",
|
"emails.verification.footer": "Kung hindi mo hiningi na i-verify ang address na ito, maaari mong balewalain ang mensahe na ito.",
|
||||||
"emails.verification.thanks": "Salamat,",
|
"emails.verification.thanks": "Salamat,",
|
||||||
|
"emails.verification.buttonText": "Kumpirmahin ang email address",
|
||||||
"emails.verification.signature": "Pangkat ng {{project}}",
|
"emails.verification.signature": "Pangkat ng {{project}}",
|
||||||
"emails.magicSession.subject": "Mag log in",
|
"emails.magicSession.subject": "Mag log in",
|
||||||
"emails.magicSession.hello": "Kamusta ,",
|
"emails.magicSession.hello": "Kamusta ,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Sundin ang link na ito upang i-reset ang password ng iyong {{project}}.",
|
"emails.recovery.body": "Sundin ang link na ito upang i-reset ang password ng iyong {{project}}.",
|
||||||
"emails.recovery.footer": "Kung hindi mo hiningi na i-reset ang iyong password, maaari mong balewalain ang mensahe na ito.",
|
"emails.recovery.footer": "Kung hindi mo hiningi na i-reset ang iyong password, maaari mong balewalain ang mensahe na ito.",
|
||||||
"emails.recovery.thanks": "Salamat,",
|
"emails.recovery.thanks": "Salamat,",
|
||||||
|
"emails.recovery.buttonText": "I-reset ang password",
|
||||||
"emails.recovery.signature": "Pangkat ng {{project}}",
|
"emails.recovery.signature": "Pangkat ng {{project}}",
|
||||||
"emails.invitation.subject": "Imbitasyon para sa Pangkat %s sa %s",
|
"emails.invitation.subject": "Imbitasyon para sa Pangkat %s sa %s",
|
||||||
"emails.invitation.hello": "Kamusta,",
|
"emails.invitation.hello": "Kamusta,",
|
||||||
"emails.invitation.body": "Ipinadala sa iyo ang mail na ito dahil gusto kang imbitahan ni {{owner}} na maging miyembro ng Pangkat {{team}} sa ilalim ng proyektong {{project}}.",
|
"emails.invitation.body": "Ipinadala sa iyo ang mail na ito dahil gusto kang imbitahan ni {{owner}} na maging miyembro ng Pangkat {{team}} sa ilalim ng proyektong {{project}}.",
|
||||||
"emails.invitation.footer": "Kung ikaw ay hindi interesado, maaari mong balewalain ang mensaheng ito.",
|
"emails.invitation.footer": "Kung ikaw ay hindi interesado, maaari mong balewalain ang mensaheng ito.",
|
||||||
"emails.invitation.thanks": "Salamat,",
|
"emails.invitation.thanks": "Salamat,",
|
||||||
|
"emails.invitation.buttonText": "Tanggapin ang paanyaya sa {{team}}",
|
||||||
"emails.invitation.signature": "Pangkat ng {{project}}",
|
"emails.invitation.signature": "Pangkat ng {{project}}",
|
||||||
"locale.country.unknown": "Hindi kilala",
|
"locale.country.unknown": "Hindi kilala",
|
||||||
"countries.af": "Apganistan",
|
"countries.af": "Apganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Eposta adresini doğrulamak için bu bağlantıyı kullanın.",
|
"emails.verification.body": "Eposta adresini doğrulamak için bu bağlantıyı kullanın.",
|
||||||
"emails.verification.footer": "Eğer bu eposta adresini doğrulamak isteyen siz değilseniz devam etmeyin.",
|
"emails.verification.footer": "Eğer bu eposta adresini doğrulamak isteyen siz değilseniz devam etmeyin.",
|
||||||
"emails.verification.thanks": "Teşekkürler,",
|
"emails.verification.thanks": "Teşekkürler,",
|
||||||
|
"emails.verification.buttonText": "E-posta adresini doğrula",
|
||||||
"emails.verification.signature": "{{project}} takımı",
|
"emails.verification.signature": "{{project}} takımı",
|
||||||
"emails.magicSession.subject": "Giriş",
|
"emails.magicSession.subject": "Giriş",
|
||||||
"emails.magicSession.hello": "Merhaba,",
|
"emails.magicSession.hello": "Merhaba,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "{{project}} şifrenizi sıfırlamak için bu bağlantıyı kullanın.",
|
"emails.recovery.body": "{{project}} şifrenizi sıfırlamak için bu bağlantıyı kullanın.",
|
||||||
"emails.recovery.footer": "Eğer şifre sıfırlama talebinde bulunmadıysanız devam etmeyin.",
|
"emails.recovery.footer": "Eğer şifre sıfırlama talebinde bulunmadıysanız devam etmeyin.",
|
||||||
"emails.recovery.thanks": "Teşekkürler,",
|
"emails.recovery.thanks": "Teşekkürler,",
|
||||||
|
"emails.recovery.buttonText": "Şifreyi sıfırla",
|
||||||
"emails.recovery.signature": "{{project}} takımı",
|
"emails.recovery.signature": "{{project}} takımı",
|
||||||
"emails.invitation.subject": "%s üzerinde %s Takımına Davet",
|
"emails.invitation.subject": "%s üzerinde %s Takımına Davet",
|
||||||
"emails.invitation.hello": "Merhaba,",
|
"emails.invitation.hello": "Merhaba,",
|
||||||
"emails.invitation.body": "Bu epostayı aldınız, çünkü {{owner}} sizi {{project}} üzerinde {{team}} takımının üyesi olmaya davet etti.",
|
"emails.invitation.body": "Bu epostayı aldınız, çünkü {{owner}} sizi {{project}} üzerinde {{team}} takımının üyesi olmaya davet etti.",
|
||||||
"emails.invitation.footer": "Eğer ilgilenmiyorsanız devam etmeyin.",
|
"emails.invitation.footer": "Eğer ilgilenmiyorsanız devam etmeyin.",
|
||||||
"emails.invitation.thanks": "Teşekkürler,",
|
"emails.invitation.thanks": "Teşekkürler,",
|
||||||
|
"emails.invitation.buttonText": "{{team}}'e daveti kabul et",
|
||||||
"emails.invitation.signature": "{{project}} takımı",
|
"emails.invitation.signature": "{{project}} takımı",
|
||||||
"locale.country.unknown": "Bilinmeyen",
|
"locale.country.unknown": "Bilinmeyen",
|
||||||
"countries.af": "Afganistan",
|
"countries.af": "Afganistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Перейдіть за цим посиланням, щоб підтвердити свою електронну адресу.",
|
"emails.verification.body": "Перейдіть за цим посиланням, щоб підтвердити свою електронну адресу.",
|
||||||
"emails.verification.footer": "Якщо ви не запитували підтвердження цієї адреси, ви можете ігнорувати це повідомлення.",
|
"emails.verification.footer": "Якщо ви не запитували підтвердження цієї адреси, ви можете ігнорувати це повідомлення.",
|
||||||
"emails.verification.thanks": "Дякуємо,",
|
"emails.verification.thanks": "Дякуємо,",
|
||||||
|
"emails.verification.buttonText": "Підтвердити адресу електронної пошти",
|
||||||
"emails.verification.signature": "команда {{project}}",
|
"emails.verification.signature": "команда {{project}}",
|
||||||
"emails.magicSession.subject": "Логін",
|
"emails.magicSession.subject": "Логін",
|
||||||
"emails.magicSession.hello": "Вітаємо,",
|
"emails.magicSession.hello": "Вітаємо,",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Перейдіть за цим посиланням для того щоб скинути свій пароль для проекту {{project}}",
|
"emails.recovery.body": "Перейдіть за цим посиланням для того щоб скинути свій пароль для проекту {{project}}",
|
||||||
"emails.recovery.footer": "Якщо ви не запитували скидання паролю, проігноруйте це повідомлення.",
|
"emails.recovery.footer": "Якщо ви не запитували скидання паролю, проігноруйте це повідомлення.",
|
||||||
"emails.recovery.thanks": "Дякуємо,",
|
"emails.recovery.thanks": "Дякуємо,",
|
||||||
|
"emails.recovery.buttonText": "Скинути пароль",
|
||||||
"emails.recovery.signature": "команда {{project}}",
|
"emails.recovery.signature": "команда {{project}}",
|
||||||
"emails.invitation.subject": "Запрошення до %s Команди у %s",
|
"emails.invitation.subject": "Запрошення до %s Команди у %s",
|
||||||
"emails.invitation.hello": "Вітаємо,",
|
"emails.invitation.hello": "Вітаємо,",
|
||||||
"emails.invitation.body": "Цей лист був надісланий вам тому що {{owner}} запрошує вас стати членом команди {{team}} у проекті {{project}}.",
|
"emails.invitation.body": "Цей лист був надісланий вам тому що {{owner}} запрошує вас стати членом команди {{team}} у проекті {{project}}.",
|
||||||
"emails.invitation.footer": "Якщо ви не зацікавлені, проігноруйте це повідомлення.",
|
"emails.invitation.footer": "Якщо ви не зацікавлені, проігноруйте це повідомлення.",
|
||||||
"emails.invitation.thanks": "Дякуємо,",
|
"emails.invitation.thanks": "Дякуємо,",
|
||||||
|
"emails.invitation.buttonText": "Прийняти запрошення до {{team}}",
|
||||||
"emails.invitation.signature": "команда {{project}}",
|
"emails.invitation.signature": "команда {{project}}",
|
||||||
"locale.country.unknown": "Невідомо",
|
"locale.country.unknown": "Невідомо",
|
||||||
"countries.af": "Афганістан",
|
"countries.af": "Афганістан",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "براہ کرم اپنے ای میل کی تصدیق کے لیے درج ذیل لنک پر عمل کریں۔",
|
"emails.verification.body": "براہ کرم اپنے ای میل کی تصدیق کے لیے درج ذیل لنک پر عمل کریں۔",
|
||||||
"emails.verification.footer": "اگر آپ نے اس پتے کی تصدیق کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
"emails.verification.footer": "اگر آپ نے اس پتے کی تصدیق کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
||||||
"emails.verification.thanks": "شکریہ،",
|
"emails.verification.thanks": "شکریہ،",
|
||||||
|
"emails.verification.buttonText": "ای میل پتہ کی تصدیق کریں",
|
||||||
"emails.verification.signature": "ٹیم۔ {{project}}",
|
"emails.verification.signature": "ٹیم۔ {{project}}",
|
||||||
"emails.magicSession.subject": "اگ ان کریں",
|
"emails.magicSession.subject": "اگ ان کریں",
|
||||||
"emails.magicSession.hello": "خوش آمدید،",
|
"emails.magicSession.hello": "خوش آمدید،",
|
||||||
|
|
@ -20,13 +21,15 @@
|
||||||
"emails.recovery.body": "{{project}} کا پاس ورڈ تبدیل کرنے کے لیے درج ذیل لنک پر عمل کریں",
|
"emails.recovery.body": "{{project}} کا پاس ورڈ تبدیل کرنے کے لیے درج ذیل لنک پر عمل کریں",
|
||||||
"emails.recovery.footer": "اگر آپ نے اپنا پاس ورڈ دوبارہ ترتیب دینے کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
"emails.recovery.footer": "اگر آپ نے اپنا پاس ورڈ دوبارہ ترتیب دینے کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
||||||
"emails.recovery.thanks": "شکریہ،",
|
"emails.recovery.thanks": "شکریہ،",
|
||||||
|
"emails.recovery.buttonText": "پاس ورڈ ری سیٹ کریں",
|
||||||
"emails.recovery.signature": "ٹیم۔ {{project}}",
|
"emails.recovery.signature": "ٹیم۔ {{project}}",
|
||||||
"emails.invitation.subject": "%s پر %s ٹیم کو دعوت",
|
"emails.invitation.subject": "%s پر %s ٹیم کو دعوت",
|
||||||
"emails.invitation.hello": "خوش آمدید،",
|
"emails.invitation.hello": "خوش آمدید،",
|
||||||
"emails.invitation.body": "یہ پیغام آپ کو اس لیے بھیجا گیا تھا کہ {{owner}} نے آپ کو {{project}} میں {{team}} ٹیم کا رکن بننے کی دعوت بھیجی",
|
"emails.invitation.body": "یہ پیغام آپ کو اس لیے بھیجا گیا تھا کہ {{owner}} نے آپ کو {{project}} میں {{team}} ٹیم کا رکن بننے کی دعوت بھیجی",
|
||||||
"emails.invitation.footer": "اگر آپ دلچسپی نہیں رکھتے تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
"emails.invitation.footer": "اگر آپ دلچسپی نہیں رکھتے تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
||||||
"emails.invitation.thanks": "شکریہ،",
|
"emails.invitation.thanks": "شکریہ،",
|
||||||
"emails.invitation.signature": "ٹیم۔ {{project}",
|
"emails.invitation.buttonText": "{{team}} کی دعوت قبول کریں",
|
||||||
|
"emails.invitation.signature": "ٹیم۔ {{project}}",
|
||||||
"locale.country.unknown": "نامعلوم",
|
"locale.country.unknown": "نامعلوم",
|
||||||
"countries.af": "افغانستان",
|
"countries.af": "افغانستان",
|
||||||
"countries.ao": "انگولا",
|
"countries.ao": "انگولا",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "Nhấn vào đường dẫn sau để xác minh địa chỉ email của bạn.",
|
"emails.verification.body": "Nhấn vào đường dẫn sau để xác minh địa chỉ email của bạn.",
|
||||||
"emails.verification.footer": "Nếu bạn không yêu cầu xác minh tài khoản, bạn có thể bỏ qua email này.",
|
"emails.verification.footer": "Nếu bạn không yêu cầu xác minh tài khoản, bạn có thể bỏ qua email này.",
|
||||||
"emails.verification.thanks": "Cảm ơn",
|
"emails.verification.thanks": "Cảm ơn",
|
||||||
|
"emails.verification.buttonText": "Xác nhận địa chỉ email",
|
||||||
"emails.verification.signature": "Nhóm {{project}}",
|
"emails.verification.signature": "Nhóm {{project}}",
|
||||||
"emails.magicSession.subject": "Đăng nhập",
|
"emails.magicSession.subject": "Đăng nhập",
|
||||||
"emails.magicSession.hello": "Chào",
|
"emails.magicSession.hello": "Chào",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "Nhấn vào đường dẫn sau để thiết lập lại mật khẩu {{project}} của bạn.",
|
"emails.recovery.body": "Nhấn vào đường dẫn sau để thiết lập lại mật khẩu {{project}} của bạn.",
|
||||||
"emails.recovery.footer": "Nếu bạn không yêu cầu thiết lập lại mật khẩu, bạn có thể bỏ qua email này.",
|
"emails.recovery.footer": "Nếu bạn không yêu cầu thiết lập lại mật khẩu, bạn có thể bỏ qua email này.",
|
||||||
"emails.recovery.thanks": "Cảm ơn",
|
"emails.recovery.thanks": "Cảm ơn",
|
||||||
|
"emails.recovery.buttonText": "Đặt lại mật khẩu",
|
||||||
"emails.recovery.signature": "Nhóm {{project}}",
|
"emails.recovery.signature": "Nhóm {{project}}",
|
||||||
"emails.invitation.subject": "Lời mời tham gia nhóm %s tại %s",
|
"emails.invitation.subject": "Lời mời tham gia nhóm %s tại %s",
|
||||||
"emails.invitation.hello": "Xin chào",
|
"emails.invitation.hello": "Xin chào",
|
||||||
"emails.invitation.body": "Email này được gửi cho bạn vì {{owner}} muốn mời bạn trở thành một thành viên của nhóm {{team}} tại {{project}}.",
|
"emails.invitation.body": "Email này được gửi cho bạn vì {{owner}} muốn mời bạn trở thành một thành viên của nhóm {{team}} tại {{project}}.",
|
||||||
"emails.invitation.footer": "Nếu bạn không quan tâm, bạn có thể bỏ qua email này.",
|
"emails.invitation.footer": "Nếu bạn không quan tâm, bạn có thể bỏ qua email này.",
|
||||||
"emails.invitation.thanks": "Cảm ơn",
|
"emails.invitation.thanks": "Cảm ơn",
|
||||||
|
"emails.invitation.buttonText": "Chấp nhận lời mời vào {{team}}",
|
||||||
"emails.invitation.signature": "Nhóm {{project}}",
|
"emails.invitation.signature": "Nhóm {{project}}",
|
||||||
"locale.country.unknown": "Không xác định",
|
"locale.country.unknown": "Không xác định",
|
||||||
"countries.af": "Afghanistan",
|
"countries.af": "Afghanistan",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "点此链接验证您的电子邮件地址。",
|
"emails.verification.body": "点此链接验证您的电子邮件地址。",
|
||||||
"emails.verification.footer": "如果您没有要求验证此地址,则可忽略此消息。",
|
"emails.verification.footer": "如果您没有要求验证此地址,则可忽略此消息。",
|
||||||
"emails.verification.thanks": "谢谢、",
|
"emails.verification.thanks": "谢谢、",
|
||||||
|
"emails.verification.buttonText": "确认邮箱地址",
|
||||||
"emails.verification.signature": "{{project}} 团队",
|
"emails.verification.signature": "{{project}} 团队",
|
||||||
"emails.magicSession.subject": "登录",
|
"emails.magicSession.subject": "登录",
|
||||||
"emails.magicSession.hello": "你好、",
|
"emails.magicSession.hello": "你好、",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "点此链接重置您的 {{project}} 密码。",
|
"emails.recovery.body": "点此链接重置您的 {{project}} 密码。",
|
||||||
"emails.recovery.footer": "如果您没有要求重置密码,则可以忽略此消息。",
|
"emails.recovery.footer": "如果您没有要求重置密码,则可以忽略此消息。",
|
||||||
"emails.recovery.thanks": "谢谢、",
|
"emails.recovery.thanks": "谢谢、",
|
||||||
|
"emails.recovery.buttonText": "重置密码",
|
||||||
"emails.recovery.signature": "{{project}} 团队",
|
"emails.recovery.signature": "{{project}} 团队",
|
||||||
"emails.invitation.subject": "邀请 %s 团队在 %s",
|
"emails.invitation.subject": "邀请 %s 团队在 %s",
|
||||||
"emails.invitation.hello": "你好、",
|
"emails.invitation.hello": "你好、",
|
||||||
"emails.invitation.body": "这封邮件发送给您是因为 {{owner}} 想邀请您成为 {{team}} 团队在 {{project}}.",
|
"emails.invitation.body": "这封邮件发送给您是因为 {{owner}} 想邀请您成为 {{team}} 团队在 {{project}}.",
|
||||||
"emails.invitation.footer": "如果您不感兴趣,可以忽略此消息。",
|
"emails.invitation.footer": "如果您不感兴趣,可以忽略此消息。",
|
||||||
"emails.invitation.thanks": "谢谢、",
|
"emails.invitation.thanks": "谢谢、",
|
||||||
|
"emails.invitation.buttonText": "接受加入 {{team}} 的邀请",
|
||||||
"emails.invitation.signature": "{{project}} 团队",
|
"emails.invitation.signature": "{{project}} 团队",
|
||||||
"locale.country.unknown": "未知",
|
"locale.country.unknown": "未知",
|
||||||
"countries.af": "阿富汗",
|
"countries.af": "阿富汗",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
"emails.verification.body": "按照此連結驗證您的電子郵件地址。",
|
"emails.verification.body": "按照此連結驗證您的電子郵件地址。",
|
||||||
"emails.verification.footer": "如果您沒有要求驗證此地址,則可以忽略此消息。",
|
"emails.verification.footer": "如果您沒有要求驗證此地址,則可以忽略此消息。",
|
||||||
"emails.verification.thanks": "謝謝、",
|
"emails.verification.thanks": "謝謝、",
|
||||||
|
"emails.verification.buttonText": "確認電子郵件地址",
|
||||||
"emails.verification.signature": "{{project}} 團隊",
|
"emails.verification.signature": "{{project}} 團隊",
|
||||||
"emails.magicSession.subject": "登入",
|
"emails.magicSession.subject": "登入",
|
||||||
"emails.magicSession.hello": "嗨、",
|
"emails.magicSession.hello": "嗨、",
|
||||||
|
|
@ -20,12 +21,14 @@
|
||||||
"emails.recovery.body": "按照此連結重置您的 {{project}} 密碼。",
|
"emails.recovery.body": "按照此連結重置您的 {{project}} 密碼。",
|
||||||
"emails.recovery.footer": "如果您沒有要求重置密碼,則可以忽略此消息。",
|
"emails.recovery.footer": "如果您沒有要求重置密碼,則可以忽略此消息。",
|
||||||
"emails.recovery.thanks": "謝謝、",
|
"emails.recovery.thanks": "謝謝、",
|
||||||
|
"emails.recovery.buttonText": "重設密碼",
|
||||||
"emails.recovery.signature": "{{project}} 團隊",
|
"emails.recovery.signature": "{{project}} 團隊",
|
||||||
"emails.invitation.subject": "邀請 %s 團隊在 %s",
|
"emails.invitation.subject": "邀請 %s 團隊在 %s",
|
||||||
"emails.invitation.hello": "您好、",
|
"emails.invitation.hello": "您好、",
|
||||||
"emails.invitation.body": "發送這封郵件給您是因為 {{owner}} 想邀請您成為 {{team}} 團隊在 {{project}}。",
|
"emails.invitation.body": "發送這封郵件給您是因為 {{owner}} 想邀請您成為 {{team}} 團隊在 {{project}}。",
|
||||||
"emails.invitation.footer": "如果您不感興趣,可以忽略此消息。",
|
"emails.invitation.footer": "如果您不感興趣,可以忽略此消息。",
|
||||||
"emails.invitation.thanks": "謝謝、",
|
"emails.invitation.thanks": "謝謝、",
|
||||||
|
"emails.invitation.buttonText": "接受加入 {{team}} 的邀請",
|
||||||
"emails.invitation.signature": "{{project}} 團隊",
|
"emails.invitation.signature": "{{project}} 團隊",
|
||||||
"locale.country.unknown": "未知",
|
"locale.country.unknown": "未知",
|
||||||
"countries.af": "阿富汗",
|
"countries.af": "阿富汗",
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ return [
|
||||||
[
|
[
|
||||||
'key' => 'react-native',
|
'key' => 'react-native',
|
||||||
'name' => 'React Native',
|
'name' => 'React Native',
|
||||||
'version' => '0.9.1',
|
'version' => '0.10.0',
|
||||||
'url' => 'https://github.com/appwrite/sdk-for-react-native',
|
'url' => 'https://github.com/appwrite/sdk-for-react-native',
|
||||||
'package' => 'https://npmjs.com/package/react-native-appwrite',
|
'package' => 'https://npmjs.com/package/react-native-appwrite',
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
|
|
@ -217,7 +217,7 @@ return [
|
||||||
[
|
[
|
||||||
'key' => 'cli',
|
'key' => 'cli',
|
||||||
'name' => 'Command Line',
|
'name' => 'Command Line',
|
||||||
'version' => '8.0.0',
|
'version' => '8.1.0',
|
||||||
'url' => 'https://github.com/appwrite/sdk-for-cli',
|
'url' => 'https://github.com/appwrite/sdk-for-cli',
|
||||||
'package' => 'https://www.npmjs.com/package/appwrite-cli',
|
'package' => 'https://www.npmjs.com/package/appwrite-cli',
|
||||||
'enabled' => true,
|
'enabled' => true,
|
||||||
|
|
|
||||||
|
|
@ -4666,7 +4666,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -6595,7 +6595,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
|
||||||
|
|
@ -8071,7 +8071,7 @@
|
||||||
"model": "#\/components\/schemas\/documentList"
|
"model": "#\/components\/schemas\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -8151,7 +8151,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8242,7 +8242,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8335,7 +8335,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8520,7 +8520,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -9767,6 +9767,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -9792,7 +9793,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -10395,6 +10397,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -10420,7 +10423,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -25446,12 +25450,33 @@
|
||||||
"Temporary Redirect 307",
|
"Temporary Redirect 307",
|
||||||
"Permanent Redirect 308"
|
"Permanent Redirect 308"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"resourceId": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "ID of parent resource.",
|
||||||
|
"x-example": "<RESOURCE_ID>"
|
||||||
|
},
|
||||||
|
"resourceType": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Type of parent resource.",
|
||||||
|
"x-example": "site",
|
||||||
|
"enum": [
|
||||||
|
"site",
|
||||||
|
"function"
|
||||||
|
],
|
||||||
|
"x-enum-name": "ProxyResourceType",
|
||||||
|
"x-enum-keys": [
|
||||||
|
"Site",
|
||||||
|
"Function"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"domain",
|
"domain",
|
||||||
"url",
|
"url",
|
||||||
"statusCode"
|
"statusCode",
|
||||||
|
"resourceId",
|
||||||
|
"resourceType"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -25936,6 +25961,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -25961,7 +25987,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -26580,6 +26607,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -26605,7 +26633,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -29364,7 +29393,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
@ -34846,6 +34876,17 @@
|
||||||
"default": ""
|
"default": ""
|
||||||
},
|
},
|
||||||
"in": "query"
|
"in": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "providerReference",
|
||||||
|
"description": "Git reference (branch, tag, commit) to get contents from",
|
||||||
|
"required": false,
|
||||||
|
"schema": {
|
||||||
|
"type": "string",
|
||||||
|
"x-example": "<PROVIDER_REFERENCE>",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7552,7 +7552,7 @@
|
||||||
"model": "#\/components\/schemas\/documentList"
|
"model": "#\/components\/schemas\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -7634,7 +7634,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7726,7 +7726,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7820,7 +7820,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8008,7 +8008,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -8844,6 +8844,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -8869,7 +8870,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -9244,6 +9246,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -9269,7 +9272,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -17490,6 +17494,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -17515,7 +17520,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -17906,6 +17912,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -17931,7 +17938,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -20646,7 +20654,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
|
||||||
|
|
@ -4492,29 +4492,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "createDocuments",
|
|
||||||
"auth": {
|
|
||||||
"Key": []
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
"databaseId",
|
|
||||||
"collectionId",
|
|
||||||
"documents"
|
|
||||||
],
|
|
||||||
"required": [
|
|
||||||
"databaseId",
|
|
||||||
"collectionId",
|
|
||||||
"documents"
|
|
||||||
],
|
|
||||||
"responses": [
|
|
||||||
{
|
|
||||||
"code": 201,
|
|
||||||
"model": "#\/components\/schemas\/documentList"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -4691,7 +4668,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
|
||||||
|
|
@ -8074,7 +8074,7 @@
|
||||||
"model": "#\/components\/schemas\/documentList"
|
"model": "#\/components\/schemas\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -8154,7 +8154,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8246,7 +8246,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8340,7 +8340,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8526,7 +8526,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
|
||||||
|
|
@ -7555,7 +7555,7 @@
|
||||||
"model": "#\/components\/schemas\/documentList"
|
"model": "#\/components\/schemas\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -7637,7 +7637,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7730,7 +7730,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7825,7 +7825,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8014,7 +8014,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
|
||||||
|
|
@ -4809,7 +4809,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -6729,7 +6729,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
|
||||||
|
|
@ -8200,7 +8200,7 @@
|
||||||
"model": "#\/definitions\/documentList"
|
"model": "#\/definitions\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -8284,7 +8284,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8372,7 +8372,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8463,7 +8463,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8638,7 +8638,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -9835,6 +9835,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -9860,7 +9861,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -10466,6 +10468,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -10491,7 +10494,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -25696,12 +25700,35 @@
|
||||||
"Temporary Redirect 307",
|
"Temporary Redirect 307",
|
||||||
"Permanent Redirect 308"
|
"Permanent Redirect 308"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"resourceId": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "ID of parent resource.",
|
||||||
|
"default": null,
|
||||||
|
"x-example": "<RESOURCE_ID>"
|
||||||
|
},
|
||||||
|
"resourceType": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Type of parent resource.",
|
||||||
|
"default": null,
|
||||||
|
"x-example": "site",
|
||||||
|
"enum": [
|
||||||
|
"site",
|
||||||
|
"function"
|
||||||
|
],
|
||||||
|
"x-enum-name": "ProxyResourceType",
|
||||||
|
"x-enum-keys": [
|
||||||
|
"Site",
|
||||||
|
"Function"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"domain",
|
"domain",
|
||||||
"url",
|
"url",
|
||||||
"statusCode"
|
"statusCode",
|
||||||
|
"resourceId",
|
||||||
|
"resourceType"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -26203,6 +26230,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -26228,7 +26256,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -26850,6 +26879,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -26875,7 +26905,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -29604,7 +29635,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
@ -35063,6 +35095,15 @@
|
||||||
"x-example": "<PROVIDER_ROOT_DIRECTORY>",
|
"x-example": "<PROVIDER_ROOT_DIRECTORY>",
|
||||||
"default": "",
|
"default": "",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "providerReference",
|
||||||
|
"description": "Git reference (branch, tag, commit) to get contents from",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"x-example": "<PROVIDER_REFERENCE>",
|
||||||
|
"default": "",
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7671,7 +7671,7 @@
|
||||||
"model": "#\/definitions\/documentList"
|
"model": "#\/definitions\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -7757,7 +7757,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7846,7 +7846,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7938,7 +7938,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8116,7 +8116,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -8927,6 +8927,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -8952,7 +8953,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -9340,6 +9342,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -9365,7 +9368,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -17792,6 +17796,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -17817,7 +17822,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -18221,6 +18227,7 @@
|
||||||
"dart-3.1",
|
"dart-3.1",
|
||||||
"dart-3.3",
|
"dart-3.3",
|
||||||
"dart-3.5",
|
"dart-3.5",
|
||||||
|
"dart-3.8",
|
||||||
"dotnet-6.0",
|
"dotnet-6.0",
|
||||||
"dotnet-7.0",
|
"dotnet-7.0",
|
||||||
"dotnet-8.0",
|
"dotnet-8.0",
|
||||||
|
|
@ -18246,7 +18253,8 @@
|
||||||
"static-1",
|
"static-1",
|
||||||
"flutter-3.24",
|
"flutter-3.24",
|
||||||
"flutter-3.27",
|
"flutter-3.27",
|
||||||
"flutter-3.29"
|
"flutter-3.29",
|
||||||
|
"flutter-3.32"
|
||||||
],
|
],
|
||||||
"x-enum-name": null,
|
"x-enum-name": null,
|
||||||
"x-enum-keys": []
|
"x-enum-keys": []
|
||||||
|
|
@ -20935,7 +20943,8 @@
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
"heic",
|
"heic",
|
||||||
"avif"
|
"avif",
|
||||||
|
"gif"
|
||||||
],
|
],
|
||||||
"x-enum-name": "ImageFormat",
|
"x-enum-name": "ImageFormat",
|
||||||
"x-enum-keys": [],
|
"x-enum-keys": [],
|
||||||
|
|
|
||||||
|
|
@ -3451,7 +3451,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3576,7 +3575,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3707,7 +3705,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3770,7 +3767,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4257,7 +4253,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4340,7 +4335,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4431,7 +4425,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4522,7 +4515,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4605,7 +4597,6 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"console",
|
"console",
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4638,29 +4629,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "createDocuments",
|
|
||||||
"auth": {
|
|
||||||
"Key": []
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
"databaseId",
|
|
||||||
"collectionId",
|
|
||||||
"documents"
|
|
||||||
],
|
|
||||||
"required": [
|
|
||||||
"databaseId",
|
|
||||||
"collectionId",
|
|
||||||
"documents"
|
|
||||||
],
|
|
||||||
"responses": [
|
|
||||||
{
|
|
||||||
"code": 201,
|
|
||||||
"model": "#\/definitions\/documentList"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -4768,7 +4736,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4834,7 +4801,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -4858,7 +4825,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4963,7 +4929,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5060,7 +5025,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5356,7 +5320,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5430,7 +5393,6 @@
|
||||||
"scope": "execution.write",
|
"scope": "execution.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5547,7 +5509,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5619,8 +5580,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -5693,8 +5653,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -5765,7 +5724,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5817,7 +5775,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5869,7 +5826,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5921,7 +5877,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -5973,7 +5928,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6025,7 +5979,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6077,7 +6030,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6129,7 +6081,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6184,8 +6135,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -6269,8 +6219,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -6339,7 +6288,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6422,7 +6370,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6512,7 +6459,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6582,7 +6528,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6671,7 +6616,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6741,7 +6685,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -6820,7 +6763,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7027,7 +6969,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7106,7 +7047,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7181,7 +7121,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7271,7 +7210,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7333,7 +7271,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7408,7 +7345,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7470,7 +7406,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7553,7 +7488,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7666,7 +7600,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7736,7 +7669,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7822,7 +7754,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
|
||||||
|
|
@ -3466,7 +3466,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3591,7 +3590,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3722,7 +3720,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3785,7 +3782,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4272,7 +4268,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4355,7 +4350,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4446,7 +4440,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8064,7 +8057,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8147,7 +8139,6 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"console",
|
"console",
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8203,7 +8194,7 @@
|
||||||
"model": "#\/definitions\/documentList"
|
"model": "#\/definitions\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -8287,7 +8278,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8376,7 +8367,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8468,7 +8459,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8578,7 +8569,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8644,7 +8634,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -8668,7 +8658,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8773,7 +8762,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8870,7 +8858,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -11588,7 +11575,6 @@
|
||||||
"rate-key": "url:{url},ip:{ip}",
|
"rate-key": "url:{url},ip:{ip}",
|
||||||
"scope": "functions.read",
|
"scope": "functions.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -11742,7 +11728,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -11816,7 +11801,6 @@
|
||||||
"scope": "execution.write",
|
"scope": "execution.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -11933,7 +11917,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -12520,8 +12503,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -12594,8 +12576,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -13929,7 +13910,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -13981,7 +13961,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14033,7 +14012,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14085,7 +14063,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14137,7 +14114,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14189,7 +14165,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14241,7 +14216,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -14293,7 +14267,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -18682,8 +18655,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -18833,8 +18805,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -27957,7 +27928,6 @@
|
||||||
"rate-key": "url:{url},ip:{ip}",
|
"rate-key": "url:{url},ip:{ip}",
|
||||||
"scope": "sites.read",
|
"scope": "sites.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29226,7 +29196,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29309,7 +29278,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29399,7 +29367,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29469,7 +29436,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29558,7 +29524,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29628,7 +29593,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29707,7 +29671,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -29914,7 +29877,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30141,7 +30103,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30216,7 +30177,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30306,7 +30266,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30368,7 +30327,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30443,7 +30401,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30575,7 +30532,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30658,7 +30614,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30771,7 +30726,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30841,7 +30795,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -30927,7 +30880,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
|
||||||
|
|
@ -3142,7 +3142,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3269,7 +3268,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3402,7 +3400,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3467,7 +3464,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -3956,7 +3952,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4041,7 +4036,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -4134,7 +4128,6 @@
|
||||||
"scope": "avatars.read",
|
"scope": "avatars.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7533,7 +7526,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7618,7 +7610,6 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"console",
|
"console",
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -7674,7 +7665,7 @@
|
||||||
"model": "#\/definitions\/documentList"
|
"model": "#\/definitions\/documentList"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Create new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate new Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -7760,7 +7751,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.\n",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update Documents. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7850,7 +7841,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Update all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nUpdate all documents that match your queries, if no queries are submitted then all documents are updated. You can pass only specific fields to be updated.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -7943,7 +7934,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Bulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nBulk delete documents using queries, if no queries are passed then all documents are deleted.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Documents List",
|
"description": "Documents List",
|
||||||
|
|
@ -8054,7 +8045,6 @@
|
||||||
"scope": "documents.read",
|
"scope": "documents.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8122,7 +8112,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"databases"
|
"databases"
|
||||||
],
|
],
|
||||||
"description": "Create or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
"description": "**WARNING: Experimental Feature** - This endpoint is experimental and not yet officially supported. It may be subject to breaking changes or removal in future versions.\n\nCreate or update a Document. Before using this route, you should create a new collection resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.",
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Document",
|
"description": "Document",
|
||||||
|
|
@ -8146,7 +8136,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8253,7 +8242,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -8352,7 +8340,6 @@
|
||||||
"scope": "documents.write",
|
"scope": "documents.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -10475,7 +10462,6 @@
|
||||||
"rate-key": "url:{url},ip:{ip}",
|
"rate-key": "url:{url},ip:{ip}",
|
||||||
"scope": "functions.read",
|
"scope": "functions.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -10631,7 +10617,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -10707,7 +10692,6 @@
|
||||||
"scope": "execution.write",
|
"scope": "execution.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -10826,7 +10810,6 @@
|
||||||
"scope": "execution.read",
|
"scope": "execution.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -11343,8 +11326,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -11419,8 +11401,7 @@
|
||||||
"scope": "graphql",
|
"scope": "graphql",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -12778,7 +12759,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -12832,7 +12812,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -12886,7 +12865,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -12940,7 +12918,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -12994,7 +12971,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -13048,7 +13024,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -13102,7 +13077,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -13156,7 +13130,6 @@
|
||||||
"scope": "locale.read",
|
"scope": "locale.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -17590,8 +17563,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -17744,8 +17716,7 @@
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
"server",
|
||||||
"client",
|
"client",
|
||||||
"console",
|
"console"
|
||||||
"server"
|
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
"auth": {
|
"auth": {
|
||||||
|
|
@ -19318,7 +19289,6 @@
|
||||||
"rate-key": "url:{url},ip:{ip}",
|
"rate-key": "url:{url},ip:{ip}",
|
||||||
"scope": "sites.read",
|
"scope": "sites.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20524,7 +20494,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20609,7 +20578,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20701,7 +20669,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20773,7 +20740,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20864,7 +20830,6 @@
|
||||||
"scope": "files.write",
|
"scope": "files.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -20936,7 +20901,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21017,7 +20981,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21226,7 +21189,6 @@
|
||||||
"scope": "files.read",
|
"scope": "files.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21307,7 +21269,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21384,7 +21345,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21476,7 +21436,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21540,7 +21499,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21617,7 +21575,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21681,7 +21638,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21766,7 +21722,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21881,7 +21836,6 @@
|
||||||
"scope": "teams.read",
|
"scope": "teams.read",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -21953,7 +21907,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
@ -22041,7 +21994,6 @@
|
||||||
"scope": "teams.write",
|
"scope": "teams.write",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"client",
|
"client",
|
||||||
"server",
|
|
||||||
"server"
|
"server"
|
||||||
],
|
],
|
||||||
"packaging": false,
|
"packaging": false,
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,8 @@ use Utopia\System\System;
|
||||||
* List of Appwrite Sites templates
|
* List of Appwrite Sites templates
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https';
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||||
$hostname = System::getEnv('_APP_DOMAIN');
|
$hostname = System::getEnv('_APP_DOMAIN', '');
|
||||||
|
|
||||||
// TODO: Development override
|
|
||||||
if (System::getEnv('_APP_ENV') === 'development') {
|
|
||||||
$hostname = 'localhost';
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = $protocol . '://' . $hostname;
|
$url = $protocol . '://' . $hostname;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ use Appwrite\Event\StatsUsage;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Hooks\Hooks;
|
use Appwrite\Hooks\Hooks;
|
||||||
use Appwrite\Network\Validator\Email;
|
use Appwrite\Network\Validator\Email;
|
||||||
|
use Appwrite\Network\Validator\Redirect;
|
||||||
use Appwrite\OpenSSL\OpenSSL;
|
use Appwrite\OpenSSL\OpenSSL;
|
||||||
use Appwrite\SDK\AuthType;
|
use Appwrite\SDK\AuthType;
|
||||||
use Appwrite\SDK\ContentType;
|
use Appwrite\SDK\ContentType;
|
||||||
|
|
@ -60,7 +61,6 @@ use Utopia\System\System;
|
||||||
use Utopia\Validator\ArrayList;
|
use Utopia\Validator\ArrayList;
|
||||||
use Utopia\Validator\Assoc;
|
use Utopia\Validator\Assoc;
|
||||||
use Utopia\Validator\Boolean;
|
use Utopia\Validator\Boolean;
|
||||||
use Utopia\Validator\Host;
|
|
||||||
use Utopia\Validator\Text;
|
use Utopia\Validator\Text;
|
||||||
use Utopia\Validator\URL;
|
use Utopia\Validator\URL;
|
||||||
use Utopia\Validator\WhiteList;
|
use Utopia\Validator\WhiteList;
|
||||||
|
|
@ -1182,8 +1182,8 @@ App::get('/v1/account/sessions/oauth2/:provider')
|
||||||
->label('abuse-limit', 50)
|
->label('abuse-limit', 50)
|
||||||
->label('abuse-key', 'ip:{ip}')
|
->label('abuse-key', 'ip:{ip}')
|
||||||
->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.')
|
->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.')
|
||||||
->param('success', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey'])
|
->param('success', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey'])
|
||||||
->param('failure', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey'])
|
->param('failure', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey'])
|
||||||
->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true)
|
->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true)
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
|
@ -1282,7 +1282,6 @@ App::post('/v1/account/sessions/oauth2/callback/:provider/:projectId')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (string $projectId, string $provider, string $code, string $state, string $error, string $error_description, Request $request, Response $response) {
|
->action(function (string $projectId, string $provider, string $code, string $state, string $error, string $error_description, Request $request, Response $response) {
|
||||||
|
|
||||||
$domain = $request->getHostname();
|
$domain = $request->getHostname();
|
||||||
$protocol = $request->getProtocol();
|
$protocol = $request->getProtocol();
|
||||||
|
|
||||||
|
|
@ -1779,8 +1778,8 @@ App::get('/v1/account/tokens/oauth2/:provider')
|
||||||
->label('abuse-limit', 50)
|
->label('abuse-limit', 50)
|
||||||
->label('abuse-key', 'ip:{ip}')
|
->label('abuse-key', 'ip:{ip}')
|
||||||
->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.')
|
->param('provider', '', new WhiteList(\array_keys(Config::getParam('oAuthProviders')), true), 'OAuth2 Provider. Currently, supported providers are: ' . \implode(', ', \array_keys(\array_filter(Config::getParam('oAuthProviders'), fn ($node) => (!$node['mock'])))) . '.')
|
||||||
->param('success', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey'])
|
->param('success', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey'])
|
||||||
->param('failure', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey'])
|
->param('failure', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project\'s platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey'])
|
||||||
->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true)
|
->param('scopes', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' scopes are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true)
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
|
@ -1860,7 +1859,7 @@ App::post('/v1/account/tokens/magic-url')
|
||||||
->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}'])
|
->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}'])
|
||||||
->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.')
|
->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.')
|
||||||
->param('email', '', new Email(), 'User email.')
|
->param('email', '', new Email(), 'User email.')
|
||||||
->param('url', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey'])
|
->param('url', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey'])
|
||||||
->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true)
|
->param('phrase', false, new Boolean(), 'Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.', true)
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
|
@ -3158,7 +3157,7 @@ App::post('/v1/account/recovery')
|
||||||
->label('abuse-limit', 10)
|
->label('abuse-limit', 10)
|
||||||
->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}'])
|
->label('abuse-key', ['url:{url},email:{param-email}', 'url:{url},ip:{ip}'])
|
||||||
->param('email', '', new Email(), 'User email.')
|
->param('email', '', new Email(), 'User email.')
|
||||||
->param('url', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients', 'devKey'])
|
->param('url', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['platforms', 'devKey'])
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
|
|
@ -3229,6 +3228,7 @@ App::post('/v1/account/recovery')
|
||||||
->setParam('{{hello}}', $locale->getText("emails.recovery.hello"))
|
->setParam('{{hello}}', $locale->getText("emails.recovery.hello"))
|
||||||
->setParam('{{footer}}', $locale->getText("emails.recovery.footer"))
|
->setParam('{{footer}}', $locale->getText("emails.recovery.footer"))
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.recovery.thanks"))
|
->setParam('{{thanks}}', $locale->getText("emails.recovery.thanks"))
|
||||||
|
->setParam('{{buttonText}}', $locale->getText("emails.recovery.buttonText"))
|
||||||
->setParam('{{signature}}', $locale->getText("emails.recovery.signature"));
|
->setParam('{{signature}}', $locale->getText("emails.recovery.signature"));
|
||||||
$body = $message->render();
|
$body = $message->render();
|
||||||
|
|
||||||
|
|
@ -3424,7 +3424,7 @@ App::post('/v1/account/verification')
|
||||||
))
|
))
|
||||||
->label('abuse-limit', 10)
|
->label('abuse-limit', 10)
|
||||||
->label('abuse-key', 'url:{url},userId:{userId}')
|
->label('abuse-key', 'url:{url},userId:{userId}')
|
||||||
->param('url', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['clients', 'devKey']) // TODO add built-in confirm page
|
->param('url', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', false, ['platforms', 'devKey']) // TODO add built-in confirm page
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
|
|
@ -3484,6 +3484,7 @@ App::post('/v1/account/verification')
|
||||||
->setParam('{{hello}}', $locale->getText("emails.verification.hello"))
|
->setParam('{{hello}}', $locale->getText("emails.verification.hello"))
|
||||||
->setParam('{{footer}}', $locale->getText("emails.verification.footer"))
|
->setParam('{{footer}}', $locale->getText("emails.verification.footer"))
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.verification.thanks"))
|
->setParam('{{thanks}}', $locale->getText("emails.verification.thanks"))
|
||||||
|
->setParam('{{buttonText}}', $locale->getText("emails.verification.buttonText"))
|
||||||
->setParam('{{signature}}', $locale->getText("emails.verification.signature"));
|
->setParam('{{signature}}', $locale->getText("emails.verification.signature"));
|
||||||
|
|
||||||
$body = $message->render();
|
$body = $message->render();
|
||||||
|
|
|
||||||
|
|
@ -523,11 +523,16 @@ App::get('/v1/health/queue/databases')
|
||||||
->param('name', 'database_db_main', new Text(256), 'Queue name for which to check the queue size', true)
|
->param('name', 'database_db_main', new Text(256), 'Queue name for which to check the queue size', true)
|
||||||
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
|
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
|
||||||
->inject('publisher')
|
->inject('publisher')
|
||||||
|
->inject('publisherRedis')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (string $name, int|string $threshold, Publisher $publisher, Response $response) {
|
->action(function (string $name, int|string $threshold, Publisher $publisher, ?Publisher $publisherRedis, Response $response) {
|
||||||
$threshold = \intval($threshold);
|
$threshold = \intval($threshold);
|
||||||
|
|
||||||
$size = $publisher->getQueueSize(new Queue($name));
|
$isRedisFallback = \str_contains(System::getEnv('_APP_WORKER_REDIS_FALLBACK', ''), 'databases');
|
||||||
|
|
||||||
|
$size = $isRedisFallback
|
||||||
|
? $publisherRedis->getQueueSize(new Queue($name))
|
||||||
|
: $publisher->getQueueSize(new Queue($name));
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
|
|
@ -655,11 +660,16 @@ App::get('/v1/health/queue/migrations')
|
||||||
))
|
))
|
||||||
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
|
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
|
||||||
->inject('publisher')
|
->inject('publisher')
|
||||||
|
->inject('publisherRedis')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (int|string $threshold, Publisher $publisher, Response $response) {
|
->action(function (int|string $threshold, Publisher $publisher, ?Publisher $publisherRedis, Response $response) {
|
||||||
$threshold = \intval($threshold);
|
$threshold = \intval($threshold);
|
||||||
|
|
||||||
$size = $publisher->getQueueSize(new Queue(Event::MIGRATIONS_QUEUE_NAME));
|
$isRedisFallback = \str_contains(System::getEnv('_APP_WORKER_REDIS_FALLBACK', ''), 'migrations');
|
||||||
|
|
||||||
|
$size = $isRedisFallback
|
||||||
|
? $publisherRedis->getQueueSize(new Queue(Event::MIGRATIONS_QUEUE_NAME))
|
||||||
|
: $publisher->getQueueSize(new Queue(Event::MIGRATIONS_QUEUE_NAME));
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
|
|
|
||||||
|
|
@ -361,7 +361,7 @@ App::post('/v1/migrations/csv')
|
||||||
$hasCompression = $compression !== Compression::NONE;
|
$hasCompression = $compression !== Compression::NONE;
|
||||||
|
|
||||||
$migrationId = ID::unique();
|
$migrationId = ID::unique();
|
||||||
$newPath = $deviceForImports->getPath('/' . $migrationId . '_' . $fileId . '.csv');
|
$newPath = $deviceForImports->getPath($migrationId . '_' . $fileId . '.csv');
|
||||||
|
|
||||||
if ($hasEncryption || $hasCompression) {
|
if ($hasEncryption || $hasCompression) {
|
||||||
$source = $deviceForFiles->read($path);
|
$source = $deviceForFiles->read($path);
|
||||||
|
|
@ -410,8 +410,8 @@ App::post('/v1/migrations/csv')
|
||||||
'resources' => $resources,
|
'resources' => $resources,
|
||||||
'resourceId' => $resourceId,
|
'resourceId' => $resourceId,
|
||||||
'resourceType' => Resource::TYPE_DATABASE,
|
'resourceType' => Resource::TYPE_DATABASE,
|
||||||
'statusCounters' => [],
|
'statusCounters' => '{}',
|
||||||
'resourceData' => [],
|
'resourceData' => '{}',
|
||||||
'errors' => [],
|
'errors' => [],
|
||||||
'options' => [
|
'options' => [
|
||||||
'path' => $newPath,
|
'path' => $newPath,
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ use Appwrite\Event\Mail;
|
||||||
use Appwrite\Event\Validator\Event;
|
use Appwrite\Event\Validator\Event;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Hooks\Hooks;
|
use Appwrite\Hooks\Hooks;
|
||||||
|
use Appwrite\Network\Platform;
|
||||||
use Appwrite\Network\Validator\Email;
|
use Appwrite\Network\Validator\Email;
|
||||||
use Appwrite\Network\Validator\Origin;
|
|
||||||
use Appwrite\SDK\AuthType;
|
use Appwrite\SDK\AuthType;
|
||||||
use Appwrite\SDK\ContentType;
|
use Appwrite\SDK\ContentType;
|
||||||
use Appwrite\SDK\Method;
|
use Appwrite\SDK\Method;
|
||||||
|
|
@ -1791,7 +1791,7 @@ App::post('/v1/projects/:projectId/platforms')
|
||||||
]
|
]
|
||||||
))
|
))
|
||||||
->param('projectId', '', new UID(), 'Project unique ID.')
|
->param('projectId', '', new UID(), 'Project unique ID.')
|
||||||
->param('type', null, new WhiteList([Origin::CLIENT_TYPE_WEB, Origin::CLIENT_TYPE_FLUTTER_WEB, Origin::CLIENT_TYPE_FLUTTER_IOS, Origin::CLIENT_TYPE_FLUTTER_ANDROID, Origin::CLIENT_TYPE_FLUTTER_LINUX, Origin::CLIENT_TYPE_FLUTTER_MACOS, Origin::CLIENT_TYPE_FLUTTER_WINDOWS, Origin::CLIENT_TYPE_APPLE_IOS, Origin::CLIENT_TYPE_APPLE_MACOS, Origin::CLIENT_TYPE_APPLE_WATCHOS, Origin::CLIENT_TYPE_APPLE_TVOS, Origin::CLIENT_TYPE_ANDROID, Origin::CLIENT_TYPE_UNITY, Origin::CLIENT_TYPE_REACT_NATIVE_IOS, Origin::CLIENT_TYPE_REACT_NATIVE_ANDROID], true), 'Platform type.')
|
->param('type', null, new WhiteList([Platform::TYPE_WEB, Platform::TYPE_FLUTTER_WEB, Platform::TYPE_FLUTTER_IOS, Platform::TYPE_FLUTTER_ANDROID, Platform::TYPE_FLUTTER_LINUX, Platform::TYPE_FLUTTER_MACOS, Platform::TYPE_FLUTTER_WINDOWS, Platform::TYPE_APPLE_IOS, Platform::TYPE_APPLE_MACOS, Platform::TYPE_APPLE_WATCHOS, Platform::TYPE_APPLE_TVOS, Platform::TYPE_ANDROID, Platform::TYPE_UNITY, Platform::TYPE_REACT_NATIVE_IOS, Platform::TYPE_REACT_NATIVE_ANDROID], true), 'Platform type.')
|
||||||
->param('name', null, new Text(128), 'Platform name. Max length: 128 chars.')
|
->param('name', null, new Text(128), 'Platform name. Max length: 128 chars.')
|
||||||
->param('key', '', new Text(256), 'Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.', true)
|
->param('key', '', new Text(256), 'Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.', true)
|
||||||
->param('store', '', new Text(256), 'App store or Google Play store ID. Max length: 256 chars.', true)
|
->param('store', '', new Text(256), 'App store or Google Play store ID. Max length: 256 chars.', true)
|
||||||
|
|
@ -2275,6 +2275,7 @@ App::get('/v1/projects/:projectId/templates/email/:type/:locale')
|
||||||
->setParam('{{footer}}', $localeObj->getText("emails.{$type}.footer"))
|
->setParam('{{footer}}', $localeObj->getText("emails.{$type}.footer"))
|
||||||
->setParam('{{body}}', $localeObj->getText('emails.' . $type . '.body'), escapeHtml: false)
|
->setParam('{{body}}', $localeObj->getText('emails.' . $type . '.body'), escapeHtml: false)
|
||||||
->setParam('{{thanks}}', $localeObj->getText("emails.{$type}.thanks"))
|
->setParam('{{thanks}}', $localeObj->getText("emails.{$type}.thanks"))
|
||||||
|
->setParam('{{buttonText}}', $localeObj->getText("emails.{$type}.buttonText"))
|
||||||
->setParam('{{signature}}', $localeObj->getText("emails.{$type}.signature"))
|
->setParam('{{signature}}', $localeObj->getText("emails.{$type}.signature"))
|
||||||
->setParam('{{direction}}', $localeObj->getText('settings.direction'));
|
->setParam('{{direction}}', $localeObj->getText('settings.direction'));
|
||||||
$message = $message->render();
|
$message = $message->render();
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ use Appwrite\Utopia\Database\Validator\Queries\Buckets;
|
||||||
use Appwrite\Utopia\Database\Validator\Queries\Files;
|
use Appwrite\Utopia\Database\Validator\Queries\Files;
|
||||||
use Appwrite\Utopia\Response;
|
use Appwrite\Utopia\Response;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
|
use Utopia\CLI\Console;
|
||||||
use Utopia\Config\Config;
|
use Utopia\Config\Config;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\DateTime;
|
use Utopia\Database\DateTime;
|
||||||
|
|
@ -953,12 +954,14 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview')
|
||||||
->param('output', '', new WhiteList(\array_keys(Config::getParam('storage-outputs')), true), 'Output format type (jpeg, jpg, png, gif and webp).', true)
|
->param('output', '', new WhiteList(\array_keys(Config::getParam('storage-outputs')), true), 'Output format type (jpeg, jpg, png, gif and webp).', true)
|
||||||
// NOTE: this is only for the sdk generator and is not used in the action below and is utilised in `resources.php` for `resourceToken`.
|
// NOTE: this is only for the sdk generator and is not used in the action below and is utilised in `resources.php` for `resourceToken`.
|
||||||
->param('token', '', new Text(512), 'File token for accessing this file.', true)
|
->param('token', '', new Text(512), 'File token for accessing this file.', true)
|
||||||
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('resourceToken')
|
->inject('resourceToken')
|
||||||
->inject('deviceForFiles')
|
->inject('deviceForFiles')
|
||||||
->inject('deviceForLocal')
|
->inject('deviceForLocal')
|
||||||
->action(function (string $bucketId, string $fileId, int $width, int $height, string $gravity, int $quality, int $borderWidth, string $borderColor, int $borderRadius, float $opacity, int $rotation, string $background, string $output, ?string $token, Response $response, Database $dbForProject, Document $resourceToken, Device $deviceForFiles, Device $deviceForLocal) {
|
->inject('project')
|
||||||
|
->action(function (string $bucketId, string $fileId, int $width, int $height, string $gravity, int $quality, int $borderWidth, string $borderColor, int $borderRadius, float $opacity, int $rotation, string $background, string $output, ?string $token, Request $request, Response $response, Database $dbForProject, Document $resourceToken, Device $deviceForFiles, Device $deviceForLocal, Document $project) {
|
||||||
|
|
||||||
if (!\extension_loaded('imagick')) {
|
if (!\extension_loaded('imagick')) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Imagick extension is missing');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'Imagick extension is missing');
|
||||||
|
|
@ -1035,8 +1038,12 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview')
|
||||||
$output = empty($type) ? (array_search($mime, $outputs) ?? 'jpg') : $type;
|
$output = empty($type) ? (array_search($mime, $outputs) ?? 'jpg') : $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$startTime = \microtime(true);
|
||||||
|
|
||||||
$source = $deviceForFiles->read($path);
|
$source = $deviceForFiles->read($path);
|
||||||
|
|
||||||
|
$downloadTime = \microtime(true) - $startTime;
|
||||||
|
|
||||||
if (!empty($cipher)) { // Decrypt
|
if (!empty($cipher)) { // Decrypt
|
||||||
$source = OpenSSL::decrypt(
|
$source = OpenSSL::decrypt(
|
||||||
$source,
|
$source,
|
||||||
|
|
@ -1048,6 +1055,8 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$decryptionTime = \microtime(true) - $startTime - $downloadTime;
|
||||||
|
|
||||||
switch ($algorithm) {
|
switch ($algorithm) {
|
||||||
case Compression::ZSTD:
|
case Compression::ZSTD:
|
||||||
$compressor = new Zstd();
|
$compressor = new Zstd();
|
||||||
|
|
@ -1059,6 +1068,8 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$decompressionTime = \microtime(true) - $startTime - $downloadTime - $decryptionTime;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$image = new Image($source);
|
$image = new Image($source);
|
||||||
} catch (ImagickException $e) {
|
} catch (ImagickException $e) {
|
||||||
|
|
@ -1089,6 +1100,12 @@ App::get('/v1/storage/buckets/:bucketId/files/:fileId/preview')
|
||||||
|
|
||||||
$data = $image->output($output, $quality);
|
$data = $image->output($output, $quality);
|
||||||
|
|
||||||
|
$renderingTime = \microtime(true) - $startTime - $downloadTime - $decryptionTime - $decompressionTime;
|
||||||
|
|
||||||
|
$totalTime = \microtime(true) - $startTime;
|
||||||
|
|
||||||
|
Console::info("File preview rendered,project=" . $project->getId() . ",bucket=" . $bucketId . ",file=" . $file->getId() . ",uri=" . $request->getURI() . ",total=" . $totalTime . ",rendering=" . $renderingTime . ",decryption=" . $decryptionTime . ",decompression=" . $decompressionTime . ",download=" . $downloadTime);
|
||||||
|
|
||||||
$contentType = (\array_key_exists($output, $outputs)) ? $outputs[$output] : $outputs['jpg'];
|
$contentType = (\array_key_exists($output, $outputs)) ? $outputs[$output] : $outputs['jpg'];
|
||||||
|
|
||||||
//Do not update transformedAt if it's a console user
|
//Do not update transformedAt if it's a console user
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ use Appwrite\Event\Messaging;
|
||||||
use Appwrite\Event\StatsUsage;
|
use Appwrite\Event\StatsUsage;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Network\Validator\Email;
|
use Appwrite\Network\Validator\Email;
|
||||||
|
use Appwrite\Network\Validator\Redirect;
|
||||||
use Appwrite\Platform\Workers\Deletes;
|
use Appwrite\Platform\Workers\Deletes;
|
||||||
use Appwrite\SDK\AuthType;
|
use Appwrite\SDK\AuthType;
|
||||||
use Appwrite\SDK\ContentType;
|
use Appwrite\SDK\ContentType;
|
||||||
|
|
@ -50,7 +51,6 @@ use Utopia\Locale\Locale;
|
||||||
use Utopia\System\System;
|
use Utopia\System\System;
|
||||||
use Utopia\Validator\ArrayList;
|
use Utopia\Validator\ArrayList;
|
||||||
use Utopia\Validator\Assoc;
|
use Utopia\Validator\Assoc;
|
||||||
use Utopia\Validator\Host;
|
|
||||||
use Utopia\Validator\Text;
|
use Utopia\Validator\Text;
|
||||||
use Utopia\Validator\URL;
|
use Utopia\Validator\URL;
|
||||||
use Utopia\Validator\WhiteList;
|
use Utopia\Validator\WhiteList;
|
||||||
|
|
@ -466,7 +466,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
}
|
}
|
||||||
return new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE);
|
return new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE);
|
||||||
}, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', false, ['project'])
|
}, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', false, ['project'])
|
||||||
->param('url', '', fn ($clients, $devKey) => $devKey->isEmpty() ? new Host($clients) : new URL(), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients', 'devKey']) // TODO add our own built-in confirm page
|
->param('url', '', fn ($platforms, $devKey) => $devKey->isEmpty() ? new Redirect($platforms) : new URL(), 'URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['platforms', 'devKey']) // TODO add our own built-in confirm page
|
||||||
->param('name', '', new Text(128), 'Name of the new team member. Max length: 128 chars.', true)
|
->param('name', '', new Text(128), 'Name of the new team member. Max length: 128 chars.', true)
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
|
|
@ -666,6 +666,7 @@ App::post('/v1/teams/:teamId/memberships')
|
||||||
->setParam('{{hello}}', $locale->getText("emails.invitation.hello"))
|
->setParam('{{hello}}', $locale->getText("emails.invitation.hello"))
|
||||||
->setParam('{{footer}}', $locale->getText("emails.invitation.footer"))
|
->setParam('{{footer}}', $locale->getText("emails.invitation.footer"))
|
||||||
->setParam('{{thanks}}', $locale->getText("emails.invitation.thanks"))
|
->setParam('{{thanks}}', $locale->getText("emails.invitation.thanks"))
|
||||||
|
->setParam('{{buttonText}}', $locale->getText("emails.invitation.buttonText"))
|
||||||
->setParam('{{signature}}', $locale->getText("emails.invitation.signature"));
|
->setParam('{{signature}}', $locale->getText("emails.invitation.signature"));
|
||||||
$body = $message->render();
|
$body = $message->render();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -649,6 +649,8 @@ App::get('/v1/users')
|
||||||
$total = $dbForProject->count('users', $filterQueries, APP_LIMIT_COUNT);
|
$total = $dbForProject->count('users', $filterQueries, APP_LIMIT_COUNT);
|
||||||
} catch (OrderException $e) {
|
} catch (OrderException $e) {
|
||||||
throw new Exception(Exception::DATABASE_QUERY_ORDER_NULL, "The order attribute '{$e->getAttribute()}' had a null value. Cursor pagination requires all documents order attribute values are non-null.");
|
throw new Exception(Exception::DATABASE_QUERY_ORDER_NULL, "The order attribute '{$e->getAttribute()}' had a null value. Cursor pagination requires all documents order attribute values are non-null.");
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
}
|
}
|
||||||
$response->dynamic(new Document([
|
$response->dynamic(new Document([
|
||||||
'users' => $users,
|
'users' => $users,
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ use Appwrite\Auth\OAuth2\Github as OAuth2Github;
|
||||||
use Appwrite\Event\Build;
|
use Appwrite\Event\Build;
|
||||||
use Appwrite\Event\Delete;
|
use Appwrite\Event\Delete;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
|
use Appwrite\Network\Validator\Redirect;
|
||||||
use Appwrite\SDK\AuthType;
|
use Appwrite\SDK\AuthType;
|
||||||
use Appwrite\SDK\ContentType;
|
use Appwrite\SDK\ContentType;
|
||||||
use Appwrite\SDK\Method;
|
use Appwrite\SDK\Method;
|
||||||
|
|
@ -53,7 +54,6 @@ use Utopia\Detector\Detector\Runtime;
|
||||||
use Utopia\Detector\Detector\Strategy;
|
use Utopia\Detector\Detector\Strategy;
|
||||||
use Utopia\System\System;
|
use Utopia\System\System;
|
||||||
use Utopia\Validator\Boolean;
|
use Utopia\Validator\Boolean;
|
||||||
use Utopia\Validator\Host;
|
|
||||||
use Utopia\Validator\Text;
|
use Utopia\Validator\Text;
|
||||||
use Utopia\Validator\WhiteList;
|
use Utopia\Validator\WhiteList;
|
||||||
use Utopia\VCS\Adapter\Git\GitHub;
|
use Utopia\VCS\Adapter\Git\GitHub;
|
||||||
|
|
@ -116,8 +116,10 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
|
||||||
}
|
}
|
||||||
|
|
||||||
$commentStatus = $isAuthorized ? 'waiting' : 'failed';
|
$commentStatus = $isAuthorized ? 'waiting' : 'failed';
|
||||||
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||||
|
$hostname = System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
|
|
||||||
$authorizeUrl = $request->getProtocol() . '://' . $request->getHostname() . "/console/git/authorize-contributor?projectId={$projectId}&installationId={$installationId}&repositoryId={$repositoryId}&providerPullRequestId={$providerPullRequestId}";
|
$authorizeUrl = $protocol . '://' . $hostname . "/console/git/authorize-contributor?projectId={$projectId}&installationId={$installationId}&repositoryId={$repositoryId}&providerPullRequestId={$providerPullRequestId}";
|
||||||
|
|
||||||
$action = $isAuthorized ? ['type' => 'logs'] : ['type' => 'authorize', 'url' => $authorizeUrl];
|
$action = $isAuthorized ? ['type' => 'logs'] : ['type' => 'authorize', 'url' => $authorizeUrl];
|
||||||
|
|
||||||
|
|
@ -378,7 +380,7 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
|
||||||
}
|
}
|
||||||
$owner = $github->getOwnerName($providerInstallationId);
|
$owner = $github->getOwnerName($providerInstallationId);
|
||||||
|
|
||||||
$providerTargetUrl = $request->getProtocol() . '://' . $request->getHostname() . "/console/project-$region-$projectId/$resourceCollection/$resourceType-$resourceId";
|
$providerTargetUrl = $protocol . '://' . $hostname . "/console/project-$region-$projectId/$resourceCollection/$resourceType-$resourceId";
|
||||||
$github->updateCommitStatus($repositoryName, $providerCommitHash, $owner, 'pending', $message, $providerTargetUrl, $name);
|
$github->updateCommitStatus($repositoryName, $providerCommitHash, $owner, 'pending', $message, $providerTargetUrl, $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -424,8 +426,8 @@ App::get('/v1/vcs/github/authorize')
|
||||||
type: MethodType::WEBAUTH,
|
type: MethodType::WEBAUTH,
|
||||||
hide: true,
|
hide: true,
|
||||||
))
|
))
|
||||||
->param('success', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a successful installation attempt.', true, ['clients'])
|
->param('success', '', fn ($platforms) => new Redirect($platforms), 'URL to redirect back to console after a successful installation attempt.', true, ['platforms'])
|
||||||
->param('failure', '', fn ($clients) => new Host($clients), 'URL to redirect back to console after a failed installation attempt.', true, ['clients'])
|
->param('failure', '', fn ($platforms) => new Redirect($platforms), 'URL to redirect back to console after a failed installation attempt.', true, ['platforms'])
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
|
|
@ -437,6 +439,8 @@ App::get('/v1/vcs/github/authorize')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$appName = System::getEnv('_APP_VCS_GITHUB_APP_NAME');
|
$appName = System::getEnv('_APP_VCS_GITHUB_APP_NAME');
|
||||||
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||||
|
$hostname = System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
|
|
||||||
if (empty($appName)) {
|
if (empty($appName)) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'GitHub App name is not configured. Please configure VCS (Version Control System) variables in .env file.');
|
throw new Exception(Exception::GENERAL_SERVER_ERROR, 'GitHub App name is not configured. Please configure VCS (Version Control System) variables in .env file.');
|
||||||
|
|
@ -444,7 +448,7 @@ App::get('/v1/vcs/github/authorize')
|
||||||
|
|
||||||
$url = "https://github.com/apps/$appName/installations/new?" . \http_build_query([
|
$url = "https://github.com/apps/$appName/installations/new?" . \http_build_query([
|
||||||
'state' => $state,
|
'state' => $state,
|
||||||
'redirect_uri' => $request->getProtocol() . '://' . $request->getHostname() . "/v1/vcs/github/callback"
|
'redirect_uri' => $protocol . '://' . $hostname . "/v1/vcs/github/callback"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$response
|
$response
|
||||||
|
|
@ -494,10 +498,12 @@ App::get('/v1/vcs/github/callback')
|
||||||
}
|
}
|
||||||
|
|
||||||
$region = $project->getAttribute('region', 'default');
|
$region = $project->getAttribute('region', 'default');
|
||||||
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||||
|
$hostname = System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
|
|
||||||
$defaultState = [
|
$defaultState = [
|
||||||
'success' => $request->getProtocol() . '://' . $request->getHostname() . "/console/project-$region-$projectId/settings/git-installations",
|
'success' => $protocol . '://' . $hostname . "/console/project-$region-$projectId/settings/git-installations",
|
||||||
'failure' => $request->getProtocol() . '://' . $request->getHostname() . "/console/project-$region-$projectId/settings/git-installations",
|
'failure' => $protocol . '://' . $hostname . "/console/project-$region-$projectId/settings/git-installations",
|
||||||
];
|
];
|
||||||
|
|
||||||
$state = \array_merge($defaultState, $state ?? []);
|
$state = \array_merge($defaultState, $state ?? []);
|
||||||
|
|
|
||||||
|
|
@ -50,14 +50,13 @@ use Utopia\Logger\Log\User;
|
||||||
use Utopia\Logger\Logger;
|
use Utopia\Logger\Logger;
|
||||||
use Utopia\Platform\Service;
|
use Utopia\Platform\Service;
|
||||||
use Utopia\System\System;
|
use Utopia\System\System;
|
||||||
use Utopia\Validator\Hostname;
|
|
||||||
use Utopia\Validator\Text;
|
use Utopia\Validator\Text;
|
||||||
|
|
||||||
Config::setParam('domainVerification', false);
|
Config::setParam('domainVerification', false);
|
||||||
Config::setParam('cookieDomain', 'localhost');
|
Config::setParam('cookieDomain', 'localhost');
|
||||||
Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE);
|
Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE);
|
||||||
|
|
||||||
function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey)
|
function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Log $log, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey)
|
||||||
{
|
{
|
||||||
$host = $request->getHostname() ?? '';
|
$host = $request->getHostname() ?? '';
|
||||||
if (!empty($previewHostname)) {
|
if (!empty($previewHostname)) {
|
||||||
|
|
@ -77,7 +76,7 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
|
||||||
}
|
}
|
||||||
|
|
||||||
$errorView = __DIR__ . '/../views/general/error.phtml';
|
$errorView = __DIR__ . '/../views/general/error.phtml';
|
||||||
$url = (System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https') . '://' . System::getEnv('_APP_DOMAIN', '');
|
$url = (System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https') . '://' . System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
|
|
||||||
if ($rule->isEmpty()) {
|
if ($rule->isEmpty()) {
|
||||||
$appDomainFunctionsFallback = System::getEnv('_APP_DOMAIN_FUNCTIONS_FALLBACK', '');
|
$appDomainFunctionsFallback = System::getEnv('_APP_DOMAIN_FUNCTIONS_FALLBACK', '');
|
||||||
|
|
@ -119,6 +118,11 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
|
||||||
$project->setAttribute('accessedAt', DateTime::now());
|
$project->setAttribute('accessedAt', DateTime::now());
|
||||||
Authorization::skip(fn () => $dbForPlatform->updateDocument('projects', $project->getId(), $project));
|
Authorization::skip(fn () => $dbForPlatform->updateDocument('projects', $project->getId(), $project));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set projectId to update the Error hook logger, since x-appwrite-project is not available when executing custom domain function
|
||||||
|
*/
|
||||||
|
$log->addTag('projectId', $project->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array_key_exists('proxy', $project->getAttribute('services', []))) {
|
if (array_key_exists('proxy', $project->getAttribute('services', []))) {
|
||||||
|
|
@ -263,7 +267,7 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$authorized) {
|
if (!$authorized) {
|
||||||
$url = (System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https') . "://" . System::getEnv('_APP_DOMAIN');
|
$url = (System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https') . "://" . System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
$response
|
$response
|
||||||
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
|
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
|
||||||
->addHeader('Pragma', 'no-cache')
|
->addHeader('Pragma', 'no-cache')
|
||||||
|
|
@ -449,7 +453,7 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
|
||||||
$vars[$var->getAttribute('key')] = $var->getAttribute('value', '');
|
$vars[$var->getAttribute('key')] = $var->getAttribute('value', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https';
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
|
||||||
$hostname = System::getEnv('_APP_DOMAIN');
|
$hostname = System::getEnv('_APP_DOMAIN');
|
||||||
$endpoint = $protocol . '://' . $hostname . "/v1";
|
$endpoint = $protocol . '://' . $hostname . "/v1";
|
||||||
|
|
||||||
|
|
@ -788,13 +792,14 @@ App::init()
|
||||||
->inject('swooleRequest')
|
->inject('swooleRequest')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
->inject('log')
|
||||||
->inject('console')
|
->inject('console')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForPlatform')
|
->inject('dbForPlatform')
|
||||||
->inject('getProjectDB')
|
->inject('getProjectDB')
|
||||||
->inject('locale')
|
->inject('locale')
|
||||||
->inject('localeCodes')
|
->inject('localeCodes')
|
||||||
->inject('clients')
|
->inject('platforms')
|
||||||
->inject('geodb')
|
->inject('geodb')
|
||||||
->inject('queueForStatsUsage')
|
->inject('queueForStatsUsage')
|
||||||
->inject('queueForEvents')
|
->inject('queueForEvents')
|
||||||
|
|
@ -805,7 +810,9 @@ App::init()
|
||||||
->inject('previewHostname')
|
->inject('previewHostname')
|
||||||
->inject('devKey')
|
->inject('devKey')
|
||||||
->inject('apiKey')
|
->inject('apiKey')
|
||||||
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, StatsUsage $queueForStatsUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, Executor $executor, callable $isResourceBlocked, string $previewHostname, Document $devKey, ?Key $apiKey) {
|
->inject('httpReferrer')
|
||||||
|
->inject('httpReferrerSafe')
|
||||||
|
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Log $log, Document $console, Document $project, Database $dbForPlatform, callable $getProjectDB, Locale $locale, array $localeCodes, array $platforms, Reader $geodb, StatsUsage $queueForStatsUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions, Executor $executor, callable $isResourceBlocked, string $previewHostname, Document $devKey, ?Key $apiKey, string $httpReferrer, string $httpReferrerSafe) {
|
||||||
/*
|
/*
|
||||||
* Appwrite Router
|
* Appwrite Router
|
||||||
*/
|
*/
|
||||||
|
|
@ -813,7 +820,7 @@ App::init()
|
||||||
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
||||||
// Only run Router when external domain
|
// Only run Router when external domain
|
||||||
if ($host !== $mainDomain || !empty($previewHostname)) {
|
if ($host !== $mainDomain || !empty($previewHostname)) {
|
||||||
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $log, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
||||||
$utopia->getRoute()?->label('router', true);
|
$utopia->getRoute()?->label('router', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -937,42 +944,9 @@ App::init()
|
||||||
$locale->setDefault($localeParam);
|
$locale->setDefault($localeParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
$referrer = $request->getReferer();
|
$origin = \parse_url($request->getOrigin($httpReferrer), PHP_URL_HOST);
|
||||||
$origin = \parse_url($request->getOrigin($referrer), PHP_URL_HOST);
|
|
||||||
$protocol = \parse_url($request->getOrigin($referrer), PHP_URL_SCHEME);
|
|
||||||
$port = \parse_url($request->getOrigin($referrer), PHP_URL_PORT);
|
|
||||||
|
|
||||||
$refDomainOrigin = 'localhost';
|
|
||||||
$validator = new Hostname($clients);
|
|
||||||
if ($validator->isValid($origin)) {
|
|
||||||
$refDomainOrigin = $origin;
|
|
||||||
} elseif (!empty($origin)) {
|
|
||||||
// Auto-allow domains with linked rule
|
|
||||||
if (System::getEnv('_APP_RULES_FORMAT') === 'md5') {
|
|
||||||
$rule = Authorization::skip(fn () => $dbForPlatform->getDocument('rules', md5($origin ?? '')));
|
|
||||||
} else {
|
|
||||||
$rule = Authorization::skip(
|
|
||||||
fn () => $dbForPlatform->find('rules', [
|
|
||||||
Query::equal('domain', [$origin]),
|
|
||||||
Query::limit(1)
|
|
||||||
])
|
|
||||||
)[0] ?? new Document();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$rule->isEmpty() && $rule->getAttribute('projectInternalId') === $project->getSequence()) {
|
|
||||||
$refDomainOrigin = $origin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$refDomain = (!empty($protocol) ? $protocol : $request->getProtocol()) . '://' . $refDomainOrigin . (!empty($port) ? ':' . $port : '');
|
|
||||||
|
|
||||||
$refDomain = (!$route->getLabel('origin', false)) // This route is publicly accessible
|
|
||||||
? $refDomain
|
|
||||||
: (!empty($protocol) ? $protocol : $request->getProtocol()) . '://' . $origin . (!empty($port) ? ':' . $port : '');
|
|
||||||
|
|
||||||
$selfDomain = new Domain($request->getHostname());
|
$selfDomain = new Domain($request->getHostname());
|
||||||
$endDomain = new Domain((string)$origin);
|
$endDomain = new Domain((string)$origin);
|
||||||
|
|
||||||
Config::setParam(
|
Config::setParam(
|
||||||
'domainVerification',
|
'domainVerification',
|
||||||
($selfDomain->getRegisterable() === $endDomain->getRegisterable()) &&
|
($selfDomain->getRegisterable() === $endDomain->getRegisterable()) &&
|
||||||
|
|
@ -1047,7 +1021,7 @@ App::init()
|
||||||
->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE')
|
->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE')
|
||||||
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma, X-Forwarded-For, X-Forwarded-User-Agent')
|
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma, X-Forwarded-For, X-Forwarded-User-Agent')
|
||||||
->addHeader('Access-Control-Expose-Headers', 'X-Appwrite-Session, X-Fallback-Cookies')
|
->addHeader('Access-Control-Expose-Headers', 'X-Appwrite-Session, X-Fallback-Cookies')
|
||||||
->addHeader('Access-Control-Allow-Origin', $refDomain)
|
->addHeader('Access-Control-Allow-Origin', $httpReferrerSafe)
|
||||||
->addHeader('Access-Control-Allow-Credentials', 'true');
|
->addHeader('Access-Control-Allow-Credentials', 'true');
|
||||||
|
|
||||||
if (!$devKey->isEmpty()) {
|
if (!$devKey->isEmpty()) {
|
||||||
|
|
@ -1060,14 +1034,16 @@ App::init()
|
||||||
* Skip this check for non-web platforms which are not required to send an origin header
|
* Skip this check for non-web platforms which are not required to send an origin header
|
||||||
*/
|
*/
|
||||||
$origin = $request->getOrigin($request->getReferer(''));
|
$origin = $request->getOrigin($request->getReferer(''));
|
||||||
$originValidator = new Origin(\array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', [])));
|
$originValidator = new Origin($platforms);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!$originValidator->isValid($origin)
|
$devKey->isEmpty()
|
||||||
&& $devKey->isEmpty()
|
&& !empty($origin)
|
||||||
|
&& !$originValidator->isValid($origin)
|
||||||
&& \in_array($request->getMethod(), [Request::METHOD_POST, Request::METHOD_PUT, Request::METHOD_PATCH, Request::METHOD_DELETE])
|
&& \in_array($request->getMethod(), [Request::METHOD_POST, Request::METHOD_PUT, Request::METHOD_PATCH, Request::METHOD_DELETE])
|
||||||
&& $route->getLabel('origin', false) !== '*'
|
&& $route->getLabel('origin', false) !== '*'
|
||||||
&& empty($request->getHeader('x-appwrite-key', ''))
|
&& empty($request->getHeader('x-appwrite-key', ''))
|
||||||
|
&& \parse_url($httpReferrerSafe, PHP_URL_HOST) === 'localhost'
|
||||||
) {
|
) {
|
||||||
throw new AppwriteException(AppwriteException::GENERAL_UNKNOWN_ORIGIN, $originValidator->getDescription());
|
throw new AppwriteException(AppwriteException::GENERAL_UNKNOWN_ORIGIN, $originValidator->getDescription());
|
||||||
}
|
}
|
||||||
|
|
@ -1078,6 +1054,7 @@ App::options()
|
||||||
->inject('swooleRequest')
|
->inject('swooleRequest')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
->inject('log')
|
||||||
->inject('dbForPlatform')
|
->inject('dbForPlatform')
|
||||||
->inject('getProjectDB')
|
->inject('getProjectDB')
|
||||||
->inject('queueForEvents')
|
->inject('queueForEvents')
|
||||||
|
|
@ -1090,7 +1067,7 @@ App::options()
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('devKey')
|
->inject('devKey')
|
||||||
->inject('apiKey')
|
->inject('apiKey')
|
||||||
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, Document $project, Document $devKey, ?Key $apiKey) {
|
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Log $log, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, Document $project, Document $devKey, ?Key $apiKey) {
|
||||||
/*
|
/*
|
||||||
* Appwrite Router
|
* Appwrite Router
|
||||||
*/
|
*/
|
||||||
|
|
@ -1098,7 +1075,7 @@ App::options()
|
||||||
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
||||||
// Only run Router when external domain
|
// Only run Router when external domain
|
||||||
if ($host !== $mainDomain || !empty($previewHostname)) {
|
if ($host !== $mainDomain || !empty($previewHostname)) {
|
||||||
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $log, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
||||||
$utopia->getRoute()?->label('router', true);
|
$utopia->getRoute()?->label('router', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1271,7 +1248,12 @@ App::error()
|
||||||
$log->addTag('url', $request->getURI());
|
$log->addTag('url', $request->getURI());
|
||||||
$log->addTag('verboseType', get_class($error));
|
$log->addTag('verboseType', get_class($error));
|
||||||
$log->addTag('code', $error->getCode());
|
$log->addTag('code', $error->getCode());
|
||||||
$log->addTag('projectId', $project->getId());
|
|
||||||
|
$tags = $log->getTags();
|
||||||
|
if (!isset($tags['projectId'])) {
|
||||||
|
$log->addTag('projectId', $project->getId());
|
||||||
|
}
|
||||||
|
|
||||||
$log->addTag('hostname', $request->getHostname());
|
$log->addTag('hostname', $request->getHostname());
|
||||||
$log->addTag('locale', (string)$request->getParam('locale', $request->getHeader('x-appwrite-locale', '')));
|
$log->addTag('locale', (string)$request->getParam('locale', $request->getHeader('x-appwrite-locale', '')));
|
||||||
|
|
||||||
|
|
@ -1389,6 +1371,7 @@ App::get('/robots.txt')
|
||||||
->inject('swooleRequest')
|
->inject('swooleRequest')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
->inject('log')
|
||||||
->inject('dbForPlatform')
|
->inject('dbForPlatform')
|
||||||
->inject('getProjectDB')
|
->inject('getProjectDB')
|
||||||
->inject('queueForEvents')
|
->inject('queueForEvents')
|
||||||
|
|
@ -1399,7 +1382,7 @@ App::get('/robots.txt')
|
||||||
->inject('isResourceBlocked')
|
->inject('isResourceBlocked')
|
||||||
->inject('previewHostname')
|
->inject('previewHostname')
|
||||||
->inject('apiKey')
|
->inject('apiKey')
|
||||||
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey) {
|
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Log $log, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey) {
|
||||||
$host = $request->getHostname() ?? '';
|
$host = $request->getHostname() ?? '';
|
||||||
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
||||||
|
|
||||||
|
|
@ -1407,7 +1390,7 @@ App::get('/robots.txt')
|
||||||
$template = new View(__DIR__ . '/../views/general/robots.phtml');
|
$template = new View(__DIR__ . '/../views/general/robots.phtml');
|
||||||
$response->text($template->render(false));
|
$response->text($template->render(false));
|
||||||
} else {
|
} else {
|
||||||
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $log, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
||||||
$utopia->getRoute()?->label('router', true);
|
$utopia->getRoute()?->label('router', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1421,6 +1404,7 @@ App::get('/humans.txt')
|
||||||
->inject('swooleRequest')
|
->inject('swooleRequest')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
|
->inject('log')
|
||||||
->inject('dbForPlatform')
|
->inject('dbForPlatform')
|
||||||
->inject('getProjectDB')
|
->inject('getProjectDB')
|
||||||
->inject('queueForEvents')
|
->inject('queueForEvents')
|
||||||
|
|
@ -1431,7 +1415,7 @@ App::get('/humans.txt')
|
||||||
->inject('isResourceBlocked')
|
->inject('isResourceBlocked')
|
||||||
->inject('previewHostname')
|
->inject('previewHostname')
|
||||||
->inject('apiKey')
|
->inject('apiKey')
|
||||||
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey) {
|
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Log $log, Database $dbForPlatform, callable $getProjectDB, Event $queueForEvents, StatsUsage $queueForStatsUsage, Func $queueForFunctions, Executor $executor, Reader $geodb, callable $isResourceBlocked, string $previewHostname, ?Key $apiKey) {
|
||||||
$host = $request->getHostname() ?? '';
|
$host = $request->getHostname() ?? '';
|
||||||
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
$mainDomain = System::getEnv('_APP_DOMAIN', '');
|
||||||
|
|
||||||
|
|
@ -1439,7 +1423,7 @@ App::get('/humans.txt')
|
||||||
$template = new View(__DIR__ . '/../views/general/humans.phtml');
|
$template = new View(__DIR__ . '/../views/general/humans.phtml');
|
||||||
$response->text($template->render(false));
|
$response->text($template->render(false));
|
||||||
} else {
|
} else {
|
||||||
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
if (router($utopia, $dbForPlatform, $getProjectDB, $swooleRequest, $request, $response, $log, $queueForEvents, $queueForStatsUsage, $queueForFunctions, $executor, $geodb, $isResourceBlocked, $previewHostname, $apiKey)) {
|
||||||
$utopia->getRoute()?->label('router', true);
|
$utopia->getRoute()?->label('router', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ use Utopia\Abuse\Abuse;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Cache\Adapter\Filesystem;
|
use Utopia\Cache\Adapter\Filesystem;
|
||||||
use Utopia\Cache\Cache;
|
use Utopia\Cache\Cache;
|
||||||
|
use Utopia\CLI\Console;
|
||||||
use Utopia\Config\Config;
|
use Utopia\Config\Config;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\DateTime;
|
use Utopia\Database\DateTime;
|
||||||
|
|
@ -563,7 +564,7 @@ App::init()
|
||||||
$cache = new Cache(
|
$cache = new Cache(
|
||||||
new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId())
|
new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId())
|
||||||
);
|
);
|
||||||
$timestamp = 60 * 60 * 24 * 30;
|
$timestamp = 60 * 60 * 24 * 180; // Temporarily increase the TTL to 180 day to ensure files in the cache are still fetched.
|
||||||
$data = $cache->load($key, $timestamp);
|
$data = $cache->load($key, $timestamp);
|
||||||
|
|
||||||
if (!empty($data) && !$cacheLog->isEmpty()) {
|
if (!empty($data) && !$cacheLog->isEmpty()) {
|
||||||
|
|
@ -797,6 +798,12 @@ App::shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($queueForDatabase->getType())) {
|
if (!empty($queueForDatabase->getType())) {
|
||||||
|
Console::info("Triggering database event: \n" . \json_encode([
|
||||||
|
'projectId' => $project->getId(),
|
||||||
|
'databaseId' => $queueForDatabase->getDatabase()?->getId(),
|
||||||
|
'collectionId' => $queueForDatabase->getCollection()?->getId(),
|
||||||
|
'documentId' => $queueForDatabase->getDocument()?->getId(),
|
||||||
|
]));
|
||||||
$queueForDatabase->trigger();
|
$queueForDatabase->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -824,6 +831,10 @@ App::shutdown()
|
||||||
$resourceType = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
$resourceType = $parseLabel($pattern, $responsePayload, $requestParams, $user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$cache = new Cache(
|
||||||
|
new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId())
|
||||||
|
);
|
||||||
|
|
||||||
$key = $request->cacheIdentifier();
|
$key = $request->cacheIdentifier();
|
||||||
$signature = md5($data['payload']);
|
$signature = md5($data['payload']);
|
||||||
$cacheLog = Authorization::skip(fn () => $dbForProject->getDocument('cache', $key));
|
$cacheLog = Authorization::skip(fn () => $dbForProject->getDocument('cache', $key));
|
||||||
|
|
@ -841,12 +852,11 @@ App::shutdown()
|
||||||
} elseif (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_CACHE_UPDATE)) > $accessedAt) {
|
} elseif (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_CACHE_UPDATE)) > $accessedAt) {
|
||||||
$cacheLog->setAttribute('accessedAt', $now);
|
$cacheLog->setAttribute('accessedAt', $now);
|
||||||
Authorization::skip(fn () => $dbForProject->updateDocument('cache', $cacheLog->getId(), $cacheLog));
|
Authorization::skip(fn () => $dbForProject->updateDocument('cache', $cacheLog->getId(), $cacheLog));
|
||||||
|
// Overwrite the file every APP_CACHE_UPDATE seconds to update the file modified time that is used in the TTL checks in cache->load()
|
||||||
|
$cache->save($key, $data['payload']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($signature !== $cacheLog->getAttribute('signature')) {
|
if ($signature !== $cacheLog->getAttribute('signature')) {
|
||||||
$cache = new Cache(
|
|
||||||
new Filesystem(APP_STORAGE_CACHE . DIRECTORY_SEPARATOR . 'app-' . $project->getId())
|
|
||||||
);
|
|
||||||
$cache->save($key, $data['payload']);
|
$cache->save($key, $data['payload']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,8 @@ App::setMode(System::getEnv('_APP_ENV', App::MODE_TYPE_PRODUCTION));
|
||||||
if (!App::isProduction()) {
|
if (!App::isProduction()) {
|
||||||
// Allow specific domains to skip public domain validation in dev environment
|
// Allow specific domains to skip public domain validation in dev environment
|
||||||
// Useful for existing tests involving webhooks
|
// Useful for existing tests involving webhooks
|
||||||
PublicDomain::allow(['request-catcher']);
|
PublicDomain::allow(['request-catcher-sms']);
|
||||||
|
PublicDomain::allow(['request-catcher-webhook']);
|
||||||
}
|
}
|
||||||
$register->set('logger', function () {
|
$register->set('logger', function () {
|
||||||
// Register error logger
|
// Register error logger
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ use Appwrite\Event\StatsUsage;
|
||||||
use Appwrite\Event\Webhook;
|
use Appwrite\Event\Webhook;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\GraphQL\Schema;
|
use Appwrite\GraphQL\Schema;
|
||||||
|
use Appwrite\Network\Platform;
|
||||||
use Appwrite\Network\Validator\Origin;
|
use Appwrite\Network\Validator\Origin;
|
||||||
use Appwrite\Utopia\Request;
|
use Appwrite\Utopia\Request;
|
||||||
use Executor\Executor;
|
use Executor\Executor;
|
||||||
|
|
@ -79,9 +80,15 @@ App::setResource('localeCodes', function () {
|
||||||
App::setResource('publisher', function (Group $pools) {
|
App::setResource('publisher', function (Group $pools) {
|
||||||
return new BrokerPool(publisher: $pools->get('publisher'));
|
return new BrokerPool(publisher: $pools->get('publisher'));
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
|
App::setResource('publisherRedis', function () {
|
||||||
|
// Stub
|
||||||
|
});
|
||||||
App::setResource('consumer', function (Group $pools) {
|
App::setResource('consumer', function (Group $pools) {
|
||||||
return new BrokerPool(consumer: $pools->get('consumer'));
|
return new BrokerPool(consumer: $pools->get('consumer'));
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
|
App::setResource('consumerRedis', function () {
|
||||||
|
// Stub
|
||||||
|
});
|
||||||
App::setResource('queueForMessaging', function (Publisher $publisher) {
|
App::setResource('queueForMessaging', function (Publisher $publisher) {
|
||||||
return new Messaging($publisher);
|
return new Messaging($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
|
|
@ -121,11 +128,11 @@ App::setResource('queueForCertificates', function (Publisher $publisher) {
|
||||||
App::setResource('queueForMigrations', function (Publisher $publisher) {
|
App::setResource('queueForMigrations', function (Publisher $publisher) {
|
||||||
return new Migration($publisher);
|
return new Migration($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
App::setResource('clients', function ($request, $console, $project) {
|
App::setResource('platforms', function (Request $request, Document $console, Document $project) {
|
||||||
$console->setAttribute('platforms', [ // Always allow current host
|
$console->setAttribute('platforms', [ // Always allow current host
|
||||||
'$collection' => ID::custom('platforms'),
|
'$collection' => ID::custom('platforms'),
|
||||||
'name' => 'Current Host',
|
'name' => 'Current Host',
|
||||||
'type' => Origin::CLIENT_TYPE_WEB,
|
'type' => Platform::TYPE_WEB,
|
||||||
'hostname' => $request->getHostname(),
|
'hostname' => $request->getHostname(),
|
||||||
], Document::SET_TYPE_APPEND);
|
], Document::SET_TYPE_APPEND);
|
||||||
|
|
||||||
|
|
@ -138,39 +145,32 @@ App::setResource('clients', function ($request, $console, $project) {
|
||||||
}
|
}
|
||||||
$console->setAttribute('platforms', [
|
$console->setAttribute('platforms', [
|
||||||
'$collection' => ID::custom('platforms'),
|
'$collection' => ID::custom('platforms'),
|
||||||
'type' => Origin::CLIENT_TYPE_WEB,
|
'type' => Platform::TYPE_WEB,
|
||||||
'name' => $hostname,
|
'name' => $hostname,
|
||||||
'hostname' => $hostname,
|
'hostname' => $hostname,
|
||||||
], Document::SET_TYPE_APPEND);
|
], Document::SET_TYPE_APPEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// Add `exp` and `appwrite-callback-{projectId}` schemes
|
||||||
* Get All verified client URLs for both console and current projects
|
if (!$project->isEmpty() && $project->getId() !== 'console') {
|
||||||
* + Filter for duplicated entries
|
$project->setAttribute('platforms', [
|
||||||
*/
|
'$collection' => ID::custom('platforms'),
|
||||||
$clientsConsole = \array_map(
|
'type' => Platform::TYPE_SCHEME,
|
||||||
fn ($node) => $node['hostname'],
|
'name' => 'Expo',
|
||||||
\array_filter(
|
'key' => 'exp',
|
||||||
$console->getAttribute('platforms', []),
|
], Document::SET_TYPE_APPEND);
|
||||||
fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB) && !empty($node['hostname']))
|
$project->setAttribute('platforms', [
|
||||||
)
|
'$collection' => ID::custom('platforms'),
|
||||||
);
|
'type' => Platform::TYPE_SCHEME,
|
||||||
|
'name' => 'Appwrite Callback',
|
||||||
$clients = $clientsConsole;
|
'key' => 'appwrite-callback-' . $project->getId(),
|
||||||
$platforms = $project->getAttribute('platforms', []);
|
], Document::SET_TYPE_APPEND);
|
||||||
|
|
||||||
foreach ($platforms as $node) {
|
|
||||||
if (
|
|
||||||
isset($node['type']) &&
|
|
||||||
($node['type'] === Origin::CLIENT_TYPE_WEB ||
|
|
||||||
$node['type'] === Origin::CLIENT_TYPE_FLUTTER_WEB) &&
|
|
||||||
!empty($node['hostname'])
|
|
||||||
) {
|
|
||||||
$clients[] = $node['hostname'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return \array_unique($clients);
|
return [
|
||||||
|
...$console->getAttribute('platforms', []),
|
||||||
|
...$project->getAttribute('platforms', []),
|
||||||
|
];
|
||||||
}, ['request', 'console', 'project']);
|
}, ['request', 'console', 'project']);
|
||||||
|
|
||||||
App::setResource('user', function ($mode, $project, $console, $request, $response, $dbForProject, $dbForPlatform) {
|
App::setResource('user', function ($mode, $project, $console, $request, $response, $dbForProject, $dbForPlatform) {
|
||||||
|
|
@ -222,7 +222,9 @@ App::setResource('user', function ($mode, $project, $console, $request, $respons
|
||||||
Auth::$unique = $session['id'] ?? '';
|
Auth::$unique = $session['id'] ?? '';
|
||||||
Auth::$secret = $session['secret'] ?? '';
|
Auth::$secret = $session['secret'] ?? '';
|
||||||
|
|
||||||
if (APP_MODE_ADMIN !== $mode) {
|
if ($mode === APP_MODE_ADMIN) {
|
||||||
|
$user = $dbForPlatform->getDocument('users', Auth::$unique);
|
||||||
|
} else {
|
||||||
if ($project->isEmpty()) {
|
if ($project->isEmpty()) {
|
||||||
$user = new Document([]);
|
$user = new Document([]);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -232,8 +234,6 @@ App::setResource('user', function ($mode, $project, $console, $request, $respons
|
||||||
$user = $dbForProject->getDocument('users', Auth::$unique);
|
$user = $dbForProject->getDocument('users', Auth::$unique);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$user = $dbForPlatform->getDocument('users', Auth::$unique);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|
@ -264,7 +264,11 @@ App::setResource('user', function ($mode, $project, $console, $request, $respons
|
||||||
|
|
||||||
$jwtUserId = $payload['userId'] ?? '';
|
$jwtUserId = $payload['userId'] ?? '';
|
||||||
if (!empty($jwtUserId)) {
|
if (!empty($jwtUserId)) {
|
||||||
$user = $dbForProject->getDocument('users', $jwtUserId);
|
if ($mode === APP_MODE_ADMIN) {
|
||||||
|
$user = $dbForPlatform->getDocument('users', $jwtUserId);
|
||||||
|
} else {
|
||||||
|
$user = $dbForProject->getDocument('users', $jwtUserId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$jwtSessionId = $payload['sessionId'] ?? '';
|
$jwtSessionId = $payload['sessionId'] ?? '';
|
||||||
|
|
@ -945,3 +949,52 @@ App::setResource('resourceToken', function ($project, $dbForProject, $request) {
|
||||||
}
|
}
|
||||||
return new Document([]);
|
return new Document([]);
|
||||||
}, ['project', 'dbForProject', 'request']);
|
}, ['project', 'dbForProject', 'request']);
|
||||||
|
|
||||||
|
App::setResource('httpReferrer', function (Request $request): string {
|
||||||
|
$referrer = $request->getReferer();
|
||||||
|
return $referrer;
|
||||||
|
}, ['request']);
|
||||||
|
|
||||||
|
App::setResource('httpReferrerSafe', function (Request $request, string $httpReferrer, array $platforms, Database $dbForPlatform, Document $project, App $utopia): string {
|
||||||
|
$origin = \parse_url($request->getOrigin($httpReferrer), PHP_URL_HOST);
|
||||||
|
$protocol = \parse_url($request->getOrigin($httpReferrer), PHP_URL_SCHEME);
|
||||||
|
$port = \parse_url($request->getOrigin($httpReferrer), PHP_URL_PORT);
|
||||||
|
$referrer = (!empty($protocol) ? $protocol : $request->getProtocol()) . '://' . $origin . (!empty($port) ? ':' . $port : '');
|
||||||
|
|
||||||
|
// Safe if route is publicly accessible
|
||||||
|
$route = $utopia->getRoute();
|
||||||
|
if ($route->getLabel('origin', false)) {
|
||||||
|
return $referrer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Safe if added as web platform
|
||||||
|
$originValidator = new Origin($platforms);
|
||||||
|
if ($originValidator->isValid($request->getOrigin($httpReferrer))) {
|
||||||
|
return $referrer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Safe if rule with same project ID exists
|
||||||
|
if (!empty($origin)) {
|
||||||
|
if (System::getEnv('_APP_RULES_FORMAT') === 'md5') {
|
||||||
|
$rule = Authorization::skip(fn () => $dbForPlatform->getDocument('rules', md5($origin ?? '')));
|
||||||
|
} else {
|
||||||
|
$rule = Authorization::skip(
|
||||||
|
fn () => $dbForPlatform->find('rules', [
|
||||||
|
Query::equal('domain', [$origin]),
|
||||||
|
Query::limit(1)
|
||||||
|
])
|
||||||
|
)[0] ?? new Document();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$rule->isEmpty() && $rule->getAttribute('projectInternalId') === $project->getSequence()) {
|
||||||
|
return $referrer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unsafe; Localhost is always safe for ease of local development
|
||||||
|
$origin = 'localhost';
|
||||||
|
$protocol = \parse_url($request->getOrigin($httpReferrer), PHP_URL_SCHEME);
|
||||||
|
$port = \parse_url($request->getOrigin($httpReferrer), PHP_URL_PORT);
|
||||||
|
$referrer = (!empty($protocol) ? $protocol : $request->getProtocol()) . '://' . $origin . (!empty($port) ? ':' . $port : '');
|
||||||
|
return $referrer;
|
||||||
|
}, ['request', 'httpReferrer', 'platforms', 'dbForPlatform', 'project', 'utopia']);
|
||||||
|
|
|
||||||
|
|
@ -532,7 +532,7 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
|
||||||
}
|
}
|
||||||
|
|
||||||
$timelimit = $app->getResource('timelimit');
|
$timelimit = $app->getResource('timelimit');
|
||||||
$console = $app->getResource('console'); /** @var Document $console */
|
$platforms = $app->getResource('platforms');
|
||||||
$user = $app->getResource('user'); /** @var Document $user */
|
$user = $app->getResource('user'); /** @var Document $user */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -557,9 +557,9 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server,
|
||||||
* Skip this check for non-web platforms which are not required to send an origin header.
|
* Skip this check for non-web platforms which are not required to send an origin header.
|
||||||
*/
|
*/
|
||||||
$origin = $request->getOrigin();
|
$origin = $request->getOrigin();
|
||||||
$originValidator = new Origin(array_merge($project->getAttribute('platforms', []), $console->getAttribute('platforms', [])));
|
$originValidator = new Origin($platforms);
|
||||||
|
|
||||||
if (!$originValidator->isValid($origin) && $project->getId() !== 'console') {
|
if (!empty($origin) && !$originValidator->isValid($origin) && $project->getId() !== 'console') {
|
||||||
throw new Exception(Exception::REALTIME_POLICY_VIOLATION, $originValidator->getDescription());
|
throw new Exception(Exception::REALTIME_POLICY_VIOLATION, $originValidator->getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ $labelClass = '';
|
||||||
$buttons = [];
|
$buttons = [];
|
||||||
|
|
||||||
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https';
|
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') == 'disabled' ? 'http' : 'https';
|
||||||
$hostname = System::getEnv('_APP_DOMAIN');
|
$hostname = System::getEnv('_APP_CONSOLE_DOMAIN', System::getEnv('_APP_DOMAIN', ''));
|
||||||
// TODO: remove this later
|
// TODO: remove this later
|
||||||
if (System::getEnv('_APP_ENV') === 'development') {
|
if (System::getEnv('_APP_ENV') === 'development') {
|
||||||
$hostname = 'localhost';
|
$hostname = 'localhost';
|
||||||
|
|
|
||||||
|
|
@ -864,7 +864,7 @@ $image = $this->getParam('image', '');
|
||||||
<<: *x-logging
|
<<: *x-logging
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
stop_signal: SIGINT
|
stop_signal: SIGINT
|
||||||
image: openruntimes/executor:0.7.20
|
image: openruntimes/executor:0.7.22
|
||||||
networks:
|
networks:
|
||||||
- appwrite
|
- appwrite
|
||||||
- runtimes
|
- runtimes
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,7 @@ use Appwrite\Event\StatsUsage;
|
||||||
use Appwrite\Event\Webhook;
|
use Appwrite\Event\Webhook;
|
||||||
use Appwrite\Platform\Appwrite;
|
use Appwrite\Platform\Appwrite;
|
||||||
use Executor\Executor;
|
use Executor\Executor;
|
||||||
use Swoole\Process;
|
|
||||||
use Swoole\Runtime;
|
use Swoole\Runtime;
|
||||||
use Swoole\Timer;
|
|
||||||
use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis;
|
use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis;
|
||||||
use Utopia\Cache\Adapter\Pool as CachePool;
|
use Utopia\Cache\Adapter\Pool as CachePool;
|
||||||
use Utopia\Cache\Adapter\Sharding;
|
use Utopia\Cache\Adapter\Sharding;
|
||||||
|
|
@ -249,10 +247,18 @@ Server::setResource('publisher', function (Group $pools) {
|
||||||
return new BrokerPool(publisher: $pools->get('publisher'));
|
return new BrokerPool(publisher: $pools->get('publisher'));
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
|
|
||||||
|
Server::setResource('publisherRedis', function () {
|
||||||
|
// Stub
|
||||||
|
});
|
||||||
|
|
||||||
Server::setResource('consumer', function (Group $pools) {
|
Server::setResource('consumer', function (Group $pools) {
|
||||||
return new BrokerPool(consumer: $pools->get('consumer'));
|
return new BrokerPool(consumer: $pools->get('consumer'));
|
||||||
}, ['pools']);
|
}, ['pools']);
|
||||||
|
|
||||||
|
Server::setResource('consumerRedis', function () {
|
||||||
|
// Stub
|
||||||
|
});
|
||||||
|
|
||||||
Server::setResource('queueForStatsUsage', function (Publisher $publisher) {
|
Server::setResource('queueForStatsUsage', function (Publisher $publisher) {
|
||||||
return new StatsUsage($publisher);
|
return new StatsUsage($publisher);
|
||||||
}, ['publisher']);
|
}, ['publisher']);
|
||||||
|
|
@ -484,15 +490,8 @@ $worker
|
||||||
});
|
});
|
||||||
|
|
||||||
$worker->workerStart()
|
$worker->workerStart()
|
||||||
->action(function () use ($worker, $workerName) {
|
->action(function () use ($workerName) {
|
||||||
Console::info("Worker $workerName started");
|
Console::info("Worker $workerName started");
|
||||||
|
|
||||||
Process::signal(SIGTERM, function () use ($worker, $workerName) {
|
|
||||||
Console::info("Stopping worker $workerName.");
|
|
||||||
|
|
||||||
$worker->stop();
|
|
||||||
Timer::clearAll();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$worker->start();
|
$worker->start();
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exec php /usr/src/code/app/cli.php doctor $@
|
php /usr/src/code/app/cli.php doctor $@
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exec php /usr/src/code/app/cli.php install $@
|
php /usr/src/code/app/cli.php install $@
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue