diff --git a/specification/25_application_service_api.rst b/specification/25_application_service_api.rst
index 4eb0cf8b..a6357468 100644
--- a/specification/25_application_service_api.rst
+++ b/specification/25_application_service_api.rst
@@ -22,33 +22,34 @@ Passive Application Services
They cannot prevent events from being sent, nor can they modify the event being
sent.
-In order to observe events from a home server, the application service needs
-to register itself and tell the home server what kinds of events it wants
-to receive.
+In order to observe events from a home server, the home server needs to be
+configured to pass certain types of traffic to the application service. This
+is currently homeserver-configuration specific and is no longer exposed as an
+API, as associating an AS to a HS should only ever be done *very* deliberately
+by the HS administrator.
+
+.. TODO
+ Removing the API entirely is probably a mistake - having a standard cross-HS
+ way of doing this stops ASes being coupled to particular HS implementations.
+ A better solution would be to somehow mandate that the API done to avoid
+ abuse.
+
+An example HS configuration required to pass traffic to the AS is:
+
+.. code-block:: yaml
+
+ url:
+ as_token:
+ hs_token:
+ sender_localpart:
+ namespaces:
+ users: # Namespaces of users which should be delegated to the AS
+ - exclusive:
+ regex:
+ - ...
+ aliases: [] # Namespaces of room aliases which should be delegated to the AS
+ rooms: [] # Namespaces of room ids which should be delegated to the AS
-Application Service -> Home Server API
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This contains home server APIs which are used by the application service.
-
-Registration API
-++++++++++++++++
-
-This API registers the application service with its host homeserver to offer its
-services.
-
-Inputs:
- - Credentials (e.g. some kind of string token)
- - Namespace[users]
- - Namespace[room aliases]
- - URL base to receive inbound comms
-Output:
- - The credentials the HS will use to query the AS with in return. (e.g. some
- kind of string token)
-Side effects:
- - The HS will start delivering events to the URL base specified if this 200s.
-API called when:
- - The application service wants to register with a brand new home server.
-Notes:
- An application service can state whether they should be the only ones who
can manage a specified namespace. This is referred to as an "exclusive"
namespace. An exclusive namespace prevents humans and other application
@@ -57,82 +58,14 @@ Notes:
another service (e.g. IRC). Non-exclusive namespaces are used when the
application service is merely augmenting the room itself (e.g. providing
logging or searching facilities).
- - Namespaces are represented by POSIX extended regular expressions in JSON.
- They look like::
-
- users: [
- {
- "exclusive": true,
- "regex": "@irc\.freenode\.net/.*"
- }
- ]
-
-::
-
- POST /register
-
- Request format
- {
- url: "https://my.application.service.com/matrix/",
- as_token: "some_AS_token",
- namespaces: {
- users: [
- {
- "exclusive": true,
- "regex": "@irc\.freenode\.net/.*"
- }
- ],
- aliases: [
- {
- "exclusive": true,
- "regex": "#irc\.freenode\.net/.*"
- }
- ],
- rooms: [
- {
- "exclusive": true,
- "regex": "!irc\.freenode\.net/.*"
- }
- ]
- }
- }
-
-
- Returns:
- 200 : Registration accepted.
- 400 : Namespaces do not conform to regex
- 401 : Credentials need to be supplied.
- 403 : AS credentials rejected.
-
-
- 200 OK response format
-
- {
- hs_token: "string"
- }
-
-Unregister API
-++++++++++++++
-This API unregisters a previously registered AS from the home server.
+ - Namespaces are typically represented by POSIX extended regular expressions,
+ e.g.:
-Inputs:
- - AS token
-Output:
- - None.
-Side effects:
- - The HS will stop delivering events to the URL base specified for this AS if
- this 200s.
-API called when:
- - The application service wants to stop receiving all events from the HS.
-
-::
+.. code-block:: uaml
- POST /unregister
-
- Request format
- {
- as_token: "string"
- }
+ user:
+ - exclusive: true
+ - regex: @irc.freenode.net/.*
Home Server -> Application Service API