ees_microsoft_teams/schema.py (200 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License 2.0;
# you may not use this file except in compliance with the Elastic License 2.0.
#
"""schema module contains Connector configuration file schema.
"""
import datetime
from .constant import DATETIME_FORMAT
def coerce_rfc_3339_date(input_date):
"""This function returns true if its argument is a valid RFC 3339 date."""
if input_date:
return datetime.datetime.strptime(input_date, DATETIME_FORMAT)
return False
schema = {
'username': {
'required': True,
'type': 'string',
'empty': False
},
'password': {
'required': True,
'type': 'string',
'empty': False
},
'application_id': {
'required': True,
'type': 'string',
'empty': False
},
'client_secret': {
'required': True,
'type': 'string',
'empty': False
},
'tenant_id': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.api_key': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.source_id': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.host_url': {
'required': True,
'type': 'string',
'empty': False
},
'enable_document_permission': {
'required': False,
'type': 'boolean',
'default': True
},
'object_type_to_index': {
'type': 'dict',
'nullable': True,
'schema': {
'teams': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'channels': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'channel_messages': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'channel_documents': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'channel_tabs': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'user_chats': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
},
'calendar': {
'type': 'dict',
'nullable': True,
'schema': {
'include_fields': {
'nullable': True,
'type': 'list'
},
'exclude_fields': {
'nullable': True,
'type': 'list'
}
}
}
}
},
'start_time': {
'required': False,
'type': 'datetime',
'max': datetime.datetime.utcnow(),
'default': (datetime.datetime.utcnow() - datetime.timedelta(days=180)).strftime('%Y-%m-%dT%H:%M:%SZ'),
'coerce': coerce_rfc_3339_date
},
'end_time': {
'required': False,
'type': 'datetime',
'max': datetime.datetime.utcnow(),
'default': (datetime.datetime.utcnow()).strftime('%Y-%m-%dT%H:%M:%SZ'),
'coerce': coerce_rfc_3339_date
},
'log_level': {
'required': False,
'type': 'string',
'default': 'INFO',
'allowed': ['DEBUG', 'INFO', 'WARNING', 'ERROR'],
'empty': False
},
'retry_count': {
'required': False,
'type': 'integer',
'default': 3,
'min': 1
},
'microsoft_teams.user_mapping': {
'required': False,
'type': 'string'
},
'ms_teams_sync_thread_count': {
'required': False,
'type': 'integer',
'default': 5,
'min': 1
},
'enterprise_search_sync_thread_count': {
'required': False,
'type': 'integer',
'default': 5,
'min': 1
}
}