- Remove excessive logic and 1-minute expiration hack as requested
- Simplify token expiry handling to directly use existing value
- Remove problematic test that creates tokens with past expiry dates
- Update existing test to properly verify JWT expiration behavior
- Use proper base64url decoding for JWT payload testing
- Added event queue injections in Bulk Update and Create classes for better event handling.
- Modified getUser method in Scope class to allow for user retrieval with an override option.
- Expanded RealtimeCustomClientTest to include comprehensive tests for bulk create, update, and delete operations, ensuring proper event emissions for multiple clients.
- Improved assertions in tests to validate event data and permissions for created, updated, and deleted documents.
- Implemented `testDateTimeRow` to validate the behavior of datetime columns, including creation, retrieval, and modification of rows with custom createdAt and updatedAt timestamps.
- Added `testSingleRowDateOperations` to cover various scenarios for single row operations with custom date handling.
- Created `testBulkRowDateOperations` to test bulk creation and updates of rows with date fields.
- Introduced `testUpsertRowDateOperations` to verify upsert functionality with custom date fields.
- Cleaned up legacy test file by removing unnecessary blank lines.
Once the Docker installation is complete, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after completing the installation.
'description'=>'The order attribute had a null value. Cursor pagination requires all documents order attribute values are non-null.',
'description'=>'The order attribute/column had a null value. Cursor pagination requires all documents/rows order attribute/column values are non-null.',
'code'=>400,
],
@@ -689,6 +699,23 @@ return [
'code'=>400,
],
/** Tables */
Exception::TABLE_NOT_FOUND=>[
'name'=>Exception::TABLE_NOT_FOUND,
'description'=>'Table with the requested ID could not be found.',
'code'=>404,
],
Exception::TABLE_ALREADY_EXISTS=>[
'name'=>Exception::TABLE_ALREADY_EXISTS,
'description'=>'A table with the requested ID already exists. Try again with a different ID or use ID.unique() to generate a unique ID.',
'code'=>409,
],
Exception::TABLE_LIMIT_EXCEEDED=>[
'name'=>Exception::TABLE_LIMIT_EXCEEDED,
'description'=>'The maximum number of tables has been reached.',
'code'=>400,
],
/** Documents */
Exception::DOCUMENT_NOT_FOUND=>[
'name'=>Exception::DOCUMENT_NOT_FOUND,
@@ -726,6 +753,43 @@ return [
'code'=>403,
],
/** Rows */
Exception::ROW_NOT_FOUND=>[
'name'=>Exception::ROW_NOT_FOUND,
'description'=>'Row with the requested ID could not be found.',
'code'=>404,
],
Exception::ROW_INVALID_STRUCTURE=>[
'name'=>Exception::ROW_INVALID_STRUCTURE,
'description'=>'The row structure is invalid. Please ensure the columns match the table definition.',
'code'=>400,
],
Exception::ROW_MISSING_DATA=>[
'name'=>Exception::ROW_MISSING_DATA,
'description'=>'The row data is missing. Try again with row data populated',
'code'=>400,
],
Exception::ROW_MISSING_PAYLOAD=>[
'name'=>Exception::ROW_MISSING_PAYLOAD,
'description'=>'The row data and permissions are missing. You must provide either row data or permissions to be updated.',
'code'=>400,
],
Exception::ROW_ALREADY_EXISTS=>[
'name'=>Exception::ROW_ALREADY_EXISTS,
'description'=>'Row with the requested ID already exists. Try again with a different ID or use ID.unique() to generate a unique ID.',
'code'=>409,
],
Exception::ROW_UPDATE_CONFLICT=>[
'name'=>Exception::ROW_UPDATE_CONFLICT,
'description'=>'Remote row is newer than local.',
'code'=>409,
],
Exception::ROW_DELETE_RESTRICTED=>[
'name'=>Exception::ROW_DELETE_RESTRICTED,
'description'=>'Row cannot be deleted because it is referenced by another row.',
'code'=>403,
],
/** Attributes */
Exception::ATTRIBUTE_NOT_FOUND=>[
'name'=>Exception::ATTRIBUTE_NOT_FOUND,
@@ -772,16 +836,81 @@ return [
'description'=>'The attribute type is invalid.',
'code'=>400,
],
Exception::ATTRIBUTE_INVALID_RESIZE=>[
'name'=>Exception::ATTRIBUTE_INVALID_RESIZE,
'description'=>'Existing data is too large for new size, truncate your existing data then try again.',
'code'=>400,
],
Exception::ATTRIBUTE_TYPE_NOT_SUPPORTED=>[
'name'=>Exception::ATTRIBUTE_TYPE_NOT_SUPPORTED,
'description'=>'Attribute type is not supported.',
'code'=>400,
],
/** Exists for both Attributes & Columns */
Exception::RELATIONSHIP_VALUE_INVALID=>[
'name'=>Exception::RELATIONSHIP_VALUE_INVALID,
'description'=>'The relationship value is invalid.',
'code'=>400,
],
Exception::ATTRIBUTE_INVALID_RESIZE=>[
'name'=>Exception::ATTRIBUTE_INVALID_RESIZE,
/** Columns */
Exception::COLUMN_NOT_FOUND=>[
'name'=>Exception::COLUMN_NOT_FOUND,
'description'=>'Column with the requested ID could not be found.',
'code'=>404,
],
Exception::COLUMN_UNKNOWN=>[
'name'=>Exception::COLUMN_UNKNOWN,
'description'=>'The column required for the index could not be found. Please confirm all your columns are in the available state.',
'code'=>400,
],
Exception::COLUMN_NOT_AVAILABLE=>[
'name'=>Exception::COLUMN_NOT_AVAILABLE,
'description'=>'The requested column is not yet available. Please try again later.',
'code'=>400,
],
Exception::COLUMN_FORMAT_UNSUPPORTED=>[
'name'=>Exception::COLUMN_FORMAT_UNSUPPORTED,
'description'=>'The requested column format is not supported.',
'code'=>400,
],
Exception::COLUMN_DEFAULT_UNSUPPORTED=>[
'name'=>Exception::COLUMN_DEFAULT_UNSUPPORTED,
'description'=>'Default values cannot be set for array or required columns.',
'code'=>400,
],
Exception::COLUMN_ALREADY_EXISTS=>[
'name'=>Exception::COLUMN_ALREADY_EXISTS,
'description'=>'Column with the requested key already exists. Column keys must be unique, try again with a different key.',
'code'=>409,
],
Exception::COLUMN_LIMIT_EXCEEDED=>[
'name'=>Exception::COLUMN_LIMIT_EXCEEDED,
'description'=>'The maximum number or size of columns for this table has been reached.',
'code'=>400,
],
Exception::COLUMN_VALUE_INVALID=>[
'name'=>Exception::COLUMN_VALUE_INVALID,
'description'=>'The column value is invalid. Please check the type, range and value of the column.',
'code'=>400,
],
Exception::COLUMN_TYPE_INVALID=>[
'name'=>Exception::COLUMN_TYPE_INVALID,
'description'=>'The column type is invalid.',
'code'=>400,
],
Exception::COLUMN_INVALID_RESIZE=>[
'name'=>Exception::COLUMN_INVALID_RESIZE,
'description'=>"Existing data is too large for new size, truncate your existing data then try again.",
'code'=>400,
],
Exception::COLUMN_TYPE_NOT_SUPPORTED=>[
'name'=>Exception::COLUMN_TYPE_NOT_SUPPORTED,
'description'=>'Column type is not supported.',
'code'=>400,
],
/** Indexes */
Exception::INDEX_NOT_FOUND=>[
@@ -810,6 +939,33 @@ return [
'code'=>409,
],
/** Column Indexes, same as Indexes but with different type */
Exception::COLUMN_INDEX_NOT_FOUND=>[
'name'=>Exception::COLUMN_INDEX_NOT_FOUND,
'description'=>'Index with the requested ID could not be found.',
'code'=>404,
],
Exception::COLUMN_INDEX_LIMIT_EXCEEDED=>[
'name'=>Exception::COLUMN_INDEX_LIMIT_EXCEEDED,
'description'=>'The maximum number of indexes has been reached.',
'code'=>400,
],
Exception::COLUMN_INDEX_ALREADY_EXISTS=>[
'name'=>Exception::COLUMN_INDEX_ALREADY_EXISTS,
'description'=>'Index with the requested key already exists. Try again with a different key.',
'code'=>409,
],
Exception::COLUMN_INDEX_INVALID=>[
'name'=>Exception::COLUMN_INDEX_INVALID,
'description'=>'Index invalid.',
'code'=>400,
],
Exception::COLUMN_INDEX_DEPENDENCY=>[
'name'=>Exception::COLUMN_INDEX_DEPENDENCY,
'description'=>'Column cannot be renamed or deleted. Please remove the associated index first.',
"emails.invitation.subject":"Uitnodiging om by die %s span aan te sluit by %s",
"emails.invitation.subject":"Uitnodiging om by die {{team}} span aan te sluit by {{project}}",
"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.footer":"As u nie belang stel nie, kan u gerus hierdie boodskap ignoreer.",
"emails.verification.body":"تبّع هاد الوصلة باش تيقّن لادريسة تاع ليميل ديالك.",
@@ -21,14 +21,14 @@
"emails.recovery.thanks":"شكرا،",
"emails.recovery.buttonText":"إعادة تعيين كلمة السر",
"emails.recovery.signature":"فرقة {{project}}",
"emails.invitation.subject":"عراضة ل فرقة %s ف %s",
"emails.invitation.subject":"عراضة ل فرقة {{team}} ف {{project}}",
"emails.invitation.hello":"السلام،",
"emails.invitation.body":"هاد البرية تصيفطات ليك حيت {{owner}} بغى يعرض عليك تولّي عضو ف فرقة {{team}} عند {{project}}.",
"emails.invitation.footer":"إلا كنتي ما مسوّقش, ممكن تنخّل هاد البرية.",
"emails.invitation.thanks":"شكرا،",
"emails.invitation.buttonText":"اقبل الدعوة إلى {{team}}",
"emails.invitation.signature":"فرقة {{project}}",
"emails.certificate.subject":"السرتافيكة فشلات ل %s",
"emails.certificate.subject":"السرتافيكة فشلات ل {{domain}}",
"emails.certificate.hello":"السلام،",
"emails.certificate.body":"السرتافيكة ديال الضومين ديالك '{{domain}}' ما قدّاتش تجينيرا. هادي هي المحاولة نمرة {{attempt}}, السبب ديال هاد الفشل هو: {{error}}",
"emails.certificate.footer":"السرتافيكة الفايتة ديالك غاتبقى مزيانة لمدة 30 يوم من عند أول فشل. كانشجعوك بزاف أنك تبقشش فهاد الموضوع, وا إلّا الضومين ديالك ما غايبقاش خدّام فيه الـ SSL.",
"emails.invitation.subject":"Запрошення до Команди %s у %s",
"emails.invitation.subject":"Запрошення до Команди {{team}} у {{project}}",
"emails.invitation.hello":"Прывітанне,",
"emails.invitation.body":"Гэта паведамленне было адпраўлена вам, таму што {{owner}} хацеў запрасіць вас стаць членам каманды {{team}} у {{project}}.",
"emails.invitation.footer":"Калі вам гэта не цікава, вы можаце праігнараваць гэтае паведамленне.",
@@ -245,7 +245,7 @@
"emails.otpSession.securityPhrase":"Фраза бяспекі для гэтага ліста - {{phrase}}. Вы можаце давяраць гэтаму лісту, калі гэтая фраза супадае з фразай, паказанай пры ўваходзе.",
"emails.certificate.subject":"Сведчанне няўдалае для %s",
"emails.certificate.subject":"Сведчанне няўдалае для {{domain}}",
"emails.certificate.hello":"Прывітанне,",
"emails.certificate.body":"Сертыфікат для вашага дамена '{{domain}}' не можа быць створаны. Гэта спроба нумар {{attempt}}, і прычынай няўдачы з'яўляецца: {{error}}",
"emails.certificate.footer":"Ваш папярэдні сертыфікат будзе дзейнічаць 30 дзён з моманту першай няўдачы. Мы высока рэкамендуем расследаваць гэтую сітуацыю, інакш ваш дамен апынецца без дзейнага сертыфіката SSL-злучэння.",
"emails.invitation.subject":"%s टीम क %s पे न्योता देवे क लेल|",
"emails.invitation.subject":"{{team}} टीम क {{project}} पे न्योता देवे क लेल|",
"emails.invitation.hello":"प्रणाम,",
"emails.invitation.body":"ई मेल आपके एही लेल भेजल गईल रहल काहे क {{owner}} आपके {{project}} क {{team}} टीम का सदस्य बनावे चाहित रहे|",
"emails.invitation.footer":"अगर आवे क इच्छा ना होवत, तो आप ई संदेश क अनदेखा कर सकत अछि।",
@@ -245,7 +245,7 @@
"emails.otpSession.securityPhrase":"एही ईमेल खातिर सुरक्षा वाक्य {{phrase}} हऽ। अगर ई वाक्य साइन इन कइला के समय देखावल गेल वाक्य से मेल खाता, त एह ईमेल पर भरोसा कर सकैत छी।",
"emails.certificate.body":"आपके डोमेन '{{domain}}' के लिए प्रमाणपत्र नहीं बनाया जा सका। ई प्रयास संख्या {{attempt}} है, और ई असफलता के कारण रहे: {{error}}",
"emails.certificate.footer":"तोहार पिछलका प्रमाणपत्र पहिल असफलता से 30 दिन धरी मान्य होईत। हम बहुत जोर देके सलाह देतानी कि एह मामला के जांच करीं, नहीं त तोहार डोमेन बिना कोनो मान्य SSL संवाद के रहि जाईत।",
"emails.invitation.body":"এই মেইলটি আপনাকে পাঠানো হয়েছে কারণ {{owner}} আপনাকে {{project}} এর সাথে যুক্ত {{team}} টিমের সদস্য হওয়ার জন্য আমন্ত্রণ জানাতে চেয়েছিলেন।",
"emails.invitation.footer":"যদি এটি আপনার জন্য প্রয়োজনীয় না হয়, আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
"emails.verification.preview":"Verify your email to activate your {{project}} account.",
"emails.verification.hello":"Hello {{user}},",
@@ -54,7 +54,7 @@
"emails.recovery.thanks":"Thanks,",
"emails.recovery.buttonText":"Reset password",
"emails.recovery.signature":"{{project}} team",
"emails.invitation.subject":"Invitation to %s Team at %s",
"emails.invitation.subject":"Invitation to {{team}} Team at {{project}}",
"emails.invitation.preview":"{{owner}} invited you to join {{team}} at {{project}}",
"emails.invitation.hello":"Hello {{user}},",
"emails.invitation.body":"This mail was sent to you because {{b}}{{owner}}{{/b}} invited you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
@@ -62,8 +62,8 @@
"emails.invitation.thanks":"Thanks,",
"emails.invitation.buttonText":"Accept invite to {{team}}",
"emails.invitation.signature":"{{project}} team",
"emails.certificate.subject":"Certificate failure for %s",
"emails.certificate.preview":"Your domain %s certificate generation has failed.",
"emails.certificate.subject":"Certificate failure for {{domain}}",
"emails.certificate.preview":"Your domain {{domain}} certificate generation has failed.",
"emails.certificate.hello":"Hello,",
"emails.certificate.body":"Certificate for your domain '{{domain}}' could not be generated. This is attempt no. {{attempt}}, and the failure was caused by: {{error}}",
"emails.certificate.footer":"Your previous certificate will be valid for 30 days since the first failure. We highly recommend investigating this case, otherwise your domain will end up without a valid SSL communication.",
"emails.recovery.signature":"El equipo de {{project}}",
"emails.invitation.subject":"Invitación al equipo %s en %s",
"emails.invitation.subject":"Invitación al equipo {{team}} en {{project}}",
"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.footer":"Si no estás interesado, puedes ignorar este mensaje.",
"emails.invitation.subject":"Invitation à l'équipe %s de %s",
"emails.invitation.subject":"Invitation à l'équipe {{team}} de {{project}}",
"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.footer":"Si vous n'êtes pas intéressé, vous pouvez ignorer ce message.",
"emails.invitation.subject":"Cuireadh do %s foireann ag %s",
"emails.invitation.subject":"Cuireadh do {{team}} foireann ag {{project}}",
"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.footer":"Is cuma leat? Déan neamhaird den teachtaireacht seo.",
"settings.inspire":"\"સ્માર્ટ બનવાની કળા એ છે કે શું અવગણવું તે જાણવાની કળા છે.\"",
"settings.locale":"gu",
"settings.direction":"ltr",
"emails.sender":"%s ટીમ",
"emails.sender":"{{project}} ટીમ",
"emails.verification.subject":"ખાતાની ચકાસણી",
"emails.verification.hello":"નમસ્કાર {{user}},",
"emails.verification.body":"તમારું ઇમેઇલ સરનામું ચકાસવા માટે આ લિંકને અનુસરો.",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"આભાર,",
"emails.recovery.buttonText":"પાસવર્ડ રીસેટ કરો",
"emails.recovery.signature":"{{project}} ટીમ",
"emails.invitation.subject":"%s ટીમને %s પર આમંત્રણ",
"emails.invitation.subject":"{{team}} ટીમને {{project}} પર આમંત્રણ",
"emails.invitation.hello":"નમસ્કાર,",
"emails.invitation.body":"આ મેઇલ તમને મોકલવામાં આવ્યો હતો કારણ કે {{owner}} તમને {{project}} માં {{team}} ટીમના સભ્ય બનવા માટે આમંત્રિત કરવા માંગતા હતો.",
"emails.invitation.footer":"જો તમને રસ નથી, તો તમે આ સંદેશને અવગણી શકો છો.",
"emails.verification.hello":"Salve ibi {{user}},",
"emails.verification.body":"Sequere hanc nexum ut quin inscriptionem tuum.",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"Gratias,",
"emails.recovery.buttonText":"Reset password",
"emails.recovery.signature":"{{project}} team",
"emails.invitation.subject":"Invitatio pro %s in quadrigis %s",
"emails.invitation.subject":"Invitatio pro {{team}} in quadrigis {{project}}",
"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.footer":"Si non quaero, potes hunc nuntium ignorare",
@@ -245,7 +245,7 @@
"emails.otpSession.securityPhrase":"Sententia securitatis huius epistulae est {{phrase}}. Epistulae confidere potes si haec sententia cum ea quae ostensa est in signo ingressus convenit.",
"emails.otpSession.thanks":"Gratias,",
"emails.otpSession.signature":"{{project}} team -> {{project}} grex",
"emails.certificate.subject":"Defectio testimonii pro %s",
"emails.certificate.subject":"Defectio testimonii pro {{domain}}",
"emails.certificate.hello":"Salve,",
"emails.certificate.body":"Certificatum pro dominio tuo '{{domain}}' generari non potuit. Hoc conatus num. {{attempt}} est, et defectus causatus est ab: {{error}}",
"emails.certificate.footer":"Praeclarum tuum testificationem valet ad XXX dies a primo defectu. Magnopere suademus ut hoc casum investiges, alioquin dominium tuum sine valida SSL communicatione erit.",
"emails.invitation.subject":"Invitatioun un %s équipe bei %s",
"emails.invitation.subject":"Invitatioun un {{team}} équipe bei {{project}}",
"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.footer":"Wann Dir net interesséiert sidd, kënnt Dir dëse Message ignoréieren.",
"emails.invitation.subject":"Pakvietimas į %s komandą %s projekte",
"emails.invitation.subject":"Pakvietimas į {{team}} komandą {{project}} projekte",
"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.footer":"Jei jūsų tai nedomina, galite ignoruoti šį pranešimą.",
"emails.invitation.subject":"%s -ലെ %s ടീമിലേക്കുള്ള ക്ഷണം",
"emails.invitation.subject":"{{project}} -ലെ {{team}} ടീമിലേക്കുള്ള ക്ഷണം",
"emails.invitation.hello":"നമസ്കാരം,",
"emails.invitation.body":"നിങ്ങളെ {{project}} -ലെ {{team}} ടീമിലെ അംഗമാകുവാന് ക്ഷണിക്കാൻ {{owner}} ആഗ്രഹിക്കുന്നതിനാലാണ് ഈ മെയിൽ നിങ്ങൾക്ക് അയക്കുന്നത്.",
"emails.invitation.footer":"നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
@@ -245,7 +245,7 @@
"emails.otpSession.securityPhrase":"ഈ ഇമെയിലിന്റെ സുരക്ഷാ വാചകം {{phrase}} ആണ്. സൈൻ ഇൻ ചെയ്യുമ്പോൾ കാണിച്ച വാചകവുമായി ഈ വാചകം പൊരുത്തപ്പെടുന്നുണ്ടെങ്കിൽ ഈ ഇമെയിലിന് വിശ്വസിക്കാം.",
"emails.otpSession.thanks":"നന്ദി,",
"emails.otpSession.signature":"പ്രോജക്ട് ടീം",
"emails.certificate.subject":"%s ന് സർട്ടിഫിക്കറ്റ് പരാജയപ്പെട്ടു",
"emails.certificate.subject":"{{domain}} ന് സർട്ടിഫിക്കറ്റ് പരാജയപ്പെട്ടു",
"emails.certificate.hello":"ഹലോ,",
"emails.certificate.body":"നിങ്ങളുടെ ഡൊമൈൻ '{{domain}}'നു വേണ്ടിയുള്ള സർട്ടിഫിക്കറ്റ് ഉണ്ടാക്കാനായില്ല. ഇത് ശ്രമം നമ്പർ {{attempt}} ആണ്, പരാജയപ്പെട്ടത് ഇതു മൂലമാണ്: {{error}}",
"emails.certificate.footer":"നിങ്ങളുടെ മുൻപത്തെ സർട്ടിഫിക്കറ്റ് ആദ്യ പരാജയത്തിനു ശേഷം 30 ദിവസം വരെ സാധുവായിരിക്കും. ഈ കേസ് അന്വേഷിച്ചു നോക്കുന്നത് ഞങ്ങൾ ശക്തമായി ശുപാർശ ചെയ്യുന്നു, അല്ലെങ്കിൽ നിങ്ങളുടെ ഡൊമെയ്ൻ സാധുവായ SSL കമ്മ്യൂണിക്കേഷനില്ലാത്ത ഒരു അവസ്ഥയിലാകും.",
"settings.inspire":"\"हुशार असण्याची कला म्हणजे कोणत्या गोष्टीकडे दुर्लक्ष करावे हे जाणून घेण्याची कला.\"",
"settings.locale":"mr",
"settings.direction":"ltr",
"emails.sender":"%s टीम",
"emails.sender":"{{project}} टीम",
"emails.verification.subject":"खाते सत्यापन",
"emails.verification.hello":"नमस्कार {{user}},",
"emails.verification.body":"आपला ईमेल पत्ता सत्यापित करण्यासाठी या दुव्याचे अनुसरण करा.",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"धन्यवाद,",
"emails.recovery.buttonText":"पासवर्ड रीसेट करा",
"emails.recovery.signature":"{{project}} संघ",
"emails.invitation.subject":"%s संघ %s येथे सामील होण्यासाठी आमंत्रण",
"emails.invitation.subject":"{{team}} संघ {{project}} येथे सामील होण्यासाठी आमंत्रण",
"emails.invitation.hello":"नमस्कार,",
"emails.invitation.body":"हा मेल तुम्हाला पाठवला होता कारण {{owner}} तुम्हाला {{project}} येथे {{team}} टीमचे सदस्य होण्यासाठी आमंत्रित करू इच्छित होते.",
"emails.invitation.footer":"आपल्याला स्वारस्य नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"settings.inspire":"\"के लाई बेवास्ता गर्ने भन्ने जान्नुनै बुद्धिमान हुनुको कला हो ।\"",
"settings.locale":"ne",
"settings.direction":"ltr",
"emails.sender":"%s समूह",
"emails.sender":"{{project}} समूह",
"emails.verification.subject":"खाता प्रमाणिकरण",
"emails.verification.hello":"नमस्ते {{user}},",
"emails.verification.body":"इमेल ठेगाना प्रमाणित गर्नको लागी यो लिंकमा जानुहोस।",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"धन्यवाद,",
"emails.recovery.buttonText":"रिसेट पासवर्ड",
"emails.recovery.signature":"{{project}} समूह",
"emails.invitation.subject":"%s समूहको लागि %s मा निमन्त्रणा",
"emails.invitation.subject":"{{team}} समूहको लागि {{project}} मा निमन्त्रणा",
"emails.invitation.hello":"नमस्ते,",
"emails.invitation.body":"{{owner}}ले तपाइँलाई {{project}}मा {{team}}को सदस्य बन्न आमन्त्रित गर्न चाहनु भएको छ। त्येसैले तपाइँलाई यो सन्देश पठाइएको हो।",
"emails.invitation.footer":"यदि तपाइँ इच्छुक हुनुहुन्न भने, तपाइँले यो सन्देशलाई बेवास्ता गर्न सक्नुहुन्छ।",
"settings.inspire":"\"Kunsten å væra klok er kunsten å vita kva man skal oversjå.\"",
"settings.locale":"nn",
"settings.direction":"ltr",
"emails.sender":"%s Team",
"emails.sender":"{{project}} Team",
"emails.verification.subject":"Kontostadfesting",
"emails.verification.hello":"Hallo {{user}},",
"emails.verification.body":"Følg denne lenkja for å bekrefta din e-postadresse.",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"Takk,",
"emails.recovery.buttonText":"Nullstill passord",
"emails.recovery.signature":"{{project}} team",
"emails.invitation.subject":"Innbyding til %s Team ved %s",
"emails.invitation.subject":"Innbyding til {{team}} Team ved {{project}}",
"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.footer":"Om du ikkje er interessert, kan du ignorera denne meldinga.",
@@ -245,7 +245,7 @@
"emails.otpSession.securityPhrase":"Tryggingsfrasen for denne e-posten er {{phrase}}. Du kan stole på denne e-posten om frasen stemmer med frasen vist under pålogging.",
"emails.certificate.subject":"Sertifikatfeil for %s",
"emails.certificate.subject":"Sertifikatfeil for {{domain}}",
"emails.certificate.hello":"Hei,",
"emails.certificate.body":"Sertifikatet for domenet ditt '{{domain}}' kunne ikkje opprettast. Dette er forsøk nr. {{attempt}}, og feilen blei forårsaka av: {{error}}",
"emails.certificate.footer":"Førre sertifikatet ditt vil vere gyldig i 30 dagar sidan den første feilen. Vi rår sterkt til at du undersøkjer denne saka, elles vil domenet ditt ende opp utan gyldig SSL-kommunikasjon.",
"emails.otpSession.securityPhrase":"هن ای میل لاءِ سیکيورٽي جملو {{phrase}} آھي. توهان هن ای میل تي اعتماد ڪري سگهو ٿا جيڪڏهن هن جملو لاڳو ٿيندڙ جملي سان ميل کاندي.",
"emails.otpSession.thanks":"مهرباني,",
"emails.otpSession.signature":"پروجيڪٽ جي ٽيم",
"emails.certificate.subject":"%s لاءِ سند جو ناکامی",
"emails.certificate.subject":"{{domain}} لاءِ سند جو ناکامی",
"emails.certificate.hello":"هيلو,",
"emails.certificate.body":"توهان جي ڊومين '{{domain}}' لاءِ سرٽيفڪيٽ ٺاهڻ جو نه ٿي سگهيو. هي ڪوشش نمبر {{attempt}} آهي، ۽ ناڪامي جو سبب ٿيو: {{error}}",
"emails.certificate.footer":"توهان جو اڳيون سرٽيفڪيٽ اولهو فئيلر جي ݙينهن کان ٣٠ ݙينهن لاءِ ماني ويندو. اسان ان جي چھان بني جي بھرپور خواهش ڪنداسين، نہ ته توهان جو ݙومين بغير ڪوري SSL ڪميونڪيشن آڻي ويندي.",
"emails.invitation.subject":"அழைப்பிதழ் %s குழு %s ",
"emails.invitation.subject":"அழைப்பிதழ் {{team}} குழு {{project}} ",
"emails.invitation.hello":"வணக்கம்,",
"emails.invitation.body":"{{project}} இல் {{team}} குழுவில் உறுப்பினராக உங்களை {{owner}} அழைக்க விரும்புவதால், இந்த அஞ்சல் உங்களுக்கு அனுப்பப்பட்டது.",
"emails.invitation.footer":"உங்களுக்கு ஆர்வம் இல்லை என்றால், இந்த செய்தியை நீங்கள் புறக்கணிக்கலாம்.",
"settings.inspire":"\"Ang sining ng pagiging matalino ay ang sining ng pag-alam kung ano ang dapat kaligtaan.\"",
"settings.locale":"tl",
"settings.direction":"ltr",
"emails.sender":"Pangkat ng %s",
"emails.sender":"Pangkat ng {{project}}",
"emails.verification.subject":"Pagpapatunay ng account",
"emails.verification.hello":"Kamusta {{user}},",
"emails.verification.body":"Sundin ang link na ito upang ma-verify ang iyong email address.",
@@ -21,7 +21,7 @@
"emails.recovery.thanks":"Salamat,",
"emails.recovery.buttonText":"I-reset ang password",
"emails.recovery.signature":"Pangkat ng {{project}}",
"emails.invitation.subject":"Imbitasyon para sa Pangkat %s sa %s",
"emails.invitation.subject":"Imbitasyon para sa Pangkat {{team}} sa {{project}}",
"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.footer":"Kung ikaw ay hindi interesado, maaari mong balewalain ang mensaheng ito.",
"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).",
"description":"Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
"responses":{
"201":{
"description":"Token",
@@ -2673,7 +2673,7 @@
"properties":{
"userId":{
"type":"string",
"description":"User 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.",
"description":"User 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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2755,7 +2755,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2977,7 +2977,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).",
"description":"Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
"responses":{
"201":{
"description":"Token",
@@ -2682,7 +2682,7 @@
"properties":{
"userId":{
"type":"string",
"description":"User 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.",
"description":"User 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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2764,7 +2764,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2986,7 +2986,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"description":"Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).",
"description":"Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
"responses":{
"201":{
"description":"Token",
@@ -2354,7 +2354,7 @@
"properties":{
"userId":{
"type":"string",
"description":"User 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.",
"description":"User 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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2436,7 +2436,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example":"<USER_ID>"
},
"email":{
@@ -2658,7 +2658,7 @@
"properties":{
"userId":{
"type":"string",
"description":"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.",
"description":"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. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.