<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MILES API Changelog</title><description>Changes to the MILES API relevant to developers — schema changes (additions, deprecations, removals) and behavioral changes.</description><link>https://kb.miles-learning.com</link><language>en</language><item><title>API update — 09/01/2026</title><link>https://kb.miles-learning.com/en/api/changelog/#2026-09-01</link><guid isPermaLink="true">https://kb.miles-learning.com/en/api/changelog/#2026-09-01</guid><description>2 behavior, 1 added</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Exercise content is now validated on write. See &lt;a href=&quot;https://kb.miles-learning.com/en/api/validation/&quot;&gt;Schema Validation&lt;/a&gt; for details.&lt;/p&gt;&lt;p&gt;Details about this release in the &lt;a href=&quot;https://kb.miles-learning.com/en/version-history/#2026-09-01&quot;&gt;version history&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Changed behavior&lt;/strong&gt; &lt;code&gt;createExercise&lt;/code&gt; and &lt;code&gt;updateExercise&lt;/code&gt; now validate &lt;code&gt;definition&lt;/code&gt;, &lt;code&gt;answer&lt;/code&gt; and &lt;code&gt;explanations&lt;/code&gt; against the JSON Schema of the exercise type and reject a mismatch with &lt;code&gt;JSON_INVALID&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Changed behavior&lt;/strong&gt; &lt;code&gt;publishExercises&lt;/code&gt; now publishes only exercises whose &lt;code&gt;Exercise.valid&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;. The rest are skipped and counted as errors in the result.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;Exercise.valid&lt;/code&gt; — true if the exercise passed the completeness check and is ready to be published&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>behavior</category><category>added</category></item><item><title>API update — 08/17/2026</title><link>https://kb.miles-learning.com/en/api/changelog/#2026-08-17</link><guid isPermaLink="true">https://kb.miles-learning.com/en/api/changelog/#2026-08-17</guid><description>3 behavior</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Details about this release in the &lt;a href=&quot;https://kb.miles-learning.com/en/version-history/#2026-08-17&quot;&gt;version history&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Changed behavior&lt;/strong&gt; &lt;code&gt;requestPasswordReset&lt;/code&gt; now recognizes single sign-on users and sends them an email pointing to their identity provider instead of a reset token.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Changed behavior&lt;/strong&gt; &lt;code&gt;setNewPassword&lt;/code&gt; now fails with &lt;code&gt;INVALID_INPUT&lt;/code&gt; when the token belongs to a single sign-on user.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Changed behavior&lt;/strong&gt; &lt;code&gt;addActivityLogs&lt;/code&gt; no longer writes learning-phase progress as a side effect of a &lt;code&gt;LEARNING_PHASE&lt;/code&gt; entry — &lt;code&gt;setPhaseCompleted&lt;/code&gt; has taken over that responsibility.&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>behavior</category></item><item><title>API update — 08/10/2026</title><link>https://kb.miles-learning.com/en/api/changelog/#2026-08-10</link><guid isPermaLink="true">https://kb.miles-learning.com/en/api/changelog/#2026-08-10</guid><description>2 deprecated</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Details about this release in the &lt;a href=&quot;https://kb.miles-learning.com/en/version-history/#2026-08-10&quot;&gt;version history&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;exerciseImport&lt;/code&gt; — Not supported anymore. use &lt;code&gt;createExercise&lt;/code&gt; and related functions instead&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;checkExerciseImport&lt;/code&gt; — Not supported anymore. use &lt;code&gt;createExercise&lt;/code&gt; and related functions instead&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>deprecated</category></item><item><title>API update — 08/03/2026</title><link>https://kb.miles-learning.com/en/api/changelog/#2026-08-03</link><guid isPermaLink="true">https://kb.miles-learning.com/en/api/changelog/#2026-08-03</guid><description>7 added</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Details about this release in the &lt;a href=&quot;https://kb.miles-learning.com/en/version-history/#2026-08-03&quot;&gt;version history&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;updateFileReferences&lt;/code&gt; — updates file meta data for given files.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;getFileReferences&lt;/code&gt; — get metadata on files&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;UpdateFileReferenceInput&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;FileReference.uuid&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;FileReference.aiGenerated&lt;/code&gt; — whether the file was produced by an AI feature&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;Group.hasAiTutor&lt;/code&gt; — does the group have the ai tutor enabled?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; &lt;code&gt;Privilege.EDIT_FILE&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>added</category></item><item><title>API update — 07/23/2026</title><link>https://kb.miles-learning.com/en/api/changelog/#2026-07-23</link><guid isPermaLink="true">https://kb.miles-learning.com/en/api/changelog/#2026-07-23</guid><description>7 deprecated</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This changelog starts with today’s release.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;Appointment.startDateString&lt;/code&gt; — Use &lt;code&gt;startDate&lt;/code&gt; and &lt;code&gt;endDate&lt;/code&gt; instead&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;Appointment.endDateString&lt;/code&gt; — Use &lt;code&gt;startDate&lt;/code&gt; and &lt;code&gt;endDate&lt;/code&gt; instead&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;ActivityType.COURSE&lt;/code&gt; — The course concept no longer exists. See &lt;code&gt;ActivityType.COURSE_MODULE&lt;/code&gt; instead.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;PrivilegeScope.HINT&lt;/code&gt; — Hints are part of exercises, so a separate privilege scope is no longer needed.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;FineObjectiveEdges.exerciseRevisions(filter:)&lt;/code&gt; — not used in client and not necessary&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;LearningPhaseEdges.exerciseRevisions(filter:)&lt;/code&gt; — not used in client and not necessary&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deprecated&lt;/strong&gt; &lt;code&gt;SystemContentFilter.ordering&lt;/code&gt; — The ordering option is no longer supported.&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>deprecated</category></item></channel></rss>