diff --git a/protocol-spec/account-registration.md b/protocol-spec/account-registration.md
new file mode 100644
index 0000000..7daf529
--- /dev/null
+++ b/protocol-spec/account-registration.md
@@ -0,0 +1,103 @@
+# Account registration
+## Introduction
+This extension is intended for creating user accounts on a server
+
+## Message type identifiers
+- `profile:register`
+
+## Error codes
+- 0: limit exceed
+- 1: username/third party ID already taken
+- 2: registration isn't allowed on a server
+
+## Use cases
+- Request:
+```json
+{
+ "id": "abcd",
+ "type": "profile:register",
+ "to": "cadmium.org",
+ "payload": {
+ "username": "juliet",
+ "thirdPIDs": [
+ {"type":"email", "value":"juliet@capulett.com"},
+ {"type":"msisdn", "value":"+1234567890"},
+ ],
+ "password": "romeo1"
+ }
+}
+```
+
+- Response:
+```json
+{
+ "id": "abcd",
+ "type": "profile:register",
+ "from": "cadmium.org",
+ "ok": true,
+ "payload": {
+ "userID": "@juliet@cadmium.org"
+ }
+}
+```
+
+*Error response*:
+```json
+{
+ "id": "abcd",
+ "type": "profile:register",
+ "from": "cadmium.org",
+ "ok": false,
+ "payload": {
+ "errCode": 1,
+ "errText": "{Username/email/msisdn} already taken"
+ }
+}
+```
+
+## Business Rules
+None.
+
+## JSON Schema
+**Payload**
+
+- Request:
+```typescript
+interface RegistrationRequestPayload {
+ /**
+ * The username that the user wants to register
+ */
+ username: string,
+
+ /**
+ * Array of user third party IDs (email and/or MSISDN)
+ */
+ thirdPIDs: ThirdPartyID[],
+
+ /**
+ * Password of new account
+ */
+ password: string
+}
+
+interface ThirdPartyID {
+ /**
+ * Type of third party ID
+ */
+ type: string,
+
+ /**
+ * String contains third party ID. Examples: "juliet@capulett.com", "+1234567890".
+ */
+ value: string
+}
+```
+- Response:
+```typescript
+interface RegistrationResponsePayload {
+ /**
+ * ID of user (Username in priority. If we haven't username, then we put to this field one of user's third party IDs)
+ */
+ userID: EntityID
+}
+```
\ No newline at end of file
diff --git a/protocol-spec/core.md b/protocol-spec/core.md
index c005508..334cda3 100644
--- a/protocol-spec/core.md
+++ b/protocol-spec/core.md
@@ -7,7 +7,6 @@
- [Errors](#errors)
- [User devices](#user-devices)
- [Account registration/login](#account-registrationlogin)
- - [Create account](#create-account)
- [Login into account (by username)](#login-into-account-by-username)
## Transport
@@ -128,103 +127,6 @@ interface ErrorPayload {
`todo`
## Account registration/login
-### Create account
-**Description**: Create user account on a server
-**Type**: `profile:register`
-**Payload**:
-- Request:
-```typescript
-interface RegistrationRequestPayload {
- /**
- * The username that the user wants to register
- */
- username: string,
-
- /**
- * Array of user third party IDs (email and/or MSISDN)
- */
- thirdPIDs: ThirdPartyID[],
-
- /**
- * Password of new account
- */
- password: string
-}
-
-interface ThirdPartyID {
- /**
- * Type of third party ID
- */
- type: string,
-
- /**
- * String contains third party ID. Examples: "juliet@capulett.com", "+1234567890".
- */
- value: string
-}
-```
-- Response:
-```typescript
-interface RegistrationResponsePayload {
- /**
- * ID of user (Username in priority. If we haven't username, then we put to this field one of user's third party IDs)
- */
- userID: EntityID
-}
-```
-
-**Errors**:
-- 0: limit exceed
-- 1: username/third party ID already taken
-- 2: registration isn't allowed on a server
-
-**Usecase**:
-
-*Request*:
-```json
-{
- "id": "abcd",
- "type": "profile:register",
- "to": "cadmium.org",
- "payload": {
- "username": "juliet",
- "thirdPIDs": [
- {"type":"email", "value":"juliet@capulett.com"},
- {"type":"msisdn", "value":"+1234567890"},
- ],
- "password": "romeo1"
- }
-}
-```
-
-*Response*:
-```json
-{
- "id": "abcd",
- "type": "profile:register",
- "from": "cadmium.org",
- "ok": true,
- "payload": {
- "userID": "@juliet@cadmium.org"
- }
-}
-```
-
-*Error response*:
-```json
-{
- "id": "abcd",
- "type": "profile:register",
- "from": "cadmium.org",
- "ok": false,
- "payload": {
- "errCode": 1,
- "errText": "{Username/email/msisdn} already taken"
- }
-}
-```
-
-**Special business rules**: none.
### Login into account (by username)
**Description**: Login into user account on a server by username