{"openapi":"3.1.0","info":{"title":"CanaryCD API","description":"Continuous Deployment API for Container and Static Pages","license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.1.dev3"},"paths":{"/config":{"get":{"tags":["Canary Config"],"summary":"List Full Configuration","operationId":"list_config_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConfigUpdate"},"type":"array","title":"Response List Config Config Get"}}}},"404":{"description":"Not found"}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["Canary Config"],"summary":"Update Configuration","operationId":"config_set_config_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdate"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/config/{key}":{"delete":{"tags":["Canary Config"],"summary":"Delete Configuration","operationId":"config_delete_config__key__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth":{"get":{"tags":["Authentication"],"summary":"List all Authentication Keys","operationId":"auth_list_auth_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}},{"name":"filter_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","title":"Filter By"}},{"name":"ordering","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"updated_at","title":"Ordering"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuthDetails"},"title":"Response Auth List Auth Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Authentication"],"summary":"Create Authentication Key","operationId":"auth_create_auth_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/{name}":{"get":{"tags":["Authentication"],"summary":"Get Authentication Key Details","operationId":"auth_get_auth__name__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthDetailsCount"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Authentication"],"summary":"Delete Authentication Key","operationId":"auth_delete_auth__name__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project":{"get":{"tags":["Project"],"summary":"List Projects","operationId":"project_list_project_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}},{"name":"filter_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","title":"Filter By"}},{"name":"ordering","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"updated_at","title":"Ordering"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectDetails"},"title":"Response Project List Project Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Project"],"summary":"Create a Project","operationId":"project_create_project_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project/{name}":{"get":{"tags":["Project"],"summary":"Get Project Details","operationId":"project_get_project__name__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Project"],"summary":"Update a Project","operationId":"project_update_project__name__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Project"],"summary":"Delete a Project","operationId":"project_delete_project__name__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project/{name}/refresh-token":{"get":{"tags":["Project"],"summary":"Refresh Deploy Token","operationId":"project_refresh_token_project__name__refresh_token_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secret/{project}":{"get":{"tags":["Secrets"],"summary":"List Secrets","operationId":"secret_list_secret__project__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project","in":"path","required":true,"schema":{"type":"string","title":"Project"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VariableValueDetails"},"title":"Response Secret List Secret  Project  Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Secrets"],"summary":"Update Secret","operationId":"secret_set_secret__project__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project","in":"path","required":true,"schema":{"type":"string","title":"Project"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariableUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariableDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secret/{project}/{variable}":{"delete":{"tags":["Secrets"],"summary":"Delete Secret","operationId":"secret_delete_secret__project___variable__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"project","in":"path","required":true,"schema":{"type":"string","title":"Project"}},{"name":"variable","in":"path","required":true,"schema":{"type":"string","title":"Variable"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/page":{"get":{"tags":["Page"],"summary":"List all pages","operationId":"page_list_page_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}},{"name":"filter_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","title":"Filter By"}},{"name":"ordering","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"fqdn","title":"Ordering"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PageDetails"},"title":"Response Page List Page Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Page"],"summary":"Create a new page","operationId":"page_create_page_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/page/{fqdn}":{"get":{"tags":["Page"],"summary":"Get Page Details","operationId":"page_get_page__fqdn__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"fqdn","in":"path","required":true,"schema":{"type":"string","title":"Fqdn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Page"],"summary":"Page Delete","operationId":"page_delete_page__fqdn__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"fqdn","in":"path","required":true,"schema":{"type":"string","title":"Fqdn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/page/{fqdn}/refresh-token":{"get":{"tags":["Page"],"summary":"Page Deploy Key","operationId":"page_deploy_key_page__fqdn__refresh_token_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"fqdn","in":"path","required":true,"schema":{"type":"string","title":"Fqdn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/redirect":{"get":{"tags":["Redirect"],"summary":"List Redirects","operationId":"redirect_list_redirect_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RedirectDetails"},"title":"Response Redirect List Redirect Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Redirect"],"summary":"Create a new Redirect","operationId":"redirect_create_redirect_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/redirect/{fqdn}":{"put":{"tags":["Redirect"],"summary":"Update a Redirect","operationId":"redirect_update_redirect__fqdn__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"fqdn","in":"path","required":true,"schema":{"type":"string","title":"Fqdn"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectDetails"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Redirect"],"summary":"Delete a Redirect","operationId":"redirect_delete_redirect__fqdn__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"fqdn","in":"path","required":true,"schema":{"type":"string","title":"Fqdn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{name}/start":{"get":{"tags":["Deployment"],"summary":"Deploy a Project","operationId":"project_deploy_deploy__name__start_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{name}/stop":{"get":{"tags":["Deployment"],"summary":"Stop a Project","operationId":"project_deploy_stop_deploy__name__stop_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deploy/{name}/status":{"get":{"tags":["Deployment"],"summary":"Status of a Project","operationId":"project_status_deploy__name__status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/upload/{page}":{"post":{"tags":["Deployment"],"summary":"Upload Page Payload","operationId":"page_deploy_stream_upload__page__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"path","required":true,"schema":{"type":"string","title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook/project/{token}":{"post":{"tags":["Webhooks"],"summary":"Deploy a Project","operationId":"token_deploy_project_webhook_project__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook/page/{token}":{"post":{"tags":["Webhooks"],"summary":"Upload Page Payload","operationId":"token_deploy_page_webhook_page__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/export/traefik.json":{"get":{"tags":["export"],"summary":"traefik config provider","operationId":"traefik_config_export_traefik_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}}},"components":{"schemas":{"AuthCreate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1,"pattern":"^[\\w-]+$"},{"type":"null"}],"title":"Name","examples":["example-name"]},"auth_type":{"type":"string","title":"Auth Type","examples":["ssh","pat","token"]},"auth_key":{"anyOf":[{"type":"string","pattern":".*"},{"type":"null"}],"title":"Auth Key","examples":["ssh-private-key","ghp_1234"]}},"type":"object","required":["name","auth_type"],"title":"AuthCreate"},"AuthDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1,"pattern":"^[\\w-]+$"},{"type":"null"}],"title":"Name","examples":["example-name"]},"auth_type":{"type":"string","title":"Auth Type","examples":["ssh"]},"public_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Key","examples":["ssh-ed25519 AAAAC..lGM key"]}},"type":"object","required":["created_at","updated_at","name","auth_type","public_key"],"title":"AuthDetails"},"AuthDetailsCount":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1,"pattern":"^[\\w-]+$"},{"type":"null"}],"title":"Name","examples":["example-name"]},"auth_type":{"type":"string","title":"Auth Type","examples":["ssh"]},"public_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Key","examples":["ssh-ed25519 AAAAC..lGM key"]},"project_count":{"type":"integer","title":"Project Count"}},"type":"object","required":["created_at","updated_at","name","auth_type","public_key"],"title":"AuthDetailsCount"},"ConfigUpdate":{"properties":{"key":{"type":"string","title":"Key","examples":["ROOT_KEY","SLACK_WEBHOOK","DISCORD_WEBHOOK","GITHUB_APP_ID","GITHUB_SECRET_FILE","GITHUB_WEBHOOK_SECRET"]},"value":{"type":"string","title":"Value","examples":["config-value"]}},"type":"object","required":["key","value"],"title":"ConfigUpdate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PageCreate":{"properties":{"fqdn":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Fqdn","examples":["example.com","www.example.com"]},"cors_hosts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cors Hosts"}},"type":"object","required":["fqdn"],"title":"PageCreate"},"PageDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"fqdn":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Fqdn","examples":["example.com","www.example.com"]},"cors_hosts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cors Hosts"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["created_at","updated_at","fqdn","id"],"title":"PageDetails"},"ProjectCreate":{"properties":{"remote":{"anyOf":[{"type":"string","pattern":"^(?:(?P<protocol>[https?|git|ssh]+:\\/\\/))?(?:(?P<login_user>[\\w\\d]+)@)?(?P<host>[\\w\\d.-]+)([:\\/])(?P<user>[\\w\\d-]+)(?:(?P<namespace>\\/[\\w\\d-]+))?/(?P<repo>[\\w\\d-]+)(?:\\.git)?(?:@(?P<branch>[\\w.\\-/]+))?$"},{"type":"null"}],"title":"Remote","examples":["git@github.com:user/repo.git","https://github.com/user/repo.git","git@gitlab.com:user/namespace/repo.git","https://gitlab.com/user/namespace/repo.git","ssh://git@example.com:2222/user/repo.git"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch","examples":["main"]},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","examples":["key-name"]},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1,"pattern":"^[\\w-]+$"},{"type":"null"}],"title":"Name","examples":["example-name"]}},"type":"object","required":["name"],"title":"ProjectCreate"},"ProjectDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","maxLength":256,"minLength":1,"pattern":"^[\\w-]+$","title":"Name","examples":["example-name"]},"remote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote","examples":["git@github.com:user/repo.git","https://github.com/user/repo.git","git@gitlab.com:user/namespace/repo.git","https://gitlab.com/user/namespace/repo.git","ssh://git@example.com:2222/user/repo.git"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch","examples":["main"]},"auth_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Auth Id"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","examples":["key-name"]}},"type":"object","required":["created_at","updated_at","id","name","auth_id"],"title":"ProjectDetails"},"ProjectUpdate":{"properties":{"remote":{"anyOf":[{"type":"string","pattern":"^(?:(?P<protocol>[https?|git|ssh]+:\\/\\/))?(?:(?P<login_user>[\\w\\d]+)@)?(?P<host>[\\w\\d.-]+)([:\\/])(?P<user>[\\w\\d-]+)(?:(?P<namespace>\\/[\\w\\d-]+))?/(?P<repo>[\\w\\d-]+)(?:\\.git)?(?:@(?P<branch>[\\w.\\-/]+))?$"},{"type":"null"}],"title":"Remote","examples":["git@github.com:user/repo.git","https://github.com/user/repo.git","git@gitlab.com:user/namespace/repo.git","https://gitlab.com/user/namespace/repo.git","ssh://git@example.com:2222/user/repo.git"]},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch","examples":["main"]},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","examples":["key-name"]}},"type":"object","title":"ProjectUpdate"},"RedirectCreate":{"properties":{"source":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Source","examples":["www.example.com"]},"destination":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Destination","examples":["example.com","www.example.com"]}},"type":"object","required":["source","destination"],"title":"RedirectCreate"},"RedirectDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"source":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Source","examples":["www.example.com"]},"destination":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Destination","examples":["example.com","www.example.com"]},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["created_at","updated_at","source","destination","id"],"title":"RedirectDetails"},"RedirectUpdate":{"properties":{"destination":{"type":"string","maxLength":256,"minLength":1,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$","title":"Destination","examples":["example.com","www.example.com"]}},"type":"object","required":["destination"],"title":"RedirectUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VariableDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"key":{"type":"string","maxLength":256,"minLength":1,"pattern":"^[A-Z0-9_]+$","title":"Key","examples":["HOST"]},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["created_at","updated_at","key","id"],"title":"VariableDetails"},"VariableUpdate":{"properties":{"key":{"type":"string","maxLength":256,"minLength":1,"pattern":"^[A-Z0-9_]+$","title":"Key","examples":["HOST"]},"value":{"type":"string","maxLength":1024,"minLength":1,"title":"Value","examples":["example.com"]}},"type":"object","required":["key","value"],"title":"VariableUpdate"},"VariableValueDetails":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At","examples":["1999-12-31T23:59:59.000Z"]},"updated_at":{"type":"string","format":"date-time","title":"Updated At","examples":["2000-01-01T00:00:00.000Z"]},"key":{"type":"string","maxLength":256,"minLength":1,"pattern":"^[A-Z0-9_]+$","title":"Key","examples":["HOST"]},"id":{"type":"string","format":"uuid","title":"Id"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["created_at","updated_at","key","id","value"],"title":"VariableValueDetails"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"token"}}}}}}