diff --git a/services/Api.ts b/services/Api.ts index 79ea3a5..5e06ece 100644 --- a/services/Api.ts +++ b/services/Api.ts @@ -251,8 +251,8 @@ export interface BodyCreateAndConnectAnalysisToProjectKongAnalysisPost { analysis_id: string; } -/** Body_create_route_between_datastore_and_project_kong_route_post */ -export interface BodyCreateRouteBetweenDatastoreAndProjectKongRoutePost { +/** Body_create_and_connect_project_to_datastore_kong_project_post */ +export interface BodyCreateAndConnectProjectToDatastoreKongProjectPost { /** * Data Store Id * UUID of the data store or 'gateway' @@ -265,6 +265,11 @@ export interface BodyCreateRouteBetweenDatastoreAndProjectKongRoutePost { * @format uuid */ project_id: string; + /** + * Project Name + * Name of the project + */ + project_name: string; /** * Methods * List of acceptable HTTP methods @@ -2555,7 +2560,7 @@ export class Api extends HttpClient extends HttpClient extends HttpClient extends HttpClient extends HttpClient this.request({ - path: `/kong/route`, + path: `/kong/project`, method: "GET", query: query, secure: true, @@ -2656,20 +2661,20 @@ export class Api extends HttpClient this.request({ - path: `/kong/route`, + path: `/kong/project`, method: "POST", body: data, secure: true, @@ -2679,17 +2684,17 @@ export class Api extends HttpClient + disconnectProjectKongProjectDisconnectProjectIdPut: (projectId: string, params: RequestParams = {}) => this.request({ - path: `/kong/route/disconnect/${projectId}`, + path: `/kong/project/disconnect/${projectId}`, method: "PUT", secure: true, format: "json", diff --git a/services/hub_adapter_swagger.json b/services/hub_adapter_swagger.json index 52ef32b..77de3ba 100644 --- a/services/hub_adapter_swagger.json +++ b/services/hub_adapter_swagger.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"FLAME API","description":"FLAME project API for interacting with various microservices within the node for the UI.","license":{"name":"Apache 2.0","identifier":"Apache-2.0","url":"https://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.1.0"},"paths":{"/token":{"post":{"tags":["Auth"],"summary":"Get a token from the IDP","description":"Get a JWT from the IDP by passing a valid username and password. This token can then be used to authenticate\nyourself with this API.","operationId":"get_token_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_get_token_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/token/inspect":{"post":{"tags":["Auth"],"summary":"Get information about a provided token from the IDP","description":"Return information about the provided token.","operationId":"inspect_token_token_inspect_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_inspect_token_token_inspect_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Inspect Token Token Inspect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/containers":{"get":{"summary":"Fetch Containers","description":"Return information about the provided token.","operationId":"fetch_containers_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Fetch Containers Containers Get"}}}}}}},"/po":{"post":{"tags":["PodOrc"],"summary":"Create Analysis","description":"Create an analysis pod.","operationId":"create_analysis_po_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_analysis_po_post"}}},"required":true},"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"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/po/{analysis_id}/logs":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Logs","description":"Get the logs for a specific analysis run.","operationId":"get_analysis_logs_po__analysis_id__logs_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/status":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Status","description":"Get the status for a specific analysis run.","operationId":"get_analysis_status_po__analysis_id__status_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/pods":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Pods","description":"Get the pods for a specific analysis run.","operationId":"get_analysis_pods_po__analysis_id__pods_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/stop":{"put":{"tags":["PodOrc"],"summary":"Stop Analysis","description":"Stop a specific analysis run.","operationId":"stop_analysis_po__analysis_id__stop_put","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/delete":{"delete":{"tags":["PodOrc"],"summary":"Delete Analysis","description":"Delete a specific analysis run.","operationId":"delete_analysis_po__analysis_id__delete_delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/local/{object_id}":{"get":{"tags":["Results"],"summary":"Retrieve Intermediate Result From Local","description":"Get a local result as file from local storage.","operationId":"retrieve_intermediate_result_from_local_local__object_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}}],"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"}}}}}}},"/local":{"put":{"tags":["Results"],"summary":"Submit Intermediate Result To Local","operationId":"submit_intermediate_result_to_local_local_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_intermediate_result_to_local_local_put"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsUploadResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/intermediate/{object_id}":{"get":{"tags":["Results"],"summary":"Retrieve Intermediate Result From Hub","description":"Get an intermediate result as file from the FLAME Hub.","operationId":"retrieve_intermediate_result_from_hub_intermediate__object_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}}],"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"}}}}}}},"/intermediate":{"put":{"tags":["Results"],"summary":"Submit Intermediate Result To Hub","description":"Upload a file as an intermediate result to the FLAME Hub. Returns a 202 on success.\n\nThis endpoint returns immediately and submits the file in the background.","operationId":"submit_intermediate_result_to_hub_intermediate_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_intermediate_result_to_hub_intermediate_put"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsUploadResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/final":{"put":{"tags":["Results"],"summary":"Submit Final Result To Hub","description":"Upload final results to FLAME Hub","operationId":"submit_final_result_to_hub_final_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_final_result_to_hub_final_put"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/metadata/keycloakConfig":{"get":{"tags":["Metadata"],"summary":"Get Keycloak Config","description":"Return keycloak metadata for the frontend.","operationId":"get_keycloak_config_metadata_keycloakConfig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeycloakConfig"}}}},"404":{"description":"Not found"}}}},"/metadata/version":{"get":{"tags":["Metadata"],"summary":"Get Node Version","description":"Return version of the node software/API.","operationId":"get_node_version_metadata_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/vault/status":{"get":{"tags":["Metadata"],"summary":"Get Vault Status","description":"Spoof vault status.","operationId":"get_vault_status_vault_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/hub/images":{"get":{"tags":["Metadata"],"summary":"Get Images","description":"Return list of images for the frontend.","operationId":"get_images_hub_images_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageDataResponse"}}}},"404":{"description":"Not found"}}}},"/projects":{"get":{"tags":["Hub"],"summary":"List All Projects","description":"List all projects.","operationId":"list_all_projects_projects_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^master_image$"},{"type":"null"}],"description":"Whether to include additional data. Can only be 'master_image' or null","title":"Include"},"description":"Whether to include additional data. Can only be 'master_image' or null"},{"name":"filter_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by object UUID.","title":"Filter Id"},"description":"Filter by object UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_user_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by user UUID.","title":"Filter User Id"},"description":"Filter by user UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllProjects"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/projects/{project_id}":{"get":{"tags":["Hub"],"summary":"List Specific Project","description":"List project for a given UUID.","operationId":"list_specific_project_projects__project_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Project UUID.","title":"Project Id"},"description":"Project UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project-nodes":{"get":{"tags":["Hub"],"summary":"List Project Proposals","description":"List project proposals.","operationId":"list_project_proposals_project_nodes_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(project|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'node'/'project'","default":"project,node","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'node'/'project'"},{"name":"filter_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by ID of returned object.","title":"Filter Id"},"description":"Filter by ID of returned object."},{"name":"filter_project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project UUID.","title":"Filter Project Id"},"description":"Filter by project UUID."},{"name":"filter_project_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project realm UUID.","title":"Filter Project Realm Id"},"description":"Filter by project realm UUID."},{"name":"filter_node_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node UUID.","title":"Filter Node Id"},"description":"Filter by node UUID."},{"name":"filter_node_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node realm UUID.","title":"Filter Node Realm Id"},"description":"Filter by node realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectNodes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project-nodes/{proposal_id}":{"post":{"tags":["Hub"],"summary":"Accept Reject Project Proposal","description":"Set the approval status of a project proposal.","operationId":"accept_reject_project_proposal_project_nodes__proposal_id__post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Proposal object UUID.","title":"Proposal Id"},"description":"Proposal object UUID."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_accept_reject_project_proposal_project_nodes__proposal_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-nodes":{"get":{"tags":["Hub"],"summary":"List Analyses Of Nodes","description":"List analyses for a node.","operationId":"list_analyses_of_nodes_analysis_nodes_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"},{"name":"filter_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by ID of returned object.","title":"Filter Id"},"description":"Filter by ID of returned object."},{"name":"filter_project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project UUID.","title":"Filter Project Id"},"description":"Filter by project UUID."},{"name":"filter_project_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project realm UUID.","title":"Filter Project Realm Id"},"description":"Filter by project realm UUID."},{"name":"filter_node_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node UUID.","title":"Filter Node Id"},"description":"Filter by node UUID."},{"name":"filter_node_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node realm UUID.","title":"Filter Node Realm Id"},"description":"Filter by node realm UUID."},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_analysis_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis realm UUID.","title":"Filter Analysis Realm Id"},"description":"Filter by analysis realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAnalysisNodes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-nodes/{analysis_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis","description":"List project for a given UUID.","operationId":"list_specific_analysis_analysis_nodes__analysis_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Analysis UUID.","title":"Analysis Id"},"description":"Analysis UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Hub"],"summary":"Accept Reject Analysis Node","description":"Set the approval status of a analysis.","operationId":"accept_reject_analysis_node_analysis_nodes__analysis_id__post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Analysis object UUID (not analysis_id).","title":"Analysis Id"},"description":"Analysis object UUID (not analysis_id)."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyses":{"get":{"tags":["Hub"],"summary":"List All Analyses","description":"List project for a given UUID.","operationId":"list_all_analyses_analyses_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(project|master_image))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"project","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllAnalyses"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/registry-projects/{registry_project_id}":{"get":{"tags":["Hub"],"summary":"Get Registry Metadata For Project","description":"List registry data for a project.","operationId":"get_registry_metadata_for_project_registry_projects__registry_project_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^registry$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'registry'","default":"registry","title":"Include"},"description":"Whether to include additional registry data. Can only be 'registry'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryProject"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis/image/{analysis_id}":{"get":{"tags":["Hub"],"summary":"Get Analysis Image Url","description":"Build an analysis image URL using its metadata from the Hub.","operationId":"get_analysis_image_url_analysis_image__analysis_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"UUID of analysis.","title":"Analysis Id"},"description":"UUID of analysis."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisImageUrl"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-buckets":{"get":{"tags":["Hub"],"summary":"List All Analysis Buckets","description":"List analysis buckets.","operationId":"list_all_analysis_buckets_analysis_buckets_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^analysis$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional registry data. Can only be 'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BucketList"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-buckets/{bucket_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis Buckets","description":"List analysis buckets.","operationId":"list_specific_analysis_buckets_analysis_buckets__bucket_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"bucket_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Bucket UUID.","title":"Bucket Id"},"description":"Bucket UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^analysis$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional registry data. Can only be 'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Bucket"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-bucket-files":{"get":{"tags":["Hub"],"summary":"List All Analysis Bucket Files","description":"List partial analysis bucket files.","operationId":"list_all_analysis_bucket_files_analysis_bucket_files_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|bucket))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'","default":"bucket","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_bucket_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by bucket UUID.","title":"Filter Bucket Id"},"description":"Filter by bucket UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialBucketFilesList"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-bucket-files/{bucket_file_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis Bucket File","description":"List specific partial analysis bucket file.","operationId":"list_specific_analysis_bucket_file_analysis_bucket_files__bucket_file_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"bucket_file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Bucket file UUID.","title":"Bucket File Id"},"description":"Bucket file UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|bucket))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'","default":"bucket","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_bucket_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by bucket UUID.","title":"Filter Bucket Id"},"description":"Filter by bucket UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialAnalysisBucketFile"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/datastore":{"get":{"tags":["Kong"],"summary":"List Data Stores","description":"List all available data stores.","operationId":"list_data_stores_kong_datastore_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to include detailed information on projects","default":false,"title":"Detailed"},"description":"Whether to include detailed information on projects"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServices"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Kong"],"summary":"Create Data Store","description":"Create a datastore by providing necessary metadata.","operationId":"create_data_store_kong_datastore_post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ServiceRequest"}],"title":"Data store metadata.","description":"Required information for creating a new data store."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Service"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/datastore/{data_store_name}":{"delete":{"tags":["Kong"],"summary":"Delete Data Store","description":"Delete the listed data store.","operationId":"delete_data_store_kong_datastore__data_store_name__delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"data_store_name","in":"path","required":true,"schema":{"type":"string","description":"Unique name of the data store.","title":"Data Store Name"},"description":"Unique name of the data store."}],"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"}}}}}}},"/kong/route":{"get":{"tags":["Kong"],"summary":"List Routes","description":"List all the routes available, can be filtered by project_id.","operationId":"list_routes_kong_route_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of project.","title":"Project Id"},"description":"UUID of project."},{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to include detailed information on data stores","default":false,"title":"Detailed"},"description":"Whether to include detailed information on data stores"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRoutes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Kong"],"summary":"Create Route Between Datastore And Project","description":"Create a route between a data store and a project.","operationId":"create_route_between_datastore_and_project_kong_route_post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_route_between_datastore_and_project_kong_route_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkDataStoreProject"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/route/disconnect/{project_id}":{"put":{"tags":["Kong"],"summary":"Disconnect Project","description":"Disconnect a project from all connected data stores.","operationId":"disconnect_project_kong_route_disconnect__project_id__put","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"UUID of project to be disconnected","title":"Project Id"},"description":"UUID of project to be disconnected"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Disconnect"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/analysis":{"post":{"tags":["Kong"],"summary":"Create And Connect Analysis To Project","description":"Create a new analysis and link it to a project.","operationId":"create_and_connect_analysis_to_project_kong_analysis_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_and_connect_analysis_to_project_kong_analysis_post"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkProjectAnalysis"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/kong/analysis/{analysis_id}":{"delete":{"tags":["Kong"],"summary":"Delete Analysis","description":"Delete the listed analysis.","operationId":"delete_analysis_kong_analysis__analysis_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","description":"UUID or unique name of the analysis.","title":"Analysis Id"},"description":"UUID or unique name of the analysis."}],"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"}}}}}}},"/healthz":{"get":{"tags":["Health"],"summary":"Perform a Health Check","description":"## Perform a Health Check\nEndpoint to perform a healthcheck on. This endpoint can primarily be used Docker\nto ensure a robust container orchestration and management is in place. Other\nservices which rely on proper functioning of the API service will not deploy if this\nendpoint returns any other HTTP status code except 200 (OK).\nReturns:\n HealthCheck: Returns a JSON response with the health status","operationId":"get_health_healthz_get","responses":{"200":{"description":"Return HTTP Status Code 200 (OK)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheck"}}}}}}},"/health/services":{"get":{"tags":["Health"],"summary":"Perform a Health Check on the downstream microservices","description":"Return the health of the downstream microservices.","operationId":"get_health_downstream_services_health_services_get","responses":{"200":{"description":"Return HTTP Status code for downstream services","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownstreamHealthCheck"}}}}}}}},"components":{"schemas":{"ACL":{"properties":{"consumer":{"anyOf":[{"$ref":"#/components/schemas/ACLConsumer"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group","description":"The group that this ACL represents."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the ACL for grouping and filtering."}},"type":"object","title":"ACL","description":"ACL entities are used to control access to a resource. An ACL can be applied to a Consumer"},"ACLConsumer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"ACLConsumer","description":"The Consumer to which this ACL is associated. A Consumer can have many ACLs."},"AllAnalyses":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Analysis"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AllAnalyses","description":"List of all projects."},"AllProjects":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Project"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AllProjects","description":"List of all projects."},"Analysis":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"nodes":{"type":"integer","title":"Nodes"},"configuration_status":{"anyOf":[{"$ref":"#/components/schemas/ConfigurationStatus"},{"type":"null"}]},"build_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisBuildStatus"},{"type":"null"}]},"run_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisRunStatus"},{"type":"null"}]},"registry":{"anyOf":[{"$ref":"#/components/schemas/Registry"},{"type":"null"}]},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project":{"anyOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"master_image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Master Image Id"},"master_image":{"anyOf":[{"$ref":"#/components/schemas/MasterImage"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","nodes","realm_id","user_id","project_id"],"title":"Analysis","description":"Model representing a single analysis."},"AnalysisBuildStatus":{"type":"string","enum":["starting","started","stopping","stopped","finished","failed"],"title":"AnalysisBuildStatus","description":"Possible values for analysis build status."},"AnalysisImageUrl":{"properties":{"image_url":{"type":"string","title":"Image Url"}},"type":"object","required":["image_url"],"title":"AnalysisImageUrl"},"AnalysisNode":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"approval_status":{"$ref":"#/components/schemas/ApprovalStatus"},"run_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisRunStatus"},{"type":"null"}]},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"index":{"type":"integer","title":"Index"},"artifact_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Tag"},"artifact_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Digest"},"analysis_id":{"type":"string","format":"uuid","title":"Analysis Id"},"analysis_realm_id":{"type":"string","format":"uuid","title":"Analysis Realm Id"},"node_id":{"type":"string","format":"uuid","title":"Node Id"},"node_realm_id":{"type":"string","format":"uuid","title":"Node Realm Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"node":{"anyOf":[{"$ref":"#/components/schemas/Node"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","approval_status","index","analysis_id","analysis_realm_id","node_id","node_realm_id"],"title":"AnalysisNode","description":"Node analysis response model."},"AnalysisRunStatus":{"type":"string","enum":["running","starting","started","stopping","stopped","finished","failed"],"title":"AnalysisRunStatus","description":"Possible values for analysis run status."},"ApprovalStatus":{"type":"string","enum":["approved","rejected"],"title":"ApprovalStatus","description":"Status of project possibilities."},"Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post":{"properties":{"approval_status":{"allOf":[{"$ref":"#/components/schemas/ApprovalStatus"}],"description":"Set the approval status of project for the node. Either 'rejected' or 'approved'"}},"type":"object","required":["approval_status"],"title":"Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post"},"Body_accept_reject_project_proposal_project_nodes__proposal_id__post":{"properties":{"approval_status":{"allOf":[{"$ref":"#/components/schemas/ApprovalStatus"}],"description":"Set the approval status of project for the node. Either 'rejected' or 'approved'"}},"type":"object","required":["approval_status"],"title":"Body_accept_reject_project_proposal_project_nodes__proposal_id__post"},"Body_create_analysis_po_post":{"properties":{"analysis_id":{"type":"string","format":"uuid","title":"Analysis Id","description":"UUID of the analysis."},"project_id":{"type":"string","format":"uuid","title":"Project Id","description":"UUID of the analysis."}},"type":"object","required":["analysis_id","project_id"],"title":"Body_create_analysis_po_post"},"Body_create_and_connect_analysis_to_project_kong_analysis_post":{"properties":{"project_id":{"type":"string","title":"Project Id","description":"UUID or name of the project"},"analysis_id":{"type":"string","title":"Analysis Id","description":"UUID or name of the analysis"}},"type":"object","required":["project_id","analysis_id"],"title":"Body_create_and_connect_analysis_to_project_kong_analysis_post"},"Body_create_route_between_datastore_and_project_kong_route_post":{"properties":{"data_store_id":{"type":"string","format":"uuid","title":"Data Store Id","description":"UUID of the data store or 'gateway'"},"project_id":{"type":"string","format":"uuid","title":"Project Id","description":"UUID of the project"},"methods":{"items":{"type":"string","pattern":"(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD|CONNECT|TRACE|CUSTOM)"},"type":"array","title":"Methods","description":"List of acceptable HTTP methods","default":["GET","POST","PUT","DELETE"]},"protocols":{"items":{"type":"string","pattern":"(http|grpc|grpcs|tls|tcp)"},"type":"array","title":"Protocols","description":"List of acceptable transfer protocols. A combo of 'http', 'grpc', 'grpcs', 'tls', 'tcp'","default":["http"]},"ds_type":{"type":"string","title":"Ds Type","description":"Data store type. Either 's3' or 'fhir'","default":"fhir"}},"type":"object","required":["data_store_id","project_id"],"title":"Body_create_route_between_datastore_and_project_kong_route_post"},"Body_get_token_token_post":{"properties":{"username":{"type":"string","title":"Username","description":"Keycloak username"},"password":{"type":"string","title":"Password","description":"Keycloak password"}},"type":"object","required":["username","password"],"title":"Body_get_token_token_post"},"Body_inspect_token_token_inspect_post":{"properties":{"token":{"type":"string","title":"Token","description":"JSON web token"}},"type":"object","required":["token"],"title":"Body_inspect_token_token_inspect_post"},"Body_submit_final_result_to_hub_final_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_final_result_to_hub_final_put"},"Body_submit_intermediate_result_to_hub_intermediate_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_intermediate_result_to_hub_intermediate_put"},"Body_submit_intermediate_result_to_local_local_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_intermediate_result_to_local_local_put"},"Bucket":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"type":{"$ref":"#/components/schemas/BucketType"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"analysis_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Analysis Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","type"],"title":"Bucket","description":"Bucket data."},"BucketList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Bucket"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"BucketList"},"BucketType":{"type":"string","enum":["CODE","RESULT","TEMP"],"title":"BucketType","description":"Bucket types."},"ConfigurationStatus":{"type":"string","enum":["base","security_configured","resource_configured","hash_generated","hash_signed","finished"],"title":"ConfigurationStatus","description":"\"Possible values for configuration status."},"Consumer":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"custom_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Id","description":"Field for storing an existing unique ID for the Consumer - useful for mapping Kong with users in your existing database. You must send either this field or `username` with the request."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the Consumer for grouping and filtering."},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","description":"The unique username of the Consumer. You must send either this field or `custom_id` with the request."}},"type":"object","title":"Consumer","description":"The Consumer object represents a consumer - or a user - of a service. You can either rely on Kong as the primary datastore, or you can map the consumer list with your database to keep consistency between Kong and your existing primary datastore."},"CreateServiceRequestClientCertificate":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"CreateServiceRequestClientCertificate","description":"Certificate to be used as client certificate while TLS handshaking to the upstream server. With form-encoded, the notation is `client_certificate.id=`. With JSON, use `\"client_certificate\":{\"id\":\"\"}`."},"DetailedRoute":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"destinations":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Destinations","description":"A list of IP destinations of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"headers":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Headers","description":"One or more lists of values indexed by header name that will cause this route to match if present in the request. The `Host` header cannot be used with this hosts should be specified using the `hosts` attribute. When `headers` contains only one value and that value starts with the special prefix `~*`, the value is interpreted as a regular expression."},"hosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hosts","description":"A list of domain names that match this route. Note that the hosts value is case sensitive."},"https_redirect_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Https Redirect Status Code","description":"The status code Kong responds with when all properties of a route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if the field is set to 301, 302, 307 or 308. This config applies only if the route is configured to only accept the `https` protocol.","default":426},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Methods","description":"A list of HTTP methods that match this route."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named \"test\" and \"Test\"."},"path_handling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Handling","description":"Controls how the service path, route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior.","default":"v0"},"paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Paths","description":"A list of paths that match this route."},"preserve_host":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Preserve Host","description":"When matching a route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the services `host`.","default":false},"protocols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Protocols","description":"An array of the protocols this route should allow. See the [route Object](#route-object) section for a list of accepted protocols. When set to only `\"https\"`, HTTP requests are answered with an upgrade error. When set to only `\"http\"`, HTTPS requests are answered with an error."},"regex_priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Regex Priority","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one (lowest `created_at`) is used. Note that the priority for non-regex routes is different (longer non-regex routes are matched before shorter ones).","default":0},"request_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Request Buffering","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding.","default":true},"response_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Buffering","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding.","default":true},"service":{"anyOf":[{"$ref":"#/components/schemas/Service"},{"$ref":"#/components/schemas/RouteService"},{"type":"null"}],"title":"Service"},"snis":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Snis","description":"A list of SNIs that match this route when using stream routing."},"sources":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Sources","description":"A list of IP sources of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"strip_path":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strip Path","description":"When matching a route via one of the `paths`, strip the matching prefix from the upstream request URL.","default":true},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the route for grouping and filtering."},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."}},"type":"object","title":"DetailedRoute","description":"Custom route response model with associated services."},"DetailedService":{"properties":{"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates","description":"Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted)."},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/ServiceClientCertificate"},{"type":"null"}]},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":60000},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404).","default":true},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name."},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"The path to be used in requests to the upstream server."},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","description":"The upstream server port.","default":80},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","description":"The protocol used to communicate with the upstream.","default":"http"},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server.","default":60000},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy.","default":5},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering."},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify","description":"Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected."},"tls_verify_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected.'"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses."},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server.","default":60000},"routes":{"anyOf":[{"items":{"$ref":"#/components/schemas/Route"},"type":"array"},{"type":"null"}],"title":"Routes"}},"type":"object","title":"DetailedService","description":"Custom route response model with associated services."},"Disconnect":{"properties":{"removed_routes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Removed Routes"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"}},"type":"object","required":["removed_routes"],"title":"Disconnect","description":"Response from disconnecting a project from a datastore."},"DownstreamHealthCheck":{"properties":{"po":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Po"},"results":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Results"},"kong":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Kong"}},"type":"object","required":["po","results","kong"],"title":"DownstreamHealthCheck","description":"Response model for downstream health checks."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthCheck":{"properties":{"status":{"type":"string","title":"Status","default":"OK"}},"type":"object","title":"HealthCheck","description":"Response model to validate and return when performing a health check."},"ImageDataResponse":{"properties":{"pullImages":{"items":{"$ref":"#/components/schemas/PulledImageData"},"type":"array","title":"Pullimages"},"pushImages":{"items":{"$ref":"#/components/schemas/ToPushImageData"},"type":"array","title":"Pushimages"}},"type":"object","required":["pullImages","pushImages"],"title":"ImageDataResponse","description":"Response model for image call."},"KeyAuth":{"properties":{"consumer":{"anyOf":[{"$ref":"#/components/schemas/KeyAuthConsumer"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"The key that will be used to authenticate the consumer. If this field is not specified, it will be auto-generated."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the Key for grouping and filtering."}},"type":"object","title":"KeyAuth","description":"A Key-auth entity represents a key used to authenticate consumers with the key-auth plugin. The key-auth plugin is used to protect API endpoints by requiring a secret key to be sent with the request."},"KeyAuthConsumer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"KeyAuthConsumer","description":"The Consumer to which this Key is associated. A Consumer can have many Key-auth credentials."},"KeycloakConfig":{"properties":{"realm":{"type":"string","title":"Realm"},"url":{"type":"string","title":"Url"},"clientId":{"type":"string","title":"Clientid"}},"type":"object","required":["realm","url","clientId"],"title":"KeycloakConfig","description":"Keycloak configuration."},"LinkDataStoreProject":{"properties":{"route":{"$ref":"#/components/schemas/Route"},"keyauth":{"$ref":"#/components/schemas/KeyAuth"},"acl":{"$ref":"#/components/schemas/ACL"}},"type":"object","required":["route","keyauth","acl"],"title":"LinkDataStoreProject"},"LinkProjectAnalysis":{"properties":{"consumer":{"$ref":"#/components/schemas/Consumer"},"keyauth":{"$ref":"#/components/schemas/KeyAuth"},"acl":{"$ref":"#/components/schemas/ACL"}},"type":"object","required":["consumer","keyauth","acl"],"title":"LinkProjectAnalysis"},"ListAnalysisNodes":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AnalysisNode"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListAnalysisNodes"},"ListProjectNodes":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProjectNode"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListProjectNodes"},"ListRoutes":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/DetailedRoute"},"type":"array"},{"type":"null"}],"title":"Data"},"offset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset","description":"Offset is used to paginate through the API. Provide this value to the next list operation to fetch the next page"}},"type":"object","title":"ListRoutes","description":"Custom route list response model."},"ListServices":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/DetailedService"},"type":"array"},{"type":"null"}],"title":"Data"},"offset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset","description":"Offset is used to paginate through the API. Provide this value to the next list operation to fetch the next page"}},"type":"object","title":"ListServices","description":"Custom route list response model."},"MasterImage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"path":{"type":"string","title":"Path"},"virtual_path":{"type":"string","title":"Virtual Path"},"group_virtual_path":{"type":"string","title":"Group Virtual Path"},"name":{"type":"string","title":"Name"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"command_arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command Arguments"}},"type":"object","required":["id","created_at","updated_at","path","virtual_path","group_virtual_path","name"],"title":"MasterImage","description":"Master image details."},"Node":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Name"},"name":{"type":"string","title":"Name"},"hidden":{"type":"boolean","title":"Hidden"},"type":{"type":"string","title":"Type"},"online":{"type":"boolean","title":"Online"},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"registry_project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Project Id"},"robot_id":{"type":"string","format":"uuid","title":"Robot Id"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","name","hidden","type","online","robot_id","realm_id"],"title":"Node","description":"Node details."},"PartialAnalysisBucketFile":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"root":{"type":"boolean","title":"Root"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"bucket_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bucket Id"},"bucket":{"anyOf":[{"$ref":"#/components/schemas/Bucket"},{"type":"null"}]},"analysis_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Analysis Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"robot_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Robot Id"}},"type":"object","required":["id","created_at","updated_at","root"],"title":"PartialAnalysisBucketFile"},"PartialBucketFilesList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PartialAnalysisBucketFile"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"PartialBucketFilesList"},"Project":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","title":"Name"},"analyses":{"type":"integer","title":"Analyses"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"master_image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Master Image Id"},"master_image":{"anyOf":[{"$ref":"#/components/schemas/MasterImage"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","name","analyses","realm_id","user_id"],"title":"Project","description":"Single project response model."},"ProjectNode":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"approval_status":{"$ref":"#/components/schemas/ApprovalStatus"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"project_realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Realm Id"},"node_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Node Id"},"node_realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Node Realm Id"},"project":{"anyOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"node":{"anyOf":[{"$ref":"#/components/schemas/Node"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","approval_status"],"title":"ProjectNode","description":"Single project proposal."},"PulledImageData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"train_class_id":{"type":"string","title":"Train Class Id"},"repo_tag":{"type":"string","title":"Repo Tag"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"status":{"type":"string","title":"Status","default":"pulled"},"labels":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Labels"}},"type":"object","required":["id","train_class_id","repo_tag","job_id"],"title":"PulledImageData","description":"Pulled image data."},"Registry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Secret"}},"type":"object","required":["id","created_at","updated_at"],"title":"Registry","description":"Details the registry information."},"RegistryProject":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"type":"string","title":"Type"},"public":{"type":"boolean","title":"Public"},"external_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Name"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"webhook_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Name"},"webhook_exists":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Webhook Exists"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Secret"},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"registry":{"anyOf":[{"$ref":"#/components/schemas/Registry"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","type","public"],"title":"RegistryProject"},"ResultsUploadResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ResultsUploadResponse","description":"Response from uploading a file using the results microservice."},"Route":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"destinations":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Destinations","description":"A list of IP destinations of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"headers":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Headers","description":"One or more lists of values indexed by header name that will cause this route to match if present in the request. The `Host` header cannot be used with this hosts should be specified using the `hosts` attribute. When `headers` contains only one value and that value starts with the special prefix `~*`, the value is interpreted as a regular expression."},"hosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hosts","description":"A list of domain names that match this route. Note that the hosts value is case sensitive."},"https_redirect_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Https Redirect Status Code","description":"The status code Kong responds with when all properties of a route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if the field is set to 301, 302, 307 or 308. This config applies only if the route is configured to only accept the `https` protocol.","default":426},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Methods","description":"A list of HTTP methods that match this route."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named \"test\" and \"Test\"."},"path_handling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Handling","description":"Controls how the service path, route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior.","default":"v0"},"paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Paths","description":"A list of paths that match this route."},"preserve_host":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Preserve Host","description":"When matching a route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the services `host`.","default":false},"protocols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Protocols","description":"An array of the protocols this route should allow. See the [route Object](#route-object) section for a list of accepted protocols. When set to only `\"https\"`, HTTP requests are answered with an upgrade error. When set to only `\"http\"`, HTTPS requests are answered with an error."},"regex_priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Regex Priority","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one (lowest `created_at`) is used. Note that the priority for non-regex routes is different (longer non-regex routes are matched before shorter ones).","default":0},"request_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Request Buffering","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding.","default":true},"response_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Buffering","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding.","default":true},"service":{"anyOf":[{"$ref":"#/components/schemas/RouteService"},{"type":"null"}]},"snis":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Snis","description":"A list of SNIs that match this route when using stream routing."},"sources":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Sources","description":"A list of IP sources of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"strip_path":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strip Path","description":"When matching a route via one of the `paths`, strip the matching prefix from the upstream request URL.","default":true},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the route for grouping and filtering."},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."}},"type":"object","title":"Route","description":"Route entities define rules to match client requests. Every request matching a given route will be proxied to its associated service."},"RouteDestinationsInner":{"properties":{"default":{"anyOf":[{},{"type":"null"}],"title":"Default"}},"type":"object","title":"RouteDestinationsInner","description":"RouteDestinationsInner"},"RouteService":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"RouteService","description":"The service this route is associated to. This is where the route proxies traffic to."},"Service":{"properties":{"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates","description":"Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted)."},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/ServiceClientCertificate"},{"type":"null"}]},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":60000},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404).","default":true},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name."},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"The path to be used in requests to the upstream server."},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","description":"The upstream server port.","default":80},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","description":"The protocol used to communicate with the upstream.","default":"http"},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server.","default":60000},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy.","default":5},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering."},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify","description":"Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected."},"tls_verify_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected.'"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses."},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server.","default":60000}},"type":"object","title":"Service","description":"service entities are abstractions of upstream services. The main attribute of a service is its URL which can be set as a single string or by specifying the `protocol`, `host`, `port` and `path` individually."},"ServiceClientCertificate":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"ServiceClientCertificate","description":"Certificate to be used as client certificate while TLS handshaking to the upstream server."},"ServiceRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name. "},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy. Default:`5`. ","default":5},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","default":"http"},"host":{"type":"string","title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive. "},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","default":80},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","default":"/somewhere"},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":6000},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server. Default: `60000`. ","default":6000},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server. Default: `60000`. ","default":6000},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering. "},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/CreateServiceRequestClientCertificate"},{"type":"null"}]},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify"},"tls_verify_depth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to null, then the Nginx default is respected. Default: null. "},"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["host"],"title":"ServiceRequest","description":"Improved version of the CreateServiceRequest with better defaults.","examples":[{"connect_timeout":6000,"enabled":true,"host":"whonnock","name":"myNewDatastore","path":"/upload","port":443,"protocol":"http","read_timeout":6000,"retries":5,"tags":["example"],"write_timeout":6000}]},"ToPushImageData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"train_class_id":{"type":"string","title":"Train Class Id"},"repo_tag":{"type":"string","title":"Repo Tag"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"status":{"type":"string","title":"Status","default":"waiting_to_push"}},"type":"object","required":["id","train_class_id","repo_tag","job_id"],"title":"ToPushImageData","description":"Data for images to be pushed."},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"expires_in":{"type":"integer","title":"Expires In"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"},"refresh_expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refresh Expires In"}},"type":"object","required":["access_token","token_type","expires_in"],"title":"Token","description":"IDP token model."},"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"}},"securitySchemes":{"OAuth2AuthorizationCodeBearer":{"type":"oauth2","flows":{"authorizationCode":{"scopes":{},"authorizationUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/auth","tokenUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/token"}}},"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/token"}}},"JWT":{"type":"http","description":"Pass a valid JWT here for authentication. Can be obtained from /token endpoint.","scheme":"bearer"}}},"tags":[{"name":"Auth","description":"Endpoints for authorization specific tasks."},{"name":"Health","description":"Endpoints for checking the health of this API and the downstream services."},{"name":"Hub","description":"Endpoints for the central Hub service."},{"name":"Kong","description":"Endpoints for the Kong gateway service."},{"name":"PodOrc","description":"Endpoints for the Pod Orchestration service."},{"name":"Results","description":"Endpoints for the Results service."}]} +{"openapi":"3.1.0","info":{"title":"FLAME API","description":"FLAME project API for interacting with various microservices within the node for the UI.","license":{"name":"Apache 2.0","identifier":"Apache-2.0","url":"https://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.1.0"},"paths":{"/token":{"post":{"tags":["Auth"],"summary":"Get a token from the IDP","description":"Get a JWT from the IDP by passing a valid username and password. This token can then be used to authenticate\nyourself with this API.","operationId":"get_token_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_get_token_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/token/inspect":{"post":{"tags":["Auth"],"summary":"Get information about a provided token from the IDP","description":"Return information about the provided token.","operationId":"inspect_token_token_inspect_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_inspect_token_token_inspect_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Inspect Token Token Inspect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/containers":{"get":{"summary":"Fetch Containers","description":"Return information about the provided token.","operationId":"fetch_containers_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Fetch Containers Containers Get"}}}}}}},"/po":{"post":{"tags":["PodOrc"],"summary":"Create Analysis","description":"Create an analysis pod.","operationId":"create_analysis_po_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_analysis_po_post"}}},"required":true},"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"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/po/{analysis_id}/logs":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Logs","description":"Get the logs for a specific analysis run.","operationId":"get_analysis_logs_po__analysis_id__logs_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/status":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Status","description":"Get the status for a specific analysis run.","operationId":"get_analysis_status_po__analysis_id__status_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/pods":{"get":{"tags":["PodOrc"],"summary":"Get Analysis Pods","description":"Get the pods for a specific analysis run.","operationId":"get_analysis_pods_po__analysis_id__pods_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/stop":{"put":{"tags":["PodOrc"],"summary":"Stop Analysis","description":"Stop a specific analysis run.","operationId":"stop_analysis_po__analysis_id__stop_put","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/po/{analysis_id}/delete":{"delete":{"tags":["PodOrc"],"summary":"Delete Analysis","description":"Delete a specific analysis run.","operationId":"delete_analysis_po__analysis_id__delete_delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of the analysis.","title":"Analysis Id"},"description":"UUID of the analysis."}],"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"}}}}}}},"/local/{object_id}":{"get":{"tags":["Results"],"summary":"Retrieve Intermediate Result From Local","description":"Get a local result as file from local storage.","operationId":"retrieve_intermediate_result_from_local_local__object_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}}],"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"}}}}}}},"/local":{"put":{"tags":["Results"],"summary":"Submit Intermediate Result To Local","operationId":"submit_intermediate_result_to_local_local_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_intermediate_result_to_local_local_put"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsUploadResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/intermediate/{object_id}":{"get":{"tags":["Results"],"summary":"Retrieve Intermediate Result From Hub","description":"Get an intermediate result as file from the FLAME Hub.","operationId":"retrieve_intermediate_result_from_hub_intermediate__object_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Object Id"}}],"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"}}}}}}},"/intermediate":{"put":{"tags":["Results"],"summary":"Submit Intermediate Result To Hub","description":"Upload a file as an intermediate result to the FLAME Hub. Returns a 202 on success.\n\nThis endpoint returns immediately and submits the file in the background.","operationId":"submit_intermediate_result_to_hub_intermediate_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_intermediate_result_to_hub_intermediate_put"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsUploadResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/final":{"put":{"tags":["Results"],"summary":"Submit Final Result To Hub","description":"Upload final results to FLAME Hub","operationId":"submit_final_result_to_hub_final_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_final_result_to_hub_final_put"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/metadata/keycloakConfig":{"get":{"tags":["Metadata"],"summary":"Get Keycloak Config","description":"Return keycloak metadata for the frontend.","operationId":"get_keycloak_config_metadata_keycloakConfig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeycloakConfig"}}}},"404":{"description":"Not found"}}}},"/metadata/version":{"get":{"tags":["Metadata"],"summary":"Get Node Version","description":"Return version of the node software/API.","operationId":"get_node_version_metadata_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/vault/status":{"get":{"tags":["Metadata"],"summary":"Get Vault Status","description":"Spoof vault status.","operationId":"get_vault_status_vault_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/hub/images":{"get":{"tags":["Metadata"],"summary":"Get Images","description":"Return list of images for the frontend.","operationId":"get_images_hub_images_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageDataResponse"}}}},"404":{"description":"Not found"}}}},"/projects":{"get":{"tags":["Hub"],"summary":"List All Projects","description":"List all projects.","operationId":"list_all_projects_projects_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^master_image$"},{"type":"null"}],"description":"Whether to include additional data. Can only be 'master_image' or null","title":"Include"},"description":"Whether to include additional data. Can only be 'master_image' or null"},{"name":"filter_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by object UUID.","title":"Filter Id"},"description":"Filter by object UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_user_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","description":"Filter by user UUID.","title":"Filter User Id"},"description":"Filter by user UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllProjects"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/projects/{project_id}":{"get":{"tags":["Hub"],"summary":"List Specific Project","description":"List project for a given UUID.","operationId":"list_specific_project_projects__project_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Project UUID.","title":"Project Id"},"description":"Project UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project-nodes":{"get":{"tags":["Hub"],"summary":"List Project Proposals","description":"List project proposals.","operationId":"list_project_proposals_project_nodes_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(project|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'node'/'project'","default":"project,node","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'node'/'project'"},{"name":"filter_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by ID of returned object.","title":"Filter Id"},"description":"Filter by ID of returned object."},{"name":"filter_project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project UUID.","title":"Filter Project Id"},"description":"Filter by project UUID."},{"name":"filter_project_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project realm UUID.","title":"Filter Project Realm Id"},"description":"Filter by project realm UUID."},{"name":"filter_node_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node UUID.","title":"Filter Node Id"},"description":"Filter by node UUID."},{"name":"filter_node_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node realm UUID.","title":"Filter Node Realm Id"},"description":"Filter by node realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectNodes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/project-nodes/{proposal_id}":{"post":{"tags":["Hub"],"summary":"Accept Reject Project Proposal","description":"Set the approval status of a project proposal.","operationId":"accept_reject_project_proposal_project_nodes__proposal_id__post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Proposal object UUID.","title":"Proposal Id"},"description":"Proposal object UUID."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_accept_reject_project_proposal_project_nodes__proposal_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-nodes":{"get":{"tags":["Hub"],"summary":"List Analyses Of Nodes","description":"List analyses for a node.","operationId":"list_analyses_of_nodes_analysis_nodes_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"},{"name":"filter_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by ID of returned object.","title":"Filter Id"},"description":"Filter by ID of returned object."},{"name":"filter_project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project UUID.","title":"Filter Project Id"},"description":"Filter by project UUID."},{"name":"filter_project_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by project realm UUID.","title":"Filter Project Realm Id"},"description":"Filter by project realm UUID."},{"name":"filter_node_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node UUID.","title":"Filter Node Id"},"description":"Filter by node UUID."},{"name":"filter_node_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by node realm UUID.","title":"Filter Node Realm Id"},"description":"Filter by node realm UUID."},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_analysis_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis realm UUID.","title":"Filter Analysis Realm Id"},"description":"Filter by analysis realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAnalysisNodes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-nodes/{analysis_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis","description":"List project for a given UUID.","operationId":"list_specific_analysis_analysis_nodes__analysis_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Analysis UUID.","title":"Analysis Id"},"description":"Analysis UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|node))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Hub"],"summary":"Accept Reject Analysis Node","description":"Set the approval status of a analysis.","operationId":"accept_reject_analysis_node_analysis_nodes__analysis_id__post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Analysis object UUID (not analysis_id).","title":"Analysis Id"},"description":"Analysis object UUID (not analysis_id)."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisNode"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyses":{"get":{"tags":["Hub"],"summary":"List All Analyses","description":"List project for a given UUID.","operationId":"list_all_analyses_analyses_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(project|master_image))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'","default":"project","title":"Include"},"description":"Whether to include additional data for the given parameter. Can only be 'node'/'analysis'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllAnalyses"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/registry-projects/{registry_project_id}":{"get":{"tags":["Hub"],"summary":"Get Registry Metadata For Project","description":"List registry data for a project.","operationId":"get_registry_metadata_for_project_registry_projects__registry_project_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^registry$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'registry'","default":"registry","title":"Include"},"description":"Whether to include additional registry data. Can only be 'registry'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryProject"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis/image/{analysis_id}":{"get":{"tags":["Hub"],"summary":"Get Analysis Image Url","description":"Build an analysis image URL using its metadata from the Hub.","operationId":"get_analysis_image_url_analysis_image__analysis_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"UUID of analysis.","title":"Analysis Id"},"description":"UUID of analysis."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisImageUrl"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-buckets":{"get":{"tags":["Hub"],"summary":"List All Analysis Buckets","description":"List analysis buckets.","operationId":"list_all_analysis_buckets_analysis_buckets_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^analysis$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional registry data. Can only be 'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BucketList"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-buckets/{bucket_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis Buckets","description":"List analysis buckets.","operationId":"list_specific_analysis_buckets_analysis_buckets__bucket_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"bucket_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Bucket UUID.","title":"Bucket Id"},"description":"Bucket UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^analysis$"},{"type":"null"}],"description":"Whether to include additional registry data. Can only be 'analysis'","default":"analysis","title":"Include"},"description":"Whether to include additional registry data. Can only be 'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Bucket"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-bucket-files":{"get":{"tags":["Hub"],"summary":"List All Analysis Bucket Files","description":"List partial analysis bucket files.","operationId":"list_all_analysis_bucket_files_analysis_bucket_files_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|bucket))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'","default":"bucket","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_bucket_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by bucket UUID.","title":"Filter Bucket Id"},"description":"Filter by bucket UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialBucketFilesList"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analysis-bucket-files/{bucket_file_id}":{"get":{"tags":["Hub"],"summary":"List Specific Analysis Bucket File","description":"List specific partial analysis bucket file.","operationId":"list_specific_analysis_bucket_file_analysis_bucket_files__bucket_file_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"bucket_file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Bucket file UUID.","title":"Bucket File Id"},"description":"Bucket file UUID."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^((^|[,])(analysis|bucket))+$"},{"type":"null"}],"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'","default":"bucket","title":"Include"},"description":"Whether to include additional data for the given parameter. Choices: 'bucket'/'analysis'"},{"name":"filter_analysis_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by analysis UUID.","title":"Filter Analysis Id"},"description":"Filter by analysis UUID."},{"name":"filter_realm_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by realm UUID.","title":"Filter Realm Id"},"description":"Filter by realm UUID."},{"name":"filter_bucket_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by bucket UUID.","title":"Filter Bucket Id"},"description":"Filter by bucket UUID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartialAnalysisBucketFile"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/datastore":{"get":{"tags":["Kong"],"summary":"List Data Stores","description":"List all available data stores (referred to as services by kong).","operationId":"list_data_stores_kong_datastore_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to include detailed information on projects","default":false,"title":"Detailed"},"description":"Whether to include detailed information on projects"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListServices"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Kong"],"summary":"Create Data Store","description":"Create a datastore (referred to as services by kong) by providing necessary metadata.","operationId":"create_data_store_kong_datastore_post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ServiceRequest"}],"title":"Data store metadata.","description":"Required information for creating a new data store."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Service"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/datastore/{data_store_name}":{"delete":{"tags":["Kong"],"summary":"Delete Data Store","description":"Delete the listed data store (referred to as services by kong).","operationId":"delete_data_store_kong_datastore__data_store_name__delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"data_store_name","in":"path","required":true,"schema":{"type":"string","description":"Unique name of the data store.","title":"Data Store Name"},"description":"Unique name of the data store."}],"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"}}}}}}},"/kong/project":{"get":{"tags":["Kong"],"summary":"List Projects","description":"List all projects (referred to as routes by kong) available, can be filtered by project_id.\n\nSet \"detailed\" to True to include detailed information on the linked data stores.","operationId":"list_projects_kong_project_get","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"UUID of project.","title":"Project Id"},"description":"UUID of project."},{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to include detailed information on data stores","default":false,"title":"Detailed"},"description":"Whether to include detailed information on data stores"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRoutes"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Kong"],"summary":"Create And Connect Project To Datastore","description":"Connect a project to a data store (referred to as a route by kong).","operationId":"create_and_connect_project_to_datastore_kong_project_post","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_and_connect_project_to_datastore_kong_project_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkDataStoreProject"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/project/disconnect/{project_id}":{"put":{"tags":["Kong"],"summary":"Disconnect Project","description":"Disconnect a project from all connected data stores (i.e. delete the \"route\").","operationId":"disconnect_project_kong_project_disconnect__project_id__put","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"UUID of project to be disconnected","title":"Project Id"},"description":"UUID of project to be disconnected"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Disconnect"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/kong/analysis":{"post":{"tags":["Kong"],"summary":"Create And Connect Analysis To Project","description":"Create a new analysis and link it to a project.","operationId":"create_and_connect_analysis_to_project_kong_analysis_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_and_connect_analysis_to_project_kong_analysis_post"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkProjectAnalysis"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}]}},"/kong/analysis/{analysis_id}":{"delete":{"tags":["Kong"],"summary":"Delete Analysis","description":"Delete the listed analysis.","operationId":"delete_analysis_kong_analysis__analysis_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]},{"OAuth2PasswordBearer":[]},{"JWT":[]}],"parameters":[{"name":"analysis_id","in":"path","required":true,"schema":{"type":"string","description":"UUID or unique name of the analysis.","title":"Analysis Id"},"description":"UUID or unique name of the analysis."}],"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"}}}}}}},"/healthz":{"get":{"tags":["Health"],"summary":"Perform a Health Check","description":"## Perform a Health Check\nEndpoint to perform a healthcheck on. This endpoint can primarily be used Docker\nto ensure a robust container orchestration and management is in place. Other\nservices which rely on proper functioning of the API service will not deploy if this\nendpoint returns any other HTTP status code except 200 (OK).\nReturns:\n HealthCheck: Returns a JSON response with the health status","operationId":"get_health_healthz_get","responses":{"200":{"description":"Return HTTP Status Code 200 (OK)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthCheck"}}}}}}},"/health/services":{"get":{"tags":["Health"],"summary":"Perform a Health Check on the downstream microservices","description":"Return the health of the downstream microservices.","operationId":"get_health_downstream_services_health_services_get","responses":{"200":{"description":"Return HTTP Status code for downstream services","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownstreamHealthCheck"}}}}}}}},"components":{"schemas":{"ACL":{"properties":{"consumer":{"anyOf":[{"$ref":"#/components/schemas/ACLConsumer"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group","description":"The group that this ACL represents."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the ACL for grouping and filtering."}},"type":"object","title":"ACL","description":"ACL entities are used to control access to a resource. An ACL can be applied to a Consumer"},"ACLConsumer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"ACLConsumer","description":"The Consumer to which this ACL is associated. A Consumer can have many ACLs."},"AllAnalyses":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Analysis"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AllAnalyses","description":"List of all projects."},"AllProjects":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Project"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AllProjects","description":"List of all projects."},"Analysis":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"nodes":{"type":"integer","title":"Nodes"},"configuration_status":{"anyOf":[{"$ref":"#/components/schemas/ConfigurationStatus"},{"type":"null"}]},"build_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisBuildStatus"},{"type":"null"}]},"run_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisRunStatus"},{"type":"null"}]},"registry":{"anyOf":[{"$ref":"#/components/schemas/Registry"},{"type":"null"}]},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project":{"anyOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"master_image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Master Image Id"},"master_image":{"anyOf":[{"$ref":"#/components/schemas/MasterImage"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","nodes","realm_id","user_id","project_id"],"title":"Analysis","description":"Model representing a single analysis."},"AnalysisBuildStatus":{"type":"string","enum":["starting","started","stopping","stopped","finished","failed"],"title":"AnalysisBuildStatus","description":"Possible values for analysis build status."},"AnalysisImageUrl":{"properties":{"image_url":{"type":"string","title":"Image Url"}},"type":"object","required":["image_url"],"title":"AnalysisImageUrl"},"AnalysisNode":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"approval_status":{"$ref":"#/components/schemas/ApprovalStatus"},"run_status":{"anyOf":[{"$ref":"#/components/schemas/AnalysisRunStatus"},{"type":"null"}]},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"index":{"type":"integer","title":"Index"},"artifact_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Tag"},"artifact_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Digest"},"analysis_id":{"type":"string","format":"uuid","title":"Analysis Id"},"analysis_realm_id":{"type":"string","format":"uuid","title":"Analysis Realm Id"},"node_id":{"type":"string","format":"uuid","title":"Node Id"},"node_realm_id":{"type":"string","format":"uuid","title":"Node Realm Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"node":{"anyOf":[{"$ref":"#/components/schemas/Node"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","approval_status","index","analysis_id","analysis_realm_id","node_id","node_realm_id"],"title":"AnalysisNode","description":"Node analysis response model."},"AnalysisRunStatus":{"type":"string","enum":["running","starting","started","stopping","stopped","finished","failed"],"title":"AnalysisRunStatus","description":"Possible values for analysis run status."},"ApprovalStatus":{"type":"string","enum":["approved","rejected"],"title":"ApprovalStatus","description":"Status of project possibilities."},"Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post":{"properties":{"approval_status":{"allOf":[{"$ref":"#/components/schemas/ApprovalStatus"}],"description":"Set the approval status of project for the node. Either 'rejected' or 'approved'"}},"type":"object","required":["approval_status"],"title":"Body_accept_reject_analysis_node_analysis_nodes__analysis_id__post"},"Body_accept_reject_project_proposal_project_nodes__proposal_id__post":{"properties":{"approval_status":{"allOf":[{"$ref":"#/components/schemas/ApprovalStatus"}],"description":"Set the approval status of project for the node. Either 'rejected' or 'approved'"}},"type":"object","required":["approval_status"],"title":"Body_accept_reject_project_proposal_project_nodes__proposal_id__post"},"Body_create_analysis_po_post":{"properties":{"analysis_id":{"type":"string","format":"uuid","title":"Analysis Id","description":"UUID of the analysis."},"project_id":{"type":"string","format":"uuid","title":"Project Id","description":"UUID of the analysis."}},"type":"object","required":["analysis_id","project_id"],"title":"Body_create_analysis_po_post"},"Body_create_and_connect_analysis_to_project_kong_analysis_post":{"properties":{"project_id":{"type":"string","title":"Project Id","description":"UUID or name of the project"},"analysis_id":{"type":"string","title":"Analysis Id","description":"UUID or name of the analysis"}},"type":"object","required":["project_id","analysis_id"],"title":"Body_create_and_connect_analysis_to_project_kong_analysis_post"},"Body_create_and_connect_project_to_datastore_kong_project_post":{"properties":{"data_store_id":{"type":"string","format":"uuid","title":"Data Store Id","description":"UUID of the data store or 'gateway'"},"project_id":{"type":"string","format":"uuid","title":"Project Id","description":"UUID of the project"},"project_name":{"type":"string","title":"Project Name","description":"Name of the project"},"methods":{"items":{"type":"string","pattern":"(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD|CONNECT|TRACE|CUSTOM)"},"type":"array","title":"Methods","description":"List of acceptable HTTP methods","default":["GET","POST","PUT","DELETE"]},"protocols":{"items":{"type":"string","pattern":"(http|grpc|grpcs|tls|tcp)"},"type":"array","title":"Protocols","description":"List of acceptable transfer protocols. A combo of 'http', 'grpc', 'grpcs', 'tls', 'tcp'","default":["http"]},"ds_type":{"type":"string","title":"Ds Type","description":"Data store type. Either 's3' or 'fhir'","default":"fhir"}},"type":"object","required":["data_store_id","project_id","project_name"],"title":"Body_create_and_connect_project_to_datastore_kong_project_post"},"Body_get_token_token_post":{"properties":{"username":{"type":"string","title":"Username","description":"Keycloak username"},"password":{"type":"string","title":"Password","description":"Keycloak password"}},"type":"object","required":["username","password"],"title":"Body_get_token_token_post"},"Body_inspect_token_token_inspect_post":{"properties":{"token":{"type":"string","title":"Token","description":"JSON web token"}},"type":"object","required":["token"],"title":"Body_inspect_token_token_inspect_post"},"Body_submit_final_result_to_hub_final_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_final_result_to_hub_final_put"},"Body_submit_intermediate_result_to_hub_intermediate_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_intermediate_result_to_hub_intermediate_put"},"Body_submit_intermediate_result_to_local_local_put":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_submit_intermediate_result_to_local_local_put"},"Bucket":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"type":{"$ref":"#/components/schemas/BucketType"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"analysis_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Analysis Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","type"],"title":"Bucket","description":"Bucket data."},"BucketList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Bucket"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"BucketList"},"BucketType":{"type":"string","enum":["CODE","RESULT","TEMP"],"title":"BucketType","description":"Bucket types."},"ConfigurationStatus":{"type":"string","enum":["base","security_configured","resource_configured","hash_generated","hash_signed","finished"],"title":"ConfigurationStatus","description":"\"Possible values for configuration status."},"Consumer":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"custom_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Id","description":"Field for storing an existing unique ID for the Consumer - useful for mapping Kong with users in your existing database. You must send either this field or `username` with the request."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the Consumer for grouping and filtering."},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","description":"The unique username of the Consumer. You must send either this field or `custom_id` with the request."}},"type":"object","title":"Consumer","description":"The Consumer object represents a consumer - or a user - of a service. You can either rely on Kong as the primary datastore, or you can map the consumer list with your database to keep consistency between Kong and your existing primary datastore."},"CreateServiceRequestClientCertificate":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"CreateServiceRequestClientCertificate","description":"Certificate to be used as client certificate while TLS handshaking to the upstream server. With form-encoded, the notation is `client_certificate.id=`. With JSON, use `\"client_certificate\":{\"id\":\"\"}`."},"DetailedRoute":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"destinations":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Destinations","description":"A list of IP destinations of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"headers":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Headers","description":"One or more lists of values indexed by header name that will cause this route to match if present in the request. The `Host` header cannot be used with this hosts should be specified using the `hosts` attribute. When `headers` contains only one value and that value starts with the special prefix `~*`, the value is interpreted as a regular expression."},"hosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hosts","description":"A list of domain names that match this route. Note that the hosts value is case sensitive."},"https_redirect_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Https Redirect Status Code","description":"The status code Kong responds with when all properties of a route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if the field is set to 301, 302, 307 or 308. This config applies only if the route is configured to only accept the `https` protocol.","default":426},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Methods","description":"A list of HTTP methods that match this route."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named \"test\" and \"Test\"."},"path_handling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Handling","description":"Controls how the service path, route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior.","default":"v0"},"paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Paths","description":"A list of paths that match this route."},"preserve_host":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Preserve Host","description":"When matching a route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the services `host`.","default":false},"protocols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Protocols","description":"An array of the protocols this route should allow. See the [route Object](#route-object) section for a list of accepted protocols. When set to only `\"https\"`, HTTP requests are answered with an upgrade error. When set to only `\"http\"`, HTTPS requests are answered with an error."},"regex_priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Regex Priority","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one (lowest `created_at`) is used. Note that the priority for non-regex routes is different (longer non-regex routes are matched before shorter ones).","default":0},"request_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Request Buffering","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding.","default":true},"response_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Buffering","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding.","default":true},"service":{"anyOf":[{"$ref":"#/components/schemas/Service"},{"$ref":"#/components/schemas/RouteService"},{"type":"null"}],"title":"Service"},"snis":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Snis","description":"A list of SNIs that match this route when using stream routing."},"sources":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Sources","description":"A list of IP sources of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"strip_path":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strip Path","description":"When matching a route via one of the `paths`, strip the matching prefix from the upstream request URL.","default":true},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the route for grouping and filtering."},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."}},"type":"object","title":"DetailedRoute","description":"Custom route response model with associated services."},"DetailedService":{"properties":{"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates","description":"Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted)."},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/ServiceClientCertificate"},{"type":"null"}]},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":60000},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404).","default":true},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name."},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"The path to be used in requests to the upstream server."},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","description":"The upstream server port.","default":80},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","description":"The protocol used to communicate with the upstream.","default":"http"},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server.","default":60000},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy.","default":5},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering."},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify","description":"Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected."},"tls_verify_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected.'"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses."},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server.","default":60000},"routes":{"anyOf":[{"items":{"$ref":"#/components/schemas/Route"},"type":"array"},{"type":"null"}],"title":"Routes"}},"type":"object","title":"DetailedService","description":"Custom route response model with associated services."},"Disconnect":{"properties":{"removed_routes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Removed Routes"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"}},"type":"object","required":["removed_routes"],"title":"Disconnect","description":"Response from disconnecting a project from a datastore."},"DownstreamHealthCheck":{"properties":{"po":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Po"},"results":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Results"},"kong":{"anyOf":[{"type":"object"},{"type":"string"}],"title":"Kong"}},"type":"object","required":["po","results","kong"],"title":"DownstreamHealthCheck","description":"Response model for downstream health checks."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthCheck":{"properties":{"status":{"type":"string","title":"Status","default":"OK"}},"type":"object","title":"HealthCheck","description":"Response model to validate and return when performing a health check."},"ImageDataResponse":{"properties":{"pullImages":{"items":{"$ref":"#/components/schemas/PulledImageData"},"type":"array","title":"Pullimages"},"pushImages":{"items":{"$ref":"#/components/schemas/ToPushImageData"},"type":"array","title":"Pushimages"}},"type":"object","required":["pullImages","pushImages"],"title":"ImageDataResponse","description":"Response model for image call."},"KeyAuth":{"properties":{"consumer":{"anyOf":[{"$ref":"#/components/schemas/KeyAuthConsumer"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"The key that will be used to authenticate the consumer. If this field is not specified, it will be auto-generated."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the Key for grouping and filtering."}},"type":"object","title":"KeyAuth","description":"A Key-auth entity represents a key used to authenticate consumers with the key-auth plugin. The key-auth plugin is used to protect API endpoints by requiring a secret key to be sent with the request."},"KeyAuthConsumer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"KeyAuthConsumer","description":"The Consumer to which this Key is associated. A Consumer can have many Key-auth credentials."},"KeycloakConfig":{"properties":{"realm":{"type":"string","title":"Realm"},"url":{"type":"string","title":"Url"},"clientId":{"type":"string","title":"Clientid"}},"type":"object","required":["realm","url","clientId"],"title":"KeycloakConfig","description":"Keycloak configuration."},"LinkDataStoreProject":{"properties":{"route":{"$ref":"#/components/schemas/Route"},"keyauth":{"$ref":"#/components/schemas/KeyAuth"},"acl":{"$ref":"#/components/schemas/ACL"}},"type":"object","required":["route","keyauth","acl"],"title":"LinkDataStoreProject"},"LinkProjectAnalysis":{"properties":{"consumer":{"$ref":"#/components/schemas/Consumer"},"keyauth":{"$ref":"#/components/schemas/KeyAuth"},"acl":{"$ref":"#/components/schemas/ACL"}},"type":"object","required":["consumer","keyauth","acl"],"title":"LinkProjectAnalysis"},"ListAnalysisNodes":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AnalysisNode"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListAnalysisNodes"},"ListProjectNodes":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProjectNode"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListProjectNodes"},"ListRoutes":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/DetailedRoute"},"type":"array"},{"type":"null"}],"title":"Data"},"offset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset","description":"Offset is used to paginate through the API. Provide this value to the next list operation to fetch the next page"}},"type":"object","title":"ListRoutes","description":"Custom route list response model."},"ListServices":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/DetailedService"},"type":"array"},{"type":"null"}],"title":"Data"},"offset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset","description":"Offset is used to paginate through the API. Provide this value to the next list operation to fetch the next page"}},"type":"object","title":"ListServices","description":"Custom route list response model."},"MasterImage":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"path":{"type":"string","title":"Path"},"virtual_path":{"type":"string","title":"Virtual Path"},"group_virtual_path":{"type":"string","title":"Group Virtual Path"},"name":{"type":"string","title":"Name"},"command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"command_arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Command Arguments"}},"type":"object","required":["id","created_at","updated_at","path","virtual_path","group_virtual_path","name"],"title":"MasterImage","description":"Master image details."},"Node":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"external_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Name"},"name":{"type":"string","title":"Name"},"hidden":{"type":"boolean","title":"Hidden"},"type":{"type":"string","title":"Type"},"online":{"type":"boolean","title":"Online"},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"registry_project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Project Id"},"robot_id":{"type":"string","format":"uuid","title":"Robot Id"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","name","hidden","type","online","robot_id","realm_id"],"title":"Node","description":"Node details."},"PartialAnalysisBucketFile":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"root":{"type":"boolean","title":"Root"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"bucket_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bucket Id"},"bucket":{"anyOf":[{"$ref":"#/components/schemas/Bucket"},{"type":"null"}]},"analysis_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Analysis Id"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/Analysis"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"robot_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Robot Id"}},"type":"object","required":["id","created_at","updated_at","root"],"title":"PartialAnalysisBucketFile"},"PartialBucketFilesList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PartialAnalysisBucketFile"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"PartialBucketFilesList"},"Project":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"type":"string","title":"Name"},"analyses":{"type":"integer","title":"Analyses"},"realm_id":{"type":"string","format":"uuid","title":"Realm Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"master_image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Master Image Id"},"master_image":{"anyOf":[{"$ref":"#/components/schemas/MasterImage"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","name","analyses","realm_id","user_id"],"title":"Project","description":"Single project response model."},"ProjectNode":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"approval_status":{"$ref":"#/components/schemas/ApprovalStatus"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"project_realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Realm Id"},"node_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Node Id"},"node_realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Node Realm Id"},"project":{"anyOf":[{"$ref":"#/components/schemas/Project"},{"type":"null"}]},"node":{"anyOf":[{"$ref":"#/components/schemas/Node"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","approval_status"],"title":"ProjectNode","description":"Single project proposal."},"PulledImageData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"train_class_id":{"type":"string","title":"Train Class Id"},"repo_tag":{"type":"string","title":"Repo Tag"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"status":{"type":"string","title":"Status","default":"pulled"},"labels":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Labels"}},"type":"object","required":["id","train_class_id","repo_tag","job_id"],"title":"PulledImageData","description":"Pulled image data."},"Registry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Secret"}},"type":"object","required":["id","created_at","updated_at"],"title":"Registry","description":"Details the registry information."},"RegistryProject":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"type":"string","title":"Type"},"public":{"type":"boolean","title":"Public"},"external_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Name"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"webhook_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Name"},"webhook_exists":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Webhook Exists"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Secret"},"registry_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Registry Id"},"registry":{"anyOf":[{"$ref":"#/components/schemas/Registry"},{"type":"null"}]},"realm_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Realm Id"}},"type":"object","required":["id","created_at","updated_at","type","public"],"title":"RegistryProject"},"ResultsUploadResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ResultsUploadResponse","description":"Response from uploading a file using the results microservice."},"Route":{"properties":{"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"destinations":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Destinations","description":"A list of IP destinations of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"headers":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Headers","description":"One or more lists of values indexed by header name that will cause this route to match if present in the request. The `Host` header cannot be used with this hosts should be specified using the `hosts` attribute. When `headers` contains only one value and that value starts with the special prefix `~*`, the value is interpreted as a regular expression."},"hosts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hosts","description":"A list of domain names that match this route. Note that the hosts value is case sensitive."},"https_redirect_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Https Redirect Status Code","description":"The status code Kong responds with when all properties of a route match except the protocol i.e. if the protocol of the request is `HTTP` instead of `HTTPS`. `Location` header is injected by Kong if the field is set to 301, 302, 307 or 308. This config applies only if the route is configured to only accept the `https` protocol.","default":426},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Methods","description":"A list of HTTP methods that match this route."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named \"test\" and \"Test\"."},"path_handling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path Handling","description":"Controls how the service path, route path and requested path are combined when sending a request to the upstream. See above for a detailed description of each behavior.","default":"v0"},"paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Paths","description":"A list of paths that match this route."},"preserve_host":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Preserve Host","description":"When matching a route via one of the `hosts` domain names, use the request `Host` header in the upstream request headers. If set to `false`, the upstream `Host` header will be that of the services `host`.","default":false},"protocols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Protocols","description":"An array of the protocols this route should allow. See the [route Object](#route-object) section for a list of accepted protocols. When set to only `\"https\"`, HTTP requests are answered with an upgrade error. When set to only `\"http\"`, HTTPS requests are answered with an error."},"regex_priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Regex Priority","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously. When two routes match the path and have the same `regex_priority`, the older one (lowest `created_at`) is used. Note that the priority for non-regex routes is different (longer non-regex routes are matched before shorter ones).","default":0},"request_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Request Buffering","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding.","default":true},"response_buffering":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Response Buffering","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding.","default":true},"service":{"anyOf":[{"$ref":"#/components/schemas/RouteService"},{"type":"null"}]},"snis":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Snis","description":"A list of SNIs that match this route when using stream routing."},"sources":{"anyOf":[{"items":{"$ref":"#/components/schemas/RouteDestinationsInner"},"type":"array"},{"type":"null"}],"title":"Sources","description":"A list of IP sources of incoming connections that match this route when using stream routing. Each entry is an object with fields \"ip\" (optionally in CIDR range notation) and/or \"port\"."},"strip_path":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strip Path","description":"When matching a route via one of the `paths`, strip the matching prefix from the upstream request URL.","default":true},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the route for grouping and filtering."},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."}},"type":"object","title":"Route","description":"Route entities define rules to match client requests. Every request matching a given route will be proxied to its associated service."},"RouteDestinationsInner":{"properties":{"default":{"anyOf":[{},{"type":"null"}],"title":"Default"}},"type":"object","title":"RouteDestinationsInner","description":"RouteDestinationsInner"},"RouteService":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"RouteService","description":"The service this route is associated to. This is where the route proxies traffic to."},"Service":{"properties":{"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates","description":"Array of `CA Certificate` object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to `null` when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted)."},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/ServiceClientCertificate"},{"type":"null"}]},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":60000},"created_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created At","description":"Unix epoch when the resource was created."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Whether the service is active. If set to `false`, the proxy behavior will be as if any routes attached to it do not exist (404).","default":true},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name."},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"The path to be used in requests to the upstream server."},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","description":"The upstream server port.","default":80},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","description":"The protocol used to communicate with the upstream.","default":"http"},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server.","default":60000},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy.","default":5},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering."},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify","description":"Whether to enable verification of upstream server TLS certificate. If set to `null`, then the Nginx default is respected."},"tls_verify_depth":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to `null`, then the Nginx default is respected.'"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At","description":"Unix epoch when the resource was last updated."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Helper field to set `protocol`, `host`, `port` and `path` using a URL. This field is write-only and is not returned in responses."},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server.","default":60000}},"type":"object","title":"Service","description":"service entities are abstractions of upstream services. The main attribute of a service is its URL which can be set as a single string or by specifying the `protocol`, `host`, `port` and `path` individually."},"ServiceClientCertificate":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}},"type":"object","title":"ServiceClientCertificate","description":"Certificate to be used as client certificate while TLS handshaking to the upstream server."},"ServiceRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The service name. "},"retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retries","description":"The number of retries to execute upon failure to proxy. Default:`5`. ","default":5},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protocol","default":"http"},"host":{"type":"string","title":"Host","description":"The host of the upstream server. Note that the host value is case sensitive. "},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port","default":80},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","default":"/somewhere"},"connect_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connect Timeout","description":"The timeout in milliseconds for establishing a connection to the upstream server.","default":6000},"write_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Write Timeout","description":"The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server. Default: `60000`. ","default":6000},"read_timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Timeout","description":"The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server. Default: `60000`. ","default":6000},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"An optional set of strings associated with the service for grouping and filtering. "},"client_certificate":{"anyOf":[{"$ref":"#/components/schemas/CreateServiceRequestClientCertificate"},{"type":"null"}]},"tls_verify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tls Verify"},"tls_verify_depth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tls Verify Depth","description":"Maximum depth of chain while verifying Upstream server's TLS certificate. If set to null, then the Nginx default is respected. Default: null. "},"ca_certificates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ca Certificates"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["host"],"title":"ServiceRequest","description":"Improved version of the CreateServiceRequest with better defaults.","examples":[{"connect_timeout":6000,"enabled":true,"host":"whonnock","name":"myNewDatastore","path":"/upload","port":443,"protocol":"http","read_timeout":6000,"retries":5,"tags":["example"],"write_timeout":6000}]},"ToPushImageData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"train_class_id":{"type":"string","title":"Train Class Id"},"repo_tag":{"type":"string","title":"Repo Tag"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"status":{"type":"string","title":"Status","default":"waiting_to_push"}},"type":"object","required":["id","train_class_id","repo_tag","job_id"],"title":"ToPushImageData","description":"Data for images to be pushed."},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"expires_in":{"type":"integer","title":"Expires In"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"},"refresh_expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refresh Expires In"}},"type":"object","required":["access_token","token_type","expires_in"],"title":"Token","description":"IDP token model."},"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"}},"securitySchemes":{"OAuth2AuthorizationCodeBearer":{"type":"oauth2","flows":{"authorizationCode":{"scopes":{},"authorizationUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/auth","tokenUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/token"}}},"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"http://localhost:8080/realms/flame/protocol/openid-connect/token"}}},"JWT":{"type":"http","description":"Pass a valid JWT here for authentication. Can be obtained from /token endpoint.","scheme":"bearer"}}},"tags":[{"name":"Auth","description":"Endpoints for authorization specific tasks."},{"name":"Health","description":"Endpoints for checking the health of this API and the downstream services."},{"name":"Hub","description":"Endpoints for the central Hub service."},{"name":"Kong","description":"Endpoints for the Kong gateway service."},{"name":"PodOrc","description":"Endpoints for the Pod Orchestration service."},{"name":"Results","description":"Endpoints for the Results service."}]}