// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag at
// 2022-10-27 17:25:07.465703 +0700 +07 m=+0.264431515

package docs

import (
	"bytes"
	"encoding/json"
	"strings"

	"github.com/alecthomas/template"
	"github.com/swaggo/swag"
)

var doc = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{.Description}}",
        "title": "{{.Title}}",
        "contact": {},
        "license": {
            "name": "Apache 2.0",
            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/activepromotions": {
            "get": {
                "description": "get current active promotions",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "get current active promotions",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.activePromotion"
                        }
                    },
                    "500": {
                        "description": "cannot get activepromotions",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/healthz": {
            "get": {
                "description": "Endpoint for server health check",
                "consumes": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "Health check",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.healthCheckJSON"
                        }
                    }
                }
            }
        },
        "/teams": {
            "get": {
                "description": "Returns a list of teams that currently running on Samsahai.",
                "tags": [
                    "GET"
                ],
                "summary": "Get Teams",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamsJSON"
                        }
                    }
                }
            }
        },
        "/teams/{team}": {
            "get": {
                "description": "Returns team information. (namespaces, connections)",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamJSON"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/activepromotions": {
            "get": {
                "description": "get active promotions by team name",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "get active promotions by team name",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamActivePromotion"
                        }
                    },
                    "404": {
                        "description": "team {team} not found",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "500": {
                        "description": "cannot get activepromotion/activepromotion histories of team {team}",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/teams/{team}/activepromotions/histories": {
            "get": {
                "description": "get active promotion histories by team name",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "get active promotion histories by team name",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.activePromotionHistories"
                        }
                    },
                    "400": {
                        "description": "team should not be empty",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "500": {
                        "description": "cannot get activepromotion histories of team {team}",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/teams/{team}/activepromotions/histories/{history}": {
            "get": {
                "description": "get active promotion history by team and history name",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "get active promotion history by team and history name",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Active promotion history name",
                        "name": "history",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "team/history should not be empty",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "activepromotion history {history} of team {team} not found",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "500": {
                        "description": "cannot get activepromotion history {history} of team {team}",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/teams/{team}/activepromotions/histories/{history}/log": {
            "get": {
                "description": "Returns zip log file of the active promotion history",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "Get zip log of active promotion history",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Active promotion history name",
                        "name": "history",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "team/history should not be empty",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "activepromotion history {history} of team {team} not found",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "500": {
                        "description": "cannot get activepromotion history {history} of team {team}",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/teams/{team}/components": {
            "get": {
                "description": "Returns list of components of team",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team Component",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamComponentsJSON"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/components/{component}/values": {
            "get": {
                "description": "get team stable component values",
                "tags": [
                    "GET"
                ],
                "summary": "get team stable component values",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Component name",
                        "name": "component",
                        "in": "path",
                        "required": true
                    },
                    {
                        "enum": [
                            "application/json",
                            "application/x-yaml"
                        ],
                        "type": "string",
                        "description": "Accept",
                        "name": "accept",
                        "in": "header",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Component not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/config": {
            "get": {
                "description": "get team configuration",
                "tags": [
                    "GET"
                ],
                "summary": "get team configuration",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "enum": [
                            "application/json",
                            "application/x-yaml"
                        ],
                        "type": "string",
                        "description": "Accept",
                        "name": "accept",
                        "in": "header",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/environment/active/delete": {
            "delete": {
                "description": "Delete the current active namespace.",
                "tags": [
                    "GET"
                ],
                "summary": "Delete the current active namespace",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Delete by",
                        "name": "deleted_by",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "There is no active namespace to destroy",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/pullrequest/queue": {
            "get": {
                "description": "Returns queue information of pull request deployment flow.",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team's Pull Request Queues",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamPRQueueJSON"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/pullrequest/queue/histories/{queue}": {
            "get": {
                "description": "Return pull request queue history of team by id",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team Pull Request Queue History",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "pull request queue history name",
                        "name": "queue",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/v1.PullRequestQueueHistory"
                        }
                    },
                    "404": {
                        "description": "pull request queue history not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/pullrequest/queue/histories/{queue}/log": {
            "get": {
                "description": "Returns zip log file of the pull request queue history",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team Pull Request Queue History Log",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "pull request queue history name",
                        "name": "queue",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/v1.PullRequestQueueHistory"
                        }
                    },
                    "404": {
                        "description": "pull request queue history not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/pullrequest/trigger": {
            "post": {
                "description": "Endpoint for manually triggering pull request deployment.\nIf testRunner.gitlab.inferBranch is true and testRunner.gitlab.branch is not set,\nit will always try to infer branch regardless of the branch in config.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "POST"
                ],
                "summary": "Webhook For Pull Request Deployment",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Pull Request",
                        "name": "pullRequestWebhookEventJSON",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/webhook.pullRequestWebhookEventJSON"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Invalid JSON",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Errors",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/queue": {
            "get": {
                "description": "Returns queue information of new component upgrading flow.",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team's Queues",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.teamQueueJSON"
                        }
                    },
                    "404": {
                        "description": "Team not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/queue/histories/{queue}": {
            "get": {
                "description": "Return queue history of team by id",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team Queue History",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Queue history name",
                        "name": "queue",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/v1.QueueHistory"
                        }
                    },
                    "404": {
                        "description": "Queue history not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/teams/{team}/queue/histories/{queue}/log": {
            "get": {
                "description": "Returns zip log file of the queue history",
                "tags": [
                    "GET"
                ],
                "summary": "Get Team Queue History Log",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team name",
                        "name": "team",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Queue history name",
                        "name": "queue",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/v1.QueueHistory"
                        }
                    },
                    "404": {
                        "description": "Queue history not found",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        },
        "/version": {
            "get": {
                "description": "Get service version information.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "GET"
                ],
                "summary": "Service Version",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/webhook.versionJSON"
                        }
                    }
                }
            }
        },
        "/webhook/component": {
            "post": {
                "description": "Endpoint for manually triggering new component update",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "POST"
                ],
                "summary": "Webhook New Component",
                "parameters": [
                    {
                        "description": "New Component",
                        "name": "newComponentEventJSON",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/webhook.newComponentEventJSON"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Invalid JSON",
                        "schema": {
                            "$ref": "#/definitions/webhook.errResp"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "v1.ActivePromotion": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotionSpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotionStatus"
                }
            }
        },
        "v1.ActivePromotionCondition": {
            "type": "object",
            "properties": {
                "lastTransitionTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "message": {
                    "description": "+optional",
                    "type": "string"
                },
                "reason": {
                    "description": "+optional",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "v1.ActivePromotionHistory": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotionHistorySpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotionHistoryStatus"
                }
            }
        },
        "v1.ActivePromotionHistorySpec": {
            "type": "object",
            "properties": {
                "activePromotion": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotion"
                },
                "createdAt": {
                    "description": "TODO: store values file of all components",
                    "type": "string"
                },
                "isSuccess": {
                    "type": "boolean"
                },
                "teamName": {
                    "type": "string"
                }
            }
        },
        "v1.ActivePromotionHistoryStatus": {
            "type": "object"
        },
        "v1.ActivePromotionSpec": {
            "type": "object",
            "properties": {
                "noDowntimeGuarantee": {
                    "description": "NoDowntimeGuarantee represents a flag for switching to the new namespace before demoting the active namespace and guarantees the process will not have a downtime\n+optional",
                    "type": "boolean"
                },
                "noOfRetry": {
                    "description": "NoOfRetry represents how many times this active promotion process has been run\n+optional",
                    "type": "integer"
                },
                "promotedBy": {
                    "description": "PromotedBy represents a person who promoted the ActivePromotion\n+optional",
                    "type": "string"
                },
                "skipTestRunner": {
                    "description": "SkipTestRunner represents a flag for skipping running pre-active test\n+optional",
                    "type": "boolean"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration represents duration before tear down the previous active namespace\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.ActivePromotionStatus": {
            "type": "object",
            "properties": {
                "activeComponents": {
                    "description": "ActiveComponents represents a list of promoted active components\n+optional",
                    "type": "object"
                },
                "activePromotionHistoryName": {
                    "description": "ActivePromotionHistoryName represents created ActivePromotionHistoryName name\n+optional",
                    "type": "string"
                },
                "conditions": {
                    "description": "Conditions contains observations of the resource's state e.g.,\nQueue deployed, being tested\n+optional\n+patchMergeKey=type\n+patchStrategy=merge",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.ActivePromotionCondition"
                    }
                },
                "demotionStatus": {
                    "description": "DemotionStatus represents a status of the active demotion\n+optional",
                    "type": "string"
                },
                "destroyedTime": {
                    "description": "DestroyedTime represents time at which the previous active namespace will be destroyed\n+optional",
                    "type": "string"
                },
                "hasOutdatedComponent": {
                    "description": "HasOutdatedComponent defines whether current active promotion has outdated component or not\n+optional",
                    "type": "boolean"
                },
                "isTimeout": {
                    "description": "IsTimeout defines whether the active promotion has been timeout or not\n+optional",
                    "type": "boolean"
                },
                "message": {
                    "description": "Message defines details about why the active promotion is in this condition\n+optional",
                    "type": "string"
                },
                "outdatedComponents": {
                    "description": "OutdatedComponents represents map of outdated components\n+optional",
                    "type": "object"
                },
                "preActiveQueue": {
                    "description": "PreActiveQueue represents a pre-active queue status\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueStatus"
                },
                "previousActiveNamespace": {
                    "description": "PreviousActiveNamespace represents an active namespace before promoting\n+optional",
                    "type": "string"
                },
                "result": {
                    "description": "Result represents a result of the active promotion\n+optional",
                    "type": "string"
                },
                "rollbackStatus": {
                    "description": "RollbackStatus represents a status of the rollback process\n+optional",
                    "type": "string"
                },
                "startedAt": {
                    "description": "StartedAt represents time at which the active promotion started\n+optional",
                    "type": "string"
                },
                "state": {
                    "description": "ActivePromotionState represents a current state of the active promotion\n+optional",
                    "type": "string"
                },
                "targetNamespace": {
                    "description": "TargetNamespace represents a pre-active namespace\n+optional",
                    "type": "string"
                },
                "updatedAt": {
                    "description": "UpdatedAt represents time at which the active promotion finished\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.CommandAndArgs": {
            "type": "object",
            "properties": {
                "args": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "command": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "v1.Component": {
            "type": "object",
            "properties": {
                "chart": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentChart"
                },
                "dependencies": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Dependency"
                    }
                },
                "image": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentImage"
                },
                "name": {
                    "type": "string"
                },
                "parent": {
                    "description": "+optional",
                    "type": "string"
                },
                "schedules": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "source": {
                    "description": "+optional",
                    "type": "string"
                },
                "values": {
                    "description": "+optional\n+kubebuilder:pruning:PreserveUnknownFields",
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentValues"
                }
            }
        },
        "v1.ComponentChart": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "repository": {
                    "type": "string"
                },
                "version": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ComponentImage": {
            "type": "object",
            "properties": {
                "pattern": {
                    "description": "+optional",
                    "type": "string"
                },
                "repository": {
                    "type": "string"
                },
                "tag": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ComponentValues": {
            "type": "object",
            "additionalProperties": {
                "type": "object"
            }
        },
        "v1.ConfigActivePromotion": {
            "type": "object",
            "properties": {
                "demotionTimeout": {
                    "description": "DemotionTimeout defines maximum duration for doing active demotion\n+optional",
                    "type": "string"
                },
                "deployment": {
                    "description": "Deployment represents configuration about deploy\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigDeploy"
                },
                "maxHistories": {
                    "description": "MaxHistories defines maximum length of ActivePromotionHistory stored per team\n+optional",
                    "type": "integer"
                },
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of active promotion process in case failure\n+optional",
                    "type": "integer"
                },
                "noDowntimeGuarantee": {
                    "description": "NoDowntimeGuarantee defines a flag for switching to the new namespace before demoting the active namespace and guarantees the process will not have a downtime",
                    "type": "boolean"
                },
                "outdatedNotification": {
                    "description": "OutdatedNotification defines a configuration of outdated notification\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.OutdatedNotification"
                },
                "rollbackTimeout": {
                    "description": "RollbackTimeout defines maximum duration for rolling back active promotion\n+optional",
                    "type": "string"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration defines duration before teardown the previous active namespace\n+optional",
                    "type": "string"
                },
                "timeout": {
                    "description": "Timeout defines maximum duration for doing active promotion\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigActivePromotionReport": {
            "type": "object",
            "properties": {
                "extraMessage": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigBundles": {
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {}
            }
        },
        "v1.ConfigComponentUpgradeReport": {
            "type": "object",
            "properties": {
                "criteria": {
                    "description": "+optional",
                    "type": "string"
                },
                "extraMessage": {
                    "description": "+optional",
                    "type": "string"
                },
                "interval": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigDeploy": {
            "type": "object",
            "properties": {
                "componentCleanupTimeout": {
                    "description": "ComponentCleanupTimeout defines timeout duration of component cleaning up\n+optional",
                    "type": "string"
                },
                "engine": {
                    "description": "Engine defines method of deploying\n\nmock - for test only, always return success\n\nhelm3 - deploy chart with helm3\n+optional",
                    "type": "string"
                },
                "testRunner": {
                    "description": "TestRunner represents configuration about test\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestRunner"
                },
                "timeout": {
                    "description": "Timeout defines maximum duration for deploying environment\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigGitlab": {
            "type": "object",
            "properties": {
                "branch": {
                    "description": "+optional",
                    "type": "string"
                },
                "inferBranch": {
                    "description": "InferBranch is for Pull Request's testRunner on gitlab.\nIf true, samsahai will try to infer the testRunner branch name\nfrom the gitlab MR associated with the PR flow if branch is empty [default: true].\n+optional",
                    "type": "boolean"
                },
                "pipelineTriggerToken": {
                    "type": "string"
                },
                "projectID": {
                    "type": "string"
                }
            }
        },
        "v1.ConfigGitlabOverrider": {
            "type": "object",
            "properties": {
                "branch": {
                    "description": "+optional",
                    "type": "string"
                },
                "inferBranch": {
                    "description": "+optional",
                    "type": "boolean"
                },
                "pipelineTriggerToken": {
                    "description": "+optional",
                    "type": "string"
                },
                "projectID": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigPullRequest": {
            "type": "object",
            "properties": {
                "bundles": {
                    "description": "Bundles represents a bundle of pull request components configuration",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.PullRequestBundle"
                    }
                },
                "concurrences": {
                    "description": "Concurrences defines a parallel number of pull request queue\n+optional",
                    "type": "integer"
                },
                "maxHistoryDays": {
                    "description": "MaxHistoryDays defines maximum days of PullRequestQueueHistory stored\n+optional",
                    "type": "integer"
                },
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of pull request component upgrade\n+optional",
                    "type": "integer"
                },
                "resources": {
                    "description": "Resources represents how many resources of pull request namespace\n+optional",
                    "type": "string"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration defines duration before teardown the pull request components\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTearDownDuration"
                },
                "trigger": {
                    "description": "Trigger represents a pull request trigger configuration\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTriggerConfig"
                }
            }
        },
        "v1.ConfigPullRequestQueueReport": {
            "type": "object",
            "properties": {
                "criteria": {
                    "description": "+optional",
                    "type": "string"
                },
                "extraMessage": {
                    "description": "+optional",
                    "type": "string"
                },
                "interval": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigPullRequestTriggerReport": {
            "type": "object",
            "properties": {
                "criteria": {
                    "description": "+optional",
                    "type": "string"
                },
                "extraMessage": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigReporter": {
            "type": "object",
            "properties": {
                "cmd": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterShell"
                },
                "github": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterGithub"
                },
                "gitlab": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterGitlab"
                },
                "msTeams": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterMSTeams"
                },
                "optionals": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.ReportOption"
                    }
                },
                "reportMock": {
                    "description": "+optional",
                    "type": "boolean"
                },
                "rest": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterRest"
                },
                "slack": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ReporterSlack"
                }
            }
        },
        "v1.ConfigSpec": {
            "type": "object",
            "properties": {
                "activePromotion": {
                    "description": "ActivePromotion represents configuration about active promotion\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigActivePromotion"
                },
                "bundles": {
                    "description": "Bundles represents a group of component for each bundle\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigBundles"
                },
                "components": {
                    "description": "Components represents all components that are managed\n+optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Component"
                    }
                },
                "envs": {
                    "description": "Envs represents urls of values file per environments\nordering by less priority to high priority\n+optional",
                    "type": "object"
                },
                "priorityQueues": {
                    "description": "PriorityQueues represents a list of bundles/components' name which needs to be prioritized\nthe first one has the highest priority and the last one has the lowest priority\n+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "pullRequest": {
                    "description": "PullRequest represents configuration about pull request\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigPullRequest"
                },
                "report": {
                    "description": "Reporter represents configuration about reporter\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigReporter"
                },
                "staging": {
                    "description": "Staging represents configuration about staging\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigStaging"
                },
                "template": {
                    "description": "Template represents configuration's template\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigStaging": {
            "type": "object",
            "properties": {
                "deployment": {
                    "description": "Deployment represents configuration about deploy\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigDeploy"
                },
                "maxHistoryDays": {
                    "description": "MaxHistoryDays defines maximum days of QueueHistory stored\n+optional",
                    "type": "integer"
                },
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of component upgrade\n+optional",
                    "type": "integer"
                }
            }
        },
        "v1.ConfigTeamcity": {
            "type": "object",
            "properties": {
                "branch": {
                    "type": "string"
                },
                "buildTypeID": {
                    "type": "string"
                }
            }
        },
        "v1.ConfigTeamcityOverrider": {
            "type": "object",
            "properties": {
                "branch": {
                    "description": "+optional",
                    "type": "string"
                },
                "buildTypeID": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigTestMock": {
            "type": "object",
            "properties": {
                "result": {
                    "type": "boolean"
                }
            }
        },
        "v1.ConfigTestRunner": {
            "type": "object",
            "properties": {
                "gitlab": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigGitlab"
                },
                "pollingTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "teamcity": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTeamcity"
                },
                "testMock": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestMock"
                },
                "timeout": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.ConfigTestRunnerOverrider": {
            "type": "object",
            "properties": {
                "gitlab": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigGitlabOverrider"
                },
                "pollingTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "teamcity": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTeamcityOverrider"
                },
                "testMock": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestMock"
                },
                "timeout": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.Credential": {
            "type": "object",
            "properties": {
                "github": {
                    "description": "Github\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.TokenCredential"
                },
                "gitlab": {
                    "description": "Gitlab\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.TokenCredential"
                },
                "secretName": {
                    "description": "SecretName",
                    "type": "string"
                },
                "teamcity": {
                    "description": "Teamcity\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.UsernamePasswordCredential"
                }
            }
        },
        "v1.Dependency": {
            "type": "object",
            "properties": {
                "chart": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentChart"
                },
                "image": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentImage"
                },
                "name": {
                    "type": "string"
                },
                "parent": {
                    "description": "+optional",
                    "type": "string"
                },
                "schedules": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "source": {
                    "description": "+optional",
                    "type": "string"
                },
                "values": {
                    "description": "+optional\n+kubebuilder:pruning:PreserveUnknownFields",
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentValues"
                }
            }
        },
        "v1.DeploymentIssue": {
            "type": "object",
            "properties": {
                "failureComponents": {
                    "description": "FailureComponents defines a list of failure components",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.FailureComponent"
                    }
                },
                "issueType": {
                    "description": "IssueType defines a deployment issue type",
                    "type": "string"
                }
            }
        },
        "v1.Endpoint": {
            "type": "object",
            "properties": {
                "url": {
                    "type": "string"
                }
            }
        },
        "v1.FailureComponent": {
            "type": "object",
            "properties": {
                "componentName": {
                    "description": "ComponentName defines a name of component",
                    "type": "string"
                },
                "firstFailureContainerName": {
                    "description": "FirstFailureContainerName defines a first found failure container name",
                    "type": "string"
                },
                "nodeName": {
                    "description": "NodeName defines the node name of pod",
                    "type": "string"
                },
                "restartCount": {
                    "description": "RestartCount defines the number of times the container has been restarted",
                    "type": "integer"
                }
            }
        },
        "v1.Gitlab": {
            "type": "object",
            "properties": {
                "branch": {
                    "type": "string"
                },
                "pipelineID": {
                    "type": "string"
                },
                "pipelineNumber": {
                    "type": "string"
                },
                "pipelineURL": {
                    "type": "string"
                }
            }
        },
        "v1.Image": {
            "type": "object",
            "properties": {
                "repository": {
                    "type": "string"
                },
                "tag": {
                    "type": "string"
                }
            }
        },
        "v1.MSTeamsGroup": {
            "type": "object",
            "properties": {
                "channelNameOrIDs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "groupNameOrID": {
                    "type": "string"
                }
            }
        },
        "v1.OutdatedNotification": {
            "type": "object",
            "properties": {
                "exceedDuration": {
                    "description": "+optional",
                    "type": "string"
                },
                "excludeWeekendCalculation": {
                    "description": "+optional",
                    "type": "boolean"
                }
            }
        },
        "v1.PullRequestBundle": {
            "type": "object",
            "properties": {
                "components": {
                    "description": "Components represents a list of pull request components which are deployed together as a bundle",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.PullRequestComponent"
                    }
                },
                "dependencies": {
                    "description": "Dependencies defines a list of components which are required to be deployed together with the main component\n+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "deployment": {
                    "description": "Deployment represents configuration about deploy\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigDeploy"
                },
                "gitProjectID": {
                    "description": "GitProjectID represents a git repository project id\nused for publishing test runner status to Gitlab\n+optional",
                    "type": "string"
                },
                "gitRepository": {
                    "description": "GitRepository represents a string of git repository \"\u003cowner\u003e/\u003crepository\u003e\" e.g., agoda-com/samsahai\nused for publishing commit status\n+optional",
                    "type": "string"
                },
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of pull request component upgrade\n+optional",
                    "type": "integer"
                },
                "name": {
                    "description": "Name defines a bundle component name, can be any name",
                    "type": "string"
                },
                "resources": {
                    "description": "Resources represents how many resources of pull request namespace\n+optional",
                    "type": "string"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration defines duration before teardown the pull request components\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTearDownDuration"
                }
            }
        },
        "v1.PullRequestComponent": {
            "type": "object",
            "properties": {
                "image": {
                    "description": "Image defines an image repository, tag and pattern of pull request component which is a regex of tag\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ComponentImage"
                },
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of pull request component upgrade\n+optional",
                    "type": "integer"
                },
                "name": {
                    "description": "Name defines a main component name which is deployed per pull request",
                    "type": "string"
                },
                "resources": {
                    "description": "Resources represents how many resources of pull request namespace\n+optional",
                    "type": "string"
                },
                "source": {
                    "description": "Source defines a source for image repository\n+optional",
                    "type": "string"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration defines duration before teardown the pull request components\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTearDownDuration"
                }
            }
        },
        "v1.PullRequestQueue": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueueSpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueueStatus"
                }
            }
        },
        "v1.PullRequestQueueCondition": {
            "type": "object",
            "properties": {
                "lastTransitionTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "message": {
                    "description": "+optional",
                    "type": "string"
                },
                "reason": {
                    "description": "+optional",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "v1.PullRequestQueueHistory": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueueHistorySpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueueHistoryStatus"
                }
            }
        },
        "v1.PullRequestQueueHistorySpec": {
            "type": "object",
            "properties": {
                "pullRequestQueue": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueue"
                }
            }
        },
        "v1.PullRequestQueueHistoryStatus": {
            "type": "object"
        },
        "v1.PullRequestQueueSpec": {
            "type": "object",
            "properties": {
                "bundleName": {
                    "description": "BundleName represents a pull request bundle name",
                    "type": "string"
                },
                "commitSHA": {
                    "description": "CommitSHA represents a commit SHA\n+optional",
                    "type": "string"
                },
                "components": {
                    "description": "Components represents a list of components which are deployed\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueComponents"
                },
                "gitRepository": {
                    "description": "GitRepository represents a github repository of the pull request",
                    "type": "string"
                },
                "imageMissingList": {
                    "description": "ImageMissingList represents image missing lists\n+optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Image"
                    }
                },
                "isPrTriggerFailed": {
                    "description": "IsPRTriggerFailed represents the result of pull request trigger\n+optional",
                    "type": "boolean"
                },
                "noOfOrder": {
                    "description": "NoOfOrder defines the position in queue\nlower is will be picked first",
                    "type": "integer"
                },
                "noOfRetry": {
                    "description": "NoOfRetry defines how many times this pull request component has been tested\n+optional",
                    "type": "integer"
                },
                "prNumber": {
                    "description": "PRNumber represents a pull request number",
                    "type": "string"
                },
                "prTriggerCreatedAt": {
                    "description": "PRTriggerCreatedAt represents time when pull request trigger has been start\n+optional",
                    "type": "string"
                },
                "prTriggerFinishedAt": {
                    "description": "PRTriggerFinishedAt represents time when pull request trigger has been finish\n+optional",
                    "type": "string"
                },
                "teamName": {
                    "description": "TeamName represents team owner of the pull request queue",
                    "type": "string"
                },
                "tearDownDuration": {
                    "description": "TearDownDuration defines duration before teardown the pull request components\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTearDownDuration"
                },
                "testRunner": {
                    "description": "TestRunner represents configuration about how to test the environment. If defined, this will override\ntestRunner from config\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestRunnerOverrider"
                },
                "upcomingCommitSHA": {
                    "description": "UpcomingCommitSHA represents an upcoming commit SHA in case queue is running\n+optional",
                    "type": "string"
                },
                "upcomingComponents": {
                    "description": "UpcomingComponents represents an upcoming components which are deployed in case queue is running\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueComponents"
                }
            }
        },
        "v1.PullRequestQueueStatus": {
            "type": "object",
            "properties": {
                "conditions": {
                    "description": "Conditions contains observations of the resource's state e.g.,\nQueue deployed, being tested\n+optional\n+patchMergeKey=type\n+patchStrategy=merge",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.PullRequestQueueCondition"
                    }
                },
                "createdAt": {
                    "description": "CreatedAt represents time when the component has been added to queue",
                    "type": "string"
                },
                "deploymentQueue": {
                    "description": "ComponentUpgrade defines a deployed pull request queue\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.Queue"
                },
                "destroyedTime": {
                    "description": "DestroyedTime represents time at which the PR namespace will be destroyed\n+optional",
                    "type": "string"
                },
                "pullRequestNamespace": {
                    "description": "PullRequestNamespace represents a current pull request namespace",
                    "type": "string"
                },
                "pullRequestQueueHistoryName": {
                    "description": "PullRequestQueueHistoryName represents created PullRequestQueueHistory name\n+optional",
                    "type": "string"
                },
                "result": {
                    "description": "Result represents a result of the pull request queue\n+optional",
                    "type": "string"
                },
                "state": {
                    "description": "State represents current status of this queue",
                    "type": "string"
                },
                "updatedAt": {
                    "description": "UpdatedAt represents time when the component was processed",
                    "type": "string"
                }
            }
        },
        "v1.PullRequestTearDownDuration": {
            "type": "object",
            "properties": {
                "criteria": {
                    "description": "Criteria tells how does the duration apply, default is ` + "`" + `failure` + "`" + `.\n+optional",
                    "type": "string"
                },
                "duration": {
                    "description": "Duration tells how much the staging controller will wait before destroying the pull request namespace",
                    "type": "string"
                }
            }
        },
        "v1.PullRequestTriggerConfig": {
            "type": "object",
            "properties": {
                "maxRetry": {
                    "description": "MaxRetry defines max retry counts of pull request trigger if cannot find image in the registry\n+optional",
                    "type": "integer"
                },
                "pollingTime": {
                    "description": "PollingTime defines a waiting duration time to re-check the pull request image in the registry\n+optional",
                    "type": "string"
                }
            }
        },
        "v1.Queue": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueSpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueStatus"
                }
            }
        },
        "v1.QueueComponent": {
            "type": "object",
            "properties": {
                "name": {
                    "description": "Name represents Component name",
                    "type": "string"
                },
                "repository": {
                    "description": "Repository represents Docker image repository",
                    "type": "string"
                },
                "version": {
                    "description": "Version represents Docker image tag version",
                    "type": "string"
                }
            }
        },
        "v1.QueueComponents": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {
                        "description": "Name represents Component name",
                        "type": "string"
                    },
                    "repository": {
                        "description": "Repository represents Docker image repository",
                        "type": "string"
                    },
                    "version": {
                        "description": "Version represents Docker image tag version",
                        "type": "string"
                    }
                }
            }
        },
        "v1.QueueCondition": {
            "type": "object",
            "properties": {
                "lastTransitionTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "message": {
                    "description": "+optional",
                    "type": "string"
                },
                "reason": {
                    "description": "+optional",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "v1.QueueHistory": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueHistorySpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueHistoryStatus"
                }
            }
        },
        "v1.QueueHistorySpec": {
            "type": "object",
            "properties": {
                "appliedValues": {
                    "type": "object",
                    "$ref": "#/definitions/v1.Values"
                },
                "createdAt": {
                    "type": "string"
                },
                "isDeploySuccess": {
                    "type": "boolean"
                },
                "isReverify": {
                    "type": "boolean"
                },
                "isTestSuccess": {
                    "type": "boolean"
                },
                "queue": {
                    "type": "object",
                    "$ref": "#/definitions/v1.Queue"
                },
                "stableComponents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.StableComponent"
                    }
                }
            }
        },
        "v1.QueueHistoryStatus": {
            "type": "object"
        },
        "v1.QueueSpec": {
            "type": "object",
            "properties": {
                "bundle": {
                    "description": "Bundle represents a bundle name of component\n+optional",
                    "type": "string"
                },
                "components": {
                    "description": "Components represents a list of components which are deployed\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.QueueComponents"
                },
                "name": {
                    "description": "Name represents a Component name or bundle name if exist",
                    "type": "string"
                },
                "nextProcessAt": {
                    "description": "NextProcessAt represents time to wait for process this queue",
                    "type": "string"
                },
                "noOfOrder": {
                    "description": "NoOfOrder defines the position in queue\nlower is will be picked first",
                    "type": "integer"
                },
                "noOfRetry": {
                    "description": "NoOfRetry defines how many times this component has been tested\n+optional",
                    "type": "integer"
                },
                "prNumber": {
                    "description": "PRNumber represents a pull request number\n+optional",
                    "type": "string"
                },
                "skipTestRunner": {
                    "description": "SkipTestRunner represents a flag for skipping running test\n+optional",
                    "type": "boolean"
                },
                "teamName": {
                    "description": "TeamName represents team owner of the queue",
                    "type": "string"
                },
                "testRunner": {
                    "description": "TestRunner represents configuration about how to test the environment\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestRunnerOverrider"
                },
                "type": {
                    "description": "Type represents how we will process this queue",
                    "type": "string"
                }
            }
        },
        "v1.QueueStatus": {
            "type": "object",
            "properties": {
                "conditions": {
                    "description": "Conditions contains observations of the resource's state e.g.,\nQueue deployed, being tested\n+optional\n+patchMergeKey=type\n+patchStrategy=merge",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.QueueCondition"
                    }
                },
                "createdAt": {
                    "description": "CreatedAt represents time when the component has been added to queue",
                    "type": "string"
                },
                "deployEngine": {
                    "description": "DeployEngine represents engine using during installation",
                    "type": "string"
                },
                "deploymentIssues": {
                    "description": "DeploymentIssues defines a list of deployment issue types\n+optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.DeploymentIssue"
                    }
                },
                "imageMissingList": {
                    "description": "ImageMissingList defines image missing lists",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Image"
                    }
                },
                "kubeZipLog": {
                    "description": "KubeZipLog defines log of k8s resources during deployment in base64 zip format",
                    "type": "string"
                },
                "nextProcessAt": {
                    "description": "NextProcessAt represents time to wait for process this queue",
                    "type": "string"
                },
                "noOfProcessed": {
                    "description": "NoOfProcessed represents how many time that this queue had been processed",
                    "type": "integer"
                },
                "queueHistoryName": {
                    "description": "QueueHistoryName defines name of history of this queue",
                    "type": "string"
                },
                "startDeployTime": {
                    "description": "StartDeployTime represents the time when this queue start deploying",
                    "type": "string"
                },
                "startTestingTime": {
                    "description": "StartTestingTime represents the time when this queue start testing",
                    "type": "string"
                },
                "state": {
                    "description": "State represents current status of this queue",
                    "type": "string"
                },
                "testRunners": {
                    "description": "TestRunner defines the test runner",
                    "type": "object",
                    "$ref": "#/definitions/v1.TestRunner"
                },
                "updatedAt": {
                    "description": "UpdatedAt represents time when the component was processed",
                    "type": "string"
                }
            }
        },
        "v1.ReportOption": {
            "type": "object",
            "properties": {
                "key": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "v1.ReporterGithub": {
            "type": "object",
            "properties": {
                "baseURL": {
                    "description": "BaseURL represents a github base url e.g., https://github.com\n+optional",
                    "type": "string"
                },
                "enabled": {
                    "description": "Enabled represents an enabled flag\n+optional",
                    "type": "boolean"
                }
            }
        },
        "v1.ReporterGitlab": {
            "type": "object",
            "properties": {
                "baseURL": {
                    "description": "BaseURL represents a gitlab base url e.g., https://gitlab.com\n+optional",
                    "type": "string"
                },
                "enabled": {
                    "description": "Enabled represents an enabled flag\n+optional",
                    "type": "boolean"
                }
            }
        },
        "v1.ReporterMSTeams": {
            "type": "object",
            "properties": {
                "componentUpgrade": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigComponentUpgradeReport"
                },
                "groups": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.MSTeamsGroup"
                    }
                },
                "pullRequestQueue": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigPullRequestQueueReport"
                },
                "pullRequestTrigger": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigPullRequestTriggerReport"
                }
            }
        },
        "v1.ReporterRest": {
            "type": "object",
            "properties": {
                "activePromotion": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.RestObject"
                },
                "componentUpgrade": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.RestObject"
                },
                "imageMissing": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.RestObject"
                },
                "pullRequestQueue": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.RestObject"
                },
                "pullRequestTrigger": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.RestObject"
                }
            }
        },
        "v1.ReporterShell": {
            "type": "object",
            "properties": {
                "activeEnvironmentDeleted": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                },
                "activePromotion": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                },
                "componentUpgrade": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                },
                "imageMissing": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                },
                "pullRequestQueue": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                },
                "pullRequestTrigger": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.CommandAndArgs"
                }
            }
        },
        "v1.ReporterSlack": {
            "type": "object",
            "properties": {
                "activePromotion": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigActivePromotionReport"
                },
                "channels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "componentUpgrade": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigComponentUpgradeReport"
                },
                "extraMessage": {
                    "description": "+optional",
                    "type": "string"
                },
                "pullRequestQueue": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigPullRequestQueueReport"
                },
                "pullRequestTrigger": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigPullRequestTriggerReport"
                }
            }
        },
        "v1.RestObject": {
            "type": "object",
            "properties": {
                "endpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Endpoint"
                    }
                }
            }
        },
        "v1.StableComponent": {
            "type": "object",
            "properties": {
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.StableComponentSpec"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.StableComponentStatus"
                }
            }
        },
        "v1.StableComponentSpec": {
            "type": "object",
            "properties": {
                "name": {
                    "description": "Name represents Component name",
                    "type": "string"
                },
                "repository": {
                    "description": "Repository represents Docker image repository",
                    "type": "string"
                },
                "updatedBy": {
                    "description": "UpdatedBy represents a person who updated the StableComponent\n+optional",
                    "type": "string"
                },
                "version": {
                    "description": "Version represents Docker image tag version",
                    "type": "string"
                }
            }
        },
        "v1.StableComponentStatus": {
            "type": "object",
            "properties": {
                "createdAt": {
                    "type": "string"
                },
                "updatedAt": {
                    "type": "string"
                }
            }
        },
        "v1.StagingCtrl": {
            "type": "object",
            "properties": {
                "endpoint": {
                    "description": "Endpoint represents the staging endpoint endpoint.",
                    "type": "string"
                },
                "image": {
                    "description": "Image represents image for run staging controller.",
                    "type": "string"
                },
                "isDeploy": {
                    "description": "IsDeploy represents flag to deploy staging controller or not.",
                    "type": "boolean"
                },
                "resources": {
                    "type": "string"
                }
            }
        },
        "v1.TeamCondition": {
            "type": "object",
            "properties": {
                "lastTransitionTime": {
                    "description": "+optional",
                    "type": "string"
                },
                "message": {
                    "description": "+optional",
                    "type": "string"
                },
                "reason": {
                    "description": "+optional",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "v1.TeamNamespace": {
            "type": "object",
            "properties": {
                "active": {
                    "description": "+optional",
                    "type": "string"
                },
                "preActive": {
                    "description": "+optional",
                    "type": "string"
                },
                "previousActive": {
                    "description": "+optional",
                    "type": "string"
                },
                "pullRequests": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "staging": {
                    "description": "+optional",
                    "type": "string"
                }
            }
        },
        "v1.TeamSpec": {
            "type": "object",
            "properties": {
                "credential": {
                    "description": "Credential\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.Credential"
                },
                "desc": {
                    "description": "Description represents description for this team\n+optional",
                    "type": "string"
                },
                "owners": {
                    "description": "Owners represents contact point of this team\n+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "resources": {
                    "description": "Resources represents how many resources per namespace for the team\n+optional",
                    "type": "string"
                },
                "stagingCtrl": {
                    "description": "StagingCtrl represents configuration about the staging controller.\nFor easier for developing, debugging and testing purposes\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.StagingCtrl"
                }
            }
        },
        "v1.TeamStatus": {
            "type": "object",
            "properties": {
                "activeComponents": {
                    "description": "ActiveComponents represents a list of stable components in active namespace\n+optional",
                    "type": "object"
                },
                "activeDeletedBy": {
                    "description": "ActiveDeletedBy represents a person who deleted the Active environment\n+optional",
                    "type": "string"
                },
                "activePromotedBy": {
                    "description": "ActivePromotedBy represents a person who promoted the ActivePromotion\n+optional",
                    "type": "string"
                },
                "conditions": {
                    "description": "Conditions contains observations of the resource's state e.g.,\nTeam namespace is created, destroyed\n+optional\n+patchMergeKey=type\n+patchStrategy=merge",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.TeamCondition"
                    }
                },
                "desiredComponentImageCreatedTime": {
                    "description": "DesiredComponentImageCreatedTime represents mapping of desired component image and created time\nmap[componentName][repository:tag] = image and createdTime\n+optional\n+kubebuilder:pruning:PreserveUnknownFields",
                    "type": "object"
                },
                "namespace": {
                    "description": "+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.TeamNamespace"
                },
                "stableComponents": {
                    "description": "StableComponentList represents a list of stable components\n+optional",
                    "type": "object"
                },
                "syncTemplate": {
                    "description": "SyncTemplate represents whether the team has been synced to the template or not\n+optional",
                    "type": "boolean"
                },
                "templateUID": {
                    "description": "TemplateUID represents the template update ID\n+optional",
                    "type": "string"
                },
                "used": {
                    "description": "Used represents overridden team specification\n+optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.TeamSpec"
                }
            }
        },
        "v1.Teamcity": {
            "type": "object",
            "properties": {
                "branch": {
                    "type": "string"
                },
                "buildID": {
                    "type": "string"
                },
                "buildNumber": {
                    "type": "string"
                },
                "buildTypeID": {
                    "type": "string"
                },
                "buildURL": {
                    "type": "string"
                }
            }
        },
        "v1.TestRunner": {
            "type": "object",
            "properties": {
                "gitlab": {
                    "type": "object",
                    "$ref": "#/definitions/v1.Gitlab"
                },
                "teamcity": {
                    "type": "object",
                    "$ref": "#/definitions/v1.Teamcity"
                }
            }
        },
        "v1.TokenCredential": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        },
        "v1.UsernamePasswordCredential": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "v1.Values": {
            "type": "object",
            "additionalProperties": {
                "type": "object"
            }
        },
        "webhook.Components": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "tag": {
                    "type": "string"
                }
            }
        },
        "webhook.activePromotion": {
            "type": "object",
            "properties": {
                "inQueues": {
                    "description": "+Optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "example": [
                        "team1",
                        "team2"
                    ]
                },
                "running": {
                    "description": "+Optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.ActivePromotion"
                    }
                }
            }
        },
        "webhook.activePromotionHistories": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "spec": {
                        "type": "object",
                        "$ref": "#/definitions/v1.ActivePromotionHistorySpec"
                    },
                    "status": {
                        "type": "object",
                        "$ref": "#/definitions/v1.ActivePromotionHistoryStatus"
                    }
                }
            }
        },
        "webhook.errResp": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "webhook.healthCheckJSON": {
            "type": "object",
            "properties": {
                "msg": {
                    "type": "string",
                    "example": "ok"
                }
            }
        },
        "webhook.newComponentEventJSON": {
            "type": "object",
            "properties": {
                "component": {
                    "type": "string"
                },
                "repository": {
                    "type": "string"
                },
                "teamName": {
                    "type": "string"
                }
            }
        },
        "webhook.pullRequestWebhookEventJSON": {
            "type": "object",
            "properties": {
                "bundleName": {
                    "type": "string"
                },
                "commitSHA": {
                    "type": "string"
                },
                "components": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/webhook.Components"
                    }
                },
                "prNumber": {
                    "type": "string"
                },
                "tearDownDuration": {
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestTearDownDuration"
                },
                "testRunner": {
                    "type": "object",
                    "$ref": "#/definitions/v1.ConfigTestRunnerOverrider"
                }
            }
        },
        "webhook.teamActivePromotion": {
            "type": "object",
            "properties": {
                "current": {
                    "description": "+Optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.ActivePromotion"
                },
                "historyNames": {
                    "description": "+Optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "example": [
                        "team1-20191010-080000",
                        "team1-20191009-080000"
                    ]
                }
            }
        },
        "webhook.teamComponentsJSON": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "properties": {
                    "chart": {
                        "type": "object",
                        "$ref": "#/definitions/v1.ComponentChart"
                    },
                    "dependencies": {
                        "description": "+optional",
                        "type": "array",
                        "items": {
                            "$ref": "#/definitions/v1.Dependency"
                        }
                    },
                    "image": {
                        "type": "object",
                        "$ref": "#/definitions/v1.ComponentImage"
                    },
                    "name": {
                        "type": "string"
                    },
                    "parent": {
                        "description": "+optional",
                        "type": "string"
                    },
                    "schedules": {
                        "description": "+optional",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "source": {
                        "description": "+optional",
                        "type": "string"
                    },
                    "values": {
                        "description": "+optional\n+kubebuilder:pruning:PreserveUnknownFields",
                        "type": "object",
                        "$ref": "#/definitions/v1.ComponentValues"
                    }
                }
            }
        },
        "webhook.teamEnvConnections": {
            "type": "object",
            "properties": {
                "active": {
                    "description": "+optional",
                    "type": "object"
                },
                "preActive": {
                    "description": "+optional",
                    "type": "object"
                },
                "pullRequest": {
                    "description": "PullRequest represents connection strings of all pull request environments\n+optional",
                    "type": "object"
                },
                "staging": {
                    "description": "+optional",
                    "type": "object"
                }
            }
        },
        "webhook.teamJSON": {
            "type": "object",
            "properties": {
                "active": {
                    "description": "+optional",
                    "type": "string"
                },
                "connections": {
                    "type": "object",
                    "$ref": "#/definitions/webhook.teamEnvConnections"
                },
                "preActive": {
                    "description": "+optional",
                    "type": "string"
                },
                "previousActive": {
                    "description": "+optional",
                    "type": "string"
                },
                "pullRequests": {
                    "description": "+optional",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "spec": {
                    "type": "object",
                    "$ref": "#/definitions/v1.TeamSpec"
                },
                "staging": {
                    "description": "+optional",
                    "type": "string"
                },
                "status": {
                    "type": "object",
                    "$ref": "#/definitions/v1.TeamStatus"
                },
                "teamName": {
                    "type": "string"
                }
            }
        },
        "webhook.teamPRQueueJSON": {
            "type": "object",
            "properties": {
                "current": {
                    "description": "+Optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.PullRequestQueue"
                },
                "historyNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "noOfQueue": {
                    "description": "+optional",
                    "type": "integer"
                },
                "queues": {
                    "description": "+Optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.PullRequestQueue"
                    }
                }
            }
        },
        "webhook.teamQueueJSON": {
            "type": "object",
            "properties": {
                "current": {
                    "description": "+Optional",
                    "type": "object",
                    "$ref": "#/definitions/v1.Queue"
                },
                "historyNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "noOfQueue": {
                    "description": "+optional",
                    "type": "integer"
                },
                "queues": {
                    "description": "+Optional",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/v1.Queue"
                    }
                }
            }
        },
        "webhook.teamsJSON": {
            "type": "object",
            "properties": {
                "teams": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "webhook.versionJSON": {
            "type": "object",
            "properties": {
                "gitCommit": {
                    "type": "string"
                },
                "version": {
                    "type": "string"
                }
            }
        }
    }
}`

type swaggerInfo struct {
	Version     string
	Host        string
	BasePath    string
	Schemes     []string
	Title       string
	Description string
}

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = swaggerInfo{
	Version:     "",
	Host:        "",
	BasePath:    "",
	Schemes:     []string{},
	Title:       "",
	Description: "",
}

type s struct{}

func (s *s) ReadDoc() string {
	sInfo := SwaggerInfo
	sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1)

	t, err := template.New("swagger_info").Funcs(template.FuncMap{
		"marshal": func(v interface{}) string {
			a, _ := json.Marshal(v)
			return string(a)
		},
	}).Parse(doc)
	if err != nil {
		return doc
	}

	var tpl bytes.Buffer
	if err := t.Execute(&tpl, sInfo); err != nil {
		return doc
	}

	return tpl.String()
}

func init() {
	swag.Register(swag.Name, &s{})
}
