ees_microsoft_outlook/schema.py (155 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 RFC_3339_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, RFC_3339_DATETIME_FORMAT) return False schema = { "microsoft_exchange.active_directory_server": { "required": False, "type": "string", "empty": True, }, "microsoft_exchange.server": { "required": False, "type": "string", "empty": True, }, "microsoft_exchange.username": { "required": False, "type": "string", "empty": True, }, "microsoft_exchange.password": { "required": False, "type": "string", "empty": True, }, "microsoft_exchange.domain": { "required": False, "type": "string", "regex": r"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", "empty": True, }, "microsoft_exchange.secure_connection": { "required": False, "type": "boolean", "default": True, }, "microsoft_exchange.certificate_path": { "required": True, "type": "string", "empty": False }, "office365.client_id": { "required": False, "type": "string", "empty": True, }, "office365.tenant_id": { "required": False, "type": "string", "empty": True, }, "office365.client_secret": { "required": False, "type": "string", "empty": True, }, "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, }, "connector_platform_type": { "required": True, "type": "string", "default": "Office365", "allowed": ["Office365", "Microsoft Exchange"], "empty": False, }, "enable_document_permission": { "required": False, "type": "boolean", "default": True, }, "objects": { "type": "dict", "nullable": True, "schema": { "mails": { "nullable": True, "type": "dict", "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"}, }, }, "tasks": { "type": "dict", "nullable": True, "schema": { "include_fields": {"nullable": True, "type": "list"}, "exclude_fields": {"nullable": True, "type": "list"}, }, }, "contacts": { "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"], }, "retry_count": {"required": False, "type": "integer", "default": 3, "min": 1}, "source_sync_thread_count": {"required": True, "type": "integer", "default": 5, "min": 1}, "enterprise_search_sync_thread_count": { "required": True, "type": "integer", "default": 5, "min": 1, }, "connector.user_mapping": {"required": False, "type": "string"}, }