From 2a0a94e312cb3c01d9c3bc304a3db3c4dd09aa57 Mon Sep 17 00:00:00 2001 From: Noel De Martin Date: Tue, 2 Jul 2024 18:04:52 +0200 Subject: [PATCH 1/9] MOBILE-4616: Update migrated app pages --- data/migratedPages.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/migratedPages.yml b/data/migratedPages.yml index 90ca0d3670..17de21b630 100644 --- a/data/migratedPages.yml +++ b/data/migratedPages.yml @@ -137,8 +137,11 @@ Course_formats: - filePath: "/docs/apis/plugintypes/format/index.md" slug: "/docs/apis/plugintypes/format" Creating_mobile_course_formats: -- filePath: "/general/app/development/plugins-development-guide/examples/create-course-formats.md" - slug: "/general/app/development/plugins-development-guide/examples/create-course-formats" +- filePath: "/general/app/development/plugins-development-guide/examples/course-formats.md" + slug: "/general/app/development/plugins-development-guide/examples/course-formats" +Creating_mobile_question_types: +- filePath: "/general/app/development/plugins-development-guide/examples/question-types.md" + slug: "/general/app/development/plugins-development-guide/examples/question-types" Credits: - filePath: "/general/community/credits/index.md" slug: "/general/community/credits" @@ -1402,17 +1405,14 @@ Moodle_App_Release_Notes: - filePath: "/general/app_releases.md" slug: "/general/app_releases" Moodle_App_Release_Process: -- filePath: "/general/app/development/release-process.md" - slug: "/general/app/development/release-process" +- filePath: "/general/development/process-moodleapp/release.md" + slug: "/general/development/process-moodleapp/release" Moodle_App_Remote_Themes: - filePath: "/general/app/customisation/remote-themes.md" slug: "/general/app/customisation/remote-themes" Moodle_App_Remote_Themes_Upgrade_Guide: - filePath: "/general/app/upgrading/remote-themes-upgrade-guide.md" slug: "/general/app/upgrading/remote-themes-upgrade-guide" -Moodle_App_Scripts:_gulp_push: -- filePath: "/general/app/development/scripts/gulp-push.md" - slug: "/general/app/development/scripts/gulp-push" Moodle_Development_kit: - filePath: "/general/development/tools/mdk.md" slug: "/general/development/tools/mdk" From 6a88e1c2dcd43448f712d2241ac9c7ebc3614e70 Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Thu, 4 Jul 2024 10:00:05 +0200 Subject: [PATCH 2/9] [docs] Deprecation of the badges/newbadge.php page In MDL-43938, the badges/newbadge.php page has been deprecated and merged with badges/edit.php. --- docs/devupdate.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/devupdate.md b/docs/devupdate.md index be4f2ebb5b..a312054f6c 100644 --- a/docs/devupdate.md +++ b/docs/devupdate.md @@ -9,6 +9,26 @@ tags: This page highlights the important changes that are coming in Moodle 4.5 for developers. +## Badges + +### Deprecated `badges/newbadge.php` + +The `badges/newbadge.php` and `badges/edit.php` pages have been combined to make things easier to maintain since both were pretty similar (`newbadge.php` for creating badges and `edit.php` for editing them). + +As a result, `badges/newbadge.php` is now deprecated and will be removed in Moodle 6.0. Please update your code to use badges/edit.php instead. + +:::info + +Visiting + +https://yourmoodlesite/badges/newbadge.php?id=x + +will now automatically redirect to + +https://yourmoodlesite/badges/edit.php?courseid=x&mode=new + +::: + ## Core changes ### Autoloader From 19397c52f488185bfa19a5c443065f3cc3b06809 Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Thu, 4 Jul 2024 10:24:54 +0200 Subject: [PATCH 3/9] [docs] Add reference to public files deprecation As we've discussed with each deprecation of a public file, like in MDL-43938 with badges/newbadge.php, I've added an explicit reference to it. This will help us remember the agreed-upon process in the future. --- general/development/policies/deprecation/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/general/development/policies/deprecation/index.md b/general/development/policies/deprecation/index.md index 0f55457806..22dfde790b 100644 --- a/general/development/policies/deprecation/index.md +++ b/general/development/policies/deprecation/index.md @@ -40,6 +40,9 @@ Deprecation affects only the current main version, in other words, the deprecati - If the function is not a member of a class (in other words, it is an independent function), it should be moved, with its PHPDoc and all comments, to `lib/deprecatedlib.php`, which is included everywhere. If the function is a class member, it will need to be deprecated in its current location. - Deprecated behat step definitions should be moved to `lib/tests/behat/behat_deprecated.php`. Steps that are part of a component should be moved to `$COMPONENT_DIRECTORY/tests/behat/behat__deprecated.php` instead. Deprecated function should call to `behat_deprecated::deprecated_message()` proposing an alternative to the deprecated method. +- If a public file is being deprecated (for example, `badges/newbadge.php` in MDL-43938), the following actions should be done: + - Add a `@deprecated` tag to the PHPDoc for the file description so that IDEs describing the file will note that it is deprecated, documenting which version it was deprecated in, the MDL issue associated with it and the MDL where the file will be removed. + - Add a debugging message or a redirect to the new file with a message so attention is drawn to the deprecation. The message should state that the file being included has been deprecated and should help a developer or user using the file that has gone, telling them what they should do instead. - If an entire class is being deprecated, the following actions should be done: - Add @deprecated tag on class level PHPDoc block - Add @deprecated tag on the PHPDoc block of all public methods From 06dfa494bb121265a2b6f46c638e4a7503476cb9 Mon Sep 17 00:00:00 2001 From: sarjona Date: Sun, 7 Jul 2024 05:37:37 +0000 Subject: [PATCH 4/9] [repo] Update Moodle Component metadata --- data/libraries.json | 8 ++++---- data/main/components.json | 1 + data/moodle-contributors.txt | 2 ++ general/community/credits/thirdpartylibs.md | 8 ++++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/data/libraries.json b/data/libraries.json index 309b524677..7f06850334 100644 --- a/data/libraries.json +++ b/data/libraries.json @@ -627,7 +627,7 @@ "copyrightHolders": [], "location": "lib/laravel/serializable-closure", "name": "Serializable Closure", - "version": "1.3.2", + "version": "1.3.3", "license": "MIT", "repository": "https://github.com/laravel/serializable-closure", "customised": false @@ -984,7 +984,7 @@ "location": "lib/psr/http-client", "name": "http-client", "description": "Provides an abstraction that describe the components of a HTTP Client.", - "version": "1.0.0", + "version": "1.0.3", "license": "MIT", "repository": "https://github.com/php-fig/http-client", "customised": false @@ -1004,7 +1004,7 @@ "location": "lib/psr/http-message", "name": "http-message", "description": "Provide a set of common interfaces for HTTP messages as described in RFC 7230 and RFC 7231", - "version": "1.0.1", + "version": "2.0.0", "license": "MIT", "repository": "https://github.com/php-fig/http-message", "customised": false @@ -1068,7 +1068,7 @@ "location": "lib/symfony/deprecation-contracts", "name": "Symfony Deprecation contracts", "description": "A generic function and convention to trigger deprecation notices", - "version": "3.1.1", + "version": "3.5.0", "license": "MIT", "repository": "https://github.com/symfony/deprecation-contracts", "customised": false diff --git a/data/main/components.json b/data/main/components.json index 651654cc58..72680af683 100644 --- a/data/main/components.json +++ b/data/main/components.json @@ -109,6 +109,7 @@ "privacy": "privacy", "question": "question", "rating": "rating", + "report": "report", "reportbuilder": "reportbuilder", "repository": "repository", "rss": "rss", diff --git a/data/moodle-contributors.txt b/data/moodle-contributors.txt index f56dd603da..c95d1660e8 100644 --- a/data/moodle-contributors.txt +++ b/data/moodle-contributors.txt @@ -448,6 +448,7 @@ Hernández Herrmann Heywood Hien +Hieu Hilton Hippisley Hiroto @@ -903,6 +904,7 @@ Rasmussen Rawson Raymond Recio +Reichert Reischmann Renaat Renaud diff --git a/general/community/credits/thirdpartylibs.md b/general/community/credits/thirdpartylibs.md index c6971e7e89..e119e23e98 100644 --- a/general/community/credits/thirdpartylibs.md +++ b/general/community/credits/thirdpartylibs.md @@ -563,7 +563,7 @@ jQuery UI is a set of user interface interactions, effects, widgets, and themes ### Serializable Closure - **Location**: lib/laravel/serializable-closure -- **Version**: 1.3.2 +- **Version**: 1.3.3 - **License**: MIT - **URL**: [https://github.com/laravel/serializable-closure](https://github.com/laravel/serializable-closure) @@ -877,7 +877,7 @@ Provides interfaces that descirbe an event dispatching mechanism. Provides an abstraction that describe the components of a HTTP Client. - **Location**: lib/psr/http-client -- **Version**: 1.0.0 +- **Version**: 1.0.3 - **License**: MIT - **URL**: [https://github.com/php-fig/http-client](https://github.com/php-fig/http-client) @@ -895,7 +895,7 @@ Provides interfaces that describe the components of a HTTP Factory. Provide a set of common interfaces for HTTP messages as described in RFC 7230 and RFC 7231 - **Location**: lib/psr/http-message -- **Version**: 1.0.1 +- **Version**: 2.0.0 - **License**: MIT - **URL**: [https://github.com/php-fig/http-message](https://github.com/php-fig/http-message) @@ -953,7 +953,7 @@ Simple Pie helps with blogs. A generic function and convention to trigger deprecation notices - **Location**: lib/symfony/deprecation-contracts -- **Version**: 3.1.1 +- **Version**: 3.5.0 - **License**: MIT - **URL**: [https://github.com/symfony/deprecation-contracts](https://github.com/symfony/deprecation-contracts) From d2a087e6c3d3a66845c6dcce482b75f0571b00ab Mon Sep 17 00:00:00 2001 From: Alfonso Salces Date: Mon, 8 Jul 2024 09:08:26 +0200 Subject: [PATCH 5/9] Replace ngIf and ngFor directives with new control flow --- .../examples/course-formats.md | 34 +++++------ .../app/development/testing/unit-testing.md | 4 +- .../policies/codingstyle-moodleapp.md | 57 ++++++++++--------- 3 files changed, 51 insertions(+), 44 deletions(-) diff --git a/general/app/development/plugins-development-guide/examples/course-formats.md b/general/app/development/plugins-development-guide/examples/course-formats.md index 30057074a2..66a395bb1e 100644 --- a/general/app/development/plugins-development-guide/examples/course-formats.md +++ b/general/app/development/plugins-development-guide/examples/course-formats.md @@ -53,7 +53,7 @@ class mobile { ```html handlebars title="templates/mobile_course.mustache" {{=<% %>=}} - + @for (section of sections; track $index) { @@ -61,20 +61,22 @@ class mobile { - - - - - - + @if (section.summary) { + + + + + + + } - - + @for (module of section.modules; track $index) { + @if (module.visibleoncoursepage !== 0) { - - - + } + } + } ``` @@ -116,11 +118,11 @@ class mobile { Then filter the list of sections in your template: ```html - - +@for (section of sections; track $index) { + @if (section.id in CONTENT_OTHERDATA.displaysections) { - - + } +} ``` ## Using JavaScript diff --git a/general/app/development/testing/unit-testing.md b/general/app/development/testing/unit-testing.md index a640b6e52c..385f5ecf4e 100644 --- a/general/app/development/testing/unit-testing.md +++ b/general/app/development/testing/unit-testing.md @@ -138,7 +138,9 @@ Let's say you want to test the following component that render a list of user na template: `

