"""
Patch Management call schema
"""

from frozendict import frozendict

PM_SCHEMA = frozendict(
    {
        "pm": {
            "url_type": "gateway",
            "deploymentjobs": {
                "endpoint": "/pm/v1/deploymentjobs{placeholder}",
                "method": ["GET", "POST", "PATCH", "DELETE"],
                "valid_params": [
                    "placeholder",
                    "filter",
                    "attributes",
                    "platform",
                    "coauthorJob",
                    "ownedJob",
                    "pageNumber",
                    "pageSize",
                    "sort",
                ],
                "valid_POST_data": ["placeholder"],
                "use_requests_json_data": True,
                "return_type": "json",
                "pagination": True,
                "auth_type": "token",
            },
            "deploymentjob": {
                "endpoint": "/pm/v1/deploymentjob{placeholder}",
                "method": ["GET", "POST", "PATCH", "DELETE"],
                "valid_params": ["placeholder"],
                "valid_POST_data": [
                    "placeholder",
                    "deploymentJobId",
                    "jobInstanceId",
                    "pageSize",
                    "sort",
                    "approvedPatches",
                    "assetIds",
                    "assetTagIds",
                    "coAuthorUserIds",
                    "continueOnPatchFailure",
                    "dayOfMonth",
                    "description",
                    "duringDeployment",
                    "dynamicPatchesQQL",
                    "dynamicQQLType",
                    "additionalDynamicPatchesQQL",
                    "additionalDynamicQQLType",
                    "exclusionAssetIds",
                    "exclusionTagIds",
                    "exclusionFilterType",
                    "filterType",
                    "isDynamicPatchesQQL",
                    "matchAllTagIds",
                    "minimizeWindow",
                    "monthlyRecurringType",
                    "name",
                    "notification",
                    "opportunisticDownloads",
                    "patchTuesdayPlusXDays",
                    "platform",
                    "postDeployment",
                    "rebootCountdown",
                    "rebootOption",
                    "suppressReboots",
                    "preDeployment",
                    "recurring",
                    "recurringDayOfMonth",
                    "recurringLastDayOfMonth",
                    "recurringDayOfMonth",
                    "recurringWeekDayOfMonth",
                    "recurringWeekDays",
                    "scheduleType",
                    "startDateTime",
                    "status",
                    "timeout",
                    "timeoutUnit",
                    "downloadRandomizeTime",
                    "downloadRandomizeTimeUnit",
                    "timezone",
                    "timezoneType",
                    "type",
                    "linkedJobId",
                    "linkedJobReferenceCount",
                ],
                "use_requests_json_data": True,
                "return_type": "json",
                "pagination": False,
                "auth_type": "token",
            },
        },
    }
)
