# Copyright 2018 New Vector Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
type: object
description: Dictionary of supported third-party protocols.
additionalProperties:
  $ref: protocol.yaml
example: {
  "irc": {
    "user_fields": ["network", "nickname"],
    "location_fields": ["network", "channel"],
    "icon": "mxc://example.org/aBcDeFgH",
    "field_types": {
      "network": {
        "regexp": "([a-z0-9]+\\.)*[a-z0-9]+",
        "placeholder": "irc.example.org"
      },
      "nickname": {
        "regexp": "[^\\s]+",
        "placeholder": "username"
      },
      "channel": {
        "regexp": "#[^\\s]+",
        "placeholder": "#foobar"
      }
    },
    "instances": [
      {
        "network_id": "freenode",
        "desc": "Freenode",
        "icon": "mxc://example.org/JkLmNoPq",
        "fields": {
          "network": "freenode.net",
        }
      }
    ]
  },
  "gitter": {
    "user_fields": ["username"],
    "location_fields": ["room"],
    "field_types": {
      "username": {
        "regexp": "@[^\\s]+",
        "placeholder": "@username"
      },
      "room": {
        "regexp": "[^\\s]+\\/[^\\s]+",
        "placeholder": "matrix-org/matrix-doc"
      }
    },
    "instances": [
      {
        "network_id": "gitter",
        "desc": "Gitter",
        "icon": "mxc://example.org/zXyWvUt",
        "fields": {}
      }
    ]
  }
}