Users List

    -
  • {{ user }}
  • + @for (user of users; track $index) { +
  • {{ user }}
  • + }
`, }) diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index af30f94eaa..1731322474 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -444,9 +444,9 @@ In some situations, a simple method that only returns a value would be acceptabl ```html -
- -
+@if (isAdmin) { +
+} ```
@@ -454,9 +454,9 @@ In some situations, a simple method that only returns a value would be acceptabl ```html -
- -
+@if (site.isAdmin()) { +
+} ```
@@ -502,15 +502,17 @@ There is a maximum line length of 140 characters for templates. Whenever that le ```html - - - {{ course.title }} - - +@for (course of courses; track $index) { + + + {{ course.title }} + + +} ``` @@ -518,18 +520,19 @@ There is a maximum line length of 140 characters for templates. Whenever that le ```html - - - {{ course.title }} - - +@for (course of courses; track $index) { + + + {{ course.title }} + + +} ``` From 3b7ce4af1508faf4f8faa8c7ee4125372b18dc43 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Tue, 9 Jul 2024 17:23:05 +0200 Subject: [PATCH 6/9] MOBILE-4470 Release notes 4.4.1 --- general/app_releases.md | 1 + general/app_releases/v4/v4.4.0.md | 2 +- general/app_releases/v4/v4.4.1.md | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 general/app_releases/v4/v4.4.1.md diff --git a/general/app_releases.md b/general/app_releases.md index faf51919eb..eb105d57fe 100644 --- a/general/app_releases.md +++ b/general/app_releases.md @@ -10,6 +10,7 @@ tags: | **Version name** | **Date** | |---|---| +| [Moodle App 4.4.1](./app_releases/v4/v4.4.1) | 9 July 2024 | | [Moodle App 4.4.0](./app_releases/v4/v4.4.0) | 28 June 2024 | | [Moodle App 4.3.0](./app_releases/v4/v4.3.0) | 10 November 2023 | | [Moodle App 4.2.0](./app_releases/v4/v4.2.0) | 9 June 2023 | diff --git a/general/app_releases/v4/v4.4.0.md b/general/app_releases/v4/v4.4.0.md index 87003cd959..e9d4ce2842 100644 --- a/general/app_releases/v4/v4.4.0.md +++ b/general/app_releases/v4/v4.4.0.md @@ -38,7 +38,7 @@ Release date: 28 June 2024 ### Task - [MOBILE-3947](https://tracker.moodle.org/browse/MOBILE-3947) - Upgrade to Ionic 7 and to Angular 17 -- [MOBILE-4357](https://tracker.moodle.org/browse/MOBILE-4357) - Upgrade Cordova and Android SDK to 34, cordova-android to 12 and cordova-ios to 7 +- [MOBILE-4357](https://tracker.moodle.org/browse/MOBILE-4357) - Upgrade Cordova, cordova-android to 12 and cordova-ios to 7 - [MOBILE-4449](https://tracker.moodle.org/browse/MOBILE-4449) - Use Android photo picker to avoid using READ_MEDIA_IMAGES and READ_MEDIA_VIDEO - [MOBILE-4465](https://tracker.moodle.org/browse/MOBILE-4465) - Remove deprecated 4.0 code - [MOBILE-4492](https://tracker.moodle.org/browse/MOBILE-4492) - Upgrade cordova-plugin-file to 8.0.1, cordova-plugin-media-capture and use cordova-plugin-camera diff --git a/general/app_releases/v4/v4.4.1.md b/general/app_releases/v4/v4.4.1.md new file mode 100644 index 0000000000..1150ab5636 --- /dev/null +++ b/general/app_releases/v4/v4.4.1.md @@ -0,0 +1,26 @@ +--- +title: Moodle App 4.4.1 release notes +sidebar_label: Moodle App 4.4.1 +tags: + - Moodle App + - Release notes +--- + +Release date: 9 July 2024 + +## New features and improvements + +- Android target SDK updated to 34 +- Fix bug when playing embedded videos +- Fix bug in certain courses using single activity formats + +## Complete list of issues + +### Task + +- [MOBILE-4621](https://tracker.moodle.org/browse/MOBILE-4621) - Update Android targetSdk to 34 + +### Bug + +- [MOBILE-4620](https://tracker.moodle.org/browse/MOBILE-4620) - Some courses using single activity format do not work anymore in the app +- [MOBILE-4624](https://tracker.moodle.org/browse/MOBILE-4624) - Iframes with inline styles aren't displayed in the app after 4.4 upgrade From 60004baadb4d74d86090f13ef662bca9308d99ed Mon Sep 17 00:00:00 2001 From: ferranrecio Date: Wed, 10 Jul 2024 12:37:29 +0200 Subject: [PATCH 7/9] [docs] Make testing scenarios with outlines In MDL-81886, the make testing scenario tool is able to execute outline scenarios, not just regular ones. --- general/development/tools/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/development/tools/generator.md b/general/development/tools/generator.md index 14b9ec96c8..cee1893cb6 100644 --- a/general/development/tools/generator.md +++ b/general/development/tools/generator.md @@ -47,7 +47,7 @@ The tool does not use `selenium` or any other browser wrapper. It reads the feat This means: 1. The tool will only execute a few steps, which are generators and set config values. If any other type of step is present in the `feature` file, it will show a parsing error. -1. For now, the tool can only execute normal scenarios. It does not support background, or outline scenarios. +1. The tool can only execute scenarios and outline scenarios. It does not support background. ::: From 640758d0c7b221926dc815270e9c374d800bbbf7 Mon Sep 17 00:00:00 2001 From: Alfonso Salces Date: Wed, 10 Jul 2024 13:44:23 +0200 Subject: [PATCH 8/9] MOBILE-4612: Use ids instead index to track list elements --- .../plugins-development-guide/examples/course-formats.md | 4 ++-- general/app/development/testing/unit-testing.md | 2 +- general/development/policies/codingstyle-moodleapp.md | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/general/app/development/plugins-development-guide/examples/course-formats.md b/general/app/development/plugins-development-guide/examples/course-formats.md index 66a395bb1e..2057557314 100644 --- a/general/app/development/plugins-development-guide/examples/course-formats.md +++ b/general/app/development/plugins-development-guide/examples/course-formats.md @@ -53,7 +53,7 @@ class mobile { ```html handlebars title="templates/mobile_course.mustache" {{=<% %>=}} - @for (section of sections; track $index) { + @for (section of sections; track section.id) { @@ -70,7 +70,7 @@ class mobile { } - @for (module of section.modules; track $index) { + @for (module of section.modules; track module.id) { @if (module.visibleoncoursepage !== 0) { diff --git a/general/app/development/testing/unit-testing.md b/general/app/development/testing/unit-testing.md index 385f5ecf4e..381b4f1de5 100644 --- a/general/app/development/testing/unit-testing.md +++ b/general/app/development/testing/unit-testing.md @@ -128,7 +128,7 @@ Most services will be instantiated properly without mocks, but sometimes you may ## Testing components -Angular components have a strong graphical part, but that doesn't mean that you can't test their logic and markup rendering using unit tests with Jest. You can follow [Angular's best practices for testing components](https://angular.io/guide/testing-components-scenarios), and we also provide a couple of helpers that make things easier. +Angular components have a strong graphical part, but that doesn't mean that you can't test their logic and markup rendering using unit tests with Jest. You can follow [Angular's best practices for testing components](https://angular.dev/guide/testing/components-scenarios), and we also provide a couple of helpers that make things easier. Let's say you want to test the following component that render a list of user names: diff --git a/general/development/policies/codingstyle-moodleapp.md b/general/development/policies/codingstyle-moodleapp.md index 1731322474..f37d5cd0b5 100644 --- a/general/development/policies/codingstyle-moodleapp.md +++ b/general/development/policies/codingstyle-moodleapp.md @@ -435,7 +435,7 @@ export class MyService { ### Avoid calling methods in templates -Method calls should be avoided in template rendering, this includes structural directives such as `ngIf` or `ngFor`. +Method calls should be avoided in template rendering, including structural directives like `ngIf` or `ngFor`. The same applies to the new control flow syntax with `@if` or `@for`. Angular templates can be rendered very often, and calling methods on every render could cause some unintended performance issues. For that reason, it is usually safer to rely on values rather than methods. @@ -502,7 +502,7 @@ There is a maximum line length of 140 characters for templates. Whenever that le ```html -@for (course of courses; track $index) { +@for (course of courses; track course.id) { ```html -@for (course of courses; track $index) { +@for (course of courses; track course.id) { Date: Wed, 22 May 2024 12:31:28 +0800 Subject: [PATCH 9/9] [docs] Add documentation for new SMS API --- docs/apis/subsystems/sms/index.md | 124 ++++++++++++++++++++++++++++++ docs/devupdate.md | 4 + 2 files changed, 128 insertions(+) create mode 100644 docs/apis/subsystems/sms/index.md diff --git a/docs/apis/subsystems/sms/index.md b/docs/apis/subsystems/sms/index.md new file mode 100644 index 0000000000..c8680cbedd --- /dev/null +++ b/docs/apis/subsystems/sms/index.md @@ -0,0 +1,124 @@ +--- +title: SMS API +--- + + + +The SMS API lets you send SMS messages using configured gateways, fetch messages that were previously sent, and check on their status. + +## Sending an SMS + +Messages can be sent using the `send()` method of the SMS Manager class, which should be fetched using Dependency Injection, for example: + +```php title="Sending a message" +$message = \core\di::get(\core_sms\manager::class) + ->send( + recipientnumber: '+61987654321', + content: 'This is the content of the message', + component: 'mod_example', + messagetype: 'demonstrationmessage', + recipientuserid: $user->id, + issensitive: false, + async: false, + ); +``` + +:::info Message lengths + +A single SMS sent by the API may consist of up to 480 UTF-8 characters. It is up to the message _gateway_ plugin to determine how this message is sent to the recipient. + +Any message longer than the maximum length will be immediately rejected. + +::: + +### Sending messages containing sensitive information + +When sending a message containing something like a 2FA login token, you should make use of the `issensitive` flag. + +Passing this flag prevents the SMS subsystem from storing the content of the message in the message log. + +The `send()` method return an instance of `\core_sms\message` which can be used to check on the message status. + +## Fetching messages + +Every sent message is stored in the database for subsequent reporting, and to check statuses. + +Messages can be fetched from the database by calling the `\core_sms\manager::get_message()` and `\core_sms\manager::get_messages()` methods and supplying a filter. + +```php title="Fetching messages" +$message = \core\di::get(\core_sms\manager::class) + ->get_message(['id' => $id]); + +$messages = \core\di::get(\core_sms\manager::class) + ->get_messages(['recipientuserid' => $userid]); +``` + +:::note Sensitive content + +If the message was sent with the `issensitive` flag the message body will not be stored. + +::: + +## Checking the status of a message + +Once a message is sent, a status is recorded against it. This can be used to determine whether the message was sent successfully. + +:::info + +The level of status information available will depend on individual message gateways and recipient regions. In some regions delivery status may be available, but not in others. + +::: + +Message status can be checked using the `\core_sms\message::$status` property. + +Statuses are represented by a PHP Enum object with each status having a translatable description, and methods to determine whether the message was sent, is failed, or still in-progress. + +```php title="Checking the status of a message" +$message = \core\di::get(\core_sms\manager::class) + ->get_message(['id' => $id]); + +// Check if the message is failed. +$message->is_failed(); + +// Check if the message is still in transit. +$message->is_in_progress(); + +// Check if the message is sent. +$message->is_sent(); + +// Get the description of the state. +$message->description(); +``` + +```mermaid +graph TD + + classDef failed fill:#f00,color:white,font-weight:bold,stroke:yellow + classDef inprogress fill:orange + classDef success fill:green,color:white,font-weight:bold + + unknown["UNKNOWN"] + MOS["MESSAGE_OVER_SIZE"]:::failed + GNA["GATEWAY_NOT_AVAILABLE"]:::failed + GQ["GATEWAY_QUEUED"]:::inprogress + GS["GATEWAY_SENT"]:::success + GF["GATEWAY_FAILED"]:::failed + GR["GATEWAY_REJECTED"]:::failed + MLC{Message length check} + GWSEL{Gateway selection} + + direction TB + start[/Start/] --> |Initial state| unknown + unknown --> |Initial message checks| MLC + MLC --> |Message over length| MOS + MLC --> |Message within limits| GWSEL + + GWSEL --> |No gateway available to send this message| GNA + GWSEL --> |Message passed to Gateway| Gateway + + subgraph Gateway + GQ --> |The gateway rejected the message| GR + GQ --> |Sent to recipient by Gateway| GS + GQ --> |Gateway failed to send the message| GF + end +``` diff --git a/docs/devupdate.md b/docs/devupdate.md index a312054f6c..1d7b16c15c 100644 --- a/docs/devupdate.md +++ b/docs/devupdate.md @@ -47,6 +47,10 @@ Please note that the same limitations regarding access to the Database, Session, ::: +### SMS API + +A new SMS API was introduced. See the [SMS API documentation](./apis/subsystems/sms/index.md) for more information. + ## Course ### Reset course page