mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 08:58:35 +00:00
Merge branch 'feat-add-messaging-response-models' of https://github.com/appwrite/appwrite into feat-messages-event-config
This commit is contained in:
commit
8957640d27
7 changed files with 121 additions and 341 deletions
|
|
@ -1437,22 +1437,61 @@ $commonCollections = [
|
|||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => ['json', 'encrypt'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('search'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 65535,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => [],
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
[
|
||||
'$id' => ID::custom('_key_provider'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['provider'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_name'),
|
||||
'type' => Database::INDEX_FULLTEXT,
|
||||
'attributes' => ['name'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_type'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['type'],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_default'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['default'],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_default_type'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['default, type'],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_search'),
|
||||
'type' => Database::INDEX_FULLTEXT,
|
||||
'attributes' => ['search'],
|
||||
'lengths' => [],
|
||||
'orders' => [],
|
||||
]
|
||||
],
|
||||
],
|
||||
|
|
@ -1488,7 +1527,7 @@ $commonCollections = [
|
|||
'$id' => ID::custom('data'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 16384,
|
||||
'size' => 65535,
|
||||
'signed' => true,
|
||||
'required' => true,
|
||||
'default' => null,
|
||||
|
|
@ -1499,7 +1538,7 @@ $commonCollections = [
|
|||
'$id' => ID::custom('to'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 16834,
|
||||
'size' => 65535,
|
||||
'signed' => true,
|
||||
'required' => true,
|
||||
'default' => null,
|
||||
|
|
@ -1518,14 +1557,14 @@ $commonCollections = [
|
|||
'filters' => ['datetime'],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('deliveryError'),
|
||||
'$id' => ID::custom('deliveryErrors'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 2048,
|
||||
'size' => 65535,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'array' => true,
|
||||
'filters' => [],
|
||||
],
|
||||
[
|
||||
|
|
@ -1567,14 +1606,14 @@ $commonCollections = [
|
|||
'$id' => ID::custom('_key_providerId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['providerId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_providerInternalId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['providerInternalId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
|
|
@ -1646,21 +1685,32 @@ $commonCollections = [
|
|||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => ['subQueryTopicTargets'],
|
||||
]
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('search'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 16384,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => [],
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
[
|
||||
'$id' => ID::custom('_key_providerId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['providerId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_providerInternalId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['providerInternalId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
|
|
@ -1671,12 +1721,12 @@ $commonCollections = [
|
|||
'orders' => [],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_description'),
|
||||
'$id' => ID::custom('_key_search'),
|
||||
'type' => Database::INDEX_FULLTEXT,
|
||||
'attributes' => ['description'],
|
||||
'attributes' => ['name'],
|
||||
'lengths' => [],
|
||||
'orders' => [],
|
||||
],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -1826,7 +1876,7 @@ $commonCollections = [
|
|||
'$id' => ID::custom('identifier'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => Database::LENGTH_KEY,
|
||||
'size' => 2048,
|
||||
'signed' => true,
|
||||
'required' => true,
|
||||
'default' => null,
|
||||
|
|
@ -1839,14 +1889,14 @@ $commonCollections = [
|
|||
'$id' => ID::custom('_key_userId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['userId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('_key_userInternalId'),
|
||||
'type' => Database::INDEX_KEY,
|
||||
'attributes' => ['userInternalId'],
|
||||
'lengths' => [128],
|
||||
'lengths' => [],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
],
|
||||
[
|
||||
|
|
|
|||
|
|
@ -1,300 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'email' => [
|
||||
'mailchimp' => [
|
||||
'name' => 'Mailchimp',
|
||||
'developers' => 'https://mailchimp.com/developer/marketing/api/',
|
||||
'icon' => 'icon-mailchimp',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'mailgun' => [
|
||||
'name' => 'Mailgun',
|
||||
'developers' => 'https://documentation.mailgun.com/',
|
||||
'icon' => 'icon-mailgun',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'mailjet' => [
|
||||
'name' => 'Mailjet',
|
||||
'developers' => 'https://dev.mailjet.com/',
|
||||
'icon' => 'icon-mailjet',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'postmark' => [
|
||||
'name' => 'Postmark',
|
||||
'developers' => 'https://postmarkapp.com/developer',
|
||||
'icon' => 'icon-postmark',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'sendgrid' => [
|
||||
'name' => 'Sendgrid',
|
||||
'developers' => 'https://docs.sendgrid.com/api-reference/how-to-use-the-sendgrid-v3-api/',
|
||||
'icon' => 'icon-sendgrid',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'sendinblue' => [
|
||||
'name' => 'SendinBlue',
|
||||
'developers' => 'https://developers.sendinblue.com/',
|
||||
'icon' => 'icon-sendinblue',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'mailslurp' => [
|
||||
'name' => 'MailSlurp',
|
||||
'developers' => 'https://www.mailslurp.com/docs/',
|
||||
'icon' => 'icon-mailslurp',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'elasticemail' => [
|
||||
'name' => 'ElasticEmail',
|
||||
'developers' => 'https://api.elasticemail.com/public/help',
|
||||
'icon' => 'icon-elasticemail',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'ses' => [
|
||||
'name' => 'SES',
|
||||
'developers' => 'https://docs.aws.amazon.com/ses/latest/APIReference/',
|
||||
'icon' => 'icon-ses',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
],
|
||||
'sms' => [
|
||||
'africastalking' => [
|
||||
'name' => 'Africa\'s Talking',
|
||||
'developers' => 'https://developers.africastalking.com/',
|
||||
'icon' => 'icon-africastalking',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'clickatell' => [
|
||||
'name' => 'Clickatell',
|
||||
'developers' => 'https://www.clickatell.com/developers/api-docs/',
|
||||
'icon' => 'icon-clickatell',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'infobip' => [
|
||||
'name' => 'Infobip',
|
||||
'developers' => 'https://www.infobip.com/docs/',
|
||||
'icon' => 'icon-infobip',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'msg91' => [
|
||||
'name' => 'Msg91',
|
||||
'developers' => 'https://docs.msg91.com/reference/overview',
|
||||
'icon' => 'icon-msg91',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'plivo' => [
|
||||
'name' => 'Plivo',
|
||||
'developers' => 'https://developers.plivo.com/',
|
||||
'icon' => 'icon-plivo',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'sinch' => [
|
||||
'name' => 'Sinch',
|
||||
'developers' => 'https://developers.sinch.com/',
|
||||
'icon' => 'icon-sinch',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'sms77' => [
|
||||
'name' => 'Sms77',
|
||||
'developers' => 'https://sms77.io/docs/gateway/',
|
||||
'icon' => 'icon-sms77',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'telesign' => [
|
||||
'name' => 'Telesign',
|
||||
'developers' => 'https://developer.telesign.com/enterprise/docs',
|
||||
'icon' => 'icon-telesign',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'textmagic' => [
|
||||
'name' => 'TextMagic',
|
||||
'developers' => 'https://www.textmagic.com/docs/api/',
|
||||
'icon' => 'icon-twilio',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'twilio' => [
|
||||
'name' => 'Twilio',
|
||||
'developers' => 'https://www.twilio.com/docs/sms',
|
||||
'icon' => 'icon-twilio',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'twilio-notify' => [
|
||||
'name' => 'Twilio Notify',
|
||||
'developers' => 'https://www.twilio.com/docs/notify',
|
||||
'icon' => 'icon-twilio',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'vonage' => [
|
||||
'name' => 'Vonage',
|
||||
'developers' => 'https://developer.nexmo.com/',
|
||||
'icon' => 'icon-vonage',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
],
|
||||
'push' => [
|
||||
'apns' => [
|
||||
'name' => 'APNS',
|
||||
'developers' => 'https://developer.apple.com/documentation/usernotifications',
|
||||
'icon' => 'icon-apns',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'fcm' => [
|
||||
'name' => 'FCM',
|
||||
'developers' => 'https://firebase.google.com/docs/cloud-messaging',
|
||||
'icon' => 'icon-fcm',
|
||||
'enabled' => true,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'one_signal' => [
|
||||
'name' => 'OneSignal',
|
||||
'developers' => 'https://documentation.onesignal.com/docs',
|
||||
'icon' => 'icon-onesignal',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'pushbullet' => [
|
||||
'name' => 'PushBullet',
|
||||
'developers' => 'https://docs.pushbullet.com/',
|
||||
'icon' => 'icon-pushbullet',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'pusher' => [
|
||||
'name' => 'Pusher',
|
||||
'developers' => 'https://pusher.com/docs',
|
||||
'icon' => 'icon-pusher',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'pushwoosh' => [
|
||||
'name' => 'Pushwoosh',
|
||||
'developers' => 'https://www.pushwoosh.com/docs/',
|
||||
'icon' => 'icon-pushwoosh',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'urban_airship' => [
|
||||
'name' => 'Urban Airship',
|
||||
'developers' => 'https://docs.airship.com/api/',
|
||||
'icon' => 'icon-urbanairship',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
'web_push' => [
|
||||
'name' => 'WebPush',
|
||||
'developers' => 'https://developer.mozilla.org/en-US/docs/Web/API/Push_API',
|
||||
'icon' => 'icon-webpush',
|
||||
'enabled' => false,
|
||||
'sandbox' => false,
|
||||
'form' => false,
|
||||
'beta' => false,
|
||||
'mock' => false,
|
||||
],
|
||||
]
|
||||
];
|
||||
41
app/init.php
41
app/init.php
|
|
@ -544,6 +544,47 @@ Database::addFilter(
|
|||
]));
|
||||
}
|
||||
);
|
||||
|
||||
Database::addFilter(
|
||||
'subQueryProviderType',
|
||||
function (mixed $value) {
|
||||
return null;
|
||||
},
|
||||
function (mixed $value, Document $document, Database $database) {
|
||||
$provider = Authorization::skip(fn () => $database
|
||||
->getDocument(
|
||||
'providers',
|
||||
$document->getAttribute('providerId'),
|
||||
[Query::select(['type'])]
|
||||
));
|
||||
if ($provider) {
|
||||
return $provider->getAttribute('type');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Database::addFilter(
|
||||
'subQueryTopicTargets',
|
||||
function (mixed $value) {
|
||||
return null;
|
||||
},
|
||||
function (mixed $value, Document $document, Database $database) {
|
||||
$targetIds = Authorization::skip(fn () => \array_map(
|
||||
fn ($document) => $document->getAttribute('targetId'),
|
||||
$database
|
||||
->find('subscribers', [
|
||||
Query::equal('topicInternalId', [$document->getInternalId()]),
|
||||
Query::limit(APP_LIMIT_SUBQUERY),
|
||||
])
|
||||
));
|
||||
if (\count($targetIds) > 0) {
|
||||
return $database->find('targets', [Query::equal('$id', $targetIds)]);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
);
|
||||
/**
|
||||
* DB Formats
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace Appwrite\Utopia;
|
||||
|
||||
use Appwrite\Utopia\Response\Model\Message;
|
||||
use Appwrite\Utopia\Response\Model\Subscriber;
|
||||
use Appwrite\Utopia\Response\Model\Topic;
|
||||
use Exception;
|
||||
use Swoole\Http\Request as SwooleRequest;
|
||||
use Utopia\Swoole\Response as SwooleResponse;
|
||||
|
|
@ -84,6 +81,9 @@ use Appwrite\Utopia\Response\Model\HealthVersion;
|
|||
use Appwrite\Utopia\Response\Model\Installation;
|
||||
use Appwrite\Utopia\Response\Model\LocaleCode;
|
||||
use Appwrite\Utopia\Response\Model\Provider;
|
||||
use Appwrite\Utopia\Response\Model\Message;
|
||||
use Appwrite\Utopia\Response\Model\Subscriber;
|
||||
use Appwrite\Utopia\Response\Model\Topic;
|
||||
use Appwrite\Utopia\Response\Model\ProviderRepository;
|
||||
use Appwrite\Utopia\Response\Model\Runtime;
|
||||
use Appwrite\Utopia\Response\Model\Target;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use Appwrite\Utopia\Response;
|
|||
use Appwrite\Utopia\Response\Model;
|
||||
use Utopia\Database\DateTime;
|
||||
|
||||
class Message extends Model
|
||||
class Message extends Any
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
|
|
@ -28,17 +28,11 @@ class Message extends Model
|
|||
'default' => '',
|
||||
'example' => '5e5ea5c16897e',
|
||||
])
|
||||
->addRule('data', [
|
||||
'type' => self::TYPE_JSON,
|
||||
'description' => 'Message Data.',
|
||||
'default' => '',
|
||||
'required' => false,
|
||||
'example' => '',
|
||||
])
|
||||
->addRule('to', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Recipient of message.',
|
||||
'default' => '',
|
||||
'array' => true,
|
||||
'example' => ['user-1'],
|
||||
])
|
||||
->addRule('deliveryTime', [
|
||||
|
|
@ -53,6 +47,7 @@ class Message extends Model
|
|||
'description' => 'Delivery error if any.',
|
||||
'required' => false,
|
||||
'default' => '',
|
||||
'array' => true,
|
||||
'example' => 'Provider not valid.',
|
||||
])
|
||||
->addRule('deliveredTo', [
|
||||
|
|
@ -66,12 +61,6 @@ class Message extends Model
|
|||
'description' => 'Status of delivery.',
|
||||
'default' => '',
|
||||
'example' => true,
|
||||
])
|
||||
->addRule('search', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Field that can be used for searching message.',
|
||||
'default' => '',
|
||||
'example' => 'Hello everyone',
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ class Project extends Model
|
|||
'default' => false,
|
||||
'example' => true,
|
||||
])
|
||||
->addRule('providers', [
|
||||
->addRule('authProviders', [
|
||||
'type' => Response::MODEL_AUTH_PROVIDER,
|
||||
'description' => 'List of Auth Providers.',
|
||||
'default' => [],
|
||||
|
|
|
|||
|
|
@ -23,19 +23,19 @@ class Provider extends Model
|
|||
])
|
||||
->addRule('name', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'The user-given name for the provider instance.',
|
||||
'description' => 'The name for the provider instance.',
|
||||
'default' => '',
|
||||
'example' => 'Mailgun',
|
||||
])
|
||||
->addRule('provider', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Provider name setup in Utopia.',
|
||||
'description' => 'The name of the provider service.',
|
||||
'default' => '',
|
||||
'example' => 'mailgun',
|
||||
])
|
||||
->addRule('default', [
|
||||
'type' => self::TYPE_BOOLEAN,
|
||||
'description' => 'Default provider or not.',
|
||||
'description' => 'Is this a pre-configured provider instance?',
|
||||
'default' => '',
|
||||
'example' => true,
|
||||
])
|
||||
|
|
|
|||
Loading…
Reference in a new issue